From f47ab9583013a4d9e8ab520e067999049b705251 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Sun, 10 Dec 2023 23:02:24 +0900 Subject: [PATCH 01/40] chore: bump changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d3ad13..d4d9713 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## [4.0.4] 2023-11-23 +## Fixed +- Fetch correct checksums for query helper + ## [4.0.3] 2023-11-22 ## Fixed - Query helper: backwards compatibility for pre-2021 versions of Python 3 From f28044051aead4835c49a8454ac94299f928431f Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Sun, 17 Dec 2023 07:09:59 +0900 Subject: [PATCH 02/40] chore: update branch --- dzgui.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dzgui.sh b/dzgui.sh index c6b3a75..57168ee 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -32,9 +32,9 @@ sums_path="$helpers_path/sums.md5" scmd_file="$helpers_path/scmd.sh" km_helper_url="$releases_url/latlon" db_file="$releases_url/ips.csv.gz" -sums_url="$testing_url/helpers/sums.md5" -scmd_url="$testing_url/helpers/scmd.sh" -vdf2json_url="$testing_url/helpers/vdf2json.py" +sums_url="$stable_url/helpers/sums.md5" +scmd_url="$stable_url/helpers/scmd.sh" +vdf2json_url="$stable_url/helpers/vdf2json.py" forum_url="https://github.com/aclist/dztui/discussions" version_file="$config_path/versions" steamsafe_zenity="/usr/bin/zenity" @@ -210,7 +210,7 @@ freedesktop_dirs(){ mkdir -p "$freedesktop_path" curl -s "$version_url" > "$sd_install_path/dzgui.sh" chmod +x "$sd_install_path/dzgui.sh" - img_url="$testing_url/images" + img_url="$stable_url/images" for i in dzgui grid.png hero.png logo.png; do curl -s "$img_url/$i" > "$sd_install_path/$i" done From 875784a138b9cbdbcad21e8f5bac2c31b5841b58 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Sun, 17 Dec 2023 07:10:24 +0900 Subject: [PATCH 03/40] Update CHANGELOG.md --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 187a866..639d7f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,8 +19,7 @@ ## [4.0.1] 2023-11-22 ### Fixed -- Emergency hotfix to remove build artifacts leaking into main script: if you updated DZGUI from 3.3.18 to 4.0.0 between 2023-11-22 15:00:02 and 2023-11-22 15:03:37 GMT, there is a small chance it - will be unable to launch correctly. If so, please follow the instructions on the manual to reinstall. +- Emergency hotfix to remove build artifacts leaking into main script: if you updated DZGUI from 3.3.18 to 4.0.0 between 2023-11-22 15:00:02 and 2023-11-22 15:03:37 GMT, there is a small chance it will be unable to launch correctly. If so, please follow the instructions on the manual to reinstall. ## [4.0.0] 2023-11-22 From 5259c2f48a4887ed874f439d2f557b736954f26c Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Sun, 17 Dec 2023 07:11:00 +0900 Subject: [PATCH 04/40] chore: bump version --- dzgui.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dzgui.sh b/dzgui.sh index 57168ee..7673eca 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o pipefail -version=4.1.0.rc-8 +version=4.1.0 aid=221100 game="dayz" From b7fc8c049cdaa576127daa3793a2ca05757d84e5 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Sun, 17 Dec 2023 07:19:07 +0900 Subject: [PATCH 05/40] chore: update changelog --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 639d7f9..c37d045 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ # Changelog ## [4.1.0] 2023-12-03 + +This update adds support for DayZ servers running on a local area network. To connect or add to your server list, supply the server IP and query port in the format IP:PORT. + +Support for Steam Deck Game Mode has also been restored, with a new dialog format that allows for virtual keyboard input. This should allow you to enter text in form fields by activating the Steam +button + X. In addition, you can unlock the mouse and keyboard input when launching DZGUI through Steam by using an internal binding provided by Steam Deck: long-press the three dots button on the +right of the device for three seconds to toggle the input state. This allows you to use mouse and keyboard-style bindings on Game Mode and vice versa. + ### Added - Virtual keyboard support for text entry fields on Steam Deck Game Mode - Validate and connect to LAN server IPs From c90f23756d03cfe527a76fd9d6cec9173e66fc3a Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Sun, 17 Dec 2023 11:12:02 +0900 Subject: [PATCH 06/40] Update CHANGELOG.md --- CHANGELOG.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c37d045..db81c5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,7 @@ This update adds support for DayZ servers running on a local area network. To connect or add to your server list, supply the server IP and query port in the format IP:PORT. -Support for Steam Deck Game Mode has also been restored, with a new dialog format that allows for virtual keyboard input. This should allow you to enter text in form fields by activating the Steam -button + X. In addition, you can unlock the mouse and keyboard input when launching DZGUI through Steam by using an internal binding provided by Steam Deck: long-press the three dots button on the -right of the device for three seconds to toggle the input state. This allows you to use mouse and keyboard-style bindings on Game Mode and vice versa. +Support for Steam Deck Game Mode has also been restored, with a new dialog format that allows for virtual keyboard input. This should allow you to enter text in form fields by activating the Steam button + X. In addition, you can unlock the mouse and keyboard input when launching DZGUI through Steam by using an internal binding provided by Steam Deck: long-press the three dots button on the right of the device for three seconds to toggle the input state. This allows you to use mouse and keyboard-style bindings on Game Mode and vice versa. ### Added - Virtual keyboard support for text entry fields on Steam Deck Game Mode From dc6f82ed6ed0c4d0ac6173877942dec18d333dc8 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Mon, 18 Dec 2023 12:12:46 +0900 Subject: [PATCH 07/40] fix: encapsulate news function --- dzgui.sh | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/dzgui.sh b/dzgui.sh index 7673eca..3b354cc 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o pipefail -version=4.1.0 +version=4.1.1 aid=221100 game="dayz" @@ -40,31 +40,36 @@ version_file="$config_path/versions" steamsafe_zenity="/usr/bin/zenity" update_last_seen(){ + local news_sum="$1" mv $config_file ${config_path}dztuirc.old nr=$(awk '/seen_news=/ {print NR}' ${config_path}dztuirc.old) - seen_news="seen_news=\"$sum\"" + seen_news="seen_news=\"$news_sum\"" awk -v "var=$seen_news" -v "nr=$nr" 'NR==nr {$0=var}{print}' ${config_path}dztuirc.old > $config_file source $config_file } check_news(){ logger INFO "${FUNCNAME[0]}" - echo "# Checking news" [[ $branch == "stable" ]] && news_url="$stable_url/news" [[ $branch == "testing" ]] && news_url="$testing_url/news" local result=$(curl -Ls "$news_url") - sum=$(echo -n "$result" | md5sum | awk '{print $1}') + local sum=$(echo -n "$result" | md5sum | awk '{print $1}') + printf "%s\n%s\n" "$result" "$sum" logger INFO "News: $result" } print_news(){ + readarray -t news_result < <(check_news) + local news_marquee=${news_result[0]} + local news_sum=${news_result[1]} + local hchar + local news logger INFO "${FUNCNAME[0]}" - if [[ $sum == $seen_news || -z $result ]]; then - hchar="" - news="" - else - hchar="─" - news="$result\n$(awk -v var="$hchar" 'BEGIN{for(c=0;c<90;c++) printf var;}')\n" - update_last_seen - fi + if [[ $news_sum == $seen_news ]] || [[ -z $news_marquee ]]; then + return 1 + fi + hchar="─" + news="$news_marquee\n$(awk -v var="$hchar" 'BEGIN{for(c=0;c<90;c++) printf var;}')\n" + update_last_seen "$news_sum" + echo "$news" } declare -A deps @@ -998,7 +1003,8 @@ set_header(){ local switch="$1" logger INFO "${FUNCNAME[0]}" logger INFO "Header mode is $1" - print_news + local news + news=$(print_news) [[ $auto_install -eq 2 ]] && install_mode="auto" [[ $auto_install -eq 1 ]] && install_mode="headless" [[ $auto_install -eq 0 ]] && install_mode=manual @@ -2117,7 +2123,6 @@ initial_setup(){ stale_symlinks init_items setup - check_news echo "100" } main(){ From 371da6c4bf355569269bc23922e8b3dd0bb8258e Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Mon, 18 Dec 2023 12:14:51 +0900 Subject: [PATCH 08/40] fix: use update_config func --- dzgui.sh | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/dzgui.sh b/dzgui.sh index 3b354cc..3da3ca1 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -41,11 +41,8 @@ steamsafe_zenity="/usr/bin/zenity" update_last_seen(){ local news_sum="$1" - mv $config_file ${config_path}dztuirc.old - nr=$(awk '/seen_news=/ {print NR}' ${config_path}dztuirc.old) - seen_news="seen_news=\"$news_sum\"" - awk -v "var=$seen_news" -v "nr=$nr" 'NR==nr {$0=var}{print}' ${config_path}dztuirc.old > $config_file - source $config_file + seen_news="$news_sum" + update_config } check_news(){ logger INFO "${FUNCNAME[0]}" From 784f45476a1a0c0a7ac56ef81db18abce9360302 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Mon, 18 Dec 2023 12:16:22 +0900 Subject: [PATCH 09/40] chore: update changelog --- CHANGELOG.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index db81c5d..67cfc88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## [4.1.0] 2023-12-03 +## [4.1.1] 2023-12-18 +### Fixed + +- News marquee not showing + +## [4.1.0] 2023-12-17 This update adds support for DayZ servers running on a local area network. To connect or add to your server list, supply the server IP and query port in the format IP:PORT. From b16e61309492a6437fcf6887e226ee997afa3ac6 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Wed, 31 Jan 2024 18:12:45 +0900 Subject: [PATCH 10/40] chore: news --- news | 1 - 1 file changed, 1 deletion(-) diff --git a/news b/news index 386f0c1..e69de29 100644 --- a/news +++ b/news @@ -1 +0,0 @@ -NEWS: Added support for LAN servers and restored Steam Deck Game Mode support. See changelog. From ebe54d812cdb2ac30d62f6f552a04c13c16a4319 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Wed, 31 Jan 2024 18:36:08 +0900 Subject: [PATCH 11/40] feat: GTK bindings --- CHANGELOG.md | 26 + dzgui.sh | 2738 ++++++++++++------------------------------- helpers/funcs | 1355 +++++++++++++++++++++ helpers/query_v2.py | 75 ++ helpers/ui.py | 1665 ++++++++++++++++++++++++++ news | 0 6 files changed, 3843 insertions(+), 2016 deletions(-) create mode 100755 helpers/funcs create mode 100644 helpers/query_v2.py create mode 100644 helpers/ui.py delete mode 100644 news diff --git a/CHANGELOG.md b/CHANGELOG.md index 67cfc88..75361a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,31 @@ # Changelog +## [5.0.0] 2024-01-31 +### Added +- Context switching: navigate to different pages using side buttons +- Dynamic statusbar: updates metadata and server distance when selecting rows +- Show server-side modlist and allow jumping to Steam Workshop pages to browse, and list whether mod is currently installed +- Print debug logs in-app (Help > Show debug log) +- Functionality to change API keys in-app (used when revoking old API keys) +- Print atomic mod sizes when listing installed mods +- Dialogs show direct links to API key management URLs when changing API keys +- Toggle dry-run mode directly from server browser +- Extensive keybindings for fully controlling the application without the mouse +- Extensive pre-boot sanity checks +- Keybinding help dialog in main menu +- Right-click context menus in server browsers/mod list: add/remove from favorites, show server-side mods, delete mod, copy server IP to clipboard + +### Changed +- Utilize GTK bindings and MVC paradigm for UI creation and data flow +- Filter servers dynamically from within server browser +- Performance and security improvements to DZGUI helper files + +### Fixed +- First-time setup dialogs respawning repeatedly in certain scenarios +- Issues with Steam client switching to the wrong page when using auto-mod install +- Set text input module correctly when launching on Steam Deck +- Separate current/total player count and use proper integer sort method in table + ## [4.1.1] 2023-12-18 ### Fixed diff --git a/dzgui.sh b/dzgui.sh index 3da3ca1..3138c81 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -1,163 +1,180 @@ #!/usr/bin/env bash - set -o pipefail + version=4.1.1 +#CONSTANTS aid=221100 game="dayz" +app_name="dzgui" +app_name_upper="DZGUI" workshop="steam://url/CommunityFilePage/" -api="https://api.battlemetrics.com/servers" sd_res="--width=1280 --height=800" -config_path="$HOME/.config/dztui/" -config_file="${config_path}dztuirc" -hist_file="${config_path}history" -tmp=/tmp/dzgui.tmp -fifo=/tmp/table.tmp -debug_log="$PWD/DZGUI_DEBUG.log" -separator="%%" -check_config_msg="Check config values and restart." -issues_url="https://github.com/aclist/dztui/issues" -url_prefix="https://raw.githubusercontent.com/aclist/dztui" -stable_url="$url_prefix/dzgui" -testing_url="$url_prefix/testing" -releases_url="https://github.com/aclist/dztui/releases/download/browser" -help_url="https://aclist.github.io/dzgui/dzgui" -sponsor_url="https://github.com/sponsors/aclist" +steamsafe_zenity="/usr/bin/zenity" +zenity_flags=("--width=500" "--title=DZGUI") +declare -A deps +deps=([awk]="5.1.1" [curl]="7.80.0" [jq]="1.6" [tr]="9.0" [$steamsafe_zenity]="3.42.1") + +#CONFIG +config_path="$HOME/.config/dztui" +config_file="$config_path/dztuirc" + +#PATHS +state_path="$HOME/.local/state/$app_name" +cache_path="$HOME/.cache/$app_name" +share_path="$HOME/.local/share/$app_name" +script_path="$share_path/dzgui.sh" +helpers_path="$share_path/helpers" + +#LOGS +log_path="$state_path/logs" +debug_log="$log_path/DZGUI_DEBUG.log" + +#STATE FILES +prefix="dzg" +history_file="$state_path/$prefix.history" +versions_file="$state_path/$prefix.versions" +lock_file="$state_path/$prefix.lock" + +#CACHE FILES +coords_file="$cache_path/$prefix.coords" + +#legacy paths +hist_file="$config_path/history" +version_file="$config_path/versions" + +#XDG freedesktop_path="$HOME/.local/share/applications" -sd_install_path="$HOME/.local/share/dzgui" -helpers_path="$sd_install_path/helpers" + +#HELPERS +ui_helper="$helpers_path/ui.py" geo_file="$helpers_path/ips.csv" km_helper="$helpers_path/latlon" sums_path="$helpers_path/sums.md5" -scmd_file="$helpers_path/scmd.sh" +func_helper="$helpers_path/funcs" + +#URLS +author="aclist" +repo="dztui" +url_prefix="https://raw.githubusercontent.com/$author/$repo" +stable_url="$url_prefix/dzgui" +testing_url="$url_prefix/testing" +releases_url="https://github.com/$author/$repo/releases/download/browser" km_helper_url="$releases_url/latlon" -db_file="$releases_url/ips.csv.gz" -sums_url="$stable_url/helpers/sums.md5" -scmd_url="$stable_url/helpers/scmd.sh" -vdf2json_url="$stable_url/helpers/vdf2json.py" -forum_url="https://github.com/aclist/dztui/discussions" -version_file="$config_path/versions" -steamsafe_zenity="/usr/bin/zenity" +geo_file_url="$releases_url/ips.csv.gz" -update_last_seen(){ - local news_sum="$1" - seen_news="$news_sum" - update_config -} -check_news(){ - logger INFO "${FUNCNAME[0]}" - [[ $branch == "stable" ]] && news_url="$stable_url/news" - [[ $branch == "testing" ]] && news_url="$testing_url/news" - local result=$(curl -Ls "$news_url") - local sum=$(echo -n "$result" | md5sum | awk '{print $1}') - printf "%s\n%s\n" "$result" "$sum" - logger INFO "News: $result" -} -print_news(){ - readarray -t news_result < <(check_news) - local news_marquee=${news_result[0]} - local news_sum=${news_result[1]} - local hchar - local news - logger INFO "${FUNCNAME[0]}" - if [[ $news_sum == $seen_news ]] || [[ -z $news_marquee ]]; then - return 1 +set_im_module(){ + pgrep -a gamescope | grep -q "generate-drm-mode" + if [[ $? -eq 0 ]]; then + GTK_IM_MODULE="" + logger INFO "Detected Steam Deck (Game Mode), unsetting GTK_IM_MODULE" + else + return fi - hchar="─" - news="$news_marquee\n$(awk -v var="$hchar" 'BEGIN{for(c=0;c<90;c++) printf var;}')\n" - update_last_seen "$news_sum" - echo "$news" } +logger(){ + local date="$(date "+%F %T,%3N")" + local tag="$1" + local string="$2" + local self="${BASH_SOURCE[0]}" + local caller="${FUNCNAME[1]}" + local line="${BASH_LINENO[0]}" + printf "%s␞%s␞%s::%s()::%s␞%s\n" "$date" "$tag" "$self" "$caller" "$line" "$string" >> "$debug_log" +} +setup_dirs(){ + for dir in "$state_path" "$cache_path" "$share_path" "$helpers_path" "$freedesktop_path" "$config_path" "$log_path"; do + if [[ ! -d $dir ]]; then + mkdir -p "$dir" + fi + done +} +setup_state_files(){ + if [[ -f "$debug_log" ]]; then + rm "$debug_log" && touch $debug_log + logger INFO "Initializing DZGUI version $version" + fi + if [[ -f "$version_file" ]]; then + mv "$version_file" "$versions_file" && + logger INFO "Migrating legacy version file" + fi + # wipe cache files + local path="$cache_path" + if find "$path" -mindepth 1 -maxdepth 1 | read; then + for file in $path/*; do + rm "$file" + done + logger INFO "Wiped cache files" + fi +} +print_config_vals(){ + local keys=( + "branch" + "seen_news" + "name" + "fav_server" + "fav_label" + "auto_install" + "steam_path" + "default_steam_path" + "preferred_client" + ) + for i in "${keys[@]}"; do + logger INFO "Read key '$i': '${!i}'" + done + if [[ ${#ip_list[@]} -lt 1 ]]; then + logger WARN "No IPs in saved server list" + fi -declare -A deps -deps=([awk]="5.1.1" [curl]="7.80.0" [jq]="1.6" [tr]="9.0" [$steamsafe_zenity]="3.42.1" [fold]="9.0") -changelog(){ - build(){ - local mdbranch - case "$branch" in - "stable") - mdbranch="dzgui" - ;; - *) - mdbranch="testing" - ;; - esac - local md="https://raw.githubusercontent.com/aclist/dztui/${mdbranch}/CHANGELOG.md" - prefix="This window can be scrolled." - echo $prefix - echo "" - curl -Ls "$md" - } - build | $steamsafe_zenity --text-info $sd_res --title="DZGUI" 2>/dev/null } - -depcheck(){ - for dep in "${!deps[@]}"; do - command -v "$dep" 2>&1>/dev/null || (printf "Requires %s >=%s\n" "$dep" ${deps[$dep]}; exit 1) - done +test_gobject(){ + python3 -c "import gi" + if [[ ! $? -eq 0 ]]; then + logger CRITICAL "Missing PyGObject" + fdialog "Requires PyGObject" + exit 1 + fi + logger INFO "Found PyGObject in Python env" } -watcher_deps(){ - logger INFO "${FUNCNAME[0]}" - if [[ ! $(command -v wmctrl) ]] && [[ ! $(command -v xdotool) ]]; then - echo "100" - warn "Missing dependency: requires 'wmctrl' or 'xdotool'.\nInstall from your system's package manager." - logger ERROR "Missing watcher dependencies" - exit 1 - fi +update_config(){ + # handling for legacy files + [[ -z $branch ]] && branch="stable" + [[ -f $config_file ]] && mv $config_file ${config_file}.old + write_config > $config_file && return 90 || return 1 + logger INFO "Updated config file at '$config_file'" } -init_items(){ - #array order determines menu selector; this is destructive - #change favorite index affects setup() and add_by_fav() -items=( - "[Connect]" - " Server browser" - " My servers" - " Quick connect to favorite server" - " Connect by ID" - " Connect by IP" - " Recent servers (last 10)" - "[Manage servers]" - " Add server by ID" - " Add server by IP" - " Add favorite server" - " Delete server" - "[Options]" - " List installed mods" - " View changelog" - " Advanced options" - "[Help]" - " Help file ⧉" - " Report bug ⧉" - " Forum ⧉" - " Sponsor ⧉" - " Hall of fame ⧉" - ) +setup_steam_client(){ + local flatpak + local steam + local steam_cmd + [[ -n $preferred_client ]] && return 0 + [[ $(command -v flatpak) ]] && flatpak=$(flatpak list | grep valvesoftware.Steam) + steam=$(command -v steam) + if [[ -z "$steam" ]] && [[ -z "$flatpak" ]]; then + raise_error_and_quit "Requires Steam or Flatpak Steam" + elif [[ -n "$steam" ]] && [[ -n "$flatpak" ]]; then + preferred_client="steam" + elif [[ -n "$steam" ]]; then + preferred_client="steam" + else + steam_cmd="flatpak run com.valvesoftware.Steam" + fi + update_config && logger INFO "Preferred client set to '$steam_cmd'" || return 1 } -warn(){ - logger WARN "$1" - $steamsafe_zenity --info --title="DZGUI" --text="$1" --width=500 --icon-name="dialog-warning" 2>/dev/null -} -info(){ - $steamsafe_zenity --info --title="DZGUI" --text="$1" --width=500 2>/dev/null -} -set_api_params(){ - logger INFO "${FUNCNAME[0]}" - response=$(curl -s "$api" -H "Authorization: Bearer "$api_key"" -G -d "sort=-players" \ - -d "filter[game]=$game" -d "filter[ids][whitelist]=$list_of_ids") - list_response=$response - first_entry=1 +print_ip_list(){ + [[ ${#ip_list[@]} -eq 0 ]] && return 1 + printf "\t\"%s\"\n" "${ip_list[@]}" } write_config(){ -cat <<-END +cat <<-END #Path to DayZ installation steam_path="$steam_path" -#Your unique API key +#Battlemetrics API key api_key="$api_key" #Favorited server IP:PORT array ip_list=( - $(print_ip_list) +$(print_ip_list) ) #Favorite server to fast-connect to (limit one) @@ -192,1945 +209,634 @@ default_steam_path="$default_steam_path" #Preferred Steam launch command (for Flatpak support) preferred_client="$preferred_client" - END + +#DZGUI source path +src_path="$src_path" +END +} +depcheck(){ + for dep in "${!deps[@]}"; do + command -v "$dep" 2>&1>/dev/null + if [[ $? -eq 1 ]]; then + local msg="Requires $dep >= ${deps[$dep]}" + raise_error_and_quit "$msg" + fi + done + logger INFO "Initial dependencies satisfied" +} +check_pyver(){ + local pyver=$(python3 --version | awk '{print $2}') + local minor=$(<<< $pyver awk -F. '{print $2}') + if [[ -z $pyver ]] || [[ ${pyver:0:1} -lt 3 ]] || [[ $minor -lt 10 ]]; then + local msg="Requires Python >=3.10" + raise_error_and_quit "$msg" + fi + logger INFO "Found Python version: $pyver" +} +watcher_deps(){ + if [[ ! $(command -v wmctrl) ]] && [[ ! $(command -v xdotool) ]]; then + raise_error_and_quit "Missing dependency: requires 'wmctrl' or 'xdotool'" + exit 1 + fi + logger INFO "Found DZG Watcher dependencies" +} +format_version_url(){ + case "$branch" in + "stable") + version_url="$stable_url/dzgui.sh" + ;; + "testing") + version_url="$testing_url/dzgui.sh" + ;; + esac + echo "$version_url" } write_desktop_file(){ -cat <<-END +cat <<-END [Desktop Entry] Version=1.0 Type=Application Terminal=false -Exec=$sd_install_path/dzgui.sh -Name=DZGUI -Comment=dzgui -Icon=$sd_install_path/dzgui +Exec=$share_path/dzgui.sh +Name=$app_name_upper +Comment=$appname +Icon=$share_path/$appname Categories=Game - END +END } freedesktop_dirs(){ - mkdir -p "$sd_install_path" - mkdir -p "$freedesktop_path" - curl -s "$version_url" > "$sd_install_path/dzgui.sh" - chmod +x "$sd_install_path/dzgui.sh" - img_url="$stable_url/images" - for i in dzgui grid.png hero.png logo.png; do - curl -s "$img_url/$i" > "$sd_install_path/$i" - done - write_desktop_file > "$freedesktop_path/dzgui.desktop" - if [[ $is_steam_deck -eq 1 ]]; then - write_desktop_file > "$HOME/Desktop/dzgui.desktop" - fi + local version_url=$(format_version_url) + local img_url="$stable_url/images" + curl -s "$version_url" > "$script_path" + chmod +x "$script_path" + for i in dzgui grid.png hero.png logo.png; do + curl -s "$img_url/$i" > "$share_path/$i" + done + write_desktop_file > "$freedesktop_path/$appname.desktop" + [[ $is_steam_deck -eq 0 ]] && return + write_desktop_file > "$HOME/Desktop/$appname.desktop" } -find_library_folder(){ - logger INFO "${FUNCNAME[0]}" - logger INFO "User picked directory: '$1'" - steam_path="$(python3 "$helpers_path/vdf2json.py" -i "$1/steamapps/libraryfolders.vdf" | jq -r '.libraryfolders[]|select(.apps|has("221100")).path')" - logger INFO "Steam path resolved to: $steam_path" +legacy_vars(){ + local suffix="fav" + local hr_msg="Config file contains values based on old API. Please update and re-run setup." + local msg="Config file contains legacy API value: '$suffix'" + if [[ -n $fav ]]; then + logger WARN "$msg" + fdialog "$hr_msg" + exit 1 + fi + if [[ -n $whitelist ]]; then + suffix="whitelist" + logger WARN "$msg" + fdialog "$hr_msg" + exit 1 + fi } -file_picker(){ - logger INFO "${FUNCNAME[0]}" - local path=$($steamsafe_zenity --file-selection --directory 2>/dev/null) - logger INFO "File picker path resolve to: $path" - if [[ -z "$path" ]]; then - logger INFO "Path was empty" - return - else - default_steam_path="$path" - find_library_folder "$default_steam_path" - fi +merge_config(){ + [[ -z $staging_dir ]] && staging_dir="/tmp" + update_config + tdialog "Wrote new config format to \n${config_file}\nIf errors occur, you can restore the file:\n${config_file}.old" } -create_config(){ - logger INFO "${FUNCNAME[0]}" - check_pyver - write_to_config(){ - mkdir -p $config_path - write_config > $config_file - info "Config file created at $config_file." - source $config_file - } - while true; do - player_input="$($steamsafe_zenity --forms --add-entry="Player name (required for some servers)" --add-entry="Steam API key" --add-entry="BattleMetrics API key (optional)" --title="DZGUI" --text="DZGUI" $sd_res --separator="@" 2>/dev/null)" - #explicitly setting IFS crashes $steamsafe_zenity in loop - #and mapfile does not support high ascii delimiters - #so split fields with newline - readarray -t args < <(echo "$player_input" | sed 's/@/\n/g') - name="${args[0]}" - steam_api="${args[1]}" - api_key="${args[2]}" - - [[ -z $player_input ]] && exit - if [[ -z $steam_api ]]; then - warn "Steam API key cannot be empty" - continue - elif [[ $(test_steam_api) -eq 1 ]]; then - warn "Invalid Steam API key" - continue - fi - if [[ -n $api_key ]] && [[ $(test_bm_api $api_key) -eq 1 ]]; then - warn "Invalid BM API key" - continue - fi - while true; do - logger INFO "steamsafe_zenity is $steamsafe_zenity" - if [[ -n $steam_path ]]; then - write_to_config - return - fi - find_default_path - find_library_folder "$default_steam_path" - if [[ -z $steam_path ]]; then - logger WARN "Steam path was empty" - zenity --question --text="DayZ not found or not installed at the chosen path." --ok-label="Choose path manually" --cancel-label="Exit" - if [[ $? -eq 0 ]]; then - logger INFO "User selected file picker" - file_picker - else - exit - fi - else - write_to_config - return - fi - done - done +check_unmerged(){ + if [[ -f ${config_path}.unmerged ]]; then + merge_config + rm ${config_path}.unmerged + fi +} +check_version(){ + local version_url=$(format_version_url) + local upstream=$(curl -Ls "$version_url" | awk -F= '/^version=/ {print $2}') + logger INFO "Local branch: '$branch', local version: $version" + if [[ $branch == "stable" ]]; then + version_url="$stable_url/dzgui.sh" + elif [[ $branch == "testing" ]]; then + version_url="$testing_url/dzgui.sh" + fi + local upstream=$(curl -Ls "$version_url" | awk -F= '/^version=/ {print $2}') + [[ ! -f "$freedesktop_path/$appname.desktop" ]] && freedesktop_dirs + if [[ $version == $upstream ]]; then + logger INFO "Local version is same as upstream" + check_unmerged + else + logger WARN "Local and remote version mismatch: $version != $upstream" + prompt_dl + fi +} +download_new_version(){ + local version_url="$(format_version_url)" + logger INFO "Version URL is '$version_url'" + logger INFO "$src_path" + mv "$src_path" "$src_path.old" + curl -L "$version_url" > "$src_path" 2>$debug_log + rc=$? + if [[ $rc -eq 0 ]]; then + dl_changelog + logger INFO "Wrote new version to $src_path" + chmod +x "$src_path" + touch "${config_path}.unmerged" + fdialog "DZGUI $upstream successfully downloaded. To use the new version, select Exit and restart." + logger INFO "User exited after version upgrade" + exit 0 + else + mv "$src_path.old" "$src_path" + logger WARN "curl failed to fetch new version. Rolling back" + fdialog "Failed to download the new version. Restoring old version" + return 1 + fi +} +prompt_dl(){ + _text(){ + cat <<-EOF + Version conflict. + Your branch: $branch + Your version: $version + Upstream version: $upstream + + Version updates introduce important bug fixes and are encouraged. Attempt to download the latest version? + EOF + } + qdialog "$(_text)" "Yes" "No" + if [[ $? -eq 1 ]]; then + return 0 + else + download_new_version + fi } -err(){ - printf "[ERROR] %s\n" "$1" -} -varcheck(){ - if [[ ! -d $steam_path ]] || [[ ! -d $game_dir ]]; then - echo 1 - fi -} -run_depcheck(){ - logger INFO "${FUNCNAME[0]}" - if [[ -n $(depcheck) ]]; then - echo "100" - logger ERROR "Missing dependencies, quitting" - $steamsafe_zenity --warning --ok-label="Exit" --title="DZGUI" --text="$(depcheck)" - exit - fi -} -logger(){ - local date="$(date "+%F %T")" - local tag="$1" - local string="$2" - printf "[%s] [%s] %s\n" "$date" "$tag" "$string" >> "$debug_log" -} -check_pyver(){ - local pyver=$(python3 --version | awk '{print $2}') - local minor=$(<<< $pyver awk -F. '{print $2}') - if [[ -z $pyver ]] || [[ ${pyver:0:1} -lt 3 ]] || [[ $minor -lt 10 ]]; then - warn "Requires python >=3.10" && - exit - fi -} -run_varcheck(){ - logger INFO "${FUNCNAME[0]}" - source $config_file - workshop_dir="$steam_path/steamapps/workshop/content/$aid" - game_dir="$steam_path/steamapps/common/DayZ" - if [[ $(varcheck) -eq 1 ]]; then - $steamsafe_zenity --question --cancel-label="Exit" --text="Malformed config file. This is probably user error.\nStart first-time setup process again?" --width=500 2>/dev/null - code=$? - if [[ $code -eq 1 ]]; then - logger ERROR "Malformed config vars" - exit - else - create_config - fi - fi -} -config(){ - logger INFO "${FUNCNAME[0]}" - if [[ ! -f $config_file ]]; then - logger WARN "Config file missing" - logger INFO "steamsafe_zenity is $steamsafe_zenity" - $steamsafe_zenity --width=500 --info --text="Config file not found. Click OK to proceed to first-time setup." 2>/dev/null - code=$? - logger INFO "Return code $code" - #TODO: prevent progress if user hits ESC - if [[ $code -eq 1 ]]; then - exit - else - create_config - fi - else - source $config_file - fi - -} -steam_deck_mods(){ - until [[ -z $diff ]]; do - next=$(echo -e "$diff" | head -n1) - $steamsafe_zenity --question --ok-label="Open" --cancel-label="Cancel" --title="DZGUI" --text="Missing mods. Click [Open] to open mod $next in Steam Workshop and subscribe to it by clicking the green Subscribe button. After the mod is downloaded, return to this menu to continue validation." --width=500 2>/dev/null - rc=$? - if [[ $rc -eq 0 ]]; then - echo "[DZGUI] Opening ${workshop}$next" - $steam_cmd steam://url/CommunityFilePage/$next 2>/dev/null & - $steamsafe_zenity --info --title="DZGUI" --ok-label="Next" --text="Click [Next] to continue mod check." --width=500 2>/dev/null - else - return 1 - fi - compare - done +dl_changelog(){ + local mdbranch + [[ $branch == "stable" ]] && mdbranch="dzgui" + [[ $branch == "testing" ]] && mdbranch="testing" + local md="https://raw.githubusercontent.com/$author/dztui/${mdbranch}/CHANGELOG.md" + curl -Ls "$md" > "$state_path/CHANGELOG.md" } test_display_mode(){ - pgrep -a gamescope | grep -q "generate-drm-mode" - if [[ $? -eq 0 ]]; then + pgrep -a gamescope | grep -q "generate-drm-mode" + if [[ $? -eq 0 ]]; then echo gm else echo dm fi } -foreground(){ - if [[ $(command -v wmctrl) ]]; then - wmctrl -a "DZG Watcher" - else - local window_id=$(xdotool search --name "DZG Watcher") - xdotool windowactivate $window_id - fi -} -manual_mod_install(){ - local ip="$1" - local gameport="$2" - - local ex="/tmp/dzc.tmp" - [[ -f $ex ]] && rm $ex - watcher(){ - readarray -t stage_mods <<< "$diff" - for((i=0;i<${#stage_mods[@]};i++)); do - [[ -f $ex ]] && return 1 - local downloads_dir="$steam_path/steamapps/workshop/downloads/$aid" - local workshop_dir="$steam_path/steamapps/workshop/content/$aid" - $steam_cmd "steam://url/CommunityFilePage/${stage_mods[$i]}" - echo "# Opening workshop page for ${stage_mods[$i]}. If you see no progress after subscribing, try unsubscribing and resubscribing again until the download commences." - sleep 1s - foreground - until [[ -d $downloads_dir/${stage_mods[$i]} ]]; do - [[ -f $ex ]] && return 1 - sleep 0.1s - if [[ -d $workshop_dir/${stage_mods[$i]} ]]; then - break - fi - done - foreground - echo "# Steam is downloading ${stage_mods[$i]} (mod $((i+1)) of ${#stage_mods[@]})" - until [[ -d $workshop_dir/${stage_mods[$i]} ]]; do - [[ -f $ex ]] && return 1 - sleep 0.1s - done - foreground - echo "# ${stage_mods[$i]} moved to mods dir" - done - echo "100" - } - watcher > >($steamsafe_zenity --pulsate --progress --auto-close --title="DZG Watcher" --width=500 2>/dev/null; rc=$?; [[ $rc -eq 1 ]] && touch $ex) - compare - if [[ -z $diff ]]; then - passed_mod_check > >($steamsafe_zenity --pulsate --progress --auto-close --width=500 2>/dev/null) - launch "$ip" "$gameport" - else - return 1 - fi -} -encode(){ - echo "$1" | md5sum | cut -c -8 -} -stale_symlinks(){ - logger INFO "${FUNCNAME[0]}" - for l in $(find "$game_dir" -xtype l); do - unlink $l - done -} -legacy_symlinks(){ - for d in "$game_dir"/*; do - if [[ $d =~ @[0-9]+-.+ ]]; then - unlink "$d" - fi - done - for d in "$workshop_dir"/*; do - local id=$(awk -F"= " '/publishedid/ {print $2}' "$d"/meta.cpp | awk -F\; '{print $1}') - local encoded_id=$(echo "$id" | awk '{printf("%c",$1)}' | base64 | sed 's/\//_/g; s/=//g; s/+/]/g') - if [[ -h "$game_dir/@$encoded_id" ]]; then - unlink "$game_dir/@$encoded_id" - fi - done -} -symlinks(){ - for d in "$workshop_dir"/*; do - id=$(awk -F"= " '/publishedid/ {print $2}' "$d"/meta.cpp | awk -F\; '{print $1}') - encoded_id=$(encode "$id") - mod=$(awk -F\" '/name/ {print $2}' "$d"/meta.cpp | sed -E 's/[^[:alpha:]0-9]+/_/g; s/^_|_$//g') - link="@$encoded_id" - if [[ -h "$game_dir/$link" ]]; then - : - else - printf "[DZGUI] Creating symlink for $mod\n" - ln -fs "$d" "$game_dir/$link" - fi - done -} -passed_mod_check(){ - echo "[DZGUI] Passed mod check" - echo "# Preparing symlinks" - legacy_symlinks - symlinks - echo "100" - -} -auto_mod_install(){ - local ip="$1" - local gameport="$2" - popup 300 - rc=$? - if [[ $rc -eq 1 ]]; then - manual_mod_install "$ip" "$gameport" - return - fi - log="$default_steam_path/logs/content_log.txt" - [[ -f "/tmp/dz.status" ]] && rm "/tmp/dz.status" - touch "/tmp/dz.status" - console_dl "$diff" && - $steam_cmd steam://open/downloads && 2>/dev/null 1>&2 - foreground - until [[ -z $(comm -23 <(printf "%s\n" "${modids[@]}" | sort) <(ls -1 $workshop_dir | sort)) ]]; do - local missing=$(comm -23 <(printf "%s\n" "${modids[@]}" | sort) <(ls -1 $workshop_dir | sort) | wc -l) - echo "# Downloaded $((${#modids[@]}-missing)) of ${#modids[@]} mods. ESC cancels" - done | $steamsafe_zenity --pulsate --progress --title="DZG Watcher" --auto-close --no-cancel --width=500 2>/dev/null - compare - [[ $force_update -eq 1 ]] && { unset force_update; return; } - if [[ -z $diff ]]; then - check_timestamps - passed_mod_check > >($steamsafe_zenity --pulsate --progress --title="DZGUI" --auto-close --width=500 2>/dev/null) - launch "$ip" "$gameport" - else - manual_mod_install "$ip" "$gameport" - fi -} -get_local_stamps(){ - concat(){ - for ((i=0;i<$max;i++)); do - echo "publishedfileids[$i]=${local_modlist[$i]}&" - done | awk '{print}' ORS='' - } - payload(){ - echo -e "itemcount=${max}&$(concat)" - } - post(){ - curl -s -X POST -H "Content-Type:application/x-www-form-urlencoded" \ - -d "$(payload)" 'https://api.steampowered.com/ISteamRemoteStorage/GetPublishedFileDetails/v1/?format=json' - } - post -} -update_stamps(){ - for((i=0;i<${#local_modlist[@]};i++)); do - mod=${local_modlist[$i]} - stamp=${stamps[$i]} - printf "%s\t%s\n" "$mod" "$stamp" >> $version_file - done -} -check_timestamps(){ - readarray -t local_modlist < <(ls -1 $workshop_dir) - max=${#local_modlist[@]} - [[ $max -eq 0 ]] && return - readarray -t stamps < <(get_local_stamps | jq -r '.response.publishedfiledetails[].time_updated') - if [[ ! -f $version_file ]]; then - update_stamps - return - else - needs_update=() - for((i=0;i<${#local_modlist[@]};i++)); do - mod=${local_modlist[$i]} - stamp=${stamps[$i]} - if [[ ! $(awk -v var=$mod '$1 == var' $version_file) ]]; then - echo -e "$mod\t$stamp" >> $version_file - elif [[ $(awk -v var=$mod -v var2=$stamp '$1 == var && $2 == var2' $version_file) ]]; then - : - else - awk -v var=$mod -v var2=$stamp '$1 == var {$2=var2;print $1"\t"$2; next;};{print}' $version_file > $version_file.new - mv $version_file.new $version_file - needs_update+=($mod) - fi - done - fi -} -merge_modlists(){ - echo "# Aligning modlists" - [[ $force_update -eq 1 ]] && echo "# Checking mod versions" - check_timestamps - if [[ -z "$diff" ]] && [[ ${#needs_update[@]} -gt 0 ]]; then - diff=$(printf "%s\n" "${needs_update[@]}") - elif [[ -z "$diff" ]] && [[ ${#needs_update[@]} -eq 0 ]]; then - diff= - elif [[ -n "$diff" ]] && [[ ${#needs_update[@]} -eq 0 ]]; then - : - else - diff="$(printf "%s\n%s\n" "$diff" "${needs_update[@]}")" - fi - [[ $force_update -eq 1 ]] && echo "100" -} -update_history(){ - local ip="$1" - local gameport="$2" - local qport="$3" - [[ -n $(grep "$ip:$gameport:$qport" $hist_file) ]] && return - if [[ -f $hist_file ]]; then - old=$(tail -n9 "$hist_file") - old="$old\n" - fi - echo -e "${old}${ip}:${gameport}:${qport}" > "$hist_file" -} -connect(){ - local ip=$1 - local gameport=$2 - local qport=$3 - logger INFO "Querying $ip:$gameport:$qport" - connect_dialog(){ - echo "# Querying modlist" - local remote - remote=$(a2s "$ip" "$qport" rules) - if [[ $? -eq 1 ]]; then - echo "100" - popup 1200 - return 1 - fi - logger INFO "Server returned modlist: $(<<< $remote tr '\n' ' ')" - echo "# Checking for defunct mods" - query_defunct "$remote" - } - (connect_dialog "$ip" "$qport") | pdialog - rc=$? - [[ $rc -eq 1 ]] && return - readarray -t newlist < /tmp/dz.modlist - compare - [[ $auto_install -eq 2 ]] && merge_modlists > >(pdialog) - if [[ -n $diff ]]; then - if [[ $is_steam_deck -eq 1 ]] && [[ $(test_display_mode) == "gm" ]]; then - popup 1400 - return 1 - fi - case $auto_install in - 1|2) auto_mod_install "$ip" "$gameport" ;; - *) manual_mod_install "$ip" "$gameport" ;; - esac - else - passed_mod_check > >(pdialog) - update_history "$ip" "$gameport" "$qport" - launch "$ip" "$gameport" "$qport" - fi -} -update_config(){ - mv $config_file ${config_file}.old - write_config > $config_file - source $config_file -} -prepare_ip_list(){ - local res="$1" - local ct=$(<<< "$res" jq '[.response.servers[]]|length' 2>/dev/null) - if [[ -n $ct ]]; then - for((i=0;i<$ct;i++));do - readarray -t json_arr < <(<<< $res jq --arg i $i -r '[.response.servers[]][($i|tonumber)]|"\(.name)\n\(.addr)\n\(.players)\n\(.max_players)\n\(.gameport)\n\(.gametype)"') - local name=${json_arr[0]} - local addr=${json_arr[1]} - local ip=$(<<< $addr awk -F: '{print $1}') - local qport=$(<<< $addr awk -F: '{print $2}') - local current=${json_arr[2]} - local max=${json_arr[3]} - local players="${current}/${max}" - local gameport="${json_arr[4]}" - local gametime="${json_arr[5]}" - gametime=$(<<< "$gametime" grep -o '[0-9][0-9]:[0-9][0-9]') - - echo "$name" - echo "${ip}:${gameport}" - echo "$players" - echo "$gametime" - echo "$qport" - done - fi -} -ip_table(){ - local sel - local res="$1" - while true; do - sel=$(prepare_ip_list "$res" | $steamsafe_zenity --width 1200 --height 800 --text="Multiple maps found at this server. Select map from the list below" --title="DZGUI" --list --column=Name --column=IP --column=Players --column=Gametime --column=Qport --print-column=1,2,5 --separator=%% 2>/dev/null) - [[ $? -eq 1 ]] && return 1 - echo "$sel" - return 0 - done -} -fetch_ip_metadata(){ - local ip="$1" - source $config_file - local url="https://api.steampowered.com/IGameServersService/GetServerList/v1/?filter=\appid\221100\gameaddr\\$ip&key=$steam_api" - curl -Ls "$url" -} - -validate_local_ip(){ - <<< "$1" grep -qP '(^127.\d+.\d+.\d+:\d+$)|(^10\.\d+.\d+.\d+:\d+$)|(^172\.1[6-9]\.\d+.\d+:\d+$)|(^172\.2[0-9]\.\d+.\d+:\d+$)|(^172\.3[0-1]\.\d+.\d+:\d+$)|(^192\.168\.\d+.\d+:\d+$)' -} -test_steam_api(){ - local url="https://api.steampowered.com/IGameServersService/GetServerList/v1/?filter=\appid\221100&limit=10&key=$steam_api" - local code=$(curl -ILs "$url" | grep -E "^HTTP") - [[ $code =~ 403 ]] && echo 1 - [[ $code =~ 200 ]] && echo 0 -} -test_bm_api(){ - local api_key="$1" - [[ -z $api_key ]] && return 1 - local code=$(curl -ILs "$api" -H "Authorization: Bearer "$api_key"" -G \ - -d "filter[game]=$game" | grep -E "^HTTP") - [[ $code =~ 401 ]] && echo 1 - [[ $code =~ 200 ]] && echo 0 -} -add_steam_api(){ - [[ $(test_steam_api) -eq 1 ]] && return 1 - mv $config_file ${config_path}dztuirc.old - nr=$(awk '/steam_api=/ {print NR}' ${config_path}dztuirc.old) - steam_api="steam_api=\"$steam_api\"" - awk -v "var=$steam_api" -v "nr=$nr" 'NR==nr {$0=var}{print}' ${config_path}dztuirc.old > ${config_path}dztuirc - echo "[DZGUI] Added Steam API key" - $steamsafe_zenity --info --title="DZGUI" --text="Added Steam API key to:\n\n${config_path}dztuirc\nIf errors occur, you can restore the file:\n${config_path}dztuirc.old" --width=500 2>/dev/null - source $config_file -} -check_steam_api(){ - if [[ -z $steam_api ]]; then - steam_api=$($steamsafe_zenity --entry --text="Key 'steam_api' not present in config file. Enter Steam API key:" --title="DZGUI" 2>/dev/null) - if [[ $? -eq 1 ]] ; then - return - elif [[ ${#steam_api} -lt 32 ]] || [[ $(test_steam_api) -eq 1 ]]; then - $steamsafe_zenity --warning --title="DZGUI" --text="Check API key and try again." 2>/dev/null - return 1 - else - add_steam_api - fi - fi -} -validate_ip(){ - echo "$1" | grep -qP '^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$' -} -connect_by_id(){ - local ip - ip=$(add_by_id "connect") - [[ $? -eq 1 ]] && return - readarray -t address < <(format_config_address "$ip") - local ip="${address[0]}" - local gameport="${address[1]}" - local qport="${address[2]}" - unset address - - connect "$ip" "$gameport" "$qport" -} -connect_by_ip(){ - local sel - sel=$(parse_ips) - [[ -z $sel ]] && return - - readarray -t address < <(format_table_results "$sel") - local ip="${address[1]}" - local gameport="${address[2]}" - local qport="${address[3]}" - - connect "$ip" "$gameport" "$qport" -} -parse_ips(){ - local res - source $config_file - check_steam_api - [[ $? -eq 1 ]] && return - while true; do - local ip - ip=$(edialog "Enter server IP (for LAN servers, include query port in IP:PORT format)") - [[ $? -eq 1 ]] && return 1 - if [[ $ip =~ ':' ]]; then - if ! validate_local_ip "$ip"; then - warn "Invalid local IP. Check IP:PORT combination and try again." - continue - fi - local lan_ip=$(<<< $ip awk -F: '{print $1}') - local lan_qport=$(<<< $ip awk -F: '{print $2}') - logger INFO "Given LAN IP was $lan_ip" - logger INFO "Given LAN port was $lan_qport" - res=$(a2s $lan_ip $lan_qport info) - if [[ ! $? -eq 0 ]] || [[ $(<<< $res jq 'length') -eq 0 ]]; then - warn "Failed to retrieve server metadata. Check IP:PORT combination and try again." - return 1 - fi - logger INFO "$res" - local name=$(<<< $res jq -r '.name') - local address=$(<<< $res jq -r '.address') - local ip=$(<<< $address awk -F: '{print $1}') - local gameport=$(<<< $address awk -F: '{print $2}') - local qport=$(<<< $res jq -r '.qport') - logger INFO "Found '${name}' at ${ip}:${gameport}:${qport}" - echo "${name}%%${ip}:${gameport}%%${qport}" - return 0 - else - if validate_ip "$ip"; then - res=$(fetch_ip_metadata "$ip") - if [[ ! $? -eq 0 ]] || [[ $(<<< $res jq '.response|length') -eq 0 ]]; then - warn "Failed to retrieve server metadata. Check IP or API key and try again." - return 1 - fi - local ct=$(<<< "$res" jq '.response.servers|length') - if [[ $ct -eq 1 ]]; then - local name=$(<<< $res jq -r '.response.servers[].name') - local address=$(<<< $res jq -r '.response.servers[].addr') - local ip=$(<<< "$address" awk -F: '{print $1}') - local qport=$(<<< "$address" awk -F: '{print $2}') - local gameport=$(<<< $res jq -r '.response.servers[].gameport') - echo "${name}%%${ip}:${gameport}%%${qport}" - return 0 - fi - ip_table "$res" - return 0 - else - warn "Invalid IP" - fi - fi - done -} -query_defunct(){ - readarray -t modlist <<< "$@" - local max=${#modlist[@]} - concat(){ - for ((i=0;i<$max;i++)); do - echo "publishedfileids[$i]=${modlist[$i]}&" - done | awk '{print}' ORS='' - } - payload(){ - echo -e "itemcount=${max}&$(concat)" - } - post(){ - curl -s \ - -X POST \ - -H "Content-Type:application/x-www-form-urlencoded"\ - -d "$(payload)" 'https://api.steampowered.com/ISteamRemoteStorage/GetPublishedFileDetails/v1/?format=json' - } - local result=$(post | jq -r '.[].publishedfiledetails[] | select(.result==1) | "\(.file_size) \(.publishedfileid)"') - <<< "$result" awk '{print $2}' > /tmp/dz.modlist -} -server_modlist(){ - for i in "${newlist[@]}"; do - printf "$i\n" - done -} -compare(){ - diff=$(comm -23 <(server_modlist | sort -u) <(installed_mods | sort)) -} - -installed_mods(){ - ls -1 "$workshop_dir" -} -concat_mods(){ - readarray -t serv <<< "$(server_modlist)" - for i in "${serv[@]}"; do - id=$(awk -F"= " '/publishedid/ {print $2}' "$workshop_dir"/$i/meta.cpp | awk -F\; '{print $1}') - encoded_id=$(encode $id) - link="@$encoded_id;" - echo -e "$link" - done | tr -d '\n' | perl -ple 'chop' -} -launch(){ - local ip="$1" - local gameport="$2" - local qport="$3" - source $config_file - mods=$(concat_mods) - if [[ ! ${ip_list[@]} =~ "$ip:$gameport:$qport" ]]; then - qdialog "Before connecting, add this server to My Servers?" - if [[ $? -eq 0 ]]; then - ip_list+=("$ip:$gameport:$qport") - update_config - fi - fi - if [[ $debug -eq 1 ]]; then - launch_options="$steam_cmd -applaunch $aid -connect=$ip:$gameport -nolauncher -nosplash -name=$name -skipintro \"-mod=$mods\"" - print_launch_options="$(printf "This is a dry run.\nThese options would have been used to launch the game:\n\n$launch_options\n" | fold -w 60)" - $steamsafe_zenity --question --title="DZGUI" --ok-label="Write to file" --cancel-label="Back"\ - --text="$print_launch_options" 2>/dev/null - if [[ $? -eq 0 ]]; then - source_script=$(realpath "$0") - source_dir=$(dirname "$source_script") - echo "$launch_options" > "$source_dir"/options.log - echo "[DZGUI] Wrote launch options to $source_dir/options.log" - $steamsafe_zenity --info --width=500 --title="DZGUI" --text="Wrote launch options to \n$source_dir/options.log" 2>/dev/null - fi - else - $steamsafe_zenity --width=500 --title="DZGUI" --info --text="Launch conditions satisfied.\nDayZ will now launch after clicking [OK]." 2>/dev/null - $steam_cmd -applaunch $aid -connect=$ip:$gameport -nolauncher -nosplash -skipintro -name=$name \"-mod=$mods\" - fi -} -browser(){ - if [[ $is_steam_deck -eq 1 ]]; then - steam steam://openurl/"$1" 2>/dev/null - elif [[ $is_steam_deck -eq 0 ]]; then - if [[ -n "$BROWSER" ]]; then - "$BROWSER" "$1" 2>/dev/null - else - xdg-open "$1" 2>/dev/null - fi - fi -} -report_bug(){ - browser "$issues_url" -} -forum(){ - browser "$forum_url" -} -help_file(){ - browser "$help_url" -} -sponsor(){ - browser "$sponsor_url" -} -hof(){ - browser "${help_url}#_hall_of_fame" -} -set_mode(){ - logger INFO "${FUNCNAME[0]}" - if [[ $debug -eq 1 ]]; then - mode=debug - else - mode=normal - fi - logger INFO "Mode is $mode" -} -delete_by_ip(){ - local to_delete="$1" - for (( i=0; i<${#ip_list[@]}; ++i )); do - if [[ ${ip_list[$i]} == "$to_delete" ]]; then - unset ip_list[$i] - fi - done - if [[ ${#ip_list} -gt 0 ]]; then - readarray -t ip_list < <(printf "%s\n" "${ip_list[@]}") - fi - update_config - info "Removed $to_delete from:\n${config_path}dztuirc\nIf errors occur, you can restore the file:\n${config_path}dztuirc.old" -} -format_table_results(){ - local sel="$1" - local name=$(<<< "$sel" awk -F"%%" '{print $1}') - local address=$(<<< "$sel" awk -F"%%" '{print $2}') - local ip=$(<<< "$address" awk -F":" '{print $1}') - local gameport=$(<<< "$address" awk -F":" '{print $2}') - local qport=$(<<< "$sel" awk -F"%%" '{print $3}') - printf "%s\n%s\n%s\n%s\n" "$name" "$ip" "$gameport" "$qport" -} -delete_or_connect(){ - local sel="$1" - local mode="$2" - - readarray -t address < <(format_table_results "$sel") - local server_name="${address[0]}" - local ip="${address[1]}" - local gameport="${address[2]}" - local qport="${address[3]}" - unset address - - case "$mode" in - "delete") - qdialog "Delete this server?\n$server_name" - [[ $? -eq 1 ]] && return - - delete_by_ip "$ip:$gameport:$qport" - source $config_file - - local str="^$ip:$gameport$" - local nr=$(awk -v v="$str" '$1 ~ v {print NR}' $tmp) - local st=$((nr-1)) - local en=$((st+5)) - sed -i "${st},${en}d" $tmp - # if [[ ${#ip_list[@]} -eq 0 ]]; then - # return 1 - # fi - ;; - "connect"|"history") - connect "$ip" "$gameport" "$qport" - return - esac -} -populate(){ - local switch="$1" - while true; do - cols="--column="Server" --column="IP" --column="Players" --column="Gametime" --column="Distance" --column="Qport"" - set_header "$switch" - rc=$? - if [[ $rc -eq 0 ]]; then - if [[ -z $sel ]]; then - warn "No item was selected." - else - delete_or_connect "$sel" "$switch" - fi - else - return 1 - fi - done -} -list_mods(){ - if [[ -z $(installed_mods) ]] || [[ -z $(find $workshop_dir -maxdepth 2 -name "*.cpp" | grep .cpp) ]]; then - $steamsafe_zenity --info --text="94: No mods currently installed or incorrect path given" $sd_res 2>/dev/null - else - for d in $(find $game_dir/* -maxdepth 1 -type l); do - dir=$(basename $d) - awk -v d=$dir -F\" '/name/ {printf "%s\t%s\t", $2,d}' "$gamedir"/$d/meta.cpp - printf "%s\n" "$(basename $(readlink -f $game_dir/$dir))" - done | sort -k1 - fi -} -connect_to_fav(){ - logger INFO "${FUNCNAME[0]}" - - local fav="$1" - [[ -z $fav ]] && { popup 1300; return; } - - readarray -t address < <(format_config_address "$fav") - local ip="${address[0]}" - local gameport="${address[1]}" - local qport="${address[2]}" - - unset address - connect "$ip" "$gameport" "$qport" - [[ $? -eq 1 ]] && return 1 -} -set_header(){ - local switch="$1" - logger INFO "${FUNCNAME[0]}" - logger INFO "Header mode is $1" - local news - news=$(print_news) - [[ $auto_install -eq 2 ]] && install_mode="auto" - [[ $auto_install -eq 1 ]] && install_mode="headless" - [[ $auto_install -eq 0 ]] && install_mode=manual - case "$switch" in - "delete") - [[ -z $(< $tmp) ]] && return 1 - sel=$(< $tmp $steamsafe_zenity $sd_res --list $cols --title="DZGUI" \ - --text="DZGUI $version | Mode: $mode | Branch: $branch | Mods: $install_mode | Fav: $fav_label" \ - --separator="$separator" --print-column=1,2,6 --ok-label="Delete" 2>/dev/null) - ;; - - "connect"|"history") - sel=$(< $tmp $steamsafe_zenity $sd_res --list $cols --title="DZGUI" \ - --text="DZGUI $version | Mode: $mode | Branch: $branch | Mods: $install_mode | Fav: $fav_label" \ - --separator="$separator" --print-column=1,2,6 --ok-label="Connect" 2>/dev/null) - ;; - - "main_menu") - sel=$($steamsafe_zenity $sd_res --list --title="DZGUI" \ - --text="${news}DZGUI $version | Mode: $mode | Branch: $branch | Mods: $install_mode | Fav: $fav_label" \ - --cancel-label="Exit" --ok-label="Select" --column="Select launch option" --hide-header "${items[@]}" 2>/dev/null) - ;; - esac -} -toggle_branch(){ - mv $config_file ${config_path}dztuirc.old - nr=$(awk '/branch=/ {print NR}' ${config_path}dztuirc.old) - if [[ $branch == "stable" ]]; then - branch="testing" - else - branch="stable" - fi - flip_branch="branch=\"$branch\"" - awk -v "var=$flip_branch" -v "nr=$nr" 'NR==nr {$0=var}{print}' ${config_path}dztuirc.old > $config_file - source $config_file -} -generate_log(){ - cat <<-DOC - Distro: $(< /etc/os-release grep -w NAME | awk -F\" '{print $2}') - Kernel: $(uname -mrs) - Version: $version - Branch: $branch - Mode: $mode - Auto: $auto_hr - Servers: - $(print_ip_list) - Steam path: $steam_path - Workshop path: $workshop_dir - Game path: $game_dir - - Mods: - $(list_mods) - DOC -} -focus_beta_client(){ - steam steam://open/library 2>/dev/null 1>&2 && - steam steam://open/console 2>/dev/null 1>&2 && - sleep 1s - wid(){ - wmctrl -ilx |\ - awk 'tolower($3) == "steamwebhelper.steam"' |\ - awk '$5 ~ /^Steam|Steam Games List/' |\ - awk '{print $1}' - } - until [[ -n $(wid) ]]; do - : - done - wmctrl -ia $(wid) - sleep 0.1s - wid=$(xdotool getactivewindow) - local geo=$(xdotool getwindowgeometry $wid) - local pos=$(<<< "$geo" awk 'NR==2 {print $2}' | sed 's/,/ /') - local dim=$(<<< "$geo" awk 'NR==3 {print $2}' | sed 's/x/ /') - local pos1=$(<<< "$pos" awk '{print $1}') - local pos2=$(<<< "$pos" awk '{print $2}') - local dim1=$(<<< "$dim" awk '{print $1}') - local dim2=$(<<< "$dim" awk '{print $2}') - local dim1=$(((dim1/2)+pos1)) - local dim2=$(((dim2/2)+pos2)) - xdotool mousemove $dim1 $dim2 - xdotool click 1 - sleep 0.5s - xdotool key Tab -} -console_dl(){ - readarray -t modids <<< "$@" - focus_beta_client - sleep 1.5s - for i in "${modids[@]}"; do - xdotool type --delay 0 "workshop_download_item $aid $i" - sleep 0.5s - xdotool key Return - sleep 0.5s - done -} -find_default_path(){ - logger INFO "${FUNCNAME[0]}" - discover(){ - echo "# Searching for Steam" - default_steam_path=$(find / -type d \( -path "/proc" -o -path "*/timeshift" -o -path \ - "/tmp" -o -path "/usr" -o -path "/boot" -o -path "/proc" -o -path "/root" \ - -o -path "/sys" -o -path "/etc" -o -path "/var" -o -path "/lost+found" \) -prune \ - -o -regex ".*/Steam/ubuntu12_32$" -print -quit 2>/dev/null | sed 's@/ubuntu12_32@@') - } - if [[ $is_steam_deck -eq 1 ]]; then - default_steam_path="$HOME/.local/share/Steam" - else - local def_path - local ub_path - local flat_path - def_path="$HOME/.local/share/Steam" - ub_path="$HOME/.steam/steam" - flat_path="$HOME/.var/app/com.valvesoftware.Steam/data/Steam" - - if [[ -d "$def_path" ]]; then - default_steam_path="$def_path" - elif [[ -d "$ub_path" ]]; then - default_steam_path="$ub_path" - elif [[ -d $flat_path ]]; then - default_steam_path="$flat_path" - else - local res=$(echo -e "Let DZGUI auto-discover Steam path (accurate, slower)\nSelect the Steam path manually (less accurate, faster)" | $steamsafe_zenity --list --column="Choice" --title="DZGUI" --hide-header --text="Steam is not installed in a standard location." $sd_res) - case "$res" in - *auto*) discover ;; - *manual*) - zenity --info --text="\nSelect the top-level entry point to the location where Steam (not DayZ)\nis installed and before entering the \"steamapps\" path.\n\nE.g., if Steam is installed at:\n\"/media/mydrive/Steam\"\n\nCorrect:\n- \"/media/mydrive/Steam\"\n\nIncorrect:\n- \"/media/mydrive/Steam/steamapps/common/DayZ\"\n- \"/media/mydrive/\"" --width=500 && - file_picker ;; - esac - fi - fi -} -fold_message(){ - echo "$1" | fold -s -w40 -} -popup(){ - pop(){ - $steamsafe_zenity --info --text="$1" --title="DZGUI" --width=500 2>/dev/null - } - case "$1" in - 100) pop "This feature requires xdotool and wmctrl.";; - 200) pop "This feature is not supported on Gaming Mode.";; - 300) pop "$(fold_message 'The Steam console will now open and briefly issue commands to download the workshop files, then return to the download progress page. Ensure that the Steam console has keyboard and mouse focus (keep hands off keyboard) while the commands are being issued. Depending on the number if mods, it may take some time to queue the downloads. If a popup or notification window steals focus, it could obstruct the process.')" ;; - 400) pop "$(fold_message 'Automod install enabled. Auto-downloaded mods will not appear in your Steam Workshop subscriptions, but DZGUI will track the version number of downloaded mods internally and trigger an update if necessary.')" ;; - 500) pop "$(fold_message 'Automod install disabled. Switched to manual mode.')" ;; - 600) pop "No preferred servers set." ;; - 700) pop "Toggled to Flatpak Steam." ;; - 800) pop "Toggled to native Steam." ;; - 900) pop "This feature is not supported on Steam Deck." ;; - 1000) pop "No recent history." ;; - 1100) pop "No results found." ;; - 1200) pop "Timed out. Server may be temporarily offline or not responding to queries." ;; - 1300) pop "No favorite server configured." ;; - 1400) pop "To install missing mods, run DZGUI via Desktop Mode on Steam Deck, preferably via the desktop shortcut." ;; - esac -} -toggle_console_dl(){ - [[ $is_steam_deck -eq 1 ]] && { popup 900; return; } - [[ ! $(command -v xdotool) ]] && { popup 100; return; } - [[ ! $(command -v wmctrl) ]] && { popup 100; return; } - mv $config_file ${config_path}dztuirc.old - local nr=$(awk '/auto_install=/ {print NR}' ${config_path}dztuirc.old) - if [[ $auto_install == "2" ]]; then - auto_install="0" - popup 500 - else - auto_install="2" - popup 400 - fi - local flip_state="auto_install=\"$auto_install\"" - awk -v "var=$flip_state" -v "nr=$nr" 'NR==nr {$0=var}{print}' ${config_path}dztuirc.old > $config_file - source $config_file -} -force_update_mods(){ - if [[ -f $version_file ]]; then - awk '{OFS="\t"}{$2="000"}1' $version_file > /tmp/versions - mv /tmp/versions $version_file - fi -} -toggle_steam_binary(){ - case "$steam_cmd" in - steam) - steam_cmd="flatpak run com.valvesoftware.Steam" - update_steam_cmd - popup 700 - ;; - flatpak*) - steam_cmd="steam" - update_steam_cmd - popup 800;; - esac -} -options_menu(){ - init_options_list(){ - source $config_file - set_mode - case "$auto_install" in - 0|1|"") auto_hr="OFF"; ;; - 2) auto_hr="ON"; ;; - esac - [[ -z $name ]] && name="null" - debug_list=( - "Toggle branch [current: $branch]" - "Toggle debug mode [current: $mode]" - "Toggle auto mod install [current: $auto_hr]" - "Change player name [current: $name]" - "Output system info" - ) - #TODO: tech debt: drop old flags - [[ $auto_install -eq 2 ]] || [[ $auto_install -eq 1 ]] && debug_list+=("Force update local mods") - case "$steam_cmd" in - steam) steam_hr=Steam ;; - flatpak*) steam_hr=Flatpak ;; - esac - [[ $toggle_steam -eq 1 ]] && debug_list+=("Toggle native Steam or Flatpak [$steam_hr]") - } - while true; do - init_options_list - debug_sel=$($steamsafe_zenity --list --width=1280 --height=800 --column="Options" --title="DZGUI" --hide-header "${debug_list[@]}" 2>/dev/null) - [[ -z $debug_sel ]] && return - case "$debug_sel" in - Toggle[[:space:]]branch*) - enforce_dl=1 - toggle_branch && - check_version - ;; - Toggle[[:space:]]debug*) toggle_debug ;; - "Output system info") - source_script=$(realpath "$0") - source_dir=$(dirname "$source_script") - output(){ - echo "# Generating log" - generate_log > "$source_dir/DZGUI.log" - } - (output) | pdialog - [[ $? -eq 1 ]] && return - info_dialog "Wrote log file to: $source_dir/DZGUI.log" - ;; - Toggle[[:space:]]auto*) toggle_console_dl ;; - "Force update local mods") - force_update=1 - force_update_mods - (merge_modlists) | pdialog - auto_mod_install - ;; - Toggle[[:space:]]native*) toggle_steam_binary ;; - Change[[:space:]]player[[:space:]]name*) change_name - ;; - esac - done -} -info_dialog(){ - local title="DZGUI" - $steamsafe_zenity --info --width=500 --title="$title" --text="$1" 2>/dev/null -} -a2s(){ - local ip="$1" - local qport="$2" - local mode="$3" - logger A2S "Querying '$ip:$qport' with mode '$mode'" - python3 $helpers_path/query.py "$ip" "$qport" "$mode" -} -format_config_address(){ - local address="$1" - parse(){ - local ind="$1" - <<< $address awk -F: "{print \$$ind}" - } - local ip=$(parse 1) - local gameport=$(parse 2) - local qport=$(parse 3) - printf "%s\n%s\n%s" "$ip" "$gameport" "$qport" -} -query_and_connect(){ - source $config_file - local switch="$1" - local ips="$2" - case "$switch" in - "history") - if [[ -z $2 ]]; then - warn "No recent servers in history" - return 1 - fi - readarray -t ip_arr <<< "$ips" - ;; - "connect"|"delete") - if [[ ${#ip_list[@]} -eq 0 ]]; then - warn "No servers currently saved" - return 1 - fi - ips="$(printf "%s\n" "${ip_list[@]}")" - readarray -t ip_arr <<< "$ips" - ;; - esac - [[ ${#ip_arr[@]} -lt 1 ]] && { popup 600; return; } - > $tmp - q(){ - for (( i = 0; i < ${#ip_arr[@]}; ++i )); do - - local address="${ip_arr[$i]}" - readarray -t address < <(format_config_address "$address") - local ip="${address[0]}" - local gameport="${address[1]}" - local qport="${address[2]}" - unset address - - local info - echo "# Querying $ip:$qport" - info=$(a2s "$ip" "$qport" info) - [[ $? -eq 1 ]] && continue - local keywords=$(<<< $info jq -r '.keywords') - local vars=("name" "address" "count" "time" "dist" "qport") - for j in ${vars[@]}; do - local -n var=$j - case "$j" in - "time") - var=$(<<< "$keywords" grep -o '[0-9][0-9]:[0-9][0-9]') - ;; - "name") - var=$(<<< "$info" jq -r --arg arg $j '.[$arg]') - if [[ "${#var}" -gt 50 ]]; then - var="$(<<< "$var" awk '{print substr($0,1,50) "..."}')" - fi - ;; - "dist") - check_geo_file - local_latlon - var=$(get_dist $(<<< $address awk -F: '{print $1}')) - ;; - *) - var=$(<<< "$info" jq -r --arg arg $j '.[$arg]') - ;; - esac - printf "%s\n" "$var" >> $tmp - done - unset $j - done - } - - (q) | pdialog - [[ $? -eq 1 ]] && return - populate "$switch" -} -exclude_fpp(){ - response=$(<<< "$response" jq '[.[]|select(.gametype|split(",")|any(. == "no3rd")|not)]') -} -exclude_tpp(){ - response=$(<<< "$response" jq '[.[]|select(.gametype|split(",")|any(. == "no3rd"))]') -} -exclude_full(){ - response=$(echo "$response" | jq '[.[]|select(.players!=.max_players)]') -} -exclude_empty(){ - response=$(echo "$response" | jq '[.[]|select(.players!=0)]') -} -filter_maps(){ - echo "# Filtering maps" - [[ $ret -eq 98 ]] && return - local maps=$(echo "$response" | jq -r '.[].map//empty|ascii_downcase' | sort -u) - local map_ct=$(echo "$maps" | wc -l) - local map_sel=$(echo "$maps" | $steamsafe_zenity --list --column="Check" --width=1200 --height=800 2>/dev/null --title="DZGUI" --text="Found $map_ct map types") - echo "[DZGUI] Selected '$map_sel'" - if [[ -z $map_sel ]]; then - ret=97 - return - fi - echo "100" - response=$(echo "$response" | jq --arg map "$map_sel" '[.[]|select(.map)//empty|select(.map|ascii_downcase == $map)]') -} -exclude_daytime(){ - response=$(echo "$response" | jq '[.[]|select(.gametype|test(",[0][6-9]:|,[1][0-6]:")|not)]') -} -exclude_nighttime(){ - response=$(echo "$response" | jq '[.[]|select(.gametype|test(",[1][7-9]:|,[2][0-4]:|[0][0-5]:")|not)]') -} -keyword_filter(){ - response=$(echo "$response" | jq --arg search "$search" '[.[]|select(.name|ascii_downcase | contains($search))]') -} -exclude_lowpop(){ - response=$(echo "$response" | jq '[.[]|select(.players > 9)]') -} -exclude_nonascii(){ - response=$(echo "$response" | jq -r '[.[]|select(.name|test("^([[:ascii:]])*$"))]') -} -strip_null(){ - response=$(echo "$response" | jq -r '[.[]|select(.map//empty)]') -} -local_latlon(){ - if [[ -z $(command -v dig) ]]; then - local local_ip=$(curl -Ls "https://ipecho.net/plain") - else - local local_ip=$(dig -4 +short myip.opendns.com @resolver1.opendns.com) - fi - local url="http://ip-api.com/json/$local_ip" - local res=$(curl -Ls "$url" | jq -r '"\(.lat),\(.lon)"') - local_lat=$(echo "$res" | awk -F, '{print $1}') - local_lon=$(echo "$res" | awk -F, '{print $2}') -} -disabled(){ - if [[ -z ${disabled[@]} ]]; then - printf "%s" "-" - else - for((i=0;i<${#disabled[@]};i++)); do - if [[ $i < $((${#disabled[@]}-1)) ]]; then - printf "%s, " "${disabled[$i]}" - else - printf "%s" "${disabled[$i]}" - fi - - done - fi -} -pagination(){ - if [[ ${#qport[@]} -eq 1 ]]; then - entry=server - else - entry=servers - fi - printf "DZGUI %s | " "$version" - printf "Mode: %s |" "$mode" - printf "Fav: %s " "$fav_label" - printf "\nIncluded: %s | " "$filters" - printf "Excluded: %s " "$(disabled)" - if [[ -n $search ]]; then - printf "| Keyword: %s " "$search" - fi - printf "\nReturned: %s %s of %s | " "${#qport[@]}" "$entry" "$total_servers" - printf "Players in-game: %s" "$players_online" -} -check_geo_file(){ - local gzip="$helpers_path/ips.csv.gz" - curl -Ls "$sums_url" > "$sums_path" - cd "$helpers_path" - md5sum -c "$sums_path" 2>/dev/null 1>&2 - local res=$? - cd $OLDPWD - [[ $res -eq 0 ]] && return - update(){ - mkdir -p "$helpers_path" - echo "# Fetching new geolocation DB" - curl -Ls "$db_file" > "$gzip" - echo "# Extracting coordinates" - #force overwrite - gunzip -f "$gzip" - echo "# Preparing helper file" - curl -Ls "$km_helper_url" > "$km_helper" - chmod +x $km_helper - echo "100" - } - update > >(pdialog) -} -choose_filters(){ - if [[ $is_steam_deck -eq 0 ]]; then - sd_res="--width=1920 --height=1080" - fi - sels=$($steamsafe_zenity --title="DZGUI" --text="Server search" --list --checklist --column "Check" --column "Option" --hide-header TRUE "All maps (untick to select from map list)" TRUE "Daytime" TRUE "Nighttime" TRUE "1PP" TRUE "3PP" False "Empty" False "Full" TRUE "Low population" FALSE "Non-ASCII titles" FALSE "Keyword search" $sd_res 2>/dev/null) - if [[ $sels =~ Keyword ]]; then - local search - while true; do - search=$(edialog "Search (case insensitive)" | awk '{print tolower($0)}') - [[ $? -eq 1 ]] && return 1 - [[ -z $search ]] && warn "Cannot submit an empty keyword" - [[ -n $search ]] && break - done - fi - [[ -z $sels ]] && return - echo "$sels" | sed 's/|/, /g;s/ (untick to select from map list)//' - echo "$search" -} -get_dist(){ - local given_ip="$1" - local network="$(<<< "$given_ip" awk -F. '{OFS="."}{print $1"."$2}')" - local binary=$(grep -E "^$network\." $geo_file) - local three=$(<<< $given_ip awk -F. '{print $3}') - local host=$(<<< $given_ip awk -F. '{print $4}') - local res=$(<<< "$binary" awk -F[.,] -v three=$three -v host=$host '$3 <=three && $7 >= three{if($3>three || ($3==three && $4 > host) || $7 < three || ($7==three && $8 < host)){next}{print}}' | awk -F, '{print $7,$8}') - local remote_lat=$(<<< "$res" awk '{print $1}') - local remote_lon=$(<<< "$res" awk '{print $2}') - if [[ -z $remote_lat ]]; then - local dist="Unknown" - echo "$dist" - else - local dist=$($km_helper "$local_lat" "$local_lon" "$remote_lat" "$remote_lon") - LC_NUMERIC=C printf "%05.0f %s" "$dist" "km" - fi -} -prepare_filters(){ - local sels="$1" - local search="$2" - [[ ! "$sels" =~ "Full" ]] && { exclude_full; disabled+=("Full") ; } - [[ ! "$sels" =~ "Empty" ]] && { exclude_empty; disabled+=("Empty") ; } - [[ ! "$sels" =~ "Daytime" ]] && { exclude_daytime; disabled+=("Daytime") ; } - [[ ! "$sels" =~ "Nighttime" ]] && { exclude_nighttime; disabled+=("Nighttime") ; } - [[ ! "$sels" =~ "Low population" ]] && { exclude_lowpop; disabled+=("Low-pop") ; } - [[ ! "$sels" =~ "Non-ASCII titles" ]] && { exclude_nonascii; disabled+=("Non-ASCII") ; } - [[ ! "$sels" =~ "1PP" ]] && { exclude_fpp; disabled+=("FPP") ; } - [[ ! "$sels" =~ "3PP" ]] && { exclude_tpp; disabled+=("TPP") ; } - [[ -n "$search" ]] && keyword_filter - strip_null -} -munge_servers(){ - local sels="$1" - local search="$2" - write_fifo(){ - [[ -p $fifo ]] && rm $fifo - mkfifo $fifo - local dist - for((i=0;i<${#qport[@]};i++)); do - dist=$(get_dist ${addr[$i]}) - - printf "%s\n%s\n%s\n%s\n%03d\n%03d\n%s\n%s:%s\n%s\n" "${name[$i]}" "${map[$i]}" "${fpp[$i]}" "${gametime[$i]}" \ - "${players[$i]}" "${max[$i]}" "$dist" "${addr[$i]}" "${gameport[$i]}" "${qport[$i]}" >> $fifo - done - } - response="$(cat /tmp/dz.servers)" - if [[ ! "$sels" =~ "All maps" ]]; then - filter_maps > >(pdialog) - [[ $? -eq 1 ]] && return - disabled+=("All maps") - fi - [[ $ret -eq 97 ]] && return - prepare_filters "$sels" "$search" - [[ $? -eq 1 ]] && return - if [[ $(echo "$response" | jq 'length') -eq 0 ]]; then - $steamsafe_zenity --error --text="No matching servers" 2>/dev/null - return - fi - #jq bug #1788, raw output (-r) cannot be used with ASCII - local name=$(<<< "$response" jq -a '.[].name' | sed 's/\\u[0-9a-z]\{4\}//g;s/^"//;s/"$//') - local map=$(<<< "$response" jq -r '.[].map|if type == "string" then ascii_downcase else "null" end') - local gametime=$(<<< "$response" jq -r '.[]|(if .gametype == null then "null" else .gametype end)|scan("[0-9]{2}:[0-9]{2}$")') - local fpp=$(<<< "$response" jq -r '.[].gametype|split(",")|if any(. == "no3rd") then "1PP" else "3PP" end') - local players=$(<<< "$response" jq -r '.[].players') - local max=$(<<< "$response" jq -r '.[].max_players') - local addr=$(<<< "$response" jq -r '.[].addr|split(":")[0]') - local gameport=$(<<< "$response" jq -r '.[]|(if .gameport == null then "null" else .gameport end)') - local qport=$(<<< "$response" jq -r '.[].addr|split(":")[1]') - - readarray -t qport <<< $qport - readarray -t gameport <<< $gameport - readarray -t addr <<< $addr - readarray -t name <<< $name - readarray -t fpp <<< $fpp - readarray -t players <<< $players - readarray -t map <<< $map - readarray -t max <<< $max - readarray -t gametime <<< $gametime - - if [[ $is_steam_deck -eq 0 ]]; then - sd_res="--width=1920 --height=1080" - fi - write_fifo & - pid=$! - local sel=$($steamsafe_zenity --text="$(pagination)" --title="DZGUI" --list --column=Name --column=Map --column=PP --column=Gametime --column=Players --column=Max --column=Distance --column=IP --column=Qport $sd_res --print-column=1,8,9 --separator=%% 2>/dev/null < <(while true; do cat $fifo; done)) - if [[ -z $sel ]]; then - rm $fifo - kill -9 $pid 2>/dev/null - return 1 - else - rm $fifo - kill -9 $pid - echo $sel - fi -} -debug_servers(){ - debug_res=$(curl -Ls "https://api.steampowered.com/IGameServersService/GetServerList/v1/?filter=\appid\221100&limit=10&key=$steam_api") - local len=$(<<< "$debug_res" jq '[.response.servers[]]|length') - if [[ $len -eq 0 ]]; then - return 1 - else - return 0 - fi -} -server_browser(){ - unset ret - local filters="$(<<< "$1" awk 'NR==1 {print $0}')" - local keywords="$(<<< "$1" awk 'NR==2 {print $0}')" - echo "# Checking Steam API" - check_steam_api - [[ $? -eq 1 ]] && return - echo "# Checking geolocation file" - check_geo_file - echo "# Calculating server distances" - local_latlon - [[ $ret -eq 97 ]] && return - - local limit=20000 - local url="https://api.steampowered.com/IGameServersService/GetServerList/v1/?filter=\appid\221100&limit=$limit&key=$steam_api" - - echo "# Getting server list" - curl -Ls "$url" | jq -r '.response.servers' > /tmp/dz.servers - total_servers=$(< /tmp/dz.servers jq 'length' | numfmt --grouping) - players_online=$(curl -Ls "https://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v1/?appid=$aid" \ - | jq '.response.player_count' | numfmt --grouping) - debug_servers - [[ $? -eq 1 ]] && { popup 1100; return 1; } - - echo "100" - local sel=$(munge_servers "$filters" "$keywords") - if [[ -z $sel ]]; then - unset filters - unset search - ret=98 - sd_res="--width=1280 --height=800" - return 1 - fi - - readarray -t address < <(format_table_results "$sel") - local ip="${address[1]}" - local gameport="${address[2]}" - local qport="${address[3]}" - unset address - - connect "$ip" "$gameport" "$qport" - sd_res="--width=1280 --height=800" -} -mods_disk_size(){ - printf "Total size on disk: %s | " $(du -sh "$workshop_dir" | awk '{print $1}') - printf "%s mods | " $(ls -1 "$workshop_dir" | wc -l) - printf "Location: %s/steamapps/workshop/content/221100" "$steam_path" -} -main_menu(){ - logger INFO "${FUNCNAME[0]}" - logger INFO "Setting mode" - set_mode - while true; do - set_header "main_menu" - rc=$? - logger INFO "set_header rc is $rc" - if [[ $rc -eq 0 ]]; then - case "$sel" in - "") warn "No item was selected." ;; - " Server browser") - local filters=$(choose_filters) - [[ -z $filters ]] && continue - (server_browser "$filters") | pdialog ;; - " My servers") query_and_connect "connect" ;; - " Quick connect to favorite server") connect_to_fav "$fav_server" ;; - " Connect by ID") connect_by_id ;; - " Connect by IP") connect_by_ip ;; - " Recent servers (last 10)") query_and_connect "history" "$(cat $hist_file)" ;; - " Add server by ID") add_by_id ;; - " Add server by IP") add_by_ip ;; - " Add favorite server") add_by_fav ;; - " Change favorite server") add_by_fav ;; - " Delete server") query_and_connect "delete" ;; - " List installed mods") - list_mods | sed 's/\t/\n/g' | $steamsafe_zenity --list --column="Mod" --column="Symlink" --column="Dir" \ - --title="DZGUI" $sd_res --text="$(mods_disk_size)" \ - --print-column="" 2>/dev/null - ;; - " View changelog") changelog ;; - " Advanced options") - options_menu - main_menu - return - ;; - " Help file ⧉") help_file ;; - " Report bug ⧉") report_bug ;; - " Forum ⧉") forum ;; - " Sponsor ⧉") sponsor ;; - " Hall of fame ⧉") hof ;; - esac - else - logger INFO "Returning from main menu" - return - fi - done -} -set_fav(){ - local fav="$1" - logger INFO "${FUNCNAME[0]}" - - readarray -t address < <(format_config_address "$fav") - local ip="${address[0]}" - local gameport="${address[1]}" - local qport="${address[2]}" - unset address - - local info=$(a2s "$ip" "$qport" info) - local name=$(<<< $info jq -r '.name') - echo "'$name'" -} -check_unmerged(){ - logger INFO "${FUNCNAME[0]}" - if [[ -f ${config_path}.unmerged ]]; then - merge_config - rm ${config_path}.unmerged - fi -} -merge_config(){ - source $config_file - legacy_fav - legacy_ids - [[ -z $staging_dir ]] && staging_dir="/tmp" - update_config - tdialog "Wrote new config format to \n${config_file}\nIf errors occur, you can restore the file:\n${config_file}.old" -} -download_new_version(){ - if [[ $is_steam_deck -eq 1 ]]; then - freedesktop_dirs - fi - source_script=$(realpath "$0") - source_dir=$(dirname "$source_script") - mv $source_script $source_script.old - echo "# Downloading version $upstream" - curl -Ls "$version_url" > $source_script - rc=$? - if [[ $rc -eq 0 ]]; then - echo "[DZGUI] Wrote $upstream to $source_script" - chmod +x $source_script - touch ${config_path}.unmerged - echo "100" - $steamsafe_zenity --question --width=500 --title="DZGUI" --text "DZGUI $upstream successfully downloaded.\nTo view the changelog, select Changelog.\nTo use the new version, select Exit and restart." --ok-label="Changelog" --cancel-label="Exit" 2>/dev/null - code=$? - if [[ $code -eq 0 ]]; then - changelog - exit - elif [[ $code -eq 1 ]]; then - exit - fi - else - echo "100" - mv $source_script.old $source_script - $steamsafe_zenity --info --title="DZGUI" --text "[ERROR] 99: Failed to download new version." 2>/dev/null - return - fi - -} -check_branch(){ - logger INFO "${FUNCNAME[0]}" - if [[ $branch == "stable" ]]; then - version_url="$stable_url/dzgui.sh" - elif [[ $branch == "testing" ]]; then - version_url="$testing_url/dzgui.sh" - fi - logger INFO "Branch is $branch" - upstream=$(curl -Ls "$version_url" | awk -F= '/^version=/ {print $2}') - logger INFO "Upstream version is $version" -} -enforce_dl(){ - download_new_version > >(pdialog) -} -prompt_dl(){ - $steamsafe_zenity --question --title="DZGUI" --text "Version conflict.\n\nYour branch:\t\t\t$branch\nYour version:\t\t\t$version\nUpstream version:\t\t$upstream\n\nVersion updates introduce important bug fixes and are encouraged.\n\nAttempt to download latest version?" --width=500 --ok-label="Yes" --cancel-label="No" 2>/dev/null - rc=$? - if [[ $rc -eq 1 ]]; then - return - else - echo "100" - download_new_version > >(pdialog) - fi -} -check_version(){ - logger INFO "${FUNCNAME[0]}" - [[ -f $config_file ]] && source $config_file - [[ -z $branch ]] && branch="stable" - check_branch - [[ ! -f "$freedesktop_path/dzgui.desktop" ]] && freedesktop_dirs - if [[ $version == $upstream ]]; then - logger INFO "Local version is same as upstream" - check_unmerged - else - logger INFO "Local and remote version mismatch" - if [[ $enforce_dl -eq 1 ]]; then - enforce_dl - else - prompt_dl - fi - fi -} check_architecture(){ - logger INFO "${FUNCNAME[0]}" - cpu=$(cat /proc/cpuinfo | grep "AMD Custom APU 0405") - if [[ -n "$cpu" ]]; then - is_steam_deck=1 - logger INFO "Setting architecture to 'Steam Deck'" - else - is_steam_deck=0 - logger INFO "Setting architecture to 'desktop'" - fi + local cpu=$(< /proc/cpuinfo grep "AMD Custom APU 0405") + if [[ -n "$cpu" ]]; then + if [[ $(test_display_mode) == "gm" ]]; then + is_steam_deck=2 + else + is_steam_deck=1 + fi + logger INFO "Setting architecture to 'Steam Deck'" + else + is_steam_deck=0 + logger INFO "Setting architecture to 'desktop'" + fi } -print_ip_list(){ - [[ ${#ip_list} -eq 0 ]] && return - printf "\t\"%s\"\n" "${ip_list[@]}" +check_map_count(){ + [[ $is_steam_deck -gt 0 ]] && return 0 + local count=1048576 + local conf_file="/etc/sysctl.d/dayz.conf" + if [[ -f $conf_file ]]; then + logger DEBUG "System map count is already $count or higher" + return 0 + fi + qdialog "sudo password required to check system vm map count." "OK" "Cancel" + if [[ $? -eq 0 ]]; then + local pass + logger INFO "Prompting user for sudo escalation" + pass=$($steamsafe_zenity --password) + if [[ $? -eq 1 ]]; then + logger WARN "User aborted password prompt" + return 1 + fi + local ct=$(sudo -S <<< "$pass" sh -c "sysctl -q vm.max_map_count | awk -F'= ' '{print \$2}'") + logger DEBUG "Old map count is $ct" + local new_ct + [[ $ct -lt $count ]] && ct=$count + sudo -S <<< "$pass" sh -c "echo 'vm.max_map_count=$ct' > $conf_file" + sudo sysctl -p "$conf_file" + logger DEBUG "Updated map count to $count" + else + logger WARN "User aborted map count prompt" + return 1 + fi +} +qdialog(){ + local text="$1" + local ok="$2" + local cancel="$3" + $steamsafe_zenity --question --text="$1" --ok-label="$ok" --cancel-label="$cancel" "${zenity_flags[@]}" +} +pdialog(){ + $steamsafe_zenity --progress --pulsate --auto-close "${zenity_flags[@]}" --text="$1" +} +fdialog(){ + $steamsafe_zenity --warning --ok-label="Exit" --text="$1" "${zenity_flags[@]}" +} +tdialog(){ + $steamsafe_zenity --info --text="$1" "${zenity_flags[@]}" +} +steam_deps(){ + local flatpak + local steam + [[ $(command -v flatpak) ]] && flatpak=$(flatpak list | grep valvesoftware.Steam) + steam=$(command -v steam) + if [[ -z "$steam" ]] && [[ -z "$flatpak" ]]; then + local msg="Found neither Steam nor Flatpak Steam" + raise_error_and_quit "$msg" + exit 1 + elif [[ -n "$steam" ]] && [[ -n "$flatpak" ]]; then + [[ -n $preferred_client ]] && return 0 + if [[ -z $preferred_client ]]; then + preferred_client="steam" + fi + elif [[ -n "$steam" ]]; then + preferred_client="steam" + else + preferred_client="flatpak" + fi + update_config + logger INFO "Preferred client set to '$preferred_client'" } migrate_files(){ if [[ ! -f $config_path/dztuirc.oldapi ]]; then cp $config_file $config_path/dztuirc.oldapi - rm $hist_file + logger INFO "Migrated old API file" fi + [[ ! -f $hist_file ]] && return + rm $hist_file + logger INFO "Wiped old history file" } -legacy_fav(){ - source $config_file - [[ -z $fav ]] && return - local res=$(map_fav_to_ip "$fav") - source $config_file -} -legacy_ids(){ - source $config_file - [[ -z $whitelist ]] && return - local res=$(map_id_to_ip "$whitelist") - source $config_file -} -map_fav_to_ip(){ - local to_add="$1" - fav_server=$(curl -s "$api" -H "Authorization: Bearer "$api_key"" \ - -G -d "sort=-players" \ - -d "filter[game]=$game" \ - -d "filter[ids][whitelist]=$to_add" \ - | jq -r '.data[].attributes|"\(.ip):\(.port):\(.portQuery)"') - update_config - fav_label=$(set_fav "$fav_server") -} -map_id_to_ip(){ - local to_add="$1" - local mode="$2" - local res=$(curl -s "$api" -H "Authorization: Bearer "$api_key"" \ - -G -d "sort=-players" \ - -d "filter[game]=$game" \ - -d "filter[ids][whitelist]=$to_add") - local len=$(<<< "$res" jq '.data|length') - [[ $len -eq 0 ]] && return 1 - local ip=$(<<< "$res" jq -r '.data[].attributes|"\(.ip):\(.port):\(.portQuery)"') - if [[ $mode == "connect" ]]; then - echo "$ip" - return 0 - fi - for i in $ip; do - if [[ ${ip_list[@]} =~ $i ]]; then - [[ ! $len -eq 1 ]] && continue - warn "This server is already in your list" - return 2 - fi - ip_list+=("$i") - update_config +stale_symlinks(){ + local game_dir="$steam_path/steamapps/common/DayZ" + for l in $(find "$game_dir" -xtype l); do + logger DEBUG "Updating stale symlink '$l'" + unlink $l done - echo $i } -add_by_ip(){ - local sel=$(parse_ips) - [[ -z $sel ]] && return - - readarray -t address < <(format_table_results "$sel") - local ip="${address[1]}" - local gameport="${address[2]}" - local qport="${address[3]}" - unset address - - if [[ ${ip_list[@]} =~ "$ip:$gameport:$qport" ]]; then - warn "This server is already in your favorites" - return - fi - - ip_list+=("$ip:$gameport:$qport") - update_config - info "Added $ip:$gameport:$qport to:\n${config_path}dztuirc\nIf errors occurred, you can restore the file:\n${config_path}dztuirc.old" -} -pdialog(){ - $steamsafe_zenity --progress --pulsate --auto-close --title="DZGUI" --width=500 2>/dev/null -} -edialog(){ - if [[ $is_steam_deck -eq 1 ]] && [[ $(test_display_mode) == "gm" ]]; then - kdialog --inputbox "$1" --title "DZGUI" --geometry 500 2>/dev/null +local_latlon(){ + if [[ -z $(command -v dig) ]]; then + local local_ip=$(curl -Ls "https://ipecho.net/plain") else - $steamsafe_zenity --entry --text="$1" --width=500 --title="DZGUI" 2>/dev/null + local local_ip=$(dig -4 +short myip.opendns.com @resolver1.opendns.com) fi -} -tdialog(){ - $steamsafe_zenity --info --text="$1" --width=500 --title="DZGUI" 2>/dev/null -} -qdialog(){ - $steamsafe_zenity --question --text="$1" --width=500 --title="DZGUI" 2>/dev/null -} -add_by_id(){ - local mode="$1" - if [[ -z $api_key ]]; then - qdialog "Requires Battlemetrics API key. Set one now?" - [[ $? -eq 1 ]] && return 1 - while true; do - api_key=$(edialog "Battlemetrics API key") - [[ $? -eq 1 ]] && return 1 - [[ -z $api_key ]] && { warn "Invalid API key"; continue; } - if [[ $(test_bm_api $api_key) -eq 1 ]]; then - warn "Invalid API key" - unset api_key - continue - fi - update_config - break - done + local url="http://ip-api.com/json/$local_ip" + local res=$(curl -Ls "$url" | jq -r '"\(.lat)\n\(.lon)"') + if [[ -z "$res" ]]; then + logger WARN "Failed to get local coordinates" + return 1 fi - while true; do - local id - id=$(edialog "Enter server ID") - [[ $? -eq 1 ]] && return 1 - if [[ ! $id =~ ^[0-9]+$ ]]; then - warn "Invalid ID" - else - local ip - ip=$(map_id_to_ip "$id" "$mode") - case "$?" in - 1) - warn "Invalid ID" - continue - ;; - 2) - continue - ;; - *) - if [[ $mode == "connect" ]]; then - echo "$ip" - return 0 - fi - tdialog "Added $ip to:\n${config_path}dztuirc\nIf errors occurred, you can restore the file:\n${config_path}dztuirc.old" - return 0 - ;; - esac - fi - done -} -toggle_debug(){ - if [[ $debug -eq 1 ]]; then - debug=0 - else - debug=1 - fi - update_config - -} -setup(){ - logger INFO "${FUNCNAME[0]}" - [[ -z $fav_server ]] && return - items[10]=" Change favorite server" - [[ -n $fav_label ]] && return - fav_label=$(set_fav $fav_server) - update_config -} -check_map_count(){ - logger INFO "${FUNCNAME[0]}" - [[ $is_steam_deck -eq 1 ]] && return - local count=1048576 - logger INFO "Checking system map count" - echo "[DZGUI] Checking system map count" - if [[ ! -f /etc/sysctl.d/dayz.conf ]]; then - $steamsafe_zenity --question --width=500 --title="DZGUI" --cancel-label="Cancel" --ok-label="OK" --text "sudo password required to check system vm map count." - local rc=$? - logger INFO "Return code is $rc" - if [[ $rc -eq 0 ]]; then - local pass - logger INFO "Prompting user for sudo escalation" - pass=$($steamsafe_zenity --password) - local rc - logger INFO "Return code is $rc" - [[ $rc -eq 1 ]] && exit 1 - local ct=$(sudo -S <<< "$pass" sh -c "sysctl -q vm.max_map_count | awk -F'= ' '{print \$2}'") - local new_ct - [[ $ct -lt $count ]] && ct=$count - logger INFO "Updating map count" - sudo -S <<< "$pass" sh -c "echo 'vm.max_map_count=$ct' > /etc/sysctl.d/dayz.conf" - sudo sysctl -p /etc/sysctl.d/dayz.conf - else - logger INFO "Zenity dialog failed or user exit" - exit 1 - fi - fi -} -change_name(){ - while true; do - local name=$($steamsafe_zenity --entry --text="Enter desired in-game name" --title="DZGUI" 2>/dev/null) - [[ -z "${name//[[:blank:]]/}" ]] && continue - update_config - info "Changed name to: '$name'.\nIf errors occur, you can restore the file '${config_path}dztuirc.old'." - return - done -} -add_by_fav(){ - local sel=$(parse_ips) - [[ -z $sel ]] && return - - readarray -t address < <(format_table_results "$sel") - local ip="${address[1]}" - local gameport="${address[2]}" - local qport="${address[3]}" - unset address - fav_server="$ip:$gameport:$qport" - fav_label=$(set_fav "$fav_server") - - update_config - info "Added $fav_server to:\n${config_path}dztuirc\nIf errors occurred, you can restore the file:\n${config_path}dztuirc.old" - - items[10]=" Change favorite server" + echo "$res" > "$coords_file" } lock(){ - [[ ! -d $config_path ]] && return - if [[ ! -f ${config_path}.lockfile ]]; then - touch ${config_path}.lockfile - fi - pid=$(cat ${config_path}.lockfile) - ps -p $pid -o pid= >/dev/null 2>&1 - res=$? - if [[ $res -eq 0 ]]; then - info "DZGUI already running ($pid)" - exit - elif [[ $pid == $$ ]]; then - : - else - echo $$ > ${config_path}.lockfile - fi + [[ ! -f $lock_file ]] && touch $lock_file + local pid=$(cat $lock_file) + ps -p $pid -o pid= >/dev/null 2>&1 + res=$? + if [[ $res -eq 0 ]]; then + local msg="DZGUI already running ($pid)" + raise_error_and_quit "$msg" + elif [[ $pid == $$ ]]; then + : + else + echo $$ > $lock_file + fi +} +get_hash(){ + local file="$1" + md5sum "$1" | awk '{print $1}' } fetch_a2s(){ - [[ -d $helpers_path/a2s ]] && return - local sha=c7590ffa9a6d0c6912e17ceeab15b832a1090640 - local author="yepoleb" - local repo="python-a2s" - local url="https://github.com/$author/$repo/tarball/$sha" - local prefix="${author^}-$repo-${sha:0:7}" - local file="$prefix.tar.gz" - curl -Ls "$url" > "$helpers_path/$file" - tar xf "$helpers_path/$file" -C "$helpers_path" "$prefix/a2s" --strip=1 - rm "$helpers_path/$file" + [[ -d $helpers_path/a2s ]] && { logger INFO "A2S helper is current"; return 0; } + local sha=c7590ffa9a6d0c6912e17ceeab15b832a1090640 + local author="yepoleb" + local repo="python-a2s" + local url="https://github.com/$author/$repo/tarball/$sha" + local prefix="${author^}-$repo-${sha:0:7}" + local file="$prefix.tar.gz" + curl -Ls "$url" > "$helpers_path/$file" + tar xf "$helpers_path/$file" -C "$helpers_path" "$prefix/a2s" --strip=1 + rm "$helpers_path/$file" + logger INFO "Updated A2S helper to sha '$sha'" } fetch_dzq(){ - [[ -f $helpers_path/dayzquery.py ]] && return - local sha=ccc4f71b48610a1885706c9d92638dbd8ca012a5 - local author="yepoleb" - local repo="dayzquery" - local url="https://raw.githubusercontent.com/$author/$repo/$sha/$repo.py" - curl -Ls "$url" > $helpers_path/a2s/$repo.py -} -fetch_query(){ - local sum="7cbae12ae68b526e7ff376b638123cc7" - local file="$helpers_path/query.py" - if [[ -f $file ]] && [[ $(md5sum $file | awk '{print $1}') == $sum ]]; then - return + local sum="232f42b98a3b50a0dd6e73fee55521b2" + local file="$helpers_path/a2s/dayzquery.py" + if [[ -f $file ]] && [[ $(get_hash "$file") == $sum ]]; then + logger INFO "DZQ is current" + return 0 + fi + local sha=ccc4f71b48610a1885706c9d92638dbd8ca012a5 + local author="yepoleb" + local repo="dayzquery" + local url="https://raw.githubusercontent.com/$author/$repo/$sha/dayzquery.py" + curl -Ls "$url" > "$file" + logger INFO "Updated DZQ to sha '$sha'" +} +fetch_helpers_by_sum(){ + declare -A sums + sums=( + ["ui.py"]="ff5b691c3fc7d95c8f939c36c6c52f1d" + ["query_v2.py"]="1822bd1769ce7d7cb0d686a60f9fa197" + ["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397" + ["funcs"]="b2fd8cf2796e8511565b00593708cf40" + ) + local author="aclist" + local repo="dztui" + local realbranch + local file + local sum + local full_path + + # first time setup + if [[ -z $branch ]]; then + realbranch="dzgui" + else + realbranch="$branch" + fi + + for i in "${!sums[@]}"; do + file="$i" + sum="${sums[$i]}" + full_path="$helpers_path/$file" + url="https://raw.githubusercontent.com/$author/$repo/$realbranch/helpers/$file" + echo "$url" >> $HOME/log + if [[ -f "$full_path" ]] && [[ $(get_hash "$full_path") == $sum ]]; then + logger INFO "$file is current" + else + logger WARN "File '$full_path' checksum != '$sum'" + curl -Ls "$url" > "$full_path" + if [[ ! $? -eq 0 ]]; then + raise_error_and_quit "Failed to fetch the file '$file'. Possible timeout?" + fi + if [[ $(get_hash $full_path) != $sum ]]; then + logger WARN "Downloaded new '$file', but checksum != '$sum'" + fi + logger INFO "Updated '$full_path' to sum '$sum'" + fi + [[ $file == "funcs" ]] && chmod +x "$full_path" + done + return 0 +} +fetch_geo_file(){ + # for binary releases + local geo_sum="e7f3b25223ac4dfd5e30a0b55bb3ff6c" + local km_sum="b038fdb8f655798207bd28de3a004706" + local gzip="$helpers_path/ips.csv.gz" + if [[ ! -f $geo_file ]] || [[ $(get_hash $geo_file) != $geo_sum ]]; then + curl -Ls "$geo_file_url" > "$gzip" + #force overwrite + gunzip -f "$gzip" + fi + if [[ ! -f $km_helper ]] || [[ $(get_hash $km_helper) != $km_sum ]]; then + curl -Ls "$km_helper_url" > "$km_helper" + chmod +x "$km_helper" fi - local author="aclist" - local repo="dzgui" - local url="https://raw.githubusercontent.com/$author/dztui/$repo/helpers/query.py" - curl -Ls "$url" > "$helpers_path/query.py" } fetch_helpers(){ - logger INFO "${FUNCNAME[0]}" - mkdir -p "$helpers_path" - [[ ! -f "$helpers_path/vdf2json.py" ]] && curl -Ls "$vdf2json_url" > "$helpers_path/vdf2json.py" fetch_a2s fetch_dzq - fetch_query + fetch_geo_file + fetch_helpers_by_sum } -update_steam_cmd(){ - preferred_client="$steam_cmd" - update_config +raise_error_and_quit(){ + local msg="$1" + logger CRITICAL "$msg" + fdialog "$msg" + exit 1 } -steam_deps(){ - logger INFO "${FUNCNAME[0]}" - local flatpak steam - [[ $(command -v flatpak) ]] && flatpak=$(flatpak list | grep valvesoftware.Steam) - steam=$(command -v steam) - if [[ -z "$steam" ]] && [[ -z "$flatpak" ]]; then - warn "Requires Steam or Flatpak Steam" - logger ERROR "Steam was missing" - exit - elif [[ -n "$steam" ]] && [[ -n "$flatpak" ]]; then - toggle_steam=1 - steam_cmd="steam" - [[ -n $preferred_client ]] && steam_cmd="$preferred_client" - [[ -z $preferred_client ]] && update_steam_cmd - elif [[ -n "$steam" ]]; then - steam_cmd="steam" - else - steam_cmd="flatpak run com.valvesoftware.Steam" - fi - logger INFO "steam_cmd set to $steam_cmd" +test_steam_api(){ + local key="$1" + [[ -z $key ]] && return 1 + local url="https://api.steampowered.com/IGameServersService/GetServerList/v1/?filter=\appid\221100&limit=10&key=$key" + local code=$(curl -ILs "$url" | grep -E "^HTTP") + [[ $code =~ 403 ]] && echo 1 + [[ $code =~ 200 ]] && echo 0 } -update_steam_cmd(){ - local new_cmd - preferred_client="$steam_cmd" - new_cmd="preferred_client=\"$preferred_client\"" - mv $config_file ${config_path}dztuirc.old - nr=$(awk '/preferred_client=/ {print NR}' ${config_path}dztuirc.old) - awk -v "var=$new_cmd" -v "nr=$nr" 'NR==nr {$0=var}{print}' ${config_path}dztuirc.old > ${config_path}dztuirc +test_bm_api(){ + local bm_api="https://api.battlemetrics.com/servers" + local key="$1" + [[ -z $key ]] && return 1 + local code=$(curl -ILs "$bm_api" \ + -H "Authorization: Bearer "$key"" -G \ + -d "filter[game]=$game" \ + | grep -E "^HTTP") + [[ $code =~ 401 ]] && echo 1 + [[ $code =~ 200 ]] && echo 0 } -steam_deps(){ - logger INFO "${FUNCNAME[0]}" - local flatpak steam - [[ $(command -v flatpak) ]] && flatpak=$(flatpak list | grep valvesoftware.Steam) - steam=$(command -v steam) - if [[ -z "$steam" ]] && [[ -z "$flatpak" ]]; then - warn "Requires Steam or Flatpak Steam" - logger ERROR "Steam was missing" - exit - elif [[ -n "$steam" ]] && [[ -n "$flatpak" ]]; then - toggle_steam=1 - steam_cmd="steam" - [[ -n $preferred_client ]] && steam_cmd="$preferred_client" - [[ -z $preferred_client ]] && update_steam_cmd - elif [[ -n "$steam" ]]; then - steam_cmd="steam" - else - steam_cmd="flatpak run com.valvesoftware.Steam" - fi - logger INFO "steam_cmd set to $steam_cmd" +find_default_path(){ + _discover(){ + default_steam_path=$(find / -type d \( -path "/proc" -o -path "*/timeshift" -o -path \ + "/tmp" -o -path "/usr" -o -path "/boot" -o -path "/proc" -o -path "/root" \ + -o -path "/sys" -o -path "/etc" -o -path "/var" -o -path "/lost+found" \) -prune \ + -o -regex ".*/Steam/ubuntu12_32$" -print -quit 2>/dev/null | sed 's@/ubuntu12_32@@') + } + if [[ $is_steam_deck -eq 1 ]]; then + default_steam_path="$HOME/.local/share/Steam" + logger INFO "Set default Steam path to $default_steam_path" + return 0 + fi + local def_path + local ubuntu_path + local flatpak_path + local debian_path + def_path="$HOME/.local/share/Steam" + ubuntu_path="$HOME/.steam/steam" + debian_path="$HOME/.steam/debian-installation" + flatpak_path="$HOME/.var/app/com.valvesoftware.Steam/data/Steam" + + for i in "$def_path" "$ubuntu_path" "$debian_path" "$flatpak_path"; do + if [[ -d "$i" ]]; then + default_steam_path="$i" + return 0 + fi + done + + local msg="Let DZGUI auto-discover Steam path (accurate, slower)\nSelect the Steam path manually (less accurate, faster)" + echo -e "$msg" | $steamsafe_zenity --list \ + --column="Choice" \ + --title="DZGUI" \ + --hide-header \ + --text="Steam is not installed in a standard location." \ + $sd_res + + case "$res" in + *auto*) discover ;; + *manual*) + zenity --info --text="\nSelect the top-level entry point to the location where Steam (not DayZ)\nis installed and before entering the \"steamapps\" path.\n\nE.g., if Steam is installed at:\n\"/media/mydrive/Steam\"\n\nCorrect:\n- \"/media/mydrive/Steam\"\n\nIncorrect:\n- \"/media/mydrive/Steam/steamapps/common/DayZ\"\n- \"/media/mydrive/\"" --width=500 && + file_picker ;; + esac +} +file_picker(){ + local path=$($steamsafe_zenity --file-selection --directory) + logger INFO "File picker path resolved to: $path" + if [[ -z "$path" ]]; then + logger WARN "Steam path selection was empty" + return + else + default_steam_path="$path" + fi +} +find_library_folder(){ + local search_path="$1" + steam_path="$(python3 "$helpers_path/vdf2json.py" -i "$1/steamapps/libraryfolders.vdf" \ + | jq -r '.libraryfolders[]|select(.apps|has("221100")).path')" + if [[ ! $? -eq 0 ]]; then + logger WARN "Failed to parse Steam path using '$search_path'" + return 1 + fi + logger INFO "Steam path resolved to: $steam_path" +} +create_config(){ + while true; do + local player_input="$($steamsafe_zenity \ + --forms \ + --add-entry="Player name (required for some servers)" \ + --add-entry="Steam API key" \ + --add-entry="BattleMetrics API key (optional)" \ + --title="DZGUI" \ + --text="DZGUI" $sd_res \ + --separator="@")" + #explicitly setting IFS crashes $steamsafe_zenity in loop + #and mapfile does not support high ascii delimiters + #so split fields with newline + readarray -t args < <(<<< "$player_input" sed 's/@/\n/g') + name="${args[0]}" + steam_api="${args[1]}" + api_key="${args[2]}" + + if [[ -z $player_input ]]; then + logger WARN "User aborted setup process" + exit 1 + fi + if [[ -z $steam_api ]]; then + tdialog "Steam API key canot be empty" + continue + elif [[ "${#steam_api}" -lt 32 ]] || [[ $(test_steam_api "$steam_api") -eq 1 ]]; then + tdialog "Invalid Steam API key" + continue + fi + if [[ -n $api_key ]] && [[ $(test_bm_api $api_key) -eq 1 ]]; then + tdialog "Invalid BM API key" + continue + fi + while true; do + if [[ -n $steam_path ]]; then + write_config + [[ $? -eq 0 ]] && logger INFO "Successfully created config file" + return 0 + fi + find_default_path + find_library_folder "$default_steam_path" + if [[ -z $steam_path ]]; then + logger raise_error "Steam path was empty" + zenity --question --text="DayZ not found or not installed at the chosen path." --ok-label="Choose path manually" --cancel-label="Exit" + if [[ $? -eq 0 ]]; then + logger INFO "User selected file picker" + file_picker + find_library_folder "$default_steam_path" + else + fdialog "Failed to find Steam at the provided location" + exit 1 + fi + else + branch="stable" + update_config + logger INFO "Wrote config to '$config_file'" + return 0 + fi + done + done +} +varcheck(){ + local msg="Config file '$config_file' missing. Start first-time setup now?" + local msg2="The Steam paths set in your config file appear to be invalid. Restart first-time setup now?" + if [[ ! -f $config_file ]]; then + qdialog "$msg" "Yes" "Exit" + if [[ $? -eq 1 ]]; then + logger CRITICAL "Config file missing, but user aborted setup" + exit 1 + fi + create_config + fi + source "$config_file" + local workshop_dir="$steam_path/steamapps/workshop/content/$aid" + local game_dir="$steam_path/steamapps/common/DayZ" + if [[ ! -d $steam_path ]] || [[ ! -d $game_dir ]]; then + logger WARN "DayZ path resolved to '$game_dir'" + logger WARN "Workshop path resolved to '$workshop_dir'" + qdialog "$msg2" "Yes" "Exit" + if [[ $? -eq 1 ]]; then + logger CRITICAL "Malformed Steam path, but user aborted setup" + exit 1 + fi + create_config + return 0 + fi + if [[ $src_path != $(realpath "$0") ]]; then + src_path=$(realpath "$0") + update_config + fi +} +is_dzg_downloading(){ + if [[ -d $steam_path ]] && [[ -d $steam_path/downloading/$aid ]]; then + logger WARN "DayZ may be scheduling updates" + return 0 + fi +} +is_steam_running(){ + local res=$(ps aux | grep "steamwebhelper" | grep -v grep) + if [[ -z $res ]]; then + logger WARN "Steam may not be running" + tdialog "Is Steam running? For best results, make sure Steam is open in the background." + return 0 + fi +} +test_connection(){ + ping -c1 -4 github.com 1>/dev/null 2>&1 + if [[ ! $? -eq 0 ]]; then + raise_error_and_quit "No connection could be established to the remote server (github.com)." + fi + ping -c1 -4 api.steampowered.com 1>/dev/null 2>&1 + if [[ ! $? -eq 0 ]]; then + raise_error_and_quit "No connection could be established to the remote server (steampowered.com)." + fi } initial_setup(){ - echo "# Initial setup" - run_depcheck - check_pyver - watcher_deps - check_architecture - check_version - check_map_count - fetch_helpers - config - steam_deps - run_varcheck + setup_dirs + setup_state_files + depcheck + check_pyver + test_gobject + watcher_deps + check_architecture + test_connection + fetch_helpers > >(pdialog "Checking helper files") + varcheck + source "$config_file" + lock + legacy_vars + check_version + check_map_count + steam_deps migrate_files - stale_symlinks - init_items - setup - echo "100" + stale_symlinks + local_latlon + is_steam_running + is_dzg_downloading + print_config_vals } main(){ - local parent=$(cat /proc/$PPID/comm) - [[ -f "$debug_log" ]] && rm "$debug_log" - lock - local zenv=$(zenity --version 2>/dev/null) - [[ -z $zenv ]] && { echo "Failed to find zenity"; logger "Missing zenity"; exit 1; } - initial_setup > >(pdialog) - main_menu - #TODO: tech debt: cruddy handling for steam forking - [[ $? -eq 1 ]] && pkill -f dzgui.sh + local zenv=$(zenity --version 2>/dev/null) + [[ -z $zenv ]] && { echo "Requires zenity <= 3.44.1"; exit 1; } + set_im_module + + printf "Initializing setup...\n" + initial_setup + + printf "All OK. Kicking off UI...\n" + python3 "$ui_helper" "--init-ui" "$version" "$is_steam_deck" } main +#TODO: tech debt: cruddy handling for steam forking +[[ $? -eq 1 ]] && pkill -f dzgui.sh diff --git a/helpers/funcs b/helpers/funcs new file mode 100755 index 0000000..e15af0d --- /dev/null +++ b/helpers/funcs @@ -0,0 +1,1355 @@ +#!/usr/bin/env bash +set -o pipefail +version=5.0.0 + +#CONSTANTS +aid=221100 +game="dayz" +app_name="dzgui" +app_name_upper="DZGUI" +workshop="steam://url/CommunityFilePage/" +sd_res="--width=1280 --height=800" +steamsafe_zenity="/usr/bin/zenity" +separator="␞" + +##CONFIG +config_path="$HOME/.config/dztui" +config_file="$config_path/dztuirc" +source $config_file + +#PATHS +state_path="$HOME/.local/state/$app_name" +cache_path="$HOME/.cache/$app_name" +share_path="$HOME/.local/share/$app_name" +script_path="$share_path/dzgui.sh" +helpers_path="$share_path/helpers" +prefix="dzg" + +#LOGS +log_path="$state_path/logs" +debug_log="$log_path/DZGUI_DEBUG.log" +system_log="$log_path/DZGUI_SYSTEM.log" + +#STATE FILES +history_file="$state_path/$prefix.history" +versions_file="$state_path/$prefix.versions" +lock_file="$state_path/$prefix.lock" + +#CACHE +cache_dir="$HOME/.cache/$appname" +_cache_servers="$cache_dir/$prefix.servers" +_cache_my_servers="$cache_dir/$prefix.my_servers" +_cache_history="$cache_dir/$prefix.history" +_cache_launch="$cache_dir/$prefix.launch_mods" +_cache_address="$cache_dir/$prefix.launch_address" +_cache_coords="$cache_path/$prefix.coords" + +#XDG +freedesktop_path="$HOME/.local/share/applications" + +#HELPERS +ui_helper="$helpers_path/ui.py" +geo_file="$helpers_path/ips.csv" +km_helper="$helpers_path/latlon" +sums_path="$helpers_path/sums.md5" +query_helper="$helpers_path/query_v2.py" +func_helper="$helpers_path/funcs" + +#STEAM PATHS +workshop_path="$steam_path/steamapps/workshop" +workshop_dir="$workshop_path/content/$aid" +downloads_dir="$workshop_path/downloads/$aid" +game_dir="$steam_path/steamapps/common/DayZ" + +#URLS +author="aclist" +repo="dztui" +gh_prefix="https://github.com" +issues_url="$gh_prefix/$author/$repo/issues" +url_prefix="https://raw.githubusercontent.com/$author/$repo" +stable_url="$url_prefix/dzgui" +testing_url="$url_prefix/testing" +releases_url="$gh_prefix/$author/$repo/releases/download/browser" +km_helper_url="$releases_url/latlon" +db_file="$releases_url/ips.csv.gz" +sums_url="$stable_url/helpers/sums.md5" +#TODO: move adoc to index +help_url="https://$author.github.io/dzgui/dzgui" +forum_url="$gh_prefix/$author/$repo/discussions" +sponsor_url="$gh_prefix/sponsors/$author" +battlemetrics_server_url="https://www.battlemetrics.com/servers/dayz" +steam_api_url="https://steamcommunity.com/dev/apikey" +#TODO: update link in docs +battlemetrics_api_url="https://www.battlemetrics.com/developers" +bm_api="https://api.battlemetrics.com/servers" + +if [[ $preferred_client == "steam" ]]; then + steam_cmd="steam" +else + steam_cmd="flatpak run com.valvesoftware.Steam" +fi + +declare -A funcs=( +["My servers"]="dump_servers" +["Change player name"]="update_config_val" +["Change Steam API key"]="update_config_val" +["Change Battlemetrics API key"]="update_config_val" +["Change favorite server"]="add_record" +["Quick-connect to favorite server"]="quick_connect" +["Add server by IP"]="add_record" +["Add server by ID"]="add_record" +["Connect by IP"]="validate_and_connect" +["Connect by ID"]="validate_and_connect" +["Connect from table"]="connect_from_table" +["toggle"]="toggle" +["Open link"]="open_link" +["filter"]="dump_servers" +["dump_servers"]="dump_servers" +["get_unique_maps"]="get_unique_maps" +["get_dist"]="get_dist" +["query_config"]="query_config" +["list_mods"]="list_mods" +["delete"]="delete_local_mod" +["show_server_modlist"]="show_server_modlist" +["is_in_favs"]="is_in_favs" +["show_log"]="show_log" +["gen_log"]="generate_log" +["open_workshop_page"]="open_workshop_page" +["Add to my servers"]="update_favs_from_table" +["Remove from favorites"]="update_favs_from_table" +["Remove from history"]="remove_from_history" +["force_update"]="force_update" +["Handshake"]="final_handshake" +) + +validate_and_connect(){ + local context="$1" + local addr="$2" + + local record + case "$context" in + "Connect by ID") + if [[ -z "$api_key" ]]; then + printf "No Battlemetrics API key set" + return 4 + fi + record=$(map_id_to_ip "$addr") + if [[ $? -eq 1 ]]; then + logger WARN "Not a valid record: '$addr'" + printf "Not a valid ID" + return 2 + fi + logger INFO "Battlemetrics ID resolved to IP $record" + ;; + "Connect by IP") + if [[ $(validate_ip "$addr") -eq 1 ]]; then + printf "Not a valid IP format. Supply IP:Queryport" + return 2 + fi + local ip=$(<<< $addr awk -F: '{print $1}') + local qport=$(<<< $addr awk -F: '{print $2}') + local res + res=$(a2s $ip $qport info) + if [[ ! $? -eq 0 ]]; then + printf "Timed out when querying the server. Is this a valid server?" + return 2 + fi + local gameport="$(<<< $res jq -r '.[].gameport')" + record="${ip}:${gameport}:${qport}" + logger INFO "Record resolved to $record" + esac + try_connect "$record" +} +map_id_to_ip(){ + local id="$1" + local res=$(curl -s "$bm_api" -H "Authorization: Bearer "$api_key"" \ + -G -d "sort=-players" \ + -d "filter[game]=$game" \ + -d "filter[ids][whitelist]=$id") + local len=$(<<< "$res" jq '.data|length') + [[ $len -eq 0 ]] && return 1 + local record=$(<<< "$res" jq -r '.data[].attributes|"\(.ip):\(.port):\(.portQuery)"') + echo "$record" +} +add_record(){ + local context="$1" + local addr="$2" + local record + if [[ $context != "Add server by ID" ]] && [[ $(validate_ip "$addr") -eq 1 ]]; then + printf "Not a valid IP format. Supply IP:Queryport" + return 2 + fi + local ip=$(<<< $addr awk -F: '{print $1}') + local qport=$(<<< $addr awk -F: '{print $2}') + local res + res=$(a2s $ip $qport info) + if [[ ! $? -eq 0 ]]; then + printf "Timed out when querying the server. Is this a valid server?" + return 2 + fi + local gameport="$(<<< $res jq -r '.[].gameport')" + record="${ip}:${gameport}:${qport}" + + case "$context" in + "Add server by IP") + if [[ ${ip_list[*]} =~ $record ]]; then + printf "Already in favorites list" + return 1 + fi + add_to_favs "$record" + ;; + "Change favorite server") + fav_label=$(<<< "$res" jq -r '.[].name') + fav_server="$record" + update_config + return 90 + ;; + "Add server by ID") + if [[ -z "$api_key" ]]; then + printf "No Battlemetrics API key set" + return 4 + fi + record=$(map_id_to_ip "$addr") + if [[ $? -eq 1 ]]; then + logger WARN "Not a valid record: '$addr'" + printf "Not a valid ID" + return 2 + fi + logger INFO "Battlemetrics ID resolved to IP $record" + if [[ ${ip_list[*]} =~ $record ]]; then + printf "Already in favorites list" + return 1 + fi + add_to_favs "$record" + ;; + esac +} +connect_by_id(){ + if [[ $(validate_ip "$addr") -eq 1 ]]; then + printf "Not a valid IP format. Supply IP:Queryport" + return 2 + fi + local ip=$(<<< $addr awk -F: '{print $1}') + local qport=$(<<< $addr awk -F: '{print $2}') + local res + res=$(a2s $ip $qport info) + if [[ ! $? -eq 0 ]]; then + printf "Timed out when querying the server. Is this a valid server?" + return 2 + fi + #res contains modlist +} +initialize_remote_servers(){ + local file="$_cache_servers" + [[ -f $file ]] && rm "$file" + local res + res=$(get_remote_servers) + parse_server_json "$res" >> "$file" +} +a2s(){ + local ip="$1" + local qport="$2" + local mode="$3" + logger INFO "Querying '$ip:$qport' with mode '$mode'" + python3 "$query_helper" "$ip" "$qport" "$mode" +} +is_in_favs(){ + shift + local record="$1" + for (( i = 0; i < ${#ip_list[@]}; i++ )); do + if [[ ${ip_list[$i]} == "$record" ]]; then + logger INFO "'$record' is in favorites list" + return 0 + fi + done + return 1 +} +list_mods(){ + local symlink + local sep + local name + local base_dir + local size + if [[ -z $(installed_mods) ]] || [[ -z $(find $workshop_dir -maxdepth 2 -name "*.cpp" | grep .cpp) ]]; then + echo "No mods currently installed or incorrect path set." + logger WARN "Found no locally installed mods" + return 1 + else + for dir in $(find $game_dir/* -maxdepth 1 -type l); do + symlink=$(basename $dir) + sep="␞" + name=$(awk -F\" '/name/ {print $2}' "${dir}/meta.cpp") + base_dir=$(basename $(readlink -f $game_dir/$symlink)) + size=$(du -s "$(readlink -f "$game_dir/$symlink")" | awk '{print $1}') + size=$(python3 -c "n=($size/1024) +.005; print(round(n,4))") + printf "%s$sep%s$sep%s$sep%3.3f\n" "$name" "$symlink" "$base_dir" "$size" + done | sort -k1 + fi +} +installed_mods(){ + ls -1 "$workshop_dir" +} +local_latlon(){ + local url="http://ip-api.com/json/$local_ip" + local local_ip + + if [[ -z $(command -v dig) ]]; then + local_ip=$(curl -Ls "https://ipecho.net/plain") + else + local_ip=$(dig -4 +short myip.opendns.com @resolver1.opendns.com) + fi + curl -Ls "$url" | jq -r '"\(.lat)\n\(.lon)"' +} +get_dist(){ + shift + local given_ip="$1" + readarray -t coords < "$_cache_coords" + readarray -t n < <(<<< "$given_ip" awk 'BEGIN{RS="."}{$1=$1}1') + + local local_lat="${coords[0]}" + local local_lon="${coords[1]}" + local network="^${n[0]}.${n[1]}\." + local three="${n[2]}" + local host="${n[3]}" + + local binary=$(grep -E "$network" $geo_file) + local res=$(<<< "$binary" awk -F[.,] -v three=$three -v host=$host ' + $3 <=three && $7 >= three{if($3>three || ($3==three && $4 > host) || $7 < three || ($7==three && $8 < host)){next}{print}}' \ + | awk -F, '{print $7,$8}') + local remote_lat=$(<<< "$res" awk '{print $1}') + local remote_lon=$(<<< "$res" awk '{print $2}') + if [[ -z $remote_lat ]]; then + logger WARN "Failed to find geolocation candidate in IP database" + local dist="Unknown" + printf "Unknown" + else + logger INFO "Resolved remote server geolocation to '$remote_lat, $remote_lon'" + local dist=$($km_helper "$local_lat" "$local_lon" "$remote_lat" "$remote_lon") + LC_NUMERIC=C printf "%d" "$dist" + logger INFO "Distance: $dist km" + fi +} +get_remote_servers(){ + local limit=20000 + local url="https://api.steampowered.com/IGameServersService/GetServerList/v1/?filter=\appid\221100&limit=$limit&key=$steam_api" + curl -Ls "$url" | jq -r '.response.servers' +} +get_unique_maps(){ + shift + local context="$1" + local filter_file + case "$context" in + "My saved servers") + filter_file="$_cache_my_servers" + ;; + "Server browser") + filter_file="$_cache_servers" + ;; + "Recent servers") + filter_file="$_cache_history" + esac + logger INFO "Map filter context is: '$context', using cached file at '$filter_file'" + < "$filter_file" awk -F$separator '{print $2}' | sort -u +} +query_config(){ + [[ -n $2 ]] && local key=$2 + keys=( + "branch" + "debug" + "auto_install" + "name" + "fav_label" + "preferred_client" + ) + if [[ -n $key ]]; then + if [[ -n ${!key} ]]; then + echo "${!key}" + return 0 + else + echo "" + return 1 + fi + fi + for i in "${keys[@]}"; do + echo "${!i}" + done +} +filter_servers(){ + local filtered="$(< "$1")" + shift + readarray -t filters < <(printf "%s\n" "$@") + + for ((i=0; i< ${#filters[@]}; ++i)); do + if [[ ${filters[$i]} =~ Keyword ]]; then + keyword=$(<<< ${filters[$i]} awk -F␞ '{print $2}') + elif [[ ${filters[$i]} =~ Map ]]; then + map=$(<<< ${filters[$i]} awk -F= '{print $2}') + fi + done + + filter_ascii(){ + if [[ ${filters[*]} =~ Non ]]; then + echo -n "$filtered" + else + <<< "$filtered" sed 's/␞/@@DZGUI_PLACEHOLDER@@/g' | grep -v -P '[^[:ascii:]]' | sed 's/@@DZGUI_PLACEHOLDER@@/␞/g' + fi + } + filter_time(){ + if [[ ${filters[*]} =~ Day ]] && [[ ${filters[*]} =~ Night ]]; then + echo -n "$filtered" + elif [[ ${filters[*]} =~ Day ]]; then + <<< "$filtered" awk -F$separator '$4~/^([0][6-9]:|[1][0-6])/' + elif [[ ${filters[*]} =~ Night ]]; then + <<< "$filtered" awk -F$separator '$4~/^([1][7-9]:|[2][0-3]:|[0][0-5])/' + else + echo -n "" + fi + } + filter_perspective(){ + if [[ ${filters[*]} =~ 1PP ]] && [[ ${filters[*]} =~ 3PP ]]; then + echo -n "$filtered" + elif [[ ${filters[*]} =~ 1PP ]]; then + <<< "$filtered" awk '!/3PP/' + elif [[ ${filters[*]} =~ 3PP ]]; then + <<< "$filtered" awk '!/1PP/' + else + echo -n "" + fi + } + filter_lowpop(){ + if [[ ${filters[*]} =~ Low ]]; then + echo -n "$filtered" + else + <<< "$filtered" awk -F$separator '{if (($5 > 0) && ($5/$6)*100 >=30){print $0}}' + fi + } + filter_full(){ + if [[ ${filters[*]} =~ Full ]]; then + echo -n "$filtered" + else + <<< "$filtered" awk -F$separator '$5 != $6' + fi + } + filter_empty(){ + if [[ ${filters[*]} =~ Empty ]]; then + echo -n "$filtered" + else + <<< "$filtered" awk -F$separator '$5 != "0"' + fi + } + filter_map(){ + if [[ $map == "All maps" ]]; then + echo "$filtered" + else + <<< "$filtered" awk -v var="$map" -F$separator '$2 == var' + fi + } + filter_keyword(){ + keyword=$(sanitize "$keyword") + <<< "$filtered" KEYWORD="$keyword" awk -F$separator 'BEGIN{IGNORECASE=1} $0 ~ ENVIRON["KEYWORD"] {print $0}' + } + filter_duplicates(){ + if [[ ${filters[*]} =~ Duplicate ]]; then + echo -n "$filtered" + else + <<< "$filtered" awk -F$separator '!seen[$1]++' + fi + } + + filtered=$(filter_perspective) + filtered=$(filter_full) + filtered=$(filter_empty) + filtered=$(filter_time) + filtered=$(filter_map) + filtered=$(filter_lowpop) + filtered=$(filter_ascii) + filtered=$(filter_duplicates) + filtered=$(filter_keyword) + + if [[ -z "$filtered" ]]; then + logger WARN "Filter result is empty" + echo -n "" + return + fi + + logger INFO "Returning sorted server list back to UI" + printf "%s\n" "$filtered" | sort -k1 +} +sanitize(){ + echo "$1" | sed \ + -e 's/\//\\\//g' \ + -e 's/\$/\\$/g' \ + -e 's/\[/\\[/g' \ + -e 's/\]/\\]/g' \ + -e 's/\#/\\#/g' \ + -e 's/\./\\./g' \ + -e 's/\^/\\^/g' \ + -e 's/\=/\\=/g' \ + -e 's/|/\\|/g' \ + -e 's/\+/\\+/g' \ + -e 's/(/\\(/g' \ + -e 's/)/\\)/g' +} +parse_server_json(){ + local response="$1" + # some servers pad SOH in name + <<< "$response" sed 's/\\u0001//g' | jq -r ' + .[]|"\(.name)␞" + + "\(.map|if type == "string" then ascii_downcase else "null" end)␞" + + "\(if .gametype == null then "null" else (.gametype|split(",")|if any(. == "no3rd") then "1PP" else "3PP" end) end)␞" + + "\(if .gametype == null then "null" else (.gametype as $time|$time|test("[0-9]{2}:[0-9]{2}$") as $match|(if $match == true then ($time|scan("[0-9]{2}:[0-9]{2}$")) else "XXXX" end)) end)␞" + + "\(.players)␞" + + "\(.max_players)␞" + + "\(.addr|split(":")[0]):\(if .gameport == null then "XXXX" else .gameport end)␞" + + "\(.addr|split(":")[1])" + ' | sort -k1 +} +delete_local_mod(){ + shift + local symlink="$1" + local dir="$2" + [[ ! -d $workshop_dir/$dir ]] && return 1 + [[ ! -L $game_dir/$symlink ]] && return 1 + #SC2115 + rm -rf "${workshop_dir:?}/$dir" && unlink "$game_dir/$symlink" || return 1 +} +dump_servers(){ + local context="$1" + local subcontext="$2" + local ip + local qport + local res + _iterate(){ + local file="$1" + shift + for server in "$@"; do + ip=$(<<< $server awk -F: '{print $1}') + qport=$(<<< $server awk -F: '{print $3}') + res=$(a2s "$ip" "$qport" info) + if [[ ! $? -eq 0 ]]; then + continue + fi + parse_server_json "$res" >> "$file" + done + } + case "$subcontext" in + *Server[[:space:]]browser*) + local file="$_cache_servers" + if [[ ! $subcontext =~ Name ]]; then + initialize_remote_servers + fi + ;; + *My[[:space:]]saved[[:space:]]servers*) + local file="$_cache_my_servers" + if [[ ! $subcontext =~ Name ]]; then + [[ -f $file ]] && rm $file + _iterate "$file" "${ip_list[@]}" + fi + ;; + *Recent[[:space:]]servers*) + local file="$_cache_history" + if [[ ! $subcontext =~ Name ]]; then + [[ -f $file ]] && rm $file + readarray -t iters < <(cat $history_file) + _iterate "$file" "${iters[@]}" + fi + ;; + esac + shift + logger INFO "Server context is '$subcontext', reading from file '$file'" + filter_servers "$file" "$@" +} +logger(){ + local date="$(date "+%F %T,%3N")" + local tag="$1" + local string="$2" + local self="${BASH_SOURCE[0]}" + local caller="${FUNCNAME[1]}" + local line="${BASH_LINENO[0]}" + printf "%s␞%s␞%s::%s()::%s␞%s\n" "$date" "$tag" "$self" "$caller" "$line" "$string" >> "$debug_log" +} +show_server_modlist(){ + shift + local ip="$1" + local qport="$2" + local res=$(a2s $ip $qport names) + [[ -z $res ]] && return 1 + [[ $(<<< $res jq '.ids|length') -lt 1 ]] && return 1 + local names=$(<<< "$res" jq -r '.names[]') + local ids=$(<<< "$res" jq -r '.ids[]') + local icon + local flag + local label + readarray -t names <<< "$names" + readarray -t ids <<< "$ids" + readarray -t mods < <(installed_mods) + for ((i=0; i<${#ids[@]}; ++i)); do + icon= + flag="WARN" + label="MISSING" + for j in "${mods[@]}"; do + if [[ $j == "${ids[$i]}" ]]; then + icon=✓ + flag="INFO" + label="installed" + break + fi + done + logger $flag "Mod '${names[$i]}' is $label" + printf "%s␞%s␞%s\n" "${names[$i]}" "${ids[i]}" "$icon" + done | sort -k1 +} +print_ip_list(){ + [[ ${#ip_list[@]} -eq 0 ]] && return 1 + printf "\t\"%s\"\n" "${ip_list[@]}" +} +write_config(){ +cat <<-END +#Path to DayZ installation +steam_path="$steam_path" + +#Battlemetrics API key +api_key="$api_key" + +#Favorited server IP:PORT array +ip_list=( +$(print_ip_list) +) + +#Favorite server to fast-connect to (limit one) +fav_server="$fav_server" + +#Favorite server label (human readable) +fav_label="$fav_label" + +#Custom player name (optional, required by some servers) +name="$name" + +#Set to 1 to perform dry-run and print launch options +debug="$debug" + +#Toggle stable/testing branch +branch="$branch" + +#Last seen news item +seen_news="$seen_news" + +#Steam API key +steam_api="$steam_api" + +#Auto-install mods +auto_install="$auto_install" + +#Automod staging directory +staging_dir="$staging_dir" + +#Path to default Steam client +default_steam_path="$default_steam_path" + +#Preferred Steam launch command (for Flatpak support) +preferred_client="$preferred_client" + +#DZGUI source path +src_path="$src_path" +END +} +format_version_url(){ + case "$branch" in + "stable") + version_url="$stable_url/dzgui.sh" + ;; + "testing") + version_url="$testing_url/dzgui.sh" + ;; + esac + echo "$version_url" +} +download_new_version(){ + local version_url="$(format_version_url)" + mv "$src_path" "$src_path.old" + curl -Ls "$version_url" > "$src_path" + rc=$? + if [[ $rc -eq 0 ]]; then + dl_changelog + logger INFO "Wrote new version to $src_path" + chmod +x "$src_path" + touch "${config_path}.unmerged" + printf "New version downloaded. Please exit to apply changes" + logger INFO "User exited after version upgrade" + return 255 + else + mv "$src_path.old" "$src_path" + printf "Failed to fetch new version. Rolling back" + logger WARN "curl failed to fetch new version. Rolling back" + return 1 + fi +} +dl_changelog(){ + local mdbranch + local file="CHANGELOG.md" + [[ $branch == "stable" ]] && mdbranch="dzgui" + [[ $branch == "testing" ]] && mdbranch="testing" + local md="https://raw.githubusercontent.com/$author/$repo/${mdbranch}/$file" + curl -Ls "$md" > "$state_path/$file" +} +toggle(){ + shift + local context="$1" + case "$context" in + Toggle[[:space:]]release[[:space:]]branch) + if [[ $branch == "stable" ]]; then + branch="testing" + else + branch="stable" + fi + update_config + download_new_version + return 255 + ;; + Toggle[[:space:]]mod[[:space:]]install[[:space:]]mode) + if [[ -z $auto_install ]]; then + staging_dir="/tmp" + auto_install="1" + else + auto_install="" + fi + ;; + Toggle[[:space:]]debug[[:space:]]mode) + if [[ -z $debug ]]; then + debug="1" + else + debug="" + fi + ;; + Toggle[[:space:]]Steam/Flatpak) + if [[ $preferred_client == "steam" ]]; then + preferred_client="flatpak" + else + preferred_client="steam" + fi + esac + update_config + return 90 + +} +add_to_favs(){ + local record="$1" + ip_list+=("$record") + update_config + logger INFO "Added the record $record to saved servers" + return 90 +} +remove_from_history(){ + shift + local record="$1" + # remove ip from history file + local hist_cache=$(< "$history_file") + <<< "$hist_cache" grep -v "$record" > "$history_file" + # update cache + local cache=$(< "$_cache_history") + local r=$(<<< "$record" awk -F: '{print $1":"$2"␞"$3}') + <<< "$cache" grep -v -P "$r$" > "$_cache_history" +} +remove_from_favs(){ + local record="$1" + for (( i=0; i<${#ip_list[@]}; ++i )); do + if [[ ${ip_list[$i]} == "$record" ]]; then + unset ip_list[$i] + break + fi + done + if [[ ${#ip_list} -gt 0 ]]; then + readarray -t ip_list < <(printf "%s\n" "${ip_list[@]}") + fi + update_config + local r=$(<<< "$record" awk -F: '{print $1":"$2"␞"$3}') + local cache="$(< "$_cache_my_servers")" + <<< "$cache" grep -v -P "$r$" > $_cache_my_servers + logger INFO "Removed the record $record from saved servers" + return 90 +} +update_favs_from_table(){ + local context="$1" + local record="$2" + if [[ $context =~ Remove ]]; then + remove_from_favs "$record" + echo "Removed $record from saved servers" + else + add_to_favs "$record" + echo "Added $record to saved servers" + fi + return 0 +} +update_config(){ + # handling for legacy files + [[ -z $branch ]] && branch="stable" + mv $config_file ${config_file}.old + write_config > $config_file + logger INFO "Updated config file at '$config_file'" +} +validate_ip(){ + local ip="$1" + local res + <<< "$ip" grep -qP '^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}:[0-9]+$' && echo 0 || echo 1 +} +test_steam_api(){ + local key="$1" + [[ -z $key ]] && return 1 + local url="https://api.steampowered.com/IGameServersService/GetServerList/v1/?filter=\appid\221100&limit=10&key=$key" + local code=$(curl -ILs "$url" | grep -E "^HTTP") + [[ $code =~ 403 ]] && echo 1 + [[ $code =~ 200 ]] && echo 0 +} +test_bm_api(){ + local key="$1" + if [[ ! $key =~ ^[0-9]+$ ]]; then + return + fi + [[ -z $key ]] && return 1 + local code=$(curl -ILs "$bm_api" \ + -H "Authorization: Bearer "$key"" -G \ + -d "filter[game]=$game" \ + | grep -E "^HTTP") + [[ $code =~ 401 ]] && echo 1 + [[ $code =~ 200 ]] && echo 0 +} +update_config_val(){ + local context="$1" + local value="$2" + case $1 in + "Change player name") + key="name" + ;; + "Change Steam API key") + key="steam_api" + if [[ ${#value} -lt 32 ]] || [[ $(test_steam_api "$value") -eq 1 ]]; then + printf "Invalid API key" + return 2 + fi + ;; + "Change Battlemetrics API key") + key="api_key" + if [[ $(test_bm_api "$value") -eq 1 ]]; then + printf "Invalid API key" + return 2 + fi + ;; + esac + declare -n nr=$key + nr="$value" + update_config + echo "Updated the key '$key' to '$value'" + return 90 +} +show_log(){ + < "$debug_log" sed 's/Keyword␞/Keyword/' +} +open_workshop_page(){ + shift + local id="$1" + local workshop_uri="steam://url/CommunityFilePage/$id" + $steam_cmd "$workshop_uri" $id +} +open_link(){ + shift + local destination="$1" + local url + case "$destination" in + "Open Battlemetrics") + url="$battlemetrics_server_url" + ;; + "Open Steam API page") + url="$steam_api_url" + ;; + "Open Battlemetrics API page") + url="$battlemetrics_api_url" + ;; + "Help file ⧉") + url="$help_url" + ;; + "Report a bug ⧉") + url="$issues_url" + ;; + "Forum ⧉") + url="$forum_url" + ;; + "Sponsor ⧉") + url="$sponsor_url" + ;; + "Hall of fame ⧉") + url="${help_url}#_hall_of_fame" + ;; + esac + + #if [[ $is_steam_deck -eq 1 ]]; then + #$steam_cmd steam://openurl/"$1" 2>/dev/null + if [[ -n "$BROWSER" ]]; then + logger INFO "Opening '$url' in '$BROWSER'" + "$BROWSER" "$url" + else + logger INFO "Opening '$url' with xdg-open" + xdg-open "$url" + fi +} + +quick_connect(){ + if [[ -z $fav_server ]]; then + printf "No favorite server currently set" + return 1 + fi + try_connect "$fav_server" +} +connect_from_table(){ + shift + local record="$1" + try_connect "$record" +} +pretty_print(){ + while read -r line; do + printf "\t%s\n" "$line" + done < "$@" +} +generate_log(){ + source $config_file + cat <<-DOC > $system_log + Distro: $(< /etc/os-release grep -w NAME | awk -F\" '{print $2}') + Kernel: $(uname -mrs) + Version: $version + Branch: $branch + Mode: $(if [[ -z $debug ]]; then echo normal; else echo debug; fi) + Auto: $(if [[ -z $auto_install ]]; then echo normal; else echo auto; fi) + Steam path: $steam_path + Workshop path: $workshop_dir + Game path: $game_dir + Servers: +$(print_ip_list | sed 's/"//g') + Mods: +$(list_mods | sed 's/^/\t/g') + DOC + printf "Wrote system log to %s" "$system_log" + return 0 +} +query_defunct(){ + readarray -t modlist <<< "$@" + local max=${#modlist[@]} + concat(){ + for ((i=0;i<$max;i++)); do + echo "publishedfileids[$i]=${modlist[$i]}&" + done | awk '{print}' ORS='' + } + payload(){ + echo -e "itemcount=${max}&$(concat)" + } + post(){ + curl -s \ + -X POST \ + -H "Content-Type:application/x-www-form-urlencoded"\ + -d "$(payload)" 'https://api.steampowered.com/ISteamRemoteStorage/GetPublishedFileDetails/v1/?format=json' + } + local result=$(post | jq -r '.[].publishedfiledetails[] | select(.result==1) | "\(.file_size) \(.publishedfileid)"') + local result2=$(post | jq -r '') + echo "$result2" > $HOME/json + <<< "$result" awk '{print $2}' +} +encode(){ + echo "$1" | md5sum | cut -c -8 +} +compare(){ + local modlist="$@" + diff=$(comm -23 <(<<< "$modlist" sort -u) <(installed_mods | sort)) + echo "$diff" +} +legacy_symlinks(){ + for d in "$game_dir"/*; do + if [[ $d =~ @[0-9]+-.+ ]]; then + unlink "$d" + fi + done + for d in "$workshop_dir"/*; do + local id=$(awk -F"= " '/publishedid/ {print $2}' "$d"/meta.cpp | awk -F\; '{print $1}') + local encoded_id=$(echo "$id" | awk '{printf("%c",$1)}' | base64 | sed 's/\//_/g; s/=//g; s/+/]/g') + if [[ -h "$game_dir/@$encoded_id" ]]; then + unlink "$game_dir/@$encoded_id" + fi + done +} +symlinks(){ + for d in "$workshop_dir"/*; do + id=$(awk -F"= " '/publishedid/ {print $2}' "$d"/meta.cpp | awk -F\; '{print $1}') + encoded_id=$(encode "$id") + link="@$encoded_id" + if [[ -h "$game_dir/$link" ]]; then + logger INFO "Symlink already exists: '$link' for mod '$id'" + continue + fi + ln -fs "$d" "$game_dir/$link" + logger INFO "Created symlink '$link' for mod '$id'" + done +} +update_history(){ + local record="$1" + local old + [[ -n $(grep "$record" $history_file) ]] && return + if [[ -f $history_file ]]; then + old=$(tail -n9 "$history_file") + rm $history_file + echo "$old" > "$history_file" + fi + echo "$record" >> "$history_file" +} +update_symlinks(){ + legacy_symlinks + symlinks +} +try_connect(){ + local record="$1" + local ip=$(<<< $record awk -F: '{print $1}') + local gameport=$(<<< $record awk -F: '{print $2}') + local qport=$(<<< $record awk -F: '{print $3}') + local remote_mods + remote_mods=$(a2s $ip $qport rules) + if [[ $? -eq 1 ]]; then + printf "Failed to fetch server modlist, possibly timed out" + return 1 + fi + logger INFO "Server returned modlist: $(<<< $remote_mods tr '\n' ' ')" + local sanitized_mods=$(query_defunct "$remote_mods") + local diff=$(compare "$sanitized_mods") + + logger INFO "Connection attempt for $ip:$qport" + update_history "$record" + + if [[ -n $auto_install ]]; then + logger INFO "Merging modlists" + diff=$(merge_modlists "$diff") + fi + if [[ -n $diff ]]; then + if [[ $(check_architecture) -eq 1 ]] && [[ $(test_display_mode) == "gm" ]]; then + printf "Use Desktop Mode to download mods on Steam Deck" + return 1 + fi + case $auto_install in + "") manual_mod_install "$ip" "$gameport" "$diff" "$sanitized_mods";; + 1|2) auto_mod_install "$ip" "$gameport" "$diff" "$sanitized_mods" ;; + esac + else + launch "$ip" "$gameport" "$sanitized_mods" + fi +} +check_architecture(){ + local cpu=$(< /proc/cpuinfo grep "AMD Custom APU 0405") + if [[ -n "$cpu" ]]; then + echo 1 + else + echo 0 + fi +} +focus_beta_client(){ + _wid(){ + wmctrl -ilx |\ + awk 'tolower($3) == "steamwebhelper.steam"' |\ + awk '$5 ~ /^Steam|Steam Games List/' |\ + awk '{print $1}' + } + $steam_cmd steam://open/library 2>/dev/null 1>&2 && + $steam_cmd steam://open/console 2>/dev/null 1>&2 && + sleep 1s + until [[ -n $(_wid) ]]; do + sleep 0.1s + done + wmctrl -ia $(_wid) + sleep 0.1s + + local wid=$(xdotool getactivewindow) + local geo=$(xdotool getwindowgeometry $wid) + local pos=$(<<< "$geo" awk 'NR==2 {print $2}' | sed 's/,/ /') + local dim=$(<<< "$geo" awk 'NR==3 {print $2}' | sed 's/x/ /') + local pos1=$(<<< "$pos" awk '{print $1}') + local pos2=$(<<< "$pos" awk '{print $2}') + local dim1=$(<<< "$dim" awk '{print $1}') + local dim2=$(<<< "$dim" awk '{print $2}') + local dim1=$(((dim1/2)+pos1)) + local dim2=$(((dim2/2)+pos2)) + + xdotool mousemove $dim1 $dim2 + xdotool click 1 + $steam_cmd steam://open/library 2>/dev/null 1>&2 && + $steam_cmd steam://open/console 2>/dev/null 1>&2 +} +auto_mod_install(){ + local ip="$1" + local gameport="$2" + local diff="$3" + local sanitized_mods="$4" + + console_dl "$diff" && + $steam_cmd steam://open/downloads + + local total=$(<<< "$diff" wc -l) + until [[ -z $(compare "$diff") ]]; do + local missing=$(compare "$diff" | wc -l) + echo "# Downloaded $(($total-missing)) of $total mods. ESC cancels" + done | $steamsafe_zenity --pulsate --progress --title="DZG Watcher" --auto-close --no-cancel --width=500 2>/dev/null + if [[ ! $? -eq 0 ]]; then + echo "User aborted connect process. Steam may have mods pending for download." + exit 1 + fi + + local diff=$(compare "$sanitized_mods") + + if [[ -z $diff ]]; then + #wipe old version file and replace with latest stamps + rm "$versions_file" + check_timestamps + logger INFO "Local modlist matches remote, initiating launch request" + launch "$ip" "$gameport" "$sanitized_mods" + fi +} +force_update(){ + if [[ ! $auto_install -eq 1 ]]; then + printf "Only available when mod auto-install is ON" + return 1 + fi + rm "$versions_file" + local update=$(check_timestamps) + console_dl "$update" && + $steam_cmd steam://open/downloads + echo "Finished requesting mod updates. Steam may have some mods pending for download." + return 0 +} +console_dl(){ + readarray -t modids <<< "$@" + focus_beta_client + sleep 1.5s + for i in "${modids[@]}"; do + xdotool type --delay 0 "workshop_download_item $aid $i" + sleep 0.5s + xdotool key Return + sleep 0.5s + done +} +get_local_stamps(){ + readarray -t modlist < <(printf "%s\n" "$@") + local max="${#modlist[@]}" + _concat(){ + for ((i=0;i<$max;i++)); do + printf "publishedfileids[$i]=${modlist[$i]}&" + done | awk '{print}' ORS='' + } + _payload(){ + echo -e "itemcount=${max}&$(_concat)" + } + _post(){ + curl -s -X POST \ + -H "Content-Type:application/x-www-form-urlencoded" \ + -d "$(_payload)" 'https://api.steampowered.com/ISteamRemoteStorage/GetPublishedFileDetails/v1/?format=json' + } + + _post +} +update_stamps(){ + readarray -t stamps <<< "$1" + for((i=0;i<${#stamps[@]};i++)); do + printf "%s\n" "${stamps[$i]}" >> $versions_file + done +} +check_timestamps(){ + readarray -t local_modlist < <(ls -1 $workshop_dir) + local max=${#local_modlist[@]} + logger INFO "Local mod count: $max" + [[ $max -eq 0 ]] && return 1 + local local_stamps=$(get_local_stamps "${local_modlist[@]}") + if [[ -z $local_stamps ]]; then + logger WARN "Timestamp query returned empty response" + return 1 + fi + local aligned=$(<<< "$local_stamps" jq -r '.response.publishedfiledetails[]|"\(.publishedfileid),\(.time_updated)"') + readarray -t remote_ids < <(<<< "$aligned" awk -F, '{print $1}') + readarray -t remote_times < <(<<< "$aligned" awk -F, '{print $2}') + readarray -t old_ids < <(< $versions_file awk -F, '{print $1}') + readarray -t old_times < <(< $versions_file awk -F, '{print $2}') + + if [[ ! -f $versions_file ]]; then + logger INFO "No prior versions file found, creating" + update_stamps "$aligned" + #force refresh all mods if versions file was missing + printf "%s\n" "${remote_ids[@]}" + return 0 + fi + + declare -A remote_version + declare -A local_version + + for((i = 0; i < ${#remote_ids[@]}; ++i)); do + remote_version[${remote_ids[$i]}]=${remote_times[$i]} + done + + needs_update=() + for((i=0;i<${#old_ids[@]};i++)); do + local id=${old_ids[$i]} + local time=${old_times[$i]} + if [[ $time != ${remote_version[$id]} ]]; then + logger WARN "Mod '$id' timestamp '$time' != '${remote_version[$id]}'" + needs_update+=($id) + fi + done + printf "%s\n" "${needs_update[@]}" +} +merge_modlists(){ + local diff="$1" + _sort(){ + printf "%s\n" "$diff" + printf "%s\n" "${needs_update[@]}" + } + readarray -t needs_update < <(check_timestamps) + if [[ -z ${needs_update[@]} ]]; then + echo "$diff" + return 0 + fi + if [[ -z "$diff" ]] && [[ ${#needs_update[@]} -gt 0 ]]; then + printf "%s\n" "${needs_update[@]}" + else + # remove duplicates + _sort | sort -u + fi +} +concat_mods(){ + readarray -t concat_arr <<< "$@" + local id + local encoded_id + local link + for i in "${concat_arr[@]}"; do + id=$(awk -F"= " '/publishedid/ {print $2}' "$workshop_dir"/$i/meta.cpp | awk -F\; '{print $1}') + encoded_id=$(encode $id) + link="@$encoded_id;" + echo -e "$link" + done | tr -d '\n' | perl -ple 'chop' +} +is_dayz_running(){ + local proc=$(ps aux | grep "DayZ.*\.exe" | grep -v grep) + if [[ -n $proc ]]; then + echo 1 + else + echo 0 + fi +} +launch(){ + local ip="$1" + local gameport="$2" + local mods="$3" + local concat + if [[ -n $mods ]]; then + concat=$(concat_mods "$mods") + else + concat="" + fi + + update_symlinks + if [[ $debug -eq 1 ]]; then + local launch_options="$steam_cmd -applaunch $aid -connect=$ip:$gameport -nolauncher -nosplash -name=$name -skipintro \"-mod=$concat\"" + printf "Dry-run mode: these options would have been used to launch the game: $launch_options" + return 0 + fi + echo "$concat" > "$_cache_launch" + echo "$ip:$gameport" > "$_cache_address" + logger INFO "Saved launch params: '$concat'" + printf "Launch conditions satisfied. DayZ will now launch after you confirm this dialog." + return 100 +} +final_handshake(){ + local saved_mods=$(< "$_cache_launch") + local saved_address=$(< "$_cache_address") + local res=$(is_dayz_running) + if [[ $res -eq 1 ]]; then + logger WARN "DayZ appears to already be running" + printf "Is DayZ already running? DZGUI cannot launch DayZ if another process is using it." + return 1 + fi + logger INFO "Kicking off Steam launch" + $steam_cmd -applaunch $aid -connect=$saved_address -nolauncher -nosplash -skipintro -name=$name \"-mod=$saved_mods\" & + until [[ $(is_dayz_running) -eq 1 ]]; do + sleep 0.1s + done + logger INFO "Caught DayZ process" + return 6 +} +manual_mod_install(){ + local ip="$1" + local gameport="$2" + local diff="$3" + local sanitized_mods="$4" + local ex="$state_path/dzg.watcher" + + readarray -t stage_mods <<< "$diff" + [[ -f $ex ]] && rm $ex + + _watcher(){ + for((i=0;i<${#stage_mods[@]};i++)); do + [[ -f $ex ]] && return 1 + log ${stage_mods[$i]} + + $steam_cmd "steam://url/CommunityFilePage/${stage_mods[$i]}" + echo "# Opening workshop page for ${stage_mods[$i]}. If you see no progress after subscribing, try unsubscribing and resubscribing again until the download commences." + sleep 1s + foreground + + until [[ -d $downloads_dir/${stage_mods[$i]} ]]; do + [[ -f $ex ]] && return 1 + sleep 0.1s + if [[ -d $workshop_dir/${stage_mods[$i]} ]]; then + break + fi + done + + foreground + echo "# Steam is downloading ${stage_mods[$i]} (mod $((i+1)) of ${#stage_mods[@]})" + until [[ -d $workshop_dir/${stage_mods[$i]} ]]; do + [[ -f $ex ]] && return 1 + sleep 0.1s + done + + foreground + echo "# ${stage_mods[$i]} moved to mods dir" + done + echo "100" + } + _watcher > >($steamsafe_zenity --pulsate --progress --auto-close --title="DZG Watcher" --width=500 2>/dev/null; rc=$?; [[ $rc -eq 1 ]] && touch $ex) + + # compare latest installed mods to modlist + local diff=$(compare "$sanitized_mods") + if [[ -z $diff ]]; then + launch "$ip" "$gameport" "$sanitized_mods" + else + printf "User aborted download process, or some mods may have failed to download. Try connecting again to resync." + exit 1 + fi +} +test_display_mode(){ + pgrep -a gamescope | grep -q "generate-drm-mode" + if [[ $? -eq 0 ]]; then + echo gm + else + echo dm + fi +} +foreground(){ + if [[ $(command -v wmctrl) ]]; then + wmctrl -a "DZG Watcher" + else + local wid=$(xdotool search --name "DZG Watcher") + xdotool windowactivate $wid + fi +} +main(){ + local params="$(printf '"%s", ' "$@")" + logger INFO "Received request from UI constructor with params [${params::-2}]" + func=${funcs["$1"]} + [[ -z $func ]] && return 1 + if [[ -z $2 ]]; then + shift + $func + else + $func "$@" + fi +} +main "$@" diff --git a/helpers/query_v2.py b/helpers/query_v2.py new file mode 100644 index 0000000..4ed62e9 --- /dev/null +++ b/helpers/query_v2.py @@ -0,0 +1,75 @@ +import sys +import a2s +import math +import json +from a2s import dayzquery +sys.path.append('a2s') + +def get_info(ip, qport): + try: + info = a2s.info((ip, int(qport))) + + name = info.server_name + map = info.map_name + address = ip + ":" + qport + gameport = str(info.port) + players = info.player_count + max_players = info.max_players + keywords = info.keywords + ping = (info.ping*1000) + ping = math.floor(ping) + + res = {} + + res['name'] = name + res['map'] = map + res['gametype'] = keywords + res['players'] = players + res['max_players'] = max_players + res['addr'] = address + res['gameport'] = gameport + res['stat'] = "online" + res['qport'] = qport + res['ping'] = str(ping) + "ms" + + j = json.dumps([res]) + + print(j) + except: + sys.exit(1) + +def get_rules(ip, qport): + try: + mods = dayzquery.dayz_rules((ip, int(qport))).mods + for k in mods: + print(k.workshop_id) + except: + sys.exit(1) + +def get_names(ip, qport): + try: + mods = dayzquery.dayz_rules((ip, int(qport))).mods + ids = [] + names = [] + for mod in mods: + names.append(mod.name) + ids.append(mod.workshop_id) + res = {} + res['names'] = names + res['ids'] = ids + j = json.dumps(res) + print(j) + except: + sys.exit(1) + +ip = sys.argv[1] +qport = sys.argv[2] +mode = sys.argv[3] + +match mode: + case "info": + get_info(ip, qport) + case "rules": + get_rules(ip, qport) + case "names": + get_names(ip, qport) diff --git a/helpers/ui.py b/helpers/ui.py new file mode 100644 index 0000000..1b4ede9 --- /dev/null +++ b/helpers/ui.py @@ -0,0 +1,1665 @@ +import csv +import gi +import locale +import logging +import os +import signal +import multiprocessing +import re +import subprocess +import sys +import textwrap +import threading +import time + +locale.setlocale(locale.LC_ALL, '') +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk, GLib, Gdk, GObject, Pango + +# 5.0.0 +app_name = "DZGUI" + +cache = {} +config_vals = [] +stored_keys = [] +toggled_checks = [] +server_filters = [] +delimiter = "␞" +selected_map = ["Map=All maps"] +keyword_filter = ["Keyword%s" %(delimiter)] + +checks = list() +map_store = Gtk.ListStore(str) +row_store = Gtk.ListStore(str) +modlist_store = Gtk.ListStore(str, str, str) +# Name, Symlink, ID, Size +mod_store = Gtk.ListStore(str, str, str, float) +# Timestamp, Flag, Trace, Message +log_store = Gtk.ListStore(str, str, str, str) +# Name, Map, Perspective, Gametime, Players, Max, IP, Qport +server_store = Gtk.ListStore(str, str, str, str, int, int, str, int) + +default_tooltip = "Select a row to see its detailed description" +server_tooltip = [None, None] + +user_path = os.path.expanduser('~') +state_path = '%s/.local/state/dzgui' %(user_path) +helpers_path = '%s/.local/share/dzgui/helpers' %(user_path) +log_path = '%s/logs' %(state_path) +changelog_path = '%s/CHANGELOG.md' %(state_path) +funcs = '%s/funcs' %(helpers_path) + +logger = logging.getLogger(__name__) +log_file = '%s/DZGUI_DEBUG.log' %(log_path) +system_log = '%s/DZGUI_SYSTEM.log' %(log_path) +FORMAT = "%(asctime)s␞%(levelname)s␞%(filename)s::%(funcName)s::%(lineno)s␞%(message)s" +logging.basicConfig(filename=log_file, + format=FORMAT, +level=logging.DEBUG) + +browser_cols = [ + "Name", + "Map", + "Perspective", + "Gametime", + "Players", + "Maximum", + "IP", + "Qport", +] +mod_cols = [ + "Mod", + "Symlink", + "Dir", + "Size (MiB)" +] +log_cols = [ + "Timestamp", + "Flag", + "Traceback", + "Message" +] +connect = [ + ("Server browser",), + ("My saved servers",), + ("Quick-connect to favorite server",), + ("Recent servers",), + ("Connect by IP",), + ("Connect by ID",) +] +manage = [ + ("Add server by IP",), + ("Add server by ID",), + ("Change favorite server",), +] +options = [ + ("List installed mods",), + ("Toggle release branch",), + ("Toggle mod install mode",), + ("Toggle Steam/Flatpak",), + ("Change player name",), + ("Change Steam API key",), + ("Change Battlemetrics API key",), + ("Force update local mods",), + ("Output system info to log file",) +] +help = [ + ("View changelog",), + ("Show debug log",), + ("Help file ⧉",), + ("Report a bug ⧉",), + ("Forum ⧉",), + ("Sponsor ⧉",), + ("Hall of fame ⧉",), +] +filters = { + "1PP": True, + "3PP": True, + "Day": True, + "Night": True, + "Empty": False, + "Full": False, + "Low pop": True, + "Non-ASCII": False, + "Duplicate": False +} +side_buttons = [ + "Main menu", + "Manage", + "Options", + "Help", + "Exit" +] +status_tooltip = { + "Server browser": "Used to browse the global server list", + "My saved servers": "Browse your saved servers", + "Quick-connect to favorite server": "Connect to your favorite server", + "Recent servers": "Shows the last 10 servers you connected to (includes attempts)", + "Connect by IP": "Connect to a server by IP", + "Connect by ID": "Connect to a server by Battlemetrics ID", + "Add server by IP": "Add a server by IP", + "Add server by ID": "Add a server by Battlemetrics ID", + "Change favorite server": "Update your quick-connect server", + "List installed mods": "Browse a list of locally-installed mods", + "Toggle release branch": "Switch between stable and testing branches", + "Toggle mod install mode": "Switch between manual and auto mod installation", + "Toggle Steam/Flatpak": "Switch the preferred client to use for launching DayZ", + "Change player name": "Update your in-game name (required by some servers)", + "Change Steam API key": "Can be used if you revoked an old API key", + "Change Battlemetrics API key": "Can be used if you revoked an old API key", + "Force update local mods": "Attempts to update any local mods out of synch with remote versions (experimental)", + "Output system info to log file": "Generates a system log for troubleshooting", + "View changelog": "Opens the DZGUI changelog in a dialog window", + "Show debug log": "Read the DZGUI log generated since startup", + "Help file ⧉": "Opens the DZGUI documentation in a browser", + "Report a bug ⧉": "Opens the DZGUI issue tracker in a browser", + "Forum ⧉": "Opens the DZGUI discussion forum in a browser", + "Sponsor ⧉": "Sponsor the developer of DZGUI", + "Hall of fame ⧉": "A list of significant contributors and testers", +} + + +def format_distance(distance): + if distance == "Unknown": + distance = "| Distance: %s" %(distance) + else: + d = int(distance) + formatted = f'{d:n}' + distance = "| Distance: %s km" %(formatted) + return distance + + +def set_surrounding_margins(widget, margin): + widget.set_margin_top(margin) + widget.set_margin_start(margin) + widget.set_margin_end(margin) + + +def parse_modlist_rows(data): + lines = data.stdout.splitlines() + hits = len(lines) + reader = csv.reader(lines, delimiter=delimiter) + try: + rows = [[row[0], row[1], row[2]] for row in reader if row] + except IndexError: + return 1 + for row in rows: + modlist_store.append(row) + return hits + +def parse_log_rows(data): + lines = data.stdout.splitlines() + reader = csv.reader(lines, delimiter=delimiter) + try: + rows = [[row[0], row[1], row[2], row[3]] for row in reader if row] + except IndexError: + return 1 + for row in rows: + log_store.append(row) + +def parse_mod_rows(data): + # GTK pads trailing zeroes on floats + # https://stackoverflow.com/questions/26827434/gtk-cellrenderertext-with-format + sum = 0 + lines = data.stdout.splitlines() + hits = len(lines) + reader = csv.reader(lines, delimiter=delimiter) + try: + rows = [[row[0], row[1], row[2], locale.atof(row[3], func=float)] for row in reader if row] + except IndexError: + return 1 + for row in rows: + mod_store.append(row) + size = float(row[3]) + sum += size + return [sum, hits] + + +def parse_server_rows(data): + sum = 0 + lines = data.stdout.splitlines() + reader = csv.reader(lines, delimiter=delimiter) + hits = len(lines) + try: + rows = [[row[0], row[1], row[2], row[3], int(row[4]), int(row[5]), row[6], int(row[7])] for row in reader if row] + except IndexError: + return 1 + for row in rows: + server_store.append(row) + players = int(row[4]) + sum += players + return [sum, hits] + + +def query_config(widget, key=""): + proc = call_out(widget, "query_config", key) + config = list(proc.stdout.splitlines()) + return (config) + + +def call_out(widget, command, *args): + if widget is not None: + widget_name = widget.get_name() + try: + widget_name = widget_name.split('+')[1] + match widget_name: + case "TreeView": + context = widget.get_first_col() + case "ScrollableTree": + context = widget.treeview.get_first_col() + case "OuterWindow": + context = widget.grid.scrollable_treelist.treeview.get_first_col() + case "Grid": + context = widget.scrollable_treelist.treeview.get_first_col() + except IndexError: + context = "Generic" + else: + context = "Generic" + + arg_ar = [] + for i in args: + arg_ar.append(i) + logger.info("Context '%s' calling subprocess '%s' with args '%s'" %(context, command, arg_ar)) + proc = subprocess.run(["/usr/bin/env", "bash", funcs, command] + arg_ar, capture_output=True, text=True) + return proc + + +def spawn_dialog(transient_parent, msg, mode): + dialog = GenericDialog(transient_parent, msg, mode) + response = dialog.run() + dialog.destroy() + match response: + case Gtk.ResponseType.OK: + logger.info("User confirmed dialog with message '%s'" %(msg)) + return 0 + case Gtk.ResponseType.CANCEL | Gtk.ResponseType.DELETE_EVENT: + logger.info("User aborted dialog with message '%s'" %(msg)) + return 1 + + +def process_shell_return_code(transient_parent, msg, code, original_input): + match code: + #TODO: add logger output to each + case 0: + # success with notice popup + spawn_dialog(transient_parent, msg, "NOTIFY") + case 1: + # error with notice popup + if msg == "": + msg = "Something went wrong" + spawn_dialog(transient_parent, msg, "NOTIFY") + case 2: + # warn and recurse (e.g. validation failed) + spawn_dialog(transient_parent, msg, "NOTIFY") + treeview = transient_parent.grid.scrollable_treelist.treeview + process_tree_option(original_input, treeview) + case 4: + # for BM only + spawn_dialog(transient_parent, msg, "NOTIFY") + treeview = transient_parent.grid.scrollable_treelist.treeview + process_tree_option(["Options", "Change Battlemetrics API key"], treeview) + case 5: + # for steam only + spawn_dialog(transient_parent, msg, "NOTIFY") + treeview = transient_parent.grid.scrollable_treelist.treeview + process_tree_option(["Options", "Change Steam API key"], treeview) + case 6: + # return silently + pass + case 90: + # used to update configs and metadata in-place + treeview = transient_parent.grid.scrollable_treelist.treeview + col = treeview.get_column_at_index(0) + config_vals.clear() + for i in query_config(None): + config_vals.append(i) + tooltip = format_metadata(col) + transient_parent.grid.update_statusbar(tooltip) + spawn_dialog(transient_parent, msg, "NOTIFY") + return + case 100: + # final handoff before launch + final_conf = spawn_dialog(transient_parent, msg, "CONFIRM") + treeview = transient_parent.grid.scrollable_treelist.treeview + if final_conf == 1 or final_conf is None: + return + process_tree_option(["Handshake", ""], treeview) + case 255: + spawn_dialog(transient_parent, "Update complete. Please close DZGUI and restart.", "NOTIFY") + Gtk.main_quit() + + +def process_tree_option(input, treeview): + context = input[0] + command = input[1] + logger.info("Parsing tree option '%s' for the context '%s'" %(command, context)) + + transient_parent = treeview.get_outer_window() + toggle_contexts = ["Toggle mod install mode", "Toggle release branch", "Toggle Steam/Flatpak"] + + def call_on_thread(bool, subproc, msg, args): + def _background(subproc, args, dialog): + def _load(): + wait_dialog.destroy() + out = proc.stdout.splitlines() + msg = out[-1] + rc = proc.returncode + logger.info("Subprocess returned code %s with message '%s'" %(rc, msg)) + process_shell_return_code(transient_parent, msg, rc, input) + proc = call_out(transient_parent, subproc, args) + GLib.idle_add(_load) + if bool is True: + wait_dialog = GenericDialog(transient_parent, msg, "WAIT") + wait_dialog.show_all() + thread = threading.Thread(target=_background, args=(subproc, args, wait_dialog)) + thread.start() + else: + # False is used to bypass wait dialogs + proc = call_out(transient_parent, subproc, args) + rc = proc.returncode + out = proc.stdout.splitlines() + msg = out[-1] + process_shell_return_code(transient_parent, msg, rc, input) + + + match context: + case "Help": + if command == "View changelog": + diag = ChangelogDialog(transient_parent, '', "Changelog -- content can be scrolled") + diag.run() + diag.destroy() + else: + # non-blocking subprocess + subprocess.Popen(['/usr/bin/env', 'bash', funcs, "Open link", command]) + case "Handshake": + call_on_thread(True, context, "Waiting for DayZ", command) + case _: + if command == "Output system info to log file": + call_on_thread(True, "gen_log", "Generating log", "") + elif command == "Force update local mods": + call_on_thread(True, "force_update", "Updating mods", "") + elif command == "Quick-connect to favorite server": + call_on_thread(True, command, "Working", "") + elif command in toggle_contexts: + if command == "Toggle release branch": + call_on_thread(False, "toggle", "Updating DZGUI branch", command) + else: + proc = call_out(transient_parent, "toggle", command) + grid = treeview.get_parent().get_parent() + grid.update_right_statusbar() + tooltip = format_metadata(command) + transient_parent.grid.update_statusbar(tooltip) + else: + # This branch is only used by interactive dialogs + match command: + case "Connect by IP" | "Add server by IP" | "Change favorite server": + flag = True + link_label = "" + prompt = "Enter IP in IP:Queryport format (e.g. 192.168.1.1:27016)" + case "Connect by ID" | "Add server by ID": + flag = True + link_label = "Open Battlemetrics" + prompt = "Enter server ID" + case "Change player name": + flag = False + link_label = "" + prompt = "Enter new nickname" + case "Change Steam API key": + flag = True + link_label = "Open Steam API page" + prompt = "Enter new API key" + case "Change Battlemetrics API key": + flag = True + link_label = "Open Battlemetrics API page" + prompt = "Enter new API key" + + user_entry = EntryDialog(transient_parent, prompt, "ENTRY", link_label) + res = user_entry.get_input() + if res is None: + logger.info("User aborted entry dialog") + return + logger.info("User entered: '%s'" %(res)) + + call_on_thread(flag, command, "Working", res) + + +def reinit_checks(): + toggled_checks.clear() + for check in checks: + label = check.get_label() + if filters[label] is True: + check.set_active(True) + toggled_checks.append(label) + else: + check.set_active(False) + + +class OuterWindow(Gtk.Window): + def __init__(self, is_steam_deck, is_game_mode): + super().__init__(title=app_name) + + self.connect("delete-event", self.halt_proc_and_quit) + # Deprecated in GTK 4.0 + self.set_border_width(10) + self.set_type_hint(Gdk.WindowTypeHint.DIALOG) + + """ + app > win > grid > scrollable > treeview [row/server/mod store] + app > win > grid > vbox > buttonbox > filterpanel > combo [map store] + """ + self.grid = Grid(is_steam_deck) + self.add(self.grid) + if is_game_mode is True: + self.fullscreen() + else: + self.maximize() + + # Hide FilterPanel on main menu + self.show_all() + self.grid.right_panel.set_filter_visibility(False) + self.grid.scrollable_treelist.treeview.grab_focus() + + def halt_proc_and_quit(self, window, event): + self.grid.terminate_treeview_process() + Gtk.main_quit() + + +class ScrollableTree(Gtk.ScrolledWindow): + def __init__(self, is_steam_deck): + super().__init__() + + self.treeview = TreeView(is_steam_deck) + self.add(self.treeview) + + +class RightPanel(Gtk.Box): + def __init__(self, is_steam_deck): + super().__init__(spacing=6) + self.set_orientation(Gtk.Orientation.VERTICAL) + + self.button_vbox = ButtonBox(is_steam_deck) + self.filters_vbox = FilterPanel() + toggle_signal(self.filters_vbox, self.filters_vbox.maps_combo, '_on_map_changed', False) + + self.pack_start(self.button_vbox, False, False, 0) + self.pack_start(self.filters_vbox, False, False, 0) + + self.question_button = Gtk.Button(label="?") + self.question_button.set_margin_top(10) + self.question_button.set_margin_start(50) + self.question_button.set_margin_end(50) + self.question_button.connect("clicked", self._on_button_clicked) + if is_steam_deck is False: + self.pack_start(self.question_button, False, True, 0) + + def _on_button_clicked(self, button): + grid = self.get_parent() + grid.scrollable_treelist.treeview.spawn_keys_dialog(button) + + def set_filter_visibility(self, bool): + self.filters_vbox.set_visible(bool) + + def focus_button_box(self): + self.button_vbox.focus_button(0) + + def set_active_combo(self): + self.filters_vbox.set_active_combo() + + +class ButtonBox(Gtk.Box): + def __init__(self, is_steam_deck): + super().__init__(spacing=6) + self.set_orientation(Gtk.Orientation.VERTICAL) + set_surrounding_margins(self, 10) + + self.buttons = list() + for side_button in side_buttons: + button = Gtk.Button(label=side_button) + if is_steam_deck is True: + button.set_size_request(10, 10) + else: + button.set_size_request(50,50) + button.set_opacity(0.6) + self.buttons.append(button) + button.connect("clicked", self._on_selection_button_clicked) + self.pack_start(button, False, False, True) + + self.buttons[0].set_opacity(1.0) + + def _update_single_column(self, context): + logger.info("Returning from multi-column view to monocolumn view for the context '%s'" %(context)) + treeview = self.get_treeview() + right_panel = self.get_parent() + right_panel.set_filter_visibility(False) + + """Block maps combo when returning to main menu""" + toggle_signal(right_panel.filters_vbox, right_panel.filters_vbox.maps_combo, '_on_map_changed', False) + right_panel.filters_vbox.keyword_entry.set_text("") + keyword_filter.clear() + keyword_filter.append("Keyword␞") + server_store.clear() + + for column in treeview.get_columns(): + treeview.remove_column(column) + for i, column_title in enumerate([context]): + renderer = Gtk.CellRendererText() + column = Gtk.TreeViewColumn(column_title, renderer, text=i) + treeview.append_column(column) + treeview.set_model(row_store) + treeview.grab_focus() + + def _populate(self, array_context): + row_store.clear() + status = array_context[0][0] + treeview = self.get_treeview() + grid = self.get_parent().get_parent() + + for items in array_context: + row_store.append(list(items)) + grid.update_statusbar(status_tooltip[status]) + treeview.grab_focus() + + def _on_selection_button_clicked(self, button): + treeview = self.get_treeview() + toggle_signal(treeview, treeview.selected_row, '_on_tree_selection_changed', False) + context = button.get_label() + logger.info("User clicked '%s'" %(context)) + + if context == "Exit": + logger.info("Normal user exit") + Gtk.main_quit() + cols = treeview.get_columns() + + if len(cols) > 1: + self._update_single_column(context) + + # Highlight the active widget + for inactive_button in self.buttons: + inactive_button.set_opacity(0.6) + button.set_opacity(1.0) + + for col in cols: + col.set_title(context) + + match context: + case 'Manage': self._populate(manage) + case 'Main menu': self._populate(connect) + case 'Options': self._populate(options) + case 'Help': self._populate(help) + + toggle_signal(treeview, treeview.selected_row, '_on_tree_selection_changed', True) + + def focus_button(self, index): + self.buttons[index].grab_focus() + + def get_treeview(self): + grid = self.get_parent().get_parent() + treeview = grid.scrollable_treelist.treeview + return treeview + + +class CalcDist(multiprocessing.Process): + def __init__(self, widget, addr, result_queue, cache): + super().__init__() + + self.widget = widget + self.result_queue = result_queue + self.addr = addr + self.ip = addr.split(':')[0] + + def run(self): + if self.addr in cache: + logger.info("Address '%s' already in cache" %(self.addr)) + self.result_queue.put([self.addr, cache[self.addr]]) + return + proc = call_out(self.widget, "get_dist", self.ip) + km = proc.stdout + self.result_queue.put([self.addr, km]) + + +class TreeView(Gtk.TreeView): + __gsignals__ = {"on_distcalc_started": (GObject.SignalFlags.RUN_FIRST, None, ())} + + def __init__(self, is_steam_deck): + super().__init__() + + self.queue = multiprocessing.Queue() + self.current_proc = None + + # Disables typeahead search + self.set_enable_search(False) + self.set_search_column(-1) + + # Populate model with initial context + for rows in connect: + row_store.append(list(rows)) + self.set_model(row_store) + + for i, column_title in enumerate( + ["Main menu"] + ): + renderer = Gtk.CellRendererText() + column = Gtk.TreeViewColumn(column_title, renderer, text=i) + self.append_column(column) + + self.connect("row-activated", self._on_row_activated) + self.connect("key-press-event", self._on_keypress) + self.connect("key-press-event", self._on_keypress_main_menu) + toggle_signal(self, self, '_on_keypress', False) + + self.selected_row = self.get_selection() + self.selected_row.connect("changed", self._on_tree_selection_changed) + self.connect("button-release-event", self._on_button_release) + + def terminate_process(self): + if self.current_proc and self.current_proc.is_alive(): + self.current_proc.terminate() + + def _on_menu_click(self, menu_item): + parent = self.get_outer_window() + context = self.get_first_col() + value = self.get_column_at_index(0) + context_menu_label = menu_item.get_label() + logger.info("User clicked context menu '%s'" %(context_menu_label)) + + match context_menu_label: + case "Add to my servers" | "Remove from my servers": + record = "%s:%s" %(self.get_column_at_index(6), self.get_column_at_index(7)) + proc = call_out(parent, context_menu_label, record) + if context == "Name (My saved servers)": + iter = self.get_current_iter() + server_store.remove(iter) + msg = proc.stdout + res = spawn_dialog(parent, msg, "NOTIFY") + case "Remove from history": + record = "%s:%s" %(self.get_column_at_index(6), self.get_column_at_index(7)) + call_out(parent, context_menu_label, record) + iter = self.get_current_iter() + server_store.remove(iter) + case "Copy IP to clipboard": + self.clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) + addr = self.get_column_at_index(6) + qport = self.get_column_at_index(7) + ip = addr.split(':')[0] + record = "%s:%s" %(ip, qport) + self.clipboard.set_text(record, -1) + case "Show server-side mods": + record = "%s:%s" %(self.get_column_at_index(6), self.get_column_at_index(7)) + dialog = ModDialog(parent, "Enter/double click a row to open in Steam Workshop. ESC exits this dialog", "Modlist", record) + modlist_store.clear() + case "Delete mod": + conf_msg = "Really delete the mod '%s'?" %(value) + success_msg = "Successfully deleted the mod '%s'." %(value) + fail_msg = "An error occurred during deletion. Aborting." + res = spawn_dialog(parent, conf_msg, "CONFIRM") + symlink = self.get_column_at_index(1) + dir = self.get_column_at_index(2) + if res == 0: + proc = call_out(parent, "delete", symlink, dir) + if proc.returncode == 0: + spawn_dialog(parent, success_msg, "NOTIFY") + self._update_quad_column("List installed mods") + else: + spawn_dialog(parent, fail_msg, "NOTIFY") + case "Open in Steam Workshop": + record = self.get_column_at_index(2) + call_out(parent, "open_workshop_page", record) + + def _on_button_release(self, widget, event): + try: + pathinfo = self.get_path_at_pos(event.x, event.y) + if pathinfo is None: + return + (path, col, cellx, celly) = pathinfo + self.set_cursor(path,col,0) + except AttributeError: + pass + + if event.type is Gdk.EventType.BUTTON_RELEASE and event.button != 3: + return + context = self.get_first_col() + self.menu = Gtk.Menu() + + mod_context_items = ["Open in Steam Workshop", "Delete mod"] + subcontext_items = {"Server browser": ["Add to my servers", "Copy IP to clipboard", "Show server-side mods"], + "My saved servers": ["Remove from my servers", "Copy IP to clipboard", "Show server-side mods"], + "Recent servers": ["Remove from history", "Copy IP to clipboard", "Show server-side mods"], + } + # submenu hierarchy https://stackoverflow.com/questions/52847909/how-to-add-a-sub-menu-to-a-gtk-menu + if context == "Mod": + items = mod_context_items + subcontext = "List installed mods" + elif "Name" in context: + subcontext = context.split('(')[1].split(')')[0] + items = subcontext_items[subcontext] + else: + return + + for item in items: + if subcontext == "Server browser" and item == "Add to my servers": + record = "%s:%s" %(self.get_column_at_index(6), self.get_column_at_index(7)) + proc = call_out(widget, "is_in_favs", record) + if proc.returncode == 0: + item = "Remove from my servers" + item = Gtk.MenuItem(label=item) + item.connect("activate", self._on_menu_click) + self.menu.append(item) + + self.menu.show_all() + + if event.type is Gdk.EventType.KEY_PRESS and event.keyval is Gdk.KEY_l: + self.menu.popup_at_widget(widget, Gdk.Gravity.CENTER, Gdk.Gravity.WEST) + else: + self.menu.popup_at_pointer(event) + + def get_outer_window(self): + win = self.get_parent().get_parent().get_parent() + return win + + def get_outer_grid(self): + grid = self.get_parent().get_parent() + return grid + + def get_current_iter(self): + iter = self.get_selection().get_selected()[1] + return iter + + def get_current_index(self): + index = treeview.get_selection().get_selected_rows()[1][0][0] + return index + + def _on_tree_selection_changed(self, selection): + grid = self.get_outer_grid() + context = self.get_first_col() + row_sel = self.get_column_at_index(0) + if context == "Mod" or context == "Timestamp": + return + logger.info("Tree selection for context '%s' changed to '%s'" %(context, row_sel)) + + if self.current_proc and self.current_proc.is_alive(): + self.current_proc.terminate() + + if "Name" in context: + addr = self.get_column_at_index(6) + if addr is None: + return + if addr in cache: + dist = format_distance(cache[addr]) + + tooltip = server_tooltip[0] + dist + grid.update_statusbar(tooltip) + return + self.emit("on_distcalc_started") + self.current_proc = CalcDist(self, addr, self.queue, cache) + self.current_proc.start() + elif None: + return + else: + tooltip = format_metadata(row_sel) + grid.update_statusbar(tooltip) + + def spawn_keys_dialog(self, widget): + diag = KeysDialog(self.get_outer_window(), '', "Keybindings") + diag.run() + diag.destroy() + self.grab_focus() + + def _on_keypress_main_menu(self, treeview, event): + window = self.get_outer_window() + grid = self.get_outer_grid() + match event.keyval: + case Gdk.KEY_Right: + grid.right_panel.focus_button_box() + case Gdk.KEY_question: + if event.state is Gdk.ModifierType.SHIFT_MASK: + self.spawn_keys_dialog(None) + case Gdk.KEY_f: + if event.state is Gdk.ModifierType.CONTROL_MASK: + return True + case _: + return False + + def _on_keypress(self, treeview, event): + keyname = Gdk.keyval_name(event.keyval) + grid = self.get_outer_grid() + cur_proc = grid.scrollable_treelist.treeview.current_proc + if event.state is Gdk.ModifierType.CONTROL_MASK: + match event.keyval: + case Gdk.KEY_d: + if self.get_first_col() == "Mod": + return + debug = grid.right_panel.filters_vbox.debug_toggle + if debug.get_active(): + debug.set_active(False) + else: + debug.set_active(True) + case Gdk.KEY_l: + self._on_button_release(self, event) + case Gdk.KEY_f: + if self.get_first_col() == "Mod": + return + grid.right_panel.filters_vbox.grab_keyword_focus() + case Gdk.KEY_m: + if self.get_first_col() == "Mod": + return + grid.right_panel.filters_vbox.maps_combo.grab_focus() + grid.right_panel.filters_vbox.maps_combo.popup() + case _: + return False + elif keyname.isnumeric() and int(keyname) > 0: + if self.get_first_col() == "Mod": + return + digit = (int(keyname) - 1) + grid.right_panel.filters_vbox.toggle_check(checks[digit]) + else: + return False + + def get_column_at_index(self, index): + select = self.get_selection() + sels = select.get_selected_rows() + (model, pathlist) = sels + if len(pathlist) < 1: + return + path = pathlist[0] + tree_iter = model.get_iter(path) + value = model.get_value(tree_iter, index) + return value + + def _background(self, dialog, mode): + def loadTable(): + for map in maps: + map_store.append([map]) + toggle_signal(self, self.selected_row, '_on_tree_selection_changed', True) + right_panel.set_filter_visibility(True) + dialog.destroy() + self.grab_focus() + + grid = self.get_outer_grid() + right_panel = grid.right_panel + + filters = toggled_checks + keyword_filter + selected_map + data = call_out(self, "dump_servers", mode, *filters) + + toggle_signal(self, self.selected_row, '_on_tree_selection_changed', False) + row_metadata = parse_server_rows(data) + sum = row_metadata[0] + hits = row_metadata[1] + server_tooltip[0] = format_tooltip(sum, hits) + grid.update_statusbar(server_tooltip[0]) + + map_data = call_out(self, "get_unique_maps", mode) + maps = map_data.stdout.splitlines() + self.set_model(server_store) + GLib.idle_add(loadTable) + + def _background_quad(self, dialog, mode): + def load(): + dialog.destroy() + self.set_model(mod_store) + self.grab_focus() + size = locale.format_string('%.3f', total_size, grouping=True) + grid.update_statusbar("Found %s mods taking up %s MiB" %(f'{total_mods:n}', size)) + toggle_signal(self, self, '_on_keypress', True) + + grid = self.get_outer_grid() + right_panel = grid.right_panel + + right_panel.set_filter_visibility(False) + data = call_out(self, "list_mods", mode) + result = parse_mod_rows(data) + total_size = result[0] + total_mods = result[1] + GLib.idle_add(load) + + def _update_multi_column(self, mode): + # Local server lists may have different filter toggles from remote list + # FIXME: tree selection updates twice here. attach signal later + toggle_signal(self, self.selected_row, '_on_tree_selection_changed', False) + # toggle_signal(self, self.selected_row, '_on_check_toggled', False) + for column in self.get_columns(): + self.remove_column(column) + row_store.clear() + for i, column_title in enumerate(browser_cols): + renderer = Gtk.CellRendererText() + column = Gtk.TreeViewColumn(column_title, renderer, text=i) + column.set_sort_column_id(i) + if ("Name" in column_title): + column.set_fixed_width(800) + if (column_title == "Map"): + column.set_fixed_width(300) + self.append_column(column) + + self.update_first_col(mode) + transient_parent = self.get_outer_window() + + for check in checks: + toggle_signal(self.get_outer_grid().right_panel.filters_vbox, check, '_on_check_toggle', True) + toggle_signal(self, self, '_on_keypress', True) + + wait_dialog = GenericDialog(transient_parent, "Fetching server metadata", "WAIT") + wait_dialog.show_all() + thread = threading.Thread(target=self._background, args=(wait_dialog, mode)) + thread.start() + + def update_first_col(self, title): + for col in self.get_columns(): + old_title = col.get_title() + col.set_title("%s (%s)" %(old_title, title)) + break + + def get_first_col(self): + for col in self.get_columns(): + cur_col = col.get_title() + break + return cur_col + + def _format_float(self, column, cell, model, iter, data): + # https://docs.huihoo.com/pygtk/2.0-tutorial/sec-CellRenderers.html + val = model[iter][3] + formatted = locale.format_string('%.3f', val, grouping=True) + cell.set_property('text', formatted) + return + + def _update_quad_column(self, mode): + # toggle_signal(self, self.selected_row, '_on_tree_selection_changed', False) + for column in self.get_columns(): + self.remove_column(column) + + mod_store.clear() + log_store.clear() + + if mode == "List installed mods": + cols = mod_cols + self.set_model(mod_store) + else: + cols = log_cols + self.set_model(log_store) + + for i, column_title in enumerate(cols): + renderer = Gtk.CellRendererText() + column = Gtk.TreeViewColumn(column_title, renderer, text=i) + if mode == "List installed mods": + if i == 3: + column.set_cell_data_func(renderer, self._format_float, func_data=None) + column.set_sort_column_id(i) + #if (column_title == "Name"): + # column.set_fixed_width(600) + self.append_column(column) + + if mode == "List installed mods": + pass + else: + data = call_out(self, "show_log") + res = parse_log_rows(data) + if res == 1: + spawn_dialog(self.get_outer_window(), "Failed to load log file, possibly corrupted", "NOTIFY") + return + + transient_parent = self.get_outer_window() + + wait_dialog = GenericDialog(transient_parent, "Checking mods", "WAIT") + wait_dialog.show_all() + thread = threading.Thread(target=self._background_quad, args=(wait_dialog, mode)) + thread.start() + + def _background_connection(self, dialog, record): + def load(): + dialog.destroy() + transient = self.get_outer_window() + out = proc.stdout.splitlines() + msg = out[-1] + process_shell_return_code(transient, msg, proc.returncode, record) + + proc = call_out(self, "Connect from table", record) + GLib.idle_add(load) + + + def _attempt_connection(self): + transient_parent = self.get_outer_window() + addr = self.get_column_at_index(6) + qport = self.get_column_at_index(7) + record = "%s:%s" %(addr, str(qport)) + + wait_dialog = GenericDialog(transient_parent, "Querying server and aligning mods", "WAIT") + wait_dialog.show_all() + thread = threading.Thread(target=self._background_connection, args=(wait_dialog, record)) + thread.start() + + def _on_row_activated(self, treeview, tree_iter, col): + context = self.get_first_col() + chosen_row = self.get_column_at_index(0) + output = context, chosen_row + if context == "Mod" or context == "Timestamp": + return + logger.info("User selected '%s' for the context '%s'" %(chosen_row, context)) + + outer = self.get_outer_window() + right_panel = outer.grid.right_panel + filters_vbox = right_panel.filters_vbox + + valid_contexts = ["Server browser", "My saved servers", "Recent servers"] + if chosen_row in valid_contexts: + # server contexts share the same model type + for check in checks: + toggle_signal(filters_vbox, check, '_on_check_toggle', False) + + if chosen_row == "Server browser": + reinit_checks() + else: + for check in checks: + if check.get_label() not in toggled_checks: + toggled_checks.append(check.get_label()) + check.set_active(True) + self._update_multi_column(chosen_row) + + map_store.clear() + map_store.append(["All maps"]) + right_panel.set_active_combo() + + toggle_signal(filters_vbox, filters_vbox.maps_combo, '_on_map_changed', True) + toggle_signal(self, self.selected_row, '_on_tree_selection_changed', True) + self.grab_focus() + elif chosen_row == "List installed mods" or chosen_row == "Show debug log": + toggle_signal(self, self.selected_row, '_on_tree_selection_changed', False) + self._update_quad_column(chosen_row) + toggle_signal(self, self.selected_row, '_on_tree_selection_changed', True) + elif any(map(context.__contains__, valid_contexts)): + # implies activated row on any server list subcontext + self._attempt_connection() + else: + # implies any other non-server option selected from main menu + process_tree_option(output, self) + + +def format_metadata(row_sel): + prefix = status_tooltip[row_sel] + vals = { + "branch": config_vals[0], + "debug": config_vals[1], + "auto_install": config_vals[2], + "name": config_vals[3], + "fav_label": config_vals[4], + "preferred_client": config_vals[5] + } + match row_sel: + case "Quick-connect to favorite server" | "Change favorite server": + default = "unset" + val = "fav_label" + case "Change player name": + val = "name" + case "Toggle mod install mode": + default = "manual" + alt = "auto" + val = "auto_install" + case "Toggle debug mode": + default = "normal" + alt = "debug" + val = "debug" + case "Toggle release branch": + val = "branch" + case "Toggle Steam/Flatpak": + val = "preferred_client" + case _: + return prefix + + try: + cur_val = vals[val] + if cur_val == "": + return "%s | Current: %s" %(prefix, default) + # TODO: migrate to human readable config values + elif cur_val == "1": + return "%s | Current: %s" %(prefix, alt) + else: + return "%s | Current: '%s'" %(prefix, cur_val) + except KeyError: + return prefix + + +def format_tooltip(sum, hits): + if hits == 1: + hit_suffix = "match" + else: + hit_suffix = "matches" + if sum == 1: + player_suffix = "player" + else: + player_suffix = "players" + tooltip = "Found %s %s with %s %s" %(f'{hits:n}', hit_suffix, f'{sum:n}', player_suffix) + return tooltip + + +def filter_servers(transient_parent, filters_vbox, treeview, context): + def filter(dialog): + def clear_and_destroy(): + row_metadata = parse_server_rows(data) + sum = row_metadata[0] + hits = row_metadata[1] + server_tooltip[0] = format_tooltip(sum, hits) + transient_parent.grid.update_statusbar(server_tooltip[0]) + + toggle_signal(treeview, treeview.selected_row, '_on_tree_selection_changed', True) + toggle_signal(filters_vbox, filters_vbox, '_on_button_release', True) + toggle_signal(filters_vbox, filters_vbox.maps_combo, '_on_map_changed', True) + dialog.destroy() + treeview.grab_focus() + + server_filters = toggled_checks + keyword_filter + selected_map + data = call_out(transient_parent, "filter", context, *server_filters) + GLib.idle_add(clear_and_destroy) + + # block additional input on FilterPanel while filters are running + toggle_signal(treeview, treeview.selected_row, '_on_tree_selection_changed', False) + toggle_signal(filters_vbox, filters_vbox, '_on_button_release', False) + toggle_signal(filters_vbox, filters_vbox.maps_combo, '_on_map_changed', False) + + dialog = GenericDialog(transient_parent, "Filtering results", "WAIT") + dialog.show_all() + server_store.clear() + + thread = threading.Thread(target=filter, args=(dialog,)) + thread.start() + + +class AppHeaderBar(Gtk.HeaderBar): + def __init__(self): + super().__init__() + self.props.title = app_name + self.set_decoration_layout("menu:minimize,maximize,close") + self.set_show_close_button(True) + + +class GenericDialog(Gtk.MessageDialog): + def __init__(self, parent, text, mode): + + def _on_dialog_delete(self, response_id): + """Passively ignore user-input""" + return True + + match mode: + case "WAIT": + dialog_type = Gtk.MessageType.INFO + button_type = Gtk.ButtonsType.NONE + header_text = "Please wait" + case "NOTIFY": + dialog_type = Gtk.MessageType.INFO + button_type = Gtk.ButtonsType.OK + header_text = "Notice" + case "CONFIRM": + dialog_type = Gtk.MessageType.QUESTION + button_type = Gtk.ButtonsType.OK_CANCEL + header_text = "Confirmation" + case "ENTRY": + dialog_type = Gtk.MessageType.QUESTION + button_type = Gtk.ButtonsType.OK_CANCEL + header_text = "User input required" + case _: + dialog_type = Gtk.MessageType.INFO + button_type = Gtk.ButtonsType.OK + header_text = mode + + Gtk.MessageDialog.__init__( + self, + transient_for=parent, + flags=0, + message_type=dialog_type, + text=header_text, + secondary_text=textwrap.fill(text, 50), + buttons=button_type, + title=app_name, + modal=True, + ) + + if mode == "WAIT": + dialogBox = self.get_content_area() + spinner = Gtk.Spinner() + dialogBox.pack_end(spinner, False, False, 0) + spinner.start() + self.connect("delete-event", _on_dialog_delete) + + self.set_default_response(Gtk.ResponseType.OK) + self.set_size_request(500, 0) + self.set_position(Gtk.WindowPosition.CENTER_ON_PARENT) + + def update_label(self, text): + self.format_secondary_text(text) + + +def ChangelogDialog(parent, text, mode): + + dialog = GenericDialog(parent, text, mode) + dialogBox = dialog.get_content_area() + dialog.set_default_response(Gtk.ResponseType.OK) + dialog.set_size_request(1000, 600) + + with open(changelog_path, 'r') as f: + changelog = f.read() + + scrollable = Gtk.ScrolledWindow() + label = Gtk.Label() + label.set_markup(changelog) + scrollable.add(label) + dialogBox.pack_end(scrollable, True, True, 0) + set_surrounding_margins(dialogBox, 30) + + dialog.show_all() + return dialog + + +def KeysDialog(parent, text, mode): + + dialog = GenericDialog(parent, text, mode) + dialogBox = dialog.get_content_area() + dialog.set_default_response(Gtk.ResponseType.OK) + dialog.set_size_request(700, 0) + + keybindings = """ + Basic navigation + Ctrl-q: quit + Enter/Space/Double click: select row item + Up, Down: navigate through row items + ?: open this dialog + + Button navigation + Right: jump from main view to side buttons + Left: jump from side buttons to main view + Up, Down: navigate up and down through side buttons + Tab, Shift-Tab: navigate forward/back through menu elements + + Any server browsing context + Enter/Space/Double click: connect to server + Right-click on row/Ctrl-l: displays additional context menus + Ctrl-f: jump to keyword field + Ctrl-m: jump to maps dropdown + Ctrl-d: toggle dry run (debug) mode + 1-9: toggle filter ON/OFF + ESC: jump back to main view from keyword/maps + """ + + label = Gtk.Label() + label.set_markup(keybindings) + dialogBox.pack_end(label, False, False, 0) + dialog.show_all() + return dialog + + +class ModDialog(GenericDialog): + def __init__(self, parent, text, mode, record): + super().__init__(parent, text, mode) + + dialogBox = self.get_content_area() + self.set_default_response(Gtk.ResponseType.OK) + self.set_size_request(800, 500) + + self.scrollable = Gtk.ScrolledWindow() + self.view = Gtk.TreeView() + self.scrollable.add(self.view) + set_surrounding_margins(self.scrollable, 20) + + self.view.connect("row-activated", self._on_row_activated) + + for i, column_title in enumerate( + ["Mod", "ID", "Installed"] + ): + renderer = Gtk.CellRendererText() + column = Gtk.TreeViewColumn(column_title, renderer, text=i) + self.view.append_column(column) + column.set_sort_column_id(i) + dialogBox.pack_end(self.scrollable, True, True, 0) + + wait_dialog = GenericDialog(parent, "Fetching modlist", "WAIT") + wait_dialog.show_all() + thread = threading.Thread(target=self._background, args=(wait_dialog, parent, record)) + thread.start() + + def _background(self, dialog, parent, record): + def _load(): + dialog.destroy() + if data.returncode == 1: + spawn_dialog(parent, "Server has no mods installed", "NOTIFY") + return + self.show_all() + self.set_markup("Modlist (%s mods)" %(mod_count)) + res = self.run() + self.destroy() + + addr = record.split(':') + ip = addr[0] + qport = addr[2] + data = call_out(parent, "show_server_modlist", ip, qport) + mod_count = parse_modlist_rows(data) + self.view.set_model(modlist_store) + GLib.idle_add(_load) + + def popup(self): + pass + + def _on_row_activated(self, treeview, tree_iter, col): + select = treeview.get_selection() + sels = select.get_selected_rows() + (model, pathlist) = sels + if len(pathlist) < 1: + return + path = pathlist[0] + tree_iter = model.get_iter(path) + mod_id = model.get_value(tree_iter, 1) + subprocess.Popen(['/usr/bin/env', 'bash', funcs, "open_workshop_page", mod_id]) + +class EntryDialog(GenericDialog): + def __init__(self, parent, text, mode, link): + super().__init__(parent, text, mode) + + """ Returns user input as a string or None """ + """ If user does not input text it returns None, NOT AN EMPTY STRING. """ + + self.dialog = GenericDialog(parent, text, mode) + self.dialogBox = self.dialog.get_content_area() + self.dialog.set_default_response(Gtk.ResponseType.OK) + self.dialog.set_size_request(500, 0) + + self.userEntry = Gtk.Entry() + set_surrounding_margins(self.userEntry, 20) + self.userEntry.set_margin_top(0) + self.userEntry.set_size_request(250, 0) + self.userEntry.set_activates_default(True) + self.dialogBox.pack_start(self.userEntry, False, False, 0) + + if link != "": + button = Gtk.Button(label=link) + button.set_margin_start(60) + button.set_margin_end(60) + button.connect("clicked", self._on_button_clicked) + self.dialogBox.pack_end(button, False, False, 0) + + def _on_button_clicked(self, button): + label = button.get_label() + subprocess.Popen(['/usr/bin/env', 'bash', funcs, "Open link", label]) + + def get_input(self): + self.dialog.show_all() + response = self.dialog.run() + text = self.userEntry.get_text() + self.dialog.destroy() + if (response == Gtk.ResponseType.OK) and (text != ''): + return text + else: + return None + + +class Grid(Gtk.Grid): + def __init__(self, is_steam_deck): + super().__init__() + self.set_column_homogeneous(True) + #self.set_row_homogeneous(True) + + self._version = "%s %s" %(app_name, sys.argv[2]) + + self.scrollable_treelist = ScrollableTree(is_steam_deck) + if is_steam_deck is True: + self.scrollable_treelist.set_hexpand(False) + self.scrollable_treelist.set_vexpand(True) + else: + self.scrollable_treelist.set_hexpand(True) + self.scrollable_treelist.set_vexpand(True) + + self.right_panel = RightPanel(is_steam_deck) + + + self.bar = Gtk.Statusbar() + self.scrollable_treelist.treeview.connect("on_distcalc_started", self._on_calclat_started) + + GLib.timeout_add(200, self._check_result_queue) + + self.update_statusbar(default_tooltip) + self.status_right_label = Gtk.Label(label="") + self.bar.add(self.status_right_label) + self.update_right_statusbar() + + if is_steam_deck is True: + self.attach(self.scrollable_treelist, 0, 0, 4, 1) + self.attach_next_to(self.bar, self.scrollable_treelist, Gtk.PositionType.BOTTOM, 4, 1) + self.attach_next_to(self.right_panel, self.scrollable_treelist, Gtk.PositionType.RIGHT, 1, 1) + else: + self.attach(self.scrollable_treelist, 0, 0, 7, 5) + self.attach_next_to(self.bar, self.scrollable_treelist, Gtk.PositionType.BOTTOM, 7, 1) + self.attach_next_to(self.right_panel, self.scrollable_treelist, Gtk.PositionType.RIGHT, 1, 1) + + def update_right_statusbar(self): + config_vals.clear() + for i in query_config(self): + config_vals.append(i) + _branch = config_vals[0] + _branch = _branch.upper() + _debug = config_vals[1] + if _debug == "": + _debug = "NORMAL" + else: + _debug = "DEBUG" + concat_label = "%s | %s | %s" %(_branch, _debug, self._version) + self.status_right_label.set_text(concat_label) + + def terminate_treeview_process(self): + self.scrollable_treelist.treeview.terminate_process() + + def _on_calclat_started(self, treeview): + server_tooltip[1] = server_tooltip[0] + "| Distance: calculating..." + self.update_statusbar(server_tooltip[1]) + + def _check_result_queue(self): + latest_result = None + result_queue = self.scrollable_treelist.treeview.queue + while not result_queue.empty(): + latest_result = result_queue.get() + + if latest_result is not None: + addr = latest_result[0] + km = latest_result[1] + cache[addr] = km + dist = format_distance(km) + tooltip = server_tooltip[1] = server_tooltip[0] + dist + self.update_statusbar(tooltip) + + return True + + def update_statusbar(self, string): + meta = self.bar.get_context_id("Statusbar") + self.bar.push(meta, string) + + +def toggle_signal(owner, widget, func_name, bool): + func = getattr(owner, func_name) + if (bool): + logger.debug("Unblocking %s for %s" %(func_name, widget)) + widget.handler_unblock_by_func(func) + else: + logger.debug("Blocking %s for %s" %(func_name, widget)) + widget.handler_block_by_func(func) + + +class App(Gtk.Application): + def __init__(self): + + _isd = int(sys.argv[3]) + if _isd == 1: + is_steam_deck = True + is_game_mode = False + elif _isd == 2: + is_steam_deck = True + is_game_mode = True + else: + is_steam_deck = False + is_game_mode = False + + self.win = OuterWindow(is_steam_deck, is_game_mode) + + accel = Gtk.AccelGroup() + accel.connect(Gdk.KEY_q, Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE, self._halt_window_subprocess) + self.win.add_accel_group(accel) + + GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGINT, Gtk.main_quit) + Gtk.main() + + def _halt_window_subprocess(self, accel_group, window, code, flag): + self.win.halt_proc_and_quit(self, None) + + +class FilterPanel(Gtk.Box): + def __init__(self): + super().__init__(spacing=6) + + for check in filters.keys(): + checkbutton = Gtk.CheckButton(label=check) + label = checkbutton.get_children() + + label[0].set_ellipsize(Pango.EllipsizeMode.END) + if filters[check] is True: + checkbutton.set_active(True) + toggled_checks.append(check) + checkbutton.connect("toggled", self._on_check_toggle) + checks.append(checkbutton) + + self.connect("button-release-event", self._on_button_release) + self.set_orientation(Gtk.Orientation.VERTICAL) + set_surrounding_margins(self, 10) + self.set_margin_top(1) + + self.filters_label = Gtk.Label(label="Filters") + + self.keyword_entry = Gtk.Entry() + self.keyword_entry.set_placeholder_text("Filter by keyword") + self.keyword_entry.connect("activate", self._on_keyword_enter) + self.keyword_entry.connect("key-press-event", self._on_esc_pressed) + + renderer_text = Gtk.CellRendererText(ellipsize=Pango.EllipsizeMode.END) + self.maps_combo = Gtk.ComboBox.new_with_model(map_store) + self.maps_combo.pack_start(renderer_text, True) + self.maps_combo.add_attribute(renderer_text, "text", 0) + self.maps_combo.connect("changed", self._on_map_changed) + self.maps_combo.connect("key-press-event", self._on_esc_pressed) + + self.debug_toggle = Gtk.ToggleButton(label="Debug mode") + if query_config(None, "debug")[0] == '1': + self.debug_toggle.set_active(True) + self.debug_toggle.connect("toggled", self._on_button_toggled, "Toggle debug mode") + set_surrounding_margins(self.debug_toggle, 10) + + self.pack_start(self.filters_label, False, False, True) + self.pack_start(self.keyword_entry, False, False, True) + self.pack_start(self.maps_combo, False, False, True) + + for i, check in enumerate(checks[0:]): + self.pack_start(checks[i], False, False, True) + + self.pack_start(self.debug_toggle, False, False, 0) + + def _on_button_toggled(self, button, command): + transient_parent = self.get_outer_window() + grid = self.get_outer_grid() + call_out(transient_parent, "toggle", command) + grid.update_right_statusbar() + grid.scrollable_treelist.treeview.grab_focus() + + def grab_keyword_focus(self): + self.keyword_entry.grab_focus() + + def restore_focus_to_treeview(self): + grid = self.get_outer_grid() + grid.scrollable_treelist.treeview.grab_focus() + return False + + def _on_esc_pressed(self, entry, event): + keyname = Gdk.keyval_name(event.keyval) + if keyname == "Escape": + GLib.idle_add(self.restore_focus_to_treeview) + + def get_outer_grid(self): + panel = self.get_parent() + grid = panel.get_parent() + return grid + + def get_outer_window(self): + grid = self.get_outer_grid() + outer_window = grid.get_parent() + return outer_window + + def _on_keyword_enter(self, keyword_entry): + win = self.get_outer_window() + win.set_keep_below(False) + keyword = keyword_entry.get_text() + old_keyword = keyword_filter[0].split(delimiter)[1] + if keyword == old_keyword: + return + logger.info("User filtered by keyword '%s'" %(keyword)) + keyword_filter.clear() + keyword_filter.append("Keyword␞" + keyword) + transient_parent = self.get_outer_window() + grid = self.get_outer_grid() + treeview = grid.scrollable_treelist.treeview + context = grid.scrollable_treelist.treeview.get_first_col() + filter_servers(transient_parent, self, treeview, context) + + def _on_button_release(self, window, button): + return True + + def set_active_combo(self): + self.maps_combo.set_active(0) + + def toggle_check(self, button): + if button.get_active(): + button.set_active(False) + else: + button.set_active(True) + + def _on_check_toggle(self, button): + grid = self.get_outer_grid() + treeview = grid.scrollable_treelist.treeview + context = grid.scrollable_treelist.treeview.get_first_col() + label = button.get_label() + state = button.get_active() + + if context == "Mod": + return + if state is True: + toggled_checks.append(label) + else: + toggled_checks.remove(label) + + logger.info("User toggled button '%s' to %s" %(label, state)) + transient_parent = self.get_outer_window() + filter_servers(transient_parent, self, treeview, context) + + def _on_map_changed(self, combo): + grid = self.get_outer_grid() + transient_parent = self.get_outer_window() + treeview = grid.scrollable_treelist.treeview + context = grid.scrollable_treelist.treeview.get_first_col() + + tree_iter = combo.get_active_iter() + if tree_iter is not None: + selected_map.clear() + model = combo.get_model() + selection = model[tree_iter][0] + selected_map.append("Map=" + selection) + logger.info("User selected map '%s'" %(selection)) + filter_servers(transient_parent, self, treeview, context) + + +def main(): + + def usage(): + text = "UI constructor must be run via DZGUI" + logger.critical(text) + print(text) + sys.exit(1) + + expected_flag = "--init-ui" + if len(sys.argv) < 2: + usage() + if sys.argv[1] != expected_flag: + usage() + + logger.info("Spawned UI from DZGUI setup process") + App() + + +if __name__ == '__main__': + main() diff --git a/news b/news deleted file mode 100644 index e69de29..0000000 From 2d95b760d45b3ba9dbbc6cfb2fe1702995101f93 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Wed, 31 Jan 2024 18:51:55 +0900 Subject: [PATCH 12/40] fix: variable name --- dzgui.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dzgui.sh b/dzgui.sh index 3138c81..d73a8fb 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -259,8 +259,8 @@ Type=Application Terminal=false Exec=$share_path/dzgui.sh Name=$app_name_upper -Comment=$appname -Icon=$share_path/$appname +Comment=$app_name +Icon=$share_path/$app_name Categories=Game END } @@ -272,9 +272,9 @@ freedesktop_dirs(){ for i in dzgui grid.png hero.png logo.png; do curl -s "$img_url/$i" > "$share_path/$i" done - write_desktop_file > "$freedesktop_path/$appname.desktop" + write_desktop_file > "$freedesktop_path/$app_name.desktop" [[ $is_steam_deck -eq 0 ]] && return - write_desktop_file > "$HOME/Desktop/$appname.desktop" + write_desktop_file > "$HOME/Desktop/$app_name.desktop" } legacy_vars(){ local suffix="fav" @@ -313,7 +313,7 @@ check_version(){ version_url="$testing_url/dzgui.sh" fi local upstream=$(curl -Ls "$version_url" | awk -F= '/^version=/ {print $2}') - [[ ! -f "$freedesktop_path/$appname.desktop" ]] && freedesktop_dirs + [[ ! -f "$freedesktop_path/$app_name.desktop" ]] && freedesktop_dirs if [[ $version == $upstream ]]; then logger INFO "Local version is same as upstream" check_unmerged From 9db99ccbd8a6c21d6fb7cb674c4ab9411b7fd087 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Wed, 31 Jan 2024 19:11:12 +0900 Subject: [PATCH 13/40] fix: print message when adding record --- dzgui.sh | 2 +- helpers/funcs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/dzgui.sh b/dzgui.sh index d73a8fb..550d4f9 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -539,7 +539,7 @@ fetch_helpers_by_sum(){ ["ui.py"]="ff5b691c3fc7d95c8f939c36c6c52f1d" ["query_v2.py"]="1822bd1769ce7d7cb0d686a60f9fa197" ["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397" - ["funcs"]="b2fd8cf2796e8511565b00593708cf40" + ["funcs"]="8efaeb3cbcf18609689bd5936b985183" ) local author="aclist" local repo="dztui" diff --git a/helpers/funcs b/helpers/funcs index e15af0d..cc0224e 100755 --- a/helpers/funcs +++ b/helpers/funcs @@ -737,6 +737,7 @@ add_to_favs(){ ip_list+=("$record") update_config logger INFO "Added the record $record to saved servers" + printf "Added %s to saved servers" $record return 90 } remove_from_history(){ From 58f00d3c4523136f9aa458de9e4096cc0793d921 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Wed, 31 Jan 2024 19:31:30 +0900 Subject: [PATCH 14/40] chore: update warning message --- dzgui.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dzgui.sh b/dzgui.sh index 550d4f9..6892934 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -130,7 +130,7 @@ test_gobject(){ python3 -c "import gi" if [[ ! $? -eq 0 ]]; then logger CRITICAL "Missing PyGObject" - fdialog "Requires PyGObject" + fdialog "Requires PyGObject (python3-gobject)" exit 1 fi logger INFO "Found PyGObject in Python env" From 8d740e51c52fd2e4b80ebc938f6692b167cf8021 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Wed, 31 Jan 2024 19:41:22 +0900 Subject: [PATCH 15/40] chore: bump version --- dzgui.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dzgui.sh b/dzgui.sh index 6892934..3158a2b 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o pipefail -version=4.1.1 +version=5.0.0 #CONSTANTS aid=221100 From 6a2edc09299eb9f674eab78fafaef461270917c7 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Wed, 31 Jan 2024 19:49:29 +0900 Subject: [PATCH 16/40] fix: steam deck flags --- dzgui.sh | 8 ++++---- helpers/funcs | 2 +- helpers/ui.py | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dzgui.sh b/dzgui.sh index 3158a2b..42fe817 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o pipefail -version=5.0.0 +version=5.0.1 #CONSTANTS aid=221100 @@ -536,10 +536,10 @@ fetch_dzq(){ fetch_helpers_by_sum(){ declare -A sums sums=( - ["ui.py"]="ff5b691c3fc7d95c8f939c36c6c52f1d" + ["ui.py"]="fc25d3882401a1415e3287262dee6bfe" ["query_v2.py"]="1822bd1769ce7d7cb0d686a60f9fa197" ["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397" - ["funcs"]="8efaeb3cbcf18609689bd5936b985183" + ["funcs"]="1ebd92950042874aeb71500d3c1d8e33" ) local author="aclist" local repo="dztui" @@ -631,7 +631,7 @@ find_default_path(){ -o -path "/sys" -o -path "/etc" -o -path "/var" -o -path "/lost+found" \) -prune \ -o -regex ".*/Steam/ubuntu12_32$" -print -quit 2>/dev/null | sed 's@/ubuntu12_32@@') } - if [[ $is_steam_deck -eq 1 ]]; then + if [[ $is_steam_deck -gt 0 ]]; then default_steam_path="$HOME/.local/share/Steam" logger INFO "Set default Steam path to $default_steam_path" return 0 diff --git a/helpers/funcs b/helpers/funcs index cc0224e..e60b067 100755 --- a/helpers/funcs +++ b/helpers/funcs @@ -1,6 +1,6 @@ #!/usr/bin/env bash set -o pipefail -version=5.0.0 +version=5.0.1 #CONSTANTS aid=221100 diff --git a/helpers/ui.py b/helpers/ui.py index 1b4ede9..170e382 100644 --- a/helpers/ui.py +++ b/helpers/ui.py @@ -16,7 +16,7 @@ locale.setlocale(locale.LC_ALL, '') gi.require_version("Gtk", "3.0") from gi.repository import Gtk, GLib, Gdk, GObject, Pango -# 5.0.0 +# 5.0.1 app_name = "DZGUI" cache = {} From 2b71af1e2f3a4fba89a7a667df71823abdc849ba Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Thu, 1 Feb 2024 05:37:01 +0900 Subject: [PATCH 17/40] fix: restrictive exe search --- dzgui.sh | 6 +++--- helpers/funcs | 4 ++-- helpers/ui.py | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dzgui.sh b/dzgui.sh index 42fe817..19f3101 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o pipefail -version=5.0.1 +version=5.0.2 #CONSTANTS aid=221100 @@ -536,10 +536,10 @@ fetch_dzq(){ fetch_helpers_by_sum(){ declare -A sums sums=( - ["ui.py"]="fc25d3882401a1415e3287262dee6bfe" + ["ui.py"]="cfed457523f8a38859762629e6bf79fe" ["query_v2.py"]="1822bd1769ce7d7cb0d686a60f9fa197" ["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397" - ["funcs"]="1ebd92950042874aeb71500d3c1d8e33" + ["funcs"]="ca0ac90f4725e5c6db3dc5703a27e612" ) local author="aclist" local repo="dztui" diff --git a/helpers/funcs b/helpers/funcs index e60b067..8cd9a33 100755 --- a/helpers/funcs +++ b/helpers/funcs @@ -1,6 +1,6 @@ #!/usr/bin/env bash set -o pipefail -version=5.0.1 +version=5.0.2 #CONSTANTS aid=221100 @@ -1227,7 +1227,7 @@ concat_mods(){ done | tr -d '\n' | perl -ple 'chop' } is_dayz_running(){ - local proc=$(ps aux | grep "DayZ.*\.exe" | grep -v grep) + local proc=$(ps aux | grep "DayZ_x64.exe" | grep -v grep) if [[ -n $proc ]]; then echo 1 else diff --git a/helpers/ui.py b/helpers/ui.py index 170e382..4069232 100644 --- a/helpers/ui.py +++ b/helpers/ui.py @@ -16,7 +16,7 @@ locale.setlocale(locale.LC_ALL, '') gi.require_version("Gtk", "3.0") from gi.repository import Gtk, GLib, Gdk, GObject, Pango -# 5.0.1 +# 5.0.2 app_name = "DZGUI" cache = {} From 7b73f5c195a89f21086a17e39844ec9c3347e408 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Fri, 9 Feb 2024 20:01:13 +0900 Subject: [PATCH 18/40] fix: var name --- dzgui.sh | 6 +++--- helpers/funcs | 4 ++-- helpers/ui.py | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dzgui.sh b/dzgui.sh index 19f3101..98d7b1f 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o pipefail -version=5.0.2 +version=5.0.3 #CONSTANTS aid=221100 @@ -536,10 +536,10 @@ fetch_dzq(){ fetch_helpers_by_sum(){ declare -A sums sums=( - ["ui.py"]="cfed457523f8a38859762629e6bf79fe" + ["ui.py"]="36b9ccdda7561e129861456e36dcb5e0" ["query_v2.py"]="1822bd1769ce7d7cb0d686a60f9fa197" ["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397" - ["funcs"]="ca0ac90f4725e5c6db3dc5703a27e612" + ["funcs"]="3fed32357ed35127f0e4055ace0c9c94" ) local author="aclist" local repo="dztui" diff --git a/helpers/funcs b/helpers/funcs index 8cd9a33..3eb1aea 100755 --- a/helpers/funcs +++ b/helpers/funcs @@ -1,6 +1,6 @@ #!/usr/bin/env bash set -o pipefail -version=5.0.2 +version=5.0.3 #CONSTANTS aid=221100 @@ -36,7 +36,7 @@ versions_file="$state_path/$prefix.versions" lock_file="$state_path/$prefix.lock" #CACHE -cache_dir="$HOME/.cache/$appname" +cache_dir="$HOME/.cache/$app_name" _cache_servers="$cache_dir/$prefix.servers" _cache_my_servers="$cache_dir/$prefix.my_servers" _cache_history="$cache_dir/$prefix.history" diff --git a/helpers/ui.py b/helpers/ui.py index 4069232..f21e6ee 100644 --- a/helpers/ui.py +++ b/helpers/ui.py @@ -16,7 +16,7 @@ locale.setlocale(locale.LC_ALL, '') gi.require_version("Gtk", "3.0") from gi.repository import Gtk, GLib, Gdk, GObject, Pango -# 5.0.2 +# 5.0.3 app_name = "DZGUI" cache = {} From 45b39ba5d4a7ca656b6e964416e34359510af20b Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Sat, 10 Feb 2024 18:32:50 +0900 Subject: [PATCH 19/40] chore: update image --- images/example.png | Bin 295831 -> 460709 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/example.png b/images/example.png index eb874d14154f212083555d392474f5012554acd1..307293dfcc249360fb0ea03d4692ddc8ac893d96 100644 GIT binary patch literal 460709 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 z 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

A0Nj!@K2!4Z=BPT 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

lj52xR5`tXoj4nu4}hUBrQg10M= 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 D{;~@a literal 295831 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 r@a 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]?379!59F6 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/p@(aZ@LcX6%rYx?sL zH_YR}#DOipv=q=;bH!qRmF3D)fAEQsZ>`d>3c(`qW_%=II^%>R`3zJAm`0=XLaHl- z@*oyW(<>S-+3yhDa$fJxwM$027MI>zY_nnYC$Mh7U02X)UA`Q5>~m?yuA1_0p1N+3 zm2sXC$s^9J?=**1V#NlAhU~z9^7~o@tDLsg!LXfIB}LrFI!Vfrk_~_yRRk}urGtYS zdob)EVbX-_b7+uRMx8+@Kb7X1bG2qdciIl_q1xPrjd7wqi+ATfQXhE1@H4 zHNj{CjXoV;mMC9z8PV02N12C{l8~@^`^zVtNfqk5b9Kcc{x*V6@Z7N%V8h^ghr#{K zn;?wC@n%pbeL>X+5VEK{K<6AY`<1O7q$^7=Hs%7r3{xyXy$3zWJNpyIplt6wiv&Oen?$o81vfT+#;zbTZGa?0e7z9oD;qoyA!gEx1!NGL8=owZZRPrV1{CaIV7{+(y~p zs9`j5p%`>1L`UK3k83kTrw))F5?|D!%3ci;TNVe+E#Bh{Mk#&a0&ST-VG^9245hTX z9Xsmuy?L3T9AcB|Ajd$00u&nsy4vy+nbDkz{CpS&Vr;1VffEgj6l1_TOiAJLB3#b0 z>7;U^?vKuEJCOj3iX8rg_yT6dwQln%o@iP>28!E@i_T$+JJ+mW6GB5lBr>qrzury1 zZkOR51!BC0nTuagkQLZ~ii*(*38H0JnKT6Z#X{K@&Wt_L@Q<+uxO>{`UbeTFyP!xL zo6>p`$D<%$%+AapeIg|x1B{MV6T>NINFYE_hMzvnXz3zCQShQs2qnLyOGzv<|Meb| zdZC0#by1OMa*pF*rOa;QdZ%`#nst5#hq$?~;dle0+8NUj>06~YkCJ6O@CPh6w5@Y< za~G)|9!BS8qetm|{|M{%xj7bQ=KKy`tSQCYpCnpSSQ2NsMK2ojv})c00LbP|q?;ou zbcuB84ER&au%m{x5VU||w9%oVkK4wv2~Nro(i1qQA!GwB1MU|Mkv6p+2UhcYf&Ts! zWMq!hpSN5+VOmjUd;2FQ&5V4gjcP^vafmMbV9Wj8m8kZRK0d_AIgGym%4wsoUR+ z7vh28xxQPXnz=g~yuD5#?;MR;cLl|BkmCUVLzma&(#EKMFz{Fs9x}xygpvrlEfvGD z1>6LLy3KHjlCfbk;R=M5A7z@Ktd)gDTtb2h@zGA9z3wP%e#S88?^aqA%I>7d;aqJ< z@}tPcwb|!dCh$9CQZC=CV^gErQ&Bl-q@{dMy!aRh(cn>mX>4I}sQF!+roM|rjc26d zCbkP&T7XmGL(WV|**`R7;9mbmicY*^+dD(?#}#VoV$8E4IZ?BF^>=?`Cned8ArEwS z%Ey!d@W2lRfZNa z;k2VD*C~WZTy*tdYDR?1Jym8oScJZuefAOs33_Anx_Ao4^kv~_?wX+n;Ta4=+!@BvaQ*WGTkFP{1aG-A` z9N!zumTh&s0v_FIRwv)G#c8781JGZb1q{a&RWYR~cKq>3fx~$?>{9HFq}$RM6GCj{ zBY}T*y$+fHh`6l( zpol~2jB@f1ia2m37bhn$F5H26d=o;WmIYs9W##35uN`on1J$JG(Oa^s(2TC$hM)cOkH+ltbks7{vpw zMti$GxEi?bAM46+a>5JktbXBxGWZ~bBqUVW49WX#;kpX=Y8%_<@o^_~C9idV%pJSM ziU$@F(XkizHFoNUZ@`B1)o^QO1JEJ8kM zp=Zkd&MM*l21y8_NMXZ@xYq+988-kpoYfM1A`G1_04(!q>}T1!lLT} zMFhf6LcI>qIPMHRs0(3X$!h7abvdQGPAhY8by0WK3^OE@0|3o1q`{c`@ZolFVo{Ge zejrf_kyF7q8IKUMX&8KS6%A*fHdjft_BtmR3D6JQ8^(KyiEJ}r>6)1PBmEH}oNI540bsIB`o*l3|S@9w=Y) z(9q*N-YcQ}dx^<6zv4CQYM|f;!oFk{^#Y3D>3bZ#FDA&PBA?vFv#R7VA*JSk*t&@%O4(>hWf& zrC^k7%|Bkta>YQF@#pIl>WNF#h9b(@4Kujci3Bcay?^&tc{Mbg!ux`kPma1PtcOec z?v_VwPZJUCq|a1MbCl8n1KVle+{c5GnShpPakgU=Nti-nUEyT?^A!OHYKd#AN6L_J{Qhg1;K} z<9*An%1AEvBAyH(cp=?&J=84WhDn zCGI-#bGco(m<9bZv#rI(_PYr&o~#B1ejaxolu`Hs;^HZ^%drZN8?iuu&E~(n2RZ|5 zyb!xz7*fd`IQonRcnHDeCP~@k1zP$7lwD#=(t$|@__1P{&b-AZ$GKy6bf80emfFZ$ zr~m6FdG5bX0f2Oh8*w=}yl-`RRFd zB15CY!vjyQ;%~!Y3oqsCn|BQ933!Mm-f137nmXP_&FJEtylg1k{Y~lm-3QP%h&X{_ zMX+Gdt9+KTgpnN%-V`OZXd{Wo-JkR{kO>MsXKY+tL19-H)D1yMO1Zh-W_o$YE*1fg z?ckJ!&OhM5CrZ#)OK*?On&l*u+XtFX$@p~%W}BCu0iZfV6bAq(fa&h7vs|$2L?yo~ zpjLCHMn4A=;1(h+9?TxXL=$Z(9(zQ@2Rt(jN*l+b=4iK-W>b<~d*`~N>KsZgXsNFkC{X0jqPnUTygLiSdnkccuW8QDUpkWp6IGBc9Q zBqghqjAWJX?b#XcbKdK7eXidhzwh<+$2px&@p`?Uk8!`>*4>HDh3gQMEszGm$>^X} zXRWQf{({81T4OVPmC-SoRnKF`UJ$O^khJwgf+wa^l&?A8$akjF+5WPU%=F3$U0tO< z-KJi(xGjE9MuT|`kVaN_y4+aizyV7iErI0r z@6bM-Ki~7|8(xb*GfhrF-(mi*XV<1h=9y*2l6{Vx?YF0;;_ugo#}{WO<|QDq($M`> zT(#V)<7q0;hb0FDS#HBtM1?X+`Nkfd2Qvce;}bhZTv zZSmeZM`KsF(L^n`S#R~PKCIOKA+*EVebCq+7MZqf{>TlzF=#5lfOf)q>(HA>WIO6| z_nC-%CBwPlDF5?Xh(5n|ibEtswC~ zetiw;GZRzeNvd{1VFZ)RJEqf@_E2lZK#Ya-Fr3lodXQ_6dZx>Te*$Y&|krn8=~E zJOXQKVb-jS)Q!uQ24gUHK}lpS!jumT>6vZMQe6!wLO%MZB~_Wn1G>XSy4B^0H(j+W zso|S2@vGizj|SJ`7XCijhryBEJw3(!4ktgA9V-AatEQ|B$1Lum+4aN+@m!<`6Z>;8;;psC)b=(80UzV9c7u)~q` zl4JJ!cc^NRK11qf3K<6uSIm=G;f=2ty|Z~?uWjKH-cd&Tsgoy>jbAf74IMV1L0zMl z8V&Dh0Ip2J4?kZWSkJ8G+WF}ls#Bz#;nJJmE1ZtY4z*-wXGDe#F5@D{`n{^iwe*?! zaIH=RS;gYwjBL2mG*k|A(Q@wDgZ=?0E=nLNpA`=ai-4J0JOt!g+}8n`0->DggAaV$ zdi!bIzMbJV3LfbFE>=!q$rl-aT7W0#FzZ#&wVOAilOj(+yLBCad^A1sIn^&w>&={q zJ(*;OsYW1cpbkN_dZ7r;c-*PD!m)db_G&JPkFN_Dq!)~Px?Le@PWv=%4PXr1=G>lx zaG&lwNXZ_q3^WvP4V?@?CK%`dnW!GE^~}zXRXh6Ca1PL!o#&72V_Xmoqdv!>2b3Qz ztNLoQ0afiwqwE_wHgpz z49seat~WF-w5|Iuy5s=0+TI@Kxiza6&{DrLIzsad)Dd2O?#a@b-5#moXFG5#VO+)r zUyVD5&97&VbR)+SN-F3hfsrbfW@cnneiV}EtxX(wgw}GuZo~gkW5b&?k;k*_+d#*)D zUGw#s;edqY9rFt?jTsY4;v5X9BkMmF7#7w%U58Q&NMqP-Nw67C<=>z((Z%eWi6jM4 zZ-+{0D3tgyeHM6ZL4oTP#r!8XQ{7x#roVo@dhHr!k&R)+L;DS7mHP1l!6Vo>plJ8V zDYMcnEG;>LGO7)vf?|95eF(o82YxydB2#IJ2u~fIXTv`<8?*7wpw#SvAs4QLjCY)2 zXn0^z0xLgTOzw9$58xqOD(DtwQq(v*Z3|H_*0MLYw@)F9(R(8Oc9OJr@G1B^{-Y9F zaVovjlo`l+Kdf6i^1yqKdmi2>GS>>12XZ>b2U|roE8Gq{8t@ zmZ^C@r));g__(TGO5kKcGAq?9dJy8>ROaxwkee9TvHw6peBq0gF2fPhDz7?0!89Dt z0dj2Kq%)SUndDNAK?0o#o||4?4QWYBltU8EZOL1tliT&zh*G(0ci07B)m~=BFnhlND4n}Gt9cUN*q!ZUN=DDDzZjEw3aMPv zB441402*|y(sJLyVAiXsp7994lQpMqc=0p8{@$r`H4Y>8Hs_Jpvu^dt@sDM3LkoGY+@Hz}lR zV`?cy3k$g(@xA|p!1=9C*DryyR3aEe zEA;lcQd4!?<__4ZN=g=3R;O7&&cgQAX#3)Zq=KaLczU(i$0pgmw+T&~CBb7&e*O$H z3Q2_RxOQ4v=DvP?@#!0`DuDADPZvwNn%Sa**NXWrIpo+c^>cbFV^SQB8dcTjSQ~1| zMvu;Vl_w1<7v#IztL5jc?bJf687G77#5MkH$MgzQl&Hq__x)QU*IdX&M^4r-2u z=CJ2mRZUGOG(~+^Q|w*p=>1n5{caCK1!!>@rvXm&8Fm`;%Uzd^Zm@sij9fcO=b!qR zn0q)l2#gGg6r9B4~5Py`HXWHJ}=Y!vKp`n;*!jTBj(%l_PT`8^O z&&^_eJ#jek^-N%Wqp)c8Mf#x^!61{;I+WK-xCNS>JgQs1Xh+=P?cC=KqA|CHD@tW$ z`dDrc!W{jpO_v@(+C{o{Ekr1|eo+@js*IqV-XfP_oCJ+Nk}v??Ate4uNeKeLk<+xD9cYCL3zbQ!xxJ{i!nz!;oag(XsOTIL#PCQRvH45 zgj;{_UMrYDo~|ADz6@&^IUDp`Q22nd0gjbz$Z$;o6&yHv0YO1ChxL2h@=RvX)qr1s zR1!qZ2PNetmmup6)a4=!M-I_109S?H3m*(pssPl18hi_H64oEgA^;={4e<)@ALAMX zD6T2J81R^9z;=X2)shz|Q$vrio-4I?t2PUwDll4rjd>>O{n>&upJ*b&EzC!HV@?}w z$Vfv)BugIa^Fl7WHC+63J_DPATXCp*Qv%hEhOGPdVIITlg6V)Q8Qkg-1%-hM@Azrv zOO=%}a@Owdw5vTmJ?BB;ZT0hlZ302>eDv@E3UTW1({ldeVo?|1>Ysl4SfnTq4<#F< zCKiH-{z92g^dT@?+!yZeQ~9Fblr7VEAU66^g=a8P#%)w8#({j5bya+kMnYDJqm96!Uf4v zQRfn~lc#hm{@4=(i5CM^i{Yn%sF{heCyS zl0WO8q`dVxGgzB{RnX2|!-51050o5kyRp&Hb6*Cald=66ig(OOez{=FYeQ=4EkDuP z0iXE*q6udU~A*qpF(%MZ00g@JftBf zn8LR)-BewWA*#EfVFPwj;-R10(!DfJxOz2_*dODf#a@D6A}%JTDrx(1km=JK?p9aJ z#upTxr8dm%wGC-$-Fe3Qc|>}ob-<OzgOqwrSYV^h8{xVb)0! z{aoksN;s0)17HGDbaPRMDrX|;FgewxO+aX3jc*5-e84MI?!i=QFjeL#oD>wuJjqWZ z<1IC__w-LOru7t-{8-(&9oBaPj0>@{airoT%h-FTRT#szMNZK`GKYy!WE(a-ADIE| z);42xe6C-1cQ~SUQjn$S+Yd!H3QF+H8N55x^z^n*TvH;aqNaus34L_L`&1_n6%|Uk zaf~d@xR5^ewz3j|j*tdIE-WdpLh477+XO=_B#64Y(HPwWIXQ4f)Y|ZVf(TLDd<+SS zrq zqi%f$Kzv{ojjPc5!c`alP$7KZXd`S-5H8D+qv~xMnE_P`K^!zwT9lTtYT#(aU7yVz z#mlBVSp>HC5tMkKV<-EB=X%DeP&Q#vh_qS%p}!@Fla+w>v2A2#K5IAcG7t;c<4rnN z7;aoNd0~Kwc3X4Cv1f)@we%s^M@`9oZaYWW+iwva_4ud|2|N6OMCF2n>`@6g!3Q2D zTPFA$li3$4j*ecp*!eu79E()|?WKSK>^-oujD7iXJ@+Is3zu_Om-s`>#=GUxkSu|0 zB~1A?%t0!kkn~P{ef@hqpPD-T>`m|Q5b3wPjtq2!AADOOwd@J}5!tiQ zBf$eAGwv>d!DB;JYf#tB^{6f~KU^Qm*xz}Lxn448geooE%AWKGU)4Q5Y;a&^@K=90 zV!eT>{)814aPS`s7#QL10JWVoqcJ8b_)JZg90a(y$k`%q-h@=XF~}n%OowMr^5eon z1NRdGqc@Qrf1!T;?K16#|Yb=h^4#x9E3YSJ0VS8shjiI`3njK^ng_Y zy&He|+)KO}>E%h`*{-bxj-RaWHrKxrpmeTVKMK8s@9KBoVc(Ft_YmBn28&Yp27mWW zvyr}dc0`{uwdNuB8AYDR+p}##NOtJmEVE*|^sN8j+6Ha(UWoIGjt)G*#mNa5U&M6R zX@DvytKmG{Q=Wx7AC>8f4@Wl7dVfDbzuA6eexvzAj#R-EmdCjY6a~kl=qtxwFi6;Q zs8<$?pKNltwW+G{Pu1+s3Rm-gvk*a$5hf9C7$?z-7#jAg@|U{<#w+aO@;iK(Mgdo{ zXVWae8)6L4)f}E3|){! z$%yc2jL|}3r;7`<-dY$gCKRZL6KiJzI~rf#4+`~)LVW+$Yd~34b*uaWUAhdSMswfu zY$xgF9T?+*&kMEoYQ0>2U*7sbb^p!x;!+VJc<_aRD)gXG0mHmsZtUc! zAjZND(aF*<%W6z=GCT%4c+YN?6&2d{=%qi@J{2oem1DR*&hE=-_6HLV-Q#5 zcJo>3I;YYP-<6gEalaetsLqC&Q(HiFha^@Eu*m8{PT=vjDVWiqmBCOLWEBtYR=L(8 zixoC>eDK3OS-nex>yUnci_S}qwC~o=SyA$QbQhFwSfTmBND5rQPjK*bIt1D;#raDE zI3zBm_5N&PVji$%z=B-iK5@%a$jzvM>x5`Vpw=Z`Q2{u4)o$owhhg;F%A2=8-VlLp zjmnd)#57`PU#tRd;w;ETZ}dye>NH3h-2~SZbII{*haicNpY(iX9znZFj#7r;)=u%j}GG`oa1pJd`4#M+vjird;ffsd2^2h3^ZN&3(Kughsef zmw8?cBND0A&lnty=UDq<+ng7%0QPmz>Pq{7Yi-ZQW4o@0 zg+Yj`!AB2gkHcWu;4Ff%YQX=io0mJT4|%*CaH(@jC>;KB1~1K~P^o$S%w zyUz>__#$$o0J-6m0V9G%hEhQ@Nh;-mJUCi9cqPe?pK;<@MXQz}3*YnSI_S=iwnHBzehKfP_`2S28nq}`Av<{I(vxGKxi6KGd-(bf7tT6tkgGZcTewkrE?yOkVwv}8IU zDf#L1XZ8C#j1!!tt(~;^L~XVc*>e}?`>Y_|=zVe)380#|;hR-&1i~RTV|WS`#OKe4 z#Kf#~PT}nNrN2#@cI-4YGyfpY#i@T0Y6Fs^3bHz%*y45ZB-fLXNqNo$%zPQ%R9jM$ z?Ks;rgo7x_E@tx^qqPlcv@>lg-z}1x@AkI~mZ{OSYU949^ z0`BbMMdrNgWVsi`-pZWWPj6JXk!=p0E2KU+ATYXvki6}GryCAI9P!$p7uR-Oy2Tcx z@z|~GwTON%gQufcV*wrFXvo=Sox9ouLV24W9Q37n=(=X8H1Me~(~)Gja@6xNnuNb3liOF8=L%PtqyT-ALU@4W4o`7lTYkD_EW!()bu-5f-RU>FGtG zC6kc&IGNf*iW&$GTNE&(8?J*SAZ)X@ZmI3825OPyu;2TPeCB? zaV_AUR~1qLxP`Q-M3XjDpC~zH`&*X<9E6Z4TF|G}dZNjJ4jfc0l9W0V9p{Fxw^rpJ zVHz0vwE~nNNc9{_gq}<~xpL;hdVnwwjmwdML@1Bn+KOtQy?XzhfWS^tSsH-uDD&S2 zm}iNnHhx6AEVauC1cpefRjmD$>M>#9W57T`&7I!YFR!fJ2tTW+v@~YpT1<-x3{pEi zU_(Sc#B&4r&tpulmmp8Z+WgM{r4Kx0zAXAGp4n1asJ(;p#;iT&N_4V_SPM2F}`d-vYgMJJynw;_6_y($(~M)I8|xb%b;vjKRcYq}dPai=I7glRQoj9_Lk~XL zcgxN8^b?1}`I4XsQ1XDju3o?HGnRNBivTSWxMqM)7|y9WAB#!6J>4*)WcYlo-T>DV zS`DlWNIS6(EG}xcVMqW7Yt(`$XE2_kqD32dIb*dcOAMh2z*_ticsgVVS*t-pEA3lEMiD<$H zgK`MF0Wn{8OVj?p4zF`6{%aHL2n^#Yz#`~4!4)DrEL%4Vg(==N0^xPD3Nt)3(lJm0 zXBC`R{QOh6x963+*fIiZt3Cu~W{#nD4OsmQ2sk%*&kxI@ICe@D?a0wp)PYu@{xVbp3-(*{DF7iCY!}TYKpVHn0kHzC1D`9I zEPC#RV#UzW zFYChhmPhuIzeA7^a9#BESV~BtmSM-~O$@6+tYK>OVtIn+eCh z>_j>@9bGz-y1xuGdA$DGeDl_=f|8Q)j~}ssF*ghzYp5*c>-Eib{IQFX8fGIB_x8t^ z^Y+2!Eg-kmRoxpstX}aNy>9F!!!9w-#U{GZ@Tf$suv0+7q$9fkN`||Hk|7T;$d0gj zB8CfIY&7K<6TNU0uG5^w1Q}l+44?u4j1{_YO*iXo@J~&IT{Sdw_2M4_RHuO+Xb;I}YYd5a%&|HdJW+M<3#eV^0I| zpQ$UkcTX9ya^7a-DYz7X#B@%Dg;Mcza|5C42k45?6LQv`o~0NsjhSJ0Utf-|+9C&~ z<}hz=8RmrG3xa9Oh~+|D;D4qGw?z~M1s&1Qpe9DY!eEbU4pV*LTa9DcnaXnBe*N`B zFNf9_8;Un;clftAIt`R;F*$aP2D%MME)XtIOnz{`2;M%V;i;VeTn8* zy%GYYZ1f=qod!c!9RwJV{taUZ5PP8AH$RUyCSXV+a|o&MX3ejQ`abt5etiskiM^zpA0_iVmT-oe-+}*SwU@t|pdn zKCy)B!uN(@2?Lzk$IpL*Hm%weC2NJ(w+HtZ4UdP_ocwq4)aXz8O8I#SY71mVrIq=baX<3g(v5mq}1f|xS`cJA93ynn#=^B2wV~d70(4JnSUHOL*x!8B%G`} zY{+u)>l#SPF~McBCCFz$kUHT+`1&!!KBxPTFXMP$9WnV?7pH{e0jQs_%Af~5bf~;r zE~n!#|A`H8Ow?;(MVU!FKe)Iu+s?=zcVUY@`^&0sSA-D69Z3?bX0mCVz54X2WW{1< zlH&Hfd8k|fF>v;b%}Q<%->hV$Q2U!KX3J&Zpdob_x&xEY=(&NyPObtQAd#ZwaeW-o z-yqhWnVW;69OqGYh3w0FYh-C~K!baUG|HYZOVj(Sz>+<+OP=}>iRz?a=qHlp_|?lB zX-KjKg@kHKK5b`xM>1?^d!X#^mNS{JgHnZ+ zyne{rLodxR$Ji{kcXPSUPHWo)+mC*9{vCz|f|(=-!K|5XZVMp^qWH9!=${aDsA&B6 zbt{|J@xp#s-#=`3e7&c^!u#>{fvs60VN8gZqh?9!8;>f~_;76ZbLqkiy@CF#*56)u z-dG{@I{{35bG#;N}(Isw{@rovO(EYl$dsh{UIg%?eE5uSUuj> z@#&jwA(M$U2?_PHci*Sh%;`VfuvUK!aPpitrQb;l9Pj2kGLioF7x2$svVTbg{`3Fg z7rHF}kLLg<5VFoAEZ(#X3?=<^2AwAizaKF1?9R&WwtIS~sh#}=hGhKq)f*5JF$3cQ z>U*gC(WYg+sV}5%{OAeL7=gLJ=wD=e9TXRz_^NSIGx*)FV5w6l6D*y(k3@BQx9TN* z2siz!SGwczDEQ3_y7d1bbQ&EeMJi(Ly;^ znldO)&@2H!Y#7Ec1{9_eW!rY%W1vmJ)$=P(Hwi7t3dg~NdaN|yE?--V#I2r8*M{{N z)@1ydj_=nK>7cAJMn(2Z{>gdbvYXKCnSPyg+^^8O>Z`HeehyB0iyWe0pgc|RwWJ(= zk#`M+BVv7^7e98%LreR!fsh| zq@tkWLOXiQ{Uuwuy$Z+({Ae{!x3gza+<|#^vb9C%su{QTGYuKWJtn74ISi8B*MSib zIC00DH?0}_#10l3{(#JKwi2R-ShX|KI;BSk8C6bGB7iEV3HUc6lHN^wfHZ?qPidk1 zSsj;Vn^20#Hs79$D+_{(pAb+4E(o@Gz~O4i%ZrOpS-`=Eud@YgKk&PqUfP@KTgjXV#4_aFyvgogG; zntGe6t4z{G8MoOz(8|C#(|=7c)_xgt!z2`RwCI~Z6u*7CpM}=(F8~THpMOi1LlF?x zLPx0xn+|YAw2&y)eSKxrWkX3VCP_t4xO!X@Ep)*EP7ocDK`2D-N|~kIl25?H^enJSf3KJ4>(2al;hFc#>ix=Oo=Nu^3%||_iB$@%_ zLa;S8V)^dzuO?yuhyfoWmot{oN{ngCOb zy?v;lQM?x;#(X2f0!Y|(8VK!B1QIHU6o8M=rZ4+)8yIZkKAo8ydTTQUg=To}Y7ejQqi__*>5N ztDIjs&l2Y8va(2>5O?K}mfpptqorl`F|HGKQT#fC*gw&7g>o<c3mEGwTSa%bMbi-wF3 z1Uo~77Zr7OcC;1SHpH@H<4yJLdG~MCsy@CSMxKIosAMIQmijPnKv%1HBIMki@>IRE zMw080yIsXdl}!ed=Jv{kD<}6)ef;CM4o`PuFdy=lwdh`g1CBFH#^70fcaw$Ww~;)q>oc%~Er_4nQ;9z8I47fHi9hc~2aXBHW0q07ouoo%` zkM9Q;1M<(?U&)R^V~aKg;2x?}%&7tPU}4B&6cKwc!aEA=H(FjCe6PN`o1cd;@|cj`Zn=IFvX(Swp4Lx^EJ)|QuFo6g?5iC4SkqBOD>ksN`Z8TK|< zjiLOAE3h_?u=4O&z@#gT--Q4ejSM8FG;$be0r6m8!HAX2a$oY#xxLLlRhBP6eF(o} zC3J2WImFA)-(akla_rtQE(mbBlB}7+eWd{B7HRO_K--a&p@pl~g;D@e|) zwz{86Jtb*}oq!X`?JnYRr#)8P*i`V^5lR6mxr(Z)y5;rCdGU+sX2B=-%ecG`P~+Tz zd411EGJIiTBWk=BUsuSAuPM}=3F(7GX^R}~c8s+`@8d|E;KEjLsorRK{mANuN;=HL z5AWSG?X>$u0Z%A0vY-L3+is$!t`2HDQOpGc(JIT!cRERfW;M*2$255lE&#T~6e5D0 zM3~QX!}@x%Pb6O4`C2+k;<<%N??iy_BZP}(=gxA(?v6yR4?MH-o}C@QKVY-^FZ=L3 ziwC_B)s}@3#lA8|zRmLNG@?S9SUIYyc1}P9m#2V4<3hmW0{wX%$j)q<6t0BMbw#!r zKlb$ZEB!?bZJ|CH8vJC&)kyJ827kZSe6VqsxH}~YiHO)JsXWf;lw-=tmo6U63xvdj zoNUep%}`xQ07~-;(h}-~Su0dg!n&8#*Cy)BJ;3%xxEGo!S4=w~*ogI4WK?xeoQSPF z0sg-|&TQ#DGBEK?@%67NU_RZ$4ob-Tz;m~>+!Hh+BuzTmt9d73L-;R|vq=2zUwJg0 z6YiLxgew8#!he}6GRhG_2)=+TSLkSId*k-X(!c{hI!g@W#ChM#5=?`I1YL9qqIZ-zc=-54+Pm9~rQOFt z{vE-d1Ikgl3bU9fMz%TmTe53MFWH2n*hUDshmFh93(3Yi4qs6b=0Tjukf4Y_xxB zo||ux_;O+r3dPUpqO!73?-vV;AxdzAB)3;0+MfC&V5x;pO_?oZ;faZ1+u&5bxH8@F z;YcE?JJdY@F;-3ms9!!y0%(kjCoQ4JFpWlzOqQ0Oem@@{F|v=|`{>;8b~YVtZP#}- z>t@JmpFJbnWyhN#C6_|utCc48_}uzeKi`k9tKpgjB$U?Sfj?!Rh@Czq`mkzy@c@Lo{fiwt8 z+T2`zIpxgGcRLwBXu}irN2m9XsC@f1}Av5`%t zA4bE~e9p#ZqRMYAdTIp76<7XnaCR2(xqjpFdwx9_zaXQZ3fO%uG!)^?AXT=9)Zyi+ zsR6YCi27m-BzPWbchIpydqxjdE`}kxE+_$rCktPzdPi23GEW z-vY>#H%bM%yV1{|!)SmA^6cAp;H|F;bYAwp9d?w+hQLt{H1yW3t$XYCzxwnI-Y9KC zGi*4pMTw1-l@&ze#ft-T0<=4ta2Fw05K)ut0YBSU7iGvXJ+T6BD*Bepa}9-an^XUj zc3M=nHBcvj1po?}0 z7uoOW(5@Val!Vds{nlsQCgSGSG-Tm%ao{puc6UR71D5>EK3XyM$)Koz3AoN_;%twJ zVSuy{NGtZy>>QHua9tpr0tT84J9o;W`2qweLNHuMDt7WNUl&6U;*Z>kFrWF)wNCuJ zm*hF7Htop|0t}8T2K~#)5@$2ZXVy2=1aObw4%@#U2A>-PbRnCS1}c3qIeE|i{nr!v z*mv)S;UCH=8|nd_SNFZGeAD;}c-XJ_KYMKW87e7kR1`Ydp1Zm52!K1xsKx;K2LEpt z@M6k$^}_LZPFhMN3HPE~)YF68#HW+_E89M1JMv)ws%Z!HuvmjAM-R zDa*8u!>_msF#Naw8FD|K} z;`%)pT6|Bf!KKLkLw91&MO)kL$oI~O)nugWdjI>bvbO6e>gQEDVKs?eWnY7&b%O0J zc4CnQfK7*$g*G!%euVPM`^Io~G~hm*!s?~0lb3qtINRIOMdwoC;>0}+bs zvm#cSyW#E2U37Hc9wq-!W2M0aV~p#7a(j3TC^gRB`o*_T&tsS>T7tb$Jc_L1)5a+X z&wa>te#mi&+%+iK2OcOTSK?u&H$e)lxhsZv`nZuXBKGcGLVOBd50?d6^Nd(%tY;x( zMbir6*YoR;ABYazrn17@CGL(NP}J7mDoX>N?40c@xiZb*R@Lo)NpC)w*ww3?)IJ84 z^^i7r41Dp`$DirD*7!vhvsIkeAzH!Nn~UYbc(qf`!Vc-dWi`emv4WV1qVXs;ut{vs z#^X(6TOP;qq0e2AC$)@!gg8+J1qF{ap9^B4GKWqh~I&GJHST`|3H4FMVnIi_Hm&&Dt_s zY`ggGGqTw3YI8@Q0Lh0^9{DBB8*RI$zkNfT<{O@@x>#^-9aDwz0F5C*K0-Afq3y$^`P-Nl8-!7!FvG0ex0 z{#%IihJJ~EAL9IV-^)2tvq*75SG`W}m#*4Ammy{Q9nbB(xv@pW(pTKQB{fl*|v9eOPSV9{sLU)UyTWyXP5uEdVP&f(})L=3k7 z-^r4bg}2ql1qhb-n0pK8q#J_J9^E5NZ+*H zf5O;?y1bSEu;;xn3FF4DS%}Cm z?1Xv$@w2Sm7IK|xD|Nduv--gUN;V{Vwjz&uG!fSkm{nI_FVJ^bx5z`akseSg7hYe& zeNMD_ciS#*>XSCT3drjMFLAkM6E(Fl2Dz{LUql!5m(XIy48DKKD_*(w9<(F$K(6)< z$r~Xq^*m_C5}?l~dY;77!vp0A6z&jL7`5EQ6>v32TS!mG$W4D^SPgYH3ebPeXYSWI zhGrJ=cEAyun`>?t7)nxGM$9OuzeE!^<532;>N`_X4$xPGM6=0Y`MUB4YScu3Q6|m}`_pXVXYll24`6ZhI4el_(Ue0Zb~#ASRx|E}i}F~lMSXb`IJ zn5ZbaEn8%Fr9r8aKh9nBd;T&P>Y;ziUoM^qzc{M~Kf3yMvYk73;`>4Fg;<$QI?ZcD zq3X$d%>9-PKLS``<0^!gJtEm4c@XM;)nEfp&W>jF_}D1yUxd;}Ya%)lh1D;IyqCx#R-9LFke z1?R8lczAlE)CgUf!tw!UIq|VN!y>fR0<(Zy(Q`sZ0FBHGllGeP=gw(pY8tsKyFM8sl;GcjJLwR$3Uyv2g}N}D z+L&cxVZkBY5@OD4?&Jys6D06(r6?+1ImWe#oV@B?Op{t~);-~+>+3HtSyEZupgoc! zVvqcUJ;K6Bt81QH_JcB>EYS@S$sS)#vHx0CogkAqaiR+pAx1^e5aYY3D<965UiwYT z{ee8Uuw`nDmHa&@bl|=O*BZlSetB$*QM$#$dqtypN=y)`0Ifrh3vLwwIIz~DUxV-- z!!6Yt$cZ=!<`PewChzM)y00_#-IW5LifXn9-eR&9i&VXm1)nkQWCZ5F65#?F zxS^u{TpiTT7C#XYfva$*nDY>}&x;JljzOBOvF>kW^&BViMe_ATSn|b*N%r#U|vdLKdk91M+0t#vumRh{I@RBp0 ziUXyjkpoMyuy39J_ct-SY;d(b8n>}*VHuv70Bi(31`rhI4`lyCEHg!rSXv)#xl+}+ zLGAnh{6$He2YRJ;ee(=+!+-W#6UINSiOviw{Bf#(Vj7z+-bzPW5+UZ zFsBtKc-xto6W|)uzF)C8x}%d}oG(I9G~y6+m#EfoPA`nXkp?O{RCWJ+<$D2<@uRA$ z2>pck)nhS)25vCuNLAF;%W>@tx0h1!ZnZzfy=zas)HKh{Q4YT7%_II{iRGc*-S*et z7HsEM{c(2;8wRxvyh{}oNsmq-RjYVB<@M9^{6*sP$^>^%c@$cAC?o9c>@L8dj_h3M z5R=6Z@X)S{7D{mf#fCJF2gsHJ?*TvwQ|-Re$)omzi4^Y}>k{bFXns`Rul2pFE$s9& zHuk!syi`Uth@4dVWDKg zH@`g9zM+1zo=}1Kj#xCC2$}`QgZmyy57!i4qC@ZMqQm_r_NJ5kh2i$z`?1U_A70es z_mMRkxsrRBm5Yy0O;wfn1fd2Bnbdtnck?w5lTv+ZqQxI+{XzJOBoB`mI3GGyE4oI_IMkD$+vC= z5c|-iQbRn_VgGLC*+Hp0d9@+N>_g`KXkF&A$AQ9qm4S{aDn4FyvFYW@tv~ku!1*qN z0R!Z0kO!HpF7@D{fg+lw69kC?{|4~ze7`MX!#8E0fi}C3+6Kbd99?8AIQnSY05n45 zk5PE=_(6g@Pyz)x3=qd}5oa}Myx5OQIIU1aLDc;g2SSxd9MyB;z;1^S(8wqrkn-2B zF?cnanmx9K-J+Gw3v@v#vYW4;2y^-_2rqc0>4mron16xJltYyFbIkYW-eNlvSo{^gAFN}mQzy8C zWpyI00~bEDC9td!fD;N_OabqUNKwbR?JW!g53&H!q(Tv)%wh3Z@FE)>^__rW{^Q2w zza7?pUCd2wZOA)LeXB$Fr&>JjLK88+n}r4FgF5r0PoHut2Ma7!QLJOJV%YUmuSBlP z?;+6>XQuswRnq&R?M2Ntaq>=8%#e5;CpVjFu&o`n-CeDJ9|k>%1npV-ziIB9n<(NV z_ex6cm^y%MoiBFH=pwuRH%)bW3&%gwptR2_@Uq@zhIxn4C}ppyhjWWk0}7hBmNXd@;!a(Hvb{DQo@#S z4DQ|e0L>+6%K^B4(FXcIM`Ayu=Bq9H4qj$$kvV`?{NISp6DCTPXM5)fwfXX<;?y2; zAk;YPaMBH&%X}&PPg?E(&h$T1oz)*@C^os(O7RA5+C7hQP{3GG-^7FvsKQDsCB+w| z0@&JG?yA@gWH%x!@%D2B+gKyB(84~hX&1AnFtRFO$3Yq;+>-WWH8XnGcQRq^qy53B z3gKBsI~YPRu?U-7W}TP}qN9+dSx^#EnF#fq|1&Lmb_SULutmn^&yyqANPs{PZQ|u` zlc{X*K=2CYGNFqFhYXfFe$aQwx#VclGe(sf%yS4ico$#^8y6Rr^I3QI7++;KQDzId z%f)DSHVmsvWE7Vd7ZqVUN=_4o_+Xm7pea@ z8iaowgUAo-^1i&xKSH3lm?v#U`M?ydE!RyKl8H?`L_~vCO-eq zr#~tECQ<+F^&UVPUWGTzKT2tW!or<%n!qU{pDo-G8Oe(hhP44RU_tl8hoxQPDH)7M zh0hFW(@csr`RU}B?}(e*Wqq(Qjg69DA8x*V4WK#P5b)ukULj}O;C0r4ba{MdRLd?X z)nR-^SPqOJ3m2uSP2b-$5kF@QIGjBI`ghl5CnWRHFY3+bG3sUvsjtD}66pxy8(oAq z57YB*-8wC}06eK3cPNxt@y}a(JHaaoFo17I4#KQLvw;lsa~K^{j%PeOQR~;s?`g$# zEz!ELAKfs(R%QwJtDB7SZ}swQ+Zv`MEGmk*YP3vDsQs$&ezUX?GfV{p2j~ z2ECmW=gwkIl7E5ut0bwT(W}8WjyzGptxnU;yQVg>|1N4zbNGv>eNg(JMeXFcO;MZB zk&`)9EN0y2Vy**qkC{#Avk^v@a}>ZY#Ofsv9t3lG@TxXF^0U;XW>gUSxUra*YTs!0 z;2K3!Tpcx8v#Tu z?N&ihQ8qDacpIA$W;E^(GKe8S5UPdzoy&Pc~zpqlYwkTFPCV+kaT-$Q9Qg{tp%>z zx#?-t)7ZNQe>C6I&4T?J5A0YOiPT#_Yc|&YbDlQ^)q3C@!Z^ld&{hUJ&vdE>soqjUf-q;A7 z>w_#|X6rG&-~egHy?c$P=hhM|pAxs3HEon7H54CzhDv`pjOkw3iD1<2<$Nf}NZp=7 zZqYP0+vLwa&()4A9zZg(9f=QS^h`+Mr5sz<+s_eU3gug){J!5px|5g2*EMErWXSsP zb*qCz+M@I&Y=1z?LLWGHC>}`U)KzlKvSu)#|EzPtGV@n*=l6xRI0wKepun3do7Iq) zubr7G0QCl06^8mWNk;%527(GmoEW~9k#PptJcPOk7U$s!_P(iZ_n)=!u3i5@3tyM{ z^<5APq<$Dv0DoG(ekhd}W-8gl0h5M3ZVUR^CeN@9v37&lrcu5C=(j|3T3uDeM7EWZAZT`*(b1pg>?enDLMT z_JAa=lw%%KgNLjVsw;hdJV7R)T*^X_??Mo?Gcb&UYP|r$dwCg~4|0<{TJG3O#xfL_ zP5C_oj-kI*SEr)hFex>8yG%av**ngER_V{x+-|ZMovi@`H+^1OltRBbAU_rm3iMb! zQSZH5GazO|q+Lp7SdM*GuteGvLw=zauedhz)0ab+RMIhgjs6kkrcH1}GY~Nvk?FmN zzF6*u83n92$PQx60|H1|T4+P+5E$S(*-$oi8P_m`Q^*j!%nBDOj4Xfz(A1;&CCIN; z7;`~B1FpfPpT1I5QW7IrZCmWL=dOZW+C4ru{o`RwjEu+tPfv`L{aCZOMK$KKUXla6T?2RF28Qe(f!1g`4PPsoEez0 z6lkLJmHrmA{uq0>#KN>G5IGPCwYgcj6F>nEPk*Uf=7i{ziVEp;?V~pF^$`r z;<-tmgh+OHQW7RT=j>dM)SWiu-e_v#!t+8Z$u!cuF|_CBH*eqac=22EHIfe!J1!O^;R5p6<5F@|mi)(GT>wZh6RAPe z=;*^1Abc--T4FAxt1-m)b#-0Q6pL*q#pi%Sj=(s5jvAeK#pvB|H7CrlDg1qJRA3G+ zN(6YJF%P*=09q%1p!ddQklcU-5sn;jQUd@idY^Nxj>nxv0s0!|h@#oqvu7RKtJklI zkZ5MPNTA&eDv=(!A2u^?%RV=(E2qNXrDz#Z%VhrwNE!4O*kEvaZ;?X{j3{!eQjhwM zEQ}+(Dtv?-E^PqZ$dwpg7cU<<1~UcNZ0wXT2s4c@?u;)EF&@Q>2Q{pJ5(fkB;|vz2 z{BSFADaNOl)T0u#b}x(W4#4Gs$Jw}*YP~%C)Wp;_6WejRC?WOi-zs80uXU4AhlmMJ zl+T*J%UF9nTM<{r9OdO@qm^x_wbp2MLC(+XP4N#o|B(def5`dMJkLIcDCK_@B+Xhm zPy1^?24=s58A1_*1ZvMU^kTJKogAT^jm?HQ1Ngs}<4bj!)97Z=uK zJ#)3ru8xzWfqH*Zr@%^%&5WB@>IiE9Zen0aJwNxIXnV1yLFH$uwa^gF9lL~pllu=c zh4ED$iF=Q9jIG!3C{3!ynMa2#dj|%X$>#1>`*7#TiVN#fl9T5Hj(GF3&8s~!M zG4|g$b;3_+bay!7GCEBK5G@t&+s{G1n}fsR^y$k#PGs>ttuiD&>>yDUj;;Cn**%}2 zrOG~aQzPvja|VUvNRf12<=J`t%_RB_7;Pr-Wl52IkL8(RU(AG4ho5<}GPKcJM8fF; zA$J_Jdqzxa*`ft~9a6m_NH)-6_W+0bncBk%s;TyQmrBj=pOIl*$n!Nv^5=svu^nGC zk`E?h*}JK-c6&lDU+sAU=Fu+OZ?<~AIYU)+ZzSq}y~#(OVeh4yzb@`&u%@-P(5QSN z#1vNK(`M1PuKU4hf~fF0$xJ_GJC<-_Y0@I}3@7=0dAOG%K4o1Wb@*r}TWnJ75aEwuywd1=EGpi&x8I z{)@u=f70S#WrS?}Z(m|Not3ci|MsP^fiN8W?dwwK8Y_{%{SKT4?hrBl)9?NN`R&R| zpnCSf+-nGavrdH{Fl3>r*{Hv|{gF-EnXnMYFul!je|*+eUNr`7))0J0L?CzQNk7#^ zY7&DrSy#{y>GPd)aWVKDoZYc>iN?5UsWL|0JfKxdkwyW@OUM*lOzyrs-tF;i+^#Y9 zz)RvYsbc!dNsfP)T@w5B;~Ap5Q1U@y@Vmgj?a6I;+~CNHH_Y)t){1RUoe+pW6xvWm zqW#6Ohd+rhJlsZoBLF8V;hV%?hp;?rpMT|=^Raa@QMYdcuK??Y97$-lMMOp8GMkX! zH#b-IYjE1#6>caaoGZ!5&H0`V|=!gLWh^D99_FvS*oE@|fcAm`n7#hpL$%z1J42{NdidGgMCPszl=sxW~F-)qc37;y? zY(x~{c+e|Qyq>eZP9i@xll*e;BP&g;ebDZuT?V;5=9Ub*b`@n7QQzNHWG+IHC;0e8 zo`^FIYuw63acblo7XX!Rm>d5^|MYGCop-h1dms zjfzS$=wN8x^o-VLDM17YoLq+o<+TIagz@pbm=;48WJfl=d6Rf+0YpyL8@|lLY4<`; zTX2s>1*k{$hDtA=^>2N$y*&?bj`6b7XvzNZB848ghp$2kF3|}EHe;E_=4{nB>^U-yPTWA^WfMD zgLfDGTDk#C`c)kRgVM*3Ip{-XXJ!Dx@kyjbsaPV)uTGKoZyCiyL!lW>)rMDKE5!HB z-+Nu1DcY6Q_x;$|?OV4np6WI7vX3H+8u=`URB{1;iU(*EQluLj#Yk)woa>BJ5qRrh zQ&iQ}_mH2)m1<^I-P#(~KE@t^>g(sQ%+K0XBi}G{bxqvIxcc3oj~UBn;x$jq?ka_n z2!a=;urqXaA)gu4N$oc!^02@e@6rvA<&`T}pczAS)R{9%`)`LR?6%{73@{bC(gq5^ z$Z{!-EiGkU-#((iZrKK_Kdi$#oDrb(%k$c-)3r+>MM~=sgVGvFfCvJ|YXlw_pOG?^ z2Ig~nHKRH|nUY{Z_$*~@hDvB!yU&|E-#1S)@*3{+Sybppd;BM@HZ>y{XTU7L1lWkT z2#gLHxc7A+*upS+7o}^oE&D{D^Jv|~bHHry#FlGPKCo z_^@c(8xoQiByHA1SCrDV_i%E~&&?t7X0u290|*q5x{hQ|%E+Jic))IhFV87r;1iaT zI;o?h;8~KFSH;Hrm+0X7RP&;Hxo=HAFa?;`Z;XzhRtjQ$_?-a8)azV9C| zsk9^tNrSA)$jnTUEhJ=RWt2TjW{J>Igb*1?l98E6WUnMiRv{}RJ7i>hpP$a_ysrDc z?)!e+-~WE!KYso=&p)ceaU7rbc)gyl=lC#uZ{G=g3}k`1-!b4qs4T{f6|qhK3#>MpSVO(bm;g89bkU{qz#vsmae;Wn=eW^ttC$E8l|2&+D5oD&%<>K zPNyl07LR~#ANIwR!IEU$GBrC3;2C*xMC25FpK&|{(y-%$VHMXkB+q&xDjgYO@aq72 zr1eHn#n*rWTm10Qp4(@`>E+^A3XRtaubnkcKAl_Vk$r?0UlbSD3q-yDo-DyM1TC{& z(R4LF2)b+hST|6`v!rEYUR$d`4R)t<%n++id#l#X=4P_pv!Vl`d!_q~>bIBPaa)Yb=<6GbpkKW~j ztzdE9%j7GyPrU)rVjvH5e`Kurty-GC_fx(UOaDUjoZIZN^i&QTtt)$6wkdg(|O`URU7ttY^d9+rQF7ZtS`3@PV1)NmiD< zv2ic_kaB(rje-$eIG6Lc0rM_k5`P&m%gM^Bd(r=sCtU3}FUp2Ap~j(aMb~LEC-4j4 z(8vysZEmguS@lWi2L8};RhGHZy7=VEIdGc5So1o4TBY#PSlf=@ZN;;Aj2=(#{`~mi z^}}bvVmlbzXR2~4|H=CGD6qG+oxlQv;)1y9fYj7G7@yjb?lugl`sH0znyW*EsPX zY0cHD46lO3+;U4l={nj*3qlWbM0I%RaJAbP)6R6w3bqcDQBz*Mo2S%Zy%ZgNboW-Y zq!{G_D@0i}9{C9QxYf8bLk|ZuXxQrN4QV#+W(ZR=cUmec#kiO2RE17b+-!z&FOfm3Zf|W?LG~6TWPVrl5#8 zI)*NPe%CIC193Q0${_Rj)|=<<-rb^gp!z6p5DKM=RhLY#5ODSa_r{1DeWm<)EH{7{ z|C^7r07;dy-R>im*i6;iGX!my>81w)8va4sMJ_FKm~?QDa_wO?m7`5;q_Zj1Lsxv* zRD}+IX=P>%cp(G14`3(0q6D0(`!qL0<9c;(&_7I)HP8NSl581-Q6ex=RL(9gd1zME zQxK%WAyxbNAY3sfFd#$&hKLC|x=0ksgj52M2)>KqOu8~T85szLHcrM#Q$P~8Tm(Rr zg{4wp4KrL^J`X3dlwiU@NePEysLucmBJ*vkw*u!Uh#_|uAK8V_fUV+x8HGqB4MpDt0W1u88rgaquILF#|Kd<82jM0iOm8Y7y(3Q(xa0`q?$qYXJ z51Ptd9m@GKVyTzi=mmXw@4-?5pFbEl5+rff$+{2;iGI*{DX7pW|* zceDOsfc$y37i|hg4|rw60h=ZYCPTw-K|W{~DxWWc2v)IR$gU zAVFc~`rY1U#t>rh8=M1g)oU`qq%kbn~b zGA4!y^T;)Ll|0nGd!^{cwfiU+h!ePdMjhjiM~~jXRT*WtA;#Uxb?yC}f_DZ$4hG8r z-y#|cf;*4eP9k%9w+vzfA(({>O>m9}O(PBY>5i}fDg-DdslGQ*jG2q_k!JzNO3?F3 z)8*E3))CI>nVD@EePaBr!<4Ncy+*T~aw>U{hOIlEbC* zJAMa}NEJb!2}R|FXGKNJd2I%0wH)OKu{q%w`YbuFL;3r$^Ab*+(fUhUbJG)Ityqj2 zd<+v%$H3*>#ZT%q73zRloH$_h2hjXYuB|Yk#KDRi1W-OY$pL9UsgQ_>t0SM1z|WWQ*(8(UZNp^ZChQP9TVK zH*Ty$4v;AAqK6ka7)zrkciQ^;`)?yB!yN{;Xp}OTl*(~jPO^b;89y6daF%BF`WMkB z15hgTu!*f4E8|H3al@K%)Jk%($imI6@?r0VN!U0pUm+>l-Z@)5shTX{wX z=(0a|SUNahd-8(o$;|8{E(_McrD?AEe;5_F{llo3{K~(KiV=Nis?YS_FlIfVea>C( zz>35?#D@xc*`SdFrRX&5I&xUKxW<>}MopXP-D8quLomlDlDn`F(E;H3{sc%J2QeT< zRkqs{?=Zub2y;6~@X(&!4>MF$L^Az};0+kP7e5dl<=+^ke0899S2H^vhgHX3q=HTr zsqEljM@ETEV|f8& z2960OwmPV1SoRwO*RU44b}3CML;)hsQ>WGudXY)TfQ;J9w8JlwR?b%ZI~$jop0`16 zcFy!lXS+s)7Y5o?QutJdkL4B>dBAZE(I%9yue-Uuo&BUl!GyE^wf+Iv$w9z0(JAul ziIe3VefDL?kz?<3ZePs^xgiL23pFQL>%<&}$FSPH`wvM~qI(96rXx(X%1r-(<;s2# zr#bRe;k>)8`wq^#(^P{)+o!f|t9RETcr=?fp_)b)0;{&^yb5f8&`j6N+%&xRS8&Ms z*IxGeltuxID2fvs_oitdl1t7qA z_+tXDexjiUyvjmN(A}DwX*#YsjKaqF-Yo}=9}J3Ivr|&)uCwO6Y!}e%JAU@#(3R1E ztMV5dZ)IP`^^dz2gPi8#aRj0MCW26(!CDHGE#_x7wu81P4L3HcdV_OLk>Kk~jvaln za^En7Ad635ylCjtqrJ3B5BfFg*C=J6v$un%)m03%>*GT(lRz%V7~Fo%FjD|E0MNzz z8D2wW;mW-Y&xVIKrYk+z`3Q-L5Z#H2ewm#OOB8tb05=w4QV)DeF^Lc2bv!Wir_gub zI{#ij1Wxh@G9?!GB-PCP{7woA;9R9`#^)aYZ%?U}y6)hvD~gb_JkWrtSgug@0-%Ao?f>Mh#?!FZAi_?c0^7|lkw7C*{NNciJgEV)=K94?mPc2}GKwZI;89ci&P z`O;{lDF5M;LSDXOc>s0B!PT{~6$=eLh3JLgw($GpQc`4`$2-Umht@XTa421WqB`O0 z{?2}tuetoq{1$Jn{fhCLld$-3ZQk9B=jzq@v6#5nkzaSaZ08GZNqorOpS8YOD9H3M zGIC9KuiNtUxA!@*d2hMi?zA&m@r}oRtEamCNJ)-M{oT1W-XjOPNmwVgeyqlW0mg>0 z^vcW>Py);wi}`B|j=neNR|sv5eBDb~%j+lrb0oCgYHOggK#B?C0q0PgFL4=rLwH*+3t{uD~C?q7i#uFE&r@!syLGGVt0girt_S^9R zPH_0Yu%mHgVSxd6ipCNEBlI5F-4_frgBV48RL=w=66eh|yL0E75aCPbL3aDA(!g-` z-ZLh*PdEPh>HJdeP12FrTY1BnTxV28sP@b@bU9q+Xf()l(?Ke!x^O`U#S?%5F4RbJQ zP_bY(3#=6bG_I@CdTA8#*X<@bRZh?rtHaGo$Yx6>XX2!nW2B4@KRkm0qrlM*Dbu)j zp>Gp$2)dKU1pENE9p>wO3w)I4b>o}LSb48;y|&spf&jQ;zdichE_7?2uHeAtC%15;x!s6c%W-rxv#Fp5rM3Jp zT<$~Q?wkTuwEd{++dswx6pj` zAnDism6xi%e9zhX{+txukbG&*#&22b7cZWbz*vvCw*M$V-yc-L6tXqb@Eb_f#oG`2 zq6`DW4K@lx-K2Ug4i*KJlB40au6^U35@L{nHrTb(v3Ps9r#(5*%(gQSxwc5zYy7olOay(tQs8nnpp? zZf-&3oO?uLxepyGH8~K_1s5b^Xt=RFVN<{;{5URCFQ1a>B{mM?5PR7d`qA1hBSQ=o zI}Be6KZhG=Kq3N#hO792mE3#!-0TXUMqCjVvJBFxRD$bu?iVJSiR`muSE6DkJhvBA z2_YK~)%mfbM~Su9+$`-$XSiywks>kwT>#DC=kM>yZbEx)1Q()}+QD2LSy8;?rzl>$}v zQaM9hs@I>`dYqJm?m?8ImGB8f^ly^6nOgo-Bb)z^*TQnBc;ZG!)9a7+9XZK%a zFWMJL*?q*$t|4|G$>2zj5!G9o8$OLgnYwxJjE)Nn#JZ4VdXq+l1^O>LY2S(zLMwqU zq~0_K*!OMYM@-rK@&-gPo!&&)qPH*UkznH{Ick9Ei z9up@0Pp+4BJHC7om6Rl!C5QBqv-*?Qgmg^p0!!NZkZyjU;{hJ8EM3LL!m80FF4+^@ zT=j~m_OR>WIj(u0{kCIcV9iEuGN%V06P;L$wv0?p4$Uks(9>?UX4y^}L+TwO;KhW6 zUB}vaN#ms;{Gj@~BrrATS+r}2Ri7I+t@Y5XdF+EBvR0;n1Rr0YbNc;56i5*~abiC7 z%#&T41>K|?<03j_ynr@3EGT!dA>DC=%d_S-6bhp-FZDinD}|4-;wq>?)tZxc!Tl*1oPR`r-y!9IA^h4O^nd@XQ_Mk3^jy4cs`Le_4QUTrc7_~n8v;W z$pZ$sn4Rjrc!hlWX|q3%vL~3AvE-`*Muxar(2g?-+uxX=w&`;#Nz7&G4m}hACHc)$ zH!?-~_zv*ak968!VY>asnY43fS+nOIuy5Mt%!M8yNvyVi8g!z-w82WX36W`Gt($)~ ztTQ$&6B=z61=}w#11%LXHAXyuprA}_&r|i3DdlxE2#jpiv%_Bj>-Mu-{wjEqJJ%!@ zsGgz&#ZHMAyJnkWRn*?IgLT#m01Wzx;WlsHOP(9f!U|lCLqB12pUCDkhKp@8ef95? z=6Uky!@~yl-+9H*haCjESvC)Pg3uILb14^$;JD7;XD`&K{GYZ z*db6J0m~=g29VRtb2|`)!OYx;{H1|71u*r1v$?q~!R2li+8@-@81w?=0vyz)n$M!} z6CtXIWJL{ue+;@mT1{Lt`fv5;e*Ll(h(?nIY)#yA3G+?l*@MqddXW?F@iS2O#l+-f z+hqYDK4P;FB)Wlb8U^#7Wa4^-IkGa_u_H&A6heFZ+)-tu->?6UyC&P!b?%2|u>p=U zCv-r7`p_ak2@V!0iW3mZ?#Vi#ru0{I`255R*>5npoS&bEoH43_5IzC7hpGewraqnw zEWs$ybkT7qB_~5AuiYt7E`g(@vbYXFo7waf2uH4)>{piNz{$pui)b|{GVjR}UUi|N z$Y_JEW#U`OKepJ$cia}38jT84%dd*Afb+KU|KZZhH|IO7M>@bh&fM){X z4U8Z7>l_re$DhHS0YWkDfvZ1pvSfVB0bZ7$mnVoR%b@@eKhY-B?cNOwK%%vMZ;VwT zm5}x3jXOM#Sf~MaVy~kq>(P@ipw?~~E{vlyG;i&$xsz;@h=ql_4Squ4-~LwR8r=-Ixn;g3!S&DwJ@S+TNJ09TOgo#SOSnSRbj%PE$Q) znBRsg%8XxtUl8Q2nJ-?Lz2*MtNA$p#1u$+1j%(_5!-5`!96hsS)eQ$Q+-U~}SS0Ar zhCZEhXlGtSpANF z$-@^3+5`wQD6E?MvdfPizqUm}RE{j-K2&EQG{O!E#9Cr%)&xW%7gE1>q- zanRb&fkPTh+Lji4B%d9dhElZBkYueWsnL9owNQpd&VNf#i|O!5C1Gj@PF;@O=4NIH zEO95rUYx(c?FOK2m}+u$Eb-azvG`jr5$wR5xEo0GLFea9mt)?_+&e_^S|9J0y;@l6vRIg+PU23sXpI`Jxvw zn&CA>Yd1ps+w?$iLG4IJ?l?;5O!ydY9bfv)aEe<@ z6pX9^C8~%G>6ZE@!%QcbUoVhtdu4pD`6#QxrzW0f?-P@0_VzWHZcnr9GZ{|NTo8$)7s@7|4T1dTCa5GOeJjX8K|jqKKpQ< zzkX^9Pr@>fMT>X?--Rwdx}B;2+6n_Ue|FKID4HsSsse*cP;?-XF|^dNrU5VO{{5cGNjsrOE~1Fl_=cPE zo@`=rJxprF?0Zh(UqhxEp}X08vn}5vZv?IZMwp+QgMbIR0uax0U7|tt#~2Rt+EA8h znh<%E)r4uPhX-yD;LlUbi%vtPL|*ayd}eAYkbx}rDF8;YiSS+_OuRUD+$ziZ z{6yrIUo7xCn9zZqhQhrnJ;c2#3r5VCc+Mhu_u6M9~xBt%3EF+zcigir?*$VBo{R^p}^*+N$S0+1$_3 z+GJxX+bTr)b@FXvA)JwkgKk>;hvjwhO=6~6ha<^JJLy86szVBDDK8%Yi6?9Wfc-vh z9uZFUdt+li(&Oq|3@!gpZyM7K%3F%DUb~DqcyZDHv3$OUI8v10ATuUv+P^%bb=aZ2 zA}f^_5Ejz5F-{}*!TW<)S57Q_pJ7KQ51YH_{L8BvL}Bp8LLrE)x>Xx;i*)y#utlKNRKRc-NZ~yu7=ZH1zbW zcHMn-#9mMDD<-xMEI~>PL2i$|sCVyv5E0P|I#^Saafs~E@QCp6d%?lq3LGkMl{GyX z-;yi5!ok9V)Vn z#z1_E0&{atSRVF;Tu6!juDKdrpAbJ_%IkZ5n%-ZnO_$}~LVJ*#nV|MYM#6y*%TGcA zk=9wf_8QyhzS_UM#p9%%R`FPU$bkHz5}cP*Wo2*InSx!1NY?s>hGN9{5M+nco-={z zvVG6}jkOMgSp4Q%recy51z@l+79@MeM@B+wSqxp`$I;;@m-LT5H0u|paCD&L{<3A= zx=tLBQ|e(j8e(EP(Lf;vvPik5u~9We1KDLTC3u71j;Asj0v_OB9=PHaCt;;8& zB{n*aF+bVn6SsVPPA>G^!r&SHllD7>j_kezpc^!%rlxc5OvzY!uq$EmMGPn^UvLL8 zxH7;58S>BS1cA<68=%aPC#Pt%mJK6Z=0I>;d;73rlTsD_DsJP>19#zOv9=Jr2A3j; z(coGEA)ggr)So~FAfiUc(<|i#HnzM)L4l44#V9I5l;rRx$q@?v&QopTM!bi=y>f|j zOhe-(ib@;^`%ikfZb^~=TO@eCL@o-OvKXn=;1s>RI?fPYy2XN`NIWY@M}L!`C@L0o zMzBi-{{t%*(lAULzX1zJM+}Ar`jM_lFN>8ld~~IxPv3JhY?_R;==zTHGf|X({rV;` zu^)afN*DL-EVuSgw=_MQwP3$XAw`4W&%&+=7(eiwpj1DSjqsPUNRjjwW33b#9RK??iWZb0=${pHi}Uyj(_PZ1s2%i3C$zu0@CMVqN5cSs`lAjh%7D!FUeSlsQ z@!~Bla~P|GBbKR?3nsIZMy$k@i@WU1&2Rs7M|VxZgd%QiyG^0~;HyFIgkyjNLyY(5 z7Hqe~Yt70y;kQCQh)@RCLLyKPH=oZT5L*`SLmU7E|j216c4pRqCMevdQxr3^< zSMgr(*Gvj}OJSd_9LhpSP*2ePm|Mbng7-H3F%ymo>oTW>*iRp)OjPlS@Q7MwWMkipSZoN%MI3Nuzu#Z_mESTlSoExn=4_PgTX z>f^T2krL0Dh7%a#!byfDM7|q=@mN!k{&*m<3xk*Kff$s$wyGfjKeW8ic{4|*^2N)4B+ z{Vthack^35T)P#M_U_*w`|zRB!c}cGwNs%3eBw+tyLz5*4@L#T>t=3B#;=7^r)Ahz z$BjWNq_4jp6iYyxV}jgiy4p4suXT>aLO+2+)++A{Dh^B#)iVqd)DT&8nmaO#1%ReI z;(Wm}!C8Sy5+x`g1^}bD1CJ}8jJ=U3ntoJ<@-0PH1U)0;T~+zVao{7NqX9%fO>Qhv z=UlusD5BPqC4Eb}+US9sO0hKZA9LqY*n3|3yk!Wr)cH*9Yr!v>1uO z2Oaxj8X%9*22;jI70;MJqT$ke1s~p?H4_x77_A|36%J4O+{t{XvkWmGkT#jn&3QGH zWNV-VW1v4PwbNT_qoMY^_Q&a8zho(R559ZPx}!oB`W7695GsxEp7t=^=c)7Z%^maG zEmGRe50wd5c7U&N3Gp~o@P_O=>?aNd;N5)`3zA^`aV_1}IHkx;U!PIxd2Vi)Te~|ygopRZ4OBd$ltHc}%z{&x(ef3YC7O-fJ@OLm0xS`bVh|KdtzQdcR9QM9Daz%nG z&M(5cP~ZIKYo*~%#=7Db@|YVg?@d$=g)2@=xu$5`iJeN-Ov4d@pW!-qfI{qhhB^D> z3#2}dSSSyhTqwbz2521$ETHHC0Rh;)@yi2*uRazyKxT$}Y|y2j zJh=)-n3A=X$u9Say-qF#&p(s3(ybo^EAg!i&0$~QM5hit_O8BqX%8b;NQ=BSjdn0u zP-+OoxY8L8#rMS+`*VDBgho%_SDNdx{Q(oA9uM$TL`4CkJLgEt zm?w@T)B#EZulI*PJ_unrYH4}&d*t4q7OWy7khLvfVx1TVPm3nzFsQ8wXz8;SC6w4e zswUdA`*RylIwgHC*j=n%daM=~`dfr)FkZ)|QUMGJG7ExYXW>?=c0@-nCQ;@b@;Qiu z8HEW8%K+#wzzQ>ps`cnYHDF22g-SWOCK79Hi%*s|K}O8Xv`~3}Q3=$NjV9TU8pW=j zNoy(e3d+jNL}`ts+2=Z**9^)XjuiyU99K>#cxt@5WmSXf;6Wbhz~@;xVDm&NzgNnK(7}0Bg<7wP&9Su`yqZxBRs}pT+g^_QGc90+XZn99w;Me>bXs=X$~0okv0AM zVUHs!MFr{P5*QKZ^03!`KMk^P$`4_@^==q7~DBZx? z0`)-9s#WbP2jB#ow`Lvh560gE`2IEEm@DItoLmjicU1o=WzcovaxGh8T-RFJnK$rK zLJy`Yn3*Vfe`;##H8~!AC;-hdPK}GjZY?s?>ANV%T@5&BNvI3{QgdRRjWG0wRySGi zV_?8WfHcHca$mYZv2KDI0>E`V+^;>k?2kEV=Zji0@$XXJdO5(9q&Aj=-1nMuqS~NM ziXGDZv$jT_3MjBOqmfnytT38 z_Fv(kL;d|u!ylPOBP$W~ykzzi!uZapdFc3+0q`h~q$|u=g-&NqfwhA6J zXcM5^nh7venK)ns0gl_!*Y$V*wPZ=>ZoFam<~}Lm@pJ(c0~|@ZdV14N`NGv^WNFr| zw;qE(GYSlOo#=-${S@GKrZ}f9EWlsJ(2)_t>cGbj^O(?fT*goZ zt95}g8hqrcBZbZ^Nju}>tkkGzt$?kdj02pDJjdi+rXZb^tW#F4zw zu-*zh=2b&+_WS}`GD-ab8n6B8DS8IvP&>ol5N*wa`}cwJA;B6$YTR{55sr1&G=A~t zkPIYgRX(mpx!>b-5r2SlLQg|u7A#a5+*nn-+%(!|xd+I*`ZD$B4?vje;FXSz$fgjw z_?U6@{4UPY3zdBmRnADN^z4l*HcQq2`K{Rfnv|4JohkYr>@iFiTWxDcJT<`sA`)nj zz)fh)9y|~b6@^GwlhpOG^=P?8_g67e^F5i&-LNP+t5<%ke)vs%r`fqySVO>HS?j_D zyDu+OkcxsGsS=ZDVj~af3;fgRl{``Fq#=+;D8 zRwY%S7qXEs@5~;Wotbg}J)S?3pQT&0zhi@)H)3^WrzT*~J0EM zX5@+)B`6{YE$hoodSiW9Qu3g;Tri20yExrGXliMybu>1Gb&YyRJMYcXH#n&3_ zy!!QR7aqHj{BcI$q(_s2TNjlQ?2UgxKsM}uyr+Kia8Jr@>CN3@7iJZWZEb@NQ7nn* z(-&EFCtQgj(dI$eiLwBmx3F9XM}<`Jg~M9N|Ex0Gc?{bDSAn?a?Omdn6df1$YJN|o z$RDkR<2W(V2k!FX6IldFRJ9SJR$LcnAmK*rDr~%8pU?Q2$OVag?SeNC9IeHNo4cA}7e;uDuan;mbV!xbGZU`#0YhyyEHl=p$Via59Zu7`=f z2VzmSkkAfcgus5E{^qGH9El+zyGV2}uJQ2wsN@w-P3Iya3iwxwEsUt6Swb#Xp1#-F z;J8@Z`R!XH=zdJ{yW3^NJo}&g&xF1>uU+8%dYt^W6d-;=tE`Gz=bkTVk4UQQfnauY z8(ZSo8T(Dj&k4ETdOW)Nj)oXeo5$>w?QgNc>3NM+^oFz$(BN0vVc$(E*I!!QH`|H3 zt6-USv)TV0k8jtDnKMnt`~aHzszE1raTTR;wsz;|&jV_g-=8CuU)$S^LdmK%Jt{V~ zDmlx+nsO6dOX7hHgCzxq!x(7Y(SO*up)8N0qbp4up#8l_*cxIEs4EXG$iLWf59ZGJ z?Sc4aa(FlZXdsEyY?+6OhQzahcy^n-@AfWq1&N`4!8MMU5cIsxk(X)Oe(#TEosJ+s zjf)A;wa4ilk<$S>DnqxGw()i*>3O(P#7&%sRmz);6S*B8(|s}rg7eWU>I?ow+RWaX z{x@qgD)A44@76W>k2??)pm&H$E%LlET;CuA02%AeRo8Si?UpK0{_M9m+3@EayE8s+ zn2x!nd5^KdQKzo6y7*jef{&7ugx(px==lu-kqnOBQ97SKo`Rbh)dVQovfq9+S zB+o)UHVxO2kt;w%yp~V~q6^&KA0MW-FHcW zqcx>DuyVln5pi+d&CQn_nknWhZ9h}bvwh98ima-rkL2m!TMFC2OC}}|!C~3sau;L( zSsJQVI0B9h52L(4se%o;lTjGtm07nH+#Z~cV%L8@WoI#@CVKwsHS zt!8|C4bG|bMtI4UH4!5S-}_)Dqe+@70sCZ{D{s@S^#@OsflnS0mgsbe7KCHe&-z## zib>20IeB?|EU0(w>W#P%2}l!ce%SM%r)_O%5y8=5RA_G?s^sS2_;^_W)4`;*uHtLwd^CnY3n9$=w)!idaobrXC9E8pt$rAlqt1ij zKT*r8ymb_i=GN*}!*r`Wy3}O1k!C+IH_VJGaEABx8iRXDMe#t<3?*xs(PQ(446*7Y zpEuUq{~U!bli-N#AG+1VqCnUfcEA7}fNQj%)l?X&bJ6HVAXWeZu_90c`ox2;b8Vw0 z%){}Fka&(CDk)I35#t1FagxSSv(F1-Y$1f!f34RvqSUbfcO zPbqmE|HVp0uo4pU)PGtDMB`gS*?(THF*isq-Of zx>gZiv7he|W(pvTFd>|?8T}XxFmLaCRW2ODl%^@HfeBg`TNeFB?G|wHPy-1e5ANBpg&g!Wq%dNyB@#3T?P~3Pknqebhn|w0^}i{ zf2p{|hhpbWB2S~h;L-YQ?XjUD3%)3Vw6}BFg;~1wsPH*Fi{tEBC$=81pBx<>?eEXc z%ECuCvm-0nE;eS;=Qek7_Q1NSCm=jKwQ817Fll~RJD@SV{Oy$EE4&x zM&{<#O$h;j@IFeqe@S1RofVKKD|&YY2;DiZ*Tj(Uo_VRnv7igXIYKp0dYeA<#faOh zwB|s8mi4UHEAOQfKyL14t7~&_zV~xQ)g0z_EUe#vosh9Tlcd&aa%V_?gppO>*7l$_ z`Pf;8$VO{ZnVu(wF#ZkYIjv2ZmFloJnl-YG$A@P;Zxd6 zMY$?5j(&M;)^1Ek)0Q^*|Fil2-NEqxF*Y9f*d z7nu?N<^IXMInj(y2U29@seYxwCn_?68XT^=sGO5%2R4Q{v62;xq)A7;RSl^}=I7Pa!1(n>p3tbQs=PeK zwry5duIxQ#LK>n!eE!n^u1i^SXt_MP8QY z85u%R%CprMwY8Dg1gIZes$X7J#gmt=0oiOt)%t>0>vz6lLD8rUAsEHwZ~^x4FEARH6ReJ1GhT;*74_Y&8fMj$hsH7yqyiBVuCiQW4w;bhB7; z92{zCEif|3jofgWif}GeR>t@%r-4dSK_Rf%i17RwDI11h9_&jzkPsFTxXDr>z7CGf za3)@a;v6iliyFJV$ipmb{YQ6lL9H-qFw z;pmx(`;N!?qQ)@g2Ub|VM<7ZWBom4Ra(W!-wO+4Xt9iq z69DR6+As1Y&S`0gEbTrvIuLh^L$T9nuV8?VF%hQI=z(BtC{8TFoJbKV`4?LKi_Z8e zXWXT`QO|1XIH<6z@Gfu<6^_I|H&!9gI~MFW$J$g3?_N!~5`0&rVcl z75-x(%EY=U4dJ}k`X`@3++e!kS->sQ5kepg?QfwW5U zqqsOsgBIA8UfgB9(Q)(E$=5)-)HpoG^V$X+ufvr}qM$;;-%RsJYlPWwNkGN&O+o)X zo2^{vHGcTkT;g&-|AHAC)aj@pVG;y=BtfJS9S_9C|K#hvN+!WCqgmkpAz)L8eme~f z4QT)9Dj+}v&q6RtnUTFw$uBvrkrxeuExAuqDf8)2!Uqc;fbcqqoCRG66e9=)FtBud z?E&?JXamr>Q>RYBW^_&%966MB5Z{2f6I&m16AuX691c@NWZ}jH0CZ5l0cY&JkcqS{ z^goCX1=eBBw$Qk?tV&`B@vC^gJFL!h)1Dfcj(ORHGZ1~?RrU#4gAd{g2OoIL?i+e=IIPYK5sSZ-D=aBK1L#YIF$ z#>bJcwhHPPsIg(FW4iU46iLD3UoXE!~`supnUW#w%Gw3tZ3)7dDE<}LM zOHg^ysxSSl=OLyrMj)kO8jD@m1&>$Ai@1I|Kc58CHt-Dfo;{i{T?0#G&mI?8yO8Ej zXuavbiDq{GZr|LD40kAcbztT54~_F z&n)UU&*~Tc%)LbwasH~)L~D9f1Dn9@O2W1NyA$XJILP? z60-&h4$KoSfW#Cdc^KOZ3j=NSmoK{9VMDBy%`HQrC<*5KUhyYxB)bXqg-ZYT@2mvB z6A78i2dt()cHcQSA##3d(L?Lp`uyh3PHO=MoVP60TOwz{Pb5DLVN>9tfcNi}A6-E^ z15^i1ar)W=^sLl@oXk%t%|4W(ncF1=$y;&|Tj{|lfIzJ2(Xls&>w}m8*izIma8&TyXCQ2taV*slY zp9ZAzFN$e0ka)+=t!Oqd+8k~=%((P-Ho7)T;)xRon0M&kq%{Xp0VeNTd@$F^zrY=7 z`{9cZCKcf5Y|rcG>qdG?x_4_QBjT)YTLPID@x9-4`DKR(i^2!s!VL`we1N|P5z>w$ z2zMc<)y%5?OMqH|O$`%CYw)tb=S9_p=3ke^Jnz^eMd-%O5A%0wXnkd2=NolKCl_tacUAo&8VF;+ zI1#{MRlLTW+sgbm?_esph0dxGH3FAx-!R81*4KLXRBo?vWhgyKW#Q ze$kT~9CUl051DtXm7ahEst3Fh+U(`is)godT+<{P#{4|OY_>oF_ zEw?k{X&?}K(`$W|P*d=SL1_dq0#pG$(l{LHXlXI$0FCvOA%9g&?naN3CFuVE*s_Ho zkr}EZclWf^)G^P~NG0hm@h$;GgH(|86^B^d5jZf4Arrvaz4buJ-a{135)vzTwxHNy zG2-44YWy}Z?Fwl#pj*%+UeVWLodQj@{=hD5{$btf$9J9@;042AG*|bll*^;6fOOW4;Q8uGeW80VbY0RB&}Xy2Bbpt(=XWLl#vI zmYSrbVTuM26}2n>q>t|J3h3bm?j;}kl*}GuE()d}BtJpdtG@y6{;0!>gE>NRJ9mxk zhfbfP;g%@Fq!Q5YPorUxp+L4WqlhE9!vO`<#^6JgS5$zm=D9SBbINA$)dKJ=#7@D5 z5cGxo^~vt7@cF=gT>Eag$_mRmq&g)WiH&Fwkq^~pyI9IZx4B@~tulL%;K6A^o|${X zR?_$7_8TcX>HiaZG)2(xy<}i;Ffw2eTj`j@Q*_+kq35w`P(_S93jrwsgF{vjDx%n0 zV;xPLusVNESkh*r>OR)b;gM!-#xE!%Ka_WNF>*oqLLdM1v_w>N^pBAdcDZsZ>k*TqiX}^! z@BRK|10T;n5VVRaUY3EDR?E=P8y^czSHPJkC_B|i#~e-)6wqVGV7G<*c0_AexsPLL z59sr2d;0<^b%eMffD*du8>=mmA{N^WK;=Xo31b9IhXE~S1DE08s5PMHfK&;7r*l7l ziUM3b^Q6lM5C7Vv0Z?8?N4}H$Nb7Ocf~oj38-trDWjJ$L#NMsx@72Cr75xpmcQByD zv5)#l&!waIZ?qjj5gt;{;0ye1qPuwCLHTzQS79%QdrX?D5;*CIw4Ji@cB$GvKIyHY zEMLETq43FCP#lYSl3sS_$Jm&&{6&5H!gEu1*L#;;)eu?e?8a~99`Ae7ai0YOUBQ#_ zB}96j8Z0_-i(tP(h0d6oDE%t`;YYtp-ST`Bb&S4$sFH#;j-FLi{4qTI_~a*uohyY) z2njcufhyin>^_t1b~pFU^TfJj3)`}93iNc0hb~^+@A7m*WQYKu@Pn(p2g%7!!pV$`r=2I?Ua*%Q0TQ>3AHnQPLgaVy?ZPoe-3}pQZ4~8l&_4F9|eypvf zSk2Tp3Nt6No9iY6dwC`O7v29l1LQ^l)+s-Y+)z(Xtiu8t|x>F+-yDpV$b8HedP=xa`5_hT9dxy=PGO;OzO_CKq_dL}IaeG9LjmM+GtPTnH+g=p5=YqC@VvAEe zF7c|Fs!+1SCAut?8@<%S4z*R;Ikg7glgiuLE+na=hezgmKRY^O!oP2=XMtu}_av$> z(5i5!(2(;A3c8^5#4W?+vJ$awf|7B@@kbab0`n{kIk*jqgioFf>bD9S%<4S)-K{?7 z!$JL9*^bvzKuo{l4PvNl#n?gWGGE2Lzc|*lqnfAQxcUT zgk(w*GEWO36sb%}A#)^CLMVys`fA;?D=a02oEyMHN_jO;_c^>C6 zMCXCD&8CPg<+z%fqpfYq^d8_TTOama+GbMz?)YwmuhP=)SGZSW&E1Xi7;V%X(uCc{ zXx(eL24xlnR^Z12g(*g`n5bEw*;Ap#57GT;AD?~wH&9c81r&dR*FuEkv#3)`ovBigO4L-yr?KF4}vGsFv zAlp;ddThW10fh&)?VK;#!^16G9TTxirFXk1ouJ^v=>P)viB&w%IPh6daig7t9B-Z% zUH<1sOua1dy)!+5x)+%iAh_=5kP7%N+dnjz;o>A7a;&1F-hoyTj}QpZ0fY}ia8M99 zoNbA`4Kgmpav}56WKD`(LFjq@B6`NY!;tMSqGv{9yNfwm0#rn3RmVA7@Svb6K}7&J zfZ^c_d1g%*PJ%gzQ1#}~Ik2A}?qgXWHeO02)!i)p=j~?pm#g-!mFU&)9laCF1VJv? zZk$1w8N+KCdNm+~1fR#&a9U6I3=?xlQ8y#=8^byyqZ%0!kFp9WVL`Psew3UP<~ZO` z3eUGjaVvLMkiG6#M}wgpiA4#&3xt0Gy?Nf$gy3o96?(qWc6as|yczokdZu?k?NN)t z2P^)>;iC(c$B6|h*2-=ek^J?q70Mai{lPKJ1->tMl+X_*$hbeZ5x-JD1kM(Q5|-|# z5-SLCTrSIH`qVY9A@#+jrJabAhPZ-(fg=dx+$p1cOV>}8$7c)|$|o_A>2#LZa@ubQ zm3Q_+EFV5JSjj&O6@(b5B3=jIfZ5nm!0flmdXkdGl=|BJ+0uU)R(ZRF*+$S%aWH}; zir-+h^2AXxo`?)N#Jg5F@4v4>5MweWdk13-W~4eqq;bhuCTJJ>IT4COd?e zBZU`U8d^4 z4Of|a_kus32DJ8YacILtHR<`=0J(PTuz;xz;b;}#4Eoa8EOLuEIh#^c}Og zRaJg*@WE2V&gxHX{>LBfup$@qy)`MfVX~G>v(-+=(9(6Yhx>Wlqj+{lj}Kj&>F6E_ zuJvGUxL7})BSIvFY4b;eI?}u2n`8hNEd@oO=hFNx_wz*Bi2T=gQRuCJfJial)=P2v zwF-+Z8fYSv+~CF&zauo&+n6WXrOGO9bW<)x>oVQMd}Cp{vr?Lxr>y<|j3IE9A^toq-L8C&Tb-aqc0l74?2aqLSW3d?2yOW-z)7j7>$j}j>-4lo6e zz64~X`}p)ZS7>N(8(};e0t4}-&_vV6r$RsHd%cK1fVTsA_o@b5 zOm5Uxoxsio-#q0=@h#LuyS{Jt_LDTmSGUsA*6`nFX~x8lhm(_J;I;K064&j!Zk}%C zT-isGbsg6g%@M#m;9Ys0>38oUH5udXP|Ktk`l#e&>fVd~|UGh&q{CLlrit z6&D@}PrgWZ?PDz{xlPX6P+{f%xEB29(d2+I+D{7$M2sG;C=g6{(QV}&MKj6_Ot7?_ zx)SOjJd`U8=E~`oBW0D$&K}N&x(WSDg%Po_rMR((OX4RTnpcN9OgR##z$<#>`5{vf zJSsp6nnL-5A8Xo+9+U-}*r1i~g#5c|-)fMAwkV`2J@RDI$b$Wnq9<>N&2q;9~?v;~IUX34EwpMmw z+rC}Sc?crzXU)x!XZnIrtDYcrV89pVCp2ubx+hK);L`#I4GW`DpBx<_Y#On9-@a{% zU0{B=ezW4w6A1M>CQkFCsM^rKg7Cp~iqB%ETn+Fy23A3;^dp>eG*Eq(W^eX1F?%;R3!IHc`~VH$6B7>zNZb z3<5CxFUsiIr(L~=5dZ;s2)n%R(`^}v;PNIUXz?-Npo3@*>kn|gEL-^ZT51zB_2hAx zw&rmshXbwG?uMQ-&a3vCvj!Y(Yda3uB4af7i(nwf4V9gWPr252TDfjG)=w_=K*}@| ztUvS^V-piH&O>AkU1X2dk@^9eXZ>DAU!}%K)|>goPHuxDB%&hk;{4CNKJ}WPrH6fzr+0dpdpXImz_6KRT5`Bo6u`&dfeYY7KnBb zW#_2NdtGuJ6}Qj`(F|vJcwfqSj7TlSZ=&v*&;f#q@t}&j`YJ+S$3ncFlVwH3Fy!$d zmJL&Hkykt0?+%YH73k)V#TTiiW2mqU(!5e+6I|d{$N%kGSmM0JX&-RH7x+$6c+7iF%>27Qf!IX z8>x?6+*HFw5oq>!5iKSd!}|KS7R;n5QlLddZwvQ1loL7(^&BbnZ?bcTpB!=4l13}U z6SYf1;-qk_NLUbCVD0Ca>u{eddXoSGBhEG2AvQA)5uo1`oWjiXo5>L2j#koXdU9%N zWbW&H6fGHPEmi`g?G9(v!}@x8=9!B9vz)Ce4S3=O;Ij6UI|_kLMhI?orDbMCMNjkw zHizf$nPMt8IJr63MA9-dmx73eHXnjkXW19$z7n$qTu^cG8{cX7UD;WF)Y10s5TN8H z{cUV)up?nhJ+B^Av+s_RX=mGcmuCVOW!npx=GKqumW!kq5@Qlqif9!WwCA)waXO@ z&JIJc5v_0Ch3d97aUU;JC}DK(vHed9T~P&v0BFPmIc9`3x1gg3>I-J{q>&3MTPTM4 zqp8l66oGkz82}!yJd^70Xb2@s>Gma-ODtZoltCd3pcD8b)2Y%Eu*CyC=dd7C_2+K; z&oogO+|WSgnw4cC#dRdT9lbnqT}H3%?a$Y(<&01=#+#5&4p>=opM0!dCh(l?Z|dic z^6Jq%c)km>))ob8+!lsg?-JBBuJS&a*SU%~8^989hQt;D-31y(R3H$4;h3^o>^4Ch z71ZQ6ZfI$0xCa_haNmq^j4SLTB@7v=!(xR zSn^@Ci=qg#n)qXGazdy6_8t7*jt1hQq8a8oSO^%yUA=l-SsBxq+D4bnia__VTjBGQ z9gqdEEG0#_Gp4oyQHf1C^xiQ{s`&Q*prxYeaPj6YiHkRIo8$w-7?v)|$B#EPH|Jz! zxfY*-$v%P^g03U5ws8c9F~lXX_Jpk`c3UQCDLWme!t#QS(01}ImAkV-Q;$9RP!V%k z$BSfe?(2FQR?x$|tNbx{X9^%lj>O2>61@;b3Z#CxV$f@1whkl?Ob{TiXj*A&?n_WpYd>*BlkSz@- zTwVq$&@J$mJ!OeT_;hdMtkXakC15NmmSRTH8b5JTt7}uqVK;W9}PAm z0;I$i-@r={-klgNAk?pH#9*&!GcdP~TqA)9rI`Sf$oM}WraZmp$4;R1hWBjqVm-vm zaE8LlEU`m@m4zks{XsA&5p@97aZ_t+`UeOcAS1)Xwy2vw>kc0tMKd$blNm=+ zkvMMV?k*wUaTY=vg>P?KXH0(bB)(U#POqkF9|utvg?=b?o>7JM=0Ba%>Q4`4xPa4$ zOB#hW5*wS2_(^_7|J=^W*(BB{VjOD#p?ChSt% z#~p;*?9QA4rvq+TwX2x1L*fO9J0-c>_m{CEh@HW-6CkC4XE{0RMcv2hY+w6t(kaF& zxmWLYl$YlkjF$O+{RCtmR8}}`u}z3~vD&-+9QtC`vJIyY8RE|}bhTxZ6bBHLJ4;Q)ov12^P&qB!M{ zlw{((+di(AEWh$HX-muC&lPF&V?{dX3D2!()^ip~q2?bMo4tM^Ry6j;jcolADo)Hd zuuH*1NMh;M7G5#S5~>gtw?3r=7V?|8LI?oxM14mDD@5UnfPK==Ji1#wDfUWzraUvT z%O3fg`q_z?Y`9d9o7b7|eyGuJw0SE^vAM553>v)@=?2qClb1*Sa$TI#RILE<-H8u; zd%=(mC9#ZQ{OkA82fYAZp_XpI6EdYg%-MsfnLkP*BGEzGrU4r3HAcjtM%@yrCGMjs4b9$H~8FTJL4-Kuks+hu|3^GGg z8#^T0FiL@&%kJGIIUgRZ4cIzA{vf7TUPD+h&5*cKA+a0NPpZ%!f`A`+>tFT_)tMKd zF#h3LRrpQHd@NvAu9n6K51pE$>eF04RT7Eq;2l6NzLC9SqWawu$+^Q8 zR)$wGT>r-_+h%e6jr5KSE7{{f;@$H_@PB6l3-a^NiF6csQA~d_OM6;QN77eF%1`?1 z8}s+)bs_|{!?M=w?IL@q+i^fpYw{D|=#lNAFT7s+N`k=V7eWHJxqf}a8s_sbPyE*_ zd~L1Gzy7Lbc)#ejfBoHz6z$btE`h)Pmn;og>c6ZM*ZhC!$0^9|J7t-lECG8soQB7Q zgz`1LFt_;Au@Am~cy+ye3IC+g{^fwLjV6x0Wt&F>km^(Prt+1Dam;&qPDlbt{&UqV9VEARY6 zJW;T>1KmQfghON(+zL1@fd_~by#Z6vGPzaEoxyg;!n=G(k+x1#$77cs&%KsD#{ZBt z89nus3x_;8Pd1o74mC6hRjZ=#^G(}3rV=|qnULgH74!h>L04NaDsvz4h6H&W{Z}|B z?qp|Y!$~;}gU36_EJWDN?fds9Fk{HRtn-@@sPNhf^cBKOi+$QP(?hx8Iuh_EHKG{O0_Dw zuh=%K>gFPnZa~M%@&x%tCeab&J5SH9lsmDPGb=t)2{MQ&D4+raWdShFY!uWEP=0`I z>admxoK0o!NI>YVt*v_ux;2%}6F0d$cZu0^V**m0LwP($c%q;@SMd3qjc%xodbgSf zz3}6Zc1hO%<{xR~EXI_$ZS@N#%%KAfr@h;-rDFS6_qCe8PFM$nqccB>)*JOK&`w+; zv=xqmyD^F8>80s+B1IrRN&~kE9pYIF3|FFS{;I#mrhcg5mOh@UQR+V9H2tBc4 z3W^$RHaNh*Gc&Lw7u<=m2sPI)|He1%!E%0A4#Cu!5d$sEQ2^QkYQ=;{#621gOQW%=Gsgg40~QgVKvHY0*3`^|9g_qi2H{h5_UvcE8Ks}Y{4@(!1pLIG z8kb{f!2><)z7=JNyS7vZGbh8=t(lsc?_A2&(kFo#q0W{Txc9i5%&?o{@!(3CPVJqc z?7rmJO{}je?NbaBWQ()}x^s3@v{pqMu`-MH3em4wvrctwM+j_B~L)z$L~Y(5Qs?24+oPL}gT&7OT$Uw*T}* z?AzI+Qk$d*zKL3rtgYx4%tJ7;hD#Of&;?(@WE0gIupX2(cqDckbVnXj9J!ECm@q<} z_5kG(EHR!B<++qs!d?=*`V`Y*g9n#Gf;Rzo>bB2&`#KW~6ZaM`9R7ACOI-yPQmR0~(1LQ(LU-|yW zd7=>Lr5js2FEW*14d&D8-(mhKYAfc8Ko;g5Q3%*Eet*c zC?7x>DxBUv(zG|Xefs=)ceyLCawJ?WfNh~Df$ihnyes>!suFt#G=>GbU`Jm)Vga_W znpz9$MNHQ#UP%}@2$=;bzJ-Y<(r94Q1Zpa-{|FO28$fl+hIO5Ma$fs53`!WO$Q|wZ zfke?>KJ?i-nu4=L|C)tyqlQpRZNbC;6~)oYv()@FX$RRB?dgUBDz`GX0PQ`lTD(mc zUEDr3Y3A6JJ`t2{&_3&Ic>6|Ey%@s>fxQo2X-s5JNq6t34-4ZW zyeoZuE3tA8-7#7BJ1?+#+Bln%b&0b7-ppUdi#i{HHhJ`W@$TJQifIQ-!7~>My1+Vy z(I-61z^jM21s;XLZ_b&4q#I}<4V_VtKnig%u&U}4G45(WIj#7JoB7qwxynX>Y;`#l9Dx^e8cufckrnz(H z$mNq;N4gwBsK{l>`ky$Ge5r3ygGcrcav%0+py`{~WEbK2k)fT1_YX#m-5f8T^f3KP zPtf^NV}Hg5C3>cIhq4P2@*Ew3*qlZ9B%o*P(9j%1dE9Y%yMz%h|B%MzULz8ZjL$Fa z;GeXFTj5dbJKVoI(k&3L_X#m4mTiVkSBb&hPJ0A8TJi_5ci^1bHDW$F>s6I zFJj;-*EoB`; zIndH>xB2oRLZqI;>)8BOa{xw;K`*eoIUikkqh$SULTWM~7BL=4O3x5qYvR{>;_UBUk}B6US`G9@0TWS4ixfVNN({v> z8t$~+>Vv|{f}aW&v*a2P5&j=L&J-L+s7-O~Y6uALDn%ZViKb>?^%U?7z)qnf$xYWL zGfYZ!8ves~d=CC*>-ESIW66Rys#}_pUT%``<=Fd1^rOh<7XK5OS{Mj1Qe8yxg~ZEU zL=4C~Z2#FW3+doB7O?7{qwNFp&&vLR@)NJeb2x#$sEO}9m@_s0TxgwgL{id2%sn7+ z1!`>nb!yl3*Q+~%U|Lfyy6RLbL{A)b5~G(aUmPl=*c{`;au z(2D@5DJ+gztX!5@ypVO&BVNeB$#aOXor}WZi~e<=={KZOu~4PL#Dz$$tIrWvWiG zfvc8hsPae*sKk?8$JS0sL8>BhIKo5 z628ON_9D(>4oqZW%9)eX7;>WO#kPh*jX*}omks$ChK>^l8dy0PJudgb8xv{4qCs@J zX{5$%KUr`;$6c85%{<1E!@w2_E?mLOhaxevJk`pUsMd+?rlTV`eEaR>h>6L`_=E&m z85um}?`J(h;6^SeriW^E-ZSQ!OTH~9+O0C4qUlGu1TA$TbSNOka)C3~1v_dje!{me z<6)B_mxsi={t425?sI|Zg01Pk?A8<(E zY5sXsT-uS+B?tRw30Mvm6wHER4onE6H0;(mPUeTjZnAWqsJ5d=AA&A0S|u7!F!FWY zJ)`&8r8jA{Y0~kL>E|2%8E+pON%nSjGPARTz5N8@W`n$ny>Z8Zt>SV+_p!+5JF##< zPv07p*#R)%BDo3FwCcLl-up6IdNSB3DN^7X7IG^xrQ@^P2-AhSY|xBQ87>w(Pd+i% z;K*8S@Q_8YOVP)wLG!eZ=DIe+z6^mH%8Y^<^PRgI$TTw9%5gESBws`%7Atn|*?J3E73z@VVcd={HU zHsemF(1?|r!=JJlXq4XiLtTM7XMyZ7XU}z&G(eF=ebIf2`L(%R_V8O%EGf(;F=&Ot z8?^wiMZy6T)d-qD%v9mDO9&8rm(Q=ypHe;gL0?J7 zUQb+K#HH5u4!_Z%9yY+=jwFpd9_l#Is{{ zf8@56AK}7&-_9Bu_CogegFD!YKOm6+t#oGd(d?ZrZsd-fh)@s|bg;Hw*D4F{9_D3O zMu)jJGd7*f)I$4Yo>|r-)NHGKb1ucA)n&%+IVR)ie5gWVKoS1K(6ACItRPgZfWoi! z9Onm=K1j4GSAmlRr!-#U8U4~m|d))EQctFwZ;Fq2_ zb)n2&t0V;F#rGGAv_Wv!^8beC0%6oN62CU{%d}L#vo)<(xN5WaYp;UqbcuGTFd*t! zg~49>qpt3;x#xBw@s`NVT4bkL5#{Gs;h=#%dICAL(7kECe?^jPt>LcJ}pUZO|2Z6-bK!sDJS;kCm|{muO0zllZUHM`;~% zM@Ql0)`o!%MmnL*X4`)`Ri0w~r&Fadm63tLw|<{#Fe@Pa^ZrOpGPwj!Rg#qR5Hd2C z2`dlmyg#VbU`JU^Thny#IOSd|^HG@O7q#eH(QCeXk~dqeKdIF$<6f%&nZp$l+HZ3V z-YhuRP7%&LF2obCb0=pI+_qG!dXPc@e`K7jFQeYB(KvaMF&gcCE+~4i1jlp~&IVSh z=hz`8*i*fywWVbp85xWmZ^;aWaQ$fpM+Bm^5^ z?+|?GQ}LtjmSERzR6cg>;E%BI?@_o21;~Nhv11rTlh#3KfB%TE33>s4ZR0%T9uM}H z(R@AWGkB01br^&jU^^C{?vaFr9qWB&`@IJotk0aUaOnD98f`W&eILJG%z(23&|wl% zCLpBCxNx~#T)_XS%>C}i0|NmVTD=NrwsytT#P30C!LG!N5(8>Yt_WlYBH|3a8-&-B z>N~QjEI+S$CO$meP)f3((F}UB0-rCA=(j3EKGdHJjR7!#83Hy!E0I@XFx*9zxOZ=Q=OjS>nUW^( z{{o=Q!wfO@RN6mjlaG8%P?MvOP3YP_`O7L(dG*p*vHpjRlQ#)Z%hNs><^1Joc~BZV z1`|C!vg+g*uKuZK5~KkU45&Du;2bzWqL=}PkZxN$6zNi(M_8+ptN6PfKltW4FWMwy zcJ>pse1oyX_5~jRO9fPC`kp&(W$vAn17SdZ%XS8apzMzCy2%S{+qPYy#SMpYFr95^ zAzdsEPIAWq1I_uo0<-OZ_*7DlOEXb<-a_pL-DF#Gm!ViW#o)$oOerM4(JrsiYxtaH zll43oyMM@(On$p=j&{337WOIt28`@QHO|c8hqzLbPXN!v9Bu2;nZ!Lt!B;qfa7tm8 zPz{$=LY-k|_BJnIMWAXrKjvv0qg04u$|4xGDk~l!@gR3$-jxl5`Moepg_QPSjTBW! zSC>sh_+-p`VP)O90}e4D4F}Q|>Qb1B#evL#lX85N$Dow3?ew#vw;z^yr=y2PAA|6g z=g;jN9Ew}6_*CguPzJyGFkaRci~{bh3}sj>0f>000~k6 zSX@|@f?^(>8Ft~gCWO1CmO;?Pix`fNj*JlI@{6+OA63U~a{A1#W2lLH3rP|n0-&q| zaC{LmR?}sC`eD_XB5C+Zfc9UD^UNr@HWlpPYxgbTZQ}&}%OJA8pKXSjvFOclIG) zUv`(8UpnMHX9jU<6HYq_XGnb?aqAX8Qz$g?WBe{^Le!6Ctbcl4hL`9rhq8Nrq%e(N z0EH$G5pu8#hYb`Iq~HR92n^QO1S||&-Y2qWs}35nIM4e_X4RZ?|1xTB9X1hEqS0X| zGx0^c*ua9Z|3P%0m~dGqlC1}qb>WcGWL;F>%|5wEV{CV&bp9p4hQ*85BuIkYt@P~e zC)vNxgn%l>4VmB0o!5T&>qU1DDc8Sk|ECX7wsw14BDw{QTegP|Y!C>m z^}0G(YgHL1M@E{9ZXtHj$lbc#T*n^W+GJkDnxX*}m-`3CR>$$!wEQHgx^7~x)W-XT zvx5Shl2DkgKzAH|vEC(*Io9z}{fAw>j*n3(0oTR8gH0M-m~N~gBy>D^K}Dk+`m7Zv zB_md;VD4R4VmZQZVX40dS(mWj4mDW@mPe`+b?grr9sANP?@;!4ngpB{iv!URvgkk0 z4EV!hErbC}aW?DB{{3r;THj`nOj-}w z+j4XsyfHjmqXO;`5E8(mnPZPbNwQ-8PR4Fnk*q`q{L3g)nYL~yV9oH$d7h}t+|K~s zP2>SU0~Zn~2Gzw!ZPPFC#poTHLb;^xUo_Kg=t_7cZPzMnUi1(nWVEq}SgK(WsQx!8 zvLh~E^1SQmy0&l5wqjKAeaWG5()Z~*6!o&kuMZdis0f|u$oUZCTw6sr`NCidzeAQy zosZ$Ak4V3yc?31*JduUnA1VhF8TbUM2SwOeynhecIT3XM{cwKyv8UHAlCqJim(Td0 zvWM5iqep=i_sYo*3~p>eBe?hs+cj*z!Dc|ab1~=Q&lv5L)d@W5f2qp<_#+A)m~n9_ z$&s7UfCEQ`C;n)#SCw%9d;kEt1BJ(>(r5)fCXAyT8wpk%r~?S^l=YlB=kLEYR=BC2 zQK|v^*d+Nm1lFP&Yo|K1impjk-*YLY+>%ySQmQ+Y6j7#}OUN$*kp z{32L>PzD3>NA0S|n*Z@o)dzR_Fl+VB3%m}V*mZH76GV`R2z((^vR6V3lg0lei+a1i z7@~1Hc<>;`tSK6vK0a^&akf<%wY%19b{%$TdB)N{p8?w0U}1o`JT`ExjPH8w>LwZ* zeZvrY`gDn!KEu8quk(yY@q7dL0=q?XLm?Ud4gJror|c556rmI4{_=ufQ7KJxs;eM1 zD{Di8cgzF*(EDkS3Ix3%(zQ=_2dxHG#{fB2S6Few5E~d`hgS>Ikkr(WuABCtJG5l{ zr_<&|2hU=cd5Ty_C2_JT_%2>w7#3zO5v87NB=cE7#gB0@miDVC?9C|m5cax?!oDL! zyFl{%bg)ZHl0Xx+I6Gk7VAp?m9zGSL8YC~bHg_{!kcIfN08L%9VL{; zFG5N~HD9Rjs2_ZsgGcPc$m3fzC%^=?vKk?_7s7!1{WuA0 zW>yvpwyc(xdo1@4-fJx2LeB{F2VX{@wa{kcG(XxY{bS!6MUe>~DJ&dtcPThKuFtx} z1ci%mWPzW=taQzS~<1ZQQiU!^0!It%g@|(9h`eI;%hqAb1daBamB9;3APmN~C;C z@lbv6-(K|w15tL)x{;4!!ggj`I$|k5PY6V-;P@9@dWs3s0owV~rx|dbd9%Ek^Y4wn zO5j6rsWNXh(Jz-TRxwU>NKu{1Bk=X!F;rLkbIDR?t<`&bc7cN^6#3Sv38#ioSl*pw z9(&SUiLc)*m>`#Hwl1nV-g}a75Qbn3$xV}7Aa!BT0KGS; z5&C+zFadP|A4t$YG;cS&=MXA#n4&G#3nEbrnsFw)={?o3x#%~m%+aL{u~%lkEsD4gH8nDzQ0SVMHe!b3rJltn6lg zHa6zJBEThRvad~EHyL?~1_TEcWnfJ#?E_sA05k=wFP&pI;)vCk{g1Ec^o*3KYPhrv zr%)oMa9}`Qt{=jwlW3QHm<>yUZ`Upu;V(YqsY}^a{;FGF=jqyY(qLANJZCJ>UB(zu z`knRGWyrj%Jf@TOb9e$Fo~lnZvh@giKXJKbgCGxoG(Q|GEHJ=6_hnli*X26<;he0xt&r7}Dsv2WBV8 zVor1a8UJhSB&-)t*$}XchZh24MO$DF3XzFppA1rcBQ5Rivy`}zQi9!{sXqnC8brmI zVFOO^US6C9?GWx9=n*0Kl{bu(AUO(Y%x`p0%Fl#nfh2uJmPXBCxX^*gCddXpd)eXPD8%<{+h(`YJckKCdLev#oD#2Y zV!#MI=n^d;#Gay4;q~e>no?me&z?Oi4-O&_QOw!Npo;; z$jSAA#*Bu;lRV_V@-(&dHvp4`5CInn?k=-ALrH9dctSEZQKET8s|LHg?{eWKyUL3r zRE@kIae!Wq{N1R?Nc3GO6zYx6ORgxq$EgdYA0Cv|dG*zKNKHWRFM9J~a*_q7L-ki_ zvor?Q=GO-knRQte6%}z%h0t!>y7g`0CI?ui0Ae%4ISSt5kyJcX$TH#NtTh#tk`b=l z0+l9WkkMPwlg;8|;KBkpN5J}*k4C}@*a&|yLX*CGvAO<;10N`SL8oYgzT>}ze#5d= zxJN}U;QKO|+PJyXm2+x-epR}HuqMT7@8uo630W9hcnI(4$CIH8`43r5GtMBE(EzAn z?Rs|5UOf;f3^0h7_b68cAfnC5A#hWzwrXU8=}gbS_n2dtIo&?>wC~$)t@BBou^(IQ ztg~eboIYh=bjjrTL6mT2PD+V3`r`TV6V6;yz%vjq5h)!wCb3pLtu!!+0LqFQSumzQ zLEg_B{tJ+_fF`;~X{=c%N5Tx~9JebY+z1N;98*cT2$l`xhDiK5Wo4x&TZtG!|I8%F z_B>}yZEZ7E((atCLmE2FnW3AL@pyd~BWa=ox54cNYqX-m03J^pJLfG4$?%ULaVg{A z*zNyr_uyG zGH6IpvOcM==L|wqrJwWAZJf^d_yp~b$0euTW@>V8y&iP9@7p7fr? z)N=3KInvOY-dYdpw1ZU>#JP539txk`1EzE zmG;k5cudu>v8R5q$R(9K7}l5krm1W!=;J%R4I{d$>oU>q4)e*n3Kadhjrm8QgT_CT zz`uqwm=|nG4h=eUz0`p2z|#>IOg2;7E|rGL+&af7pA5nUT;q)MMz`E>uF^QS0Y=c9 z!yCS>Ob1N&w!%{Lm)ob5tX&kkMhsO}s#m|P_A;6=gw{iJ`6hvIbp~q!mc7+hWmg~3 zOIc!z9r7l+S8{BQ|1l4JSg$pRDsV^HVKUNMoG77^tuM+9m+$+W9L@EXHv7za`ew?* zMMEXLK^O?WwmYrnNspx@3uhAGayFa4TsGUCAX>{DP%qc0!WoqZpV|-e_IxNE# zgvl-9V(Wt`b-EK@8!}hVkvbkCvcShR_~Kd#Apy*BLH$BlQBK+1e!261ab4MH<}GUu z3&C~JH*XQD7GB5epEc4Jef=S+dgB1I@|ijb$HqT|*y>U73o@Yx(PQ1E_7|JAtX}t7 zH`!-8-BV+Cz7+9t3S?VbtMfjMQe#_Y+mk!l(2h<}o9_pE^_EKXTy@AsnQF0HaK{M_ z9VYTNE{NKb5r&p8V-h z_EtWPuz7cT+~vbv;h3=)%{3p(+WdA~js%$)@hrGJ;xH;T6V`F*IX-;(W6`^{36pA% z^>spRuQz>ionLKocT4Nj3#eF3WOmxIc*H8CW*_60hi|HbU~}xdb63r|P<;?3XmS*> zc0p`Yn=g#cWePWMT}3B8=fi7H-*wD1F(tGgTEOi5TU#$^CAoeY{BqOTNFnJnj8h{A zgAuLmbRb1zIeB$1fL5{kTi87bzI7PULGI=m+bHKc_mK%ACq{ zED-a?zoW%}`w?mfX%AsTbaDCAm`(gN)30miT=DP0oppbRSitWQ12mxd=tB)AWQ0A8 zJ&jj-FWY=j>J zV63yTY=SoibM>XJpvcYC!a;%T2FUc9&q9_;QRxbHjJq94C34Jpc}H>BqBU^eed?cV z&BLPI_pV{1NCb;&y?FUuvx^e+VL~6#?FyR#hGpj5vYn2Oiz!rYHh32Ul?j*;xYU6h zP1bV|O@Pps+x#!B*q=ekwktvYqXswKn}j3guRtg=6?aWx6^hcEOY&*7u-a@F!n*Yo$r`8a6i3#E)`5Y6 zi3F`8_;_eOzLc@#+WK?4I8#W9FDA*+Q?*|zWhaZ`*a1fdj?EmMp$@T9H5^eTx|;9hZO+Y zVag8J3XAO4aUKG?iNkZeg<4=Yo$A~2&kGu^x-&3(gB>wQcokL^&s5HHKZ8dsOo>rN zq{WcyX8vzko6nD?X(HmS1^6a#Ng8VE{P)Vgd0XnyWA$w3wA{lt7g>`=d2^J}&_#DV zzhgHS*PXJmvWkjtz?p!^Gz{bZVwnJ-MN1&8E>zzCO?R}Q>G0sj+c494fE_N3$Z>i& z*Rl`&CnQo}1Rd+>Z+S%A-`*@U^&3hJNvrQZ@qh$Lz10q(3M(HyI^Mvk8Pv~igUd~Z z#8djZGNk`gSw2OHt4#tqTqSy4t&6d96ULA=!v!}mIUyq@aYYqoI+t+t{QerjH8Hj0 z%X&aUvPqpXZ--nlruhNWUpq1k5E;-Xj0&)WZ&n0>tVFG;S64FYc%&tqm0)cc$8zCH z*_PmTa7li0FYPN-R8@B>7pA1tQhI&ZDtm$Mrn3?yCnqNkc~6#o2WYXr=A#Yq7!!$+ zj65vp_Gbo309uBHoz=gFcrUo4q5TB9LP+YWEN@)1Ezt*?3=aiHBd~prR@tudnCc)8 zO-Y$S&|3;-UR#lCuu(<3R%J5#b-AWye~QLfkQOd8%uIkTVkkB~G4be+fJ)Pp+}xH0 z8xH%NxRrE)lLy0!^A0|ycXcfb1t}X?9~7!a)&70fq|8UfJNpV3JXMJ(tW5`KbG0gw zGGrqj6CI85aG1jEi$R)fL$N)3U{Q>7Y-T?($Nv@W?M(VRi_#~;2B5>zl3;=Eaa!y! zb&CTQE03`%Fdu|_T*u`v8>m5;Y!T3P^&~OPvGDYiQXIp(_BN{XHW5dmRz}O%w3hRAOxhnPX>u&#}AtqYBawFFT1u zNFR*kZpeXmH2e^-#DK0gJQED2#Ee5I>f~IKXXEfwu2*5-q&BQMXW+y!0}i}U5{^4@ zY{c^N{b)Nmi}Ujbr>6rTxsBwWm0JM54>~TG446!ED`N>lOc44-J&;2w5;#1jScfSP z5F8x5?s>sFa&mYe>YO}T^5>uLM@D{Fdp-R2u>z!N%xd%R-&f&^7+l`02#ykh%6s9y ze$EjJ6crGs1CoS8Af8t+F=b@BdwXTY!~$u-BoY)BhE(8BT|pQ?MJsWGOpSsCfX=J# zlO_6ca3IyrLKQg^1yh~2&?mNIhb_Fu4(|xk*Vi9A+~XjUu*o&vn`@(TBosg?8oJzY z1prs(Mh!&@(6DxvV_C10WZbX3T$}p|j*@{{$8A~I=g+IA;ghAMkux8nC9_JlEAd9} zZ)r)^!)vcsb^@F;XYDSiD~V)9o~RSwIx3#6 z_3PJTEOGku6qu#44~Dw|TDNcXhqeS1J+})DpRY#mzpNU^WMzA!No%^M5YNqh57FYx z($X*3!+!=B16`-78=RNg=+|>gGqY}rk&P`Z{i<5mO@z+DS{yOXx`Hu{BNQnh@k>fb z6m)k1C`V-unnJO@P^|b3S=17Q@I?vhId=UiF$9W7JbU-fG9W;q=4(I1Aj0TzjD#7N{5Q&9}6z_JD~R0Z=Z ziWC6#?Q3t~MA#b=&Aabe9N- ziP7ylaz7mrtS|1Q-#pIat^Rh_6P%1s$z5?!zO?skRN7!n+V>%DkLt>&?a*m6BPZNdmj6LBw?|A&v>hxqdfqW9kvv9G-;ZbJ$7iS zUCurD;l|RpZ@UyM@`Uog?>djvAyQJ(pS7-FH>tq}w!+yXZTOTQ_7j$Q@$vS~_d@Vv zeTQ-X4$y+|epj94FKeU^F}p6_O;1O5v=TyrZ*4NYm~Bu>!#NM?8{|Al0su)KDK4}W zsAll|fN%|Lfsb7+cD;|HiV{DGqXY!*Lv@$2tKcgq7oK@%25olN><+ z0QpYB84#ZE-`{QuxGfHEup)RKrD=L$xDDI$WewrjkdP3JK``ffVLg!Y#VUS<^rc{{ zI0^$W?J;ki7neyCmX}Xj`U2WF#*)T)rE%f9f=|?mfTq)o0W;WWQqqfKh*22Kt6`{u z#+ZX5K3Ni~&(Q1ZOpH||0Dz&x!wv^{MoUaKZ)|cBWNId=i`GSPNt;>_&52QpAyW&< z-a41ueP6_xg0Ik0QBd4wxeu3*tk-B4v`9bjX6mss%Za#DK@B3rFCinNlBWgD>v5iM zlP0Sw3-TR>xG@lkB1ENI5~8)&b`lGpPemXi?htq-7RD~+%j~PO>|naX03Io?ndR5; z(=)X^Ul5V?Nl6_x;&^)iR=FacI!Iy*!&4A$EYZ0DI%2kV7BaE;j@5`9LajYdM!X|= zsq@XP#gdJ8#E(mGrJ3<>Ofxg&Qhch&U81jg`JGL?IjkzNyz%HlAq>JGp5*bbF9r@F z4`F1t)I@o8HG5lsuv4(Y_r+A>yz~l=VBd~xJ?u#K_V&)(Af+dKUu56}P~v^ToBXlu zSe~h5&-T{SGt2DGGn9rCBSF`kkHhD?zCN(6qn>zd1O)6Mcge{?7%`gs!GP52@<;HALEdvIrXSGk{YbVK zKvhl?G!>B5g_duz-kVbBG+U(g)F-9LZ&MEFLcrExk0TM)o7Fbx6I z5~n%H4)6*{2!QWE<{#;N;kc4uT%d12PlEy&h9A)PUd`I)Vc&0Tv_~Q6Da6*I z09;*2D5ttQ*?Z#?qC3H)dZHSqJUT3FvY^mSjg4vWF`#HfGwGRk6sr%LMRj!mFnw4w zoH_+!za_l%p%j8Wl0E;>ITPuOa1`;WAdKRkFi{}^3-|uXZf5AsPn?K|iGh%C3C2Tg z;prNDIPIO&%Hr#X?jq(dQ;P;eY3?4hE}EHllb;X~JZ-u}7Uyf-8-HfyPQZ(Oa{;+ zwzZw`=H7N8JqgY89h$=Z6sNoL4`gb|`z_tD=yRTOdKc(818r(Li|n7H7zaP-B0?4N z#V5uDg8R+-?xEb0%0lf1)w}E;)D#r^DKOzh`^P_V+Kgq9uNXrrSrg}$Cwx?+FGB|R5p78Y4R7uw<6)TsopR7WU!?mcz61g6C?mTjk48T-vp6MvX ziPAgH&q7EWYdEMc&@?tSBHImnKh8^7GUKY^)?#V|8bjtq#wJ@-SRli|>Jo&S{@&iJ zv@jOC!_2&83+$xKoCm4pNVM-QY^s80l}!xfxr;tj z67yi8pla8UOS^L?(53Ij>M}e~g~YEOj3ah+qC|^{L5*+l^s3H>m+Lni2S_U^xt!qT zxs8>zm@Nr{s`2LCl9Kmc+d*@JgBs$_arMn$Lp)VRhxURJeG!#sw(0-#ztEU3J z1_w)eMJ*mAw9+b^Sf*qLDpB0yFa8z*pfSfIMRysO_vr(BQ+1`1ZP9B=ZyDzWz>4l? z%srl)d}qzKHwmHJ3XatAqF6+~ptiC&iHkHOCE@-EsoX01`rDRzDro&77`Yh}W9@vm z_0!f0&TH+qxay0(@(b2s?J#WSi++xgK%!bHsLszRC4!VE&M#eFpC9&V6hhSbJBf`3Su4`P(z4f40Qw>}5$;5ZTbH}ftgG>N&~7)6g} z<|{>R@3a{)Wjmkb*jVP3xk^>gVrGt!_l+1dn9cq##GfY>zJT_ue?%vtE!Qte%K|ww=C9*0$4H??&)!0E|5@1kX0e zUZ~AKJEi|X2_ANy?Lx8Mdd0h}aREusLms>yrzNC2GMQ^f500Q=h`xT^w7~7w$yRJk zW77k{4i7kdzCtVuUKq?shnmk)q@Yq=c7AHkNiOI5UMC-ubqpS&o)LaEmBkld^Eze5 zs>-$vI8SAZnAh6kPM+MioFFg$2R8YG6wgLnmL|V``ttVrI^wAAM*D?Q@>^Bq6`6uR#J&^*9N zZqGl>2+l>5D@QV|uF2-4cr?V$aC^V7DBlZGzz)Cvikb}+VaeWJUbCJ~GNkm}%J50T zQHEfy1S+a`m*mLx*LwdAQWD>Hj(H=i5(G-LN>&#+C=icISaxdKXmBt)@W0@>t@8WN zUgMckBXF{+a!`Y;0mw7=MvdF48dSxxYXaN;@nti24n%Sbj=M7ia*PS29ylMSsB>F& zf6BkUhJ^W}^!i@iF|L0ZES!s_pt$>hbnXEC8Ud#t-VVQiWB!f*7d#qFt#(8xA+896 zuc}vpYmR#gmHhsm@Ml5$zzY|!QNuE1KL;#&ft^A^0{MUD$kOUCWMoJt!GgvEk``0H z5v&j(CRnQ2_5wM;OTyj;3;+)c?+yws5fSyg&b<;6ZONGLf(AABbs1*?K#a89jjH)+ zO#l4V=d2(iCD@}jHhhXUFfeeCggHi#26$hwCjMXu#_HEFU&lH4@}(x4xkzpZ2`B<* zK7ZEE)B;!x2jrxLgu9wBDnY$VoRy-tI4%Kvd{S2jm6KqWl6WAd7XNrjMksM3LnQb| zW$zDnt-3lgMI}B4SH^XlJG*!D*nJ)e`?hJ1@fP*kr`PCIsmbcrvaQ*5 z`x5!=ev%%=@um-<&yt!Ag6}wVU3mAcTr|JKoF?3(TGorl3GucVOCTI+hpYM$LO#$z zU`&eL(rTgS?v7th9;RFjRON=bI9c4!p4}Gu%+kfl>BW3ypJS)E>WLfFolVc5M{@6S zy?(m1$4bxmgrbHWu7jZV;#6uh zdW#!P5+2jS!e=WGC3`rv4L*>d zmH3qc(nw1i!TyJv4&EmKK6=GvM8|+NW1CYE$&F|d*l4&woofH$4fi(=T0Q}RIZs)v&|{kxeIKIz0h0?J zzXmJ(?Vfld(+M4F%YnM~9dpeq8dKz&r&vz>a~!4wTaCXn426}zU+miG8T z(+GqcuoQ6Aazo+jfdGK^IKjVv_aBzQsP@aZl{TAsynPrXAzR@DgWP2%MOZrEcmW9k zYp{FjGdPi`YEblI9-(h^UjjCS{6V_HW}V`v(bGcihs$;B@fZqPK*EQ)B0#EOTy4x& z{QK%A_9w|oOP3El!x&mvP;g7;ED9VLd7$oJ5Y>m%F;0Og&^=c=our6F_2YGJW5d+h4V?Hq+Op_5uW{>BpqNRq)hBp|dm@zTlOFUM2aEWgIy(nAr6IB4`#+i8xX;-XcIyj#Ei zVZdtAXI}hpwe(O6Ht9}r=KG`{CYp@{Jroj=eBD+be9ot6mw_; zr*^{Kw@y-8CyhSd?B9^>p`I@HE_kD{4kugq22Mf(Y1oWtCUe$3hf>?{Tx8zY*U-qv zAJG1QW}y3z%A?lP7Z!k0ZMNV9W^mD^J<}wl*_2zC1_ACm7f-wn~Mi&F^A|9#UJ!ics_H zx&ne!h3C1;pi$n4j;=RHwYs}qL7gWGT<$A(f)rDVTuJYHial?Ls=?d6ZU&l(`6GP>!Sh@!FQ}f1yYuD2VZlC20+OlN}ts<+8+f&EYp1bSY9|z>(-SqUJ zmPRthLipBgy^bEPu0?{4IEO+NnB(4qJcGs#EC9qWbf2p?`}=66$5&vBLHk+(^Dy+5 zcmNp=JC_?`PXmzS2lJA9wh%&~KLi>K#Q|0z3OqD9wg;~T9F}7J{A~qe4lE^5rL<1I z9-c*_EhbS%DRu)i92h`+6vAOKPu{y{&#;>emLAO10rchMw(G;Re%@0SD^G{n>g|R# zYe+vSA3C4~ehDkRl>OS(F9v9T6+ogX zd@3Mefflv){C)ubs;bu>CK09erSGmjKHq@3_`zCXlwQ#n{(2ob2HBf)+_OV|lU49^r1H4{OeP=p+V*U-oJ#p3e zxVVA`TUL4Pbzg4`+_VMr{U5K6?Z1}c8q>bbzb@*U|EGVQpQ#kd9i+ifKe7JnrAcCW8|r6Y~p(UvDM<&Dd0xLcsUq zX`0#!jYraL_4%U#Q%75QId4%V35c*IQGJu+ul4KVDsLh?Eg4VC#TJh9%XXXU!+Tft z-%Op2Z?<(~B*oTssy$<=TO8mgV0nFOFc5g4~ac&QQw_?1Hy17}i+B%wagNYcsbZ nFj5dn;6R#NI;=&NaQCltrLc#p@BfPiAaguj{an^LB{Ts51m2&w From 3fa815cd4e6f4fad1fd33e23daee5b13e558d87e Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Thu, 22 Feb 2024 10:53:31 +0900 Subject: [PATCH 20/40] fix: drop extraneous log file --- dzgui.sh | 7 +++---- helpers/funcs | 2 +- helpers/ui.py | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/dzgui.sh b/dzgui.sh index 98d7b1f..ed20a58 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o pipefail -version=5.0.3 +version=5.0.4 #CONSTANTS aid=221100 @@ -536,10 +536,10 @@ fetch_dzq(){ fetch_helpers_by_sum(){ declare -A sums sums=( - ["ui.py"]="36b9ccdda7561e129861456e36dcb5e0" + ["ui.py"]="e7018a683f562f9b85bdc126fda4526a" ["query_v2.py"]="1822bd1769ce7d7cb0d686a60f9fa197" ["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397" - ["funcs"]="3fed32357ed35127f0e4055ace0c9c94" + ["funcs"]="c95362b84afdfba64c35d4752248b4a0" ) local author="aclist" local repo="dztui" @@ -560,7 +560,6 @@ fetch_helpers_by_sum(){ sum="${sums[$i]}" full_path="$helpers_path/$file" url="https://raw.githubusercontent.com/$author/$repo/$realbranch/helpers/$file" - echo "$url" >> $HOME/log if [[ -f "$full_path" ]] && [[ $(get_hash "$full_path") == $sum ]]; then logger INFO "$file is current" else diff --git a/helpers/funcs b/helpers/funcs index 3eb1aea..a6fc8ad 100755 --- a/helpers/funcs +++ b/helpers/funcs @@ -1,6 +1,6 @@ #!/usr/bin/env bash set -o pipefail -version=5.0.3 +version=5.0.4 #CONSTANTS aid=221100 diff --git a/helpers/ui.py b/helpers/ui.py index f21e6ee..ffce4dc 100644 --- a/helpers/ui.py +++ b/helpers/ui.py @@ -16,7 +16,7 @@ locale.setlocale(locale.LC_ALL, '') gi.require_version("Gtk", "3.0") from gi.repository import Gtk, GLib, Gdk, GObject, Pango -# 5.0.3 +# 5.0.4 app_name = "DZGUI" cache = {} From b09505120ede443a48ae64443756543d8ebcfd97 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Mon, 18 Mar 2024 19:44:44 +0900 Subject: [PATCH 21/40] feat: ping servers --- CHANGELOG.md | 10 +++++ dzgui.sh | 7 ++-- helpers/funcs | 55 ++++++++++++++++++------ helpers/ui.py | 113 ++++++++++++++++++++++++++++++++++++++++++++------ 4 files changed, 157 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75361a2..bfca4dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [5.1.0] +### Added +- Make columns in the server browser user-resizable (affects Server Browser, My Servers, and Recent Servers) +- Save dragged position of user-resized columns +- Display ping to server in statusbar: by popular request, added the ability to visualize both distance to server and round-trip latency (ping), at the cost of a small calculation delay. Please leave + feedback regarding whether this feature feels fast/responsive enough. + +### Fixed +- Fixed a rare scenario in Auto Mod Install Mode where defunct mods (mods no longer available on Steam) would try to be downloaded if the user had previously downloaded the mod + ## [5.0.0] 2024-01-31 ### Added - Context switching: navigate to different pages using side buttons diff --git a/dzgui.sh b/dzgui.sh index ed20a58..d7dec28 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o pipefail -version=5.0.4 +version=5.1.0 #CONSTANTS aid=221100 @@ -534,12 +534,13 @@ fetch_dzq(){ logger INFO "Updated DZQ to sha '$sha'" } fetch_helpers_by_sum(){ + source "$config_file" declare -A sums sums=( - ["ui.py"]="e7018a683f562f9b85bdc126fda4526a" + ["ui.py"]="7189aff7b37e19561c6cfc3f486ca031" ["query_v2.py"]="1822bd1769ce7d7cb0d686a60f9fa197" ["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397" - ["funcs"]="c95362b84afdfba64c35d4752248b4a0" + ["funcs"]="5940b8276f67a45ddb413adc42263e6a" ) local author="aclist" local repo="dztui" diff --git a/helpers/funcs b/helpers/funcs index a6fc8ad..72243b1 100755 --- a/helpers/funcs +++ b/helpers/funcs @@ -1,6 +1,6 @@ #!/usr/bin/env bash set -o pipefail -version=5.0.4 +version=5.1.0 #CONSTANTS aid=221100 @@ -111,6 +111,7 @@ declare -A funcs=( ["list_mods"]="list_mods" ["delete"]="delete_local_mod" ["show_server_modlist"]="show_server_modlist" +["test_ping"]="test_ping" ["is_in_favs"]="is_in_favs" ["show_log"]="show_log" ["gen_log"]="generate_log" @@ -560,13 +561,22 @@ dump_servers(){ filter_servers "$file" "$@" } logger(){ - local date="$(date "+%F %T,%3N")" - local tag="$1" - local string="$2" + local date="$(date "+%F %T,%3N")" + local tag="$1" + local string="$2" local self="${BASH_SOURCE[0]}" local caller="${FUNCNAME[1]}" local line="${BASH_LINENO[0]}" - printf "%s␞%s␞%s::%s()::%s␞%s\n" "$date" "$tag" "$self" "$caller" "$line" "$string" >> "$debug_log" + printf "%s␞%s␞%s::%s()::%s␞%s\n" "$date" "$tag" "$self" "$caller" "$line" "$string" >> "$debug_log" +} +test_ping(){ + shift + local ip="$1" + local qport="$2" + local res + res=$(ping -c1 -4 -W0.5 $1 | grep time= | awk -F= '{print $4}') + [[ ! $? -eq 0 ]] && res="Unreachable" + printf "%s" "$res" } show_server_modlist(){ shift @@ -1023,6 +1033,7 @@ try_connect(){ if [[ -n $auto_install ]]; then logger INFO "Merging modlists" diff=$(merge_modlists "$diff") + diff=$(query_defunct "$diff") fi if [[ -n $diff ]]; then if [[ $(check_architecture) -eq 1 ]] && [[ $(test_display_mode) == "gm" ]]; then @@ -1031,7 +1042,7 @@ try_connect(){ fi case $auto_install in "") manual_mod_install "$ip" "$gameport" "$diff" "$sanitized_mods";; - 1|2) auto_mod_install "$ip" "$gameport" "$diff" "$sanitized_mods" ;; + 1|2) manual_mod_install "$ip" "$gameport" "$diff" "$sanitized_mods" "auto" ;; esac else launch "$ip" "$gameport" "$sanitized_mods" @@ -1113,9 +1124,8 @@ force_update(){ fi rm "$versions_file" local update=$(check_timestamps) - console_dl "$update" && - $steam_cmd steam://open/downloads - echo "Finished requesting mod updates. Steam may have some mods pending for download." + manual_mod_install "null" "null" "$update" "null" "force" + echo "Finished requesting mod updates." return 0 } console_dl(){ @@ -1279,6 +1289,7 @@ manual_mod_install(){ local gameport="$2" local diff="$3" local sanitized_mods="$4" + local mode="$5" local ex="$state_path/dzg.watcher" readarray -t stage_mods <<< "$diff" @@ -1289,8 +1300,13 @@ manual_mod_install(){ [[ -f $ex ]] && return 1 log ${stage_mods[$i]} - $steam_cmd "steam://url/CommunityFilePage/${stage_mods[$i]}" - echo "# Opening workshop page for ${stage_mods[$i]}. If you see no progress after subscribing, try unsubscribing and resubscribing again until the download commences." + if [[ $mode == "auto" ]] || [[ $mode == "force" ]]; then + $steam_cmd "steam://url/CommunityFilePage/${stage_mods[$i]}+workshop_download_item $aid ${stage_mods[$i]}" + echo "# Opening workshop page for ${stage_mods[$i]}" + else + $steam_cmd "steam://url/CommunityFilePage/${stage_mods[$i]}" + echo "# Opening workshop page for ${stage_mods[$i]}. If you see no progress after subscribing, try unsubscribing and resubscribing again until the download commences." + fi sleep 1s foreground @@ -1303,7 +1319,11 @@ manual_mod_install(){ done foreground - echo "# Steam is downloading ${stage_mods[$i]} (mod $((i+1)) of ${#stage_mods[@]})" + if [[ $mode == "auto" ]] || [[ $mode == "force" ]]; then + echo "# Steam is downloading ${stage_mods[$i]} (mod $((i+1)) of ${#stage_mods[@]}). You do not need to manually Subscribe." + else + echo "# Steam is downloading ${stage_mods[$i]} (mod $((i+1)) of ${#stage_mods[@]})" + fi until [[ -d $workshop_dir/${stage_mods[$i]} ]]; do [[ -f $ex ]] && return 1 sleep 0.1s @@ -1316,9 +1336,18 @@ manual_mod_install(){ } _watcher > >($steamsafe_zenity --pulsate --progress --auto-close --title="DZG Watcher" --width=500 2>/dev/null; rc=$?; [[ $rc -eq 1 ]] && touch $ex) - # compare latest installed mods to modlist + if [[ $mode == "force" ]]; then + rm "$versions_file" + check_timestamps + return 0 + fi + local diff=$(compare "$sanitized_mods") if [[ -z $diff ]]; then + if [[ $mode == "auto" ]]; then + rm "$versions_file" + check_timestamps + fi launch "$ip" "$gameport" "$sanitized_mods" else printf "User aborted download process, or some mods may have failed to download. Try connecting again to resync." diff --git a/helpers/ui.py b/helpers/ui.py index ffce4dc..c4a98c9 100644 --- a/helpers/ui.py +++ b/helpers/ui.py @@ -1,5 +1,6 @@ import csv import gi +import json import locale import logging import os @@ -16,7 +17,7 @@ locale.setlocale(locale.LC_ALL, '') gi.require_version("Gtk", "3.0") from gi.repository import Gtk, GLib, Gdk, GObject, Pango -# 5.0.4 +# 5.1.0 app_name = "DZGUI" cache = {} @@ -47,6 +48,7 @@ state_path = '%s/.local/state/dzgui' %(user_path) helpers_path = '%s/.local/share/dzgui/helpers' %(user_path) log_path = '%s/logs' %(state_path) changelog_path = '%s/CHANGELOG.md' %(state_path) +geometry_path = '%s/dzg.cols.json' %(state_path) funcs = '%s/funcs' %(helpers_path) logger = logging.getLogger(__name__) @@ -147,7 +149,7 @@ status_tooltip = { "Change player name": "Update your in-game name (required by some servers)", "Change Steam API key": "Can be used if you revoked an old API key", "Change Battlemetrics API key": "Can be used if you revoked an old API key", - "Force update local mods": "Attempts to update any local mods out of synch with remote versions (experimental)", + "Force update local mods": "Synchronize the signatures of all local mods with remote versions (experimental)", "Output system info to log file": "Generates a system log for troubleshooting", "View changelog": "Opens the DZGUI changelog in a dialog window", "Show debug log": "Read the DZGUI log generated since startup", @@ -159,6 +161,10 @@ status_tooltip = { } +def format_ping(ping): + ms = " | Ping: %s" %(ping) + return ms + def format_distance(distance): if distance == "Unknown": distance = "| Distance: %s" %(distance) @@ -610,11 +616,13 @@ class CalcDist(multiprocessing.Process): def run(self): if self.addr in cache: logger.info("Address '%s' already in cache" %(self.addr)) - self.result_queue.put([self.addr, cache[self.addr]]) + self.result_queue.put([self.addr, cache[self.addr][0], cache[self.addr][1]]) return proc = call_out(self.widget, "get_dist", self.ip) + proc2 = call_out(self.widget, "test_ping", self.ip) km = proc.stdout - self.result_queue.put([self.addr, km]) + ping = proc2.stdout + self.result_queue.put([self.addr, km, ping]) class TreeView(Gtk.TreeView): @@ -784,9 +792,10 @@ class TreeView(Gtk.TreeView): if addr is None: return if addr in cache: - dist = format_distance(cache[addr]) + dist = format_distance(cache[addr][0]) + ping = format_ping(cache[addr][1]) - tooltip = server_tooltip[0] + dist + tooltip = server_tooltip[0] + dist + ping grid.update_statusbar(tooltip) return self.emit("on_distcalc_started") @@ -873,6 +882,8 @@ class TreeView(Gtk.TreeView): right_panel.set_filter_visibility(True) dialog.destroy() self.grab_focus() + for column in self.get_columns(): + column.connect("notify::width", self._on_col_width_changed) grid = self.get_outer_grid() right_panel = grid.right_panel @@ -911,6 +922,33 @@ class TreeView(Gtk.TreeView): total_mods = result[1] GLib.idle_add(load) + def _on_col_width_changed(self, col, width): + + def write_json(title, size): + data = {"cols": { title: size } } + j = json.dumps(data, indent=2) + with open(geometry_path, "w") as outfile: + outfile.write(j) + logger.info("Wrote initial column widths to '%s'" %(geometry_path)) + + title = col.get_title() + size = col.get_width() + if "Name" in title: + title = "Name" + + if os.path.isfile(geometry_path): + with open(geometry_path, "r") as infile: + try: + data = json.load(infile) + data["cols"][title] = size + with open(geometry_path, "w") as outfile: + outfile.write(json.dumps(data, indent=2)) + except json.decoder.JSONDecodeError: + logger.critical("JSON decode error in '%s'" %(geometry_path)) + write_json(title, size) + else: + write_json(title, size) + def _update_multi_column(self, mode): # Local server lists may have different filter toggles from remote list # FIXME: tree selection updates twice here. attach signal later @@ -919,14 +957,35 @@ class TreeView(Gtk.TreeView): for column in self.get_columns(): self.remove_column(column) row_store.clear() + + if os.path.isfile(geometry_path): + with open(geometry_path, "r") as infile: + try: + data = json.load(infile) + valid_json = True + except json.decoder.JSONDecodeError: + logger.critical("JSON decode error in '%s'" %(geometry_path)) + valid_json = False + else: + valid_json = False + for i, column_title in enumerate(browser_cols): renderer = Gtk.CellRendererText() column = Gtk.TreeViewColumn(column_title, renderer, text=i) + column.set_resizable(True) column.set_sort_column_id(i) - if ("Name" in column_title): - column.set_fixed_width(800) - if (column_title == "Map"): - column.set_fixed_width(300) + + if valid_json: + if "Name" in column_title: + column_title = "Name" + saved_size = data["cols"][column_title] + column.set_fixed_width(saved_size) + else: + if ("Name" in column_title): + column.set_fixed_width(800) + if (column_title == "Map"): + column.set_fixed_width(300) + self.append_column(column) self.update_first_col(mode) @@ -1282,6 +1341,32 @@ def KeysDialog(parent, text, mode): return dialog +class PingDialog(GenericDialog): + def __init__(self, parent, text, mode, record): + super().__init__(parent, text, mode) + dialogBox = self.get_content_area() + self.set_default_response(Gtk.ResponseType.OK) + self.set_size_request(500, 200) + wait_dialog = GenericDialog(parent, "Checking ping", "WAIT") + wait_dialog.show_all() + thread = threading.Thread(target=self._background, args=(wait_dialog, parent, record)) + thread.start() + + def _background(self, dialog, parent, record): + def _load(): + dialog.destroy() + self.show_all() + ping = data.stdout + self.format_secondary_text("Ping to remote server: %s" %(ping)) + res = self.run() + self.destroy() + + addr = record.split(':') + ip = addr[0] + qport = addr[2] + data = call_out(parent, "test_ping", ip, qport) + GLib.idle_add(_load) + class ModDialog(GenericDialog): def __init__(self, parent, text, mode, record): super().__init__(parent, text, mode) @@ -1453,9 +1538,13 @@ class Grid(Gtk.Grid): if latest_result is not None: addr = latest_result[0] km = latest_result[1] - cache[addr] = km + ping = latest_result[2] + + cache[addr] = km, ping + + ping = format_ping(ping) dist = format_distance(km) - tooltip = server_tooltip[1] = server_tooltip[0] + dist + tooltip = server_tooltip[1] = server_tooltip[0] + dist + ping self.update_statusbar(tooltip) return True From c92234375711a280df22547f7d09861e5209a1ab Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Mon, 18 Mar 2024 19:45:47 +0900 Subject: [PATCH 22/40] chore: update changelog --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bfca4dc..af0d61b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,7 @@ ### Added - Make columns in the server browser user-resizable (affects Server Browser, My Servers, and Recent Servers) - Save dragged position of user-resized columns -- Display ping to server in statusbar: by popular request, added the ability to visualize both distance to server and round-trip latency (ping), at the cost of a small calculation delay. Please leave - feedback regarding whether this feature feels fast/responsive enough. +- Display ping to server in statusbar: by popular request, added the ability to visualize both distance to server and round-trip latency (ping), at the cost of a small calculation delay. Please leave feedback regarding whether this feature feels fast/responsive enough. ### Fixed - Fixed a rare scenario in Auto Mod Install Mode where defunct mods (mods no longer available on Steam) would try to be downloaded if the user had previously downloaded the mod From 4c7237264ab6490c682c87076ad09f51dcdf3a41 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Mon, 18 Mar 2024 19:53:06 +0900 Subject: [PATCH 23/40] fix: hotfix for remote file paths --- CHANGELOG.md | 6 +++++- dzgui.sh | 9 ++++++--- helpers/funcs | 2 +- helpers/ui.py | 2 +- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bfca4dc..b4ade6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # Changelog -## [5.1.0] +## [5.1.1] 2024-03-18 +### Fixed +- Hotfix for remote helper files not being fetched correctly + +## [5.1.0] 2024-03-18 ### Added - Make columns in the server browser user-resizable (affects Server Browser, My Servers, and Recent Servers) - Save dragged position of user-resized columns diff --git a/dzgui.sh b/dzgui.sh index d7dec28..3d25e6c 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o pipefail -version=5.1.0 +version=5.1.1 #CONSTANTS aid=221100 @@ -537,10 +537,10 @@ fetch_helpers_by_sum(){ source "$config_file" declare -A sums sums=( - ["ui.py"]="7189aff7b37e19561c6cfc3f486ca031" + ["ui.py"]="7ffd38571285a92fea00faea8027612b" ["query_v2.py"]="1822bd1769ce7d7cb0d686a60f9fa197" ["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397" - ["funcs"]="5940b8276f67a45ddb413adc42263e6a" + ["funcs"]="e56b8da82177ff6e6269701229bd6442" ) local author="aclist" local repo="dztui" @@ -555,6 +555,9 @@ fetch_helpers_by_sum(){ else realbranch="$branch" fi + if [[ $realbranch == "stable" ]]; then + realbranch="dzgui" + fi for i in "${!sums[@]}"; do file="$i" diff --git a/helpers/funcs b/helpers/funcs index 72243b1..0802284 100755 --- a/helpers/funcs +++ b/helpers/funcs @@ -1,6 +1,6 @@ #!/usr/bin/env bash set -o pipefail -version=5.1.0 +version=5.1.1 #CONSTANTS aid=221100 diff --git a/helpers/ui.py b/helpers/ui.py index c4a98c9..7414b1a 100644 --- a/helpers/ui.py +++ b/helpers/ui.py @@ -17,7 +17,7 @@ locale.setlocale(locale.LC_ALL, '') gi.require_version("Gtk", "3.0") from gi.repository import Gtk, GLib, Gdk, GObject, Pango -# 5.1.0 +# 5.1.1 app_name = "DZGUI" cache = {} From 3fea7d1f52c31e7445fb11ba4911be65d4ba65ef Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Thu, 21 Mar 2024 22:03:38 +0900 Subject: [PATCH 24/40] feat: refresh player count --- CHANGELOG.md | 8 +++++++ dzgui.sh | 6 ++--- helpers/funcs | 17 +++++++++++--- helpers/ui.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++----- 4 files changed, 81 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c25ff9..8bfc35b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [5.2.0] 2024-03-21 +### Added +- Refresh player count for active row: invoke via right-click context meu or directly with the Ctrl-r hotkey. This feature has a 30 second global cooldown to prevent throttling. + +### Fixed +- Improve case-insensitive keyword search to be portable across awk versions (previous version required gawk) +- Fixed a dialog string from being shown twice when adding a server to favorites via context menus + ## [5.1.1] 2024-03-18 ### Fixed - Hotfix for remote helper files not being fetched correctly diff --git a/dzgui.sh b/dzgui.sh index 3d25e6c..0d7b247 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o pipefail -version=5.1.1 +version=5.2.0 #CONSTANTS aid=221100 @@ -537,10 +537,10 @@ fetch_helpers_by_sum(){ source "$config_file" declare -A sums sums=( - ["ui.py"]="7ffd38571285a92fea00faea8027612b" + ["ui.py"]="05a84408e1d375a38a899b715c38da6e" ["query_v2.py"]="1822bd1769ce7d7cb0d686a60f9fa197" ["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397" - ["funcs"]="e56b8da82177ff6e6269701229bd6442" + ["funcs"]="80f1740a56e0b81d8c811ef9ac749c36" ) local author="aclist" local repo="dztui" diff --git a/helpers/funcs b/helpers/funcs index 0802284..de540a5 100755 --- a/helpers/funcs +++ b/helpers/funcs @@ -1,6 +1,6 @@ #!/usr/bin/env bash set -o pipefail -version=5.1.1 +version=5.2.0 #CONSTANTS aid=221100 @@ -121,8 +121,20 @@ declare -A funcs=( ["Remove from history"]="remove_from_history" ["force_update"]="force_update" ["Handshake"]="final_handshake" +["get_player_count"]="get_player_count" ) +get_player_count(){ + shift + local res + local ip="$1" + local qport="$2" + res=$(a2s $ip $qport info) + [[ ! $? -eq 0 ]] && return 1 + local players="$(<<< $res jq -r '.[].players')" + printf "%s" "$players" +} + validate_and_connect(){ local context="$1" local addr="$2" @@ -447,7 +459,7 @@ filter_servers(){ } filter_keyword(){ keyword=$(sanitize "$keyword") - <<< "$filtered" KEYWORD="$keyword" awk -F$separator 'BEGIN{IGNORECASE=1} $0 ~ ENVIRON["KEYWORD"] {print $0}' + <<< "$filtered" awk -F$separator -v keyword="$keyword" 'tolower($0) ~ tolower(keyword)' } filter_duplicates(){ if [[ ${filters[*]} =~ Duplicate ]]; then @@ -787,7 +799,6 @@ update_favs_from_table(){ echo "Removed $record from saved servers" else add_to_favs "$record" - echo "Added $record to saved servers" fi return 0 } diff --git a/helpers/ui.py b/helpers/ui.py index 7414b1a..ded35c8 100644 --- a/helpers/ui.py +++ b/helpers/ui.py @@ -3,10 +3,11 @@ import gi import json import locale import logging -import os -import signal +import math import multiprocessing +import os import re +import signal import subprocess import sys import textwrap @@ -17,9 +18,11 @@ locale.setlocale(locale.LC_ALL, '') gi.require_version("Gtk", "3.0") from gi.repository import Gtk, GLib, Gdk, GObject, Pango -# 5.1.1 +# 5.2.0 app_name = "DZGUI" +start_time = 0 + cache = {} config_vals = [] stored_keys = [] @@ -691,6 +694,8 @@ class TreeView(Gtk.TreeView): ip = addr.split(':')[0] record = "%s:%s" %(ip, qport) self.clipboard.set_text(record, -1) + case "Refresh player count": + self.refresh_player_count() case "Show server-side mods": record = "%s:%s" %(self.get_column_at_index(6), self.get_column_at_index(7)) dialog = ModDialog(parent, "Enter/double click a row to open in Steam Workshop. ESC exits this dialog", "Modlist", record) @@ -729,9 +734,9 @@ class TreeView(Gtk.TreeView): self.menu = Gtk.Menu() mod_context_items = ["Open in Steam Workshop", "Delete mod"] - subcontext_items = {"Server browser": ["Add to my servers", "Copy IP to clipboard", "Show server-side mods"], - "My saved servers": ["Remove from my servers", "Copy IP to clipboard", "Show server-side mods"], - "Recent servers": ["Remove from history", "Copy IP to clipboard", "Show server-side mods"], + subcontext_items = {"Server browser": ["Add to my servers", "Copy IP to clipboard", "Show server-side mods", "Refresh player count"], + "My saved servers": ["Remove from my servers", "Copy IP to clipboard", "Show server-side mods", "Refresh player count"], + "Recent servers": ["Remove from history", "Copy IP to clipboard", "Show server-side mods", "Refresh player count"], } # submenu hierarchy https://stackoverflow.com/questions/52847909/how-to-add-a-sub-menu-to-a-gtk-menu if context == "Mod": @@ -760,6 +765,22 @@ class TreeView(Gtk.TreeView): else: self.menu.popup_at_pointer(event) + def refresh_player_count(self): + parent = self.get_outer_window() + + global start_time + then = start_time + now = time.monotonic() + diff = now - then + cooldown = 30 - math.floor(diff) + if ((start_time > 0) and (now - then) < 30): + spawn_dialog(parent, "Global refresh cooldown not met. Wait %s second(s)." %(str(cooldown)), "NOTIFY") + return + start_time = now + + thread = threading.Thread(target=self._background_player_count, args=()) + thread.start() + def get_outer_window(self): win = self.get_parent().get_parent().get_parent() return win @@ -844,6 +865,8 @@ class TreeView(Gtk.TreeView): debug.set_active(True) case Gdk.KEY_l: self._on_button_release(self, event) + case Gdk.KEY_r: + self.refresh_player_count() case Gdk.KEY_f: if self.get_first_col() == "Mod": return @@ -874,6 +897,32 @@ class TreeView(Gtk.TreeView): value = model.get_value(tree_iter, index) return value + def _background_player_count(self): + def _load(): + server_store[path][4] = int(data.stdout) + wait_dialog.destroy() + + parent = self.get_outer_window() + wait_dialog = GenericDialog(parent, "Refreshing player count", "WAIT") + wait_dialog.show_all() + select = self.get_selection() + sels = select.get_selected_rows() + (model, pathlist) = sels + if len(pathlist) < 1: + return + path = pathlist[0] + tree_iter = model.get_iter(path) + addr = server_store[path][6] + qport = server_store[path][7] + ip = addr.split(':')[0] + qport = str(qport) + + data = call_out(self, "get_player_count", ip, qport) + if data.returncode == 1: + wait_dialog.destroy() + return + GLib.idle_add(_load) + def _background(self, dialog, mode): def loadTable(): for map in maps: @@ -1330,6 +1379,7 @@ def KeysDialog(parent, text, mode): Ctrl-f: jump to keyword field Ctrl-m: jump to maps dropdown Ctrl-d: toggle dry run (debug) mode + Ctrl-r: refresh player count for active row 1-9: toggle filter ON/OFF ESC: jump back to main view from keyword/maps """ From 931352f975ec4da91b818d818b034ba9315536e9 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Mon, 1 Apr 2024 17:11:19 +0900 Subject: [PATCH 25/40] fix: auto discovery --- CHANGELOG.md | 7 +++++++ docs/dzgui.adoc | 3 ++- docs/dzgui_dark.adoc | 1 + dzgui.sh | 10 +++++----- helpers/funcs | 2 +- helpers/ui.py | 4 ++-- 6 files changed, 18 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8bfc35b..d55d032 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [5.2.1] 2024-04-01 +### Fixed +- Fixed a regression where where the first-time setup dialog would not trigger auto-path discovery + +### Changed +- Reworded some menus and dialogs for clarity + ## [5.2.0] 2024-03-21 ### Added - Refresh player count for active row: invoke via right-click context meu or directly with the Ctrl-r hotkey. This feature has a 30 second global cooldown to prevent throttling. diff --git a/docs/dzgui.adoc b/docs/dzgui.adoc index 312c3b6..3c2e61f 100644 --- a/docs/dzgui.adoc +++ b/docs/dzgui.adoc @@ -22,11 +22,12 @@ If not already installed, the below can be found in your system's package manage If any dependencies are missing when the application starts, it will warn you, so you need not take any preemptive measures here. -- `curl` +- `curl` - `jq` - `zenity` - `steam` - `wmctrl` or `xdotool` +- `PyGObject` (`python-gobject`) === Preparation . **Download DZGUI and make it executable:** diff --git a/docs/dzgui_dark.adoc b/docs/dzgui_dark.adoc index 3cc4eb1..ae4ff35 100644 --- a/docs/dzgui_dark.adoc +++ b/docs/dzgui_dark.adoc @@ -27,6 +27,7 @@ If any dependencies are missing when the application starts, it will warn you, s - `zenity` - `steam` - `wmctrl` or `xdotool` +- `PyGObject` (`python-gobject`) === Preparation . **Download DZGUI and make it executable:** diff --git a/dzgui.sh b/dzgui.sh index 0d7b247..b75a2c9 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o pipefail -version=5.2.0 +version=5.2.1 #CONSTANTS aid=221100 @@ -130,7 +130,7 @@ test_gobject(){ python3 -c "import gi" if [[ ! $? -eq 0 ]]; then logger CRITICAL "Missing PyGObject" - fdialog "Requires PyGObject (python3-gobject)" + fdialog "Requires PyGObject (python-gobject)" exit 1 fi logger INFO "Found PyGObject in Python env" @@ -537,10 +537,10 @@ fetch_helpers_by_sum(){ source "$config_file" declare -A sums sums=( - ["ui.py"]="05a84408e1d375a38a899b715c38da6e" + ["ui.py"]="9bfa6de9a648c7c8aa24bdec66a38eae" ["query_v2.py"]="1822bd1769ce7d7cb0d686a60f9fa197" ["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397" - ["funcs"]="80f1740a56e0b81d8c811ef9ac749c36" + ["funcs"]="48ed212978d20bc24a1adda38389e1b1" ) local author="aclist" local repo="dztui" @@ -664,7 +664,7 @@ find_default_path(){ $sd_res case "$res" in - *auto*) discover ;; + *auto*) _discover ;; *manual*) zenity --info --text="\nSelect the top-level entry point to the location where Steam (not DayZ)\nis installed and before entering the \"steamapps\" path.\n\nE.g., if Steam is installed at:\n\"/media/mydrive/Steam\"\n\nCorrect:\n- \"/media/mydrive/Steam\"\n\nIncorrect:\n- \"/media/mydrive/Steam/steamapps/common/DayZ\"\n- \"/media/mydrive/\"" --width=500 && file_picker ;; diff --git a/helpers/funcs b/helpers/funcs index de540a5..e1e8b6d 100755 --- a/helpers/funcs +++ b/helpers/funcs @@ -1,6 +1,6 @@ #!/usr/bin/env bash set -o pipefail -version=5.2.0 +version=5.2.1 #CONSTANTS aid=221100 diff --git a/helpers/ui.py b/helpers/ui.py index ded35c8..6641277 100644 --- a/helpers/ui.py +++ b/helpers/ui.py @@ -18,7 +18,7 @@ locale.setlocale(locale.LC_ALL, '') gi.require_version("Gtk", "3.0") from gi.repository import Gtk, GLib, Gdk, GObject, Pango -# 5.2.0 +# 5.2.1 app_name = "DZGUI" start_time = 0 @@ -137,7 +137,7 @@ side_buttons = [ ] status_tooltip = { "Server browser": "Used to browse the global server list", - "My saved servers": "Browse your saved servers", + "My saved servers": "Browse your saved servers. Unreachable/offline servers will be excluded", "Quick-connect to favorite server": "Connect to your favorite server", "Recent servers": "Shows the last 10 servers you connected to (includes attempts)", "Connect by IP": "Connect to a server by IP", From da4476897f104036e3c3d53139b47105cc94aab1 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Tue, 2 Apr 2024 11:58:47 +0900 Subject: [PATCH 26/40] docs: correct typo --- docs/dzgui.adoc | 2 +- docs/dzgui_dark.adoc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/dzgui.adoc b/docs/dzgui.adoc index 3c2e61f..49a4113 100644 --- a/docs/dzgui.adoc +++ b/docs/dzgui.adoc @@ -502,5 +502,5 @@ Tracked down several highly obscure but key bugs in the early development of the Played a critical role in the elaboration of many of the features we now take for granted by being an early beta tester who not only reported bugs, but helped workshop and brainstorm various ideas that turned into QOL features. -.Thiughtduck216 +.Thoughtduck216 Contributed extensive beta testing of Steam Deck builds and provided ongoing troubleshooting for Steam Deck users diff --git a/docs/dzgui_dark.adoc b/docs/dzgui_dark.adoc index ae4ff35..54b758c 100644 --- a/docs/dzgui_dark.adoc +++ b/docs/dzgui_dark.adoc @@ -502,5 +502,5 @@ Tracked down several highly obscure but key bugs in the early development of the Played a critical role in the elaboration of many of the features we now take for granted by being an early beta tester who not only reported bugs, but helped workshop and brainstorm various ideas that turned into QOL features. -.Thiughtduck216 +.Thoughtduck216 Contributed extensive beta testing of Steam Deck builds and provided ongoing troubleshooting for Steam Deck users From e80e987958d5e75691ee787cc0fcdeced55dc3c9 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Wed, 3 Apr 2024 11:41:02 +0900 Subject: [PATCH 27/40] docs: update changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d55d032..0fa2a14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,9 @@ - Improve case-insensitive keyword search to be portable across awk versions (previous version required gawk) - Fixed a dialog string from being shown twice when adding a server to favorites via context menus +### Changed +- Use a more robust method for downloading mods when auto mod install is enabled + ## [5.1.1] 2024-03-18 ### Fixed - Hotfix for remote helper files not being fetched correctly From ee831f076a80bd590d01d99859ca12de56981a96 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Fri, 19 Apr 2024 05:49:42 +0900 Subject: [PATCH 28/40] docs: update docs --- docs/dzgui.adoc | 485 +++++++++++++++++++++++----------------- docs/dzgui_dark.adoc | 487 ++++++++++++++++++++++++----------------- images/tutorial/08.png | Bin 0 -> 12071 bytes images/tutorial/09.png | Bin 0 -> 31823 bytes 4 files changed, 575 insertions(+), 397 deletions(-) create mode 100644 images/tutorial/08.png create mode 100644 images/tutorial/09.png diff --git a/docs/dzgui.adoc b/docs/dzgui.adoc index 49a4113..7e4cd6c 100644 --- a/docs/dzgui.adoc +++ b/docs/dzgui.adoc @@ -2,8 +2,8 @@ :toc: left :stylesheet: custom.css -= DZGUI documentation -DayZ official/community server graphical launcher for Linux | Last updated: {d} += DZGUI documentation (v5.x.x) +DayZ server browser and mod manager for Linux | Last updated: {d} Click https://aclist.github.io/dzgui/dzgui_dark.html[here] for dark mode @@ -22,6 +22,8 @@ If not already installed, the below can be found in your system's package manage If any dependencies are missing when the application starts, it will warn you, so you need not take any preemptive measures here. +All dependencies are installed out of the box on Steam Deck. + - `curl` - `jq` - `zenity` @@ -30,15 +32,16 @@ If any dependencies are missing when the application starts, it will warn you, s - `PyGObject` (`python-gobject`) === Preparation -. **Download DZGUI and make it executable:** +==== Step 1: Download DZGUI and make it executable -Automatic method: generic OS (skip to step 3 below when complete) +**Automatic method: generic OS** + +Invoke the command below from a terminal: ``` curl -s "https://raw.githubusercontent.com/aclist/dztui/dzgui/install.sh" | bash ``` - -Automatic method: nix-based systems (contributed by lelgenio) +**Automatic method: nix-based systems (contributed by lelgenio)** Follow the instructions at https://github.com/lelgenio/dzgui-nix to ingest the package and dependencies into your system using flakes. @@ -50,44 +53,49 @@ git clone https://github.com/aclist/dztui.git chmod +x dzgui.sh ``` -''' -[start=2] -. **Update the `vm.max_map_count` value (see https://www.protondb.com/app/221100)** +==== Step 2: update the vm.max_map_count value + +On most modern distributions, it will seldom be necessary to update this value anymore, since it is set to a sufficiently large number for performance-intensive applications. **Automatic method:** This is handled automatically by DZGUI if you just choose to run the application out of the box. You will be prompted for your sudo password in order to check whether the system map count is too small. This is a one-time check that will not be triggered again once the map count is updated. -If you used the automatic method, you can skip to Step 3 below. [NOTE] -The map count check prompts for a sudo password. If you are using a Steam Deck, this check is not necessary. +If you are using a Steam Deck, this step is not necessary. -This process writes the count to the file `/etc/sysctl.d/dayz.conf`. +The process writes the count to the file `/etc/sysctl.d/dayz.conf`. -If the map count was lower than the threshold, it is updated to 1048576. -If the system map count was already higher, that value is interpolated into this file as a redundancy check. +If the system map count was lower than the threshold, it is updated to `1048576`. +If the system map count was already higher, that value is interpolated into this file for redundancy purposes and to avoid sudo escalation on subsequent launches of the application. [NOTE] If, for reasons unrelated to DayZ, you choose at a later time to raise your system map count higher than it originally was and you find that the count is not sticking, check for the presence of the `dayz.conf` file to see if it is taking precedence and delete it accordingly. -**Ephemeral method:** -the map count will revert after the system is rebooted. +If you used the automatic method, you can skip to <> below. + +**Manual method:** + +If you wish to update this value yourself without intervention from DZGUI, you have two options: + + +Invoke the command below for an **ephemeral change**. Note that if changing the map count on a one-time basis, it will revert to the old value after the system is rebooted. + ``` sudo sysctl -w vm.max_map_count=1048576 ``` -**Persistent method:** +Invoke the command below for a **persistent change**: ``` echo 'vm.max_map_count=1048576' | sudo tee /etc/sysctl.d/dayz.conf ``` -[start=3] -. **Prepare a Steam account with a DayZ license** -. **Enable a Proton version ≥ `6.8` (or use Experimental) in the `Compatibility` field of the game's right-click options.** +==== Step 3: Prepare a Steam account with a DayZ license +Enable a Proton version ≥ `6.8` (or use Proton Experimental) in the `Compatibility` field of the game's right-click options. As of this writing, any recent version of Proton should work, and it is encouraged to use the most recent one. === API key & server IDs @@ -98,107 +106,111 @@ echo 'vm.max_map_count=1048576' | sudo tee /etc/sysctl.d/dayz.conf ==== BattleMetrics API key (optional) -This step is optional. Using this key in conjunction with the above allows you to connect to and query servers by ID instead of by IP. See <>. +This key is optional. Using this key in conjunction with the above allows you to also connect to and query servers by numerical ID instead of by IP. See <>. -1. Register for an API key at https://www.battlemetrics.com/account/register?after=%2Fdevelopers[BattleMetrics] (free) -2. From the **Personal Access Tokens** area, Select **New Token** -3. Give the token any name in the field at the top -4. Leave all options **unchecked** and scroll to the bottom, select **Create Token** +1. Register for an API key at https://www.battlemetrics.com/account/register?after=%2Fdevelopers[BattleMetrics] (free). +2. From the **Personal Access Tokens** area, Select **New Token**. +3. Give the token any name in the field at the top. +4. Leave all options **unchecked** and scroll to the bottom, select **Create Token**. 5. Once configured, you can insert this key in the app when launching it for the first time (optional), or later on when using the connect/query by ID methods in the app for the first time. === First-time launch -0. It is always advised to have Steam running in the background. DayZ is meant to run "on top of" Steam. +It is always advised to have Steam running in the background. DZGUI is meant to run "on top of" Steam, and will warn you if Steam appears to not be running. -1. DZGUI can be launched one of two ways. +DZGUI can be launched one of two ways. -**From the terminal:** +**From a terminal:** ``` ./dzgui.sh ``` -Launching from the terminal gives more verbose information in the event of a crash, and can be a good way of troubleshooting problems. +Launching from a terminal may give more verbose information in the event of a crash, and can be a good way of troubleshooting problems. -**From the shortcut shipped with the application** (if using a desktop environment based on the Freedesktop specification): +**From the shortcut shipped with the application**: -- Located under the "Games" category of your system's applications list. -- Via the "DZGUI" desktop shortcut (Steam Deck only) +If you are using a desktop environment (DE) based on the Freedesktop specification, shortcuts will be installed for you. -[start=2] -2. Follow the menu prompts given by the app. You will be asked to provide: +- One shortcut is located under the "Games" category of your system's applications list. +- The other is accessed via the "DZGUI" desktop icon (Steam Deck only) -- Player name (a generic handle, required by some servers) +After launching the app, follow the menu prompts onscreen. You will be asked to provide the following: + +- Player name (a handle name that identifies your character; required by some servers) - Steam API key (required) - BM API key (optional) ==== Steam path discovery DZGUI will now attempt to locate your default Steam installation and DayZ path. You *must* have DayZ installed in your Steam library in order to proceed. (It can be installed to any drive of your choosing.) + If DZGUI cannot find Steam or cannot find DayZ installed at the detected Steam path, it will prompt you to manually specify the path to your Steam installation. -Specify the top-level entry point to Steam, not DayZ. E.g., +Specify the root, top-level entry point to Steam, not DayZ. E.g., `/media/mydrive/Steam`, not `/media/mydrive/Steam/steamapps/common/DayZ` If your Steam installation is in a hidden folder but the file picker dialog does not show hidden folders, ensure that your GTK settings are set to show hidden files. -For GTK 2, edit the file below so that `ShowHidden=true`: +For GTK 2, update the file `$HOME/.config/gtk-2.0/gtkfilechooser.ini` to contain this line: -`~/.config/gtk-2.0/gtkfilechooser.ini` +`ShowHidden=true` -For GTK 3, invoke the command: +For GTK 3, invoke the command: `gsettings set org.gtk.Settings.FileChooser show-hidden true` -=== Steam integration & artwork +=== Steam integration & artwork -==== Adding to steam +==== Adding DZGUI as a third-party app DZGUI can be added to Steam as a "non-Steam game" in order to facilitate integration with Steam Deck or desktop environments. -1. Launch Steam in the "Large" view. +1. Launch Steam in the "Large" (default) view. [NOTE] -Steam Deck: you must switch to "Desktop Mode" and launch Steam from the desktop. Steam Deck Game Mode does not support keyboard entry on some third party apps. +Steam Deck: you must switch to "Desktop Mode" and launch Steam from the desktop. Steam Deck's Game Mode view has limited support for configuration of custom games. [start=2] -2. Select **Add a Game** > **Add a Non-Steam Game** from the lower left-hand corner. +2. Select **Add a Game** > **Add a Non-Steam Game** from the lower left-hand corner of the Steam client. image::https://github.com/aclist/dztui/raw/dzgui/images/tutorial/01.png[01,500] [start=3] 3. Navigate to `$HOME/.local/share/applications/` and select `dzgui.desktop` -4. Select **Add Selected Programs**. - -==== Controller layout - -An official controller layout for Steam Deck is available in the Steam community layouts section. Search for "DZGUI Official Config" to download it. Long-press the View button and Select button (☰) to toggle D-pad navigation. This creates an additional layer that lets you navigate through menus using the D-pad and A/B to respectively confirm selections and go back. Remember to toggle this layer off again after launching your game to revert back to the master layer. +4. Select **Add Selected Programs** to add a shortcut to DZGUI. ==== Artwork -The application also ships with Steam cover artwork. It is located under: +DZGUI also ships with Steam cover artwork. It is located under: ``` $HOME/.local/share/dzgui ``` -The artwork consists of four parts: +The artwork consists of five parts: -1. Grid: a vertical "box art" grid used on library pages -2. Hero: a large horizontal banner used on the app's details page -3. Logo: a transparent icon used to remove Steam's default app text -4. dzgui: used by freedesktop shortcut to generate a desktop icon; not intended for the user +[%autowidth] +|=== +|Name|Description -Updating the artwork: +|Hero|a large horizontal banner used on the app's details page, and on landscape-orientation covers in the Recently Played section +|Icon|a square icon used for the tree/list view of the Steam library +|Grid|a vertical "box art" cover used on Steam library pages +|Logo|a transparent icon used to remove Steam's default app text +|dzgui|used by freedesktop shortcut to generate a desktop icon; not intended for manual use by the user +|=== -1. Navigate to the app's details page and right-click the blank image header at the top. +===== Updating the artwork + +1. From the main library view, navigate to the app's details page and right-click the blank image header at the top. image::https://github.com/aclist/dztui/raw/dzgui/images/tutorial/03.png[03,700] [start=2] 2. Select **Set Custom Background** -3. Select to display All Files from the File type dropdown +3. Select to display **All Files** from the File type dropdown 4. Navigate to the artwork path described above and select `hero.png`. 5. Next, right-click the image background and select **Set Custom Logo**. @@ -222,6 +234,22 @@ image::https://github.com/aclist/dztui/raw/dzgui/images/tutorial/06.png[06,700] image::https://github.com/aclist/dztui/raw/dzgui/images/tutorial/07.png[07,700] +[start=9] +9. Right-click the DZGUI entry and select Properties to open the properties dialog. Next to the **Shortcut** field, you will see a small square box which represents the game's icon. Click this to open a file explorer and select `icon.png` from the path above. This will add a small icon to the list view. + +image::https://github.com/aclist/dztui/raw/dzgui/images/tutorial/08.png[08,700] + +[start=10] +10. After you launch DZGUI for the first time, you should return to the library view and select the Recent Games dropdown on the right-hand side. Steam shows a collection of box art based on categories like "Play Next", "Recent Games", etc. Look for a downward-pointing caret icon and click it, then select the "Recently Played" category. If DZGUI was the last item played, it will be shown with a landscape, rather than portrait, orientation cover, which is initially blank. To customize this cover, right click it and select `Manage > Set custom artwork`, then select the `hero.png` image again for this area. + +image::https://github.com/aclist/dztui/raw/dzgui/images/tutorial/09.png[09,700] + +==== Controller layout + +A controller layout for Steam Deck is available in the Steam community layouts section. Search for "DZGUI Official Config" to download it. This layout provides modal layers intended to facilitate interaction with the DZGUI interface, but does not attempt to customize in-game DayZ controls in a detailed fashion. + +Long-press the View button and Select button (☰) to toggle D-pad navigation. This creates an additional layer that lets you navigate through menus using the D-pad and A/B to respectively confirm selections and go back. Remember to toggle this layer off again after launching your game to revert back to the master layer. + === Updating the app If DZGUI detects a new upstream version, it will prompt you to download it automatically. @@ -235,248 +263,308 @@ Upgrading is always advised. If you experience a problem or need to restore the prior version of DZGUI and/or your configs, it is enough to simply replace the new version with the old one and relaunch the app. -The files can be found at: +The file can be found at: -Script: ``` -