Merge branch 'early'

This commit is contained in:
Dragoon Dorise 2024-03-12 18:07:49 +01:00
commit 72c405a342
32 changed files with 160 additions and 60 deletions

View file

@ -33,7 +33,7 @@
<name>xbox360</name>
<fullname>Microsoft Xbox 360</fullname>
<path>%ROMPATH%/xbox360/roms</path>
<extension>.iso .ISO . .xex .XEX</extension>
<extension>.iso .ISO . .xex .XEX .zar .ZAR</extension>
<command label="Xenia (Proton)">/bin/bash /run/media/mmcblk0p1/Emulation/tools/launchers/xenia.sh z:%ROM%</command>
<platform>xbox360</platform>
<theme>xbox360</theme>

View file

@ -88,7 +88,7 @@
/run/media/mmcblk0p1/Emulation/roms/megadrivejp
/run/media/mmcblk0p1/Emulation/roms/megaduck
/run/media/mmcblk0p1/Emulation/roms/mess
/run/media/mmcblk0p1/Emulation/roms/model2
/run/media/mmcblk0p1/Emulation/roms/model2/roms
/run/media/mmcblk0p1/Emulation/roms/model3
/run/media/mmcblk0p1/Emulation/roms/moonlight
/run/media/mmcblk0p1/Emulation/roms/moto
@ -182,6 +182,7 @@
/run/media/mmcblk0p1/Emulation/roms/x68000
/run/media/mmcblk0p1/Emulation/roms/xbox
/run/media/mmcblk0p1/Emulation/roms/xbox360/roms
/run/media/mmcblk0p1/Emulation/roms/xbox360/roms/xbla
/run/media/mmcblk0p1/Emulation/roms/zmachine
/run/media/mmcblk0p1/Emulation/roms/zx81
/run/media/mmcblk0p1/Emulation/roms/zxspectrum

View file

@ -148,6 +148,8 @@ Ryujinx_setupSaves(){
linkToSaveFolder Ryujinx saves "$HOME/.config/Ryujinx/bis/user/save"
linkToSaveFolder Ryujinx saveMeta "$HOME/.config/Ryujinx/bis/user/saveMeta"
linkToSaveFolder Ryujinx system_saves "$HOME/.config/Ryujinx/bis/system/save"
}
#SetupStorage

View file

