---
title: "Compiler"
description: "generate symbol libraries to enable structured event processing at runtime"
source: "https://github.com/log-10x/modules/tree/main/pipelines/compiler/app.yaml"
icon: "material/play-circle-outline"
hidden: "true"

---
Generate a [symbol library](https://doc.log10x.com/compile/link/#symbol-library) from source code and binary inputs to enable structured event processing at runtime.

Commands on this page name `log10x/compiler-10x:1.1.69`. Substitute the version you want, and see [Image tags](https://doc.log10x.com/install/docker/#image-tags) for what `:latest` does and does not promise.

## :material-clipboard-play-outline: Setup Guide

Follow the steps below. Steps that require customization link to the relevant [Config Files](#config-files) section where you can edit on github.dev or locally.

???+ tenx-bootstrap "Step 1: Install"

    Install the `Cloud` binary flavor:
    
    - :simple-linux: [Single line script](https://doc.log10x.com/install/singleline/ "curl https://raw.githubusercontent.com/log-10x/pipeline-releases/main/install.sh | bash"){data-copy="curl https://raw.githubusercontent.com/log-10x/pipeline-releases/main/install.sh | bash"} | [DEB](https://doc.log10x.com/install/linux/#ubuntu-debian) | [RPM](https://doc.log10x.com/install/linux/#red-hat-centos-7)
    - :simple-macos: [Homebrew](https://doc.log10x.com/install/macos/ "brew install --cask log-10x/tap/log10x-cloud"){data-copy="brew install --cask log-10x/tap/log10x-cloud"}
    - :material-microsoft-windows: [PowerShell script](https://doc.log10x.com/install/win/)
    - :simple-docker: [Docker image](https://doc.log10x.com/install/docker/)

??? tenx-config "Step 2: Set Environment Variables"

    Set these environment variables before running. See [path configuration](https://doc.log10x.com/install/paths/) for details.
    
    | Variable | Description |
    |----------|-------------|
    | `TENX_CONFIG` | Path to your [configuration directory](https://doc.log10x.com/install/paths/#config) |
    | `TENX_LICENSE_KEY` | Your Log10x license JWT ([licensing](https://doc.log10x.com/manage/license/)); unset, the engine runs on the built-in evaluation license |
    | `GH_TOKEN` | GitHub personal access token ([create one](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)) (optional) |
    | `DOCKER_USERNAME` | Docker registry username ([Docker Hub](https://docs.docker.com/security/for-developers/access-tokens/)) (optional) |
    | `DOCKER_TOKEN` | Docker registry token ([Docker Hub](https://docs.docker.com/security/for-developers/access-tokens/)) (optional) |
    | `ARTIFACTORY_TOKEN` | JFrog Artifactory token ([create one](https://jfrog.com/help/r/jfrog-platform-administration-documentation/access-tokens)) (optional) |
    
    ```bash
    export TENX_CONFIG=/path/to/your/config
    export TENX_LICENSE_KEY="$(cat license.jwt)"
    export GH_TOKEN=your-github-token
    ```
    
    See [best practices](https://doc.log10x.com/engine/gitops/#best-practices) for managing secrets in production.

??? tenx-scan "Step 3: Set Up Input Sources"

    Specify source code or binary [inputPaths](#scan) to scan.
    
    === "Local Sources"
    
        Clone a repository to the default input path:
    
        ```bash
        git clone https://github.com/open-telemetry/opentelemetry-demo.git \
          $TENX_CONFIG/data/compile/sources
        ```
    
    === "GitHub Pull"
    
        Configure [githubPull](#github_2) to pull repos automatically:
    
        ```yaml
        githubPull:
          - token: $=TenXEnv.get("GH_TOKEN")
            repos:
              - open-telemetry/opentelemetry-demo
        ```
    
    === "Helm Charts"
    
        Configure [helmChartNames](#helm_2) to pull from Helm charts:
    
        ```yaml
        helm:
          chartNames:
            - open-telemetry/opentelemetry-demo
        ```
    
        The compiler uses [Docker CLI](https://docs.docker.com/get-started/get-docker/) and [Helm](https://helm.sh/docs/intro/install/). The Docker image includes these; otherwise ensure [helmCommand](https://doc.log10x.com/compile/pull/helm/#helmcommand) and [dockerCommand](https://doc.log10x.com/compile/pull/docker/#dockercommand) are valid.

??? tenx-transform "Step 4: Configure Output"

    1. Set [outputSymbolFolder](#scan) for symbol unit files
    2. Set [outputSymbolLibraryFile](#link) for the final library file

??? tenx-githubsync "Step 5: Push to GitHub (optional)"

    Push outputs to GitHub for [GitOps workflows](https://doc.log10x.com/engine/gitops/), enabling symbol reuse and delivery to edge/cloud apps:
    
    ```yaml
    githubPush:
      - token: $=TenXEnv.get("GH_TOKEN")
        repo: myUser/myRepo
        folder: symbols
    ```

??? tenx-mainconfig "Step 6: Run"

    === ":material-laptop: Nix/Win/OSX"
    
        **Best for**: Local development and testing.
    
        ```bash
        tenx @apps/compiler
        ```
    
    === ":material-docker: Docker (+ :material-laptop: local config)"
    
        **Best for**: Isolated environments with local configuration.
    
        ```bash
        docker run --rm \
          -v $TENX_CONFIG:/etc/tenx/config/ \
          -e TENX_CONFIG=/etc/tenx/config/ \
          -e TENX_LICENSE_KEY=${TENX_LICENSE_KEY} \
          -e GH_TOKEN=${GH_TOKEN} \
          -e DOCKER_USERNAME=${DOCKER_USERNAME} \
          -e DOCKER_TOKEN=${DOCKER_TOKEN} \
          log10x/compiler-10x:1.1.69 \
          @apps/compiler
        ```
    
    === ":material-docker: Docker (+ :material-github: GitOps config)"
    
        **Best for**: CI/CD pipelines with version-controlled configuration.
    
        ```bash
        docker run --rm \
          -e TENX_LICENSE_KEY=${TENX_LICENSE_KEY} \
          -e GH_TOKEN=${GH_TOKEN} \
          -e DOCKER_USERNAME=${DOCKER_USERNAME} \
          -e DOCKER_TOKEN=${DOCKER_TOKEN} \
          log10x/compiler-10x:1.1.69 \
          '@github={"token": "${GH_TOKEN}", "repo": "my-user/my-repo"}' \
          @apps/compiler
        ```

??? tenx-checklist "Step 7: Verify"

    Verify no errors appear in the [log file](https://doc.log10x.com/manage/logging/#log-file-location).
    
    **Check output files:**
    
    Verify symbol files were generated in your configured [outputSymbolFolder](https://doc.log10x.com/compile/scan/#outputsymbolfolder) and [outputSymbolLibraryFile](https://doc.log10x.com/compile/link/#outputsymbollibraryfile) paths.

??? tenx-delete "Step 8: Teardown"

    Nothing runs in the background, uninstall removes only what was installed.
    
    === ":simple-macos: Homebrew"
    
        ```bash
        brew uninstall --cask log10x-cloud
        ```
    
    === ":simple-linux: Linux"
    
        ```bash
        sudo rm -rf /opt/tenx-cloud /etc/tenx /etc/profile.d/tenx-cloud.sh
        ```
    
        If installed via DEB: `sudo apt-get remove tenx-cloud`
        If installed via RPM: `sudo yum remove tenx-cloud`
    
    === ":material-microsoft-windows: Windows"
    
        Uninstall from **Settings > Apps > Installed apps**.
    
    === ":simple-docker: Docker"
    
        ```bash
        docker rmi log10x/compiler-10x:1.1.69
        ```

## :material-wrench-outline: Config Files

To configure the Compiler app, [:material-cog: Edit](https://doc.log10x.com/config/app/#main-config "Learn how to edit app and module configurations") these files:
??? tenx-mainconfig "Main Config"

    <a id="mainconfig"></a>
    ### Main Config {.hidden-heading}

    The main config file loads the Compiler app's required modules.

    Uncomment selected modules at: [compiler/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/apps/compiler/config.yaml "compiler/config.yaml"){target="\_blank"}.  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/apps/compiler/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml0-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml0-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml0-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit Compiler Config Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml0-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/configiler/config.yaml"
                                data-copy-nix="/etc/log10x/configiler/config.yaml"
                                data-copy-win="C:\log10x\configsiler/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIGiler/config.yaml">$TENX_CONFIGiler/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelinesiler/config.yaml">./pipelinesiler/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    

    ```yaml
    #
    # 🔟❎  Compiler app main config
    
    # The compile app produces symbol library files which enable 10x apps to
    # transform log/trace events into well-defined TenXObjects at runtime.
    
    # To learn more see https://doc.log10x.com/compile
    
    # =========================== Bootstrap Compiler ==============================
    
    # To learn more see https://doc.log10x.com/compile/bootstrap
    
    tenx: compile
    
    runtimeName: $=TenXEnv.get("TENX_RUNTIME_NAME", "myCompiler")
    
    # ============================ Load App Modules ===============================
    
    # Uncomment and edit selected config.yaml files in the folders below (e.g., compile/scanners/config.yaml)
    
    include:
    
    # ------------------------------ App settings ---------------------------------
    
      # Load general app settings:
      - compiler
    
      # Load gitops settings for pulling additional assets from Github.
      # Edit the gitops/config.yaml file with specific config
      #
      # For additional info see - https://doc.log10x.com/config/github
      - gitops
    
      # --------------------------- Process Inputs --------------------------------
    
      # Process input source code and binary files on disk.
    
      - compile/scanners  # https://doc.log10x.com/compile/scan
    
      # ---------------------------- Pull Inputs ----------------------------------
    
      # This application can fetch source/binary files from remote inputs
      # Uncomment and edit config files (e.g. compile/pull/github/config.yaml) to remote pull
      #
      - compile/pull/github       # https://doc.log10x.com/compile/pull/github
      - compile/pull/docker       # https://doc.log10x.com/compile/pull/docker
      - compile/pull/helm         # https://doc.log10x.com/compile/pull/helm
      # - compile/pull/artifactory  # https://doc.log10x.com/compile/pull/artifactory
    
      # ---------------------------- Link Output ----------------------------------
    
      # Link output files into a single symbol library artifact for runtime use
    
      - compile/link              # https://doc.log10x.com/compile/link
    
      # ---------------------------- Push Output ----------------------------------
    
      # Push output files to GitHub for use by subsequent compile and run instances
    
      # - compile/push            # https://doc.log10x.com/compile/push
    ```

??? tenx-pull "Pull"

    <a id="pull"></a>
    ### Pull {.hidden-heading}

    Activate a [Repo Fetcher](/compile/pull "Pull input source code/binary files from remote repositories") to pull input source code/binary files from remote repositories.

    === ":material-github: Github"

  
        #### github {.hidden-heading}
        Configure [GitHub repositories](/compile/pull/github "Pull folders from GitHub repositories to scan for symbol content") to pull folders from GitHub repositories to scan for symbol content.  
  
        Below is the default configuration from: [github/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/pull/github/config.yaml "github/config.yaml"){target="\_blank"} (<span class="tenx-tooltip" data-tooltip="The config file below contains required fields to activate this module, marked with &#10071;">** Required Fields*</span>).  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/pull/github/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml1-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml1-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml1-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit GitHub repository Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml1-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/pull/github/config.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/pull/github/config.yaml"
                                    data-copy-win="C:\log10x\configs/compile/pull/github/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/pull/github/config.yaml">$TENX_CONFIG/compile/pull/github/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/pull/github/config.yaml">./pipelines/compile/pull/github/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiZ2l0aHViUHVsbCIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJyZXBvcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZXMgb2YgcmVwbyhzKSB0byBwdWxsXG5cbklkZW50aWZpZXMgR2l0SHViIHJlcG9zaXRvcmllcyB0byBwdWxsIGluIHRoZSBmb3JtIG9mIHVzZXJuYW1lL293bmVyIChlLmcuLCBvcGVuc2VhcmNoLXByb2plY3QvT3BlblNlYXJjaCkiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidG9rZW4iIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJHaXRIdWIgQVBJIGFjY2VzcyB0b2tlblxuXG5EZWZpbmVzIGFuIGFjY2VzcyB0b2tlbiBmb3IgYWNjZXNzaW5nIEdpdGh1YiByZXBvcy4gVG8gbGVhcm4gbW9yZSBzZWUgW0dpdEh1YiB0b2tlbnNdKGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2F1dGhlbnRpY2F0aW9uL2tlZXBpbmcteW91ci1hY2NvdW50LWFuZC1kYXRhLXNlY3VyZS9tYW5hZ2luZy15b3VyLXBlcnNvbmFsLWFjY2Vzcy10b2tlbnMpLiAgIFRoaXMgdmFsdWUgc2hvdWxkIGJlIHNldCB2aWEgYW4gW2Vudmlyb25tZW50IHZhcmlhYmxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEVudi5nZXQpOiAgYGBgIHlhbWwgZ2l0aHViUHVsbFRva2VuOiAkPVRlblhFbnYuZ2V0KFwiR0hfVE9LRU5cIikgYGBgIgogICAgICAgICAgfSwKICAgICAgICAgICJicmFuY2giIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUYXJnZXQgYnJhbmNoXG5cblNwZWNpZmllcyB0aGUgYnJhbmNoIHRvIHVzZSB3aGVuIHB1bGxpbmcgZnJvbSBbZ2l0aHViUHVsbFJlcG9zXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvcHVsbC9naXRodWIvI2dpdGh1YnB1bGxyZXBvcykuIElmIG9taXR0ZWQsIHVzZSB0aGUgcmVwb3NpdG9yeSdzIGRlZmF1bHQgYnJhbmNoLiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZm9sZGVycyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUmVwbyBmb2xkZXJzIHRvIHB1bGxcblxuSWRlbnRpZmllcyBmb2xkZXIocykgd2l0aGluIFtnaXRodWJQdWxsUmVwb3NdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9wdWxsL2dpdGh1Yi8jZ2l0aHVicHVsbHJlcG9zKSB0byBwdWxsLiBpZiBvbWl0dGVkLCB0aGUgZW50aXJlIHJlcG8gaXMgcHVsbGVkLiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJ0b2tlbiIKICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9</template>

        ```yaml
        # 🔟❎ 'compile' GitHub pull sources configuration
        
        # Configures GitHub repositories folders to pull to disk to scan its contents.
        # To learn more see https://doc.log10x.com/compile/pull/github
        
        # For a reference list of industry-standard frameworks, see:
        #   modules/pipelines/compile/modules/pull/github/library.yaml
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        # ============================== GitHub Options ===============================
        
        githubPull:
        
            # 'token' specifies the access token for this repo using a shell variable (recommended) or inline
            #  See https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
          - token: $=TenXEnv.get("GH_TOKEN")  # (❗ EnvVar REQUIRED)
        
            # 'repo' specifies the repo names to pull from Github (e.g., apache/spark)
            repos: [
              #owner/project
            ]
        
            # 'branch' specifies the branch to pull within 'repos'. If not set, pulls each repo's default branch
            branch: null
        
            # 'repoFolders' defines folders within 'repos' to pull. If not specified, pull the entire repo
            folders: [
              # src/main
            ]
        ```

    === ":material-docker: Docker"

  
        #### docker {.hidden-heading}
        Configure  the [Docker image](/compile/pull/docker "Pull Docker image files to scan for symbol content") to pull Docker image files to scan for symbol content.  
  
        Below is the default configuration from: [docker/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/pull/docker/config.yaml "docker/config.yaml"){target="\_blank"} (<span class="tenx-tooltip" data-tooltip="The config file below contains required fields to activate this module, marked with &#10071;">** Required Fields*</span>).  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/pull/docker/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml2-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml2-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml2-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Docker image Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml2-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/pull/docker/config.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/pull/docker/config.yaml"
                                    data-copy-win="C:\log10x\configs/compile/pull/docker/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/pull/docker/config.yaml">$TENX_CONFIG/compile/pull/docker/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/pull/docker/config.yaml">./pipelines/compile/pull/docker/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiZG9ja2VyIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJpbWFnZXMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRG9ja2VyIGltYWdlIGZpbGVzIHRvIHB1bGxcblxuU3BlY2lmaWVzIHRoZSBVUkxzIGZvciB0aGUgcmVtb3RlIERvY2tlciBpbWFnZXMgdG8gcHVsbCBpbiB0aGUgZm9ybSBvZjogYDxjb250YWluZXItcmVwb3NpdG9yeT4vPGltYWdlPi88dmVyc2lvbj5gLiBGb3IgZXhhbXBsZTogIGBgYCB5YW1sICBkb2NrZXJJbWFnZXM6IC0gZG9ja2VyLmlvL2dyYWZhbmEvZ3JhZmFuYToxMS4xLjAgYGBgIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAidXNlcm5hbWUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkRvY2tlciB1c2VyIG5hbWVcblxuU3BlY2lmaWVzIHRoZSBbdXNlciBuYW1lXShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9yZWZlcmVuY2UvY2xpL2RvY2tlci9sb2dpbi8jdXNlcm5hbWUpIGZvciBhdXRoZW50aWNhdGluZyB0aGUgZG9ja2VyIGNsaWVudC4gSWYgdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCB0aGUgZG9ja2VyIGNsaWVudCBpcyBhc3N1bWVkIHRvIGJlIHByZS1hdXRoZW50aWNhdGVkLiAgVGhpcyB2YWx1ZSBzaG91bGQgYmUgc2V0IHZpYSBhbiBbZW52aXJvbm1lbnQgdmFyaWFibGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YRW52LmdldCk6ICBgYGAgeWFtbCBkb2NrZXJVc2VybmFtZTogJD1UZW5YRW52LmdldChcIkRPQ0tFUl9VU0VSTkFNRVwiKSBgYGAiCiAgICAgICAgfSwKICAgICAgICAicGFzc3dvcmQiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkRvY2tlciBwYXNzd29yZFxuXG5TcGVjaWZpZXMgdGhlIHBhc3N3b3JkIGZvciBhdXRoZW50aWNhdGluZyB0aGUgZG9ja2VyIGNsaWVudCBpbiBjb25qdW5jdGlvbiB3aXRoIFtkb2NrZXJVc2VybmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3B1bGwvZG9ja2VyLyNkb2NrZXJ1c2VybmFtZSkuIFRoaXMgdmFsdWUgaXMgd3JpdHRlbiBpbnRvIHRoZSBkb2NrZXIgY2xpZW50J3Mgc3RkIGlucHV0IHZpYSB0aGUgbG9naW4gY29tbWFuZCdzIFtwYXNzd29yZC1zdGRpbl0oaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vcmVmZXJlbmNlL2NsaS9kb2NrZXIvbG9naW4vI3Bhc3N3b3JkLXN0ZGluKSBhcmd1bWVudC4gIFRoaXMgdmFsdWUgc2hvdWxkIGJlIHNldCB2aWEgYW4gW2Vudmlyb25tZW50IHZhcmlhYmxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEVudi5nZXQpOiAgYGBgIHlhbWwgZG9ja2VyUGFzc3dvcmQ6ICQ9VGVuWEVudi5nZXQoXCJET0NLRVJfVE9LRU5cIikgYGBgIgogICAgICAgIH0sCiAgICAgICAgInJlbW92ZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUmVtb3ZlIGltYWdlIGFmdGVyIHNjYW5cblxuU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmVtb3ZlIFtkb2NrZXJJbWFnZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9wdWxsL2RvY2tlci8jZG9ja2VyaW1hZ2VzKSB1c2luZyBbZG9ja2VyIHJtaSAtZl0oaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vcmVmZXJlbmNlL2NsaS9kb2NrZXIvaW1hZ2Uvcm0vKSAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogdHJ1ZSkiLAogICAgICAgICAgImRlZmF1bHQiIDogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImdpdGh1YlJlcG9Ub2tlbiIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiR2l0SHViIEFQSSB0b2tlbiBmb3IgcHVsbGluZyBpbWFnZSBzb3VyY2UgY29kZSByZXBvc2l0b3JpZXNcblxuRGVmaW5lcyBhbiBhY2Nlc3MgdG9rZW4gZm9yIHB1bGxpbmcgW0dpdGh1YiByZXBvc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3B1bGwvZ2l0aHViLykgcmVmZXJlbmNlZCBieSBhIHRhcmdldCBpbWFnZSdzIFtvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvaW1hZ2Utc3BlYy9ibG9iL3YxLjAuMS9hbm5vdGF0aW9ucy5tZCNwcmUtZGVmaW5lZC1hbm5vdGF0aW9uLWtleXMpIHByb3BlcnR5LiAgSWYgdGhpcyBwcm9wZXJ0eSBpcyBub3QgYXZhaWxhYmxlIHdpdGhpbiB0aGUgW2ltYWdlIG1hbmlmZXN0XShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9yZWZlcmVuY2UvY2xpL2RvY2tlci9tYW5pZmVzdC9pbnNwZWN0KSwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGluZmVyIGEgdmFsaWQgR2l0SHViIHJlcG8gbmFtZSBmcm9tIHRoZSBpbWFnZSBuYW1lLiBGb3IgZXhhbXBsZSwgZm9yIHRoZSB0aGUgdGFyZ2V0IGltYWdlIG5hbWU6IGBkb2NrZXIuaW8vZ3JhZmFuYS9ncmFmYW5hOjExLjEuMGAsIHRoZSBbZ3JhZmFuYS9ncmFmYW5hXShodHRwczovL2dpdGh1Yi5jb20vZ3JhZmFuYS9ncmFmYW5hKSBHaXRIdWIgcmVwbyBpcyBpbmZlcnJlZC4gIElmIG5vdCBhbiBBUEkgdG9rZW4gaXMgbm90IHNwZWNpZmllZCwgR2l0SHViIHJlcG9zIHJlZmVyZW5jZWQgd2l0aGluIGltYWdlIG1hbmlmZXN0cyBvciBpbmZlcnJlZCBmcm9tIGltYWdlIG5hbWVzIGFyZSBub3QgcHVsbGVkLiBUbyBsZWFybiBtb3JlIHNlZSBbR2l0SHViIHRva2Vuc10oaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYXV0aGVudGljYXRpb24va2VlcGluZy15b3VyLWFjY291bnQtYW5kLWRhdGEtc2VjdXJlL21hbmFnaW5nLXlvdXItcGVyc29uYWwtYWNjZXNzLXRva2VucykuIgogICAgICAgIH0sCiAgICAgICAgImNvbW1hbmQiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBhdGggdG8gZG9ja2VyIGNvbW1hbmRcblxuRGVmaW5lcyB0aGUgcGF0aCB0byB0aGUgW2RvY2tlcl0oaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vcmVmZXJlbmNlL2NsaS9kb2NrZXIvKSBwcm9ncmFtIHVzZWQgcHVsbGluZyBhbmQgZXhwb3J0aW5nIGltYWdlcy4gKERlZmF1bHQ6ICpOSVg6IC91c3IvbG9jYWwvYmluL2RvY2tlciwgV2luOiBDOi9Qcm9ncmFtIEZpbGVzL0RvY2tlci9Eb2NrZXIvcmVzb3VyY2VzL2Jpbi9kb2NrZXIuZXhlKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAiKk5JWDogL3Vzci9sb2NhbC9iaW4vZG9ja2VyLCBXaW46IEM6L1Byb2dyYW0gRmlsZXMvRG9ja2VyL0RvY2tlci9yZXNvdXJjZXMvYmluL2RvY2tlci5leGUiCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

        ```yaml
        # 🔟❎ 'compile' Docker configuration
        
        # Pull docker images files using the Docker CLI client from container registries to
        # scan for symbol values. To learn more see https://doc.log10x.com/compile/pull/docker
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        # ============================= Docker Options ================================
        
        docker:
        
          # 'username' specifies the  user name for authenticating the docker client.
          #  If not set, the docker client is assumed to be pre-authenticated.
          #  To learn more see https://docs.docker.com/reference/cli/docker/login/#username
          username: $=TenXEnv.get("DOCKER_USERNAME") # (❗ EnvVar REQUIRED)
        
          # 'password' specifies the password argument for authenticating the docker client login command.
          #  This value is written into the docker client's std input via the --password-stdin argument.
          #  To learn more see https://docs.docker.com/reference/cli/docker/login/#password-stdin.
          password: $=TenXEnv.get("DOCKER_TOKEN")  # (❗ EnvVar REQUIRED)
        
          # 'command' specifies the location of docker cli https://docs.docker.com/reference/cli/docker/ program
          #command: $=TenXString.includes(TenXEnv.get("os.name"), "Windows") ? "C:/Program Files/Docker/Docker/resources/bin/docker.exe":"/usr/local/bin/docker"
        
          # 'images' specify images to pull and export to matching .tar files to scan
          images: [
          #   docker.io/grafana/grafana:11.1.0 
          ]
        
          # 'remove' specifies whether to remove exported images once their contents are extracted.
          #  To learn more see https://docs.docker.com/reference/cli/docker/image/rm
          remove: false
        
          # 'githubRepoToken' defines an access token for pulling Github repos referenced
          # by a target image's 'org.opencontainers.image.source' property.
          githubRepoToken: $=TenXEnv.get("GH_TOKEN")  # (❗ EnvVar REQUIRED)
        ```

    === ":simple-helm: Helm"

  
        #### helm {.hidden-heading}
        Configure  the [Helm chart](/compile/pull/helm "Pull GitHub repositories and Docker images to scan for symbol content from Helm charts") to pull GitHub repositories and Docker images to scan for symbol content from Helm charts.  
  
        Below is the default configuration from: [helm/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/pull/helm/config.yaml "helm/config.yaml"){target="\_blank"} (<span class="tenx-tooltip" data-tooltip="The config file below contains required fields to activate this module, marked with &#10071;">** Required Fields*</span>).  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/pull/helm/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml3-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml3-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml3-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Helm chart Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml3-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/pull/helm/config.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/pull/helm/config.yaml"
                                    data-copy-win="C:\log10x\configs/compile/pull/helm/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/pull/helm/config.yaml">$TENX_CONFIG/compile/pull/helm/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/pull/helm/config.yaml">./pipelines/compile/pull/helm/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiaGVsbSIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAiY2hhcnROYW1lcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGNoYXJ0cyB0byBwdWxsXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgY2hhcnQgbmFtZXMgKGUuZy4sIG9wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktZGVtbykgdG8gcGFzcyB0byBbaGVsbUNvbW1hbmRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9wdWxsL2hlbG0vI2hlbG1jb21tYW5kKS4gVGhlIHNjYW5uZXIgd2lsbCBpbnZva2UgdGhlIFt0ZW1wbGF0ZV0oaHR0cHM6Ly9oZWxtLnNoL2RvY3MvaGVsbS9oZWxtX3RlbXBsYXRlLykgYW5kIFtzaG93IGNoYXJ0XShodHRwczovL2hlbG0uc2gvZG9jcy9oZWxtL2hlbG1fc2hvd19jaGFydC8pIGNvbW1hbmRzIHRvIHB1bGwgaXRzIHZhbHVlcy55YW1sIGFuZCBjaGFydC55YW1sIGZpbGVzIHRvIHNjYW4gZm9yIERvY2tlciBjb250YWluZXIgaW1hZ2VzIGFuZCBHaXRIdWIgcmVwbyBmaWxlcy4iLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJjaGFydEZpbGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgY2hhcnRzIHRlbXBsYXRlcyBhbmQgdmFsdWUgZmlsZXMgdG8gc2NhblxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGNoYXJ0IHZhbHVlIGFuZCB0ZW1wbGF0ZXMgZmlsZXMgdG8gc2Nhbi4gVGhlc2UgZmlsZSBwYXRocyBtYXkgYmUgcmVsYXRpdmUgdG8gdGhlIGluY2x1ZGUgcGF0aHMgbGlzdC4gSWYgZmlsZSBwYXRocyBhcmUgY2Fub25pY2FsLCB0aGVpciBlbmNsb3NpbmcgZm9sZGVycyBtdXN0IGJlIGluY2x1ZGVkIGluIHRoZSBpbmNsdWRlUGF0aHMgYXJndW1lbnQuIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicHVsbCIgOiB7CiAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICAgImdpdGh1YiIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICAgICAgICJyZXBvcyIgOiB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlB1bGwgR2l0SHViIHJlcG9zXG5cblNwZWNpZmllcyB3aGV0aGVyIHRvIHB1bGwgW0dpdEh1YiByZXBvc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3B1bGwvZ2l0aHViLykgcmVmZXJlbmNlZCBieSBhbiBpbnB1dCBIZWxtIHRlbXBsYXRlIGZpbGVzLiAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAidG9rZW4iIDogewogICAgICAgICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJHaXRIdWIgQVBJIHRva2VuIGZvciBwdWxsaW5nIHJlcG9zaXRvcmllc1xuXG5EZWZpbmVzIGFuIGFjY2VzcyB0b2tlbiBmb3IgcHVsbGluZyBbR2l0aHViIHJlcG9zXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvcHVsbC9naXRodWIvKSByZWZlcmVuY2VkIGJ5IEhlbG0gY2hhcnRzLiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkb2NrZXJJbWFnZXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUHVsbCBkb2NrZXIgY29udGFpbmVyIGltYWdlc1xuXG5TcGVjaWZpZXMgd2hldGhlciB0byBwdWxsIFtEb2NrZXIgaW1hZ2VzXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvcHVsbC9kb2NrZXIvKSByZWZlcmVuY2VkIGJ5IGFuIGlucHV0IEhlbG0gdmFsdWVzIGFuZCB0ZW1wbGF0ZSBmaWxlcy4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgICAiZGVmYXVsdCIgOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJjb21tYW5kIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQYXRoIHRvIEhlbG0gY29tbWFuZFxuXG5EZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBbSGVsbV0oaHR0cHM6Ly9oZWxtLnNoLykgcHJvZ3JhbSB1c2VkIGZvciBxdWVyeWluZyBjaGFydCB0ZW1wbGF0ZXMgYW5kIHZhbHVlcy4gVGhpcyB2YWx1ZSBtdXN0IGJlIHNldCBpZiBbaGVsbUNoYXJ0TmFtZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9wdWxsL2hlbG0vI2hlbG1jaGFydG5hbWVzKSBpcyBzZXQuIChEZWZhdWx0OiAqTklYOiAvdXNyL2xvY2FsL2Jpbi9oZWxtLCBXaW46IEM6L1Byb2dyYW0gRmlsZXMvaGVsbS9oZWxtLmV4ZSkiLAogICAgICAgICAgImRlZmF1bHQiIDogIipOSVg6IC91c3IvbG9jYWwvYmluL2hlbG0sIFdpbjogQzovUHJvZ3JhbSBGaWxlcy9oZWxtL2hlbG0uZXhlIgogICAgICAgIH0sCiAgICAgICAgImdpdEh1YlJlcG9QYXRocyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiWUFNTCBET00gcGF0aHMgZm9yIGV4dHJhY3RpbmcgR2l0SHViIHJlcG9zXG5cblNwZWNpZmllcyBwYXRocyB3aXRoaW4gYSBZQU1MIGZpbGUgdG8gdHJlYXQgYXMgaG9sZGVycyBmb3IgR2l0SHViIHJlcG8gbmFtZXMuIEZvciBleGFtcGxlLCBmb3IgdGhlIGZvbGxvd2luZyBzZWN0aW9uIGZyb20gYW4gaW5wdXQgY2hhcnQueWFtbCBmaWxlOiBgYGB5YW1sIHNvdXJjZXM6ICAgLSBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1kZW1vICMgY2FwdHVyZSB0aGlzIEdpdEh1YiByZXBvIHJlZmVyZW5jZSBgYGAgKERlZmF1bHQ6IFttZXRhZGF0YS5yZXBvc2l0b3J5LCBzcGVjLnNvdXJjZS5naXQsIGNoYXJ0LnJlcG9zaXRvcnldKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAiW21ldGFkYXRhLnJlcG9zaXRvcnksIHNwZWMuc291cmNlLmdpdCwgY2hhcnQucmVwb3NpdG9yeV0iCiAgICAgICAgfSwKICAgICAgICAiZG9ja2VySW1hZ2VQYXRocyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiWUFNTCBET00gcGF0aHMgZm9yIGV4dHJhY3RpbmcgRG9ja2VyIHJlcG8gcmVmZXJlbmNlc1xuXG5TcGVjaWZpZXMgcGF0aHMgd2l0aGluIGEgaGVsbSBZQU1MIGZpbGUgdG8gdHJlYXQgYXMgaG9sZGVycyBmb3IgRG9ja2VyIGltYWdlIG5hbWVzLiBGb3IgZXhhbXBsZSwgZm9yIHRoZSBmb2xsb3dpbmcgc2VjdGlvbiBmcm9tIGFuIGlucHV0IHZhbHVlcy55YW1sIGZpbGU6IGBgYHlhbWwgICAgIHNwZWM6ICAgc2VydmljZUFjY291bnROYW1lOiBvcGVudGVsZW1ldHJ5LWRlbW8gICBjb250YWluZXJzOiAgIC0gbmFtZTogYWNjb3VudGluZ3NlcnZpY2UgICAgICBpbWFnZTogJ2RvY2tlci5pby9ncmFmYW5hL2dyYWZhbmE6MTEuMS4wJyAjIGNhcHR1cmUgdGhpcyBkb2NrZXIgaW1hZ2UgcmVmZXJlbmNlIGBgYCAoRGVmYXVsdDogW3NwZWMudGVtcGxhdGUuc3BlYy5jb250YWluZXJzLmltYWdlLCB2YWx1ZXMuaW1hZ2UsIHNwZWMuY29udGFpbmVycy5pbWFnZSwgc291cmNlc10pIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJbc3BlYy50ZW1wbGF0ZS5zcGVjLmNvbnRhaW5lcnMuaW1hZ2UsIHZhbHVlcy5pbWFnZSwgc3BlYy5jb250YWluZXJzLmltYWdlLCBzb3VyY2VzXSIKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9</template>

        ```yaml
        # 🔟❎ 'compile' k8s Helm scanner configuration
        
        # Configures the k8s Helm chart symbol scanner which pulls referenced GitHub source repositories and
        # Docker container images to scan for symbol values.
        
        # To learn more see https://doc.log10x.com/compile/pull/helm
        
        # For a reference list of common infrastructure charts, see:
        #   modules/pipelines/compile/modules/pull/helm/library.yaml
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        # =============================== Helm Options ===============================
        
        helm:
        
          # Charts can be specified as Helm chart names OR as local chart files.
        
          # 'chartNames' specifies a list of remote chart names to scan for values and template files.
          chartNames: [
            # open-telemetry/opentelemetry-demo,
            # ingress-nginx/ingress-nginx,
          ]
        
          # 'chartFiles' specifies a list of local chart template and values.yaml files on disk.
          #  File paths may be relative to the 'includePaths' list. If canonical, enclosing folders must added to 'includePaths'.
          chartFiles: [
            # charts/opentelemetry-demo/values.yaml
          ]
        
          pull:
        
            # 'dockerImages' specifies whether to pull docker container images referenced by input charts
            #  To learn more see https://doc.log10x.com/compile/pull/docker
            dockerImages: true
        
            github:
        
              # 'repos' specifies whether to pull GitHub repos referenced by 'org.opencontainers.image.source' annotations
              #  To learn more see https://github.com/opencontainers/image-spec/blob/v1.0.1/annotations.md#pre-defined-annotation-keys
              repos: true
        
              # 'token' specifies the GitHub access token for pulling from referenced repos
              #  To learn more see: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
              token: $=TenXEnv.get("GH_TOKEN")  # (❗ EnvVar REQUIRED)
        ```

    === ":simple-jfrog: Artifactory"

  
        #### artifactory {.hidden-heading}
        Configure [Artifactory repositories](/compile/pull/artifactory "Pull files from Artifactory repositories to scan for symbol content") to pull files from Artifactory repositories to scan for symbol content.  
  
        Below is the default configuration from: [artifactory/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/pull/artifactory/config.yaml "artifactory/config.yaml"){target="\_blank"} (<span class="tenx-tooltip" data-tooltip="The config file below contains required fields to activate this module, marked with &#10071;">** Required Fields*</span>).  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/pull/artifactory/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml4-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml4-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml4-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Artifactory repository Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml4-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/pull/artifactory/config.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/pull/artifactory/config.yaml"
                                    data-copy-win="C:\log10x\configs/compile/pull/artifactory/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/pull/artifactory/config.yaml">$TENX_CONFIG/compile/pull/artifactory/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/pull/artifactory/config.yaml">./pipelines/compile/pull/artifactory/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiYXJ0aWZhY3RvcnkiIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiaW5zdGFuY2UiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBcnRpZmFjdG9yeSByZXBvc2l0b3J5IFVSTFxuXG5VUkwgZm9yIHRoZSByZW1vdGUgQXJ0aWZhY3RvcnkgaW5zdGFuY2UgKGUuZy4sIGh0dHBzOi8vbXl1c2VybmFtZS5qZnJvZy5pby9hcnRpZmFjdG9yeSkiCiAgICAgICAgICB9LAogICAgICAgICAgInRva2VuIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQXJ0aWZhY3RvcnkgaW5zdGFuY2UgYWNjZXNzIHRva2VuXG5cbkFydGlmYWN0b3J5IFthY2Nlc3MgdG9rZW5dKGh0dHBzOi8vamZyb2cuY29tL2hlbHAvci9qZnJvZy1wbGF0Zm9ybS1hZG1pbmlzdHJhdGlvbi1kb2N1bWVudGF0aW9uL2FjY2Vzcy10b2tlbnMpIGZvciB0aGlzIHJlbW90ZSBpbnN0YW5jZS4gVGhpcyB2YWx1ZSBzaG91bGQgYmUgc2V0IHZpYSBhbiBbZW52aXJvbm1lbnQgdmFyaWFibGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YRW52LmdldCk6ICBgYGAgeWFtbCBhcnRpZmFjdG9yeVRva2VuOiAkPVRlblhFbnYuZ2V0KFwiQVJUSUZBQ1RPUllfVE9LRU5cIikgYGBgIgogICAgICAgICAgfSwKICAgICAgICAgICJyZXBvIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQXJ0aWZhY3RvcnkgcmVwb3NpdG9yeSBuYW1lXG5cbk5hbWUgb2YgdGhlIFtyZXBvc2l0b3J5XShodHRwczovL2pmcm9nLmNvbS9oZWxwL3IvamZyb2ctYXJ0aWZhY3RvcnktZG9jdW1lbnRhdGlvbi9yZXBvc2l0b3J5LW1hbmFnZW1lbnQpIHdpdGhpbiB0aGUgdGFyZ2V0IEFydGlmYWN0b3J5IGluc3RhbmNlIGZyb20gd2hpY2ggdG8gcHVsbCB0aGUgc3BlY2lmaWVkIGZpbGUuIgogICAgICAgICAgfSwKICAgICAgICAgICJmaWxlcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUmVtb3RlIHJlcG9zaXRvcnkgZmlsZSBwYXRoc1xuXG5QYXRocyBvZiBmaWxlcyB3aXRoaW4gdGhlIHRhcmdldCBBcnRpZmFjdG9yeSBpbnN0YW5jZSByZXBvc2l0b3J5IHRvIHB1bGwiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiZm9sZGVycyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUmVtb3RlIHJlcG9zaXRvcnkgZm9sZGVyIHBhdGhzXG5cblBhdGhzIG9mIGZvbGRlcnMgd2l0aGluIHRoZSB0YXJnZXQgQXJ0aWZhY3RvcnkgaW5zdGFuY2UgcmVwb3NpdG9yeSB0byBwdWxsIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInJlY3Vyc2l2ZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlB1bGwgZmlsZXMgZnJvbSByZW1vdGUgcmVwb3NpdG9yeSBmb2xkZXJzIHJlY3Vyc2l2ZWx5XG5cblNwZWNpZmllcyB3aGV0aGVyIHRvIHB1bGwgZmlsZXMgZnJvbSBbYXJ0aWZhY3RvcnlGb2xkZXJzXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvcHVsbC9hcnRpZmFjdG9yeS8jYXJ0aWZhY3Rvcnlmb2xkZXJzKSByZWN1cnNpdmVseSAoaS5lLiwgcHVsbCBzdWItZm9sZGVycyBhcyB3ZWxsKS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IGZhbHNlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IGZhbHNlCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZWQiIDogWwogICAgICAgICAgImluc3RhbmNlIiwKICAgICAgICAgICJ0b2tlbiIsCiAgICAgICAgICAicmVwbyIKICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9</template>

        ```yaml
        # 🔟❎ 'compile' Artifactory configuration
        
        # Pull artifacts (e.g., Java archives, .NET assemblies) from remote Artifactory instances to 
        # scan for symbol values. To learn more see https://doc.log10x.com/compile/pull/artifactory
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        # ============================= Artifactory Options ===========================
        
        artifactory:
        
          # 'token' specifies an Artifactory API access token.
          #   To learn more see https://jfrog.com/help/r/jfrog-platform-administration-documentation/access-tokens
          - token: $=TenXEnv.get("ARTIFACTORY_TOKEN") # (❗ REQUIRED)
          
          # 'instance' specifies the of location of the remote Artifactory instance (e.g., https://demo.jfrog.io/artifactory)
            instance: "" # (❗ REQUIRED)
              
          # 'repo' specifies the target Artifactory repository (e.g., pypi-local)
            repo: "" # (❗ REQUIRED)
        
          # 'files' specifies files to pull from the target Artifactory repository  # (❗ REQUIRED)
            files: [
              # dist/jfrog-pypi-example-1.0.0.tar.gz
            ] 
        
            # 'folders' specifies folders paths within the target Artifactory instance repository to pull # (❗ REQUIRED)
            folders: [ 
            ]
        
            # 'recursive' specifies whether to pull folders recursively (i.e., pull sub-folders as well).
            recursive: true
        ```

??? tenx-scan "Scan"

    <a id="scan"></a>
    ### Scan {.hidden-heading}

    Configure  the [Input Scanner](/compile/scan "Capture symbol values from source code/binary files and link to an output symbol library") to capture symbol values from source code/binary files and link to an output symbol library.

    Below is the default configuration from: [scanners/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/config.yaml "scanners/config.yaml"){target="\_blank"}.  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml5-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml5-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml5-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit Input Scanner Config Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml5-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/config/compile/scanners/config.yaml"
                                data-copy-nix="/etc/log10x/config/compile/scanners/config.yaml"
                                data-copy-win="C:\log10x\configs/compile/scanners/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIG/compile/scanners/config.yaml">$TENX_CONFIG/compile/scanners/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelines/compile/scanners/config.yaml">./pipelines/compile/scanners/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    
    <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiaW5wdXRQYXRocyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYXJyYXkiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJbnB1dCBmb2xkZXJzIHRvIHNjYW5cblxuUHJvdmlkZXMgYSBsaXN0IG9mIGZvbGRlcnMgdGhhdCBhcmUgdHJhdmVyc2VkIGluIHNlYXJjaCBvZiBzb3VyY2UgY29kZSAoZS5nLiAuanMsIC5jcHApLCBiaW5hcnkgKGUuZy4sIC5zbywgLmphciwgLnppcCkgYW5kIHRleHQgKGUuZy4sIC5qc29uLCAueG1sKSBmaWxlcyB0byBjYXB0dXJlIHN5bWJvbCB2YWx1ZXMgZnJvbSBhbmQgb3V0cHV0IHRvIHN5bWJvbCB1bml0IGZpbGVzLiBJbnB1dCBmb2xkZXJzIG1heSBjb250YWluIGZpbGVzIGFuZCBmb2xkZXJzIHB1bGxlZCBmcm9tIFtHaXRIdWJdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9wdWxsL2dpdGh1Yi8pIG9yICBhbmQgW0FydGlmYWN0b3J5XShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvYXJ0aWZhY3RvcnkpLiIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfQogICAgfSwKICAgICJvdXRwdXRTeW1ib2xGb2xkZXIiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMb2NhdGlvbiBvZiBvdXRwdXQgc3ltYm9sIGZvbGRlclxuXG5TcGVjaWZpZXMgdGhlIHJvb3QgZm9sZGVyIGluIHdoaWNoIHRvIHdyaXRlIG91dHB1dCBzeW1ib2wgdW5pdCBmaWxlcy4gVGhpcyBjb21waWxlciBbc2NhbiBwaGFzZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3NjYW4vKSBtaXJyb3JzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIFtpbnB1dFBhdGhzXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvc2Nhbi8jaW5wdXRwYXRocykgYXJndW1lbnQsIHBsYWNpbmcgZWFjaCBvdXRwdXQgc3ltYm9sIHVuaXQgaW4gdGhlIHNhbWUgcmVsYXRpdmUgcGF0aCB1bmRlciBbb3V0cHV0U3ltYm9sRm9sZGVyXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvc2Nhbi8jb3V0cHV0c3ltYm9sZm9sZGVyKSBhcyBpdHMgc291cmNlL2JpbmFyeSBpbnB1dCBmaWxlIHVuZGVyIGl0cyByZXNwZWN0aXZlIGBpbnB1dFBhdGhzYCBmb2xkZXIgZW50cnkuICBGb3IgZXhhbXBsZSwgaWYgW2lucHV0UGF0aHNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9zY2FuLyNpbnB1dHBhdGhzKSBpcyBgfi9kZXZgIGFuZCBpdCBjb250YWlucyB0aGUgZmlsZSBgfi9kZXYvYXBwL2Zvby5qc2AsIGFuZCB0aGlzIHZhbHVlIGlzIGB+L3N5bWJvbHNgLCB0aGUgcmVzcGVjdGl2ZSBvdXRwdXQgc3ltYm9sIHVuaXQgZmlsZSBpczogYH4vc3ltYm9scy9hcHAvZm9vLmpzLjEweC5qc29uYC4iCiAgICB9LAogICAgInNjYW4iIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZvcmNlIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJDb250cm9sIHdoZXRoZXIgdG8gc2NhbiBpbnB1dCBmaWxlcyBldmVuIGlmIGEgbWF0Y2hpbmcgZXhpc3Rpbmcgc3ltYm9sIGZpbGUgZXhpc3RzXG5cbkNvbnRyb2xzIHdoZXRoZXIgdG8gcmV1c2UgbWF0Y2hpbmcgc3ltYm9sIGZpbGVzIHdpdGhpbiBbaW5wdXRQYXRoc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3NjYW4vI2lucHV0cGF0aHMpLiBUaGlzIG9wdGlvbiBpcyBwcmltYXJpbHkgdXNlZnVsIHdoZW4gZGVidWdnaW5nIGEgbmV3IHNjYW5uZXIgbW9kdWxlIGNvbmZpZ3VyYXRpb24gKGUuZy4sIEFOVExSIGdyYW1tYXIpICBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBbc2Nhbm5lciBkZWJ1Z2dpbmddKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9zY2FuKSBvcHRpb25zLiAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogZmFsc2UpIiwKICAgICAgICAgICJkZWZhdWx0IiA6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaW5Qcm9jZXNzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJDb250cm9scyB3aGV0aGVyIHRvIHNjYW4gc291cmNlL2JpbmFyeSBpbnB1dCBmaWxlcyB1c2luZyBzdWItcHJvY2VzcyhlcylcblxuVGhlIHNjYW5uZXIgY2FuIGxhdW5jaCBbc3VicHJvY2Vzc2VzXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvc2Nhbi8jc3VicHJvY2Vzc18xKSB0byBjYXB0dXJlIFtzeW1ib2xdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zdHJ1Y3R1cmUvI3N5bWJvbHMpIGluZm9ybWF0aW9uIGZyb20gc3BlY2lmaWMgdGFyZ2V0IHNvdXJjZS9iaW5hcnkgaW5wdXQgZmlsZXMuICAgR2VuZXJhdGluZyBpbnB1dCBmaWxlIFtBU1RzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BYnN0cmFjdF9zeW50YXhfdHJlZSkgdG8gc2NhbiBmb3Igc3ltYm9scyB2YWx1ZXMgZm9yIGNvbXBsZXggc3ludGF4ZXMgY2FuIGJlIGEgbGVuZ3RoeSwgcmVzb3VyY2UtY29uc3VtaW5nIG9wZXJhdGlvbiwgd2hpY2ggaW4gdGhlIGNhc2Ugb2YgIFtBTlRMUiBzeW50YXhlc10oaHR0cHM6Ly90b21hc3NldHRpLm1lL2ltcHJvdmluZy10aGUtcGVyZm9ybWFuY2Utb2YtYW4tYW50bHItcGFyc2VyLykgbWF5IHRpbWVvdXQgb3IgcnVuIG91dCBvZiBtZW1vcnkuICAgICBQcm9jZXNzIFtpc29sYXRpb25dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb2Nlc3NfaXNvbGF0aW9uKSBhbGxvd3MgZm9yIHRlcm1pbmF0aW5nIHNjYW4gb3BlcmF0aW9ucyB0aGF0IHRpbWVvdXQgZm9yIHNwZWNpZmljIGZpbGVzLCB3aGlsZSBhbGxvd2luZyBvdGhlcnMgdG8gcHJvY2VlZC4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IGZhbHNlKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInRocmVhZFBvb2xTaXplIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRvIHVzZSBjb25jdXJyZW50bHkgcHJvY2VzcyBpbnB1dCBzb3VyY2UgY29kZSAvYmluYXJ5IGZpbGVzXG5cbkNvbnRyb2xzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRvIHByb2Nlc3MgaW5wdXQgc291cmNlIGNvZGUvYmluYXJ5IGZpbGVzIGNvbmN1cnJlbnRseTogLSBJZiB0aGUgdmFsdWUgaXMgYmV0d2VlbiAwIGFuZCAxLCB0aGUgbnVtYmVyIGNhbGN1bGF0ZXMgYSBwZXJjZW50YWdlIG9mIGF2YWlsYWJsZSBjb3JlcyAoZS5nLiwgMC41ID0gdXNlIHVwIHRvIDUwJSBvZiBhdmFpbGFibGUgY29yZXMpLiAgIC0gSWYgdGhlIHZhbHVlIGlzID49IDEsIHRoZSB2YWx1ZSBzZXRzIGEgZml4ZWQgbnVtYmVyIG9mIHRocmVhZHMgKGUuZy4sIDEwID0gMTAgdGhyZWFkcykuICAgLSBJZiB0aGUgdmFsdWUgaXMgMSwgYWxsb2NhdGUgYSBzaW5nbGUgdGhyZWFkIHRvIHByb2Nlc3MgaW5wdXQgZmlsZXMuIChEZWZhdWx0OiAwLjUpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICIwLjUiCiAgICAgICAgfSwKICAgICAgICAidW5pdFRpbWVvdXQiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRpbWVvdXQgaW50ZXJ2YWwgZm9yIHNjYW5uaW5nIGEgc291cmNlIGNvZGUgL2JpbmFyeSBpbnB1dCBmaWxlXG5cblNldHMgdGhlIHRpbWVvdXQgaW50ZXJ2YWwgd2hlbiBzY2FubmluZyBhIHNvdXJjZSBjb2RlIC9iaW5hcnkgaW5wdXQgZmlsZSBiZWZvcmUgZHJvcHBpbmcgaXQuIFNldCB0byBudWxsIHRvIGlnbm9yZS4gKERlZmF1bHQ6IDIwcykiLAogICAgICAgICAgImRlZmF1bHQiIDogIjIwcyIKICAgICAgICB9LAogICAgICAgICJvcGVyYXRpb25UaW1lb3V0IiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaW1lb3V0IGludGVydmFsIGZvciB0aGUgZW50aXJlIHNjYW5uaW5nIG9wZXJhdGlvblxuXG5TZXRzIHRoZSB0aW1lb3V0IGludGVydmFsIGZvciB0aGUgZW50aXJlIHNjYW5uaW5nIG9wZXJhdGlvbiBiZWZvcmUgdGVybWluYXRpbmcgaXQuIFNldCB0byBudWxsIHRvIGlnbm9yZS4gKERlZmF1bHQ6IDEwbSkiLAogICAgICAgICAgImRlZmF1bHQiIDogIjEwbSIKICAgICAgICB9LAogICAgICAgICJkZWJ1ZyIgOiB7CiAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICAgIm9yaWdpbnMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGlucHV0IGZpbGUgbmFtZXMgZm9yIHdoaWNoIHRvIGxvZyBpbmZvcm1hdGlvblxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGlucHV0IGZpbGUgbmFtZXMgKGUuZy4sIG15LnNjYWxhLCBmb28uamF2YSkgdG8gbG9nIGluZm9ybWF0aW9uIHJlbGF0aW5nIHRvIHdoaWNoIHN5bWJvbHMgd2VyZSBjYXB0dXJlZC9za2lwcGVkLiBTcGVjaWZ5ICcqJyBmb3IgYWxsIGZpbGVzLiIsCiAgICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAic3ltYm9scyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2Ygbm9kZSB0eXBlcyB3aXRoaW4gYSBzY2FubmVyIEFTVCB0cmVlIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb25cblxuTGlzdCBvZiBub2RlcyB3aXRoaW4gYW4gaW5wdXQgQVNUIHRyZWUsIHN1Y2ggYXMgY2xhc3MgYW5kIG1ldGhvZCBuYW1lcyhlLmcuLCAnTXlDbGFzcycsICdmb28nKSBmb3Igd2hpY2ggdG8gbG9nIGluZm9ybWF0aW9uIHJlbGF0aW5nIHRvIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZXkgd2VyZSBjYXB0dXJlZC9za2lwcGVkIGFzIHN5bWJvbHMuICBTcGVjaWZ5ICcqJyBmb3IgYWxsIG5vZGVzLiIsCiAgICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibG9nZ2VyTmFtZSIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEZWJ1ZyBsb2dnZXIgbmFtZVxuXG5TcGVjaWZpZXMgdGhlIGxvZzRqIGxvZ2dlciBmb3IgbG9nZ2luZyB2YWx1ZXMgZm9yIHN5bWJvbHMvZmlsZXMgbWF0Y2hpbmcgJ2RlYnVnT3JpZ2lucycgYW5kICdkZWJ1Z1N5bWJvbHMnLiAoRGVmYXVsdDogW2NvbnNvbGVPdXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb2ctMTB4L2NvbmZpZy9ibG9iL21haW4vbG9nNGoyLnlhbWwjTDY2KSkiLAogICAgICAgICAgICAgICJkZWZhdWx0IiA6ICJbY29uc29sZU91dF0oaHR0cHM6Ly9naXRodWIuY29tL2xvZy0xMHgvY29uZmlnL2Jsb2IvbWFpbi9sb2c0ajIueWFtbCNMNjYpIgogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgInByaW50T3V0cHV0IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQ29udHJvbHMgd2hldGhlciB0byBlbWl0IG91dHB1dCBzY2FuIG9wZXJhdGlvbnMgcHJvZ3Jlc3MgdG8gdGhlIGNvbnNvbGVcblxuQ29udHJvbHMgd2hldGhlciBpbmZvcm1hdGlvbiByZWxhdGluZyB0byBzeW1ib2wgdW5pdHMgc2Nhbm5pbmcgaXMgZW1pdHRlZCB0byB0aGUgc3Rkb3V0IHN0cmVhbS4gVGhpcyB2YWx1ZSBzaG91bGQgYmUgc2V0IHRvIHRydWUgd2hlbiB0aGUgY3VycmVudCAxMHggcHJvY2VzcyBpcyAgc3Bhd25lZCBieSBhIHBhcmVudCAxMHggJ2NvbXBpbGUnIHBpcGVsaW5lIHRvIHJlcG9ydCBpdHMgcHJvZ3Jlc3MuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgfSwKICAgICJ1bml0c1RvU2NhblBlckJhdGNoIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJudW1iZXIiLAogICAgICAgICJzdHJpbmciCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIG51bWJlciBvZiBpbnB1dCBmaWxlcyB0byBzY2FuIHBlciBzdWItcHJvY2Vzcy5cblxuU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc291cmNlL2JpbmFyeSBpbnB1dCBmaWxlcyB0byBzY2FuIGJ5IGEgc2luZ2xlICdjb21waWxlJyBzdWItcHJvY2Vzcy4gU2V0IHRvIDAgdG8gdW5saW1pdGVkLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiA0MCkiLAogICAgICAiZGVmYXVsdCIgOiA0MAogICAgfSwKICAgICJ0b2tlbkRlbGltcyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRva2VuIGRlbGltaXRlcnNcblxuRGVmaW5lcyB3aGljaCBjaGFyYWN0ZXJzIGJyZWFrIGEgc3RyaW5nIG9mIGV2ZW50IGNoYXJhY3RlcnMgaW50byB0b2tlbnMgdG8gY2xhc3NpZnkgYXMgc3ltYm9scyBvciB2YXJpYWJsZXMuIChEZWZhdWx0OiA8PnwuIF1bOi0rLyo9XFxcXCx7fV8oKTsnXFxcIiRcXHRcXG5AKSIsCiAgICAgICJkZWZhdWx0IiA6ICI8PnwuIF1bOi0rLyo9XFxcXCx7fV8oKTsnXFxcIiRcXHRcXG5AIgogICAgfSwKICAgICJmaWxlRXh0U3RyaW5nRm9ybWF0cyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYXJyYXkiLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU3RyaW5nIGZvcm1hdCBzcGVjaWZpZXIgY2hhcmFjdGVyc1xuXG5Db250cm9scyB3aGljaCBjaGFyYWN0ZXJzIGlkZW50aWZ5IHRoZSBzdGFydCBvZiBhIFtmb3JtYXQgc3BlY2lmaWVyXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QcmludGYjRm9ybWF0X3NwZWNpZmllcikgZm9yIGVhY2ggcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgZXh0ZW5zaW9uIGluIHRoZSBmb3JtIG9mIDxleHQ+Ojxmb3JtYXRQcmVmaXg+IChlLmcuLCBgLmphdmE6JWApLiAgSXQgaXMgYSBzdGFuZGFyZCBwcm9ncmFtbWluZyBwcmFjdGljZSB0byB1c2Ugc3RyaW5nIGZvcm1hdHMgdG8gbG9nIG1lc3NhZ2VzIGluIHRoZSBmb3JtIG9mOiAgYGBgIGphdmEgbG9nLmVycm9yKFwiY291bGQgbm90IGNvbm5lY3QgdG8ge30gd2l0aCBzdGF0dXMge31cIiwgaG9zdCwgc3RhdHVzKTsgYGBgICBXaGVuIGFuIFRlblhUZW1wbGF0ZSB0b2tlbml6ZXIgcHJvY2Vzc2luZyBhbiBldmVudCBpZGVudGlmaWVzIGEgZm9ybWF0IHByZWZpeCAoZS5nLiwgYCVgKSBpdCBza2lwcyBpdCBhbmQgYXBwZW5kcyBzdWJzZXF1ZW50IHN5bWJvbCB0b2tlbnMgKGUuZy4sIGB3aXRoIHN0YXR1c2ApIHRvIHRoZSBzeW1ib2wgc2VxdWVuY2UgcHJlY2VkaW5nIHRoZW0gKGUuZy4sIGBjb3VsZCBub3QgY29ubmVjdCB0b2ApLiIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfQogICAgfSwKICAgICJtYXhTeW1ib2wiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgInVuaXRTZWN0aW9uU2l6ZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIG51bWJlciBvZiBzeW1ib2wgdG9rZW5zIHRvIHN0b3JlIGluIGEgc2luZ2xlIHN5bWJvbCB1bml0IGZpbGVcblxuQ29udHJvbHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHN5bWJvbCB0b2tlbnMgdG8gc3RvcmUgaW4gYSBzeW1ib2wgdW5pdCBiZWZvcmUgc3BsaXR0aW5nIGl0LiBUaGlzIG9wdGlvbiBzdXBwb3J0cyBsYXJnZSBzb3VyY2UgY29kZSAvYmluYXJ5IGlucHV0IGZpbGVzIHRoYXQgbWF5IGhhdmUgdGhvdXNhbmRzIG9mIHRleHQgc3ltYm9scyB0byBhdm9pZCAgY3JlYXRpbmcgc2l6ZWFibGUgaW5kaXZpZHVhbCBzeW1ib2wgdW5pdCBmaWxlcy4gICAgICAgICBTZXQgdG8gbnVsbCB0byBpZ25vcmUuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDUwMCkiLAogICAgICAgICAgImRlZmF1bHQiIDogNTAwCiAgICAgICAgfSwKICAgICAgICAidW5pdHNQZXJUb2tlbiIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOdW1iZXIgb2Ygc3ltYm9sIHVuaXRzIHRvIHJldHJpZXZlIHdoZW4gc2VhcmNoaW5nIGZvciB0aGUgb3JpZ2luIG9mIGFuIFRlblhUZW1wbGF0ZSBzeW1ib2wgc2VxdWVuY2VcblxuQ29udHJvbHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHN5bWJvbCB1bml0cyB0byBsb2FkIGZyb20gdGhlIHBpcGVsaW5lJ3Mgc3ltYm9sIGxpYnJhcnkgd2hlbiBzZWFyY2hpbmcgZm9yIHRoZSBvcmlnaW4gb2YgYSBzcGVjaWZpYyBbVGVuWFRlbXBsYXRlXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90ZW1wbGF0ZS8pIHN5bWJvbC4gICBUaGUgW3N5bWJvbFNlcXVlbmNlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWE9iamVjdCtzeW1ib2xTZXF1ZW5jZSkgZnVuY3Rpb24gcXVlcmllcyB0aGUgc291cmNlIGNvZGUvYmluYXJ5IG9yaWdpbiBvZiBzeW1ib2wgc2VxdWVuY2VzIGluIGEgdGFyZ2V0IFRlblhUZW1wbGF0ZSB0byBpZGVudGlmeSB0aGUgbG9naWNhbCBbbWVzc2FnZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9tZXNzYWdlLykgcG9ydGlvbiBvZiBhIHRhcmdldCBhcHAvaW5mcmEgZXZlbnRzIHZzLiB2YXJpYWJsZSBhbmQgY29udGV4dCBpbmZvcm1hdGlvbiAoZS5nLiwgdXNlciwgaG9zdCwgc2V2ZXJpdHkpLiAgIFNpbmNlIGEgW3N5bWJvbF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3N0cnVjdHVyZS8jc3ltYm9scykgdmFsdWUgbWF5IGFwcGVhciBpbiBodW5kcmVkcyBvciBtb3JlIGxvY2F0aW9ucyBhY3Jvc3MgYSBjb2RlIGJhc2UsICBsaW1pdGluZyB0aGUgbnVtYmVyIG9mIHN5bWJvbCB1bml0cyB0byBsb2FkIGlzIG5lY2Vzc2FyeSB0byByZWR1Y2UgbWVtb3J5IGNvbnN1bXB0aW9uLiAgIEEgc2Vjb25kIGNvbnNpZGVyYXRpb24gaXMgcGxhY2luZyBhbiB1cHBlciBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHVuaXRzIHRvIGxvYWQgZnJvbSB0aGUgc3ltYm9sIGxpYnJhcnksICB3aGljaCBpcyB0aGUgbW9yZSBmcmVxdWVudCBhIHN5bWJvbCBpcywgdGhlIGxvd2VyIHRoZSBwcm9iYWJpbGl0eSBvZiBzZWxlY3RpbmcgdGhlIGNvcnJlY3Qgb3JpZ2luLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAxMjgpIiwKICAgICAgICAgICJkZWZhdWx0IiA6IDEyOAogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgInJlcXVpcmVkIiA6IFsKICAgICJpbnB1dFBhdGhzIgogIF0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=</template>

    ```yaml
    # 🔟❎ 'compile' symbol scanner config
    
    # Configure input and output options for the compile pipeline.
    # To learn more see https://doc.log10x.com/compile/scan
    
    tenx: compile
    
    # ========================== Configure I/O Paths ==============================
    
    # 'inputPaths' lists folders on disk containing source code and binary files to scan.
    #  To learn more see https://doc.log10x.com/compile/scan/#inputpaths
    inputPaths:
      - $=path("data/compile/sources", "")   # Default to none ("") if source folder not found
      # - <path-to-input-files>              # uncomment to specify additional input paths
    
    # 'outputSymbolFolder' specifies the folder for output symbol unit files.
    #  To learn more see https://doc.log10x.com/compile/scan/#outputsymbolfolder
    outputSymbolFolder: $=TenXEnv.get("TENX_OUTPUT_SYMBOL_FOLDER", path("data/shared/symbols", "<tenx.io.tmpdir>")) # Default to 10x temp dir
    ```

??? tenx-link "Link"

    <a id="link"></a>
    ### Link {.hidden-heading}

    Configure  the [Symbol library linker](/compile/link "Link symbol unit files to an output symbol library file") to link symbol unit files to an output symbol library file.

    Below is the default configuration from: [link/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/link/config.yaml "link/config.yaml"){target="\_blank"}.  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/link/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml6-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml6-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml6-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit Symbol library linker Config Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml6-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/config/compile/link/config.yaml"
                                data-copy-nix="/etc/log10x/config/compile/link/config.yaml"
                                data-copy-win="C:\log10x\configs/compile/link/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIG/compile/link/config.yaml">$TENX_CONFIG/compile/link/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelines/compile/link/config.yaml">./pipelines/compile/link/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    
    <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAib3V0cHV0U3ltYm9sTGlicmFyeUZpbGUiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMb2NhdGlvbiBvZiBvdXRwdXQgc3ltYm9sIGxpYnJhcnkgZmlsZVxuXG5TcGVjaWZpZXMgYW4gb3V0cHV0IHN5bWJvbCBsaWJyYXJ5IGZpbGUgbWVyZ2luZyB0aGUgc3ltYm9sIHVuaXQgZmlsZXMgcHJvZHVjZWQgZm9yIFtpbnB1dFBhdGhzXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvc2Nhbi8jaW5wdXRwYXRocykuIFRoZSBzeW1ib2wgbGlicmFyeSBmaWxlIHByb3ZpZGVzIGEgc2luZ2xlIGFydGlmYWN0IHRvIHNldCBhcyB0aGUgW3N5bWJvbFBhdGhzXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9zeW1ib2wvI3N5bWJvbHBhdGhzKSBhdCBydW4gdGltZS4iCiAgICB9LAogICAgIm1heFN5bWJvbFVuaXRGaWxlU2l6ZSIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heCBmaWxlIHNpemUgZm9yICdvdXRwdXRTeW1ib2xMaWJyYXJ5RmlsZScgYmVmb3JlIGl0IGlzIHNwbGl0IGludG8gY2h1bmtzXG5cblNldHMgdGhlIG1heGltdW0gZmlsZSBzaXplIChlLmcuLCA0ME1CKSBmb3IgW291dHB1dFN5bWJvbExpYnJhcnlGaWxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvbGluay8jb3V0cHV0c3ltYm9sbGlicmFyeWZpbGUpIGJlZm9yZSBzcGxpdHRpbmcgaW50byBjaHVua3MsIGVhY2ggd2VpZ2hpbmcgbm8gbW9yZSB0aGFuIHRoaXMgdmFsdWUuIFRoaXMgb3B0aW9uIGVuYWJsZXMgbGFyZ2UgIGFydGlmYWN0cyB0byByZW1haW4gW0dpdEh1YiBjb21taXR0YWJsZV0oaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vcmVwb3NpdG9yaWVzL3dvcmtpbmctd2l0aC1maWxlcy9tYW5hZ2luZy1sYXJnZS1maWxlcy9hYm91dC1sYXJnZS1maWxlcy1vbi1naXRodWIpLiAoRGVmYXVsdDogNDBNQikiLAogICAgICAiZGVmYXVsdCIgOiAiNDBNQiIKICAgIH0sCiAgICAic3ltYm9sIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJ0eXBlcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUb2tlbiB0eXBlcyByZWFkIGZyb20gaW5wdXQgc291cmNlL2JpbmFyeSBmaWxlcyB3cml0dGVuIHRvIG91dHB1dFxuXG5GaWx0ZXIgc3ltYm9sIHZhbHVlcyB0byB3cml0ZSB0byBbb3V0cHV0U3ltYm9sTGlicmFyeUZpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9saW5rLyNvdXRwdXRzeW1ib2xsaWJyYXJ5ZmlsZSkgYmFzZWQgb24gdGhlaXIgW2NvbnRleHRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zeW1ib2wvI2NvbnRleHRzKS4gVGhpcyBvcHRpb24gcmVkdWNlcyB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0IHN5bWJvbCBsaWJyYXJ5IGZpbGUgYnkgb21pdHRpbmcgc3ltYm9sIHR5cGVzIG5vdCByZXF1aXJlZCBhdCBydW4gdGltZS4gIEZvciBwb3NzaWJsZSB2YWx1ZXMsIHNlZTogW2NvbnRleHRzXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90cmFuc2Zvcm0vc3ltYm9sLyNjb250ZXh0cykuIChEZWZhdWx0OiBbXCJwYWNrYWdlXCIsXCJjbGFzc1wiLFwiZW51bVwiLFwibG9nXCIsXCJ0ZXh0XCIsXCJleGVjXCJdKSIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgICJkZWZhdWx0IiA6IFsKICAgICAgICAgICAgInBhY2thZ2UiLAogICAgICAgICAgICAiY2xhc3MiLAogICAgICAgICAgICAiZW51bSIsCiAgICAgICAgICAgICJsb2ciLAogICAgICAgICAgICAidGV4dCIsCiAgICAgICAgICAgICJleGVjIgogICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgImZpbGVOYW1lRmlsdGVycyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJSZWdleCBwYXR0ZXJucyB0byBleGNsdWRlIHN5bWJvbCBmaWxlcyBmcm9tIG91dHB1dCBzeW1ib2wgbGlicmFyeVxuXG5GaWx0ZXJzIHN5bWJvbCBmaWxlcyB0byBleGNsdWRlIGZyb20gW291dHB1dFN5bWJvbExpYnJhcnlGaWxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvbGluay8jb3V0cHV0c3ltYm9sbGlicmFyeWZpbGUpIHVzaW5nIHJlZ2V4IHBhdHRlcm5zLiBUaGlzIG9wdGlvbiBpcyB0eXBpY2FsbHkgdXNlZCB0byBleGNsdWRlIHRlc3QgZmlsZXMgZnJvbSB0aGUgc3ltYm9sIGxpYnJhcnksIHJlZHVjaW5nIG91dHB1dCBzaXplIGFuZCBmb2N1c2luZyBvbiBwcm9kdWN0aW9uIGNvZGUgc3ltYm9scy4gIENvbW1vbiBwYXR0ZXJucyBmb3IgZXhjbHVkaW5nIHRlc3QgZmlsZXMgYWNyb3NzIGxhbmd1YWdlczogLSBKYXZhOiBgXi4qKFRlc3R8VGVzdHN8VGVzdENhc2UpXFwuamF2YSRgIChKVW5pdC9UZXN0TkcgdGVzdCBmaWxlcykgLSBKYXZhU2NyaXB0L1R5cGVTY3JpcHQ6IGBeLipcXC4odGVzdHxzcGVjKVxcLihqc3xqc3h8dHN8dHN4fG1qc3xjanMpJGAgKEplc3QvTW9jaGEvVml0ZXN0IHRlc3QgZmlsZXMpIC0gUHl0aG9uOiBgXnRlc3RfLitcXC5weSRgIG9yIGBeLitfdGVzdFxcLnB5JGAgKHB5dGVzdC91bml0dGVzdCB0ZXN0IGZpbGVzKSAtIFNjYWxhOiBgXi4qKFNwZWN8VGVzdClcXC5zY2FsYSRgIChTY2FsYVRlc3QvU3BlY3MyIHRlc3QgZmlsZXMpIC0gQyM6IGBeLiooVGVzdHxUZXN0cylcXC5jcyRgICh4VW5pdC9OVW5pdC9NU1Rlc3QgdGVzdCBmaWxlcykgLSBHbzogYF4uKl90ZXN0XFwuZ28kYCAoYnVpbHQtaW4gdGVzdGluZyBmcmFtZXdvcmsgdGVzdCBmaWxlcykgLSBDKys6IGBeLiooX3Rlc3R8VGVzdClzP1xcLihjcHB8Y2N8Y3h4fGhwcHxofGh4eCkkYCAoR29vZ2xlVGVzdC9DYXRjaDIvQm9vc3QuVGVzdCB0ZXN0IGZpbGVzKSIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImZvbGRlckZpbHRlcnMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUGF0dGVybnMgdG8gZXhjbHVkZSBzeW1ib2wgZmlsZXMgYnkgZm9sZGVyIGZyb20gb3V0cHV0IHN5bWJvbCBsaWJyYXJ5XG5cbkZpbHRlcnMgc3ltYm9sIGZpbGVzIHRvIGV4Y2x1ZGUgZnJvbSBbb3V0cHV0U3ltYm9sTGlicmFyeUZpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9saW5rLyNvdXRwdXRzeW1ib2xsaWJyYXJ5ZmlsZSkgYmFzZWQgb24gZm9sZGVyIGxvY2F0aW9uLiBUaGlzIG9wdGlvbiBjb21wbGVtZW50cyBbc3ltYm9sRmlsZU5hbWVGaWx0ZXJzXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvbGluay8jc3ltYm9sZmlsZW5hbWVmaWx0ZXJzKSBieSBleGNsdWRpbmcgZmlsZXMgYmFzZWQgb24gdGhlaXIgY29udGFpbmluZyBmb2xkZXIuICAqKlBsYWluIGZvbGRlciBuYW1lKiogKGUuZy4sIGB0ZXN0YCkgLSBtYXRjaGVzIHdoZW4gdGhlIGZpbGUncyBkaXJlY3QgcGFyZW50IGZvbGRlciBoYXMgdGhpcyBuYW1lLiBPbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLCB1bmRlcnNjb3JlcywgYW5kIGh5cGhlbnMgYXJlIHRyZWF0ZWQgYXMgcGxhaW4gbmFtZXMuICAqKlJlZ2V4IHBhdHRlcm4qKiAoYW55dGhpbmcgZWxzZSkgLSBtYXRjaGVkIGFnYWluc3QgdGhlIGZ1bGwgZmlsZSBwYXRoIChjYXNlLWluc2Vuc2l0aXZlKS4gVXNlIGBbL1xcXFxdYCBmb3IgY3Jvc3MtcGxhdGZvcm0gcGF0aCBzZXBhcmF0b3JzIChVbml4IGAvYCBhbmQgV2luZG93cyBgXFxgKS4gICoqRXhhbXBsZXM6KiogLSBgdGVzdGAgLSBGaWxlcyBkaXJlY3RseSBpbnNpZGUgYSBgdGVzdGAgZm9sZGVyIC0gYF9fdGVzdHNfX2AgLSBGaWxlcyBkaXJlY3RseSBpbnNpZGUgYF9fdGVzdHNfX2AgKEplc3QgY29udmVudGlvbikgLSBgWy9cXFxcXXZlbmRvclsvXFxcXF1gIC0gRmlsZXMgYW55d2hlcmUgdW5kZXIgYSBgdmVuZG9yYCBmb2xkZXIgKEdvIHZlbmRvcmVkIGRlcHMpIC0gYFsvXFxcXF1ub2RlX21vZHVsZXNbL1xcXFxdYCAtIEZpbGVzIGFueXdoZXJlIHVuZGVyIGBub2RlX21vZHVsZXNgIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

    ```yaml
    # 🔟❎ 'compile' merge configuration
    
    # Combine symbol units into a single output symbol library file.
    # To learn more see https://doc.log10x.com/compile/link/
    
    # Set the 10x pipeline to 'compile'
    tenx: compile
    
    # ============================ Symbol Library Output ==========================
    
    # 'outputSymbolLibraryFile' specifies location of output symbol library file which
    #  links the contents of 'outputSymbolFolder' to a single .json artifact and a
    #  compressed .zip version for use at run time by 10x 'run' pipelines.
    #  If a local output dir exists write to it, otherwise use the pipeline's temp folder.
    #  To learn more see https://doc.log10x.com/compile/link
    
    outputSymbolLibraryFile: $=TenXEnv.get("TENX_OUTPUT_SYMBOL_LIBRARY_FILE", path("data/shared/symbols", "<tenx.io.tmpdir>") + "/" + TenXEnv.get("runtimeName", "symbols") + ".10x.tar")
    
    
    # ============================ Symbol Filter options ==========================
    
    # The options below control which symbol files and values are merged into 'outputSymbolLibraryFile'
    
    symbol:
    
      # 'fileNameFilters', exclude test files from symbol library
      fileNameFilters:
    
        # ── Java ───────────────────────────────────────
        - ^.*(Test|Tests|TestCase|TestSuite)\.java$     # *Test.java, *TestCase.java, *TestSuite.java
        - ^Test.*\.java$                                # TestFoo.java (legacy)
    
        # ── JavaScript / TypeScript ────────────────────
        - ^.*\.(test|spec)\.(js|jsx|ts|tsx|mjs|cjs)$    # *.test.js, *.spec.tsx
    
        # ── Python ─────────────────────────────────────
        - ^test_.+\.py$                                 # test_utils.py
        - ^.+_test\.py$                                 # utils_test.py
        - ^test(s|case|cases|suite|suites)?\.py$        # test.py, tests.py, testcase.py, testcases.py, testsuite.py
    
        # ── Scala ──────────────────────────────────────
        - ^.*(Spec|Test|Suite)\.scala$                  # *Spec.scala, *Test.scala, *Suite.scala
    
        # ── C# ─────────────────────────────────────────
        - ^.*(Test|Tests|TestCase|TestSuite)\.cs$       # *Test.cs, *TestCase.cs, *TestSuite.cs
    
        # ── Go ─────────────────────────────────────────
        - ^.*_test\.go$                                 # *_test.go
        # Note: testdata.go is usually a data file, not test code → not filtered here
    
        # ── C++ ───────────────────────────────────────
        - ^.*(_test|Test|Tests)s?\.(cpp|cc|cxx|hpp|h|hxx)$  # *_test.cpp, *Test.hpp, *Tests.cpp
    
      # 'folderFilters', patterns to exclude files by folder
      # Plain name (e.g., "test") → matches direct parent folder only
      # Regex (e.g., "[/\\]vendor[/\\]") → matches anywhere in full path
      folderFilters:
        - test           # direct parent is "test"
        - tests          # direct parent is "tests"
        - __tests__      # Jest convention
        - spec           # RSpec/Jasmine convention
        - specs          # RSpec/Jasmine convention
        - unit           # unit test folder
        - integration    # integration test folder
        - e2e            # e2e tests (Cypress, Playwright)
        - end-to-end     # alternate e2e naming
        - acceptance     # acceptance test folder
        - testdata       # Go test data folder
        - fixtures       # test fixtures folder
        - mocks          # mock implementations folder
        - "[/\\\\]vendor[/\\\\][a-z]+\\.[a-z]"   # Go vendored deps (vendor/domain.tld pattern)
    
      # 'types' controls the types of symbols written into 'outputSymbolLibraryFile'
      #  for reflective use at runtime.
      #  Narrowing the this list reduces the size of the output 10x symbols file. Possible values:
      types:
        - class   # source code class/interface name (e.g. 'AcmeLogic')
        - enum    # source code enum/literal name (e.g. 'severity: {error,warn,debug}')
        - log     # source code print format passed to a logging method/stream (e.g. 'err("could not connect to %s",..');
        - exec    # string value extracted from a binary executable input file (e.g. via 'strings' nix command)
        # - method # code method/function name (e.g. 'foo')
        # - const  # string constant assigned into a variable or method arg (e.g. 'greeting = "hello world"')
        # - text    # string value, usually read from a config file (e.g. JSON/XML/YAML field name)
        # - package # source code package/namespace/module name (e.g. 'com.acme.core')
    ```

??? tenx-push "Push"

    <a id="push"></a>
    ### Push {.hidden-heading}

    Configure [GitHub push committers](/compile/push "Push output symbol unit files to GitHub") to push output symbol unit files to GitHub.

    Below is the default configuration from: [push/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/push/config.yaml "push/config.yaml"){target="\_blank"} (<span class="tenx-tooltip" data-tooltip="The config file below contains required fields to activate this module, marked with &#10071;">** Required Fields*</span>).  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/push/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml7-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml7-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml7-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit GitHub push committer Config Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml7-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/config/compile/push/config.yaml"
                                data-copy-nix="/etc/log10x/config/compile/push/config.yaml"
                                data-copy-win="C:\log10x\configs/compile/push/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIG/compile/push/config.yaml">$TENX_CONFIG/compile/push/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelines/compile/push/config.yaml">./pipelines/compile/push/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    
    <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiZ2l0aHViUHVzaCIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJyZXBvIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGFyZ2V0IEdpdEh1YiByZXBvXG5cbklkZW50aWZpZXMgYSBHaXRIdWIgcmVwb3NpdG9yeSB0byBwdXNoIGZpbGVzIHRvIGluY2x1ZGluZyB0aGUgdXNlcm5hbWUgb2YgdGhlIG93bmVyIChlLmcuLCAnc29tZS11c2VyL3JlcG8tbmFtZScpIgogICAgICAgICAgfSwKICAgICAgICAgICJ0b2tlbiIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkdpdEh1YiBBUEkgYWNjZXNzIHRva2VuXG5cbkRlZmluZXMgYW4gYWNjZXNzIHRva2VuIGZvciBhY2Nlc3NpbmcgR2l0aHViIHJlcG9zLiBUbyBsZWFybiBtb3JlIHNlZSBbR2l0SHViIHRva2Vuc10oaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYXV0aGVudGljYXRpb24va2VlcGluZy15b3VyLWFjY291bnQtYW5kLWRhdGEtc2VjdXJlL21hbmFnaW5nLXlvdXItcGVyc29uYWwtYWNjZXNzLXRva2VucykuIgogICAgICAgICAgfSwKICAgICAgICAgICJicmFuY2giIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUYXJnZXQgYnJhbmNoIHRvIHB1c2ggdG9cblxuU3BlY2lmaWVzIHRoZSBicmFuY2ggdG8gdXNlIHdoZW4gcHVzaGluZyB0byB0aGlzIHJlcG8uIElmIG9taXR0ZWQsIHVzZSB0aGUgcmVwb3NpdG9yeSdzIGRlZmF1bHQgYnJhbmNoLiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZm9sZGVyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRm9sZGVyIHdpdGhpbiB0aGUgdGFyZ2V0IEdpdEh1YiByZXBvIGluIHdoaWNoIHRvIHB1c2ggZmlsZXNcblxuSWRlbnRpZmllcyBhIGZvbGRlciB3aXRoaW4gdGhlIHRhcmdldCBHaXRIdWIgcmVwbyB0byBwdXNoIG91dHB1dCBzeW1ib2wgZmlsZXMgdG8iCiAgICAgICAgICB9LAogICAgICAgICAgImZpbHRlciIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkEgcmVnZXggcGF0dGVybiBhIGZpbGUgb24gZGlzayBtdXN0IG1hdGNoIHRvIHB1c2hcblxuU3BlY2lmaWVzIGEgYSByZWdleCBwYXR0ZXJuIGEgZmlsZSBvbiBkaXNrIG11c3QgbWF0Y2ggdG8gYmUgcHVzaGVkIHRvIHRoZSB0YXJnZXQgcmVwby4gVGhpcyBvcHRpb24gcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yICdyb3V0aW5nJyBvdXRwdXQgc3ltYm9sIGZpbGVzIHRvIGRpZmZlcmVudCByZXBvc2l0b3JpZXMgYmFzZWQgb24gdGhlaXIgZmlsZSBleHRlbnNpb24gKGUuZy4sIGBcXC5qc1xcLmpzb24kYCkgb3IgbG9jYXRpb24gd2l0aGluIHRoZSBvdXRwdXQgZm9sZGVyIHRyZWUgKGUuZy4sIGAoXnwvfFxcXFwpYWNtZSgvfFxcXFx8JGApIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJyZXBvIgogICAgICAgIF0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=</template>

    ```yaml
    # 🔟❎ 'compile' GitHub configuration
    
    # Push output symbol unit files for reuse by subsequent compile cycles.
    # To learn more see https://doc.log10x.com/compile/push/
    
    # Set the 10x pipeline to 'compile'
    tenx: compile
    
    # =============================== GitHub Options ==============================
    
    githubPush:
    
        # 'token' specifies the access token for pushing files to the target repo, read from env or set inline.
        #  To learn more see: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
      - token: $=TenXEnv.get("GH_TOKEN") # (❗ EnvVar REQUIRED)
    
        # 'repo' specifies the repo name to pull in Github
        #  including the username of the owner (e.g., apache/spark)
        repo: null # (❗ REQUIRED)
    
        # 'branch' specifies the branch to use when pushing into this repo.
        #  If not specified, push to the default repo branch
        branch: null
    
        # 'folder' specifies a folder within the target repo to push files, if not specified push to root
        folder: null
    
        # 'filter' specifies a a regex pattern a file on disk must match to be pushed to the target repo.
        filter: null
    ```

## :material-tune: Advanced Config Files

To configure advanced options (optional) for the Compiler app, [:material-cog: Edit](https://doc.log10x.com/config/app/#module-config "Learn how to edit app and module configurations") these files:
??? tenx-bootstrap "Bootstrap"

    <a id="bootstrap"></a>
    ### Bootstrap {.hidden-heading}

    Configure  the [Pipeline Bootstrapper](/run/bootstrap "Authenticate the log10x account and launch a target pipeline") to authenticate the log10x account and launch a target pipeline.

    Below is the default configuration from: [bootstrap/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/bootstrap/config.yaml "bootstrap/config.yaml"){target="\_blank"}.  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/bootstrap/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml8-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml8-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml8-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit Pipeline Bootstrapper Config Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml8-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/config/compile/bootstrap/config.yaml"
                                data-copy-nix="/etc/log10x/config/compile/bootstrap/config.yaml"
                                data-copy-win="C:\log10x\configs/compile/bootstrap/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIG/compile/bootstrap/config.yaml">$TENX_CONFIG/compile/bootstrap/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelines/compile/bootstrap/config.yaml">./pipelines/compile/bootstrap/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    
    <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBwaXBlbGluZSB0byBleGVjdXRlXG5cblRhcmdldCBbcGlwZWxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vZW5naW5lL3BpcGVsaW5lLykgdG8gZXhlY3V0ZS4gRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgdGhlIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLykgcGlwZWxpbmUgYW5kIGEgW1lBTUxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL3lhbWwvKSBjb25maWcgZmlsZSBjb250YWluaW5nIGxhdW5jaCBhcmd1bWVudHMsIHVzZTogIGBgYCBjb25zb2xlICQgdGVueCBydW4gQH4vbXkueWFtbCBgYGAgVGhlIFlBTUwgZmlsZSBtYXkgc3BlY2lmeSB0aGUgcGlwZWxpbmUgbmFtZSB2aWEgYSAndGVueCcgZW50cnksIGFsbG93aW5nIHRoZSAncGlwZWxpbmUnIGFyZ3VtZW50IHRvIGJlIG9taXR0ZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgRm9yIGV4YW1wbGUgKG15LnlhbWwpOiAgYGBgIHlhbWwgdGVueDogcnVuICMgc2V0IHRoZSBwaXBlbGluZSB0byAncnVuJyBhcGlLZXk6IDxteS1rZXk+IC4uLiBgYGAgIEFsbG93cyBmb3IgbGF1bmNoaW5nIHRoZSBydW4gcGlwZWxpbmUgdmlhOiBgYGAgY29uc29sZSAkIHRlbnggQH4vbXkueWFtbCBgYGAiCiAgICB9LAogICAgImFwaUtleSIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBhcGkga2V5XG5cblNwZWNpZmllcyBhbiBhcGkga2V5IHVzZWQgZm9yIGF1dGhlbnRpY2F0aW5nIGFnYWluc3QgdGhlIDEweCBzZXJ2aWNlLiBUaGlzIHZhbHVlIGlzIGFjY2Vzc2libGUgZnJvbSB5b3VyIFthY2NvdW50IHNldHRpbmdzXShodHRwczovL2NvbnNvbGUubG9nMTB4LmNvbSkuIgogICAgfSwKICAgICJtZXRyaWNFbmRwb2ludCIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBzZXJ2aWNlIFByb21ldGhldXMgbWV0cmljcyBlbmRwb2ludFxuXG5TcGVjaWZpZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIFByb21ldGhldXMgcmVtb3RlIHdyaXRlIGVuZHBvaW50IHRvIHdyaXRlIHBpcGVsaW5lIHVzYWdlIGFuZCBoZWFsdGggbWV0cmljcy4gICEhISBub3RlIFwiXCIgICAgICBUaGlzIGFyZ3VtZW50IGlzIG9ubHkgc2V0dGFibGUgaW4gdGhlIDEweCAnb24tcHJlbWlzZXMnIGJ1aWxkLiAoRGVmYXVsdDogaHR0cHM6Ly9wcm9tZXRoZXVzLmxvZzEweC5jb20vYXBpL3YxL3dyaXRlKSIsCiAgICAgICJkZWZhdWx0IiA6ICJodHRwczovL3Byb21ldGhldXMubG9nMTB4LmNvbS9hcGkvdjEvd3JpdGUiCiAgICB9LAogICAgInJ1bnRpbWUiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgIm5hbWUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWUgdG8gcmVwb3J0IHRvIHRoZSAxMHggc2VydmljZSBlbmRwb2ludCBmb3IgdGhpcyBydW50aW1lIGluc3RhbmNlXG5cblNwZWNpZmllcyBhIGxvZ2ljYWwgbmFtZSB1c2VkIGFzIGEgW3RhZyB2YWx1ZV0oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjNC1tZXRlcnMpIGZvciBwaXBlbGluZSBtZXRyaWNzLiBUaGlzIHZhbHVlIGlkZW50aWZpZXMgaW5zdGFuY2VzIG9mIHRoZSAxMHggcnVuL2NvbXBpbGUgcGlwZWxpbmVzIHdoZW4gcmVwb3J0aW5nIHRvIHRoZSAxMHggc2VydmljZS4gRm9yIGV4YW1wbGUsIGZvciBhIDEweCBbUmVndWxhdG9yXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwcHMvcmVndWxhdG9yLykgd2l0aCBvcHRpbWl6YXRpb24gZW5hYmxlZCBmb3IgRmx1ZW50IEJpdCBmb3J3YXJkZXJzIGNvbGxlY3RpbmcgZXZlbnRzIGZyb20gYSBgYnJva2VyYCB1c2VyLWFwcCwgdGhpcyB2YWx1ZSBjYW4gYmUgc2V0IHRvOiBgcmVndWxhdGVfZmx1ZW50Yml0X2Jyb2tlcmAiCiAgICAgICAgfSwKICAgICAgICAiYXR0cmlidXRlcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGF0dHJpYnV0ZXMgdG8gYWRkIHRvIGFsbCBtZXRyaWNzIHJlcG9ydGluZ1xuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGtleS12YWx1ZSBwYWlycyBpbiB0aGUgZm9ybWF0IGBrZXk6dmFsdWVgIHRvIGJlIGFkZGVkIGFzIHRhZ3MgdG8gcGlwZWxpbmUgbWV0cmljcyByZXBvcnRlZCB0byB0aGUgMTB4IHNlcnZpY2UuIFRoZXNlIHRhZ3MgZW5hYmxlIGZpbmVyLWdyYWluZWQgZmlsdGVyaW5nIGFuZCBhbmFseXNpcyBpbiBtb25pdG9yaW5nIHN5c3RlbXMgbGlrZSBQcm9tZXRoZXVzLiBNdWx0aXBsZSBhdHRyaWJ1dGVzIGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZyB1c2luZyBhIHNlbWljb2xvbiAoYDtgKSwgZS5nLiwgYGtleTE6dmFsMTtrZXkyOnZhbDJgLiAgSWYgYSBrZXkgZG9lcyBub3Qgc3RhcnQgd2l0aCB0ZW54XywgdGhlIHByZWZpeCB0ZW54XyBpcyBhdXRvbWF0aWNhbGx5IHByZXBlbmRlZCB0byBlbnN1cmUgY29uc2lzdGVuY3kgaW4gdGFnIG5hbWluZyBjb252ZW50aW9ucy4gRm9yIGV4YW1wbGUsIGEgcHJvdmlkZWQgYXR0cmlidXRlIGFwcDpteS1hcHAgd2lsbCBiZSByZXBvcnRlZCBhcyB0ZW54X2FwcDpteS1hcHAgIGBgYCB5YW1sICAgcnVudGltZUF0dHJpYnV0ZXM6ICAgICAtIGFwcDpyZXBvcnRlciAgICAgLSBlbnY6ZWRnZSBgYGAiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiaW5jbHVkZVBhdGhzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQaXBlbGluZSBpbmNsdWRlIGZvbGRlcnNcblxuU3BlY2lmaWVzIGZvbGRlcnMgb24gZGlzayBmb3IgcmVzb2xpbmcgcmVsYXRpdmUgcmVmZXJlbmNlcyB3aXRoaW4gW2luY2x1ZGUgZGlyZWN0aXZlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcveWFtbC8jaW5jbHVkZS1kaXJlY3RpdmVzKS4gKERlZmF1bHQ6IFtcIndvcmtpbmcgZGlyZWN0b3J5IG9mIGN1cnJlbnQgcHJvY2Vzc1wiXSkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgIH0sCiAgICAgICJkZWZhdWx0IiA6IFsKICAgICAgICAid29ya2luZyBkaXJlY3Rvcnkgb2YgY3VycmVudCBwcm9jZXNzIgogICAgICBdCiAgICB9LAogICAgImphckZpbGVzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJKYXIgZmlsZXMgdG8gbG9hZFxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIC5qYXIgZmlsZXMgdG8gbG9hZCBpbnRvIHRoZSBob3N0IEpWTSBmb3IgdXNlIGJ5IFtjb21waWxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9jb21waWxlLyksIFtpbnB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvaW5wdXQvKSBhbmQgW291dHB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvb3V0cHV0LykgQVBJIGV4dGVuc2lvbnMuICAhISEgbm90ZSBcIlwiICAgICAgVGhpcyBhcmd1bWVudCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBbZWRnZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9lbmdpbmUvZmxhdm9ycy8jZWRnZSkgcnVudGltZSBmbGF2b3IuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgInF1aWV0IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRGlzYWJsZSBwcmludGluZyBiaW5hcnkgdmVyc2lvbiBpbmZvcm1hdGlvbiB0byB0aGUgY29uc29sZVxuXG5EaXNhYmxlIHByaW50aW5nIGJ1aWxkL3ZlcnNpb24gaW5mb3JtYXRpb24gdG8gdGhlIGNvbnNvbGUgdXBvbiBsYXVuY2ggKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IGZhbHNlKSIsCiAgICAgICJkZWZhdWx0IiA6IGZhbHNlCiAgICB9LAogICAgImRpc2FibGVkQXJncyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYXJyYXkiLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGltaXQgYXJndW1lbnQgdmFsdWVzIHRoYXQgY2FuIGJlIHNldCBieSB1c2Vyc1xuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGxhdW5jaCBhcmd1bWVudHMgdGhhdCBhcmUgZGlzYWxsb3dlZCBmcm9tIGVpdGhlciBjb21tYW5kIGxpbmUgb3IgdXNlciBjb25maWcgZmlsZXMuIFRoaXMgYXJndW1lbnQgcHJvdmlkZXMgYSBtZXRob2Qgb2YgbGltaXRpbmcgdGhlIHRhcmdldCBbcGlwZWxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vc2hhcmVkL2Jvb3RzdHJhcC8jcGlwZWxpbmUpLCBbc291cmNlXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbmZpZy8jc291cmNlcykgYW5kIGFuZCBbY29tbWFuZCBsaW5lXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbmZpZy9jbGkvKSBzZXR0YWJsZSBieSB0aGUgdXNlci4gIFRoaXMgbWVjaGFuaXNtIGVuYWJsZXMgcGlwZWxpbmUgbGF1bmNoZXJzIHN1Y2ggYXMgdGhlIFtRdWFya3VzIGxhdW5jaGVyXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9sYXVuY2gvI3F1YXJrdXMpIHRvIGxpbWl0IHVzZXIgaW5wdXQgcmVjZWl2ZWQgdmlhIFJFU1QgcmVxdWVzdHMgdG8gYSB0YXJnZXQgc3Vic2V0IG9mICdzYWZlJyBhcmd1bWVudHMuICBGb3IgZXhhbXBsZSwgYWRkaW5nIFtwcm9jT3V0Q29tbWFuZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vb3V0cHV0L2V2ZW50L3Byb2Nlc3MvI3Byb2NvdXRjb21tYW5kKSB0byB0aGlzIGxpc3QgZW5zdXJlcyB0aGF0IG5vIGV4dGVybmFsIHByb2Nlc3Mgb3V0cHV0cyBjYW4gYmUgbGF1bmNoZWQgYnkgdGhlIHJ1bnRpbWUuICBBbiBvcHRpb25hbCByZWdleCBwYXR0ZXJuIGNhbiBsaW1pdCBhcmd1bWVudHMgdG8gYSBjZXJ0YWluIHN1YnNldCBvZiB2YWx1ZXMgaW4gdGhlIGZvcm0gb2Y6IGA8YXJnLW5hbWU+WzpwYXR0ZXJuXWAgKGUuZy4sIHNwZWNpZmljIHByb2Nlc3MgbmFtZXMpLiBNdWx0aXBsZSBwYXR0ZXJucyBjYW4gYmUgc3BlY2lmaWVkIHBlciBhcmd1bWVudC4gIE1hdGNoaW5nIHRoZSBgc291cmNlYCBhcmd1bWVudCBkZXRlcm1pbmVzIHdoaWNoIHNvdXJjZSBsb2NhdGlvbnMgdG8gaW5zcGVjdCAoZS5nLiwgZm9sZGVycywgZmlsZXMsIEdpdEh1YiByZXBvcykuIEZvciBleGFtcGxlLCBhbiBhZG1pbiBtYXkgcGxhY2UgLnlhbWwgY29uZmlnIGZpbGVzIGNvbnRhaW5pbmcgcHJlc2V0IEZsdWVudCBCaXQgb3V0cHV0cyBpbiBgL2V0Yy9sb2cxMHgvYCwgZXhjbHVkaW5nIHRoZWlyIGVuY2xvc2VkIGFyZ3VtZW50cyBmcm9tIGxpbWl0cyBzZXQgYnkgdGhpcyBsaXN0LCB3aGlsZSBkaXNhbGxvd2luZyB1c2VycyB0byBkaXJlY3RseSBzZXQgdGhlbSB2aWEgdGhlIGNvbW1hbmQtbGluZSBvciBieSBzb3VyY2luZyB0aGVtIGZyb20gdGhlaXIgbG9jYWwvR2l0SHViIGNvbmZpZyBmaWxlcyAoc2VlIGV4YW1wbGUgYmVsb3cpLiAgVG8gbGltaXQ6ICBUaGUgdGFyZ2V0IHBpcGVsaW5lIChlLmcuLCBbcnVuXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi8pLCBbY29tcGlsZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlLykpOiAgYGBgIHlhbWwgICBkaXNhYmxlZEFyZ3M6ICAgLSBcInBpcGVsaW5lOl5ydW5cIiAjIGRpc2FsbG93IGNvbXBpbGUgYGBgICBUYXJnZXQgYXJndW1lbnRzIChlLmcuLCBbcHJvY2VzcyBvdXRwdXRzXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9vdXRwdXQvZXZlbnQvcHJvY2Vzcy8pKTogIGBgYCB5YW1sICAgLSBcInByb2NPdXRDb21tYW5kOl5mbHVlbnQtYml0JFwiICAgIyBsaW1pdCB0byBGbHVlbnQgQml0IG9ubHkgICAjIC0gcHJvY091dEFyZ3M6IDxzcGVjaWZ5LXJlZ2V4PiAgIyBmdXJ0aGVyIGxpbWl0IGFyZ3MgZm9yIEZsdWVudCBCaXQgYGBgICBDb250cm9sIHdoaWNoIGFyZ3VtZW50IFtzb3VyY2VzXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbmZpZy8jc291cmNlcykgdG8gaW5zcGVjdDogIGBgYCB5YW1sICAgLSBcInNvdXJjZTpeZ2l0aHViLipcIiAgICAgICAgICAgICAjIGluc3BlY3Qgb2YgYWxsIGFyZ3VtZW50cyBzb3VyY2VkIGZyb20gR2l0SHViIGFnYWluc3QgdGhpcyBsaXN0ICAgLSBcInNvdXJjZTpeKD8hL2V0Yy9sb2cxMHgvKS4qXCIgICAjIGluc3BlY3Qgb2YgYWxsIGFyZ3VtZW50cyBzb3VyY2VkIGZyb20gY29uZmlnIGZpbGVzIE5PVCBjb250YWluZWQgaW46IC9ldGMvbG9nMTB4LyBgYGAiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgIH0KICAgIH0sCiAgICAiZGVidWdFbnZWYXJzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBkZWJ1Z1xuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGVudiB2YXIgbmFtZXMgZm9yIHdoaWNoIHRvIGxvZyBpbmZvcm1hdGlvbiByZWxhdGluZyB0byBob3cgdGhleSBhcmUgcmVzb2x2ZWQuIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNhbGw6IGBMMUVudi5nZXQoXCJteVZhclwiLCBcIm15RGVmYXVsdFwiKWAgY2FuIGJlIHJlc29sdmVkIGZyb20gYSBudW1iZXIgb2YgW3NvdXJjZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YRW52LmdldCkgcmFuZ2luZyBmcm9tIGxhdW5jaCBhcmd1bWVudHMsIHRvIE9TL0pWTSBwcm9wZXJ0aWVzIGFuZCBhIGRlZmF1bHQgdmFsdWUgKGUuZy4sIG15RGVmYXVsdCkuICBTZXR0aW5nIHRoaXMgdmFsdWUgdG8gYG15VmFyYCB3aWxsIGxvZyBJTkZPIGxldmVsIGluZm9ybWF0aW9uIGRldGFpbGluZyBob3cgdGhlIHZhbHVlIG9mIHRoZSBgbXlWYXJgIHdhcyByZXNvbHZlZC4iLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgIH0KICAgIH0KICB9LAogICJyZXF1aXJlZCIgOiBbCiAgICAidGVueCIsCiAgICAiYXBpS2V5IgogIF0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=</template>

    ```yaml
    # 🔟❎ compile bootstrap configuration
    
    # This config file specifies bootstrap options for the compile pipeline.
    # To learn more see https://doc.log10x.com/compile/bootstrap
    
    # To learn more see https://doc.log10x.com/config/
    
    tenx: compile
    
    # =============================== Launch Settings ==============================
    
    # Inline license JWT. For production, prefer `licenseFile: /path/to/license.jwt`.
    licenseKey: $=TenXEnv.get("TENX_LICENSE_KEY")
    
    # 'includePaths' specifies folders on disk for resolving relative config file/folder references in addition to the working folder
    includePaths: []
    
    # 'quiet' disables printing version information to the console.
    # quiet: true
    
    # 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
    jarFiles: []
    
    # 'metricEndpoint' specifies the Prometheus endpoint to report usage/health metrics (enterprise version only).
    
    # specifies a list of launch arguments that are disallowed from either command line or user config files.
    disabledArgs: []
    ```

??? tenx-githubsync "Github Sync"

    <a id="githubSync"></a>
    ### Github Sync {.hidden-heading}



    Below is the default configuration from: [gitops/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/gitops/config.yaml "gitops/config.yaml"){target="\_blank"} (<span class="tenx-tooltip" data-tooltip="The config file below contains required fields to activate this module, marked with &#10071;">** Required Fields*</span>).  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/gitops/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml9-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml9-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml9-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit config.yaml Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml9-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/config/gitops/config.yaml"
                                data-copy-nix="/etc/log10x/config/gitops/config.yaml"
                                data-copy-win="C:\log10x\configs/gitops/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIG/gitops/config.yaml">$TENX_CONFIG/gitops/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelines/gitops/config.yaml">./pipelines/gitops/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    
    <template class="tenx-config-schema" data-encoding="base64">ewogICIkc2NoZW1hIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyIsCiAgInRpdGxlIjogIkdpdE9wcyBDb25maWd1cmF0aW9uIiwKICAiZGVzY3JpcHRpb24iOiAiQ29uZmlndXJhdGlvbiBmb3IgcHVsbGluZyBzeW1ib2wsIGNvbmZpZyBhbmQgbG9va3VwIGZpbGVzIGZyb20gYSByZW1vdGUgR2l0SHViIHJlcG8gdG8gZW5hYmxlIGNlbnRyYWxpemVkIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCIsCiAgInR5cGUiOiAib2JqZWN0IiwKICAicHJvcGVydGllcyI6IHsKICAgICJ0ZW54IjogewogICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHRhcmdldCAxMHggcGlwZWxpbmUgdG8gcnVuIChlLmcuLCBydW4sIGNvbXBpbGUpIgogICAgfSwKICAgICJpbmNsdWRlIjogewogICAgICAidHlwZSI6ICJhcnJheSIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJMaXN0IG9mIGluY2x1ZGUgc291cmNlcyIsCiAgICAgICJpdGVtcyI6IHsKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgImNvbnN0IjogImdpdGh1YiIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgc291cmNlIHR5cGUgZm9yIHRoaXMgaW5jbHVkZSIKICAgICAgICAgIH0sCiAgICAgICAgICAib3B0aW9ucyI6IHsKICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9QaXBlbGluZUxhdW5jaEdpdEh1Yk9wdGlvbnMiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZWQiOiBbInNvdXJjZSIsICJvcHRpb25zIl0KICAgICAgfQogICAgfQogIH0sCiAgImRlZmluaXRpb25zIjogewogICAgIlBpcGVsaW5lTGF1bmNoR2l0SHViT3B0aW9ucyI6IHsKICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgImRlc2NyaXB0aW9uIjogIkdpdEh1YiBwdWxsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyIsCiAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICJlbmFibGVkIjogewogICAgICAgICAgInR5cGUiOiAiYm9vbGVhbiIsCiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29udHJvbHMgd2hldGhlciB0byBlbmFibGUgdGhpcyBwdWxsIGNvbmZpZyIsCiAgICAgICAgICAiZGVmYXVsdCI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAidG9rZW4iOiB7CiAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFjY2VzcyB0b2tlbiBmb3IgYWNjZXNzaW5nIHRoZSBHaXRIdWIgcmVwby4gU2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2F1dGhlbnRpY2F0aW9uL2tlZXBpbmcteW91ci1hY2NvdW50LWFuZC1kYXRhLXNlY3VyZS9tYW5hZ2luZy15b3VyLXBlcnNvbmFsLWFjY2Vzcy10b2tlbnMiCiAgICAgICAgfSwKICAgICAgICAicmVwbyI6IHsKICAgICAgICAgICJ0eXBlIjogWyJzdHJpbmciLCAibnVsbCJdLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBHaXRIdWIgdXNlci9yZXBvIGZyb20gd2hpY2ggdG8gcHVsbCAoZS5nLiwgJ293bmVyL3JlcG8nKSIKICAgICAgICB9LAogICAgICAgICJicmFuY2giOiB7CiAgICAgICAgICAidHlwZSI6IFsic3RyaW5nIiwgIm51bGwiXSwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJCcmFuY2ggb24gcmVwby4gSWYgbnVsbCwgdXNlcyB0aGUgcmVwbydzIGRlZmF1bHQgYnJhbmNoIiwKICAgICAgICAgICJkZWZhdWx0IjogbnVsbAogICAgICAgIH0sCiAgICAgICAgInBhdGhzIjogewogICAgICAgICAgInR5cGUiOiAiYXJyYXkiLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIkdsb2IgcGF0dGVybnMgd2l0aGluICdyZXBvJyB0byBwdWxsIGFuZCBleHRyYWN0IHRvIGEgdGVtcCBmb2xkZXIiLAogICAgICAgICAgIml0ZW1zIjogewogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgImV4YW1wbGVzIjogWwogICAgICAgICAgICBbImNvbmZpZy8qLnlhbWwiLCAic3ltYm9scy8qLjEweC50YXIiLCAibG9va3Vwcy8qLmNzdiIsICJzY3JpcHRzLyouanMiXQogICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgInN5bmNJbnRlcnZhbCI6IHsKICAgICAgICAgICJ0eXBlIjogWyJzdHJpbmciLCAibnVsbCJdLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIkludGVydmFsIHRvIGNoZWNrIHRoZSByZW1vdGUgYnJhbmNoIGZvciB1cGRhdGVzIChlLmcuLCAnNW1pbicpLiBTZXQgdG8gbnVsbCB0byBkaXNhYmxlIHN5bmMiLAogICAgICAgICAgImRlZmF1bHQiOiBudWxsLAogICAgICAgICAgImV4YW1wbGVzIjogWyI1bWluIiwgIjFoIiwgIjMwcyJdCiAgICAgICAgfQogICAgICB9LAogICAgICAicmVxdWlyZWQiOiBbImVuYWJsZWQiLCAicmVwbyJdLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiOiBmYWxzZQogICAgfQogIH0KfQo=</template>

    ```yaml
    # 🔟❎ GitOps configuration
    
    # This config file pulls symbol, config and lookup files from a remote repo to
    # enable centralized configuration management via GitHub.
    
    # To learn more see https://doc.log10x.com/config/github
    
    # The target 10x pipeline to run (e.g., run, compile) is specified in the config files pulled from the repo
    tenx: any
    
    include:
    
      - source: github
    
        options:
          # 'enabled' controls whether to enable this pull config
          enabled: false # (❗ REQUIRED)
    
          # 'token' specifies an access token for accessing the Github repo.
          #  To learn more see https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
          token: $=TenXEnv.get("GH_TOKEN")
    
          # 'repo' specifies the GitHub user/repo from which to pull
          repo: null # (❗ REQUIRED)
    
          # 'branch' on 'repo' (if null, uses default repo default branch)
          branch: main
    
           # 'paths' specifies Glob patterns within 'repo' to pull and extract to a temp folder.
          paths:
            - test
            # - config/*.yaml      # https://doc.log10x.com/config/yaml
            # - symbols/*.10x.tar  # https://doc.log10x.com/run/symbol
            # - lookups/*.csv      # https://doc.log10x.com/api/js/#TenXLookup
            # - scripts/*.js       # https://doc.log10x.com/api/js
    
          # 'syncInterval' specifies an interval by which check to check the remote branch for updates (null to disable)
          #  This interval works in conjunction with: https://doc.log10x.com/run/reload
          syncInterval: 5min
    ```

??? tenx-scan "Scan"

    <a id="scan"></a>
    ### Scan {.hidden-heading}

    Configure  the [Input Scanner](/compile/scan "Capture symbol values from source code/binary files and link to an output symbol library") to capture symbol values from source code/binary files and link to an output symbol library.

    === ":material-code-tags: Advanced"

  
        #### advanced {.hidden-heading}
        Configure  the [Input Scanner](/compile/scan "Capture symbol values from source code/binary files and link to an output symbol library") to capture symbol values from source code/binary files and link to an output symbol library.  
  
        Below is the default configuration from: [advanced/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/advanced/config.yaml "advanced/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/advanced/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml10-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml10-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml10-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Input Scanner Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml10-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/scanners/advanced/config.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/scanners/advanced/config.yaml"
                                    data-copy-win="C:\log10x\configs/compile/scanners/advanced/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/scanners/advanced/config.yaml">$TENX_CONFIG/compile/scanners/advanced/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/scanners/advanced/config.yaml">./pipelines/compile/scanners/advanced/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiaW5wdXRQYXRocyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYXJyYXkiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJbnB1dCBmb2xkZXJzIHRvIHNjYW5cblxuUHJvdmlkZXMgYSBsaXN0IG9mIGZvbGRlcnMgdGhhdCBhcmUgdHJhdmVyc2VkIGluIHNlYXJjaCBvZiBzb3VyY2UgY29kZSAoZS5nLiAuanMsIC5jcHApLCBiaW5hcnkgKGUuZy4sIC5zbywgLmphciwgLnppcCkgYW5kIHRleHQgKGUuZy4sIC5qc29uLCAueG1sKSBmaWxlcyB0byBjYXB0dXJlIHN5bWJvbCB2YWx1ZXMgZnJvbSBhbmQgb3V0cHV0IHRvIHN5bWJvbCB1bml0IGZpbGVzLiBJbnB1dCBmb2xkZXJzIG1heSBjb250YWluIGZpbGVzIGFuZCBmb2xkZXJzIHB1bGxlZCBmcm9tIFtHaXRIdWJdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9wdWxsL2dpdGh1Yi8pIG9yICBhbmQgW0FydGlmYWN0b3J5XShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvYXJ0aWZhY3RvcnkpLiIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfQogICAgfSwKICAgICJvdXRwdXRTeW1ib2xGb2xkZXIiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMb2NhdGlvbiBvZiBvdXRwdXQgc3ltYm9sIGZvbGRlclxuXG5TcGVjaWZpZXMgdGhlIHJvb3QgZm9sZGVyIGluIHdoaWNoIHRvIHdyaXRlIG91dHB1dCBzeW1ib2wgdW5pdCBmaWxlcy4gVGhpcyBjb21waWxlciBbc2NhbiBwaGFzZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3NjYW4vKSBtaXJyb3JzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIFtpbnB1dFBhdGhzXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvc2Nhbi8jaW5wdXRwYXRocykgYXJndW1lbnQsIHBsYWNpbmcgZWFjaCBvdXRwdXQgc3ltYm9sIHVuaXQgaW4gdGhlIHNhbWUgcmVsYXRpdmUgcGF0aCB1bmRlciBbb3V0cHV0U3ltYm9sRm9sZGVyXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvc2Nhbi8jb3V0cHV0c3ltYm9sZm9sZGVyKSBhcyBpdHMgc291cmNlL2JpbmFyeSBpbnB1dCBmaWxlIHVuZGVyIGl0cyByZXNwZWN0aXZlIGBpbnB1dFBhdGhzYCBmb2xkZXIgZW50cnkuICBGb3IgZXhhbXBsZSwgaWYgW2lucHV0UGF0aHNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9zY2FuLyNpbnB1dHBhdGhzKSBpcyBgfi9kZXZgIGFuZCBpdCBjb250YWlucyB0aGUgZmlsZSBgfi9kZXYvYXBwL2Zvby5qc2AsIGFuZCB0aGlzIHZhbHVlIGlzIGB+L3N5bWJvbHNgLCB0aGUgcmVzcGVjdGl2ZSBvdXRwdXQgc3ltYm9sIHVuaXQgZmlsZSBpczogYH4vc3ltYm9scy9hcHAvZm9vLmpzLjEweC5qc29uYC4iCiAgICB9LAogICAgInNjYW4iIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZvcmNlIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJDb250cm9sIHdoZXRoZXIgdG8gc2NhbiBpbnB1dCBmaWxlcyBldmVuIGlmIGEgbWF0Y2hpbmcgZXhpc3Rpbmcgc3ltYm9sIGZpbGUgZXhpc3RzXG5cbkNvbnRyb2xzIHdoZXRoZXIgdG8gcmV1c2UgbWF0Y2hpbmcgc3ltYm9sIGZpbGVzIHdpdGhpbiBbaW5wdXRQYXRoc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3NjYW4vI2lucHV0cGF0aHMpLiBUaGlzIG9wdGlvbiBpcyBwcmltYXJpbHkgdXNlZnVsIHdoZW4gZGVidWdnaW5nIGEgbmV3IHNjYW5uZXIgbW9kdWxlIGNvbmZpZ3VyYXRpb24gKGUuZy4sIEFOVExSIGdyYW1tYXIpICBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBbc2Nhbm5lciBkZWJ1Z2dpbmddKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9zY2FuKSBvcHRpb25zLiAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogZmFsc2UpIiwKICAgICAgICAgICJkZWZhdWx0IiA6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaW5Qcm9jZXNzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJDb250cm9scyB3aGV0aGVyIHRvIHNjYW4gc291cmNlL2JpbmFyeSBpbnB1dCBmaWxlcyB1c2luZyBzdWItcHJvY2VzcyhlcylcblxuVGhlIHNjYW5uZXIgY2FuIGxhdW5jaCBbc3VicHJvY2Vzc2VzXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvc2Nhbi8jc3VicHJvY2Vzc18xKSB0byBjYXB0dXJlIFtzeW1ib2xdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zdHJ1Y3R1cmUvI3N5bWJvbHMpIGluZm9ybWF0aW9uIGZyb20gc3BlY2lmaWMgdGFyZ2V0IHNvdXJjZS9iaW5hcnkgaW5wdXQgZmlsZXMuICAgR2VuZXJhdGluZyBpbnB1dCBmaWxlIFtBU1RzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BYnN0cmFjdF9zeW50YXhfdHJlZSkgdG8gc2NhbiBmb3Igc3ltYm9scyB2YWx1ZXMgZm9yIGNvbXBsZXggc3ludGF4ZXMgY2FuIGJlIGEgbGVuZ3RoeSwgcmVzb3VyY2UtY29uc3VtaW5nIG9wZXJhdGlvbiwgd2hpY2ggaW4gdGhlIGNhc2Ugb2YgIFtBTlRMUiBzeW50YXhlc10oaHR0cHM6Ly90b21hc3NldHRpLm1lL2ltcHJvdmluZy10aGUtcGVyZm9ybWFuY2Utb2YtYW4tYW50bHItcGFyc2VyLykgbWF5IHRpbWVvdXQgb3IgcnVuIG91dCBvZiBtZW1vcnkuICAgICBQcm9jZXNzIFtpc29sYXRpb25dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb2Nlc3NfaXNvbGF0aW9uKSBhbGxvd3MgZm9yIHRlcm1pbmF0aW5nIHNjYW4gb3BlcmF0aW9ucyB0aGF0IHRpbWVvdXQgZm9yIHNwZWNpZmljIGZpbGVzLCB3aGlsZSBhbGxvd2luZyBvdGhlcnMgdG8gcHJvY2VlZC4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IGZhbHNlKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInRocmVhZFBvb2xTaXplIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRvIHVzZSBjb25jdXJyZW50bHkgcHJvY2VzcyBpbnB1dCBzb3VyY2UgY29kZSAvYmluYXJ5IGZpbGVzXG5cbkNvbnRyb2xzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRvIHByb2Nlc3MgaW5wdXQgc291cmNlIGNvZGUvYmluYXJ5IGZpbGVzIGNvbmN1cnJlbnRseTogLSBJZiB0aGUgdmFsdWUgaXMgYmV0d2VlbiAwIGFuZCAxLCB0aGUgbnVtYmVyIGNhbGN1bGF0ZXMgYSBwZXJjZW50YWdlIG9mIGF2YWlsYWJsZSBjb3JlcyAoZS5nLiwgMC41ID0gdXNlIHVwIHRvIDUwJSBvZiBhdmFpbGFibGUgY29yZXMpLiAgIC0gSWYgdGhlIHZhbHVlIGlzID49IDEsIHRoZSB2YWx1ZSBzZXRzIGEgZml4ZWQgbnVtYmVyIG9mIHRocmVhZHMgKGUuZy4sIDEwID0gMTAgdGhyZWFkcykuICAgLSBJZiB0aGUgdmFsdWUgaXMgMSwgYWxsb2NhdGUgYSBzaW5nbGUgdGhyZWFkIHRvIHByb2Nlc3MgaW5wdXQgZmlsZXMuIChEZWZhdWx0OiAwLjUpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICIwLjUiCiAgICAgICAgfSwKICAgICAgICAidW5pdFRpbWVvdXQiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRpbWVvdXQgaW50ZXJ2YWwgZm9yIHNjYW5uaW5nIGEgc291cmNlIGNvZGUgL2JpbmFyeSBpbnB1dCBmaWxlXG5cblNldHMgdGhlIHRpbWVvdXQgaW50ZXJ2YWwgd2hlbiBzY2FubmluZyBhIHNvdXJjZSBjb2RlIC9iaW5hcnkgaW5wdXQgZmlsZSBiZWZvcmUgZHJvcHBpbmcgaXQuIFNldCB0byBudWxsIHRvIGlnbm9yZS4gKERlZmF1bHQ6IDIwcykiLAogICAgICAgICAgImRlZmF1bHQiIDogIjIwcyIKICAgICAgICB9LAogICAgICAgICJvcGVyYXRpb25UaW1lb3V0IiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaW1lb3V0IGludGVydmFsIGZvciB0aGUgZW50aXJlIHNjYW5uaW5nIG9wZXJhdGlvblxuXG5TZXRzIHRoZSB0aW1lb3V0IGludGVydmFsIGZvciB0aGUgZW50aXJlIHNjYW5uaW5nIG9wZXJhdGlvbiBiZWZvcmUgdGVybWluYXRpbmcgaXQuIFNldCB0byBudWxsIHRvIGlnbm9yZS4gKERlZmF1bHQ6IDEwbSkiLAogICAgICAgICAgImRlZmF1bHQiIDogIjEwbSIKICAgICAgICB9LAogICAgICAgICJkZWJ1ZyIgOiB7CiAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICAgIm9yaWdpbnMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGlucHV0IGZpbGUgbmFtZXMgZm9yIHdoaWNoIHRvIGxvZyBpbmZvcm1hdGlvblxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGlucHV0IGZpbGUgbmFtZXMgKGUuZy4sIG15LnNjYWxhLCBmb28uamF2YSkgdG8gbG9nIGluZm9ybWF0aW9uIHJlbGF0aW5nIHRvIHdoaWNoIHN5bWJvbHMgd2VyZSBjYXB0dXJlZC9za2lwcGVkLiBTcGVjaWZ5ICcqJyBmb3IgYWxsIGZpbGVzLiIsCiAgICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAic3ltYm9scyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2Ygbm9kZSB0eXBlcyB3aXRoaW4gYSBzY2FubmVyIEFTVCB0cmVlIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb25cblxuTGlzdCBvZiBub2RlcyB3aXRoaW4gYW4gaW5wdXQgQVNUIHRyZWUsIHN1Y2ggYXMgY2xhc3MgYW5kIG1ldGhvZCBuYW1lcyhlLmcuLCAnTXlDbGFzcycsICdmb28nKSBmb3Igd2hpY2ggdG8gbG9nIGluZm9ybWF0aW9uIHJlbGF0aW5nIHRvIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZXkgd2VyZSBjYXB0dXJlZC9za2lwcGVkIGFzIHN5bWJvbHMuICBTcGVjaWZ5ICcqJyBmb3IgYWxsIG5vZGVzLiIsCiAgICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibG9nZ2VyTmFtZSIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEZWJ1ZyBsb2dnZXIgbmFtZVxuXG5TcGVjaWZpZXMgdGhlIGxvZzRqIGxvZ2dlciBmb3IgbG9nZ2luZyB2YWx1ZXMgZm9yIHN5bWJvbHMvZmlsZXMgbWF0Y2hpbmcgJ2RlYnVnT3JpZ2lucycgYW5kICdkZWJ1Z1N5bWJvbHMnLiAoRGVmYXVsdDogW2NvbnNvbGVPdXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb2ctMTB4L2NvbmZpZy9ibG9iL21haW4vbG9nNGoyLnlhbWwjTDY2KSkiLAogICAgICAgICAgICAgICJkZWZhdWx0IiA6ICJbY29uc29sZU91dF0oaHR0cHM6Ly9naXRodWIuY29tL2xvZy0xMHgvY29uZmlnL2Jsb2IvbWFpbi9sb2c0ajIueWFtbCNMNjYpIgogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgInByaW50T3V0cHV0IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQ29udHJvbHMgd2hldGhlciB0byBlbWl0IG91dHB1dCBzY2FuIG9wZXJhdGlvbnMgcHJvZ3Jlc3MgdG8gdGhlIGNvbnNvbGVcblxuQ29udHJvbHMgd2hldGhlciBpbmZvcm1hdGlvbiByZWxhdGluZyB0byBzeW1ib2wgdW5pdHMgc2Nhbm5pbmcgaXMgZW1pdHRlZCB0byB0aGUgc3Rkb3V0IHN0cmVhbS4gVGhpcyB2YWx1ZSBzaG91bGQgYmUgc2V0IHRvIHRydWUgd2hlbiB0aGUgY3VycmVudCAxMHggcHJvY2VzcyBpcyAgc3Bhd25lZCBieSBhIHBhcmVudCAxMHggJ2NvbXBpbGUnIHBpcGVsaW5lIHRvIHJlcG9ydCBpdHMgcHJvZ3Jlc3MuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgfSwKICAgICJ1bml0c1RvU2NhblBlckJhdGNoIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJudW1iZXIiLAogICAgICAgICJzdHJpbmciCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIG51bWJlciBvZiBpbnB1dCBmaWxlcyB0byBzY2FuIHBlciBzdWItcHJvY2Vzcy5cblxuU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc291cmNlL2JpbmFyeSBpbnB1dCBmaWxlcyB0byBzY2FuIGJ5IGEgc2luZ2xlICdjb21waWxlJyBzdWItcHJvY2Vzcy4gU2V0IHRvIDAgdG8gdW5saW1pdGVkLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiA0MCkiLAogICAgICAiZGVmYXVsdCIgOiA0MAogICAgfSwKICAgICJ0b2tlbkRlbGltcyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRva2VuIGRlbGltaXRlcnNcblxuRGVmaW5lcyB3aGljaCBjaGFyYWN0ZXJzIGJyZWFrIGEgc3RyaW5nIG9mIGV2ZW50IGNoYXJhY3RlcnMgaW50byB0b2tlbnMgdG8gY2xhc3NpZnkgYXMgc3ltYm9scyBvciB2YXJpYWJsZXMuIChEZWZhdWx0OiA8PnwuIF1bOi0rLyo9XFxcXCx7fV8oKTsnXFxcIiRcXHRcXG5AKSIsCiAgICAgICJkZWZhdWx0IiA6ICI8PnwuIF1bOi0rLyo9XFxcXCx7fV8oKTsnXFxcIiRcXHRcXG5AIgogICAgfSwKICAgICJmaWxlRXh0U3RyaW5nRm9ybWF0cyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYXJyYXkiLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU3RyaW5nIGZvcm1hdCBzcGVjaWZpZXIgY2hhcmFjdGVyc1xuXG5Db250cm9scyB3aGljaCBjaGFyYWN0ZXJzIGlkZW50aWZ5IHRoZSBzdGFydCBvZiBhIFtmb3JtYXQgc3BlY2lmaWVyXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QcmludGYjRm9ybWF0X3NwZWNpZmllcikgZm9yIGVhY2ggcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgZXh0ZW5zaW9uIGluIHRoZSBmb3JtIG9mIDxleHQ+Ojxmb3JtYXRQcmVmaXg+IChlLmcuLCBgLmphdmE6JWApLiAgSXQgaXMgYSBzdGFuZGFyZCBwcm9ncmFtbWluZyBwcmFjdGljZSB0byB1c2Ugc3RyaW5nIGZvcm1hdHMgdG8gbG9nIG1lc3NhZ2VzIGluIHRoZSBmb3JtIG9mOiAgYGBgIGphdmEgbG9nLmVycm9yKFwiY291bGQgbm90IGNvbm5lY3QgdG8ge30gd2l0aCBzdGF0dXMge31cIiwgaG9zdCwgc3RhdHVzKTsgYGBgICBXaGVuIGFuIFRlblhUZW1wbGF0ZSB0b2tlbml6ZXIgcHJvY2Vzc2luZyBhbiBldmVudCBpZGVudGlmaWVzIGEgZm9ybWF0IHByZWZpeCAoZS5nLiwgYCVgKSBpdCBza2lwcyBpdCBhbmQgYXBwZW5kcyBzdWJzZXF1ZW50IHN5bWJvbCB0b2tlbnMgKGUuZy4sIGB3aXRoIHN0YXR1c2ApIHRvIHRoZSBzeW1ib2wgc2VxdWVuY2UgcHJlY2VkaW5nIHRoZW0gKGUuZy4sIGBjb3VsZCBub3QgY29ubmVjdCB0b2ApLiIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfQogICAgfSwKICAgICJtYXhTeW1ib2wiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgInVuaXRTZWN0aW9uU2l6ZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIG51bWJlciBvZiBzeW1ib2wgdG9rZW5zIHRvIHN0b3JlIGluIGEgc2luZ2xlIHN5bWJvbCB1bml0IGZpbGVcblxuQ29udHJvbHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHN5bWJvbCB0b2tlbnMgdG8gc3RvcmUgaW4gYSBzeW1ib2wgdW5pdCBiZWZvcmUgc3BsaXR0aW5nIGl0LiBUaGlzIG9wdGlvbiBzdXBwb3J0cyBsYXJnZSBzb3VyY2UgY29kZSAvYmluYXJ5IGlucHV0IGZpbGVzIHRoYXQgbWF5IGhhdmUgdGhvdXNhbmRzIG9mIHRleHQgc3ltYm9scyB0byBhdm9pZCAgY3JlYXRpbmcgc2l6ZWFibGUgaW5kaXZpZHVhbCBzeW1ib2wgdW5pdCBmaWxlcy4gICAgICAgICBTZXQgdG8gbnVsbCB0byBpZ25vcmUuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDUwMCkiLAogICAgICAgICAgImRlZmF1bHQiIDogNTAwCiAgICAgICAgfSwKICAgICAgICAidW5pdHNQZXJUb2tlbiIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOdW1iZXIgb2Ygc3ltYm9sIHVuaXRzIHRvIHJldHJpZXZlIHdoZW4gc2VhcmNoaW5nIGZvciB0aGUgb3JpZ2luIG9mIGFuIFRlblhUZW1wbGF0ZSBzeW1ib2wgc2VxdWVuY2VcblxuQ29udHJvbHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHN5bWJvbCB1bml0cyB0byBsb2FkIGZyb20gdGhlIHBpcGVsaW5lJ3Mgc3ltYm9sIGxpYnJhcnkgd2hlbiBzZWFyY2hpbmcgZm9yIHRoZSBvcmlnaW4gb2YgYSBzcGVjaWZpYyBbVGVuWFRlbXBsYXRlXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90ZW1wbGF0ZS8pIHN5bWJvbC4gICBUaGUgW3N5bWJvbFNlcXVlbmNlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWE9iamVjdCtzeW1ib2xTZXF1ZW5jZSkgZnVuY3Rpb24gcXVlcmllcyB0aGUgc291cmNlIGNvZGUvYmluYXJ5IG9yaWdpbiBvZiBzeW1ib2wgc2VxdWVuY2VzIGluIGEgdGFyZ2V0IFRlblhUZW1wbGF0ZSB0byBpZGVudGlmeSB0aGUgbG9naWNhbCBbbWVzc2FnZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9tZXNzYWdlLykgcG9ydGlvbiBvZiBhIHRhcmdldCBhcHAvaW5mcmEgZXZlbnRzIHZzLiB2YXJpYWJsZSBhbmQgY29udGV4dCBpbmZvcm1hdGlvbiAoZS5nLiwgdXNlciwgaG9zdCwgc2V2ZXJpdHkpLiAgIFNpbmNlIGEgW3N5bWJvbF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3N0cnVjdHVyZS8jc3ltYm9scykgdmFsdWUgbWF5IGFwcGVhciBpbiBodW5kcmVkcyBvciBtb3JlIGxvY2F0aW9ucyBhY3Jvc3MgYSBjb2RlIGJhc2UsICBsaW1pdGluZyB0aGUgbnVtYmVyIG9mIHN5bWJvbCB1bml0cyB0byBsb2FkIGlzIG5lY2Vzc2FyeSB0byByZWR1Y2UgbWVtb3J5IGNvbnN1bXB0aW9uLiAgIEEgc2Vjb25kIGNvbnNpZGVyYXRpb24gaXMgcGxhY2luZyBhbiB1cHBlciBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHVuaXRzIHRvIGxvYWQgZnJvbSB0aGUgc3ltYm9sIGxpYnJhcnksICB3aGljaCBpcyB0aGUgbW9yZSBmcmVxdWVudCBhIHN5bWJvbCBpcywgdGhlIGxvd2VyIHRoZSBwcm9iYWJpbGl0eSBvZiBzZWxlY3RpbmcgdGhlIGNvcnJlY3Qgb3JpZ2luLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAxMjgpIiwKICAgICAgICAgICJkZWZhdWx0IiA6IDEyOAogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgInJlcXVpcmVkIiA6IFsKICAgICJpbnB1dFBhdGhzIgogIF0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=</template>

        ```yaml
        # 🔟❎ 'compile' symbol scanner advanced config
        
        # Configure input and output options for the compile pipeline.
        # To learn more see https://doc.log10x.com/compile/scan/
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        inputPaths: []
        
        # ============================ Advanced options ===============================
        
        # ----------------------------- Tokenizer options -----------------------------
        
        # Tokenization options provide control over how the symbol scanners parse source and config file input.
        # To learn more https://doc.log10x.com/compile/scan/#tokenize
        
        # 'tokenDelims' defines which characters break a string of event characters into tokens to 
        #  classify as symbols or variables.
        tokenDelims: "<>|. ][:-+/*=\\,{}_();'\"$\t\n@"
        
        # 'fileExtStringFormats' controls which characters identify the start of a format specifier (https://en.wikipedia.org/wiki/Printf#Format_specifier). 
        fileExtStringFormats: 
          - .java:%
          - .py:{
          - .js:${
          - .php:$
          - .swift:\(
          - .kt:$
          - .rb:#{
          - .ex:#{
          - .c:%
          - .cpp:%
          - .cs:{
          - .go:%
          - .rs:{
          - .ts:${
          - .pl:$
          - .sh:$
          - .r:%
          - .m:%
          - .scala:$
        
        
        maxSymbol:
        
        # 'unitsPerToken' controls the maximum number of symbol units to load from the 
        #  pipeline's symbol library when searching for the origin of a specific TenXTemplate symbol. 
          unitsPerToken: 128
        
        # ----------------------------- Subprocess options ----------------------------
        
        # Subprocess options control whether scanners execute in the current 10x Engine instance
        # or via a sub-process to provide better isolation over parsing of complex source code ASTs. 
        
        # To learn more https://doc.log10x.com/compile/scan/#subprocess_1
        
        # 'unitsToScanPerBatch' sets the maximum number of input files to scan per subprocess instance.
        #  When this threshold is exceeded the current subprocess terminated and a new one is spawned until scan is complete.
        unitsToScanPerBatch: 200
        
        scan:
        
        # ----------------------------- Threading  options ----------------------------
        
          # 'threadPoolSize'controls the maximum number of threads to concurrently
          #  process input source/binary files. If the value is between 0 and 1, the number calculates 
          #  a percentage of available cores (e.g., 0.5 = use up to 50% of available cores).
          #  If the value is >= 1, the value sets a fixed number of threads (e.g., 10 = 10 threads).
          #  If the value is 1, allocate a single thread to process input files.
        
          # To learn more see https://doc.log10x.com/compile/scan/#parallel
        
          threadPoolSize: "0.5"
        
          # 'scanUnitTimeout' sets the timeout interval when scanning a source/binary input
          #  file before dropping it. 
          unitTimeout: 30s
        
          # 'scanOperationTimeout' sets the timeout interval for the entire scanning operation
          #  before terminating it.
          operationTimeout: 10m
        
        # -------------------------------- Debug Option -------------------------------
        
        # The settings below provide control over what information is logged
        # to console/file when scanning input source code/text/binary files for symbol values.
        
        # These options are primarily used when adding support for a new programming language
        # syntax via the 'ANTLR' scanner, text file formats via the Jackson 'text' scanner
        # or an external command using the 'executable' scanner.
        
          debug:
        
          # 'origins' lists names of input source/binary files 
          #  (e.g. .class, .js, .yaml, .exe) for which debug information
          #  is printed to the console via 'consoleOut' log4j logger.
        
          #  Printed output is dependent on the scanner assigned to process the input file  
          #  and usually includes the AST of the input file from which tokens are selected.
        
          #  This information can be used when debugging which symbols are extracted
          #  from an input file in the context of an 'antlr', 'text' or 'executable' scanner. 
          #  Set to '*' to match all input files. 
            origins: [
          #   '*'
            ]
        
          # 'symbols' lists the values of nodes within the AST of a
          #  target input file (e.g. MyClass, MyEnum, myFunc, ..) for which 
          #  debug information is printed to the console via the 'consoleOut' logger.
          #  This includes source context (e.g. class, enum) and path within the AST 
          #  in which the node was detected. Set to '*' to match all AST nodes. 
            symbols: [
             #'*'
            ]
        
          # 'inProcess' controls whether to scan source/binary input files from within the current
          #  10x process or launch a sequential series subprocesses for better isolation
          # inProcess: true  
        
          # 'force' enables scanning of source/binary input files even if a matching
          #  symbol unit was found in 'inputPaths'. This flag is useful when debugging
          #  an Antlr/text/exec scanner using 'debugOrigins' and 'debugSymbols'
          #  to ensure a scan takes place even if a matching symbol unit is found.
          
          # force: false 
        ```

    === ":material-regex: Pattern"

  
        #### pattern {.hidden-heading}
        Configure [Regex pattern scanners](/compile/scanner/pattern "Extract symbol values from a files using regular expressions") to extract symbol values from a files using regular expressions.  
  
        Below is the default configuration from: [pattern/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/pattern/config.yaml "pattern/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/pattern/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml11-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml11-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml11-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Regex pattern scanner Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml11-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/scanners/pattern/config.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/scanners/pattern/config.yaml"
                                    data-copy-win="C:\log10x\configs/compile/scanners/pattern/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/scanners/pattern/config.yaml">$TENX_CONFIG/compile/scanners/pattern/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/scanners/pattern/config.yaml">./pipelines/compile/scanners/pattern/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAicGF0dGVybiIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJmaWxlRmlsdGVyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmlsZSBuYW1lIGZpbHRlciByZWd4IHBhdHRlcm5cblxuRGVmaW5lcyBhIHJlZ2V4IHBhdHRlcm4gYSBmaWxlIG5hbWUgbXVzdCBtYXRjaCBmb3IgdGhpcyBzY2FubmVyIHRvIGJlIGFwcGxpZWQgdG8gaXRzIGNvbnRlbnRzIgogICAgICAgICAgfSwKICAgICAgICAgICJsaW5lRmlsdGVyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmlsZSBsaW5lIGZpbHRlciByZWd4IHBhdHRlcm5cblxuRGVmaW5lcyBhIHJlZ2V4IHBhdHRlcm4gYXBwbGllZCB0byBlYWNoIGxpbmUgd2l0aGluIGEgdGFyZ2V0IGZpbGUgd2hlcmUgZWFjaCBtYXRjaGluZyByZWdpb24gd2lsbCBiZSBleHRyYWN0ZWQgYXMgc3ltYm9sIHZhbHVlLiBOT1RFOiBUYWtlIGludG8gY29uc2lkZXJhdGlvbiBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGlucHV0IGV4cHJlc3Npb24gdG8gYXZvaWQgbG9uZyBwcm9jZXNzaW5nIHRpbWUgYW5kL29yIGVycm9ycy4iCiAgICAgICAgICB9LAogICAgICAgICAgImV4dHJhY3RRdW90ZXMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJFeHRyYWN0IHNpbmdsZSBhbmQgZG91YmxlIHF1b3RlZCB2YWx1ZXNcblxuRGVmaW5lcyB3aGV0aGVyIHRvIGV4dHJhY3Qgc2luZ2xlIGFuZCBkb3VibGUgcXVvdGVkIHZhbHVlcyBmcm9tIGlucHV0IGxpbmVzLCB0YWtpbmcgaW50byBjb25zaWRlcmF0aW9uIGVzY2FwaW5nIGFuZCBpbXByb3Blcmx5IGNsb3NlZCBxdW90YXRpb25zLiBUaGlzIG9wdGlvbnMgcHJvdmlkZXMgYW0gZWZmaWNpZW50IG1ldGhvZCBmb3IgZXh0cmFjdGluZyBzdHJpbmcgY29uc3RhbnRzIGZyb20gaW5wdXQgZmlsZXMgd2l0aG91dCByZWx5aW5nIG9uIHJlZ2V4IGJhY2t0cmFja2luZy4gVG8gbGVhcm4gbW9yZSBzZWUgW3BzZXVkbyBjb2RlXSAoaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vdGFsd2d4L2QzMTEzM2Y2Mjc4YmI4YjY0MGJhZjA1MGY3ODA0N2Q1KS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikiCiAgICAgICAgICB9LAogICAgICAgICAgIm1hdGNoQ29udGV4dCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk91dHB1dCBzeW1ib2wgY29udGV4dFxuXG5TZXRzIHRoZSBzb3VyY2UgY29udGV4dCB0byBhc3NpZ24gYW55IHN5bWJvbHMgY29sbGVjdGVkIHVzaW5nIHRoaXMgdGhpcyBwYXR0ZXJuIHNlbGVjdG9yLiBGb3IgcG9zc2libGUgdmFsdWVzLCBzZWUgc3ltYm9sIFtjb250ZXh0c10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3N5bWJvbC8jY29udGV4dHMpLiAgIElmIGEgdGFyZ2V0IGlucHV0IGxpbmUgY29udGFpbnMgbWF0Y2hlcyBmb3IgW3BhdHRlcm5MaW5lRmlsdGVyXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvc2Nhbm5lci9wYXR0ZXJuLyNwYXR0ZXJubGluZWZpbHRlcikgQU5EIHRoaXMgdmFsdWUgaXMgc2V0IHRvIFttZXRob2RdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zeW1ib2wvI21ldGhvZCkgQU5EIHRoZSBtYXRjaGluZyBsaW5lIGNvbnRhaW5zIHZhbHVlcyBzcGVjaWZpZWQgYXMgW2xvZ21ldGhvZHNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9zY2FubmVyL2xvZ01ldGhvZHMvI2xvZ21ldGhvZHMpIG9yIFtsb2dzdHJlYW1zXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvc2Nhbm5lci9sb2dNZXRob2RzLyNsb2dzdHJlYW1zKSBvdXRzaWRlIG9mIG1hdGNoIGJvdW5kcyB0aGVuIHRoZSBjb250ZXh0IHdpbGwgYmUgc2V0IGFzIFtsb2ddKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zeW1ib2wvI2xvZykuICBGb3IgZXhhbXBsZSwgZm9yIHRoZSBmb2xsb3dpbmcgaW5wdXQgbGluZSwgYSBwYXR0ZXJuIHNjYW5uZXIgc2V0IHRvIGBtZXRob2RgIHRoYXQgZXh0cmFjdHMgcXVvdGVkIHN0cmluZ3Mgd2lsbCBhc3NpZ25lZCB0aGUgZXh0cmFjdGVkIHZhbHVlJ3MgY29udGV4dCBhcyBgbG9nYCBnaXZlbiB0aGUgcHJlc2VuY2Ugb2YgdGhlIGBDb25zb2xlYCB2YWx1ZSB3aGljaCBpcyBkZWZpbmVkIGFzIGxvZ2dpbmcgc3RyZWFtIGlkZW50aWZpZXIuICBgYGAgY3MgQ29uc29sZS5Xcml0ZUxpbmUoXCJBY2NvdW50aW5nIFxcXCJzZXJ2aWNlIHN0YXJ0ZWRcIik7IGBgYCIKICAgICAgICAgIH0sCiAgICAgICAgICAidW5lc2NhcGVTY2hlbWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJVbmVzY2FwZSBzY2hlbWUgdG8gYXBwbHkgdG8gbWF0Y2hpbmcgc2VxdWVuY2VzXG5cblNwZWNpZmllcyBhbiB1bmVzY2FwZSBhbGdvcml0aG0gdG8gYXBwbHkgdG8gbWF0Y2hpbmcgc2VxdWVuY2VzIG9mIFtwYXR0ZXJuTGluZUZpbHRlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3NjYW5uZXIvcGF0dGVybi8jcGF0dGVybmxpbmVmaWx0ZXIpLiBTdXBwb3J0ZWQgdmFsdWVzOiBbanNvbixqYXZhLHhtbCxodG1sLGphdmFTY3JpcHRdLiAgIElmIG5vdCBzcGVjaWZpZWQsIGNoYXJhY3RlcnMgYXJlIHRyZWF0ZWQgYXMgbm90IGVzY2FwZWQuICBUbyBsZWFybiBtb3JlIHNlZSBbVW5lc2NhcGUgYWxnb3JpdGhtc10oaHR0cHM6Ly93d3cudW5iZXNjYXBlLm9yZy91c2luZ3VuYmVzY2FwZS5odG1sKS4iCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZWQiIDogWwogICAgICAgICAgImZpbGVGaWx0ZXIiLAogICAgICAgICAgImV4dHJhY3RRdW90ZXMiCiAgICAgICAgXQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

        ```yaml
        # 🔟❎ 'compile' pattern quoted strings configuration
        
        # This pattern symbol scanner extracts single and double quoted string values
        # from target files. This pattern is used a default for capturing symbol values
        # from source files for which no ANTLR grammar or built-in scanner is available.
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        # ============================== Pattern Options ==============================
        
        pattern: 
        
            # 'fileFilter' is set as a sink for prominent source code files. Available built-in and ANTLR
            #  scanners will take precedence over this pattern scanner
          - fileFilter: \b\w+\.(java|cs|php|cpp|cxx|c|h|H|hxx|cc|hh|py|go|js|rs|bash|scala|sc|ts|rb|kt|lua|groovy|swift)\b
        
            extractQuotes: true
        
            # 'lineFilter' defines a regex pattern applied to each line within a target file.
            #  Each matching region will be extracted as symbol value
            lineFilter: null
        
            # 'matchContext' sets the source context to assign any symbols collected using this this pattern selector. 
            #  For possible values, see https://doc.log10x.com/run/transform/symbol/#contexts
            matchContext: method_invoke
        
            # 'unescapeScheme' specifies an unescape algorithm to apply to matching sequences of patternLineFilter. 
            #  Supported values: [json,java,xml,html,javaScript].
            unescapeScheme: java
        ```

    === ":material-file-code: Cpp"

  
        #### Cpp {.hidden-heading}
        Configure  the [ANTLR scanner](/compile/scanner/antlr "Extract symbols from any programming language using the ANTLR framework") to extract symbols from any programming language using the ANTLR framework.  
  
        Below is the default configuration from: [antlr/cpp.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/antlr/cpp.yaml "antlr/cpp.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/antlr/cpp.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-cpp.yaml12-edit-button" data-tooltip="Edit configuration file" data-dialog-id="cpp-yaml12-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="cpp-yaml12-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit ANTLR scanner Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('cpp-yaml12-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/scanners/antlr/cpp.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/scanners/antlr/cpp.yaml"
                                    data-copy-win="C:\log10x\configs/compile/scanners/antlr/cpp.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/scanners/antlr/cpp.yaml">$TENX_CONFIG/compile/scanners/antlr/cpp.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/scanners/antlr/cpp.yaml">./pipelines/compile/scanners/antlr/cpp.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiYW50bHJQYXJzZVVuaXRUaW1lb3V0IiA6IHsKICAgICAgInR5cGUiIDogWyAic3RyaW5nIiwgIm51bGwiIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTb3VyY2UgZmlsZSBwYXJzZSB0aW1lb3V0XG5cbkRlZmluZXMgdGhlIHRpbWVvdXQgaW50ZXJ2YWwgZm9yIHBhcnNpbmcgYW5kIHNjYW5uaW5nIGEgc291cmNlL2JpbmFyeSBpbnB1dCBmaWxlIGJlZm9yZSBhYm9ydGluZy4gZGVmYXVsdCB2YWx1ZTogNjBzZWMiCiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

        ```yaml
        # 🔟❎ 'compile' C++ ANTLR symbol scanner configuration
        
        # The 'cpp' configuration instructs the ANTLR scanner which symbol values (e.g. class/func names, code constants)
        # to extract from c++ source files.  
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        # ============================== ANTLR Options ================================
        
        antlr:
        
          # The 'antlrLang' module is defined in: https://doc.log10x.com/compile/scanner/antlr/langs
          # These values define the ANTLR grammar .g4 file used to
          # to tokenize and construct an AST for the target cpp file
        
          lang: cpp
        
          fileExt:
            - .cpp
            - .cxx
            - .c++
            - .c
            - .h
            - .H
            - .hpp
            - .hxx
            - .h++
            - .cc
            - .hh
        
          grammarFile: grammar/CPP14Parser.g4
        
          lexerFile: grammar/CPP14Lexer.g4
        
          rootRule: translationUnit
        
          reserved:
            - '::'
            - '<<'
            - inline
            - namespace
            - <
            - class
            - '>'
        
          # 'lineFilters' specifies a list of regex patterns for skipping input lines 
          lineFilters:
            - ^\s*(//.*|/\*.*\*/)$
            - ^.*\bnew\(\);\b.*$
        
          # The 'rule' list defines the nodes within a cpp AST tree that are captured
          # and added to the output symbol unit.
          # To learn more see: https://doc.log10x.com/compile/scanner/antlr/rules/
          rule:
            - name: enumerator
              lang: cpp
              context: enum
              recursive: false
              capture: allSymbols
          
            - name: blockDeclaration
              lang: cpp
              context: method_invoke
              recursive: true
              capture: literalsOnly
          
            - name: enumbase
              lang: cpp
              context: enum
              recursive: true
              capture: literalsOnly
          
            - name: classHeadName
              lang: cpp
              context: class
              recursive: true
              capture: allSymbols
          
            - name: enumSpecifier
              lang: cpp
              context: class
              recursive: false
              capture: literalsOnly
              condition: ^enumHead$
              tag: EnumHead
        
            - name: enumHead
              lang: cpp
              context: class
              recursive: false
              capture: allSymbols
              ifTag: EnumHead
        
            - name: functionDefinition
              lang: cpp
              context: method_decl
              recursive: false
              capture: allSymbols
              condition: ^functionDefinition$
              tag: FunctionDefinition
          
            - name: declaratorid
              lang: cpp
              context: method_decl
              recursive: true
              capture: allSymbols
              ifTag: FunctionDefinition
            
            - name: jumpStatement
              lang: cpp
              context: var_assign
              recursive: true
              capture: literalsOnly
          
            - name: functionBody
              lang: cpp
              context: method_invoke
              recursive: false
              capture: literalsOnly
            # condition: ^functionBody$
            # tag: FunctionBody
          
            - name: statement
              lang: cpp
              context: method_invoke
              recursive: true
              capture: literalsOnly
          
            - name: classSpecifier
              lang: cpp
              context: class
              recursive: false
              capture: literalsOnly
              subRule: memberSpecification
          
            - name: staticAssertDeclaration
              lang: cpp
              context: var_assign
              recursive: true
              capture: literalsOnly
          
            - name: parameterDeclarationList
              lang: cpp
              context: method_invoke
              recursive: false
              capture: literalsOnly
            # condition: ^parameterDeclarationList$
            # tag: ParameterDeclarationList
          
            - name: enumeratorDefinition
              lang: cpp
              context: enum
              recursive: false
              capture: allSymbols
          
            - name: namespaceDefinition
              lang: cpp
              context: package
              recursive: false
              capture: allSymbols
            
            - name: constantExpression
              lang: cpp
              context: var_assign
              recursive: true
              capture: literalsOnly
          
            - name:  templateArgumentList
              lang: cpp
              context: method_invoke
              recursive: false
              capture: literalsOnly
            # condition: ^templateArgumentList$
            # tag: TemplateArgumentList
        ```

    === ":material-file-code: Csharp"

  
        #### Csharp {.hidden-heading}
        Configure  the [ANTLR scanner](/compile/scanner/antlr "Extract symbols from any programming language using the ANTLR framework") to extract symbols from any programming language using the ANTLR framework.  
  
        Below is the default configuration from: [antlr/csharp.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/antlr/csharp.yaml "antlr/csharp.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/antlr/csharp.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-csharp.yaml13-edit-button" data-tooltip="Edit configuration file" data-dialog-id="csharp-yaml13-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="csharp-yaml13-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit ANTLR scanner Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('csharp-yaml13-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/scanners/antlr/csharp.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/scanners/antlr/csharp.yaml"
                                    data-copy-win="C:\log10x\configs/compile/scanners/antlr/csharp.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/scanners/antlr/csharp.yaml">$TENX_CONFIG/compile/scanners/antlr/csharp.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/scanners/antlr/csharp.yaml">./pipelines/compile/scanners/antlr/csharp.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiYW50bHJQYXJzZVVuaXRUaW1lb3V0IiA6IHsKICAgICAgInR5cGUiIDogWyAic3RyaW5nIiwgIm51bGwiIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTb3VyY2UgZmlsZSBwYXJzZSB0aW1lb3V0XG5cbkRlZmluZXMgdGhlIHRpbWVvdXQgaW50ZXJ2YWwgZm9yIHBhcnNpbmcgYW5kIHNjYW5uaW5nIGEgc291cmNlL2JpbmFyeSBpbnB1dCBmaWxlIGJlZm9yZSBhYm9ydGluZy4gZGVmYXVsdCB2YWx1ZTogNjBzZWMiCiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

        ```yaml
        # 🔟❎ 'compile' C# ANTLR symbol scanner configuration
        
        # The 'csharp' configuration instructs the ANTLR scanner which symbol values (e.g. class/func names, code constants)
        # to extract from c# source files.  
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        # ============================== ANTLR Options ================================
        
        antlr:
        
          # The 'antlrLang' module is defined in: https://doc.log10x.com/compile/scanner/antlr/langs
          # These values define the ANTLR-generated parser class used to
          # to tokenize and construct an AST for the target c# file.
          
          lang: csharp
        
          fileExt:
            - .csx
            - .cs
        
          parserClass: com.log10x.antlr.generated.csharp.CSharpParser
        
          lexerClass: com.log10x.antlr.generated.csharp.CSharpLexer
        
          # 'charStreamClass' is set to remove language elements introduced later than V6.0 which is the latest release supported by this grammar.
          #  To learn more see https://github.com/antlr/grammars-v4/tree/master/csharp#readme
          charStreamClass: com.log10x.antlr.parsers.CSharpDowngrader
        
          rootRule: compilation_unit
        
          reserved:
            - namespace
            - interface
            - class
            - enum
        
          # 'lineFilters' specifies a list of regex patterns for skipping input lines 
          lineFilters:
            - ^\s*(//.*|/\*.*\*/)$
        
            # Remove unsupported C# v10 File scoped namespaces
            - ^namespace.*;$
        
            # Remove unsupported C# v9 Target-typed new operator
           # - "(?<!\\w)new\\s*\\(\\s*\\)\\s*;"
        
            - ".*new\\(.*"
        
          # The 'rule' list defines the nodes within a csharp AST tree that are captured
          # and added to the output symbol unit.
          # To learn more see: https://doc.log10x.com/compile/scanner/antlr/rules/
          rule:
            - name: interface_definition
              lang: csharp
              context: class
              recursive: false
              capture: allSymbols
              subRule: identifier
          
            - name: enum_member_declaration
              lang: csharp
              context: enum
              recursive: true
              capture: allSymbols
          
            - name: enum_definition
              lang: csharp
              context: class
              recursive: false
              capture: allSymbols
              subRule: identifier
          
            - name: namespace_body
              lang: csharp
              context: package
              recursive: true
              capture: literalsOnly
          
            - name: method_invocation
              lang: csharp
              context: method_invoke
              recursive: true
              capture: literalsOnly
        
            - name: object_creation_expression
              lang: csharp
              context: method_invoke
              recursive: true
              capture: literalsOnly
          
            - name: interpolated_regular_string_part
              lang: csharp
              context: method_invoke
              recursive: false
              capture: allSymbols
              subRule: interpolated_regular_string_part
          
            - name: namespace_declaration
              lang: csharp
              context: package
              recursive: true
              capture: allSymbols
          
            - name: statement_list
              lang: csharp
              context: method_invoke
              recursive: true
              capture: literalsOnly
          
            - name: constant_declaration
              lang: csharp
              context: var_assign
              recursive: true
              capture: literalsOnly
         
            - name: method_declaration
              lang: csharp
              context: method_decl
              recursive: true
              capture: allSymbols
              subRule: identifier
        
            - name: method_body
              lang: csharp
              context: method_decl
              recursive: false
              capture: literalsOnly
        
            #- name: method_member_name
            #  lang: csharp
            #  context: method_decl
            #  recursive: true
            #  capture: allSymbols
            
            - name: local_variable_initializer
              lang: csharp
              context: var_assign
              recursive: true
              capture: literalsOnly
          
            - name: returnStatement
              lang: csharp
              context: var_assign
              recursive: true
              capture: literalsOnly
          
            - name: class_definition
              lang: csharp
              context: class
              recursive: false
              capture: allSymbols
              subRule: identifier
          
            - name: attribute_argument
              lang: csharp
              context: annotation_invoke
              recursive: true
              capture: literalsOnly
        ```

    === ":material-language-python: PythonAST"

  
        #### pythonAST {.hidden-heading}
        Configure  the [CPython AST scanner](/compile/scanner/pythonAST "Scan Python source code for symbol values") to scan Python source code for symbol values.  
  
        Below is the default configuration from: [pythonAST/default.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/pythonAST/default.yaml "pythonAST/default.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/pythonAST/default.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-default.yaml14-edit-button" data-tooltip="Edit configuration file" data-dialog-id="default-yaml14-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="default-yaml14-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit CPython AST scanner Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('default-yaml14-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/scanners/pythonAST/default.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/scanners/pythonAST/default.yaml"
                                    data-copy-win="C:\log10x\configs/compile/scanners/pythonAST/default.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/scanners/pythonAST/default.yaml">$TENX_CONFIG/compile/scanners/pythonAST/default.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/scanners/pythonAST/default.yaml">./pipelines/compile/scanners/pythonAST/default.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        

        ```yaml
        # 🔟❎ 'compile' python symbol scanner settings
        
        # The Python AST symbol scanner leverages the Python native .py parsing engine.
        # to launch the 'astpretty' script from https://github.com/asottile/astpretty 
        # to parse the contents of an input .py file. 
        
        # If a python runtime is unavailable when executing the 'compile' pipeline,
        # the 'pythonASTPath' value can be set to null or empty string to default 
        # to the ANTLR symbol scanner defined in 'python.yaml'
        
        # 'pythonPath' specifies the command for launching a Python run-time. 
        #  A test script verifies a Python run-time is available. If the test script is unsuccessful,
        #  the scanner is disabled. 
        pythonPath: python3
        ```

    === ":material-zip-box-outline: Archive"

  
        #### archive {.hidden-heading}
        Configure  the [Archive scanner](/compile/scanner/archive "Scan compressed archives for enclosed files containing symbol values") to scan compressed archives for enclosed files containing symbol values.  
  
        Below is the default configuration from: [archive/default.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/archive/default.yaml "archive/default.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/archive/default.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-default.yaml15-edit-button" data-tooltip="Edit configuration file" data-dialog-id="default-yaml15-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="default-yaml15-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Archive scanner Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('default-yaml15-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/scanners/archive/default.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/scanners/archive/default.yaml"
                                    data-copy-win="C:\log10x\configs/compile/scanners/archive/default.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/scanners/archive/default.yaml">$TENX_CONFIG/compile/scanners/archive/default.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/scanners/archive/default.yaml">./pipelines/compile/scanners/archive/default.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiYXJjaGl2ZUV4dGVuc2lvbnMiIDogewogICAgICAidHlwZSIgOiBbICJhcnJheSIsICJudWxsIiBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU3VwcG9ydGVkIGFyY2hpdmUgZXh0ZW5zaW9uc1xuXG5EZWZpbmVzIHRoZSBmaWxlIGV4dGVuc2lvbnMgb2YgYXJjaGl2ZSB6aXAgZmlsZXMgdG8gc2NhbiBmb3Igc291cmNlL2JpbmFyeSBpbnB1dCBmaWxlcy4gKERlZmF1bHQ6IFtcIi56aXBcIixcIi5qYXJcIixcIi53YXJcIixcIi5lYXJcIixcIi43c1wiLFwiLmd6XCIsXCIuYnJcIixcIi5sejRcIixcIi5sem1hXCIsXCIudGFyXCIsXCIudGFyLmJyXCIsXCIudGFyLmd6XCIsXCIudGFyLmJ6MlwiLFwiLnRhci5sejRcIixcIi50YXIubHptYVwiXSkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgIH0sCiAgICAgICJkZWZhdWx0IiA6IFsgIi56aXAiLCAiLmphciIsICIud2FyIiwgIi5lYXIiLCAiLjdzIiwgIi5neiIsICIuYnIiLCAiLmx6NCIsICIubHptYSIsICIudGFyIiwgIi50YXIuYnIiLCAiLnRhci5neiIsICIudGFyLmJ6MiIsICIudGFyLmx6NCIsICIudGFyLmx6bWEiIF0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9</template>

        ```yaml
        # 🔟❎  'compile' archive symbol scanner config
        
        # The archive'scanner iterates through the contents of file archives
        # to seek source/binary files whose contents to scan into
        # the output symbol files.
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        archiveExtensions:
          - .zip
          - .jar
          - .war
          - .ear
        
          - .7s
          - .gz
          - .br
          - .lz4
          - .lzma
        
          - .tar
          - .tar.br
          - .tar.gz
          - .tar.bz2
          - .tar.lz4
          - .tar.lzma
        ```

    === ":material-math-log: LogMethods"

  
        #### logMethods {.hidden-heading}
        Configure  the [Log method/stream definitions](/compile/scanner/logMethods "Define logger method and output stream names") to define logger method and output stream names.  
  
        Below is the default configuration from: [logMethods/default.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/logMethods/default.yaml "logMethods/default.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/logMethods/default.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-default.yaml16-edit-button" data-tooltip="Edit configuration file" data-dialog-id="default-yaml16-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="default-yaml16-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Log method/stream definitions Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('default-yaml16-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/scanners/logMethods/default.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/scanners/logMethods/default.yaml"
                                    data-copy-win="C:\log10x\configs/compile/scanners/logMethods/default.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/scanners/logMethods/default.yaml">$TENX_CONFIG/compile/scanners/logMethods/default.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/scanners/logMethods/default.yaml">./pipelines/compile/scanners/logMethods/default.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAibG9nIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJtZXRob2RzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWVzIG9mIHNvdXJjZSBjb2RlIG1ldGhvZHMgdG8gbWFyayBhcyAnbG9nZ2luZydcblxuTGlzdHMgJ2xvZ2dpbmcnIG1ldGhvZCBuYW1lcyB3aG9zZSBpbnZvY2F0aW9ucyB0byBtYXJrICdsb2dnaW5nJy4gTG9nZ2luZyBmcmFtZXdvcmtzIGNvbW1vbmx5IGRlZmluZSBzdGFuZGFyZCBtZXRob2RzIHRvIGVtaXQgZXZlbnQgaW5mb3JtYXRpb24gdG8gcHJvZ3JhbSBvdXRwdXQgKGUuZy4sICd3YXJuJywgJ2Vycm9yJykuIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAibWV0aG9kUmVnZXgiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkEgcGF0dGVybiB0aGF0IHNvdXJjZSBjb2RlIG1ldGhvZHMgbmFtZXMgbXVzdCBtYXRjaCB0byBxdWFsaWZ5IGFzICdsb2dnaW5nJyBtZXRob2RzXG5cblNwZWNpZmllcyBhIHBhdHRlcm4gZm9yIHN5bWJvbCBzY2FubmVycyB0byBhcHBseSB0byBzb3VyY2UgY29kZSBtZXRob2QvZnVuY3Rpb24gbmFtZXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gbWFyayB0aGVtIGFzICdsb2dnaW5nJy4gRm9yIGV4YW1wbGU6IF4obG9nfExvZyl8KExvZ3xsb2cpJCIKICAgICAgICB9LAogICAgICAgICJzdHJlYW1zIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWVzIG9mIHNvdXJjZSBjb2RlIHZhcmlhYmxlcyB0byBtYXJrIGFzICdsb2dnaW5nJ1xuXG5MaXN0cyAnbG9nZ2luZycgbWVtYmVyIG5hbWVzIHdob3NlIGFzc2lnbm1lbnRzIHRvIG1hcmsgJ2xvZ2dpbmcnLiBQcm9ncmFtbWluZyBsYW5ndWFnZXMgY29tbW9ubHkgZGVmaW5lIHN0YW5kYXJkIG1lbWJlcnMgdG8gZW1pdCBldmVudHMgdG8gb3V0cHV0IChlLmcuLCAnb3V0JywgJ2NlcnInKS4iLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9</template>

        ```yaml
        # 🔟❎ 'compile' log methods configuration
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        # ============================ Log Options =============================
        
        log:
        
          # 'methods' lists known method names collected from common logging
          #  frameworks used to indicate source code logging events to stream at runtime.
        
          #  Identifying those points in source code that perform logging operations
          #  and marking them within an output symbol unit file (*.json)
          #  allows the 'run' pipeline to correlate each TenXObject structured from the event
          #  data back to its origin in the codebase.
        
          #  To learn more about symbol contexts and their use, see https://doc.log10x.com/run/transform/symbol/#contexts
          methods:
        
            # Assertions are not enabled by default as they are less likely to appear in prod logs
            # - Assert
            # - assert
            # - assertEquals
            # - assertEqual
        
            - exception
        
            - Log
            - LOG
            - log
            - BOOST_LOG_TRIVIAL
        
            - trace
            - Trace
            - log_trace
            - logTrace
            - TRACE
            - LOG_TRACE
        
            - debug
            - Debug
            - logDebug
            - log_debug
            - DEBUG
            - LOG_DEBUG
            - Debugf
        
            - info
            - Info
            - log_info
            - logInfo
            - INFO
            - LOG_INFO
            - information
            - LogInformation
            - InfoF
        
            - warn
            - Warn
            - log_warn
            - logWarn
            - WARN
            - LOG_WARN
            - WarnF
        
            - warning
            - logWarning
            - LOG_WARNING
        
            - error
            - Error
            - logError
            - log_error
            - ERROR
            - LOG_ERROR
            - ErrorF
        
            - err
        
            - fatal
            - Fatal
            - log_fatal
            - logFatal
            - FATAL
            - LOG_FATAL
            - FatalF
        
            - critical
            - Panic
        
          # 'methodRegex' specifies an optional regex that will be applied
          #  to a scanned source code method/function name. If matched, the method
          #  will be considered to be a 'logging method' (see above).
          #  For example: ^(log|Log)|(Log|log)$
          methodRegex: null
        
          # 'streams' defines which source code variables within
          #  this ANTLR syntax are treated as output streams (e.g. stdout, stderr, cerr).
          #  Literal constants (e.g. "error connecting to {}") passed to a variable
          #  listed below (e.g. 'cout') will be assigned a 'logger_method_invoke'
          #  symbol source context.
          streams:
        
          # - assert
            - cout
            - cerr
            - Error
            - Debug
            - err
            - out
            - Console
        ```

    === ":material-file-code: Go"

  
        #### Go {.hidden-heading}
        Configure  the [ANTLR scanner](/compile/scanner/antlr "Extract symbols from any programming language using the ANTLR framework") to extract symbols from any programming language using the ANTLR framework.  
  
        Below is the default configuration from: [antlr/go.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/antlr/go.yaml "antlr/go.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/antlr/go.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-go.yaml17-edit-button" data-tooltip="Edit configuration file" data-dialog-id="go-yaml17-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="go-yaml17-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit ANTLR scanner Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('go-yaml17-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/scanners/antlr/go.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/scanners/antlr/go.yaml"
                                    data-copy-win="C:\log10x\configs/compile/scanners/antlr/go.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/scanners/antlr/go.yaml">$TENX_CONFIG/compile/scanners/antlr/go.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/scanners/antlr/go.yaml">./pipelines/compile/scanners/antlr/go.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiYW50bHJQYXJzZVVuaXRUaW1lb3V0IiA6IHsKICAgICAgInR5cGUiIDogWyAic3RyaW5nIiwgIm51bGwiIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTb3VyY2UgZmlsZSBwYXJzZSB0aW1lb3V0XG5cbkRlZmluZXMgdGhlIHRpbWVvdXQgaW50ZXJ2YWwgZm9yIHBhcnNpbmcgYW5kIHNjYW5uaW5nIGEgc291cmNlL2JpbmFyeSBpbnB1dCBmaWxlIGJlZm9yZSBhYm9ydGluZy4gZGVmYXVsdCB2YWx1ZTogNjBzZWMiCiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

        ```yaml
        # 🔟❎ 'compile' Go ANTLR symbol scanner configuration
        
        # The 'go' configuration instructs the ANTLR scanner which symbol values (e.g. class/func names, code constants)
        # to extract from GO source files.  
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        # ============================== ANTLR Options ================================
        
        antlr:
        
          # The 'antlrLang' module is defined in: https://doc.log10x.com/compile/scanner/antlr/langs
          # These values define the ANTLR-generated parser class used to
          # to tokenize and construct an AST for the target go file.
          lang: go
        
          fileExt:
            - .go
        
          parserClass: com.log10x.antlr.generated.golang.GoParser
        
          lexerClass: com.log10x.antlr.generated.golang.GoLexer
        
          rootRule: sourceFile
        
          reserved:
            - package
            - func
        
          # 'lineFilters' specifies a list of regex patterns for skipping input lines 
          lineFilters:
            - ^\s*(//.*|/\*.*\*/)$
        
          # The 'rule' list defines the nodes within a go AST tree that are captured
          # and added to the output symbol unit.
          # To learn more see: https://doc.log10x.com/compile/scanner/antlr/rules/
          rule:
            - name: constSpec
              lang: go
              context: enum
              recursive: false
              capture: allSymbols
              subRule: identifierList
          
            - name: returnStmt
              lang: go
              context: var_assign
              recursive: true
              capture: literalsOnly
          
            - name: assignment
              lang: go
              context: var_assign
              recursive: true
              capture: literalsOnly
          
            - name: expressionStmt
              lang: go
              context: method_invoke
              recursive: true
              capture: literalsOnly
          
            - name: packageClause
              lang: go
              context: package
              recursive: false
              capture: allSymbols
          
            - name: arguments
              lang: go
              context: method_invoke
              recursive: true
              capture: literalsOnly
          
            - name: typeSpec
              lang: go
              context: class
              recursive: false
              capture: allSymbols
          
            - name: functionDecl
              lang: go
              context: method_decl
              recursive: false
              capture: allSymbols
        
            - name: methodDecl
              lang: go
              context: method_decl
              recursive: false
              capture: allSymbols
        ```

    === ":material-code-json: Jackson"

  
        #### Jackson {.hidden-heading}
        Configure [Text file scanners](/compile/scanner/text "Scan text/binary files for symbol values using the Jackson library") to scan text/binary files for symbol values using the Jackson library.  
  
        Below is the default configuration from: [text/jackson.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/text/jackson.yaml "text/jackson.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/text/jackson.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-jackson.yaml18-edit-button" data-tooltip="Edit configuration file" data-dialog-id="jackson-yaml18-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="jackson-yaml18-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Text file scanner Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('jackson-yaml18-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/scanners/text/jackson.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/scanners/text/jackson.yaml"
                                    data-copy-win="C:\log10x\configs/compile/scanners/text/jackson.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/scanners/text/jackson.yaml">$TENX_CONFIG/compile/scanners/text/jackson.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/scanners/text/jackson.yaml">./pipelines/compile/scanners/text/jackson.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGV4dCIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJwYXJzZXJOYW1lIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUGFyc2VyIGxvZ2ljYWwgbmFtZVxuXG5EZWZpbmVzIGEgbG9naWNhbCB1bmlxdWUgbmFtZSBmb3IgdGhpcyBwYXJzZXIgKGUuZy4sICdsb2dzJykiCiAgICAgICAgICB9LAogICAgICAgICAgImZpbGVOYW1lRmlsdGVyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUGF0dGVybiB0byBtYXRjaCBmb3IgdGFyZ2V0IGlucHV0IGZpbGUgbmFtZVxuXG5EZWZpbmVzIGEgcmVnZXggcGF0dGVybiBhIGZpbGUgbXVzdCBtYXRjaCBhZ2FpbnN0IGZvciB0aGlzIHNjYW5uZXIgdG8gYXBwbHkgdG8gaXQuIgogICAgICAgICAgfSwKICAgICAgICAgICJwYXJzZXJGYWN0b3J5Q2xhc3MiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQYXJzZXIgZmFjdG9yeSBjbGFzc1xuXG5Qcm92aWRlcyBhbiBvcHRpb25hbCBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiBhIGNsYXNzIG5hbWUgZGVyaXZlZCBmcm9tIGEgW0pzb25GYWN0b3J5XShodHRwczovL2Zhc3RlcnhtbC5naXRodWIuaW8vamFja3Nvbi1jb3JlL2phdmFkb2MvMi42L2NvbS9mYXN0ZXJ4bWwvamFja3Nvbi9jb3JlL0pzb25GYWN0b3J5Lmh0bWwpLiAgSWYgc3BlY2lmaWVkLCB0aGUgc2Nhbm5lciBpbnN0YW50aWF0ZXMgdGhlIGZhY3RvcnkgdXNpbmcgYSBwYXJhbWV0ZXJsZXNzIGNvbnN0cnVjdG9yICBhbmQgaW52b2tlcyBpdHMgW2NyZWF0ZVBhcnNlcl0oaHR0cHM6Ly9mYXN0ZXJ4bWwuZ2l0aHViLmlvL2phY2tzb24tY29yZS9qYXZhZG9jLzIuNi9jb20vZmFzdGVyeG1sL2phY2tzb24vY29yZS9Kc29uRmFjdG9yeS5odG1sI2NyZWF0ZVBhcnNlcihqYXZhLmlvLklucHV0U3RyZWFtKSkgbWV0aG9kIHRvIGdlbmVyYXRlIGEgcGFyc2VyIGluc3RhbmNlLiBUaGUgc2Nhbm5lciB1c2VzIHRoZSBwYXJzZXIgdG8gcmVhZCB0b2tlbiB2YWx1ZXMgZnJvbSB0aGUgZmlsZS4gIGlmICd0ZXh0UGFyc2VyRmFjdG9yeUFyZ3MnIGlzIHNwZWNpZmllZCwgYSBjb25zdHJ1Y3RvciByZWNlaXZpbmcgYSBzdHJpbmdbXSBtdXN0ICBiZSBkZWZpbmVkIGJ5IHRoaXMgY2xhc3MgdG8gcmVjZWl2ZSBvcHRpb25hbCBjb25maWcgcGFyYW1ldGVycyIKICAgICAgICAgIH0sCiAgICAgICAgICAicGFyc2VyRmFjdG9yeUFyZ3MiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkFyZ3VtZW50cyBmb3IgJ3RleHRQYXJzZXJGYWN0b3J5JyBjdG9yXG5cblNwZWNpZmllcyBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgcGFyc2VyIGZhY3RvcnkgaW5zdGFuY2UgY29uc3RydWN0b3IuIFRoaXMgb3B0aW9uIG9ubHkgYXBwbGllcyBpZiAndGV4dFBhcnNlckZhY3RvcnlDbGFzcycgaXMgc2V0LiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJzY2FuRmllbGRWYWx1ZXMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJDb250cm9scyB3aGV0aGVyIHRvIGNhcHR1cmUgSmFja3NvbiBwYXJzZXIgZmllbGQgdmFsdWVzXG5cbkNvbnRyb2xzIHdoZXRoZXIgdG8gY2FwdHVyZSBhIEphY2tzb24gcGFyc2VyJ3MgW1ZBTFVFX1NUUklOR10oaHR0cHM6Ly9mYXN0ZXJ4bWwuZ2l0aHViLmlvL2phY2tzb24tY29yZS9qYXZhZG9jLzIuOC9jb20vZmFzdGVyeG1sL2phY2tzb24vY29yZS9Kc29uVG9rZW4uaHRtbCNWQUxVRV9TVFJJTkcpIHRva2VucyBhcmUgc2Nhbm5lZCBmb3IgZW50cmllcyBvciBqdXN0IHZhbHVlcyBvZiBbRklFTERfTkFNRV0oaHR0cHM6Ly9mYXN0ZXJ4bWwuZ2l0aHViLmlvL2phY2tzb24tY29yZS9qYXZhZG9jLzIuOC9jb20vZmFzdGVyeG1sL2phY2tzb24vY29yZS9Kc29uVG9rZW4uaHRtbCNGSUVMRF9OQU1FKSB0b2tlbnMuICAgIFRoaXMgb3B0aW9uIG9ubHkgYXBwbGllcyBpZiAndGV4dFBhcnNlckZhY3RvcnlDbGFzcycgaXMgc2V0LiAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAibWF4TGluZXMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heCBudW1iZXIgb2YgbGluZXMgdG8gc2NhblxuXG5Db250cm9scyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbGluZXMgdG8gc2NhbiBmb3Igc3ltYm9sIHZhbHVlcyBmcm9tIHRoZSBpbnB1dCBmaWxlLiBUaGlzIG9wdGlvbiBpcyB1c2VmdWwgd2hlbiBzY2FubmluZyBleGlzdGluZyBsb2cgZmlsZXMgYXMgJ3RlbXBsYXRlcycgZm9yIHBhcnNpbmcgZnV0dXJlIGxvZ3MgZnJvbSBhIHNpbWlsYXIgaW5wdXQgc3RyZWFtLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIgogICAgICAgICAgfSwKICAgICAgICAgICJsaW5lT2Zmc2V0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaW5lIG51bWJlciBmcm9tIHdoaWNoIHRvIHN0YXJ0IHNjYW5cblxuU3BlY2lmaWVzIHRoZSBsaW5lIG51bWJlciBmcm9tIHdoaWNoIHRvIHN0YXJ0IHNjYW5uaW5nIGZvciBzeW1ib2xzLiBUaGlzIG9wdGlvbiBpcyB1c2VmdWwgd2hlbiBzY2FubmluZyBhIHNwZWNpZmljIHBvcnRpb24gb2YgYSB0ZXh0IGZpbGUuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikiCiAgICAgICAgICB9LAogICAgICAgICAgImFsbG93RGlnaXRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQ29udHJvbHMgd2hldGhlciB0byBjYXB0dXJlIHRva2VucyBjb250YWluaW5nIG51bWVyaWMgYXMgc3ltYm9sIHRva2Vuc1xuXG5Db250cm9scyB3aGV0aGVyIHRva2VucyBjb250YWluIG51bWVyaWMgY2hhcnMgKGUuZy4sIDAtOSkgYXJlIGFjY2VwdGVkIGFzIHN5bWJvbCB0b2tlbnMuIEFzIGFscGhhbnVtZXJpYyBjb21iaW5hdGlvbnMgdGVuZCB0byBoYXZlIGhpZ2ggY2FyZGluYWxpdHkgKGUuZy4sIEdVSUQsIHRyYWNlX2lkKSwgaXQgaXMgbm90IGdlbmVyYWxseSBhZHZpc2VkICB0byBhZGQgdGhlbSB0byBzeW1ib2wgdW5pdHMgdW5sZXNzIHNwZWNpZmljYWxseSBrbm93biB0byBiZSAnY29uc3RhbnQnIC8gbG93IGNhcmRpbmFsaXR5IHZhbHVlcyAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAibWluTGVuZ3RoIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNaW4gY2hhcmFjdGVyIGxlbmd0aCBmb3IgYSB0b2tlbiB0byBiZSBjb25zaWRlcmVkIGEgc3ltYm9sIHZhbHVlXG5cblNldHMgdGhlIG1pbmltYWwgY2hhcmFjdGVyIGxlbmd0aCBhIHRva2VuIG11c3QgaGF2ZSB0byBjb25zdGl0dXRlIGEgc3ltYm9sIHZhbHVlLiBWZXJ5IHNob3J0IHRva2VucyAoZS5nLiwgbGVuIDwgMykgaGF2ZSBhIGhpZ2ggcHJvYmFiaWxpdHkgb2YgYmVpbmcgZHluYW1pYyB2YWx1ZXMgd2l0aCBoaWdoIGNhcmRpbmFsaXR5IGFuZCwgYXMgc3VjaCwgc2hvdWxkIG5vdCAgYmUgY2FwdHVyZWQgYXMgc3ltYm9sIHZhbHVlcy4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAibWF4TGVuZ3RoIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXggY2hhcmFjdGVyIGxlbmd0aCBmb3IgYSB0b2tlbiB0byBiZSBjb25zaWRlcmVkIGEgc3ltYm9sIHZhbHVlXG5cblNldHMgdGhlIG1heGltdW0gY2hhcmFjdGVyIGxlbmd0aCBhIHRva2VuIG11c3QgaGF2ZSB0byBjb25zdGl0dXRlIGEgc3ltYm9sIHZhbHVlLiBWZXJ5IGxvbmcgdG9rZW5zIChlLmcuLCBsZW4gPiAxMDApIGhhdmUgYSBoaWdoIHByb2JhYmlsaXR5IG9mIGJlaW5nIGR5bmFtaWMgdmFsdWVzIHdpdGggaGlnaCBjYXJkaW5hbGl0eSBhbmQsIGFzIHN1Y2gsIHNob3VsZCBub3QgIGJlIGNhcHR1cmVkIGFzIHN5bWJvbCB2YWx1ZXMuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikiCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZWQiIDogWwogICAgICAgICAgInBhcnNlck5hbWUiLAogICAgICAgICAgImZpbGVOYW1lRmlsdGVyIgogICAgICAgIF0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=</template>

        ```yaml
        # 🔟❎ 'compile' text symbol scanner configuration
        
        # The 'text' scanner parses text files for symbol values. It utilizes
        # the Jackson parser library to parse any text/binary format it supports.
        # This includes formats such json, yaml, xml, ini, protobuf and more.
        
        # The configuration below is added by default to the 10x 'compile' pipeline.
        # Even so, if another text scanner is defined via the 'textScanners' options group
        # whose 'fileNameFilter' matches that of the current target input file,
        # it will take precedence over the text scanners defined below.
        # To learn more about text scanner options below, see:
        # https://doc.log10x.com/compile/scanner/text
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        # =============================== Text Options ================================
        
        text:
        
          - parserName: text
            fileNameFilter: '^.*\.(csv|txt|properties|csv|tsv|ini|conf|sh|log|out)$'
            maxLines: 500
            lineOffset: 0
            allowDigits: false
            minLength: 2
            maxLength: 50
        
          - parserName: json
            fileNameFilter: '^.*\.(json)$'
            parserFactoryClass: com.fasterxml.jackson.core.JsonFactory
            scanFieldValues: true
        
          - parserName: yaml
            fileNameFilter: '^.*\.(yml|yaml)$'
            parserFactoryClass: com.log10x.eng.scanner.text.TextYamlFactory
            scanFieldValues: true
        
          - parserName: xml
            fileNameFilter: '^.*\.(xml|xsd)$'
            parserFactoryClass: com.fasterxml.jackson.dataformat.xml.XmlFactory
            scanFieldValues: true
        ```

    === ":material-file-code: Java"

  
        #### Java {.hidden-heading}
        Configure  the [ANTLR scanner](/compile/scanner/antlr "Extract symbols from any programming language using the ANTLR framework") to extract symbols from any programming language using the ANTLR framework.  
  
        Below is the default configuration from: [antlr/java.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/antlr/java.yaml "antlr/java.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/antlr/java.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-java.yaml19-edit-button" data-tooltip="Edit configuration file" data-dialog-id="java-yaml19-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="java-yaml19-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit ANTLR scanner Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('java-yaml19-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/scanners/antlr/java.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/scanners/antlr/java.yaml"
                                    data-copy-win="C:\log10x\configs/compile/scanners/antlr/java.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/scanners/antlr/java.yaml">$TENX_CONFIG/compile/scanners/antlr/java.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/scanners/antlr/java.yaml">./pipelines/compile/scanners/antlr/java.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiYW50bHJQYXJzZVVuaXRUaW1lb3V0IiA6IHsKICAgICAgInR5cGUiIDogWyAic3RyaW5nIiwgIm51bGwiIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTb3VyY2UgZmlsZSBwYXJzZSB0aW1lb3V0XG5cbkRlZmluZXMgdGhlIHRpbWVvdXQgaW50ZXJ2YWwgZm9yIHBhcnNpbmcgYW5kIHNjYW5uaW5nIGEgc291cmNlL2JpbmFyeSBpbnB1dCBmaWxlIGJlZm9yZSBhYm9ydGluZy4gZGVmYXVsdCB2YWx1ZTogNjBzZWMiCiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

        ```yaml
        # 🔟❎ 'compile' Java ANTLR symbol scanner configuration
        
        # The 'java' configuration instructs the ANTLR scanner which symbol values (e.g. class/func names, code constants)
        # to extract from Java source files.  
        
        # IMPORTANT: while set to enabled by default, the dedicated java scanner utilizes 
        # takes precedence over this scanner unless disabled.
        # To learn more see https://doc.log10x.com/compile/scanner/javaParser
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        # ============================== ANTLR Options ================================
        
        antlr:
        
          # The 'antlrLang' module is defined in: https://doc.log10x.com/compile/scanner/antlr/langs
          # These values define the ANTLR-generated parser class used to
          # to tokenize and construct an AST for the target Java file.
          
          lang: java
        
          fileExt:
            - .java
        
          parserClass: com.log10x.antlr.generated.java.Java9Parser
        
          lexerClass: com.log10x.antlr.generated.java.Java9Lexer
        
          rootRule: compilationUnit
        
          reserved:
            - package
            - interface
            - class
            - enum
        
          # 'lineFilters' specifies a list of regex patterns for skipping input lines 
          lineFilters:
            - ^\s*(//.*|/\*.*\*/)$
        
          # The 'rule' list defines the nodes within a Java AST tree that are captured
          # and added to the output symbol unit.
          # To learn more see: https://doc.log10x.com/compile/scanner/antlr/rules/
          rule:
            - name: packageDeclaration
              lang: java
              context: package
              recursive: false
              capture: allSymbols
          
            - name: methodInvocation
              lang: java
              context: method_invoke
              recursive: true
              capture: literalsOnly
          
            - name: enumDeclaration
              lang: java
              context: class
              recursive: false
              capture: allSymbols
          
            - name: annotation
              lang: java
              context: annotation_invoke
              recursive: true
              capture: literalsOnly
          
            - name: normalClassDeclaration
              lang: java
              context: class
              recursive: false
              capture: allSymbols
          
            - name: variableInitializer
              lang: java
              context: var_assign
              recursive: true
              capture: literalsOnly
          
            - name: enumConstant
              lang: java
              context: enum
              recursive: false
              capture: allSymbols
          
            - name: returnStatement
              lang: java
              context: var_assign
              recursive: true
              capture: literalsOnly
          
            - name: methodDeclaration
              lang: java
              context: method_decl
              recursive: false
              capture: literalsOnly
          
            - name: argumentList
              lang: java
              context: method_invoke
              recursive: true
              capture: literalsOnly
          
            - name: methodInvocation_lfno_primary
              lang: java
              context: method_invoke
              recursive: true
              capture: literalsOnly
          
            - name: methodDeclarator
              lang: java
              context: method_decl
              recursive: false
              capture: allSymbols
          
            - name: methodInvocation_lf_primary
              lang: java
              context: method_invoke
              recursive: true
              capture: literalsOnly
          
            - name: normalInterfaceDeclaration
              lang: java
              context: class
              recursive: false
              capture: allSymbols
        ```

    === ":material-file-code: Javascript"

  
        #### Javascript {.hidden-heading}
        Configure  the [ANTLR scanner](/compile/scanner/antlr "Extract symbols from any programming language using the ANTLR framework") to extract symbols from any programming language using the ANTLR framework.  
  
        Below is the default configuration from: [antlr/javascript.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/antlr/javascript.yaml "antlr/javascript.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/antlr/javascript.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-javascript.yaml20-edit-button" data-tooltip="Edit configuration file" data-dialog-id="javascript-yaml20-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="javascript-yaml20-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit ANTLR scanner Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('javascript-yaml20-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/scanners/antlr/javascript.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/scanners/antlr/javascript.yaml"
                                    data-copy-win="C:\log10x\configs/compile/scanners/antlr/javascript.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/scanners/antlr/javascript.yaml">$TENX_CONFIG/compile/scanners/antlr/javascript.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/scanners/antlr/javascript.yaml">./pipelines/compile/scanners/antlr/javascript.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiYW50bHJQYXJzZVVuaXRUaW1lb3V0IiA6IHsKICAgICAgInR5cGUiIDogWyAic3RyaW5nIiwgIm51bGwiIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTb3VyY2UgZmlsZSBwYXJzZSB0aW1lb3V0XG5cbkRlZmluZXMgdGhlIHRpbWVvdXQgaW50ZXJ2YWwgZm9yIHBhcnNpbmcgYW5kIHNjYW5uaW5nIGEgc291cmNlL2JpbmFyeSBpbnB1dCBmaWxlIGJlZm9yZSBhYm9ydGluZy4gZGVmYXVsdCB2YWx1ZTogNjBzZWMiCiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

        ```yaml
        # 🔟❎ 'compile' JavaScript ANTLR symbol scanner configuration
        
        # The 'javascript' configuration instructs the ANTLR scanner which symbol values (e.g. class/func names, code constants)
        # to extract from JavaScript source files.  
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        # ============================== ANTLR Options ================================
        
        antlr:
        
          # The 'antlrLang' module is defined in: https://doc.log10x.com/compile/scanner/antlr/langs
          # These values define the ANTLR-generated parser class used to
          # to tokenize and construct an AST for the target JavaScript file.
        
          lang: javascript
        
          fileExt:
          - .js
        
          parserClass: com.log10x.antlr.parsers.JavaScriptDecoratedParser
        
          lexerClass: com.log10x.antlr.generated.javascript.JavaScriptLexer
        
          rootRule: program2
        
          reserved:
            - function
            - constructor
            - class
        
          maxLineLength: 4096
        
          # 'lineFilters' specifies a list of regex patterns for skipping input lines 
          lineFilters:
            - ^\s*(//.*|/\*.*\*/)$
        
          # The 'rule' list defines the nodes within a js AST tree that are captured
          # and added to the output symbol unit.
          # To learn more see: https://doc.log10x.com/compile/scanner/antlr/rules/
          rule:
            - name: functionDeclaration
              lang: javascript
              context: method_decl
              recursive: false
              capture: allSymbols
              subRule: identifier
            
            - name: returnStatement
              lang: javascript
              context: var_assign
              recursive: true
              capture: literalsOnly
          
            - name: classDeclaration
              lang: javascript
              context: class
              recursive: false
              capture: allSymbols
              subRule: identifier
          
            - name: methodDefinition
              lang: javascript
              context: method_decl
              recursive: true
              capture: allSymbols
              subRule: identifier
        
            - name: formalParameterList
              lang: javascript
              context: method_decl
              recursive: false
              capture: literalsOnly
          
            - name: functionBody
              lang: javascript
              context: method_invoke
              recursive: false
              capture: literalsOnly
          
            - name: functionDecl
              lang: javascript
              context: method_decl
              recursive: false
              capture: allSymbols
          
            - name: anoymousFunctionDecl
              lang: javascript
              context: method_decl
              recursive: false
              capture: allSymbols
          
            - name: argumentsExpression
              lang: javascript
              context: method_invoke
              recursive: true
              capture: literalsOnly
          
            - name: variableDeclaration
              lang: javascript
              context: var_assign
              recursive: true
              capture: literalsOnly
        
            - name: assignmentExpression
              lang: javascript
              context: var_assign
              recursive: true
              capture: literalsOnly
        ```

    === ":material-file-code: Python"

  
        #### Python {.hidden-heading}
        Configure  the [ANTLR scanner](/compile/scanner/antlr "Extract symbols from any programming language using the ANTLR framework") to extract symbols from any programming language using the ANTLR framework.  
  
        Below is the default configuration from: [antlr/python.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/antlr/python.yaml "antlr/python.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/antlr/python.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-python.yaml21-edit-button" data-tooltip="Edit configuration file" data-dialog-id="python-yaml21-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="python-yaml21-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit ANTLR scanner Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('python-yaml21-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/scanners/antlr/python.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/scanners/antlr/python.yaml"
                                    data-copy-win="C:\log10x\configs/compile/scanners/antlr/python.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/scanners/antlr/python.yaml">$TENX_CONFIG/compile/scanners/antlr/python.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/scanners/antlr/python.yaml">./pipelines/compile/scanners/antlr/python.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiYW50bHJQYXJzZVVuaXRUaW1lb3V0IiA6IHsKICAgICAgInR5cGUiIDogWyAic3RyaW5nIiwgIm51bGwiIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTb3VyY2UgZmlsZSBwYXJzZSB0aW1lb3V0XG5cbkRlZmluZXMgdGhlIHRpbWVvdXQgaW50ZXJ2YWwgZm9yIHBhcnNpbmcgYW5kIHNjYW5uaW5nIGEgc291cmNlL2JpbmFyeSBpbnB1dCBmaWxlIGJlZm9yZSBhYm9ydGluZy4gZGVmYXVsdCB2YWx1ZTogNjBzZWMiCiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

        ```yaml
        # 🔟❎ 'compile' Python symbol scanner configuration
        
        # The 'python' configuration instructs the ANTLR scanner which symbol values (e.g. class/func names, code constants)
        # to extract from Python source files.  
        
        # NOTE: while set to enabled by default, the 'pythonAST' scanner which utilizes
        # the python run-time's built-in AST parser takes precedence over this scanner
        # unless a python run-time is not installed or the 'pythonAST' scanner is disabled.
        # To learn see https://doc.log10x.com/compile/scanner/pythonAST
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        # ============================== ANTLR Options ================================
        
        antlr:
        
          # The 'antlrLang' module is defined in: https://doc.log10x.com/compile/scanner/antlr/langs
          # These values define the ANTLR-generated parser class used to
          # to tokenize and construct an AST for the target Python file.
        
          lang: python
        
          fileExt:
            - .py
        
          parserClass: com.log10x.antlr.generated.python.PythonParser
        
          lexerClass: com.log10x.antlr.generated.python.PythonLexer
        
          rootRule: root
        
          reserved:
            - def
            - __str__
            - __init__
            - class
        
          # 'lineFilters' specifies a list of regex patterns for skipping input lines 
          lineFilters:
            - ^\s*(//.*|/\*.*\*/)$
        
          # The 'rule' list defines the nodes within a Python AST tree that are captured
          # and added to the output symbol unit.
          # To learn more see: https://doc.log10x.com/compile/scanner/antlr/rules/
          rule:
            - name: classdef
              lang: python
              context: class
              recursive: false
              capture: allSymbols
              subRule: name
              condition: (^Enum$|^enum$)
              tag: enumLiteral
        
            - name: testlist_star_expr
              lang: python
              context: enum
              recursive: true
              capture: allSymbolsIfMatchCond
              ifTag: enumLiteral
        
            - name: trailer
              lang: python
              context: method_invoke
              recursive: true
              capture: literalsOnly
              subRule: name
          
            - name: return_stmt
              lang: python
              context: var_assign
              recursive: true
              capture: literalsOnly
          
            - name: decorator
              lang: python
              context: annotation_invoke
              recursive: true
              capture: literalsOnly
              subRule: arglist
            
            - name: arglist
              lang: python
              context: method_invoke
              recursive: true
              capture: literalsOnly
          
            - name: funcdef
              lang: python
              context: method_decl
              recursive: false
              capture: allSymbols
              subRule: name
          
            - name: assign_part
              lang: python
              context: var_assign
              recursive: true
              capture: literalsOnly
          
            - name: dictorsetmaker
              lang: python
              context: var_assign
              recursive: true
              capture: literalsOnly
        ```

    === ":material-file-code: Scala"

  
        #### Scala {.hidden-heading}
        Configure  the [ANTLR scanner](/compile/scanner/antlr "Extract symbols from any programming language using the ANTLR framework") to extract symbols from any programming language using the ANTLR framework.  
  
        Below is the default configuration from: [antlr/scala.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/antlr/scala.yaml "antlr/scala.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/antlr/scala.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-scala.yaml22-edit-button" data-tooltip="Edit configuration file" data-dialog-id="scala-yaml22-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="scala-yaml22-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit ANTLR scanner Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('scala-yaml22-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/scanners/antlr/scala.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/scanners/antlr/scala.yaml"
                                    data-copy-win="C:\log10x\configs/compile/scanners/antlr/scala.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/scanners/antlr/scala.yaml">$TENX_CONFIG/compile/scanners/antlr/scala.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/scanners/antlr/scala.yaml">./pipelines/compile/scanners/antlr/scala.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiYW50bHJQYXJzZVVuaXRUaW1lb3V0IiA6IHsKICAgICAgInR5cGUiIDogWyAic3RyaW5nIiwgIm51bGwiIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTb3VyY2UgZmlsZSBwYXJzZSB0aW1lb3V0XG5cbkRlZmluZXMgdGhlIHRpbWVvdXQgaW50ZXJ2YWwgZm9yIHBhcnNpbmcgYW5kIHNjYW5uaW5nIGEgc291cmNlL2JpbmFyeSBpbnB1dCBmaWxlIGJlZm9yZSBhYm9ydGluZy4gZGVmYXVsdCB2YWx1ZTogNjBzZWMiCiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

        ```yaml
        # 🔟❎ 'compile' Scala symbol scanner configuration
        
        # The 'scala' configuration instructs the ANTLR scanner which symbol values (e.g. class/func names, code constants)
        # to extract from Scala source files.
        
        # IMPORTANT: while set to enabled by default, the dedicated scala scanner utilizes 
        # takes precedence over this scanner unless disabled.
        # To learn more see https://doc.log10x.com/compile/scanner/scalameta
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        # ============================== ANTLR Options ================================
        
        antlr:
        
          # The 'antlrLang' module is defined in: https://doc.log10x.com/compile/scanner/antlr/langs
          # These values define the ANTLR grammar .g4 file used to
          # to tokenize and construct an AST for the target .Scala file.
        
          lang: scala
        
          fileExt:
            - .scala
            - .sc
        
          grammarFile: grammar/scala.g4
        
          rootRule: compilationUnit
        
          reserved:
            - interface
            - class
            - enum
            - this
        
          # 'lineFilters' specifies a list of regex patterns for skipping input lines 
          lineFilters:
            - ^\s*(//.*|/\*.*\*/)$
        
          # The 'rule' list defines the nodes within a scala AST tree that are captured
          # and added to the output symbol unit.
          # To learn more see: https://doc.log10x.com/compile/scanner/antlr/rules/
          rule:
          - name: classParamClauses
            lang: scala
            context: class
            recursive: false
            capture: literalsOnly
          
          - name: patVarDef
            lang: scala
            context: var_assign
            recursive: true
            capture: literalsOnly
          
          - name: argumentExprs
            lang: scala
            context: method_invoke
            recursive: true
            capture: literalsOnly
          
          - name: annotation
            lang: scala
            context: annotation_invoke
            recursive: true
            capture: literalsOnly
          
          - name: objectDef
            lang: scala
            context: class
            recursive: true
            capture: allSymbols
          
          - name: paramClauses
            lang: scala
            context: class
            recursive: false
            capture: literalsOnly
          
          - name: classTemplateOpt
            lang: scala
            context: class
            recursive: false
            capture: literalsOnly
          
          - name: funDcl
            lang: scala
            context: method_decl
            recursive: false
            capture: allSymbols
            
          - name: classDef
            lang: scala
            context: class
            recursive: true
            capture: allSymbols
          
          - name: qualId
            lang: scala
            context: package
            recursive: true
            capture: allSymbols
          
          - name: traitDef
            lang: scala
            context: class
            recursive: true
            capture: allSymbols
          
          - name: funDef
            lang: scala
            context: method_decl
            recursive: true
            capture: allSymbols
            subRule: funSig
          
          - name: type_
            lang: scala
            context: method_decl
            recursive: false
            capture: literalsOnly
          
          - name: blockStat
            lang: scala
            context: var_assign
            recursive: true
            capture: literalsOnly
          
          - name: templateStat
            lang: scala
            context: method_invoke
            recursive: true
            capture: literalsOnly
        ```

    === ":material-launch: Strings-nix"

  
        #### Strings-nix {.hidden-heading}
        Configure [Executable scanners](/compile/scanner/executable "Launch a target process from which to read symbol values via its stdout") to launch a target process from which to read symbol values via its stdout.  
  
        Below is the default configuration from: [executable/strings-nix.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/executable/strings-nix.yaml "executable/strings-nix.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/executable/strings-nix.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-strings-nix.yaml23-edit-button" data-tooltip="Edit configuration file" data-dialog-id="strings-nix-yaml23-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="strings-nix-yaml23-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Executable scanner Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('strings-nix-yaml23-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/scanners/executable/strings-nix.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/scanners/executable/strings-nix.yaml"
                                    data-copy-win="C:\log10x\configs/compile/scanners/executable/strings-nix.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/scanners/executable/strings-nix.yaml">$TENX_CONFIG/compile/scanners/executable/strings-nix.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/scanners/executable/strings-nix.yaml">./pipelines/compile/scanners/executable/strings-nix.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiZXhlYyIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJuYW1lIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQSBsb2dpY2FsIG5hbWUgZm9yIHRoaXMgZXhlYyBzY2FubmVyXG5cbkEgbG9naWNhbCBuYW1lIGZvciB0aGlzIGV4ZWMgc2Nhbm5lciB1bmlxdWUgYW1vbmdzdCBhbGwgc3BlY2lmaWVkIHNjYW5uZXIgb3B0aW9uIGdyb3VwcyAoZS5nLiwgJ3N0cmluZ3NOSVgnKSIKICAgICAgICAgIH0sCiAgICAgICAgICAib3NGaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIHBhdHRlcm4gdGhhdCBtdXN0IG1hdGNoIHRoZSBuYW1lIG9mIHRoZSBob3N0IE9TIHRvIGFwcGx5IHRoaXMgc2Nhbm5lci5cblxuRGVmaW5lcyBhIHBhdHRlcm4gdG8gbWF0Y2ggYWdhaW5zdCB0aGUgbmFtZSBvZiB0aGUgaG9zdCBPUyB0byBkZXRlcm1pbmUgd2hldGhlciB0byBhcHBseSB0aGlzIHNjYW5uZXIuIgogICAgICAgICAgfSwKICAgICAgICAgICJleHRlbnNpb25zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIGxpc3Qgb2YgZmlsZSBleHRlbnNpb25zIGEgdGFyZ2V0IGZpbGUgbXVzdCBtYXRjaCB0byBhcHBseSB0aGlzIHNjYW5uZXJcblxuQW4gYXJyYXkgb2YgZmlsZSBleHRlbnNpb25zIHRvIHRlc3QgYSBmaWxlIGNhbmRpZGF0ZSBhZ2FpbnN0LiBJZiB0aGUgY2FuZGlkYXRlIG1hdGNoZXMgYW55IGV4dGVuc2lvbnMsIGFwcGx5IHRoaXMgc2Nhbm5lci4iLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiZmlsZU5hbWVGaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIHBhdHRlcm4gdGhhdCB0aGUgdGFyZ2V0IGlucHV0IGZpbGUgbXVzdCBtYXRjaCB0byBhcHBseSB0aGlzIHNjYW5uZXJcblxuU2V0cyBhIHJlZ2V4IHBhdHRlcm4gdG8gdGVzdCBhIGZpbGUgY2FuZGlkYXRlIG5hbWUgYWdhaW5zdC4gSWYgdGhlIGNhbmRpZGF0ZSBtYXRjaGVzIGFueSBvZiB0aGUgZXh0ZW5zaW9ucywgYXBwbHkgdGhpcyBzY2FubmVyLiIKICAgICAgICAgIH0sCiAgICAgICAgICAic2VsZWN0b3IiIDogewogICAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAgICAgInByb2Nlc3MiIDogewogICAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWUgb2YgYSBwcm9jZXNzIHRvIGxhdW5jaCB3aG9zZSBvdXRwdXQgd2hldGhlciB0byBhcHBseSB0aGlzIGlucHV0XG5cbkRlZmluZSBhIHByb2Nlc3MgbmFtZSB0byBsYXVuY2ggdG8gb2J0YWluIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbnB1dCBmaWxlLiBJbiBzb21lIE9TcyAoZS5nLiwgTGludXgvVW5peCksIGV4ZWN1dGFibGUgZmlsZXMgZG8gbm90IG5lY2Vzc2FyaWx5IGhhdmUgYSBrbm93biBleHRlbnNpb24uIEZvciB0aGlzLCBhbiBPUyB1dGlsaXR5IHN1Y2ggYXMgTklYIFtmaWxlXShodHRwczovL21hbjcub3JnL2xpbnV4L21hbi1wYWdlcy9tYW4xL2ZpbGUuMS5odG1sKSBjYW4gb2J0YWluIGluZm9ybWF0aW9uIG9uIHRoZSBhY3R1YWwgZmlsZSBjb250ZW50cy4gIElmIGEgc2VsZWN0b3IgcHJvY2VzcyBpcyBub3QgcHJvdmlkZWQgdGhlIGZpbGUncyBFTEYvUEUvT1NYIGJpbmFyeSBoZWFkZXIgaXMgdGVzdGVkIGZvciBhIHBvc3NpYmxlIG1hdGNoLiIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJ3b3JrRGlyIiA6IHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgcGF0aCBvZiB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlbiBydW5uaW5nICdleGVjU2VsZWN0b3JQcm9jZXNzJ1xuXG5EZWZpbmVzIHRoZSB3b3JraW5nIGRpcmVjdG9yeSB3aGVuIHJ1bm5pbmcgW2V4ZWNTZWxlY3RvclByb2Nlc3NdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9zY2FubmVyL2V4ZWN1dGFibGUvI2V4ZWNzZWxlY3RvcnByb2Nlc3MpLiBJZiBvbWl0dGVkLCB3aWxsIHVzZSB0aGUgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJhcmdzIiA6IHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgYXJndW1lbnRzIHBhc3NlZCB0byAnZXhlY1NlbGVjdG9yUHJvY2VzcydcblxuRGVmaW5lcyBhcmd1bWVudHMgZm9yIHRoZSBzZWxlY3RvciBwcm9jZXNzLCBpZiBwcm92aWRlZC4gVGhlIGBmaWxlYCBtYWNybyB0YWtlcyB0aGUgdmFsdWUgb2YgdGhlIHRhcmdldCBleGVjIGZpbGUgdG8gbGF1bmNoLiIsCiAgICAgICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInRpbWVvdXQiIDogewogICAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRpbWVvdXQgcGVyaW9kIGFmdGVyIHdoaWNoIHRvIHRlcm1pbmF0ZSAnZXhlY1NlbGVjdG9yUHJvY2VzcyBwcm9jZXNzXG5cblNldHMgaG93IGxvbmcgdG8gYWxsb3cgdGhlIHNlbGVjdG9yIHByb2Nlc3MgdG8gcnVuIGJlZm9yZSB0ZXJtaW5hdGlvbiAoZS5nLiAnMTBzJykiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAib3V0cHV0RmlsdGVyIiA6IHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIGZpbHRlciBwYXR0ZXJuIHRoYXQgbXVzdCBtYXRjaCB0aGUgb3V0cHV0IG9mICdleGVjU2VsZWN0b3JQcm9jZXNzJyB0byBhcHBseSB0aGlzIHNjYW5uZXJcblxuRGVmaW5lcyBhIHJlZ2V4IHBhdHRlcm4gdG8gbWF0Y2ggYWdhaW5zdCB0aGUgY29udGVudHMgb2YgdGhlIHN0ZG91dCBzdHJlYW0gcmVhZCBmcm9tIHRoZSBbZXhlY1NlbGVjdG9yUHJvY2Vzc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3NjYW5uZXIvZXhlY3V0YWJsZS8jZXhlY3NlbGVjdG9ycHJvY2VzcykgcHJvY2Vzcy4gSWYgbWF0Y2hlZCwgYXBwbHkgdGhpcyBzY2FubmVyIHRvIHRoZSBpbnB1dCBmaWxlLiIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAicHJvY2VzcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlByb2Nlc3MgdG8gbGF1bmNoIGZvciBleHRyYWN0aW5nIHN5bWJvbCB2YWx1ZXNcblxuRGVmaW5lcyBhIHByb2Nlc3MgdG8gbGF1bmNoIGFuZCB3aG9zZSBzdGRvdXQgcGlwZSB0byBwYXJzZSBmb3Igc3ltYm9sIHZhbHVlcy4iCiAgICAgICAgICB9LAogICAgICAgICAgIndvcmtEaXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgcGF0aCBvZiB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlbiBydW5uaW5nICdleGVjUHJvY2VzcydcblxuRGVmaW5lcyB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlbiBydW5uaW5nIFtleGVjUHJvY2Vzc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3NjYW5uZXIvZXhlY3V0YWJsZS8jZXhlY3Byb2Nlc3MpLiBJZiBvbWl0dGVkLCB1c2VzIHRoZSB3b3JraW5nIGRpcmVjdG9yeS4iCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgYXJndW1lbnRzIHBhc3NlZCB0byAnZXhlY1Byb2Nlc3MnICgnZmlsZScgaXMgcmVwbGFjZWQgYnkgc2NhbiB0YXJnZXQpXG5cbkRlZmluZXMgbGF1bmNoIGFyZ3VtZW50cyBbZXhlY1Byb2Nlc3NdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9zY2FubmVyL2V4ZWN1dGFibGUvI2V4ZWNwcm9jZXNzKS4gVGhlIGBmaWxlYCBtYWNybyBleHBhbmRzIGludG8gdGhlIGlucHV0IGZpbGUgcGF0aCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0aW1lb3V0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGltZW91dCBwZXJpb2QgYWZ0ZXIgd2hpY2ggdG8gdGVybWluYXRlICdleGVjUHJvY2VzcycgcHJvY2Vzc1xuXG5EZWZpbmVzIGhvdyBsb25nIFtleGVjUHJvY2Vzc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3NjYW5uZXIvZXhlY3V0YWJsZS8jZXhlY3Byb2Nlc3MpIGlzIGFsbG93ZWQgdG8gcnVuIGJlZm9yZSB0ZXJtaW5hdGlvbiIKICAgICAgICAgIH0sCiAgICAgICAgICAic3ltYm9sIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgICAgICJtaW5MZW5ndGgiIDogewogICAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWluaW1hbCBsZW5ndGggb2YgdGhlIHN0cmluZyByZWFkIGZyb20gJ2V4ZWNQcm9jZXNzJyB0byByZWFkIGFzIGEgc3ltYm9sXG5cblNldHMgdGhlIG1pbmltYWwgbGVuZ3RoIGEgc3RyaW5nIHJlYWQgZnJvbSB0aGUgc2Nhbm5lciBwcm9jZXNzIHN0ZG91dCBtdXN0IGJlIHRvIGJlIGNvbnNpZGVyZWQgYSBzeW1ib2wgKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJtYXhMZW5ndGgiIDogewogICAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4IGxlbmd0aCB0aGUgc3RyaW5nIHJlYWQgZnJvbSAnZXhlY1Byb2Nlc3MnIHRvIHJlYWQgYXMgYSBzeW1ib2xcblxuU2V0cyB0aGUgbWF4aW11bSBsZW5ndGggYSBzdHJpbmcgcmVhZCBmcm9tIHRoZSBzY2FubmVyIHByb2Nlc3Mgc3Rkb3V0IG11c3QgYmUgdG8gYmUgY29uc2lkZXJlZCBhIHN5bWJvbCAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgImZpbHRlcnMiIDogewogICAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUGF0dGVybnMgYSBsaW5lIHJlYWQgZnJvbSAnZXhlY1Byb2Nlc3MnIG11c3QgTk9UIG1hdGNoXG5cbkRlZmluZXMgcmVnZXggcGF0dGVybnMgYXBwbGllZCB0byBlYWNoIGxpbmUgcmVhZCBmcm9tIHRoZSBzY2FubmVyIHByb2Nlc3MnIHN0ZG91dCB0aGF0IG11c3QgTk9UIG1hdGNoIGZvciB0aGUgbGluZSB2YWx1ZSB0byBiZSBjYXB0dXJlZCBhcyBhIHN5bWJvbC4gICBGb3IgZXhhbXBsZSwgdG8gYXZvaWQgW0FXQVYgYmluYXJ5XShodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zOTMyMjU1Mi9tZWFuaW5nLW9mLWEtY29tbW9uLXN0cmluZy1pbi1leGVjdXRhYmxlcykgd2hlbiB1c2luZyB0aGUgYHN0cmluZ3NgIE9TIHV0aWxpdHksIHNwZWNpZnk6ICBgYGAgeWFtbCBleGVjU3ltYm9sRmlsdGVyczogICAtICBeQVdBViAgICAgIGBgYGAiLAogICAgICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJzZXRTZWxlY3RvcnMiIDogewogICAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUmVnZXggcGF0dGVybnMgdG8gZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHRyZWF0IGFuIGlucHV0IHZhbHVlIGFzIHNldCBvZiB0b2tlbnNcblxuRGVmaW5lcyByZWdleCBwYXR0ZXJucyBtdXN0IEFMTCBtYXRjIHRvIHRyZWF0IGFuIGlucHV0IHZhbHVlIGFzIGEgbGluZSAoZS5nLiwgJ2Vycm9yIGNvbm5lY3RpbmcgdG8ge30nKSwgb3IgYXMgYSBzZXJpZXMgb2YgaW5kZXBlbmRlbnQgdG9rZW5zIChlLmcuLCAnZXJyb3InLCAnY29ubmVjdGluZycsICd0bycpIHRvIHJlZHVjZSB0aGUgY2FyZGluYWxpdHkgYW5kIHNpemUgb2YgdGhlIG91dHB1dCBzeW1ib2wgZmlsZS4gICBGb3IgZXhhbXBsZSwgd2hlbiBwcm9jZXNzaW5nIGZpbGVzIHRoYXQgY29udGFpbiB2YWx1ZXMgR08gY29tcGlsZSBzeW1ib2xzIHN1Y2ggYXM6ICAgYGBgIGdpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1jb2xsZWN0b3ItY29udHJpYi9leHBvcnRlci9maWxlZXhwb3J0ZXIuZ3JvdXBbZ28uc2hhcGUuc3RydWN0IGBgYCAgU3BlY2lmeSB0aGUgcGF0dGVybiBiZWxvdyB0byBicmVhayB0aGUgc3RyaW5nIGludG8gc2VwYXJhdGUgc3ltYm9sIHRva2VucyAoZS5nLiwgc2hhcGUsIHN0cnVjdCwuLik6ICAgYGBgIHlhbWwgc2V0U2VsZWN0b3JzOiAgLSBeKD86Z2l0aHViXFwuY29tfGdvbGFuZ1xcLm9yZ3x0eXBlOlxcLmVxXFwuKD86Z2l0aHViXFwuY29tfGdvbGFuZ1xcLm9yZykpKC9bYS16QS1aMC05Xy1dKykqJCAtIF5bYS16QS1aMC05Xy86XFwuXFxbXFxdXFwqLC1dKig/OlxcLlthLXpBLVowLTldK3xcXFtbYS16QS1aMC05LFxcLlxcKi86Xy1dK1xcXXwtZm0pPyQgYGBgIiwKICAgICAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgImlzU3RydWN0dXJlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgd2hldGhlciBvdXRwdXQgbGluZXMgcmVhZCBmcm9tICdleGVjUHJvY2VzcycgYXJlIHJlYWQgYXMgcGxhaW4gdGV4dCBvciBzdHJ1Y3R1cmVkIEpTT05cblxuQ29udHJvbHMgd2hldGhlciB0byByZWFkIHRoZSBbZXhlY1Byb2Nlc3NdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9zY2FubmVyL2V4ZWN1dGFibGUvI2V4ZWNwcm9jZXNzKSBzdGRvdXQgYXMgcGxhaW4gdGV4dCBvciBhcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgc291cmNlIGNvbnRleHQgaW5mb3JtYXRpb24uIElmIGZhbHNlIChkZWZhdWx0KSwgc3ltYm9sIHZhbHVlcyByZWFkIGZyb20gdGhlIHByb2Nlc3MnIG91dHB1dCBhcmUgbWFya2VkIGFzIGhhdmluZyBhbiBbZXhlY10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3N5bWJvbC8jZXhlYykgY29udGV4dC4gVG8gbGVhcm4gbW9yZSBhYm91dCBwcm9kdWNpbmcgc3RydWN0dXJlZCBzeW1ib2wgdmFsdWVzLCBzZWUgW1N5bWJvbFVuaXQuamF2YV0oaHR0cHM6Ly9naXRodWIuY29tL2xvZy0xMHgvcGlwZWxpbmUtZXh0ZW5zaW9ucy9ibG9iL21haW4vY2xvdWQtZXh0ZW5zaW9ucy9zcmMvbWFpbi9qYXZhL2NvbS9sb2cxMHgvZXh0L2Nsb3VkL2NvbXBpbGUvc3ltYm9sL1N5bWJvbFVuaXQuamF2YSkiCiAgICAgICAgICB9LAogICAgICAgICAgInN5bWJvbHNQcmVmaXgiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIHByZWZpeCBsaW5lcyByZWFkIGZyb20gJ2V4ZWNQcm9jZXNzJyBtdXN0IG1hdGNoIHRvIHBhcnNlIGFzIHN0cnVjdHVyZWQgSlNPTiBzeW1ib2xzXG5cblNldHMgYSBwcmVmaXggdGhhdCBtdXN0IHByZWNlZGUgbGluZXMgcmVhZCBmcm9tIHRoZSBzY2FuIHByb2Nlc3MnIHN0ZG91dCB0byBwYXJzZSBhcyBzdHJ1Y3R1cmVkIEpTT04gc3ltYm9sIHRyZWVzLiBPbmx5IGFwcGxpZXMgd2hlbiBbZXhlY0lzU3RydWN0dXJlZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3NjYW5uZXIvZXhlY3V0YWJsZS8jZXhlY2lzc3RydWN0dXJlZCkgaXMgdHJ1ZSAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJyZXF1aXJlZCIgOiBbCiAgICAgICAgICAibmFtZSIsCiAgICAgICAgICAib3NGaWx0ZXIiCiAgICAgICAgXQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

        ```yaml
        # # 🔟❎ 'compile' executable 'strings' configuration
        
        # This executable symbol scanner configuration uses OS-specific utilities to extract 
        # constant string values from pre-compiled binaries (e.g. programs, shared libraries).
        # Any matching text values are added to the output symbol files.
        
        # The following configuration is added by default to the 10x 'compile' pipeline.
        # If another 'executable' scanner is defined whose 'osFilter' matches that of the 
        # current target input file, it will take precedence over the scanners defined below.
        # To learn more about the 'executable' scanner, 
        # see: https://doc.log10x.com/compile/scanner/executable
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        # =============================== Exec Options ================================
        
        exec: 
         
            # This scanner uses the Linux built-in 'strings' (https://linux.die.net/man/1/file)
            # command to extract symbol values from a target binary executable file
          - name: stringsNIX
            
            # This configuration targets NIX OSs
            osFilter: (nix|nux|lux|mac)  
            
            # try for known extensions before invoking a 'selectorProcess'
            extensions:   
              - .so
              - .dynlib   
              
            # 'selector' processes provide a method for determining whether a file is an executable binary.
            #  If a selector process is not provided the file's ELF/PE/OSX binary header is tested. 
            #  Since on NIX, executables do not have a known extension,
            #  the 'selector' process uses the built-in 'file' command whose 
            #  output is used to verify the target file is a NIX executable file.   
            selector:
              process: file
              args:
                - file # this macro value is replaced at run-time by the actual input file name
              timeout: 5s      
              outputFilter: ".*?\\bexecutable\\b.*?" # select 'executable' files
              
            process: strings    
            args:
              - -a   # scan the whole file, not just initialized and loaded sections 
              - file # This macro value is replaced at run-time by the actual text/binary input file   
            timeout: 100s
        
            symbol: 
              # 'minLength' specifies the min number of chars a value extracted via strings must be to 
              #  in order to qualify as a symbol. 
              minLength: 4  
        
              # 'maxLength' specifies the max number of chars a value extracted via strings must be to 
              #  in order to qualify as a symbol. 
              maxLength: 1024
        
              # 'filters' defines regex patterns applied to each line read from the scanner process' stdout 
              #  that must NOT match for the line value to be considered a symbol.
              filters: 
                - AWAV.  # https://stackoverflow.com/questions/39322552/meaning-of-a-common-string-in-executables
                - "^(?=^.{0,7}$)(?=.*[^a-zA-Z]).*$" # Matches any string that is shorter than 8 characters (0 to 7 chars) and contains at least one non-alphabetic character.
        
              # 'setSelector' specifies regex patterns that determines whether to treat an input value as set of tokens    
              setSelectors:
                - '^[0-9].*$'                  # Starts with digit
                - '^\*.*$'                     # Starts with *
                - '^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}(?:/[^\s]*)?$' # Domain + optional path (e.g., github.com/user/repo)
                - '^type:\\..*$'               # Go land metadata starts with "type:." (any suffix)
        ```

    === ":material-launch: Strings-win"

  
        #### Strings-win {.hidden-heading}
        Configure [Executable scanners](/compile/scanner/executable "Launch a target process from which to read symbol values via its stdout") to launch a target process from which to read symbol values via its stdout.  
  
        Below is the default configuration from: [executable/strings-win.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/executable/strings-win.yaml "executable/strings-win.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/scanners/executable/strings-win.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-strings-win.yaml24-edit-button" data-tooltip="Edit configuration file" data-dialog-id="strings-win-yaml24-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="strings-win-yaml24-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Executable scanner Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('strings-win-yaml24-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/compile/scanners/executable/strings-win.yaml"
                                    data-copy-nix="/etc/log10x/config/compile/scanners/executable/strings-win.yaml"
                                    data-copy-win="C:\log10x\configs/compile/scanners/executable/strings-win.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/compile/scanners/executable/strings-win.yaml">$TENX_CONFIG/compile/scanners/executable/strings-win.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/compile/scanners/executable/strings-win.yaml">./pipelines/compile/scanners/executable/strings-win.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiZXhlYyIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJuYW1lIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQSBsb2dpY2FsIG5hbWUgZm9yIHRoaXMgZXhlYyBzY2FubmVyXG5cbkEgbG9naWNhbCBuYW1lIGZvciB0aGlzIGV4ZWMgc2Nhbm5lciB1bmlxdWUgYW1vbmdzdCBhbGwgc3BlY2lmaWVkIHNjYW5uZXIgb3B0aW9uIGdyb3VwcyAoZS5nLiwgJ3N0cmluZ3NOSVgnKSIKICAgICAgICAgIH0sCiAgICAgICAgICAib3NGaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIHBhdHRlcm4gdGhhdCBtdXN0IG1hdGNoIHRoZSBuYW1lIG9mIHRoZSBob3N0IE9TIHRvIGFwcGx5IHRoaXMgc2Nhbm5lci5cblxuRGVmaW5lcyBhIHBhdHRlcm4gdG8gbWF0Y2ggYWdhaW5zdCB0aGUgbmFtZSBvZiB0aGUgaG9zdCBPUyB0byBkZXRlcm1pbmUgd2hldGhlciB0byBhcHBseSB0aGlzIHNjYW5uZXIuIgogICAgICAgICAgfSwKICAgICAgICAgICJleHRlbnNpb25zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIGxpc3Qgb2YgZmlsZSBleHRlbnNpb25zIGEgdGFyZ2V0IGZpbGUgbXVzdCBtYXRjaCB0byBhcHBseSB0aGlzIHNjYW5uZXJcblxuQW4gYXJyYXkgb2YgZmlsZSBleHRlbnNpb25zIHRvIHRlc3QgYSBmaWxlIGNhbmRpZGF0ZSBhZ2FpbnN0LiBJZiB0aGUgY2FuZGlkYXRlIG1hdGNoZXMgYW55IGV4dGVuc2lvbnMsIGFwcGx5IHRoaXMgc2Nhbm5lci4iLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiZmlsZU5hbWVGaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIHBhdHRlcm4gdGhhdCB0aGUgdGFyZ2V0IGlucHV0IGZpbGUgbXVzdCBtYXRjaCB0byBhcHBseSB0aGlzIHNjYW5uZXJcblxuU2V0cyBhIHJlZ2V4IHBhdHRlcm4gdG8gdGVzdCBhIGZpbGUgY2FuZGlkYXRlIG5hbWUgYWdhaW5zdC4gSWYgdGhlIGNhbmRpZGF0ZSBtYXRjaGVzIGFueSBvZiB0aGUgZXh0ZW5zaW9ucywgYXBwbHkgdGhpcyBzY2FubmVyLiIKICAgICAgICAgIH0sCiAgICAgICAgICAic2VsZWN0b3IiIDogewogICAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAgICAgInByb2Nlc3MiIDogewogICAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWUgb2YgYSBwcm9jZXNzIHRvIGxhdW5jaCB3aG9zZSBvdXRwdXQgd2hldGhlciB0byBhcHBseSB0aGlzIGlucHV0XG5cbkRlZmluZSBhIHByb2Nlc3MgbmFtZSB0byBsYXVuY2ggdG8gb2J0YWluIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbnB1dCBmaWxlLiBJbiBzb21lIE9TcyAoZS5nLiwgTGludXgvVW5peCksIGV4ZWN1dGFibGUgZmlsZXMgZG8gbm90IG5lY2Vzc2FyaWx5IGhhdmUgYSBrbm93biBleHRlbnNpb24uIEZvciB0aGlzLCBhbiBPUyB1dGlsaXR5IHN1Y2ggYXMgTklYIFtmaWxlXShodHRwczovL21hbjcub3JnL2xpbnV4L21hbi1wYWdlcy9tYW4xL2ZpbGUuMS5odG1sKSBjYW4gb2J0YWluIGluZm9ybWF0aW9uIG9uIHRoZSBhY3R1YWwgZmlsZSBjb250ZW50cy4gIElmIGEgc2VsZWN0b3IgcHJvY2VzcyBpcyBub3QgcHJvdmlkZWQgdGhlIGZpbGUncyBFTEYvUEUvT1NYIGJpbmFyeSBoZWFkZXIgaXMgdGVzdGVkIGZvciBhIHBvc3NpYmxlIG1hdGNoLiIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJ3b3JrRGlyIiA6IHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgcGF0aCBvZiB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlbiBydW5uaW5nICdleGVjU2VsZWN0b3JQcm9jZXNzJ1xuXG5EZWZpbmVzIHRoZSB3b3JraW5nIGRpcmVjdG9yeSB3aGVuIHJ1bm5pbmcgW2V4ZWNTZWxlY3RvclByb2Nlc3NdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9zY2FubmVyL2V4ZWN1dGFibGUvI2V4ZWNzZWxlY3RvcnByb2Nlc3MpLiBJZiBvbWl0dGVkLCB3aWxsIHVzZSB0aGUgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJhcmdzIiA6IHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgYXJndW1lbnRzIHBhc3NlZCB0byAnZXhlY1NlbGVjdG9yUHJvY2VzcydcblxuRGVmaW5lcyBhcmd1bWVudHMgZm9yIHRoZSBzZWxlY3RvciBwcm9jZXNzLCBpZiBwcm92aWRlZC4gVGhlIGBmaWxlYCBtYWNybyB0YWtlcyB0aGUgdmFsdWUgb2YgdGhlIHRhcmdldCBleGVjIGZpbGUgdG8gbGF1bmNoLiIsCiAgICAgICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInRpbWVvdXQiIDogewogICAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRpbWVvdXQgcGVyaW9kIGFmdGVyIHdoaWNoIHRvIHRlcm1pbmF0ZSAnZXhlY1NlbGVjdG9yUHJvY2VzcyBwcm9jZXNzXG5cblNldHMgaG93IGxvbmcgdG8gYWxsb3cgdGhlIHNlbGVjdG9yIHByb2Nlc3MgdG8gcnVuIGJlZm9yZSB0ZXJtaW5hdGlvbiAoZS5nLiAnMTBzJykiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAib3V0cHV0RmlsdGVyIiA6IHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIGZpbHRlciBwYXR0ZXJuIHRoYXQgbXVzdCBtYXRjaCB0aGUgb3V0cHV0IG9mICdleGVjU2VsZWN0b3JQcm9jZXNzJyB0byBhcHBseSB0aGlzIHNjYW5uZXJcblxuRGVmaW5lcyBhIHJlZ2V4IHBhdHRlcm4gdG8gbWF0Y2ggYWdhaW5zdCB0aGUgY29udGVudHMgb2YgdGhlIHN0ZG91dCBzdHJlYW0gcmVhZCBmcm9tIHRoZSBbZXhlY1NlbGVjdG9yUHJvY2Vzc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3NjYW5uZXIvZXhlY3V0YWJsZS8jZXhlY3NlbGVjdG9ycHJvY2VzcykgcHJvY2Vzcy4gSWYgbWF0Y2hlZCwgYXBwbHkgdGhpcyBzY2FubmVyIHRvIHRoZSBpbnB1dCBmaWxlLiIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAicHJvY2VzcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlByb2Nlc3MgdG8gbGF1bmNoIGZvciBleHRyYWN0aW5nIHN5bWJvbCB2YWx1ZXNcblxuRGVmaW5lcyBhIHByb2Nlc3MgdG8gbGF1bmNoIGFuZCB3aG9zZSBzdGRvdXQgcGlwZSB0byBwYXJzZSBmb3Igc3ltYm9sIHZhbHVlcy4iCiAgICAgICAgICB9LAogICAgICAgICAgIndvcmtEaXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgcGF0aCBvZiB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlbiBydW5uaW5nICdleGVjUHJvY2VzcydcblxuRGVmaW5lcyB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlbiBydW5uaW5nIFtleGVjUHJvY2Vzc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3NjYW5uZXIvZXhlY3V0YWJsZS8jZXhlY3Byb2Nlc3MpLiBJZiBvbWl0dGVkLCB1c2VzIHRoZSB3b3JraW5nIGRpcmVjdG9yeS4iCiAgICAgICAgICB9LAogICAgICAgICAgImFyZ3MiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgYXJndW1lbnRzIHBhc3NlZCB0byAnZXhlY1Byb2Nlc3MnICgnZmlsZScgaXMgcmVwbGFjZWQgYnkgc2NhbiB0YXJnZXQpXG5cbkRlZmluZXMgbGF1bmNoIGFyZ3VtZW50cyBbZXhlY1Byb2Nlc3NdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9zY2FubmVyL2V4ZWN1dGFibGUvI2V4ZWNwcm9jZXNzKS4gVGhlIGBmaWxlYCBtYWNybyBleHBhbmRzIGludG8gdGhlIGlucHV0IGZpbGUgcGF0aCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0aW1lb3V0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGltZW91dCBwZXJpb2QgYWZ0ZXIgd2hpY2ggdG8gdGVybWluYXRlICdleGVjUHJvY2VzcycgcHJvY2Vzc1xuXG5EZWZpbmVzIGhvdyBsb25nIFtleGVjUHJvY2Vzc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3NjYW5uZXIvZXhlY3V0YWJsZS8jZXhlY3Byb2Nlc3MpIGlzIGFsbG93ZWQgdG8gcnVuIGJlZm9yZSB0ZXJtaW5hdGlvbiIKICAgICAgICAgIH0sCiAgICAgICAgICAic3ltYm9sIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgICAgICJtaW5MZW5ndGgiIDogewogICAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWluaW1hbCBsZW5ndGggb2YgdGhlIHN0cmluZyByZWFkIGZyb20gJ2V4ZWNQcm9jZXNzJyB0byByZWFkIGFzIGEgc3ltYm9sXG5cblNldHMgdGhlIG1pbmltYWwgbGVuZ3RoIGEgc3RyaW5nIHJlYWQgZnJvbSB0aGUgc2Nhbm5lciBwcm9jZXNzIHN0ZG91dCBtdXN0IGJlIHRvIGJlIGNvbnNpZGVyZWQgYSBzeW1ib2wgKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJtYXhMZW5ndGgiIDogewogICAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4IGxlbmd0aCB0aGUgc3RyaW5nIHJlYWQgZnJvbSAnZXhlY1Byb2Nlc3MnIHRvIHJlYWQgYXMgYSBzeW1ib2xcblxuU2V0cyB0aGUgbWF4aW11bSBsZW5ndGggYSBzdHJpbmcgcmVhZCBmcm9tIHRoZSBzY2FubmVyIHByb2Nlc3Mgc3Rkb3V0IG11c3QgYmUgdG8gYmUgY29uc2lkZXJlZCBhIHN5bWJvbCAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgImZpbHRlcnMiIDogewogICAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUGF0dGVybnMgYSBsaW5lIHJlYWQgZnJvbSAnZXhlY1Byb2Nlc3MnIG11c3QgTk9UIG1hdGNoXG5cbkRlZmluZXMgcmVnZXggcGF0dGVybnMgYXBwbGllZCB0byBlYWNoIGxpbmUgcmVhZCBmcm9tIHRoZSBzY2FubmVyIHByb2Nlc3MnIHN0ZG91dCB0aGF0IG11c3QgTk9UIG1hdGNoIGZvciB0aGUgbGluZSB2YWx1ZSB0byBiZSBjYXB0dXJlZCBhcyBhIHN5bWJvbC4gICBGb3IgZXhhbXBsZSwgdG8gYXZvaWQgW0FXQVYgYmluYXJ5XShodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zOTMyMjU1Mi9tZWFuaW5nLW9mLWEtY29tbW9uLXN0cmluZy1pbi1leGVjdXRhYmxlcykgd2hlbiB1c2luZyB0aGUgYHN0cmluZ3NgIE9TIHV0aWxpdHksIHNwZWNpZnk6ICBgYGAgeWFtbCBleGVjU3ltYm9sRmlsdGVyczogICAtICBeQVdBViAgICAgIGBgYGAiLAogICAgICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJzZXRTZWxlY3RvcnMiIDogewogICAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUmVnZXggcGF0dGVybnMgdG8gZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHRyZWF0IGFuIGlucHV0IHZhbHVlIGFzIHNldCBvZiB0b2tlbnNcblxuRGVmaW5lcyByZWdleCBwYXR0ZXJucyBtdXN0IEFMTCBtYXRjIHRvIHRyZWF0IGFuIGlucHV0IHZhbHVlIGFzIGEgbGluZSAoZS5nLiwgJ2Vycm9yIGNvbm5lY3RpbmcgdG8ge30nKSwgb3IgYXMgYSBzZXJpZXMgb2YgaW5kZXBlbmRlbnQgdG9rZW5zIChlLmcuLCAnZXJyb3InLCAnY29ubmVjdGluZycsICd0bycpIHRvIHJlZHVjZSB0aGUgY2FyZGluYWxpdHkgYW5kIHNpemUgb2YgdGhlIG91dHB1dCBzeW1ib2wgZmlsZS4gICBGb3IgZXhhbXBsZSwgd2hlbiBwcm9jZXNzaW5nIGZpbGVzIHRoYXQgY29udGFpbiB2YWx1ZXMgR08gY29tcGlsZSBzeW1ib2xzIHN1Y2ggYXM6ICAgYGBgIGdpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1jb2xsZWN0b3ItY29udHJpYi9leHBvcnRlci9maWxlZXhwb3J0ZXIuZ3JvdXBbZ28uc2hhcGUuc3RydWN0IGBgYCAgU3BlY2lmeSB0aGUgcGF0dGVybiBiZWxvdyB0byBicmVhayB0aGUgc3RyaW5nIGludG8gc2VwYXJhdGUgc3ltYm9sIHRva2VucyAoZS5nLiwgc2hhcGUsIHN0cnVjdCwuLik6ICAgYGBgIHlhbWwgc2V0U2VsZWN0b3JzOiAgLSBeKD86Z2l0aHViXFwuY29tfGdvbGFuZ1xcLm9yZ3x0eXBlOlxcLmVxXFwuKD86Z2l0aHViXFwuY29tfGdvbGFuZ1xcLm9yZykpKC9bYS16QS1aMC05Xy1dKykqJCAtIF5bYS16QS1aMC05Xy86XFwuXFxbXFxdXFwqLC1dKig/OlxcLlthLXpBLVowLTldK3xcXFtbYS16QS1aMC05LFxcLlxcKi86Xy1dK1xcXXwtZm0pPyQgYGBgIiwKICAgICAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgImlzU3RydWN0dXJlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgd2hldGhlciBvdXRwdXQgbGluZXMgcmVhZCBmcm9tICdleGVjUHJvY2VzcycgYXJlIHJlYWQgYXMgcGxhaW4gdGV4dCBvciBzdHJ1Y3R1cmVkIEpTT05cblxuQ29udHJvbHMgd2hldGhlciB0byByZWFkIHRoZSBbZXhlY1Byb2Nlc3NdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9zY2FubmVyL2V4ZWN1dGFibGUvI2V4ZWNwcm9jZXNzKSBzdGRvdXQgYXMgcGxhaW4gdGV4dCBvciBhcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgc291cmNlIGNvbnRleHQgaW5mb3JtYXRpb24uIElmIGZhbHNlIChkZWZhdWx0KSwgc3ltYm9sIHZhbHVlcyByZWFkIGZyb20gdGhlIHByb2Nlc3MnIG91dHB1dCBhcmUgbWFya2VkIGFzIGhhdmluZyBhbiBbZXhlY10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3N5bWJvbC8jZXhlYykgY29udGV4dC4gVG8gbGVhcm4gbW9yZSBhYm91dCBwcm9kdWNpbmcgc3RydWN0dXJlZCBzeW1ib2wgdmFsdWVzLCBzZWUgW1N5bWJvbFVuaXQuamF2YV0oaHR0cHM6Ly9naXRodWIuY29tL2xvZy0xMHgvcGlwZWxpbmUtZXh0ZW5zaW9ucy9ibG9iL21haW4vY2xvdWQtZXh0ZW5zaW9ucy9zcmMvbWFpbi9qYXZhL2NvbS9sb2cxMHgvZXh0L2Nsb3VkL2NvbXBpbGUvc3ltYm9sL1N5bWJvbFVuaXQuamF2YSkiCiAgICAgICAgICB9LAogICAgICAgICAgInN5bWJvbHNQcmVmaXgiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIHByZWZpeCBsaW5lcyByZWFkIGZyb20gJ2V4ZWNQcm9jZXNzJyBtdXN0IG1hdGNoIHRvIHBhcnNlIGFzIHN0cnVjdHVyZWQgSlNPTiBzeW1ib2xzXG5cblNldHMgYSBwcmVmaXggdGhhdCBtdXN0IHByZWNlZGUgbGluZXMgcmVhZCBmcm9tIHRoZSBzY2FuIHByb2Nlc3MnIHN0ZG91dCB0byBwYXJzZSBhcyBzdHJ1Y3R1cmVkIEpTT04gc3ltYm9sIHRyZWVzLiBPbmx5IGFwcGxpZXMgd2hlbiBbZXhlY0lzU3RydWN0dXJlZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3NjYW5uZXIvZXhlY3V0YWJsZS8jZXhlY2lzc3RydWN0dXJlZCkgaXMgdHJ1ZSAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJyZXF1aXJlZCIgOiBbCiAgICAgICAgICAibmFtZSIsCiAgICAgICAgICAib3NGaWx0ZXIiCiAgICAgICAgXQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

        ```yaml
        # # 🔟❎ 'compile' executable 'strings' configuration
        
        # This executable symbol scanner configuration uses OS-specific utilities to extract 
        # constant string values from pre-compiled binaries (e.g. programs, shared libraries).
        # Any matching text values are added to the output symbol files.
        
        # The following configuration is added by default to the 10x 'compile' pipeline.
        # If another 'executable' scanner is defined whose 'osFilter' matches that of the 
        # current target input file, it will take precedence over the scanners defined below.
        # To learn more about the 'executable' scanner, 
        # see: https://doc.log10x.com/compile/scanner/executable/
        
        # Set the 10x pipeline to 'compile'
        tenx: compile
        
        # =============================== Exec Options ================================
        
        exec: 
         
            # This configuration provides a similar capability for scanning Windows executable files.
        
            # *IMPORTANT*: On Windows, the 'strings' command is not installed by default and
            # should be downloaded from: https://docs.microsoft.com/en-us/sysinternals/downloads/strings   
            # and added to 'PATH'    
          - name: stringsWin
          
              # target Win
            osFilter: win   
            
            extensions:
              - .so
              - .dll         
            
            process: strings
            args:
              - file # This macro value is replaced at run-time by the actual input file name
            timeout: 10s
            
        ```

<br/>:material-github: This app is defined in [compiler/app.yaml](https://github.com/log-10x/modules/tree/main/pipelines/compiler/app.yaml "compiler/app.yaml"){target="\_blank"}.

