_rqbit() {
    local i cur prev opts cmd
    COMPREPLY=()
    if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
        cur="$2"
    else
        cur="${COMP_WORDS[COMP_CWORD]}"
    fi
    prev="$3"
    cmd=""
    opts=""

    for i in "${COMP_WORDS[@]:0:COMP_CWORD}"
    do
        case "${cmd},${i}" in
            ",$1")
                cmd="rqbit"
                ;;
            rqbit,completions)
                cmd="rqbit__subcmd__completions"
                ;;
            rqbit,download)
                cmd="rqbit__subcmd__download"
                ;;
            rqbit,help)
                cmd="rqbit__subcmd__help"
                ;;
            rqbit,server)
                cmd="rqbit__subcmd__server"
                ;;
            rqbit,share)
                cmd="rqbit__subcmd__share"
                ;;
            rqbit__subcmd__help,completions)
                cmd="rqbit__subcmd__help__subcmd__completions"
                ;;
            rqbit__subcmd__help,download)
                cmd="rqbit__subcmd__help__subcmd__download"
                ;;
            rqbit__subcmd__help,help)
                cmd="rqbit__subcmd__help__subcmd__help"
                ;;
            rqbit__subcmd__help,server)
                cmd="rqbit__subcmd__help__subcmd__server"
                ;;
            rqbit__subcmd__help,share)
                cmd="rqbit__subcmd__help__subcmd__share"
                ;;
            rqbit__subcmd__help__subcmd__server,start)
                cmd="rqbit__subcmd__help__subcmd__server__subcmd__start"
                ;;
            rqbit__subcmd__server,help)
                cmd="rqbit__subcmd__server__subcmd__help"
                ;;
            rqbit__subcmd__server,start)
                cmd="rqbit__subcmd__server__subcmd__start"
                ;;
            rqbit__subcmd__server__subcmd__help,help)
                cmd="rqbit__subcmd__server__subcmd__help__subcmd__help"
                ;;
            rqbit__subcmd__server__subcmd__help,start)
                cmd="rqbit__subcmd__server__subcmd__help__subcmd__start"
                ;;
            *)
                ;;
        esac
    done

    case "${cmd}" in
        rqbit)
            opts="-v -i -s -t -h -V --log-file --log-file-rust-log --log-file-json --tracker-refresh-interval --http-api-listen-addr --http-api-allow-create --http-api-max-upload-size --enable-mdns --single-thread-runtime --disable-dht --disable-dht-persistence --dht-bootstrap-addrs --peer-connect-timeout --peer-read-write-timeout --peer-limit --worker-threads --disable-tcp-listen --disable-tcp-connect --experimental-enable-utp-listen --listen-port --announce-port --listen-ip --disable-upnp-port-forward --enable-upnp-server --upnp-server-friendly-name --bind-device --ipv4-only --max-blocking-threads --socks-url --concurrent-init-limit --umask --ratelimit-download --ratelimit-upload --blocklist-url --allowlist-url --trackers-filename --disable-lsd --disable-trackers --help --version server share download completions help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                -v)
                    COMPREPLY=($(compgen -W "trace debug info warn error" -- "${cur}"))
                    return 0
                    ;;
                --log-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --log-file-rust-log)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --tracker-refresh-interval)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                -i)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --http-api-listen-addr)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --http-api-max-upload-size)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --dht-bootstrap-addrs)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --peer-connect-timeout)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --peer-read-write-timeout)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --peer-limit)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --worker-threads)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                -t)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --listen-port)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --announce-port)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --listen-ip)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --upnp-server-friendly-name)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --bind-device)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --max-blocking-threads)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --socks-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --concurrent-init-limit)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --umask)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --ratelimit-download)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --ratelimit-upload)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --blocklist-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --allowlist-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --trackers-filename)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        rqbit__subcmd__completions)
            opts="-h --help bash elvish fish powershell zsh"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        rqbit__subcmd__download)
            opts="-o -s -r -l -e -h --output-folder --sub-folder --filename-re --list --overwrite --exit-on-finish --initial-peers --disable-http-api --upnp-port-forward --help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --output-folder)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                -o)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --sub-folder)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                -s)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --filename-re)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                -r)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --initial-peers)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        rqbit__subcmd__help)
            opts="server share download completions help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        rqbit__subcmd__help__subcmd__completions)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        rqbit__subcmd__help__subcmd__download)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        rqbit__subcmd__help__subcmd__help)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        rqbit__subcmd__help__subcmd__server)
            opts="start"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        rqbit__subcmd__help__subcmd__server__subcmd__start)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        rqbit__subcmd__help__subcmd__share)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        rqbit__subcmd__server)
            opts="-h --help start help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        rqbit__subcmd__server__subcmd__help)
            opts="start help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        rqbit__subcmd__server__subcmd__help__subcmd__help)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        rqbit__subcmd__server__subcmd__help__subcmd__start)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        rqbit__subcmd__server__subcmd__start)
            opts="-h --disable-persistence --persistence-location --fastresume --watch-folder --help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --persistence-location)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --watch-folder)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        rqbit__subcmd__share)
            opts="-n -h --name --help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --name)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                -n)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
    esac
}

if [[ "${BASH_VERSINFO[0]}" -eq 4 && "${BASH_VERSINFO[1]}" -ge 4 || "${BASH_VERSINFO[0]}" -gt 4 ]]; then
    complete -F _rqbit -o nosort -o bashdefault -o default rqbit
else
    complete -F _rqbit -o bashdefault -o default rqbit
fi