@ -24,16 +24,16 @@ Xenia_install(){
Xenia_releaseURL="$Xenia_releaseURL_canary"
fi
local name="$Xenia_emuName-$version"
echo $name
setMSG "Installing Xenia $version"
#need to look at standardizing exe name; or download both? let the user choose at runtime?
#curl -L "$Xenia_releaseURL" --output "$romsPath"/xbox360/xenia.zip
if safeDownload "$name" "$Xenia_releaseURL" "$romsPath/xbox360/xenia.zip" "$showProgress"; then
mkdir -p "$romsPath"/xbox360/tmp
unzip -o "$romsPath"/xbox360/xenia.zip -d "$romsPath"/xbox360/tmp
rsync -avzh "$romsPath"/xbox360/tmp/ "$romsPath"/xbox360/
rm -rf "$romsPath"/xbox360/tmp
if safeDownload "$Xenia_emuName" "$Xenia_releaseURL" "$romsPath/xbox360/xenia.zip" "$showProgress"; then
#mkdir -p "$romsPath"/xbox360/tmp
unzip -o "$romsPath"/xbox360/xenia.zip -d "$romsPath"/xbox360
#rsync -avzh "$romsPath"/xbox360/tmp/ "$romsPath"/xbox360/
#rm -rf "$romsPath"/xbox360/tmp
rm -f "$romsPath"/xbox360/xenia.zip
# Prevents it from showing up in ES-DE
mv -f "$romsPath/xbox360/LICENSE" "$romsPath/xbox360/LICENSE.TXT"

View file

@ -293,6 +293,12 @@ cloud_sync_upload(){
}
cloud_sync_download(){
local branch=$("cd $HOME/.config/EmuDeck/backend && git rev-parse --abbrev-ref HEAD")
if [ "$branch" == "early" ] || [ "$branch" == "dev" ] ; then
echo "CloudSync Downloading"
else
return 0
fi
# startLog ${FUNCNAME[0]}
local emuName=$1
local timestamp=$(date +%s)
@ -438,6 +444,7 @@ cloud_sync_uploadEmu(){
}
cloud_sync_downloadEmu(){
# startLog ${FUNCNAME[0]}
local emuName=$1
local mode=$2

View file

@ -37,18 +37,68 @@ pegasus_init(){
rsync -avhp --mkpath "$EMUDECKGIT/configs/$pegasus_emuPath/" "$pegasus_path/"
#metadata and paths
rsync -r "$EMUDECKGIT/roms/" "$romsPath"
rsync -av -f"+ */" -f"- *" "$EMUDECKGIT/roms/" "$toolsPath/downloaded_media"
rsync -r --exclude='roms' --exclude='pfx' "$EMUDECKGIT/roms/" "$romsPath"
rsync -av --exclude='roms' --exclude='pfx' "$EMUDECKGIT/roms/" "$toolsPath/downloaded_media"
find $romsPath -type f -name "metadata.txt" -exec sed -i "s|CORESPATH|${RetroArch_cores}|g" {} \;
find $romsPath -type f -name "metadata.txt" -exec sed -i "s|/run/media/mmcblk0p1/Emulation|${emulationPath}|g" {} \;
for systemPath in "$romsPath"/*; do rm -rf "$systemPath/media" &> /dev/null; done
for systemPath in "$romsPath"/*; do system=$(echo "$systemPath" | sed 's/.*\/\([^\/]*\)\/\?$/\1/'); mkdir -p "$toolsPath/downloaded_media/$system/covers"; rm -rf "$toolsPath/downloaded_media/$system/box2dfront" ; mkdir -p "$toolsPath/downloaded_media/$system/marquees"; rm -rf "$toolsPath/downloaded_media/$system/wheel" &> /dev/null; rm -rf "$toolsPath/downloaded_media/$system/screenshot" &> /dev/null; mkdir -p "$toolsPath/downloaded_media/$system/screenshots/"; done
for systemPath in "$romsPath"/*; do system=$(echo "$systemPath" | sed 's/.*\/\([^\/]*\)\/\?$/\1/'); ln -s "$toolsPath/downloaded_media/$system" "$systemPath/media" &> /dev/null; ln -s "$toolsPath/downloaded_media/$system/covers/" "$toolsPath/downloaded_media/$system/box2dfront" &> /dev/null; ln -s "$toolsPath/downloaded_media/$system/marquees/" "$toolsPath/downloaded_media/$system/wheel" &> /dev/null; ln -s "$toolsPath/downloaded_media/$system/screenshots/" "$toolsPath/downloaded_media/$system/screenshot" &> /dev/null; done
for systemPath in "$romsPath"/*; do
echo $romsPath
if [[ "$systemPath" == "$romsPath/model2" || "$systemPath" == "$romsPath/xbox360" || "$systemPath" == "$romsPath/wiiu" ]]; then
rm -rf "$systemPath/roms/media" &> /dev/null;
rm -rf "$romsPath/xbox360/roms/xbla/media" &> /dev/null;
else
rm -rf "$systemPath/media" &> /dev/null;
fi
done
for systemPath in "$romsPath"/*; do
if [[ "$systemPath" == "$romsPath/model2" || "$systemPath" == "$romsPath/xbox360" || "$systemPath" == "$romsPath/wiiu" ]]; then
system=$(echo "$systemPath" | sed 's/.*\/\([^\/]*\)\/\?$/\1/')
echo $system
mkdir -p "$toolsPath/downloaded_media/$system/covers"
rm -rf "$toolsPath/downloaded_media/$system/box2dfront"
mkdir -p "$toolsPath/downloaded_media/$system/marquees"
rm -rf "$toolsPath/downloaded_media/$system/wheel" &> /dev/null
rm -rf "$toolsPath/downloaded_media/$system/screenshot" &> /dev/null
mkdir -p "$toolsPath/downloaded_media/$system/screenshots/"
else
system=$(echo "$systemPath" | sed 's/.*\/\([^\/]*\)\/\?$/\1/')
mkdir -p "$toolsPath/downloaded_media/$system/covers"
rm -rf "$toolsPath/downloaded_media/$system/box2dfront"
mkdir -p "$toolsPath/downloaded_media/$system/marquees"
rm -rf "$toolsPath/downloaded_media/$system/wheel" &> /dev/null
rm -rf "$toolsPath/downloaded_media/$system/screenshot" &> /dev/null
mkdir -p "$toolsPath/downloaded_media/$system/screenshots/"
fi
done
for systemPath in "$romsPath"/*; do
if [[ "$systemPath" == "$romsPath/model2" || "$systemPath" == "$romsPath/xbox360" || "$systemPath" == "$romsPath/wiiu" ]]; then
system=$(echo "$systemPath" | sed 's/.*\/\([^\/]*\)\/\?$/\1/')
ln -s "$toolsPath/downloaded_media/$system" "$systemPath/roms/media" &> /dev/null
ln -s "$toolsPath/downloaded_media/$system/covers/" "$toolsPath/downloaded_media/$system/box2dfront" &> /dev/null
ln -s "$toolsPath/downloaded_media/$system/marquees/" "$toolsPath/downloaded_media/$system/wheel" &> /dev/null
ln -s "$toolsPath/downloaded_media/$system/screenshots/" "$toolsPath/downloaded_media/$system/screenshot" &> /dev/null
cp -P "$romsPath/xbox360/roms/media" "$romsPath/xbox360/roms/xbla"
else
system=$(echo "$systemPath" | sed 's/.*\/\([^\/]*\)\/\?$/\1/')
ln -s "$toolsPath/downloaded_media/$system" "$systemPath/media" &> /dev/null
ln -s "$toolsPath/downloaded_media/$system/covers/" "$toolsPath/downloaded_media/$system/box2dfront" &> /dev/null
ln -s "$toolsPath/downloaded_media/$system/marquees/" "$toolsPath/downloaded_media/$system/wheel" &> /dev/null
ln -s "$toolsPath/downloaded_media/$system/screenshots/" "$toolsPath/downloaded_media/$system/screenshot" &> /dev/null
fi
done
for systemPath in "$romsPath"/*; do
rm -rf ".*/" &> /dev/null;
done
for systemPath in "$romsPath"/*; do rm -rf ".*/" &> /dev/null; done
sed -i "s|/run/media/mmcblk0p1/Emulation|${emulationPath}|g" "$pegasus_dir_file"
mkdir -p "$toolsPath/launchers/pegasus/"

View file

@ -179,7 +179,6 @@ appImageInit() {
#Xenia temp fix
if [ "$(Xenia_IsInstalled)" == "true" ]; then
#echo "NYI"
setSetting doInstallXenia "true"
Xenia_flushEmulatorLauncher
fi
@ -192,8 +191,7 @@ appImageInit() {
fi
touch "$HOME/.config/EmuDeck/.launcherupdate"
fi
#pcsx2 fix
if [ ! -f "$HOME/.config/EmuDeck/.pcsx2211" ]; then
cp "$HOME/.config/EmuDeck/backend/tools/launchers/pcsx2-qt.sh" "$toolsPath/launchers/pcsx2-qt.sh"

View file

@ -108,4 +108,5 @@ EMUDECK_URL="$(curl -s ${EMUDECK_GITHUB_URL} | grep -E 'browser_download_url.*Ap
mkdir -p ~/Applications
curl -L "${EMUDECK_URL}" -o ~/Applications/EmuDeck.AppImage 2>&1 | stdbuf -oL tr '\r' '\n' | sed -u 's/^ *\([0-9][0-9]*\).*\( [0-9].*$\)/\1\n#Download Speed\:\2/' | zenity --progress --title "Downloading EmuDeck" --width 600 --auto-close --no-cancel 2>/dev/null
chmod +x ~/Applications/EmuDeck.AppImage
~/Applications/EmuDeck.AppImage
nohup ~/Applications/EmuDeck.AppImage
exit

View file

@ -108,4 +108,5 @@ EMUDECK_URL="$(curl -s ${EMUDECK_GITHUB_URL} | grep -E 'browser_download_url.*Ap
mkdir -p ~/Applications
curl -L "${EMUDECK_URL}" -o ~/Applications/EmuDeck.AppImage 2>&1 | stdbuf -oL tr '\r' '\n' | sed -u 's/^ *\([0-9][0-9]*\).*\( [0-9].*$\)/\1\n#Download Speed\:\2/' | zenity --progress --title "Downloading EmuDeck" --width 600 --auto-close --no-cancel 2>/dev/null
chmod +x ~/Applications/EmuDeck.AppImage
~/Applications/EmuDeck.AppImage
nohup ~/Applications/EmuDeck.AppImage
exit

View file

@ -1,4 +1,4 @@
collection: Arcade
shortname: arcade
extensions: cmd, CMD, 7z, 7Z, zip, ZIP
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/retroarch.sh -L CORESPATH/mame_libretro.so {file.path}
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/mame.sh {file.path}

View file

@ -1,4 +1,4 @@
collection: Atari Jaguar
shortname: atarijaguar
extensions: j64, J64, jag, JAG, rom, ROM, abs, ABS, cof, COF, bin, BIN, prg, PRG, 7z, 7Z, zip, ZIP
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/retroarch.sh -L CORESPATH/virtualjaguar_libretro.so {file.path}
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/bigpemu.sh {file.path}

View file

@ -1,6 +1,6 @@
collection: Atari Jaguar CD
shortname: atarijaguarcd
extensions: j64, J64, jag, JAG, rom, ROM, abs, ABS, cof, COF, bin, BIN, prg, PRG, 7z, 7Z, zip, ZIP
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/retroarch.sh -L CORESPATH/virtualjaguar_libretro.so {file.path}
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/bigpemu.sh {file.path}

View file

@ -1,6 +1,6 @@
collection: Nintendo GameCube
shortname: gc
extensions: gcm, GCM, iso, ISO, wbfs, WBFS, wia, WIA, ciso, CISO, gcz, GCZ, elf, ELF, dol, DOL, dff, DFF, json, JSON, rvz, RVZ, tgc, TGC, wad, WAD, m3u, M3U
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/dolphin-emu.sh vblank_mode=0 %command% -b -e {file.path}
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/dolphin-emu.sh -b -e {file.path}

View file

@ -1,6 +0,0 @@
collection: Sega Model 2
shortname: model2
extensions: 7z, 7Z, zip, ZIP
launch: PLACEHOLDER {file.path}

View file

@ -0,0 +1,6 @@
collection: Sega Model 2
shortname: model2
extensions: zip, ZIP
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/model-2-emulator.sh {file.basename}

View file

@ -1,6 +1,6 @@
collection: Sega Model 3
shortname: model3
extensions: 7z, 7Z, zip, ZIP
launch: PLACEHOLDER {file.path}
extensions: zip, ZIP
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/supermodel.sh {file.path}

View file

@ -1,7 +1,7 @@
collection: Nintendo 64DD
shortname: n64dd
extensions: bin, BIN, n64, N64, ndd, NDD, u1, U1, v64, V64, z64, Z64, 7z, 7Z, zip, ZIP
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/retroarch.sh -L CORESPATH/parallel_n64_libretro.so {file.path}
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/rosaliesmupengui.sh --fullscreen --nogui --quit-after-emulation {file.path}

View file

@ -1,4 +1,4 @@
collection: Nintendo DS
shortname: nds
extensions: bin, BIN, nds, NDS, 7z, 7Z, zip, ZIP
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/melonds.sh -f {file.path}
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/retroarch.sh -L CORESPATH/melondsds_libretro.so {file.path}

View file

@ -1,7 +1,7 @@
collection: Sony PlayStation 3
shortname: ps3
extensions: desktop, ps3, PS3, ps3dir, PS3DIR
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/rpcs3.sh --no-gui {file.path}
extensions: desktop, DESKTOP
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/rpcs3.sh {file.path}

View file

@ -1,7 +1,7 @@
collection: Sony PlayStation Portable
shortname: psp
extensions: elf, ELF, iso, ISO, cso, CSO, prx, PRX, pbp, PBP
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/retroarch.sh -L CORESPATH/ppsspp_libretro.so {file.path}
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/ppsspp.sh {file.path}

View file

@ -1,4 +1,4 @@
collection: Nintendo Switch
shortname: switch
extensions: nca, NCA, nro, NRO, nso, NSO, nsp, NSP, xci, XCI, 7z, 7Z, zip, ZIP
launch: /bin/bash /run/media/mmcblk0p1/Emulation/tools/launchers/yuzu.sh -f -g '{file.path}'
extensions: nca, NCA, nro, NRO, nso, NSO, nsp, NSP, xci, XCI
launch: /bin/bash /run/media/mmcblk0p1/Emulation/tools/launchers/ryujinx.sh --fullscreen '{file.path}'

View file

@ -1,6 +1,6 @@
collection: VTech V, Smile
shortname: vsmile
extensions: bin, BIN, 7z, 7Z, zip, ZIP
launch: PLACEHOLDER {file.path}
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/mame.sh vsmile -cart {file.path}

View file

@ -1,4 +1,4 @@
collection: Nintendo Wii
shortname: wii
extensions: gcm, GCM, iso, ISO, wbfs, WBFS, wia, WIA, ciso, CISO, gcz, GCZ, elf, ELF, dol, DOL, dff, DFF, json, JSON, rvz, RVZ, tgc, TGC, wad, WAD, m3u, M3U
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/dolphin-emu.sh vblank_mode=0 %command% -b -e {file.path}
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/dolphin-emu.sh -b -e {file.path}

View file

@ -1,6 +1,6 @@
collection: Nintendo Wii U
shortname: wiiu
extensions: rpx, RPX, wud, WUD, wux, WUX, elf, ELF, iso, ISO, wad, WAD, wua, WUA
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/cemu.sh -f -g z:{file.path}
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/cemu.sh -f -g {file.path}

View file

@ -1,4 +1,4 @@
collection: Microsoft Xbox 360
shortname: xbox360
extensions: iso, ISO, xex, XEX
extensions: iso, ISO, xex, XEX, zar, ZAR
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/xenia.sh "Z:{file.path}"

View file

@ -0,0 +1,4 @@
collection: Microsoft Xbox 360
shortname: xbox360
extensions: iso, ISO, xex, XEX, zar, ZAR
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/xenia.sh "Z:{file.path}"

View file

@ -25,7 +25,14 @@ PROTONLAUNCH="$emulationPath/tools/proton-launch.sh"
BIGPEMU="$HOME/Applications/BigPEmu/BigPEmu.exe"
# APPID
APPID=$( /usr/bin/python "${APPIDPY}" "${EXE}" "${NAME}" )
if [ -e "/usr/bin/python" ]; then
APPID=$( /usr/bin/python "${APPIDPY}" "${EXE}" "${NAME}" )
elif [ -e "/usr/bin/python3" ]; then
APPID=$( /usr/bin/python3 "${APPIDPY}" "${EXE}" "${NAME}" )
else
echo "Python not found."
fi
echo "APPID: ${APPID}"
# Proton Version

View file

@ -154,7 +154,13 @@ main () {
checkFile "${CEMU}"
# APPID
APPID=$( /usr/bin/python "${APPIDPY}" "${EXE}" "${NAME}" )
if [ -e "/usr/bin/python" ]; then
APPID=$( /usr/bin/python "${APPIDPY}" "${EXE}" "${NAME}" )
elif [ -e "/usr/bin/python3" ]; then
APPID=$( /usr/bin/python3 "${APPIDPY}" "${EXE}" "${NAME}" )
else
echo "Python not found."
fi
echo "APPID: ${APPID}"
if [ -z "${APPID}" ]; then
reportError "Unable to calculate AppID" "true" "true"

View file

@ -19,12 +19,19 @@ else
chmod +x $exe
fi
#run the executable with the params.
#Fix first '
param="${@}"
substituteWith='"'
param=${param/\'/"$substituteWith"}
#Fix last ' on command
param=$(echo "$param" | sed 's/.$/"/')
eval "${exe} ${param}"
rm -rf "$savesPath/.gaming"
fileExtension="${@##*.}"
if [[ $fileExtension == "desktop" ]]; then
rpcs3desktopFile=$(grep -E "^Exec=" "${*}" | sed 's/^Exec=//' | sed 's/%%/%/g')
echo "Exec=$rpcs3desktopFile"
eval $rpcs3desktopFile
else
#run the executable with the params.
#Fix first '
param="${@}"
substituteWith='"'
param=${param/\'/"$substituteWith"}
#Fix last ' on command
param=$(echo "$param" | sed 's/.$/"/')
eval "${exe} ${param}"
fi

View file

@ -15,16 +15,24 @@ EXE="\"/usr/bin/bash\" \"${SELFPATH}\""
NAME="Xenia"
# AppID.py
APPIDPY="/run/media/mmcblk0p1/Emulation/tools/appID.py"
APPIDPY="${toolsPath}/appID.py"
# Proton Launcher Script
PROTONLAUNCH="/run/media/mmcblk0p1/Emulation/tools/proton-launch.sh"
PROTONLAUNCH="${toolsPath}/proton-launch.sh"
# Xenia.exe location
XENIA="/run/media/mmcblk0p1/Emulation/roms/xbox360/xenia_canary.exe"
XENIA="$romsPath/xbox360/xenia_canary.exe"
# APPID
APPID=$( /usr/bin/python "${APPIDPY}" "${EXE}" "${NAME}" )
if [ -e "/usr/bin/python" ]; then
APPID=$( /usr/bin/python "${APPIDPY}" "${EXE}" "${NAME}" )
elif [ -e "/usr/bin/python3" ]; then
APPID=$( /usr/bin/python3 "${APPIDPY}" "${EXE}" "${NAME}" )
else
echo "Python not found."
fi
echo "APPID: ${APPID}"
# Proton Version:
# - use env FORCED_PROTON_VER if set (FORCED_PROTON_VER="GE-Proton8-16" ./xenia.sh)

View file

@ -267,8 +267,16 @@ main () {
set_env
# Start application with Proton
echo "Running python ${PROTON} waitforexitandrun ${*}" >> "${LOGFILE}" # Send command to log just in case
python "${PROTON}" waitforexitandrun "${@}"
if [ -e "/usr/bin/python" ]; then
echo "Running python ${PROTON} waitforexitandrun ${*}" >> "${LOGFILE}" # Send command to log just in case
python "${PROTON}" waitforexitandrun "${@}"
elif [ -e "/usr/bin/python3" ]; then
echo "Running python ${PROTON} waitforexitandrun ${*}" >> "${LOGFILE}" # Send command to log just in case
python3 "${PROTON}" waitforexitandrun "${@}"
else
echo "Python not found."
fi
}
# Only run if run directly

View file

@ -19,7 +19,7 @@
"mame": { "id": "mame", "code": "MAME", "version": 0 },
"vita3k": { "id": "vita3k", "code": "Vita3k", "version": 0 },
"scummvm": { "id": "scummvm", "code": "ScummVM", "version": 0 },
"xenia": { "id": "xenia", "code": "Xenia", "version": 1 },
"xenia": { "id": "xenia", "code": "Xenia", "version": 2 },
"mgba": { "id": "mgba", "code": "mGBA", "version": 0 },
"flycast": { "id": "flycast", "code": "Flycast", "version": 0 },
"bigpemu": { "id": "bigpemu", "code": "BigPemu", "version": 0 },