_comp_cmd_llama_batched()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        -kvu --kv-unified
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_batched llama-batched
_comp_cmd_llama_batched_bench()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        -kvu --kv-unified
        -pps
        -tgs
        -npp
        -ntg
        -npl
        --output-format
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --output-format )
            COMPREPLY=( $(compgen -W 'md jsonl' -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_batched_bench llama-batched-bench
_comp_cmd_llama_cli()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        --spec-draft-hf -hfd -hfrd --hf-repo-draft
        --spec-draft-threads -td --threads-draft
        --spec-draft-threads-batch -tbd --threads-batch-draft
        --spec-draft-cpu-mask -Cd --cpu-mask-draft
        --spec-draft-cpu-range -Crd --cpu-range-draft
        --spec-draft-cpu-strict --cpu-strict-draft
        --spec-draft-prio --prio-draft
        --spec-draft-poll --poll-draft
        --spec-draft-cpu-mask-batch -Cbd --cpu-mask-batch-draft
        --spec-draft-cpu-strict-batch --cpu-strict-batch-draft
        --spec-draft-prio-batch --prio-batch-draft
        --spec-draft-poll-batch --poll-batch-draft
        --spec-draft-override-tensor -otd --override-tensor-draft
        --spec-draft-cpu-moe -cmoed --cpu-moe-draft
        --spec-draft-n-cpu-moe --spec-draft-ncmoe -ncmoed --n-cpu-moe-draft
        --spec-draft-n-max
        --spec-draft-n-min
        --spec-draft-n-ubatch
        --spec-synth-len
        --spec-synth-rates
        --spec-draft-p-split --draft-p-split
        --spec-draft-p-min --draft-p-min
        --spec-draft-backend-sampling
        --spec-draft-sampling
        --spec-draft-device -devd --device-draft
        --spec-draft-ngl -ngld --gpu-layers-draft --n-gpu-layers-draft
        --spec-draft-model -md --model-draft
        --spec-type
        --spec-ngram-mod-n-min
        --spec-ngram-mod-n-max
        --spec-ngram-mod-n-match
        --spec-ngram-simple-size-n
        --spec-ngram-simple-size-m
        --spec-ngram-simple-min-hits
        --spec-ngram-map-k-size-n
        --spec-ngram-map-k-size-m
        --spec-ngram-map-k-min-hits
        --spec-ngram-map-k4v-size-n
        --spec-ngram-map-k4v-size-m
        --spec-ngram-map-k4v-min-hits
        --draft --draft-n --draft-max
        --draft-min --draft-n-min
        --server-base
        --verbose-prompt
        --display-prompt
        -co --color
        -ctxcp --ctx-checkpoints --swa-checkpoints
        -cram --cache-ram
        --context-shift
        -sys --system-prompt
        --show-timings
        -sysf --system-prompt-file
        -r --reverse-prompt
        -sp --special
        -st --single-turn
        -mli --multiline-input
        --warmup
        -mm --mmproj
        -mmu --mmproj-url
        --mmproj-auto
        --mmproj-offload
        -mmdev --mmproj-device
        --image --audio --video
        --image-min-tokens
        --image-max-tokens
        --video-fps
        --video-timestamp-interval
        --video-ffmpeg-dir
        -o --output --output-file
        --chat-template-kwargs
        --jinja
        --reasoning-format
        -rea --reasoning
        --reasoning-effort
        --reasoning-budget
        --reasoning-budget-message
        --reasoning-preserve
        --chat-template
        --chat-template-file
        --skip-chat-parsing
        --simple-io
        --log-prompts-dir
        --gpt-oss-20b-default
        --gpt-oss-120b-default
        --vision-gemma-4b-default
        --vision-gemma-12b-default
        --spec-default
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --spec-draft-cpu-strict | --cpu-strict-draft )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --spec-draft-poll | --poll-draft )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --spec-draft-cpu-strict-batch | --cpu-strict-batch-draft )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --spec-draft-poll-batch | --poll-batch-draft )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -co | --color )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        -mm | --mmproj )
            COMPREPLY=( $(compgen -f -X '!*.mmproj' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --chat-template-file )
            COMPREPLY=( $(compgen -f -X '!*.jinja' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-prompts-dir )
            COMPREPLY=( $(compgen -d -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_cli llama-cli
_comp_cmd_llama_completion()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        --verbose-prompt
        --display-prompt
        -co --color
        --context-shift
        -sys --system-prompt
        -sysf --system-prompt-file
        -ptc --print-token-count
        --prompt-cache
        --prompt-cache-all
        --prompt-cache-ro
        -r --reverse-prompt
        -sp --special
        -cnv --conversation
        -st --single-turn
        -i --interactive
        -if --interactive-first
        -mli --multiline-input
        --in-prefix-bos
        --in-prefix
        --in-suffix
        --warmup
        -gan --grp-attn-n
        -gaw --grp-attn-w
        --jinja
        --reasoning-format
        -rea --reasoning
        --reasoning-effort
        --reasoning-budget
        --reasoning-budget-message
        --reasoning-preserve
        --chat-template
        --chat-template-file
        --skip-chat-parsing
        --simple-io
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -co | --color )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --chat-template-file )
            COMPREPLY=( $(compgen -f -X '!*.jinja' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_completion llama-completion
_comp_cmd_llama_debug()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        --warmup
        --pooling
        --embd-normalize
        --embedding --embeddings
        --save-logits
        --logits-output-dir
        --tensor-filter
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --pooling )
            COMPREPLY=( $(compgen -W 'none mean cls last rank' -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_debug llama-debug
_comp_cmd_llama_diffusion_cli()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        -sys --system-prompt
        -sysf --system-prompt-file
        --diffusion-steps
        --diffusion-visual
        --diffusion-eps
        --diffusion-algorithm
        --diffusion-alg-temp
        --diffusion-block-length
        --diffusion-cfg-scale
        --diffusion-add-gumbel-noise
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_diffusion_cli llama-diffusion-cli
_comp_cmd_llama_embedding()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        --verbose-prompt
        --warmup
        --pooling
        --attention
        --embd-normalize
        --embd-output-format
        --embd-separator
        --cls-separator
        --embd-gemma-default
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --pooling )
            COMPREPLY=( $(compgen -W 'none mean cls last rank' -- "$cur") )
            return 0
        ;;
        --attention )
            COMPREPLY=( $(compgen -W 'causal non-causal' -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_embedding llama-embedding
_comp_cmd_llama_eval_callback()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
    "

    case "$prev" in
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_eval_callback llama-eval-callback
_comp_cmd_llama_finetune()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        -o --output --output-file
        -lr --learning-rate
        -lr-min --learning-rate-min
        -decay-epochs --learning-rate-decay-epochs
        -wd --weight-decay
        -val-split --val-split
        -epochs --epochs
        -opt --optimizer
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -opt | --optimizer )
            COMPREPLY=( $(compgen -W 'adamw sgd' -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_finetune llama-finetune
_comp_cmd_llama_fit_params()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        -fitp --fit-print
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -fitp | --fit-print )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_fit_params llama-fit-params
_comp_cmd_llama_idle()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
    "

    case "$prev" in
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_idle llama-idle
_comp_cmd_llama_imatrix()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        --spec-draft-model -md --model-draft
        --context-shift
        --chunks
        --in-file
        -o --output --output-file
        -ofreq --output-frequency
        --output-format
        --save-frequency
        --process-output
        --nextn
        --ppl
        --chunk --from-chunk
        --show-statistics
        --parse-special
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --output-format )
            COMPREPLY=( $(compgen -W 'gguf dat' -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_imatrix llama-imatrix
_comp_cmd_llama_lookahead()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
    "

    case "$prev" in
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_lookahead llama-lookahead
_comp_cmd_llama_lookup()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        --spec-draft-n-max
        --spec-draft-n-min
        --draft --draft-n --draft-max
        --draft-min --draft-n-min
        -co --color
        -lcs --lookup-cache-static
        -lcd --lookup-cache-dynamic
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -co | --color )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_lookup llama-lookup
_comp_cmd_llama_lookup_create()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        --spec-draft-n-max
        --spec-draft-n-min
        --draft --draft-n --draft-max
        --draft-min --draft-n-min
        -co --color
        -lcs --lookup-cache-static
        -lcd --lookup-cache-dynamic
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -co | --color )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_lookup_create llama-lookup-create
_comp_cmd_llama_lookup_stats()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        --spec-draft-n-max
        --spec-draft-n-min
        --draft --draft-n --draft-max
        --draft-min --draft-n-min
        -co --color
        -lcs --lookup-cache-static
        -lcd --lookup-cache-dynamic
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -co | --color )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_lookup_stats llama-lookup-stats
_comp_cmd_llama_mtmd_cli()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        -sys --system-prompt
        --warmup
        -mm --mmproj
        -mmu --mmproj-url
        --mmproj-auto
        --mmproj-offload
        -mmdev --mmproj-device
        --image --audio --video
        --image-min-tokens
        --image-max-tokens
        --video-fps
        --video-timestamp-interval
        --video-ffmpeg-dir
        --jinja
        --chat-template
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -mm | --mmproj )
            COMPREPLY=( $(compgen -f -X '!*.mmproj' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_mtmd_cli llama-mtmd-cli
_comp_cmd_llama_parallel()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        -kvu --kv-unified
        -ns --sequences
        --junk
        -pps
        -tgs
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_parallel llama-parallel
_comp_cmd_llama_passkey()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        -gan --grp-attn-n
        --junk
        --pos
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_passkey llama-passkey
_comp_cmd_llama_perplexity()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        -kvu --kv-unified
        --context-shift
        --chunks
        --warmup
        --hellaswag
        --hellaswag-tasks
        --winogrande
        --winogrande-tasks
        --multiple-choice
        --multiple-choice-tasks
        --kl-divergence
        --save-all-logits --kl-divergence-base
        --ppl-stride
        --ppl-output-type
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --ppl-output-type )
            COMPREPLY=( 0 1 )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_perplexity llama-perplexity
_comp_cmd_llama_results()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        -o --output --output-file
        --check
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_results llama-results
_comp_cmd_llama_retrieval()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        --verbose-prompt
        --chunks
        --warmup
        --pooling
        --context-file
        --chunk-size
        --chunk-separator
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --pooling )
            COMPREPLY=( $(compgen -W 'none mean cls last rank' -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_retrieval llama-retrieval
_comp_cmd_llama_server()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        --perf
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        --spec-draft-hf -hfd -hfrd --hf-repo-draft
        --spec-draft-threads -td --threads-draft
        --spec-draft-threads-batch -tbd --threads-batch-draft
        --spec-draft-cpu-mask -Cd --cpu-mask-draft
        --spec-draft-cpu-range -Crd --cpu-range-draft
        --spec-draft-cpu-strict --cpu-strict-draft
        --spec-draft-prio --prio-draft
        --spec-draft-poll --poll-draft
        --spec-draft-cpu-mask-batch -Cbd --cpu-mask-batch-draft
        --spec-draft-cpu-strict-batch --cpu-strict-batch-draft
        --spec-draft-prio-batch --prio-batch-draft
        --spec-draft-poll-batch --poll-batch-draft
        --spec-draft-override-tensor -otd --override-tensor-draft
        --spec-draft-cpu-moe -cmoed --cpu-moe-draft
        --spec-draft-n-cpu-moe --spec-draft-ncmoe -ncmoed --n-cpu-moe-draft
        --spec-draft-n-max
        --spec-draft-n-min
        --spec-draft-n-ubatch
        --spec-synth-len
        --spec-synth-rates
        --spec-draft-p-split --draft-p-split
        --spec-draft-p-min --draft-p-min
        --spec-draft-backend-sampling
        --spec-draft-sampling
        --spec-draft-device -devd --device-draft
        --spec-draft-ngl -ngld --gpu-layers-draft --n-gpu-layers-draft
        --spec-draft-model -md --model-draft
        --spec-type
        --spec-ngram-mod-n-min
        --spec-ngram-mod-n-max
        --spec-ngram-mod-n-match
        --spec-ngram-simple-size-n
        --spec-ngram-simple-size-m
        --spec-ngram-simple-min-hits
        --spec-ngram-map-k-size-n
        --spec-ngram-map-k-size-m
        --spec-ngram-map-k-min-hits
        --spec-ngram-map-k4v-size-n
        --spec-ngram-map-k4v-size-m
        --spec-ngram-map-k4v-min-hits
        --draft --draft-n --draft-max
        --draft-min --draft-n-min
        --spec-ngram-size-n
        --spec-ngram-size-m
        --spec-ngram-min-hits
        -lcs --lookup-cache-static
        -lcd --lookup-cache-dynamic
        --kv-unified-per-slot
        -ctxcp --ctx-checkpoints --swa-checkpoints
        -cms --checkpoint-min-step
        -cram --cache-ram
        -kvu --kv-unified
        --cache-idle-slots
        --context-shift
        -r --reverse-prompt
        -sp --special
        --warmup
        --spm-infill
        --pooling
        -np --parallel
        -cb --cont-batching
        -mm --mmproj
        -mmu --mmproj-url
        --mmproj-auto
        --mmproj-offload
        -mmdev --mmproj-device
        --image-min-tokens
        --image-max-tokens
        --mtmd-batch-max-tokens
        --video-fps
        --video-timestamp-interval
        --video-ffmpeg-dir
        -a --alias
        --tags
        --embd-normalize
        --host
        --port
        --reuse-port
        --path
        --cors-origins
        --cors-methods
        --cors-headers
        --cors-credentials
        --api-prefix
        --ui-config --webui-config
        --ui-config-file --webui-config-file
        --ui-mcp-proxy --webui-mcp-proxy
        --tools
        --tools-runtime
        --mcp-servers-config
        --mcp-servers-json
        -ag --agent
        --ui --webui
        --connect
        --connect-code
        --embedding --embeddings
        --rerank --reranking
        --api-key
        --api-key-file
        --ssl-key-file
        --ssl-cert-file
        --chat-template-kwargs
        -to --timeout
        --sse-ping-interval
        --threads-http
        --cache-prompt
        --cache-reuse
        --metrics
        --props
        --slots
        --slot-save-path
        --media-path
        --models-dir
        --models-preset
        --models-max
        --models-memory-margin
        --models-autoload
        --jinja
        --reasoning-format
        -rea --reasoning
        --reasoning-effort
        --reasoning-budget
        --reasoning-budget-message
        --reasoning-preserve
        --chat-template
        --chat-template-file
        --skip-chat-parsing
        --prefill-assistant
        -sps --slot-prompt-similarity
        --lora-init-without-apply
        --sleep-idle-seconds
        --log-prompts-dir
        --embd-gemma-default
        --fim-qwen-1.5b-default
        --fim-qwen-3b-default
        --fim-qwen-7b-default
        --fim-qwen-7b-spec
        --fim-qwen-14b-spec
        --fim-qwen-30b-default
        --gpt-oss-20b-default
        --gpt-oss-120b-default
        --vision-gemma-4b-default
        --vision-gemma-12b-default
        --spec-default
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --spec-draft-cpu-strict | --cpu-strict-draft )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --spec-draft-poll | --poll-draft )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --spec-draft-cpu-strict-batch | --cpu-strict-batch-draft )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --spec-draft-poll-batch | --poll-batch-draft )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --pooling )
            COMPREPLY=( $(compgen -W 'none mean cls last rank' -- "$cur") )
            return 0
        ;;
        -mm | --mmproj )
            COMPREPLY=( $(compgen -f -X '!*.mmproj' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --ui-config-file | --webui-config-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --mcp-servers-config )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --chat-template-file )
            COMPREPLY=( $(compgen -f -X '!*.jinja' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-prompts-dir )
            COMPREPLY=( $(compgen -d -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_server llama-server
_comp_cmd_llama_speculative()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        --spec-draft-hf -hfd -hfrd --hf-repo-draft
        --spec-draft-threads -td --threads-draft
        --spec-draft-threads-batch -tbd --threads-batch-draft
        --spec-draft-cpu-mask -Cd --cpu-mask-draft
        --spec-draft-cpu-range -Crd --cpu-range-draft
        --spec-draft-cpu-strict --cpu-strict-draft
        --spec-draft-prio --prio-draft
        --spec-draft-poll --poll-draft
        --spec-draft-cpu-mask-batch -Cbd --cpu-mask-batch-draft
        --spec-draft-cpu-range-batch -Crbd --cpu-range-batch-draft
        --spec-draft-cpu-strict-batch --cpu-strict-batch-draft
        --spec-draft-prio-batch --prio-batch-draft
        --spec-draft-poll-batch --poll-batch-draft
        --spec-draft-override-tensor -otd --override-tensor-draft
        --spec-draft-cpu-moe -cmoed --cpu-moe-draft
        --spec-draft-n-cpu-moe --spec-draft-ncmoe -ncmoed --n-cpu-moe-draft
        --spec-draft-n-max
        --spec-draft-n-min
        --spec-draft-n-ubatch
        --spec-draft-p-split --draft-p-split
        --spec-draft-p-min --draft-p-min
        --spec-draft-backend-sampling
        --spec-draft-sampling
        --spec-draft-device -devd --device-draft
        --spec-draft-ngl -ngld --gpu-layers-draft --n-gpu-layers-draft
        --spec-draft-model -md --model-draft
        --spec-type
        --spec-ngram-mod-n-min
        --spec-ngram-mod-n-max
        --spec-ngram-mod-n-match
        --spec-ngram-simple-size-n
        --spec-ngram-simple-size-m
        --spec-ngram-simple-min-hits
        --spec-ngram-map-k-size-n
        --spec-ngram-map-k-size-m
        --spec-ngram-map-k-min-hits
        --spec-ngram-map-k4v-size-n
        --spec-ngram-map-k4v-size-m
        --spec-ngram-map-k4v-min-hits
        --draft --draft-n --draft-max
        --draft-min --draft-n-min
        -co --color
        -kvu --kv-unified
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --spec-draft-cpu-strict | --cpu-strict-draft )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --spec-draft-poll | --poll-draft )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --spec-draft-cpu-strict-batch | --cpu-strict-batch-draft )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --spec-draft-poll-batch | --poll-batch-draft )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -co | --color )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_speculative llama-speculative
_comp_cmd_llama_speculative_simple()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        --spec-draft-hf -hfd -hfrd --hf-repo-draft
        --spec-draft-threads -td --threads-draft
        --spec-draft-threads-batch -tbd --threads-batch-draft
        --spec-draft-cpu-mask -Cd --cpu-mask-draft
        --spec-draft-cpu-range -Crd --cpu-range-draft
        --spec-draft-cpu-strict --cpu-strict-draft
        --spec-draft-prio --prio-draft
        --spec-draft-poll --poll-draft
        --spec-draft-cpu-mask-batch -Cbd --cpu-mask-batch-draft
        --spec-draft-cpu-range-batch -Crbd --cpu-range-batch-draft
        --spec-draft-cpu-strict-batch --cpu-strict-batch-draft
        --spec-draft-prio-batch --prio-batch-draft
        --spec-draft-poll-batch --poll-batch-draft
        --spec-draft-override-tensor -otd --override-tensor-draft
        --spec-draft-cpu-moe -cmoed --cpu-moe-draft
        --spec-draft-n-cpu-moe --spec-draft-ncmoe -ncmoed --n-cpu-moe-draft
        --spec-draft-n-max
        --spec-draft-n-min
        --spec-draft-n-ubatch
        --spec-draft-p-split --draft-p-split
        --spec-draft-p-min --draft-p-min
        --spec-draft-backend-sampling
        --spec-draft-sampling
        --spec-draft-device -devd --device-draft
        --spec-draft-ngl -ngld --gpu-layers-draft --n-gpu-layers-draft
        --spec-draft-model -md --model-draft
        --spec-type
        --spec-ngram-mod-n-min
        --spec-ngram-mod-n-max
        --spec-ngram-mod-n-match
        --spec-ngram-simple-size-n
        --spec-ngram-simple-size-m
        --spec-ngram-simple-min-hits
        --spec-ngram-map-k-size-n
        --spec-ngram-map-k-size-m
        --spec-ngram-map-k-min-hits
        --spec-ngram-map-k4v-size-n
        --spec-ngram-map-k4v-size-m
        --spec-ngram-map-k4v-min-hits
        --draft --draft-n --draft-max
        --draft-min --draft-n-min
        -co --color
        -kvu --kv-unified
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --spec-draft-cpu-strict | --cpu-strict-draft )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --spec-draft-poll | --poll-draft )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --spec-draft-cpu-strict-batch | --cpu-strict-batch-draft )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --spec-draft-poll-batch | --poll-batch-draft )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -co | --color )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_speculative_simple llama-speculative-simple
_comp_cmd_llama_tokenize()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --ids
        --stdin
        --no-bos
        --no-parse-special
        --show-count
        --offline
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_tokenize llama-tokenize
_comp_cmd_llama_tts()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    opts="
        -h --help --usage
        --version
        -cl --cache-list
        --completion-bash
        -t --threads
        -tb --threads-batch
        -C --cpu-mask
        -Cr --cpu-range
        --cpu-strict
        --prio
        --poll
        -Cb --cpu-mask-batch
        -Crb --cpu-range-batch
        --cpu-strict-batch
        --prio-batch
        --poll-batch
        -c --ctx-size
        -n --predict --n-predict
        -b --batch-size
        -ub --ubatch-size
        --keep
        --swa-full
        -fa --flash-attn
        -p --prompt
        --perf
        -f --file
        -bf --binary-file
        -e --escape
        --rope-scaling
        --rope-scale
        --rope-freq-base
        --rope-freq-scale
        --yarn-orig-ctx
        --yarn-ext-factor
        --yarn-attn-factor
        --yarn-beta-slow
        --yarn-beta-fast
        -kvo --kv-offload
        --repack
        --no-host
        -ctk --cache-type-k
        -ctv --cache-type-v
        -dt --defrag-thold
        -np --parallel
        --rpc
        -lm --load-mode
        -lzm --lazy-mode
        --numa
        -dev --device
        --list-devices
        -ot --override-tensor
        -cmoe --cpu-moe
        -ncmoe --n-cpu-moe
        --moe-cache-mib
        -ncffn --n-cpu-ffn
        -ngl --gpu-layers --n-gpu-layers
        -sm --split-mode
        -ts --tensor-split
        -mg --main-gpu
        -fit --fit
        -fitt --fit-target
        -fitc --fit-ctx
        --check-tensors
        --override-kv
        --op-offload
        --lora
        --lora-scaled
        --control-vector
        --control-vector-scaled
        --control-vector-layer-range
        -m --model
        -mu --model-url
        -dr --docker-repo
        -hf -hfr --hf-repo
        -hff --hf-file
        -hft --hf-token
        --log-disable
        --log-file
        --log-jsonl
        --log-colors
        -v --verbose --log-verbose
        --offline
        -lv --verbosity --log-verbosity
        --log-prefix
        --log-timestamps
        --spec-draft-type-k -ctkd --cache-type-k-draft
        --spec-draft-type-v -ctvd --cache-type-v-draft
        --samplers
        -s --seed
        --sampler-seq --sampling-seq
        --ignore-eos
        --temp --temperature
        --top-k
        --top-p
        --min-p
        --top-nsigma --top-n-sigma
        --xtc-probability
        --xtc-threshold
        --typical --typical-p
        --repeat-last-n
        --repeat-penalty
        --presence-penalty
        --frequency-penalty
        --dry-multiplier
        --dry-base
        --dry-allowed-length
        --dry-penalty-last-n
        --dry-sequence-breaker
        --adaptive-target
        --adaptive-decay
        --dynatemp-range
        --dynatemp-exp
        --mirostat
        --mirostat-lr
        --mirostat-ent
        -l --logit-bias
        --grammar
        --grammar-file
        -j --json-schema
        -jf --json-schema-file
        -bs --backend-sampling
        -mm --mmproj
        -mmu --mmproj-url
        --mmproj-offload
        -mmdev --mmproj-device
        --image-min-tokens
        --image-max-tokens
        --video-fps
        --video-timestamp-interval
        --video-ffmpeg-dir
        -o --output --output-file
        --tts-lang
        --tts-voice
        --tts-speaker-file
    "

    case "$prev" in
        -h | --help | --usage )
            return 0
        ;;
        --version )
            return 0
        ;;
        -cl | --cache-list )
            return 0
        ;;
        --completion-bash )
            return 0
        ;;
        --cpu-strict )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --cpu-strict-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        --poll-batch )
            COMPREPLY=( 0 1 )
            return 0
        ;;
        -fa | --flash-attn )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --rope-scaling )
            COMPREPLY=( $(compgen -W 'none linear yarn' -- "$cur") )
            return 0
        ;;
        -lm | --load-mode )
            COMPREPLY=( $(compgen -W 'auto none mmap mlock mmap+mlock dio' -- "$cur") )
            return 0
        ;;
        -lzm | --lazy-mode )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --numa )
            COMPREPLY=( $(compgen -W 'distribute isolate numactl' -- "$cur") )
            return 0
        ;;
        --list-devices )
            return 0
        ;;
        -sm | --split-mode )
            COMPREPLY=( $(compgen -W 'none layer row split' -- "$cur") )
            return 0
        ;;
        -fit | --fit )
            COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
            return 0
        ;;
        -m | --model )
            COMPREPLY=( $(compgen -f -X '!*.gguf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        --log-colors )
            COMPREPLY=( $(compgen -W 'on off auto' -- "$cur") )
            return 0
        ;;
        --grammar-file )
            COMPREPLY=( $(compgen -f -X '!*.gbnf' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -jf | --json-schema-file )
            COMPREPLY=( $(compgen -f -X '!*.json' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
        -mm | --mmproj )
            COMPREPLY=( $(compgen -f -X '!*.mmproj' -- "$cur") $(compgen -d -- "$cur") )
            return 0
        ;;
    esac

    COMPREPLY=( $(compgen -W "${opts}" -- "$cur") )
    return 0

} && complete -F _comp_cmd_llama_tts llama-tts
