Compare commits
16 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
d90a718818 | ||
|
6aeb0aa74b | ||
|
e317164c2b | ||
|
8e67a6ff89 | ||
|
7f4aae7e99 | ||
|
56f2872104 | ||
|
bb4f242e0b | ||
|
a16a4936a5 | ||
|
18cd57006b | ||
|
cae041cdee | ||
|
53c5487abe | ||
|
5b20bc534f | ||
|
51f77f08b7 | ||
|
131accb5ac | ||
|
bf05a14ef5 | ||
|
4726f55c3e |
2
.github/.gitignore
vendored
@ -1,2 +0,0 @@
|
||||
build_init.bat
|
||||
jdk.ini
|
515
.github/build.sh
vendored
@ -1,515 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
if [[ -z ${BSH_BUILD_PLATFORM-} ]]; then >&2 echo "BSH_BUILD_PLATFORM not set"; exit 1; fi
|
||||
if [[ -z ${BSH_HOST_ARCH-} ]]; then >&2 echo "BSH_HOST_ARCH not set"; exit 1; fi
|
||||
if [[ -z ${BSH_HOST_PLATFORM-} ]]; then >&2 echo "BSH_HOST_PLATFORM not set"; exit 1; fi
|
||||
if [[ -z ${BSH_HOST_LIBC-} ]]; then >&2 echo "BSH_HOST_LIBC not set"; exit 1; fi
|
||||
if [[ -z ${BSH_STATIC_DYNAMIC-} ]]; then >&2 echo "BSH_STATIC_DYNAMIC not set"; exit 1; fi
|
||||
if [[ -z ${BSH_DEBUG_RELEASE-} ]]; then >&2 echo "BSH_DEBUG_RELEASE not set"; exit 1; fi
|
||||
if [[ -z ${RELEASE_NAME-} ]]; then >&2 echo "RELEASE_NAME not set"; exit 1; fi
|
||||
if [[ -z ${RELEASE_TYPE-} ]]; then >&2 echo "RELEASE_TYPE not set"; exit 1; fi
|
||||
if [[ -z ${MOD_ID-} ]]; then >&2 echo "MOD_ID not set"; exit 1; fi
|
||||
if [[ -z ${SEPARATE_DEBUG-} ]]; then >&2 echo "SEPARATE_DEBUG not set"; exit 1; fi
|
||||
if [[ -z ${PACKAGE_MODE-} ]]; then >&2 echo "PACKAGE_MODE not set"; exit 1; fi
|
||||
if [[ -z ${ASSET_PATH-} ]]; then >&2 echo "ASSET_PATH not set"; exit 1; fi
|
||||
if [[ -z ${DEBUG_ASSET_PATH-} ]]; then >&2 echo "DEBUG_ASSET_PATH not set"; exit 1; fi
|
||||
if [[ -z ${APP_NAME-} ]]; then >&2 echo "APP_NAME not set"; exit 1; fi
|
||||
if [[ -z ${APP_COMMENT-} ]]; then >&2 echo "APP_COMMENT not set"; exit 1; fi
|
||||
if [[ -z ${APP_EXE-} ]]; then >&2 echo "APP_EXE not set"; exit 1; fi
|
||||
if [[ -z ${APP_ID-} ]]; then >&2 echo "APP_ID not set"; exit 1; fi
|
||||
if [[ -z ${APP_DATA-} ]]; then >&2 echo "APP_DATA not set"; exit 1; fi
|
||||
if [[ -z ${APP_VENDOR-} ]]; then >&2 echo "APP_VENDOR not set"; exit 1; fi
|
||||
|
||||
case $BSH_HOST_ARCH-$BSH_HOST_PLATFORM-$BSH_HOST_LIBC-$BSH_STATIC_DYNAMIC in
|
||||
x86_64-linux-gnu-static) ;;
|
||||
x86_64-linux-gnu-dynamic) ;;
|
||||
x86_64-windows-mingw-static) ;;
|
||||
x86_64-windows-mingw-dynamic) ;;
|
||||
x86_64-windows-msvc-static) ;;
|
||||
x86_64-windows-msvc-dynamic) ;;
|
||||
x86-windows-msvc-static) ;;
|
||||
x86-windows-msvc-dynamic) ;;
|
||||
x86_64-darwin-macos-static) ;;
|
||||
x86_64-darwin-macos-dynamic) ;;
|
||||
aarch64-darwin-macos-static) ;;
|
||||
aarch64-darwin-macos-dynamic) ;;
|
||||
x86-android-bionic-static) ;;
|
||||
x86_64-android-bionic-static) ;;
|
||||
arm-android-bionic-static) ;;
|
||||
aarch64-android-bionic-static) ;;
|
||||
wasm32-emscripten-emscripten-static) ;;
|
||||
*) >&2 echo "configuration $BSH_HOST_ARCH-$BSH_HOST_PLATFORM-$BSH_HOST_LIBC-$BSH_STATIC_DYNAMIC is not supported" && exit 1;;
|
||||
esac
|
||||
|
||||
if [[ $BSH_HOST_PLATFORM == android ]]; then
|
||||
android_platform=android-31
|
||||
if [[ -z "${JAVA_HOME_8_X64-}" ]]; then
|
||||
>&2 echo "JAVA_HOME_8_X64 not set"
|
||||
exit 1
|
||||
fi
|
||||
if [[ -z "${ANDROID_SDK_ROOT-}" ]]; then
|
||||
>&2 echo "ANDROID_SDK_ROOT not set"
|
||||
exit 1
|
||||
fi
|
||||
if [[ -z "${ANDROID_NDK_LATEST_HOME-}" ]]; then
|
||||
>&2 echo "ANDROID_NDK_LATEST_HOME not set"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z ${BSH_NO_PACKAGES-} ]]; then
|
||||
case $BSH_HOST_PLATFORM in
|
||||
android)
|
||||
(
|
||||
export PATH=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/tools/bin:$PATH
|
||||
sdkmanager "platforms;$android_platform"
|
||||
)
|
||||
;;
|
||||
windows)
|
||||
if [[ $BSH_BUILD_PLATFORM-$BSH_HOST_LIBC == windows-mingw ]]; then
|
||||
pacman -S --noconfirm --needed mingw-w64-ucrt-x86_64-gcc
|
||||
if [[ $BSH_STATIC_DYNAMIC == static ]]; then
|
||||
pacman -S --noconfirm --needed mingw-w64-ucrt-x86_64-{cmake,7zip,jq} patch
|
||||
else
|
||||
pacman -S --noconfirm --needed mingw-w64-ucrt-x86_64-{pkgconf,bzip2,luajit,jsoncpp,curl,SDL2,libpng,meson,fftw,jq}
|
||||
fi
|
||||
export PKG_CONFIG=$(which pkg-config.exe)
|
||||
fi
|
||||
;;
|
||||
linux)
|
||||
sudo apt update
|
||||
if [[ $BSH_STATIC_DYNAMIC == static ]]; then
|
||||
sudo apt install libc6-dev libc6-dev-i386
|
||||
else
|
||||
sudo apt install libluajit-5.1-dev libcurl4-openssl-dev libfftw3-dev zlib1g-dev libsdl2-dev libbz2-dev libjsoncpp-dev
|
||||
fi
|
||||
;;
|
||||
darwin)
|
||||
brew install pkg-config binutils
|
||||
if [[ $BSH_STATIC_DYNAMIC != static ]]; then
|
||||
brew install luajit curl fftw zlib sdl2 bzip2 jsoncpp
|
||||
fi
|
||||
;;
|
||||
emscripten)
|
||||
git clone https://github.com/emscripten-core/emsdk.git --branch 3.1.30
|
||||
cd emsdk
|
||||
./emsdk install latest
|
||||
./emsdk activate latest
|
||||
. ./emsdk_env.sh
|
||||
cd ..
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
function inplace_sed() {
|
||||
local subst=$1
|
||||
local path=$2
|
||||
if [[ $BSH_BUILD_PLATFORM == darwin ]]; then
|
||||
sed -i "" -e $subst $path
|
||||
else
|
||||
sed -i $subst $path
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ $BSH_HOST_PLATFORM-$BSH_HOST_LIBC == windows-msvc ]]; then
|
||||
case $BSH_HOST_ARCH in
|
||||
x86_64) vs_env_arch=x64;;
|
||||
x86) vs_env_arch=x86;;
|
||||
esac
|
||||
VS_ENV_PARAMS=$vs_env_arch$'\t'-vcvars_ver=14.1
|
||||
. ./.github/vs-env.sh
|
||||
elif [[ $BSH_HOST_PLATFORM == darwin ]]; then
|
||||
# may need export SDKROOT=$(xcrun --show-sdk-path --sdk macosx11.1)
|
||||
CC=clang
|
||||
CXX=clang++
|
||||
if [[ $BSH_HOST_ARCH == aarch64 ]]; then
|
||||
macos_min_ver=11.0
|
||||
CC+=" -arch arm64"
|
||||
CXX+=" -arch arm64"
|
||||
else
|
||||
macos_min_ver=10.13
|
||||
CC+=" -arch x86_64"
|
||||
CXX+=" -arch x86_64"
|
||||
fi
|
||||
if [[ $BSH_STATIC_DYNAMIC == static ]]; then
|
||||
export MACOSX_DEPLOYMENT_TARGET=$macos_min_ver
|
||||
fi
|
||||
export CC
|
||||
export CXX
|
||||
elif [[ $BSH_HOST_PLATFORM == android ]]; then
|
||||
case $BSH_HOST_ARCH in
|
||||
x86_64) android_toolchain_prefix=x86_64-linux-android ; android_system_version=21; android_arch_abi=x86_64 ;;
|
||||
x86) android_toolchain_prefix=i686-linux-android ; android_system_version=21; android_arch_abi=x86 ;;
|
||||
aarch64) android_toolchain_prefix=aarch64-linux-android ; android_system_version=21; android_arch_abi=arm64-v8a ;;
|
||||
arm) android_toolchain_prefix=armv7a-linux-androideabi; android_system_version=21; android_arch_abi=armeabi-v7a;;
|
||||
esac
|
||||
android_toolchain_dir=$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64
|
||||
CC=$android_toolchain_dir/bin/$android_toolchain_prefix$android_system_version-clang
|
||||
CXX=$android_toolchain_dir/bin/$android_toolchain_prefix$android_system_version-clang++
|
||||
LD=$android_toolchain_dir/bin/$android_toolchain_prefix-ld
|
||||
AR=$android_toolchain_dir/bin/llvm-ar
|
||||
echo $AR
|
||||
CC+=" -fPIC"
|
||||
CXX+=" -fPIC"
|
||||
LD+=" -fPIC"
|
||||
export CC
|
||||
export CXX
|
||||
export LD
|
||||
export AR
|
||||
else
|
||||
export CC=gcc
|
||||
export CXX=g++
|
||||
fi
|
||||
|
||||
if [[ -d build ]]; then
|
||||
rm -r build
|
||||
fi
|
||||
|
||||
c_args=
|
||||
c_link_args=
|
||||
if [[ $BSH_HOST_PLATFORM-$BSH_HOST_LIBC != windows-msvc ]]; then
|
||||
c_args+=\'-ffunction-sections\',
|
||||
c_args+=\'-fdata-sections\',
|
||||
if [[ $BSH_HOST_PLATFORM == darwin ]]; then
|
||||
c_link_args+=\'-Wl,-dead_strip\',
|
||||
else
|
||||
c_link_args+=\'-Wl,--gc-sections\',
|
||||
fi
|
||||
fi
|
||||
if [[ $BSH_HOST_PLATFORM-$BSH_STATIC_DYNAMIC == darwin-static ]]; then
|
||||
c_args+=\'-mmacosx-version-min=$macos_min_ver\',
|
||||
c_link_args+=\'-mmacosx-version-min=$macos_min_ver\',
|
||||
fi
|
||||
|
||||
meson_configure=meson$'\t'setup
|
||||
if [[ $BSH_DEBUG_RELEASE == release ]]; then
|
||||
meson_configure+=$'\t'-Dbuildtype=debugoptimized
|
||||
fi
|
||||
if [[ $BSH_HOST_PLATFORM == darwin ]]; then
|
||||
meson_configure+=$'\t'-Dmanifest_macos_min_ver=$macos_min_ver
|
||||
else
|
||||
meson_configure+=$'\t'-Dmanifest_date=$(date --iso-8601)
|
||||
fi
|
||||
meson_configure+=$'\t'-Dapp_name=$APP_NAME
|
||||
meson_configure+=$'\t'-Dapp_comment=$APP_COMMENT
|
||||
meson_configure+=$'\t'-Dapp_exe=$APP_EXE
|
||||
meson_configure+=$'\t'-Dapp_id=$APP_ID
|
||||
meson_configure+=$'\t'-Dapp_data=$APP_DATA
|
||||
meson_configure+=$'\t'-Dapp_vendor=$APP_VENDOR
|
||||
meson_configure+=$'\t'-Dstrip=false
|
||||
meson_configure+=$'\t'-Db_staticpic=false
|
||||
meson_configure+=$'\t'-Dmod_id=$MOD_ID
|
||||
case $BSH_HOST_ARCH-$BSH_HOST_PLATFORM-$BSH_HOST_LIBC-$BSH_DEBUG_RELEASE in
|
||||
x86_64-linux-gnu-debug) ;&
|
||||
x86_64-windows-mingw-debug) ;&
|
||||
x86_64-windows-msvc-debug) ;&
|
||||
x86_64-darwin-macos-debug)
|
||||
meson_configure+=$'\t'-Dbuild_render=true
|
||||
meson_configure+=$'\t'-Dbuild_font=true
|
||||
;;
|
||||
esac
|
||||
if [[ $PACKAGE_MODE == nohttp ]]; then
|
||||
meson_configure+=$'\t'-Dhttp=false
|
||||
fi
|
||||
if [[ $PACKAGE_MODE == nolua ]]; then
|
||||
meson_configure+=$'\t'-Dlua=none
|
||||
fi
|
||||
if [[ $PACKAGE_MODE == backendvs ]]; then
|
||||
meson_configure+=$'\t'-Dbackend=vs
|
||||
# meson 1.2.3 configures vs projects that bring their own manifest, which conflicts with ours
|
||||
# TODO: remove this patch once https://github.com/mesonbuild/meson/pull/12472 makes it into a release that we can use
|
||||
meson_configure+=$'\t'-Dwindows_utf8cp=false
|
||||
fi
|
||||
if [[ $BSH_STATIC_DYNAMIC == static ]]; then
|
||||
meson_configure+=$'\t'-Dstatic=prebuilt
|
||||
if [[ $BSH_HOST_PLATFORM == windows ]]; then
|
||||
if [[ $BSH_HOST_LIBC == msvc ]]; then
|
||||
meson_configure+=$'\t'-Db_vscrt=static_from_buildtype
|
||||
else
|
||||
c_link_args+=\'-static\',
|
||||
c_link_args+=\'-static-libgcc\',
|
||||
c_link_args+=\'-static-libstdc++\',
|
||||
fi
|
||||
elif [[ $BSH_HOST_PLATFORM == linux ]]; then
|
||||
c_link_args+=\'-static-libgcc\',
|
||||
c_link_args+=\'-static-libstdc++\',
|
||||
fi
|
||||
else
|
||||
if [[ "$BSH_HOST_PLATFORM-$BSH_HOST_LIBC $BSH_BUILD_PLATFORM" == "windows-mingw windows" ]]; then
|
||||
meson_configure+=$'\t'-Dworkaround_elusive_bzip2=true
|
||||
meson_configure+=$'\t'-Dworkaround_elusive_bzip2_include_dir=/ucrt64/include
|
||||
meson_configure+=$'\t'-Dworkaround_elusive_bzip2_lib_dir=/ucrt64/lib
|
||||
fi
|
||||
if [[ $BSH_BUILD_PLATFORM == linux ]]; then
|
||||
meson_configure+=$'\t'-Dworkaround_elusive_bzip2=true
|
||||
fi
|
||||
if [[ $BSH_BUILD_PLATFORM == darwin ]]; then
|
||||
meson_configure+=$'\t'-Dworkaround_elusive_bzip2=true
|
||||
meson_configure+=$'\t'-Dworkaround_elusive_bzip2_lib_dir=/usr/local/opt/bzip2/lib
|
||||
meson_configure+=$'\t'-Dworkaround_elusive_bzip2_include_dir=/usr/local/opt/bzip2/include
|
||||
meson_configure+=$'\t'-Dworkaround_elusive_bzip2_static=true
|
||||
fi
|
||||
fi
|
||||
if [[ $BSH_HOST_PLATFORM == linux ]] && [[ $BSH_HOST_ARCH != aarch64 ]]; then
|
||||
# certain file managers can't run PIEs https://bugzilla.gnome.org/show_bug.cgi?id=737849
|
||||
meson_configure+=$'\t'-Db_pie=false
|
||||
c_link_args+=\'-no-pie\',
|
||||
fi
|
||||
stable_or_beta=no
|
||||
if [[ $RELEASE_TYPE == beta ]]; then
|
||||
meson_configure+=$'\t'-Dbeta=true
|
||||
stable_or_beta=yes
|
||||
fi
|
||||
if [[ $RELEASE_TYPE == stable ]]; then
|
||||
stable_or_beta=yes
|
||||
fi
|
||||
if [[ $stable_or_beta == yes ]]; then
|
||||
xyz=$(echo $RELEASE_NAME | cut -d 'v' -f 2 | cut -d 'b' -f 1) # $RELEASE_NAME is vX.Y.Z or vX.Y.Zb
|
||||
display_version_major=$(echo $xyz | cut -d '.' -f 1)
|
||||
display_version_minor=$(echo $xyz | cut -d '.' -f 2)
|
||||
build_num=$(echo $xyz | cut -d '.' -f 3)
|
||||
if [[ $MOD_ID != 0 ]]; then
|
||||
meson_configure+=$'\t'-Ddisplay_version_major=$display_version_major
|
||||
meson_configure+=$'\t'-Ddisplay_version_minor=$display_version_minor
|
||||
meson_configure+=$'\t'-Dbuild_num=$build_num
|
||||
fi
|
||||
fi
|
||||
if [[ $RELEASE_TYPE == snapshot ]]; then
|
||||
build_num=$(echo $RELEASE_NAME | cut -d '-' -f 2) # $RELEASE_NAME is snapshot-X
|
||||
meson_configure+=$'\t'-Dsnapshot=true
|
||||
if [[ $MOD_ID != 0 ]]; then
|
||||
meson_configure+=$'\t'-Dbuild_num=$build_num
|
||||
fi
|
||||
fi
|
||||
if [[ $RELEASE_TYPE == snapshot ]] && [[ $MOD_ID != 0 ]]; then
|
||||
>&2 echo "mods and snapshots do not mix"
|
||||
exit 1
|
||||
fi
|
||||
if [[ $RELEASE_TYPE == snapshot ]] || [[ $MOD_ID != 0 ]]; then
|
||||
meson_configure+=$'\t'-Dupdate_server=starcatcher.us/TPT
|
||||
if [[ $BSH_HOST_PLATFORM == emscripten ]]; then
|
||||
meson_configure+=$'\t'-Dserver=tptserv.starcatcher.us
|
||||
meson_configure+=$'\t'-Dstatic_server=tptserv.starcatcher.us/Static
|
||||
fi
|
||||
fi
|
||||
if [[ $RELEASE_TYPE != dev ]]; then
|
||||
meson_configure+=$'\t'-Dignore_updates=false
|
||||
fi
|
||||
if [[ "$BSH_HOST_PLATFORM-$BSH_HOST_LIBC" == "windows-mingw" ]]; then
|
||||
meson_configure+=$'\t'--cross-file=.github/mingw-ghactions.ini
|
||||
# there is some mingw bug that only ever manifests on ghactions which makes MakeIco.exe use tons of memory and fail
|
||||
# TODO: remove this hack once we figure out how to fix that
|
||||
meson_configure+=$'\t'-Dwindows_icons=false
|
||||
fi
|
||||
if [[ $BSH_DEBUG_RELEASE-$BSH_STATIC_DYNAMIC == release-static ]]; then
|
||||
meson_configure+=$'\t'-Db_lto=true
|
||||
fi
|
||||
if [[ $BSH_HOST_PLATFORM-$BSH_HOST_ARCH == darwin-aarch64 ]]; then
|
||||
meson_configure+=$'\t'--cross-file=.github/macaa64-ghactions.ini
|
||||
fi
|
||||
if [[ $BSH_HOST_PLATFORM == emscripten ]]; then
|
||||
meson_configure+=$'\t'--cross-file=.github/emscripten-ghactions.ini
|
||||
fi
|
||||
if [[ $RELEASE_TYPE == tptlibsdev ]] && ([[ $BSH_HOST_PLATFORM-$BSH_HOST_LIBC == windows-msvc ]] || [[ $BSH_STATIC_DYNAMIC == static ]]); then
|
||||
if [[ -z ${TPTLIBSREMOTE-} ]]; then
|
||||
if [[ -z "${GITHUB_REPOSITORY_OWNER-}" ]]; then
|
||||
>&2 echo "GITHUB_REPOSITORY_OWNER not set"
|
||||
exit 1
|
||||
fi
|
||||
tptlibsremote=https://github.com/$GITHUB_REPOSITORY_OWNER/tpt-libs
|
||||
else
|
||||
tptlibsremote=$TPTLIBSREMOTE
|
||||
fi
|
||||
tptlibsbranch=$(echo $RELEASE_NAME | cut -d '-' -f 2-) # $RELEASE_NAME is tptlibsdev-BRANCH
|
||||
if [[ -d build-tpt-libs ]] && [[ ${TPTLIBSRESET-} == yes ]]; then
|
||||
rm -rf build-tpt-libs
|
||||
fi
|
||||
if [[ ! -d build-tpt-libs/tpt-libs ]]; then
|
||||
mkdir -p build-tpt-libs
|
||||
cd build-tpt-libs
|
||||
git clone $tptlibsremote --branch $tptlibsbranch --depth 1
|
||||
cd ..
|
||||
fi
|
||||
tpt_libs_vtag=v00000000000000
|
||||
if [[ ! -f build-tpt-libs/tpt-libs/.ok ]]; then
|
||||
cd build-tpt-libs/tpt-libs
|
||||
BSH_VTAG=$tpt_libs_vtag ./.github/build.sh
|
||||
touch .ok
|
||||
cd ../../subprojects
|
||||
for i in tpt-libs-prebuilt-*; do
|
||||
if [[ -d $i ]]; then
|
||||
rm -r $i
|
||||
fi
|
||||
done
|
||||
7z x ../build-tpt-libs/tpt-libs/temp/libraries.zip
|
||||
cd ..
|
||||
fi
|
||||
meson_configure+=$'\t'-Dtpt_libs_vtag=$tpt_libs_vtag
|
||||
fi
|
||||
if [[ $BSH_HOST_PLATFORM == android ]]; then
|
||||
android_platform_jar=$ANDROID_SDK_ROOT/platforms/$android_platform/android.jar
|
||||
if ! [[ -f $android_platform_jar ]]; then
|
||||
>&2 echo "$android_platform_jar not found"
|
||||
exit 1
|
||||
fi
|
||||
meson_configure+=$'\t'--cross-file=android/cross/$BSH_HOST_ARCH.ini
|
||||
cat << ANDROID_INI > .github/android-ghactions.ini
|
||||
[constants]
|
||||
andriod_ndk_toolchain_bin = '$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin'
|
||||
andriod_sdk_build_tools = '$ANDROID_SDK_ROOT/build-tools/32.0.0'
|
||||
|
||||
[properties]
|
||||
# android_ndk_toolchain_prefix comes from the correct cross-file in ./android/cross
|
||||
android_ndk_toolchain_prefix = android_ndk_toolchain_prefix
|
||||
android_platform = '$android_platform'
|
||||
android_platform_jar = '$android_platform_jar'
|
||||
java_runtime_jar = '$JAVA_HOME_8_X64/jre/lib/rt.jar'
|
||||
|
||||
[binaries]
|
||||
# android_ndk_toolchain_prefix comes from the correct cross-file in ./android/cross
|
||||
c = andriod_ndk_toolchain_bin / (android_ndk_toolchain_prefix + 'clang')
|
||||
cpp = andriod_ndk_toolchain_bin / (android_ndk_toolchain_prefix + 'clang++')
|
||||
strip = andriod_ndk_toolchain_bin / 'llvm-strip'
|
||||
javac = '$JAVA_HOME_8_X64/bin/javac'
|
||||
jar = '$JAVA_HOME_8_X64/bin/jar'
|
||||
d8 = andriod_sdk_build_tools / 'd8'
|
||||
aapt = andriod_sdk_build_tools / 'aapt'
|
||||
aapt2 = andriod_sdk_build_tools / 'aapt2'
|
||||
zipalign = andriod_sdk_build_tools / 'zipalign'
|
||||
apksigner = andriod_sdk_build_tools / 'apksigner'
|
||||
ANDROID_INI
|
||||
meson_configure+=$'\t'--cross-file=.github/android-ghactions.ini
|
||||
fi
|
||||
meson_configure+=$'\t'-Dc_args=[$c_args]
|
||||
meson_configure+=$'\t'-Dcpp_args=[$c_args]
|
||||
meson_configure+=$'\t'-Dc_link_args=[$c_link_args]
|
||||
meson_configure+=$'\t'-Dcpp_link_args=[$c_link_args]
|
||||
$meson_configure build
|
||||
cd build
|
||||
|
||||
function verify_version_component() {
|
||||
local key=$1
|
||||
local expected=$2
|
||||
local actual=$(jq -r '.[] | select(.name == "'$key'") | .value' < meson-info/intro-buildoptions.json)
|
||||
if [[ $actual != $expected ]]; then
|
||||
>&2 echo "meson option $key expected to be $expected, is instead $actual"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
if [[ $stable_or_beta == yes ]] && [[ $MOD_ID == 0 ]]; then
|
||||
verify_version_component display_version_major $display_version_major
|
||||
verify_version_component display_version_minor $display_version_minor
|
||||
verify_version_component build_num $build_num
|
||||
verify_version_component upstream_version_major $display_version_major
|
||||
verify_version_component upstream_version_minor $display_version_minor
|
||||
verify_version_component upstream_build_num $build_num
|
||||
fi
|
||||
if [[ $RELEASE_TYPE == snapshot ]] && [[ $MOD_ID == 0 ]]; then
|
||||
verify_version_component build_num $build_num
|
||||
verify_version_component upstream_build_num $build_num
|
||||
fi
|
||||
|
||||
strip=strip
|
||||
objcopy=objcopy
|
||||
strip_target=$ASSET_PATH
|
||||
if [[ $BSH_HOST_PLATFORM == android ]]; then
|
||||
strip=$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-$strip
|
||||
objcopy=$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-$objcopy
|
||||
strip_target=lib$APP_EXE.so
|
||||
fi
|
||||
if [[ $PACKAGE_MODE == appimage ]]; then
|
||||
# so far this can only happen with $BSH_HOST_PLATFORM-$BSH_HOST_LIBC == linux-gnu, but this may change later
|
||||
meson configure -Dcan_install=no -Dignore_updates=true -Dbuild_render=false -Dbuild_font=false
|
||||
strip_target=$APP_EXE
|
||||
fi
|
||||
meson_compile=meson$'\t'compile
|
||||
meson_compile+=$'\t'-v
|
||||
if [[ $BSH_BUILD_PLATFORM == windows ]] && [[ $PACKAGE_MODE != backendvs ]]; then
|
||||
set +e
|
||||
meson_compile+=$'\t'--ninja-args='["-d","keeprsp"]'
|
||||
$meson_compile
|
||||
ninja_code=$?
|
||||
set -e
|
||||
cat $APP_EXE.exe.rsp
|
||||
[[ $ninja_code == 0 ]];
|
||||
echo # rsps don't usually have a newline at the end
|
||||
if [[ "$BSH_HOST_PLATFORM-$BSH_STATIC_DYNAMIC $BSH_BUILD_PLATFORM" == "windows-dynamic windows" ]]; then
|
||||
# on windows we provide the dynamic dependencies also; makes sense to check for their presence
|
||||
# msys ldd works fine but only on windows build machines
|
||||
if ldd $APP_EXE | grep "not found"; then
|
||||
exit 1 # ldd | grep will have printed missing deps
|
||||
fi
|
||||
fi
|
||||
else
|
||||
$meson_compile
|
||||
fi
|
||||
|
||||
if [[ $SEPARATE_DEBUG == yes ]] && [[ $BSH_HOST_PLATFORM-$BSH_HOST_LIBC != windows-msvc ]]; then
|
||||
$objcopy --only-keep-debug $strip_target $DEBUG_ASSET_PATH
|
||||
$strip --strip-debug --strip-unneeded $strip_target
|
||||
$objcopy --add-gnu-debuglink $DEBUG_ASSET_PATH $strip_target
|
||||
chmod -x $DEBUG_ASSET_PATH
|
||||
fi
|
||||
if [[ $BSH_HOST_PLATFORM == android ]]; then
|
||||
$JAVA_HOME_8_X64/bin/keytool -genkeypair -keystore keystore.jks -alias androidkey -validity 10000 -keyalg RSA -keysize 2048 -keypass bagelsbagels -storepass bagelsbagels -dname "CN=nobody"
|
||||
meson configure -Dandroid_keystore=$(realpath keystore.jks)
|
||||
ANDROID_KEYSTORE_PASS=bagelsbagels ninja android/$APP_EXE.apk
|
||||
mv android/$APP_EXE.apk $APP_EXE.apk
|
||||
fi
|
||||
if [[ $PACKAGE_MODE == dmg ]]; then
|
||||
# so far this can only happen with $BSH_HOST_PLATFORM-$BSH_HOST_LIBC == darwin-macos
|
||||
appdir=$APP_NAME.app
|
||||
mkdir $appdir
|
||||
mkdir $appdir/Contents
|
||||
cp resources/Info.plist $appdir/Contents/Info.plist
|
||||
mkdir $appdir/Contents/MacOS
|
||||
cp $APP_EXE $appdir/Contents/MacOS/$APP_EXE
|
||||
mkdir $appdir/Contents/Resources
|
||||
mkdir icon_exe.iconset
|
||||
cp ../resources/generated_icons/icon_exe_16.png icon_exe.iconset/icon_16x16.png
|
||||
cp ../resources/generated_icons/icon_exe_32.png icon_exe.iconset/icon_32x32.png
|
||||
cp ../resources/generated_icons/icon_exe.png icon_exe.iconset/icon_128x128.png
|
||||
iconutil -c icns icon_exe.iconset
|
||||
cp icon_exe.icns $appdir/Contents/Resources/icon_exe.icns
|
||||
mkdir icon_cps.iconset
|
||||
cp ../resources/generated_icons/icon_cps_16.png icon_cps.iconset/icon_16x16.png
|
||||
cp ../resources/generated_icons/icon_cps_32.png icon_cps.iconset/icon_32x32.png
|
||||
cp ../resources/generated_icons/icon_cps.png icon_cps.iconset/icon_128x128.png
|
||||
iconutil -c icns icon_cps.iconset
|
||||
cp icon_cps.icns $appdir/Contents/Resources/icon_cps.icns
|
||||
mkdir dmgroot
|
||||
mv $appdir dmgroot/$appdir
|
||||
cp ../LICENSE dmgroot/LICENSE
|
||||
cp ../README.md dmgroot/README.md
|
||||
hdiutil create -format UDZO -volname $APP_NAME -fs HFS+ -srcfolder dmgroot -o $ASSET_PATH
|
||||
elif [[ $PACKAGE_MODE == emscripten ]]; then
|
||||
tar cvf $ASSET_PATH $APP_EXE.js $APP_EXE.worker.js $APP_EXE.wasm
|
||||
elif [[ $PACKAGE_MODE == appimage ]]; then
|
||||
# so far this can only happen with $BSH_HOST_PLATFORM-$BSH_HOST_LIBC == linux-gnu, but this may change later
|
||||
case $BSH_HOST_ARCH in
|
||||
aarch64) appimage_arch=aarch64;;
|
||||
arm) appimage_arch=armhf ;;
|
||||
x86) appimage_arch=i686 ;;
|
||||
x86_64) appimage_arch=x86_64 ;;
|
||||
esac
|
||||
curl -fsSLo appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-$appimage_arch.AppImage"
|
||||
curl -fsSLo AppRun "https://github.com/AppImage/AppImageKit/releases/download/continuous/AppRun-$appimage_arch"
|
||||
chmod +x appimagetool
|
||||
chmod +x AppRun
|
||||
appdir=bagels.AppDir # doesn't matter, won't be visible in the resulting appimage
|
||||
mkdir -p $appdir/usr/bin
|
||||
mkdir -p $appdir/usr/share/metainfo
|
||||
mkdir -p $appdir/usr/share/applications
|
||||
mkdir -p $appdir/usr/share/icons
|
||||
cp $APP_EXE $appdir/usr/bin/$APP_EXE
|
||||
mv AppRun $appdir/AppRun
|
||||
cp ../resources/icon_exe.svg $appdir/$APP_VENDOR-$APP_EXE.svg
|
||||
cp resources/powder.desktop $appdir/$APP_ID.desktop
|
||||
cp resources/appdata.xml $appdir/usr/share/metainfo/$APP_ID.appdata.xml
|
||||
cp $appdir/$APP_VENDOR-$APP_EXE.svg $appdir/usr/share/icons/$APP_VENDOR-$APP_EXE.svg
|
||||
cp $appdir/$APP_ID.desktop $appdir/usr/share/applications/$APP_ID.desktop
|
||||
./appimagetool $appdir $ASSET_PATH
|
||||
fi
|
4
.github/create-release.sh
vendored
@ -1,4 +0,0 @@
|
||||
set -euo pipefail
|
||||
IFS=$'\t\n'
|
||||
|
||||
gh release create --draft --verify-tag --title $RELEASE_NAME $GITHUB_REF_NAME
|
11
.github/emscripten-ghactions.ini
vendored
@ -1,11 +0,0 @@
|
||||
[binaries]
|
||||
c = 'emcc'
|
||||
cpp = 'em++'
|
||||
strip = 'emstrip'
|
||||
ar = 'emar'
|
||||
|
||||
[host_machine]
|
||||
system = 'emscripten'
|
||||
cpu_family = 'wasm32'
|
||||
cpu = 'wasm32'
|
||||
endian = 'little'
|
11
.github/macaa64-ghactions.ini
vendored
@ -1,11 +0,0 @@
|
||||
[binaries]
|
||||
c = [ 'clang', '-arch', 'arm64' ]
|
||||
cpp = [ 'clang++', '-arch', 'arm64' ]
|
||||
objcpp = [ 'clang++', '-arch', 'arm64' ]
|
||||
strip = 'strip'
|
||||
|
||||
[host_machine]
|
||||
system = 'darwin'
|
||||
cpu_family = 'aarch64'
|
||||
cpu = 'armv8'
|
||||
endian = 'little'
|
14
.github/mingw-ghactions.ini
vendored
@ -1,14 +0,0 @@
|
||||
[constants]
|
||||
prefix = 'x86_64-w64-mingw32'
|
||||
|
||||
[binaries]
|
||||
c = prefix + '-gcc'
|
||||
cpp = prefix + '-g++'
|
||||
strip = prefix + '-strip'
|
||||
windres = prefix + '-windres'
|
||||
|
||||
[host_machine]
|
||||
system = 'windows'
|
||||
cpu_family = 'x86_64'
|
||||
cpu = 'x86_64'
|
||||
endian = 'little'
|
1
.github/mod_id.txt
vendored
@ -1 +0,0 @@
|
||||
0
|
216
.github/prepare.py
vendored
@ -1,216 +0,0 @@
|
||||
import datetime
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
ref = os.getenv('GITHUB_REF')
|
||||
event_name = os.getenv('GITHUB_EVENT_NAME')
|
||||
publish_hostport = os.getenv('PUBLISH_HOSTPORT')
|
||||
|
||||
def set_output(key, value):
|
||||
with open(os.getenv('GITHUB_OUTPUT'), 'a') as f:
|
||||
f.write(f"{key}={value}\n")
|
||||
|
||||
match_stable = re.fullmatch(r'refs/tags/v([0-9]+)\.([0-9]+)\.([0-9]+)', ref)
|
||||
match_beta = re.fullmatch(r'refs/tags/v([0-9]+)\.([0-9]+)\.([0-9]+)b', ref)
|
||||
match_snapshot = re.fullmatch(r'refs/tags/snapshot-([0-9]+)', ref)
|
||||
match_tptlibsdev = re.fullmatch(r'refs/heads/tptlibsdev-(.*)', ref)
|
||||
match_alljobs = re.fullmatch(r'refs/heads/(.*)-alljobs', ref)
|
||||
do_release = False
|
||||
do_priority = 10
|
||||
if event_name == 'pull_request':
|
||||
do_priority = 0
|
||||
if match_stable:
|
||||
release_type = 'stable'
|
||||
release_name = 'v%s.%s.%s' % (match_stable.group(1), match_stable.group(2), match_stable.group(3))
|
||||
do_release = True
|
||||
do_priority = 0
|
||||
elif match_beta:
|
||||
release_type = 'beta'
|
||||
release_name = 'v%s.%s.%sb' % (match_beta.group(1), match_beta.group(2), match_beta.group(3))
|
||||
do_release = True
|
||||
do_priority = 0
|
||||
elif match_snapshot:
|
||||
release_type = 'snapshot'
|
||||
release_name = 'snapshot-%s' % match_snapshot.group(1)
|
||||
do_release = True
|
||||
do_priority = 0
|
||||
elif match_tptlibsdev:
|
||||
release_type = 'tptlibsdev'
|
||||
release_name = 'tptlibsdev-%s' % match_tptlibsdev.group(1)
|
||||
do_priority = 0
|
||||
else:
|
||||
release_type = 'dev'
|
||||
release_name = 'dev'
|
||||
if match_alljobs:
|
||||
do_priority = 0
|
||||
do_publish = publish_hostport and do_release
|
||||
|
||||
set_output('release_type', release_type)
|
||||
set_output('release_name', release_name)
|
||||
|
||||
subprocess.run([ 'meson', 'setup', '-Dprepare=true', 'build-prepare' ], check = True)
|
||||
build_options = {}
|
||||
with open('build-prepare/meson-info/intro-buildoptions.json') as f:
|
||||
for option in json.loads(f.read()):
|
||||
build_options[option['name']] = option['value']
|
||||
|
||||
if int(build_options['mod_id']) == 0 and os.path.exists('.github/mod_id.txt'):
|
||||
with open('.github/mod_id.txt') as f:
|
||||
build_options['mod_id'] = f.read()
|
||||
|
||||
if int(build_options['mod_id']) == 0:
|
||||
if release_type == 'stable':
|
||||
pass
|
||||
elif release_type == 'beta':
|
||||
build_options['app_name' ] += ' Beta'
|
||||
build_options['app_comment'] += ' - Beta'
|
||||
build_options['app_exe' ] += 'beta'
|
||||
build_options['app_id' ] += 'beta'
|
||||
elif release_type == 'snapshot':
|
||||
build_options['app_name' ] += ' Snapshot'
|
||||
build_options['app_comment'] += ' - Snapshot'
|
||||
build_options['app_exe' ] += 'snapshot'
|
||||
build_options['app_id' ] += 'snapshot'
|
||||
else:
|
||||
build_options['app_name' ] += ' Dev'
|
||||
build_options['app_comment'] += ' - Dev'
|
||||
build_options['app_exe' ] += 'dev'
|
||||
build_options['app_id' ] += 'dev'
|
||||
|
||||
set_output('mod_id' , build_options['mod_id' ])
|
||||
set_output('app_name' , build_options['app_name' ])
|
||||
set_output('app_comment', build_options['app_comment'])
|
||||
set_output('app_exe' , build_options['app_exe' ])
|
||||
set_output('app_id' , build_options['app_id' ])
|
||||
set_output('app_data' , build_options['app_data' ])
|
||||
set_output('app_vendor' , build_options['app_vendor' ])
|
||||
|
||||
app_exe = build_options['app_exe']
|
||||
app_name = build_options['app_name']
|
||||
app_name_slug = re.sub('[^A-Za-z0-9]', '_', app_name)
|
||||
|
||||
build_matrix = []
|
||||
publish_matrix = []
|
||||
# consider disabling line wrapping to edit this monstrosity
|
||||
for arch, platform, libc, statdyn, bplatform, runson, suffix, publish, artifact, dbgsuffix, mode, starcatcher, dbgrel, priority in [
|
||||
( 'x86_64', 'linux', 'gnu', 'static', 'linux', 'ubuntu-20.04', '', False, False, None, None, None, 'debug', 0 ), # priority = 0: static debug build
|
||||
( 'x86_64', 'linux', 'gnu', 'static', 'linux', 'ubuntu-20.04', '', True, True, '.dbg', None, 'x86_64-lin-gcc-static', 'release', 10 ),
|
||||
( 'x86_64', 'linux', 'gnu', 'static', 'linux', 'ubuntu-20.04', '', False, True, '.dbg', 'appimage', None, 'release', 0 ), # priority = 0: appimage release
|
||||
( 'x86_64', 'linux', 'gnu', 'dynamic', 'linux', 'ubuntu-20.04', '', False, False, None, None, None, 'debug', 10 ),
|
||||
( 'x86_64', 'linux', 'gnu', 'dynamic', 'linux', 'ubuntu-20.04', '', False, False, None, 'nohttp', None, 'debug', 10 ),
|
||||
( 'x86_64', 'linux', 'gnu', 'dynamic', 'linux', 'ubuntu-20.04', '', False, False, None, 'nolua', None, 'debug', 10 ),
|
||||
( 'x86_64', 'linux', 'gnu', 'dynamic', 'linux', 'ubuntu-20.04', '', False, False, None, None, None, 'release', 10 ),
|
||||
# ( 'x86_64', 'windows', 'mingw', 'static', 'linux', 'ubuntu-20.04', '', False, False, None, None, None, 'debug', 10 ), # ubuntu-20.04 doesn't have windows TLS headers somehow and I haven't yet figured out how to get them; worse, it's a different toolchain
|
||||
# ( 'x86_64', 'windows', 'mingw', 'static', 'linux', 'ubuntu-20.04', '', False, True, '.dbg', None, None, 'release', 10 ), # ubuntu-20.04 doesn't have windows TLS headers somehow and I haven't yet figured out how to get them; worse, it's a different toolchain
|
||||
# ( 'x86_64', 'windows', 'mingw', 'dynamic', 'linux', 'ubuntu-20.04', '', False, False, None, None, None, 'debug', 10 ), # ubuntu-20.04 doesn't have ucrt64-capable mingw >_>
|
||||
# ( 'x86_64', 'windows', 'mingw', 'dynamic', 'linux', 'ubuntu-20.04', '', False, False, None, None, None, 'release', 10 ), # ubuntu-20.04 doesn't have ucrt64-capable mingw >_>
|
||||
( 'x86_64', 'windows', 'mingw', 'static', 'windows', 'windows-2019', '.exe', False, False, None, None, None, 'debug', 0 ), # priority = 0: static debug build
|
||||
( 'x86_64', 'windows', 'mingw', 'static', 'windows', 'windows-2019', '.exe', False, True, '.dbg', None, None, 'release', 10 ),
|
||||
( 'x86_64', 'windows', 'mingw', 'dynamic', 'windows', 'windows-2019', '.exe', False, False, None, None, None, 'debug', 10 ),
|
||||
( 'x86_64', 'windows', 'mingw', 'dynamic', 'windows', 'windows-2019', '.exe', False, False, None, None, None, 'release', 10 ),
|
||||
( 'x86_64', 'windows', 'msvc', 'static', 'windows', 'windows-2019', '.exe', False, False, None, None, None, 'debug', 0 ), # priority = 0: static debug build
|
||||
( 'x86_64', 'windows', 'msvc', 'static', 'windows', 'windows-2019', '.exe', True, True, '.pdb', None,'x86_64-win-msvc-static', 'release', 10 ),
|
||||
( 'x86_64', 'windows', 'msvc', 'dynamic', 'windows', 'windows-2019', '.exe', False, False, None, None, None, 'debug', 10 ),
|
||||
# ( 'x86_64', 'windows', 'msvc', 'dynamic', 'windows', 'windows-2019', '.exe', False, False, None, 'backendvs', None, 'debug', 0 ), # priority = 0: backend=vs build
|
||||
( 'x86_64', 'windows', 'msvc', 'dynamic', 'windows', 'windows-2019', '.exe', False, False, None, None, None, 'release', 10 ),
|
||||
( 'x86', 'windows', 'msvc', 'static', 'windows', 'windows-2019', '.exe', False, False, None, None, None, 'debug', 0 ), # priority = 0: static debug build
|
||||
( 'x86', 'windows', 'msvc', 'static', 'windows', 'windows-2019', '.exe', True, True, '.pdb', None, 'i686-win-msvc-static', 'release', 10 ),
|
||||
( 'x86', 'windows', 'msvc', 'dynamic', 'windows', 'windows-2019', '.exe', False, False, None, None, None, 'debug', 10 ),
|
||||
( 'x86', 'windows', 'msvc', 'dynamic', 'windows', 'windows-2019', '.exe', False, False, None, None, None, 'release', 10 ),
|
||||
( 'x86_64', 'darwin', 'macos', 'static', 'darwin', 'macos-12', '.dmg', False, False, None, 'dmg', None, 'debug', 0 ), # priority = 0: static debug build
|
||||
( 'x86_64', 'darwin', 'macos', 'static', 'darwin', 'macos-12', '.dmg', True, True, None, 'dmg', 'x86_64-mac-gcc-static', 'release', 10 ), # I have no idea how to separate debug info on macos
|
||||
( 'x86_64', 'darwin', 'macos', 'dynamic', 'darwin', 'macos-12', '.dmg', False, False, None, 'dmg', None, 'debug', 10 ),
|
||||
( 'x86_64', 'darwin', 'macos', 'dynamic', 'darwin', 'macos-12', '.dmg', False, False, None, 'dmg', None, 'release', 10 ),
|
||||
( 'aarch64', 'darwin', 'macos', 'static', 'darwin', 'macos-12', '.dmg', False, False, None, 'dmg', None, 'debug', 0 ), # priority = 0: static debug build
|
||||
( 'aarch64', 'darwin', 'macos', 'static', 'darwin', 'macos-12', '.dmg', True, True, None, 'dmg', 'arm64-mac-gcc-static', 'release', 10 ),
|
||||
# ( 'aarch64', 'darwin', 'macos', 'dynamic', 'darwin', 'macos-12', '.dmg', False, False, None, 'dmg', None, 'debug', 10 ), # macos-11.0 is x86_64 and I haven't yet figured out how to get homebrew to install aarch64 libs on x86_64
|
||||
# ( 'aarch64', 'darwin', 'macos', 'dynamic', 'darwin', 'macos-12', '.dmg', False, False, None, 'dmg', None, 'release', 10 ), # macos-11.0 is x86_64 and I haven't yet figured out how to get homebrew to install aarch64 libs on x86_64
|
||||
( 'x86', 'android', 'bionic', 'static', 'linux', 'ubuntu-20.04', '.apk', False, False, None, None, None, 'debug', 0 ), # priority = 0: rarely used debug build
|
||||
( 'x86', 'android', 'bionic', 'static', 'linux', 'ubuntu-20.04', '.apk', True, True, '.dbg', None, 'i686-and-gcc-static', 'release', 10 ),
|
||||
( 'x86_64', 'android', 'bionic', 'static', 'linux', 'ubuntu-20.04', '.apk', False, False, None, None, None, 'debug', 0 ), # priority = 0: rarely used debug build
|
||||
( 'x86_64', 'android', 'bionic', 'static', 'linux', 'ubuntu-20.04', '.apk', True, True, '.dbg', None, 'x86_64-and-gcc-static', 'release', 10 ),
|
||||
( 'arm', 'android', 'bionic', 'static', 'linux', 'ubuntu-20.04', '.apk', False, False, None, None, None, 'debug', 0 ), # priority = 0: rarely used debug build
|
||||
( 'arm', 'android', 'bionic', 'static', 'linux', 'ubuntu-20.04', '.apk', True, True, '.dbg', None, 'arm-and-gcc-static', 'release', 10 ),
|
||||
( 'aarch64', 'android', 'bionic', 'static', 'linux', 'ubuntu-20.04', '.apk', False, False, None, None, None, 'debug', 0 ), # priority = 0: rarely used debug build
|
||||
( 'aarch64', 'android', 'bionic', 'static', 'linux', 'ubuntu-20.04', '.apk', True, True, '.dbg', None, 'arm64-and-gcc-static', 'release', 10 ),
|
||||
( 'wasm32', 'emscripten', 'emscripten', 'static', 'linux', 'ubuntu-20.04', '.tar', False, False, None, None, None, 'debug', 0 ), # priority = 0: rarely used debug build
|
||||
( 'wasm32', 'emscripten', 'emscripten', 'static', 'linux', 'ubuntu-20.04', '.tar', True, True, None, 'emscripten', 'wasm32-ems-static', 'release', 10 ), # I have no idea how to separate debug info on emscripten
|
||||
]:
|
||||
if priority < do_priority:
|
||||
continue
|
||||
job_name = f'build'
|
||||
if starcatcher:
|
||||
job_name += f'+target=starcatcher-{starcatcher}'
|
||||
else:
|
||||
job_name += f'+target={arch}-{platform}-{libc}-{statdyn}-{dbgrel}'
|
||||
if mode:
|
||||
job_name += f'+mode={mode}'
|
||||
if bplatform != platform:
|
||||
job_name += f'+bplatform={bplatform}'
|
||||
if not mode:
|
||||
mode = 'default'
|
||||
separate_debug = True
|
||||
if not dbgsuffix:
|
||||
dbgsuffix = 'BOGUS'
|
||||
separate_debug = False
|
||||
if not starcatcher:
|
||||
starcatcher = 'BOGUS'
|
||||
if publish:
|
||||
assert artifact
|
||||
if dbgrel != 'release':
|
||||
assert not publish
|
||||
assert not artifact
|
||||
asset_path = f'{app_exe}{suffix}'
|
||||
asset_name = f'{app_exe}-{release_name}-{arch}-{platform}-{libc}{suffix}'
|
||||
debug_asset_path = f'{app_exe}{dbgsuffix}'
|
||||
debug_asset_name = f'{app_exe}-{release_name}-{arch}-{platform}-{libc}{dbgsuffix}'
|
||||
if mode == 'appimage':
|
||||
asset_path = f'{app_name_slug}-{arch}.AppImage'
|
||||
asset_name = f'{app_name_slug}-{arch}.AppImage'
|
||||
debug_asset_path = f'{app_name_slug}-{arch}.AppImage.dbg'
|
||||
debug_asset_name = f'{app_name_slug}-{arch}.AppImage.dbg'
|
||||
starcatcher_name = f'powder-{release_name}-{starcatcher}{suffix}'
|
||||
msys2_bash = (bplatform == 'windows' and libc == 'mingw')
|
||||
shell = 'bash'
|
||||
if msys2_bash:
|
||||
shell = 'msys2 {0}'
|
||||
build_matrix.append({
|
||||
'bsh_build_platform': bplatform, # part of the unique portion of the matrix
|
||||
'bsh_host_arch': arch, # part of the unique portion of the matrix
|
||||
'bsh_host_platform': platform, # part of the unique portion of the matrix
|
||||
'bsh_host_libc': libc, # part of the unique portion of the matrix
|
||||
'bsh_static_dynamic': statdyn, # part of the unique portion of the matrix
|
||||
'bsh_debug_release': dbgrel, # part of the unique portion of the matrix
|
||||
'runs_on': runson,
|
||||
'force_msys2_bash': msys2_bash and 'yes' or 'no',
|
||||
'package_suffix': suffix,
|
||||
'package_mode': mode,
|
||||
'publish': publish and 'yes' or 'no',
|
||||
'artifact': artifact and 'yes' or 'no',
|
||||
'separate_debug': separate_debug and 'yes' or 'no',
|
||||
'asset_path': asset_path,
|
||||
'asset_name': asset_name,
|
||||
'debug_asset_path': debug_asset_path,
|
||||
'debug_asset_name': debug_asset_name,
|
||||
'job_name': job_name,
|
||||
'shell': shell,
|
||||
})
|
||||
if publish:
|
||||
publish_matrix.append({
|
||||
'bsh_build_platform': bplatform, # part of the unique portion of the matrix
|
||||
'bsh_host_arch': arch, # part of the unique portion of the matrix
|
||||
'bsh_host_platform': platform, # part of the unique portion of the matrix
|
||||
'bsh_host_libc': libc, # part of the unique portion of the matrix
|
||||
'bsh_static_dynamic': statdyn, # part of the unique portion of the matrix
|
||||
'asset_path': asset_path,
|
||||
'asset_name': asset_name,
|
||||
'starcatcher_name': starcatcher_name,
|
||||
})
|
||||
|
||||
set_output('build_matrix', json.dumps({ 'include': build_matrix }))
|
||||
set_output('publish_matrix', json.dumps({ 'include': publish_matrix }))
|
||||
set_output('do_release', do_release and 'yes' or 'no')
|
||||
set_output('do_publish', do_publish and 'yes' or 'no')
|
20
.github/starcatcher-publish.sh
vendored
@ -1,20 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
cat << NETRC > ~/.netrc
|
||||
machine $(echo $PUBLISH_HOSTPORT | cut -d ':' -f 1)
|
||||
login $PUBLISH_USERNAME
|
||||
password $PUBLISH_PASSWORD
|
||||
NETRC
|
||||
chmod 660 ~/.netrc
|
||||
|
||||
mountpoint=ftpmnt
|
||||
mkdir $mountpoint
|
||||
curlftpfs "$PUBLISH_HOSTPORT" $mountpoint -o ssl,ciphers='ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256'
|
||||
if [[ -z ${PUBLISH_ACCESSCHECK-} ]]; then
|
||||
cp $PUBLISH_FILENAME $mountpoint/${PUBLISH_DIRECTORY:-.}/
|
||||
fi
|
||||
fusermount -u $mountpoint
|
||||
rmdir $mountpoint
|
10
.github/starcatcher-release.sh
vendored
@ -1,10 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
curl "https://starcatcher.us/TPT/perform-release.lua?mod=$MOD_ID&type=$RELEASE_TYPE&name=$RELEASE_NAME&commit=$GITHUB_SHA" > perform_release
|
||||
if ! grep "Release complete" < perform_release > /dev/null; then
|
||||
cat perform_release
|
||||
exit 1
|
||||
fi
|
12
.github/upload-release-asset.sh
vendored
@ -1,12 +0,0 @@
|
||||
set -euo pipefail
|
||||
IFS=$'\t\n'
|
||||
|
||||
temp=.temp
|
||||
mkdir $temp
|
||||
cp $ASSET_PATH $temp/$ASSET_NAME
|
||||
(
|
||||
cd $temp
|
||||
gh release upload $GITHUB_REF_NAME $ASSET_NAME
|
||||
)
|
||||
rm -r $temp
|
||||
echo browser_download_url=https://github.com/$GITHUB_REPOSITORY/releases/download/$GITHUB_REF_NAME/$ASSET_NAME >> $GITHUB_OUTPUT
|
31
.github/vs-env.sh
vendored
@ -1,31 +0,0 @@
|
||||
set -euo pipefail
|
||||
IFS=$'\t\n'
|
||||
|
||||
IFS=$'\t\n\r'
|
||||
for i in $("$(env | grep '^ProgramFiles(x86)=' | cut -d = -f 2-)/Microsoft Visual Studio/Installer/vswhere.exe" \
|
||||
-sort \
|
||||
-prerelease \
|
||||
-requiresAny \
|
||||
-requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 \
|
||||
-requires Microsoft.VisualStudio.Workload.WDExpress \
|
||||
-products \* \
|
||||
-utf8 \
|
||||
-property installationPath); do
|
||||
if ! [ -z ${VS_ENV_FILTER-} ]; then
|
||||
if ! echo $i | grep $VS_ENV_FILTER >/dev/null; then
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
vs_install_dir=$i
|
||||
break
|
||||
done
|
||||
IFS=$'\t\n'
|
||||
|
||||
for i in $(MSYS_NO_PATHCONV=1 cmd /c "$vs_install_dir\\VC\\Auxiliary\\Build\\vcvarsall.bat" $VS_ENV_PARAMS \& env \& exit /b); do
|
||||
set +e
|
||||
export "$i" 2>/dev/null
|
||||
echo $i | grep ERROR
|
||||
set -e
|
||||
done
|
||||
|
||||
cl
|
182
.github/workflows/build.yaml
vendored
@ -1,182 +0,0 @@
|
||||
name: build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '*'
|
||||
tags:
|
||||
- 'v*.*'
|
||||
- 'snapshot-*'
|
||||
- 'tptlibsdev-*'
|
||||
pull_request:
|
||||
branches:
|
||||
- '*'
|
||||
|
||||
jobs:
|
||||
prepare:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
do_release: ${{ steps.prepare.outputs.do_release }}
|
||||
build_matrix: ${{ steps.prepare.outputs.build_matrix }}
|
||||
publish_matrix: ${{ steps.prepare.outputs.publish_matrix }}
|
||||
release_type: ${{ steps.prepare.outputs.release_type }}
|
||||
release_name: ${{ steps.prepare.outputs.release_name }}
|
||||
mod_id: ${{ steps.prepare.outputs.mod_id }}
|
||||
app_name: ${{ steps.prepare.outputs.app_name }}
|
||||
app_comment: ${{ steps.prepare.outputs.app_comment }}
|
||||
app_exe: ${{ steps.prepare.outputs.app_exe }}
|
||||
app_id: ${{ steps.prepare.outputs.app_id }}
|
||||
app_data: ${{ steps.prepare.outputs.app_data }}
|
||||
app_vendor: ${{ steps.prepare.outputs.app_vendor }}
|
||||
do_publish: ${{ steps.prepare.outputs.do_publish }}
|
||||
steps:
|
||||
- run: git config --global core.autocrlf false
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.10'
|
||||
- run: python -m pip install meson==1.2.3 ninja # TODO: go back to using latest meson once https://github.com/mesonbuild/meson/pull/12544 is live
|
||||
- id: prepare
|
||||
run: python ./.github/prepare.py
|
||||
env:
|
||||
PUBLISH_HOSTPORT: ${{ secrets.STARCATCHER_PUBLISH_HOSTPORT }}
|
||||
GITHUB_REF: ${{ github.ref }}
|
||||
- if: steps.prepare.outputs.do_publish == 'yes'
|
||||
run: sudo apt update && sudo apt install curlftpfs && bash -c './.github/starcatcher-publish.sh'
|
||||
env:
|
||||
PUBLISH_HOSTPORT: ${{ secrets.STARCATCHER_PUBLISH_HOSTPORT }}
|
||||
PUBLISH_USERNAME: ${{ secrets.STARCATCHER_PUBLISH_USERNAME }}
|
||||
PUBLISH_PASSWORD: ${{ secrets.STARCATCHER_PUBLISH_PASSWORD }}
|
||||
PUBLISH_ACCESSCHECK: yes
|
||||
- if: steps.prepare.outputs.do_release == 'yes'
|
||||
id: create_release
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
RELEASE_NAME: ${{ steps.prepare.outputs.release_name }}
|
||||
run: bash -c './.github/create-release.sh'
|
||||
build:
|
||||
runs-on: ${{ matrix.runs_on }}
|
||||
name: ${{ matrix.job_name }}
|
||||
needs: [prepare]
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix: ${{ fromJSON(needs.prepare.outputs.build_matrix) }}
|
||||
defaults:
|
||||
run:
|
||||
shell: ${{ matrix.shell }}
|
||||
steps:
|
||||
- if: matrix.force_msys2_bash == 'yes'
|
||||
uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
msystem: UCRT64
|
||||
update: true
|
||||
path-type: strict
|
||||
cache: true
|
||||
# this list doesn't have to mirror the one in build.sh perfectly
|
||||
# but the packages listed here get cached properly and take less time to install
|
||||
install: >-
|
||||
git
|
||||
curl
|
||||
mingw-w64-ucrt-x86_64-gcc
|
||||
mingw-w64-ucrt-x86_64-pkgconf
|
||||
mingw-w64-ucrt-x86_64-bzip2
|
||||
mingw-w64-ucrt-x86_64-luajit
|
||||
mingw-w64-ucrt-x86_64-jsoncpp
|
||||
mingw-w64-ucrt-x86_64-curl
|
||||
mingw-w64-ucrt-x86_64-SDL2
|
||||
mingw-w64-ucrt-x86_64-libpng
|
||||
mingw-w64-ucrt-x86_64-meson
|
||||
mingw-w64-ucrt-x86_64-python
|
||||
mingw-w64-ucrt-x86_64-python-pip
|
||||
mingw-w64-ucrt-x86_64-fftw
|
||||
mingw-w64-ucrt-x86_64-cmake
|
||||
mingw-w64-ucrt-x86_64-7zip
|
||||
mingw-w64-ucrt-x86_64-jq
|
||||
patch
|
||||
- run: git config --global core.autocrlf false
|
||||
- uses: actions/checkout@v4
|
||||
- if: matrix.force_msys2_bash != 'yes'
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.10'
|
||||
- if: matrix.force_msys2_bash != 'yes'
|
||||
run: python -m pip install meson==1.2.3 ninja # TODO: go back to using latest meson once https://github.com/mesonbuild/meson/pull/12544 is live
|
||||
- if: matrix.bsh_build_platform == 'darwin'
|
||||
run: brew install bash coreutils
|
||||
- run: bash -c './.github/build.sh'
|
||||
env:
|
||||
BSH_HOST_ARCH: ${{ matrix.bsh_host_arch }}
|
||||
BSH_HOST_PLATFORM: ${{ matrix.bsh_host_platform }}
|
||||
BSH_HOST_LIBC: ${{ matrix.bsh_host_libc }}
|
||||
BSH_STATIC_DYNAMIC: ${{ matrix.bsh_static_dynamic }}
|
||||
BSH_BUILD_PLATFORM: ${{ matrix.bsh_build_platform }}
|
||||
BSH_DEBUG_RELEASE: ${{ matrix.bsh_debug_release }}
|
||||
RELEASE_NAME: ${{ needs.prepare.outputs.release_name }}
|
||||
RELEASE_TYPE: ${{ needs.prepare.outputs.release_type }}
|
||||
MOD_ID: ${{ needs.prepare.outputs.mod_id }}
|
||||
APP_NAME: ${{ needs.prepare.outputs.app_name }}
|
||||
APP_COMMENT: ${{ needs.prepare.outputs.app_comment }}
|
||||
APP_EXE: ${{ needs.prepare.outputs.app_exe }}
|
||||
APP_ID: ${{ needs.prepare.outputs.app_id }}
|
||||
APP_DATA: ${{ needs.prepare.outputs.app_data }}
|
||||
APP_VENDOR: ${{ needs.prepare.outputs.app_vendor }}
|
||||
SEPARATE_DEBUG: ${{ matrix.separate_debug }}
|
||||
PACKAGE_MODE: ${{ matrix.package_mode }}
|
||||
ASSET_PATH: ${{ matrix.asset_path }}
|
||||
DEBUG_ASSET_PATH: ${{ matrix.debug_asset_path }}
|
||||
- if: needs.prepare.outputs.do_release == 'yes' && matrix.publish == 'yes' # TODO-NTL: ship licenses
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
ASSET_PATH: build/${{ matrix.asset_path }}
|
||||
ASSET_NAME: ${{ matrix.asset_name }}
|
||||
run: bash -c './.github/upload-release-asset.sh'
|
||||
- if: needs.prepare.outputs.do_release == 'yes' && matrix.publish == 'yes' && matrix.separate_debug == 'yes'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
ASSET_PATH: build/${{ matrix.debug_asset_path }}
|
||||
ASSET_NAME: ${{ matrix.debug_asset_name }}
|
||||
run: bash -c './.github/upload-release-asset.sh'
|
||||
- uses: actions/upload-artifact@v4
|
||||
if: matrix.artifact == 'yes'
|
||||
with:
|
||||
path: build/${{ matrix.asset_path }}
|
||||
name: ${{ matrix.asset_name }}
|
||||
- uses: actions/upload-artifact@v4
|
||||
if: matrix.artifact == 'yes' && matrix.separate_debug == 'yes'
|
||||
with:
|
||||
path: build/${{ matrix.debug_asset_path }}
|
||||
name: ${{ matrix.debug_asset_name }}
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [build, prepare]
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix: ${{ fromJSON(needs.prepare.outputs.publish_matrix) }}
|
||||
if: needs.prepare.outputs.do_publish == 'yes'
|
||||
steps:
|
||||
- run: git config --global core.autocrlf false
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.asset_name }}
|
||||
- run: mv ${{ matrix.asset_path }} ${{ matrix.starcatcher_name }}
|
||||
- run: sudo apt update && sudo apt install curlftpfs && bash -c './.github/starcatcher-publish.sh'
|
||||
env:
|
||||
PUBLISH_HOSTPORT: ${{ secrets.STARCATCHER_PUBLISH_HOSTPORT }}
|
||||
PUBLISH_USERNAME: ${{ secrets.STARCATCHER_PUBLISH_USERNAME }}
|
||||
PUBLISH_PASSWORD: ${{ secrets.STARCATCHER_PUBLISH_PASSWORD }}
|
||||
PUBLISH_DIRECTORY: ${{ secrets.STARCATCHER_PUBLISH_DIRECTORY }}
|
||||
PUBLISH_FILENAME: ${{ matrix.starcatcher_name }}
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [build, publish, prepare]
|
||||
if: needs.prepare.outputs.do_publish == 'yes'
|
||||
steps:
|
||||
- run: git config --global core.autocrlf false
|
||||
- uses: actions/checkout@v4
|
||||
- run: ./.github/starcatcher-release.sh
|
||||
env:
|
||||
RELEASE_NAME: ${{ needs.prepare.outputs.release_name }}
|
||||
RELEASE_TYPE: ${{ needs.prepare.outputs.release_type }}
|
||||
MOD_ID: ${{ needs.prepare.outputs.mod_id }}
|
||||
GITHUB_SHA: ${{ github.sha }}
|
95
.gitignore
vendored
@ -1,47 +1,34 @@
|
||||
# Misc extensions, system files
|
||||
*.zip
|
||||
*.txt
|
||||
*.gz
|
||||
*.out
|
||||
*.sh
|
||||
*.py
|
||||
*.png
|
||||
*.ppm
|
||||
*nohup.out
|
||||
*.swp
|
||||
*~
|
||||
.DS_Store
|
||||
|
||||
# Build files
|
||||
build*/*
|
||||
*.o
|
||||
*.exe
|
||||
*.dmg
|
||||
*.user
|
||||
*.dll
|
||||
*.a
|
||||
*.la
|
||||
|
||||
# Legacy SCons files
|
||||
config.log
|
||||
*.sconsign.dblite
|
||||
*.sconf_temp
|
||||
/site_scons/
|
||||
/generated/
|
||||
|
||||
# User data
|
||||
/stamps/
|
||||
/Saves/
|
||||
/scripts/
|
||||
/recordings/
|
||||
*.def
|
||||
*~
|
||||
*.pref
|
||||
*.lua
|
||||
screenshot_*
|
||||
|
||||
# Visual studio
|
||||
/Debug/
|
||||
/Release/
|
||||
/includes/
|
||||
*.sh
|
||||
stdout.txt
|
||||
stderr.txt
|
||||
build*/*
|
||||
stamps/*
|
||||
Saves/*
|
||||
scripts/*
|
||||
generated/*
|
||||
includes/*
|
||||
recordings/
|
||||
font/*
|
||||
generate
|
||||
Makefile.me
|
||||
*.xcodeproj
|
||||
.DS_Store
|
||||
*.plist
|
||||
*.lproj
|
||||
*.vcxproj*
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.user
|
||||
*.filter
|
||||
*.sln
|
||||
@ -61,34 +48,26 @@ screenshot_*
|
||||
*.unsuccessfulbuild
|
||||
*.pdb
|
||||
*.db
|
||||
|
||||
# QtCreator / KDevelop
|
||||
*.user
|
||||
*.config
|
||||
*.creator*
|
||||
*.cflags
|
||||
*.cxxflags
|
||||
*.files
|
||||
*.includes
|
||||
*.kdev4
|
||||
/.kdev4
|
||||
|
||||
# Other IDEs / misc
|
||||
.vscode/
|
||||
.vs/
|
||||
*.sublime-*
|
||||
*.project
|
||||
*.cproject
|
||||
*.settings
|
||||
*.cbp
|
||||
*.layout
|
||||
*.config
|
||||
*.creator*
|
||||
*.cflags
|
||||
*.cxxflags
|
||||
*.files
|
||||
*.includes
|
||||
config.log
|
||||
*.sconsign.dblite
|
||||
*.sconf_temp
|
||||
*.gch
|
||||
*.pyc
|
||||
*.xcodeproj
|
||||
*.plist
|
||||
*.lproj
|
||||
*.opensdf
|
||||
*.sdf
|
||||
/font/
|
||||
compile_commands.json
|
||||
ignore/
|
||||
site_scons/site_tools/mfprogram/*.pyc
|
||||
site_scons/site_tools/gch/*.pyc
|
||||
.vscode/
|
||||
.vs/
|
||||
|
||||
screenshot_*
|
||||
|
51
README.md
@ -1,4 +1,4 @@
|
||||
The Powder Toy - April 2024
|
||||
The Powder Toy - February 2020
|
||||
==========================
|
||||
|
||||
Get the latest version [from the Powder Toy website](https://powdertoy.co.uk/Download.html).
|
||||
@ -10,7 +10,7 @@ Have you ever wanted to blow something up? Or maybe you always dreamt of operati
|
||||
|
||||
The Powder Toy is a free physics sandbox game, which simulates air pressure and velocity, heat, gravity and a countless number of interactions between different substances! The game provides you with various building materials, liquids, gases and electronic components which can be used to construct complex machines, guns, bombs, realistic terrains and almost anything else. You can then mine them and watch cool explosions, add intricate wirings, play with little stickmen or operate your machine. You can browse and play thousands of different saves made by the community or upload your own – we welcome your creations!
|
||||
|
||||
There is a Lua API – you can automate your work or even make plugins for the game. The Powder Toy is free and the source code is distributed under the GNU General Public License, so you can modify the game yourself or help with development.
|
||||
There is a Lua API – you can automate your work or even make plugins for the game. The Powder Toy is free and the source code is distributed under the GNU General Public License, so you can modify the game yourself or help with development. TPT is compiled using scons.
|
||||
|
||||
Build instructions
|
||||
===========================================================================
|
||||
@ -25,39 +25,25 @@ Thanks
|
||||
* Skresanov Savely
|
||||
* cracker64
|
||||
* Catelite
|
||||
* Victoria Hoyle
|
||||
* Bryan Hoyle
|
||||
* Nathan Cousins
|
||||
* jacksonmj
|
||||
* Felix Wallin
|
||||
* Lieuwe Mosch
|
||||
* Anthony Boot
|
||||
* Me4502
|
||||
* Matthew "me4502"
|
||||
* MaksProg
|
||||
* jacob1
|
||||
* mniip
|
||||
* LBPHacker
|
||||
|
||||
Libraries and other assets used
|
||||
===========================================================================
|
||||
|
||||
* [BSON](https://github.com/interactive-matter/bson-c)
|
||||
* [bzip2](http://www.bzip.org/)
|
||||
* [FFTW](http://fftw.org/)
|
||||
* [JsonCpp](https://github.com/open-source-parsers/jsoncpp)
|
||||
* [libcurl](https://curl.se/libcurl/)
|
||||
* [libpng](http://www.libpng.org/pub/png/libpng.html)
|
||||
* [Lua](https://www.lua.org/)
|
||||
* [LuaJIT](https://luajit.org/)
|
||||
* [Mallangche](https://github.com/JammPark/Mallangche)
|
||||
* [mbedtls](https://www.trustedfirmware.org/projects/mbed-tls/)
|
||||
* [SDL](https://libsdl.org/)
|
||||
* [zlib](https://www.zlib.net/)
|
||||
|
||||
Instructions
|
||||
===========================================================================
|
||||
|
||||
Click on the elements with the mouse and draw in the field, like in MS Paint. The rest of the game is learning what happens next.
|
||||
|
||||
|
||||
Controls
|
||||
===========================================================================
|
||||
|
||||
@ -82,7 +68,6 @@ Controls
|
||||
| I | Invert Pressure and Velocity map |
|
||||
| W | Cycle gravity modes (use with Ctrl when STK2 is out) |
|
||||
| Y | Cycle air modes |
|
||||
| Ctrl + E | Cycle edge modes |
|
||||
| B | Enter decoration editor menu |
|
||||
| Ctrl + B | Toggle decorations on/off |
|
||||
| N | Toggle Newtonian Gravity on/off |
|
||||
@ -108,21 +93,19 @@ Controls
|
||||
| Shift + R | Horizontal mirror for selected area when pasting stamps |
|
||||
| Ctrl + Shift + R | Vertical mirror for selected area when pasting stamps |
|
||||
| R | Rotate selected area counterclockwise when pasting stamps |
|
||||
| F11 | Toggle fullscreen |
|
||||
|
||||
|
||||
|
||||
Command Line
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
| Command | Description | Example |
|
||||
| --------------------- | ------------------------------------------------ | --------------------------------------------|
|
||||
| `scale:SIZE` | Change window scale factor | `scale:2` |
|
||||
| `kiosk` | Fullscreen mode | |
|
||||
| `proxy:SERVER[:PORT]` | Proxy server to use | `proxy:wwwcache.lancs.ac.uk:8080` |
|
||||
| `open FILE` | Opens the file as a stamp or game save | |
|
||||
| `ddir DIRECTORY` | Directory used for saving stamps and preferences | |
|
||||
| `ptsave:SAVEID` | Open online save, used by ptsave: URLs | `ptsave:2198` |
|
||||
| `disable-network` | Disables internet connections | |
|
||||
| `disable-bluescreen` | Disable bluescreen handler | |
|
||||
| `redirect` | Redirects output to stdout.txt / stderr.txt | |
|
||||
| `cafile:CAFILE` | Set certificate bundle path | `cafile:/etc/ssl/certs/ca-certificates.crt` |
|
||||
| `capath:CAPATH` | Set certificate directory path | `capath:/etc/ssl/certs` |
|
||||
| Command | Description | Example |
|
||||
| --------------------- | ------------------------------------------------ | --------------------------------- |
|
||||
| `scale:SIZE` | Change window scale factor | `scale:2` |
|
||||
| `kiosk` | Fullscreen mode | |
|
||||
| `proxy:SERVER[:PORT]` | Proxy server to use | `proxy:wwwcache.lancs.ac.uk:8080` |
|
||||
| `open FILE` | Opens the file as a stamp or game save | |
|
||||
| `ddir DIRECTORY` | Directory used for saving stamps and preferences | |
|
||||
| `ptsave:SAVEID` | Open online save, used by ptsave: URLs | `ptsave:2198` |
|
||||
| `disable-network` | Disables internet connections | |
|
||||
| `redirect` | Redirects output to stdout.txt / stderr.txt | |
|
||||
|
617
SConscript
Normal file
@ -0,0 +1,617 @@
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import platform
|
||||
import atexit
|
||||
import time
|
||||
import SCons.Util
|
||||
|
||||
|
||||
# because of an implementation detail commandlines are limited to 10000 characters on windows using mingw. the following fix was copied from
|
||||
# http://scons.org/wiki/LongCmdLinesOnWin32 and circumvents this issue.
|
||||
class ourSpawn:
|
||||
def ourspawn(self, sh, escape, cmd, args, env):
|
||||
newargs = ' '.join(args[1:])
|
||||
cmdline = cmd + " " + newargs
|
||||
startupinfo = subprocess.STARTUPINFO()
|
||||
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
|
||||
proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE, startupinfo=startupinfo, shell=False, env=env)
|
||||
data, err = proc.communicate()
|
||||
rv = proc.wait()
|
||||
if rv:
|
||||
print("=====")
|
||||
print(err)
|
||||
print("=====")
|
||||
return rv
|
||||
def SetupSpawn(env):
|
||||
buf = ourSpawn()
|
||||
buf.ourenv = env
|
||||
env['SPAWN'] = buf.ourspawn
|
||||
|
||||
def FatalError(message):
|
||||
print(message)
|
||||
raise SystemExit(1)
|
||||
|
||||
#wrapper around SCons' AddOption
|
||||
def AddSconsOption(name, default, hasArgs, help):
|
||||
AddOption("--{0}".format(name), dest=name, action=("store" if hasArgs else "store_true"), default=default, help=help)
|
||||
|
||||
AddSconsOption('win', False, False, "Target Windows.")
|
||||
AddSconsOption('lin', False, False, "Target Linux.")
|
||||
AddSconsOption('mac', False, False, "Target Mac OS X.")
|
||||
AddSconsOption('msvc', False, False, "Use the Microsoft Visual Studio compiler.")
|
||||
AddSconsOption("tool", False, True, "Tool prefix appended before gcc/g++.")
|
||||
|
||||
AddSconsOption('beta', False, False, "Beta build.")
|
||||
AddSconsOption('no-install-prompt', False, False, "Disable the \"do you want to install Powder Toy?\" prompt.")
|
||||
AddSconsOption('ignore-updates', False, False, "Disable checking for updates.")
|
||||
AddSconsOption('save-version', False, True, "Save version.")
|
||||
AddSconsOption('minor-version', False, True, "Minor version.")
|
||||
AddSconsOption('build-number', False, True, "Build number.")
|
||||
AddSconsOption('snapshot', False, False, "Snapshot build.")
|
||||
AddSconsOption('snapshot-id', False, True, "Snapshot build ID.")
|
||||
|
||||
AddSconsOption('64bit', False, False, "Compile a 64 bit binary.")
|
||||
AddSconsOption('32bit', False, False, "Compile a 32 bit binary.")
|
||||
AddSconsOption("universal", False, False, "compile universal binaries on Mac OS X.")
|
||||
AddSconsOption('no-sse', False, False, "Disable SSE optimizations.")
|
||||
AddSconsOption('sse', True, False, "Enable SSE optimizations (default).")
|
||||
AddSconsOption('sse2', True, False, "Enable SSE2 optimizations (default).")
|
||||
AddSconsOption('sse3', False, False, "Enable SSE3 optimizations.")
|
||||
AddSconsOption('native', False, False, "Enable optimizations specific to your cpu.")
|
||||
AddSconsOption('release', False, False, "Enable loop / compiling optimizations.")
|
||||
|
||||
AddSconsOption('debugging', False, False, "Compile with debug symbols.")
|
||||
AddSconsOption('symbols', False, False, "Preserve (don't strip) symbols")
|
||||
AddSconsOption('static', False, False, "Compile statically.")
|
||||
AddSconsOption('opengl', False, False, "Build with OpenGL interface support.")
|
||||
AddSconsOption('opengl-renderer', False, False, "Build with OpenGL renderer support (turns on --opengl).") #Note: this has nothing to do with --renderer, only tells the game to render particles with opengl
|
||||
AddSconsOption('renderer', False, False, "Build the save renderer.")
|
||||
AddSconsOption('font', False, False, "Build the font editor.")
|
||||
AddSconsOption('i18n-debug', False, False, "Instrument the binary for debugging internationalization")
|
||||
|
||||
AddSconsOption('wall', False, False, "Error on all warnings.")
|
||||
AddSconsOption('no-warnings', False, False, "Disable all compiler warnings.")
|
||||
AddSconsOption('nolua', False, False, "Disable Lua.")
|
||||
AddSconsOption('luajit', False, False, "Enable LuaJIT.")
|
||||
AddSconsOption('lua52', False, False, "Compile using lua 5.2.")
|
||||
AddSconsOption('nofft', False, False, "Disable FFT.")
|
||||
AddSconsOption('nohttp', False, False, "Disable http requests and libcurl.")
|
||||
AddSconsOption("output", False, True, "Executable output name.")
|
||||
|
||||
|
||||
#detect platform automatically, but it can be overrided
|
||||
tool = GetOption('tool')
|
||||
isX86 = platform.machine() in ["amd64", "AMD64", "i386", "i686", "x86", "x86_64"]
|
||||
platform = compilePlatform = platform.system()
|
||||
if GetOption('win'):
|
||||
platform = "Windows"
|
||||
elif GetOption('lin'):
|
||||
platform = "Linux"
|
||||
elif GetOption('mac'):
|
||||
platform = "Darwin"
|
||||
elif compilePlatform not in ["Linux", "Windows", "Darwin", "FreeBSD"]:
|
||||
FatalError("Unknown platform: {0}".format(platform))
|
||||
|
||||
msvc = GetOption('msvc')
|
||||
if msvc and platform != "Windows":
|
||||
FatalError("Error: --msvc only works on windows")
|
||||
|
||||
#Create SCons Environment
|
||||
if GetOption('msvc'):
|
||||
env = Environment(tools=['default'], ENV=os.environ, TARGET_ARCH='x86')
|
||||
elif platform == "Windows" and not GetOption('msvc'):
|
||||
env = Environment(tools=['mingw'], ENV=os.environ)
|
||||
else:
|
||||
env = Environment(tools=['default'], ENV=os.environ)
|
||||
|
||||
#attempt to automatically find cross compiler
|
||||
if not tool and compilePlatform == "Linux" and platform == "Windows" and compilePlatform != platform:
|
||||
if not GetOption('64bit'):
|
||||
crossList = ["mingw32", "i686-w64-mingw32", "i386-mingw32msvc", "i486-mingw32msvc", "i586-mingw32msvc", "i686-mingw32msvc"]
|
||||
else:
|
||||
crossList = ["x86_64-w64-mingw32", "amd64-mingw32msvc"]
|
||||
for i in crossList:
|
||||
#found a cross compiler, set tool here, which will update everything in env later
|
||||
if WhereIs("{0}-g++".format(i)):
|
||||
tool = i+"-"
|
||||
break
|
||||
if not tool:
|
||||
print("Could not automatically find cross compiler, use --tool to specify manually")
|
||||
|
||||
#set tool prefix
|
||||
#more things may need to be set (http://clam-project.org/clam/trunk/CLAM/scons/sconstools/crossmingw.py), but this works for us
|
||||
if tool:
|
||||
env['CC'] = tool+env['CC']
|
||||
env['CXX'] = tool+env['CXX']
|
||||
if platform == "Windows":
|
||||
env['RC'] = tool+env['RC']
|
||||
env['STRIP'] = tool+'strip'
|
||||
if os.path.isdir("/usr/{0}/bin".format(tool[:-1])):
|
||||
env['ENV']['PATH'] = "/usr/{0}/bin:{1}".format(tool[:-1], os.environ['PATH'])
|
||||
|
||||
#copy environment variables because scons doesn't do this by default
|
||||
for var in ["CC","CXX","LD","LIBPATH","STRIP"]:
|
||||
if var in os.environ:
|
||||
env[var] = os.environ[var]
|
||||
print("copying environment variable {0}={1!r}".format(var,os.environ[var]))
|
||||
# variables containing several space separated things
|
||||
for var in ["CFLAGS","CCFLAGS","CXXFLAGS","LINKFLAGS","CPPDEFINES","CPPPATH"]:
|
||||
if var in os.environ:
|
||||
if var in env:
|
||||
env[var] += SCons.Util.CLVar(os.environ[var])
|
||||
else:
|
||||
env[var] = SCons.Util.CLVar(os.environ[var])
|
||||
print("copying environment variable {0}={1!r}".format(var,os.environ[var]))
|
||||
|
||||
#Used for intro text / executable name, actual bit flags are only set if the --64bit/--32bit command line args are given
|
||||
def add32bitflags(env):
|
||||
env["BIT"] = 32
|
||||
def add64bitflags(env):
|
||||
if platform == "Windows":
|
||||
env.Append(CPPDEFINES=['__CRT__NO_INLINE'])
|
||||
env.Append(LINKFLAGS=['-Wl,--stack=16777216'])
|
||||
env.Append(CPPDEFINES=['_64BIT'])
|
||||
env["BIT"] = 64
|
||||
#add 32/64 bit defines before configuration
|
||||
if GetOption('64bit'):
|
||||
env.Append(LINKFLAGS=['-m64'])
|
||||
env.Append(CCFLAGS=['-m64'])
|
||||
add64bitflags(env)
|
||||
elif GetOption('32bit'):
|
||||
env.Append(LINKFLAGS=['-m32'])
|
||||
env.Append(CCFLAGS=['-m32'])
|
||||
add32bitflags(env)
|
||||
|
||||
if GetOption('universal'):
|
||||
if platform != "Darwin":
|
||||
FatalError("Error: --universal only works on Mac OS X")
|
||||
else:
|
||||
env.Append(CCFLAGS=['-arch', 'i386', '-arch', 'x86_64'])
|
||||
env.Append(LINKFLAGS=['-arch', 'i386', '-arch', 'x86_64'])
|
||||
|
||||
env.Append(CPPPATH=['src/', 'data/'])
|
||||
if GetOption("msvc"):
|
||||
if GetOption("static"):
|
||||
env.Append(LIBPATH=['StaticLibs/'])
|
||||
else:
|
||||
env.Append(LIBPATH=['Libraries/'])
|
||||
env.Append(CPPPATH=['includes/', 'resources/'])
|
||||
|
||||
#Check 32/64 bit
|
||||
def CheckBit(context):
|
||||
context.Message('Checking if 64 bit... ')
|
||||
program = """#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
int main() {
|
||||
printf("%d", (int)sizeof(size_t));
|
||||
return 0;
|
||||
}
|
||||
"""
|
||||
ret = context.TryCompile(program, '.c')
|
||||
if ret == 0:
|
||||
return False
|
||||
ret = context.TryRun(program, '.c')
|
||||
if ret[1] == '':
|
||||
return False
|
||||
context.Result(int(ret[1]) == 8)
|
||||
if int(ret[1]) == 8:
|
||||
print("Adding 64 bit compile flags")
|
||||
add64bitflags(context.env)
|
||||
elif int(ret[1]) == 4:
|
||||
print("Adding 32 bit compile flags")
|
||||
add32bitflags(context.env)
|
||||
return ret[1]
|
||||
|
||||
#Custom function to check for Mac OS X frameworks
|
||||
def CheckFramework(context, framework):
|
||||
import SCons.Conftest
|
||||
#Extreme hack, TODO: maybe think of a better one (like replicating CheckLib here) or at least just fix the message
|
||||
oldLinkFlags = env["LINKFLAGS"]
|
||||
context.env.Append(LINKFLAGS=["-framework", framework])
|
||||
context.Display("Checking for Darwin Framework {0}...".format(framework))
|
||||
ret = SCons.Conftest.CheckLib(context, ["m"], autoadd = 0)
|
||||
context.did_show_result = 1
|
||||
if not ret:
|
||||
context.env.Append(LINKFLAGS=["-framework", framework])
|
||||
if framework != "Cocoa":
|
||||
env.Append(CPPPATH=['/Library/Frameworks/{0}.framework/Headers/'.format(framework)])
|
||||
else:
|
||||
context.env.Replace(LINKFLAGS=oldLinkFlags)
|
||||
return not ret
|
||||
|
||||
#function that finds libraries and appends them to LIBS
|
||||
def findLibs(env, conf):
|
||||
#Windows specific libs
|
||||
if platform == "Windows":
|
||||
if msvc:
|
||||
libChecks = ['shell32', 'wsock32', 'user32', 'Advapi32', 'ws2_32', 'Wldap32', 'crypt32']
|
||||
if GetOption('static'):
|
||||
libChecks += ['imm32', 'version', 'Ole32', 'OleAut32', 'SetupApi']
|
||||
for i in libChecks:
|
||||
if not conf.CheckLib(i):
|
||||
FatalError("Error: some windows libraries not found or not installed, make sure your compiler is set up correctly")
|
||||
else:
|
||||
if not conf.CheckLib('mingw32') or not conf.CheckLib('ws2_32'):
|
||||
FatalError("Error: some windows libraries not found or not installed, make sure your compiler is set up correctly")
|
||||
|
||||
if not GetOption('renderer') and not conf.CheckLib('SDL2main'):
|
||||
FatalError("libSDL2main not found or not installed")
|
||||
|
||||
#Look for SDL
|
||||
runSdlConfig = platform == "Linux" or compilePlatform == "Linux" or platform == "FreeBSD"
|
||||
if platform == "Darwin" and conf.CheckFramework("SDL2"):
|
||||
runSdlConfig = False
|
||||
elif not conf.CheckLib("SDL2"):
|
||||
FatalError("SDL2 development library not found or not installed")
|
||||
|
||||
if runSdlConfig:
|
||||
try:
|
||||
env.ParseConfig('sdl2-config --cflags')
|
||||
if GetOption('static'):
|
||||
env.ParseConfig('sdl2-config --static-libs')
|
||||
else:
|
||||
env.ParseConfig('sdl2-config --libs')
|
||||
except:
|
||||
pass
|
||||
|
||||
#look for SDL.h
|
||||
if conf.CheckCHeader('SDL2/SDL.h'):
|
||||
env.Append(CPPDEFINES=["SDL_INC"])
|
||||
elif not conf.CheckCHeader('SDL.h'):
|
||||
FatalError("SDL.h not found")
|
||||
|
||||
if not GetOption('nolua') and not GetOption('renderer') and not GetOption('font'):
|
||||
#Look for Lua
|
||||
if platform == "FreeBSD":
|
||||
luaver = "lua-5.1"
|
||||
else:
|
||||
luaver = "lua5.1"
|
||||
if GetOption('luajit'):
|
||||
if not conf.CheckLib(['luajit-5.1', 'luajit5.1', 'luajit2.0', 'luajit', 'libluajit']):
|
||||
FatalError("luajit development library not found or not installed")
|
||||
env.Append(CPPDEFINES=["LUAJIT"])
|
||||
luaver = "luajit"
|
||||
elif GetOption('lua52'):
|
||||
if not conf.CheckLib(['lua5.2', 'lua-5.2', 'lua52', 'lua']):
|
||||
FatalError("lua5.2 development library not found or not installed")
|
||||
env.Append(CPPDEFINES=["LUA_COMPAT_ALL"])
|
||||
if platform == "FreeBSD":
|
||||
luaver = "lua-5.2"
|
||||
else:
|
||||
luaver = "lua5.2"
|
||||
else:
|
||||
if not conf.CheckLib(['lua5.1', 'lua-5.1', 'lua51', 'lua']):
|
||||
if platform != "Darwin" or not conf.CheckFramework("Lua"):
|
||||
FatalError("lua5.1 development library not found or not installed")
|
||||
foundpkg = False
|
||||
if platform == "Linux" or platform == "FreeBSD":
|
||||
try:
|
||||
env.ParseConfig("pkg-config --cflags {0}".format(luaver))
|
||||
env.ParseConfig("pkg-config --libs {0}".format(luaver))
|
||||
env.Append(CPPDEFINES=["LUA_R_INCL"])
|
||||
foundpkg = True
|
||||
except:
|
||||
pass
|
||||
if not foundpkg:
|
||||
#Look for lua.h
|
||||
foundheader = False
|
||||
if GetOption('luajit'):
|
||||
foundheader = conf.CheckCHeader('luajit-2.0/lua.h')
|
||||
elif GetOption('lua52'):
|
||||
foundheader = conf.CheckCHeader('lua5.2/lua.h') or conf.CheckCHeader('lua52/lua.h')
|
||||
else:
|
||||
foundheader = conf.CheckCHeader('lua5.1/lua.h') or conf.CheckCHeader('lua51/lua.h')
|
||||
if not foundheader:
|
||||
if conf.CheckCHeader('lua.h'):
|
||||
env.Append(CPPDEFINES=["LUA_R_INCL"])
|
||||
else:
|
||||
FatalError("lua.h not found")
|
||||
|
||||
#needed for static lua compiles (in some cases)
|
||||
if platform == "Linux":
|
||||
conf.CheckLib('dl')
|
||||
|
||||
#Look for fftw
|
||||
if not GetOption('nofft') and not GetOption('renderer') and not conf.CheckLib(['fftw3f', 'fftw3f-3', 'libfftw3f-3', 'libfftw3f']):
|
||||
FatalError("fftw3f development library not found or not installed")
|
||||
|
||||
#Look for bz2
|
||||
if not conf.CheckLib(['bz2', 'libbz2']):
|
||||
FatalError("bz2 development library not found or not installed")
|
||||
|
||||
#Check bz2 header too for some reason
|
||||
if not conf.CheckCHeader('bzlib.h'):
|
||||
FatalError("bzip2 headers not found")
|
||||
|
||||
#Look for libz
|
||||
if not conf.CheckLib(['z', 'zlib']):
|
||||
FatalError("libz not found or not installed")
|
||||
|
||||
#Look for libcurl
|
||||
useCurl = not GetOption('nohttp') and not GetOption('renderer')
|
||||
if useCurl and not conf.CheckLib(['curl', 'libcurl']):
|
||||
FatalError("libcurl not found or not installed")
|
||||
|
||||
if useCurl and (platform == "Linux" or compilePlatform == "Linux" or platform == "FreeBSD"):
|
||||
if GetOption('static'):
|
||||
env.ParseConfig("curl-config --static-libs")
|
||||
else:
|
||||
env.ParseConfig("curl-config --libs")
|
||||
|
||||
# Needed for ssl. Scons seems incapable of parsing this out of curl-config
|
||||
if platform == "Darwin":
|
||||
if not conf.CheckFramework('Security'):
|
||||
FatalError("Could not find Security.Framework")
|
||||
|
||||
#Look for pthreads
|
||||
if not conf.CheckLib(['pthread', 'pthreadVC2']):
|
||||
FatalError("pthreads development library not found or not installed")
|
||||
|
||||
if msvc:
|
||||
if not conf.CheckHeader('dirent.h') or not conf.CheckHeader('fftw3.h') or not conf.CheckHeader('pthread.h') or not conf.CheckHeader('zlib.h'):
|
||||
FatalError("Required headers not found")
|
||||
else:
|
||||
#Look for libm
|
||||
if not conf.CheckLib('m'):
|
||||
FatalError("libm not found or not installed")
|
||||
|
||||
#Look for OpenGL libraries
|
||||
if GetOption('opengl'):
|
||||
if platform == "Linux" or platform == "FreeBSD":
|
||||
if not conf.CheckLib('GL'):
|
||||
FatalError("libGL not found or not installed")
|
||||
try:
|
||||
env.ParseConfig('pkg-config --libs glew gl glu')
|
||||
except:
|
||||
FatalError(sys.exc_info()[0])
|
||||
|
||||
elif platform == "Windows":
|
||||
if not conf.CheckLib('opengl32'):
|
||||
FatalError("opengl32 not found or not installed")
|
||||
if not conf.CheckLib('glew32'):
|
||||
FatalError("glew32 not found or not installed")
|
||||
elif platform == "Darwin":
|
||||
if not conf.CheckFramework("OpenGL"):
|
||||
FatalError("OpenGL framework not found or not installed")
|
||||
|
||||
if platform == "Linux" or platform == "FreeBSD":
|
||||
if not conf.CheckLib('X11'):
|
||||
FatalError("X11 development library not found or not installed")
|
||||
|
||||
if not conf.CheckLib('rt'):
|
||||
FatalError("librt not found or not installed")
|
||||
elif platform == "Windows":
|
||||
#These need to go last
|
||||
if not conf.CheckLib('gdi32') or not conf.CheckLib('winmm') or (not msvc and not conf.CheckLib('dxguid')):
|
||||
FatalError("Error: some windows libraries not found or not installed, make sure your compiler is set up correctly")
|
||||
elif platform == "Darwin":
|
||||
if not conf.CheckFramework("Cocoa"):
|
||||
FatalError("Cocoa framework not found or not installed")
|
||||
|
||||
if GetOption('clean'):
|
||||
pass
|
||||
elif not GetOption('help'):
|
||||
conf = Configure(env)
|
||||
conf.AddTest('CheckFramework', CheckFramework)
|
||||
conf.AddTest('CheckBit', CheckBit)
|
||||
if not conf.CheckCC() or not conf.CheckCXX():
|
||||
FatalError("compiler not correctly configured")
|
||||
if platform == compilePlatform and isX86 and not GetOption('32bit') and not GetOption('64bit') and not GetOption('msvc'):
|
||||
conf.CheckBit()
|
||||
findLibs(env, conf)
|
||||
env = conf.Finish()
|
||||
|
||||
if not msvc:
|
||||
env.Append(CXXFLAGS=['-std=c++11' if not GetOption('i18n-debug') else '-std=c++14'])
|
||||
env.Append(CXXFLAGS=['-U__STRICT_ANSI__'])
|
||||
env.Append(CXXFLAGS=['-Wno-invalid-offsetof'])
|
||||
if platform == "Linux":
|
||||
env.Append(CXXFLAGS=['-Wno-unused-result'])
|
||||
|
||||
|
||||
#Add platform specific flags and defines
|
||||
if platform == "Windows":
|
||||
env.Append(CPPDEFINES=["WIN", "_WIN32_WINNT=0x0501", "_USING_V110_SDK71_"])
|
||||
if msvc:
|
||||
env.Append(CCFLAGS=['/Gm', '/Zi', '/EHsc', '/FS', '/GS']) #enable minimal rebuild, ?, enable exceptions, allow -j to work in debug builds, enable security check
|
||||
if GetOption('renderer'):
|
||||
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
|
||||
else:
|
||||
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS,"5.01"'])
|
||||
env.Append(LINKFLAGS=['/OPT:REF', '/OPT:ICF'])
|
||||
env.Append(CPPDEFINES=['_SCL_SECURE_NO_WARNINGS']) #Disable warnings about 'std::print'
|
||||
if GetOption('static'):
|
||||
env.Append(LINKFLAGS=['/NODEFAULTLIB:msvcrt.lib', '/LTCG'])
|
||||
elif not GetOption('debugging'):
|
||||
env.Append(LINKFLAGS=['/NODEFAULTLIB:msvcrtd.lib'])
|
||||
else:
|
||||
env.Append(LINKFLAGS=['-mwindows'])
|
||||
elif platform == "Linux" or platform == "FreeBSD":
|
||||
env.Append(CPPDEFINES=['LIN'])
|
||||
elif platform == "Darwin":
|
||||
env.Append(CPPDEFINES=['MACOSX'])
|
||||
#env.Append(LINKFLAGS=['-headerpad_max_install_names']) #needed in some cross compiles
|
||||
if GetOption('luajit'):
|
||||
env.Append(LINKFLAGS=['-pagezero_size', '10000', '-image_base', '100000000'])
|
||||
|
||||
|
||||
#Add architecture flags and defines
|
||||
if isX86:
|
||||
env.Append(CPPDEFINES='X86')
|
||||
if not GetOption('no-sse'):
|
||||
if GetOption('sse'):
|
||||
if msvc:
|
||||
if not GetOption('sse2'):
|
||||
env.Append(CCFLAGS=['/arch:SSE'])
|
||||
else:
|
||||
env.Append(CCFLAGS=['-msse'])
|
||||
env.Append(CPPDEFINES=['X86_SSE'])
|
||||
if GetOption('sse2'):
|
||||
if msvc:
|
||||
env.Append(CCFLAGS=['/arch:SSE2'])
|
||||
else:
|
||||
env.Append(CCFLAGS=['-msse2'])
|
||||
env.Append(CPPDEFINES=['X86_SSE2'])
|
||||
if GetOption('sse3'):
|
||||
if msvc:
|
||||
FatalError("--sse3 doesn't work with --msvc")
|
||||
else:
|
||||
env.Append(CCFLAGS=['-msse3'])
|
||||
env.Append(CPPDEFINES=['X86_SSE3'])
|
||||
if GetOption('native') and not msvc:
|
||||
env.Append(CCFLAGS=['-march=native'])
|
||||
|
||||
|
||||
#Add optimization flags and defines
|
||||
if GetOption('debugging'):
|
||||
if msvc:
|
||||
env.Append(CCFLAGS=['/Od'])
|
||||
if GetOption('static'):
|
||||
env.Append(CCFLAGS=['/MTd'])
|
||||
else:
|
||||
env.Append(CCFLAGS=['/MDd'])
|
||||
else:
|
||||
env.Append(CCFLAGS=['-Wall', '-g'])
|
||||
env.Append(CPPDEFINES=['DEBUG'])
|
||||
elif GetOption('release'):
|
||||
if msvc:
|
||||
# Certain options (like /GL and /GS) cause TPT to be flagged as a virus. Don't include them
|
||||
env.Append(CCFLAGS=['/O2', '/Oy-', '/fp:fast'])
|
||||
if GetOption('static'):
|
||||
env.Append(CCFLAGS=['/MT'])
|
||||
else:
|
||||
env.Append(CCFLAGS=['/MD'])
|
||||
else:
|
||||
env.Append(CCFLAGS=['-O3', '-ftree-vectorize', '-funsafe-math-optimizations', '-ffast-math', '-fomit-frame-pointer'])
|
||||
if platform != "Darwin":
|
||||
env.Append(CCFLAGS=['-funsafe-loop-optimizations'])
|
||||
|
||||
if GetOption('static'):
|
||||
if platform == "Windows":
|
||||
env.Append(CPPDEFINES=['CURL_STATICLIB'])
|
||||
if compilePlatform == "Windows" and not msvc:
|
||||
env.Append(CPPDEFINES=['_PTW32_STATIC_LIB'])
|
||||
else:
|
||||
env.Append(CPPDEFINES=['PTW32_STATIC_LIB'])
|
||||
if msvc:
|
||||
env.Append(CPPDEFINES=['ZLIB_WINAPI'])
|
||||
else:
|
||||
env.Append(LINKFLAGS=['-Wl,-Bstatic'])
|
||||
|
||||
|
||||
#Add other flags and defines
|
||||
if not GetOption('nofft') and not GetOption('renderer'):
|
||||
env.Append(CPPDEFINES=['GRAVFFT'])
|
||||
if not GetOption('nolua') and not GetOption('renderer') and not GetOption('font'):
|
||||
env.Append(CPPDEFINES=['LUACONSOLE'])
|
||||
if GetOption('nohttp') or GetOption('renderer'):
|
||||
env.Append(CPPDEFINES=['NOHTTP'])
|
||||
|
||||
if GetOption('opengl') or GetOption('opengl-renderer'):
|
||||
env.Append(CPPDEFINES=['OGLI', 'PIX32OGL'])
|
||||
if GetOption('opengl-renderer'):
|
||||
env.Append(CPPDEFINES=['OGLR'])
|
||||
|
||||
if GetOption('renderer'):
|
||||
env.Append(CPPDEFINES=['RENDERER'])
|
||||
|
||||
if GetOption('font'):
|
||||
env.Append(CPPDEFINES=['FONTEDITOR'])
|
||||
|
||||
if GetOption('i18n-debug'):
|
||||
env.Append(CPPDEFINES=['I18N_DEBUG'])
|
||||
|
||||
if GetOption("wall"):
|
||||
if msvc:
|
||||
env.Append(CCFLAGS=['/WX'])
|
||||
else:
|
||||
env.Append(CCFLAGS=['-Werror'])
|
||||
elif GetOption("no-warnings"):
|
||||
if msvc:
|
||||
env.Append(CCFLAGS=['/W0'])
|
||||
else:
|
||||
env.Append(CCFLAGS=['-w'])
|
||||
|
||||
|
||||
#Add version defines
|
||||
if GetOption('save-version'):
|
||||
env.Append(CPPDEFINES=["SAVE_VERSION={0}".format(GetOption('save-version'))])
|
||||
|
||||
if GetOption('minor-version'):
|
||||
env.Append(CPPDEFINES=["MINOR_VERSION={0}".format(GetOption('minor-version'))])
|
||||
|
||||
if GetOption('build-number'):
|
||||
env.Append(CPPDEFINES=["BUILD_NUM={0}".format(GetOption('build-number'))])
|
||||
|
||||
if GetOption('snapshot-id'):
|
||||
env.Append(CPPDEFINES=["SNAPSHOT", "SNAPSHOT_ID={0}".format(GetOption('snapshot-id'))])
|
||||
elif GetOption('snapshot'):
|
||||
env.Append(CPPDEFINES=["SNAPSHOT", "SNAPSHOT_ID={0}".format(str(int(time.time())))])
|
||||
|
||||
if GetOption('beta'):
|
||||
env.Append(CPPDEFINES=['BETA'])
|
||||
if GetOption('no-install-prompt'):
|
||||
env.Append(CPPDEFINES=['NO_INSTALL_CHECK'])
|
||||
if GetOption('ignore-updates'):
|
||||
env.Append(CPPDEFINES=['IGNORE_UPDATES'])
|
||||
|
||||
|
||||
#Generate list of sources to compile
|
||||
sources = Glob("src/*.cpp") + Glob("src/*/*.cpp") + Glob("src/*/*/*.cpp") + Glob("data/*.cpp") + Glob("data/localization/*.cpp")
|
||||
if not GetOption('nolua') and not GetOption('renderer') and not GetOption('font'):
|
||||
sources += Glob("src/lua/socket/*.c") + Glob("src/lua/LuaCompat.c")
|
||||
|
||||
if platform == "Windows":
|
||||
sources += env.RES('resources/powder-res.rc')
|
||||
if not msvc:
|
||||
sources = filter(lambda source: not 'src\\simulation\\Gravity.cpp' in str(source), sources)
|
||||
sources = filter(lambda source: not 'src/simulation/Gravity.cpp' in str(source), sources)
|
||||
envCopy = env.Clone()
|
||||
envCopy.Append(CCFLAGS='-mstackrealign')
|
||||
sources += envCopy.Object('src/simulation/Gravity.cpp')
|
||||
#elif platform == "Darwin":
|
||||
# sources += ["src/SDLMain.m"]
|
||||
|
||||
|
||||
#Program output name
|
||||
if GetOption('output'):
|
||||
programName = GetOption('output')
|
||||
else:
|
||||
programName = "powder"
|
||||
if GetOption('renderer'):
|
||||
programName = "render"
|
||||
if GetOption('font'):
|
||||
programName = "font"
|
||||
if "BIT" in env and env["BIT"] == 64:
|
||||
programName += "64"
|
||||
if isX86 and GetOption('no-sse'):
|
||||
programName += "-legacy"
|
||||
if platform == "Windows":
|
||||
programName = programName.capitalize()
|
||||
programName += ".exe"
|
||||
elif platform == "Darwin":
|
||||
programName += "-x"
|
||||
|
||||
#strip binary after compilation
|
||||
def strip():
|
||||
global programName
|
||||
global env
|
||||
try:
|
||||
os.system("{0} {1}/{2}".format(env['STRIP'] if 'STRIP' in env else "strip", GetOption('builddir'), programName))
|
||||
except:
|
||||
print("Couldn't strip binary")
|
||||
if not GetOption('debugging') and not GetOption('symbols') and not GetOption('clean') and not GetOption('help') and not msvc:
|
||||
atexit.register(strip)
|
||||
|
||||
#Long command line fix for mingw on windows
|
||||
if compilePlatform == "Windows" and not msvc:
|
||||
SetupSpawn(env)
|
||||
|
||||
#Once we get here, finally compile
|
||||
env.Decider('MD5-timestamp')
|
||||
SetOption('implicit_cache', 1)
|
||||
t = env.Program(target=programName, source=sources)
|
||||
Default(t)
|
18
SConstruct
Normal file
@ -0,0 +1,18 @@
|
||||
AddOption('--builddir',dest="builddir",default="build",help="Directory to build to.")
|
||||
SConscript('SConscript', variant_dir=GetOption('builddir'), duplicate=0)
|
||||
if GetOption('clean'):
|
||||
import os, shutil
|
||||
try:
|
||||
shutil.rmtree(".sconf_temp/")
|
||||
except:
|
||||
print("couldn't remove .sconf_temp/")
|
||||
|
||||
try:
|
||||
shutil.rmtree("generated/")
|
||||
except:
|
||||
print("couldn't remove generated/")
|
||||
|
||||
try:
|
||||
os.remove(".sconsign.dblite")
|
||||
except:
|
||||
print("couldn't remove .sconsign.dblite")
|
19
TODO
Normal file
@ -0,0 +1,19 @@
|
||||
HTTP API:
|
||||
Make it OO,
|
||||
Use STL (i.e std::string for url, etc)
|
||||
|
||||
RequestBroker:
|
||||
APIRequest:
|
||||
Standard StatusParser and Status object ( {Status: 0, Error = "Danger, Will Robinson!"} )
|
||||
Request:
|
||||
Some way of identifying multiple requests destined for the same listener
|
||||
|
||||
Client/Server API:
|
||||
Make more use of APIRequest so we can get rid of the pooey, flakey threading in PreviewView, etc
|
||||
|
||||
Interface General:
|
||||
Try to use the "Activity" model for some simpler interfaces instead of code-heavy M-V-C
|
||||
Move interfaces into separate folder
|
||||
|
||||
Interface Elements:
|
||||
Vertical Scrolling for Textbox,
|
@ -1,69 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="@APPID@"
|
||||
android:versionCode="@BUILD_NUM@"
|
||||
android:versionName="@DISPLAY_VERSION_MAJOR@.@DISPLAY_VERSION_MINOR@.@BUILD_NUM@"
|
||||
android:installLocation="auto"
|
||||
>
|
||||
<uses-sdk
|
||||
android:minSdkVersion="21"
|
||||
android:targetSdkVersion="30"
|
||||
/>
|
||||
<uses-feature
|
||||
android:glEsVersion="0x00020000"
|
||||
/>
|
||||
<uses-feature
|
||||
android:name="android.hardware.touchscreen"
|
||||
android:required="false"
|
||||
/>
|
||||
<uses-feature
|
||||
android:name="android.hardware.bluetooth"
|
||||
android:required="false"
|
||||
/>
|
||||
<uses-feature
|
||||
android:name="android.hardware.gamepad"
|
||||
android:required="false"
|
||||
/>
|
||||
<uses-feature
|
||||
android:name="android.hardware.usb.host"
|
||||
android:required="false"
|
||||
/>
|
||||
<uses-feature
|
||||
android:name="android.hardware.type.pc"
|
||||
android:required="false"
|
||||
/>
|
||||
@ANDROID_PERMISSIONS@
|
||||
<application
|
||||
android:label="@string/app_name"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:allowBackup="true"
|
||||
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
|
||||
android:hardwareAccelerated="true"
|
||||
@ANDROID_PROPERTIES@
|
||||
>
|
||||
<activity
|
||||
android:name=".PowderActivity"
|
||||
android:screenOrientation="landscape"
|
||||
android:label="@string/app_name"
|
||||
android:alwaysRetainTaskState="true"
|
||||
android:launchMode="singleInstance"
|
||||
android:configChanges="layoutDirection|locale|orientation|uiMode|screenLayout|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
|
||||
android:preferMinimalPostProcessing="true"
|
||||
android:exported="true"
|
||||
>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
<!-- <intent-filter>
|
||||
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<data android:mimeType="*/*" />
|
||||
</intent-filter> -->
|
||||
</activity>
|
||||
</application>
|
||||
</manifest>
|
@ -1,42 +0,0 @@
|
||||
package @APPID@;
|
||||
|
||||
import org.libsdl.app.SDLActivity;
|
||||
import java.security.KeyStore;
|
||||
import java.security.KeyStoreException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.Enumeration;
|
||||
import java.io.IOException;
|
||||
import java.util.Base64;
|
||||
|
||||
public class PowderActivity extends SDLActivity
|
||||
{
|
||||
public static String getCertificateBundle()
|
||||
{
|
||||
String allPems = "";
|
||||
try {
|
||||
KeyStore ks = KeyStore.getInstance("AndroidCAStore");
|
||||
if (ks != null) {
|
||||
ks.load(null, null);
|
||||
Enumeration<String> aliases = ks.aliases();
|
||||
while (aliases.hasMoreElements()) {
|
||||
String alias = (String)aliases.nextElement();
|
||||
java.security.cert.X509Certificate cert = (java.security.cert.X509Certificate)ks.getCertificate(alias);
|
||||
allPems += "-----BEGIN CERTIFICATE-----\n" + Base64.getMimeEncoder().encodeToString(cert.getEncoded()) + "\n-----END CERTIFICATE-----\n";;
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return "";
|
||||
} catch (KeyStoreException e) {
|
||||
e.printStackTrace();
|
||||
return "";
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
e.printStackTrace();
|
||||
return "";
|
||||
} catch (java.security.cert.CertificateException e) {
|
||||
e.printStackTrace();
|
||||
return "";
|
||||
}
|
||||
return allPems;
|
||||
}
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import os
|
||||
import os.path
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
(
|
||||
script,
|
||||
zipalign,
|
||||
build_dir,
|
||||
unsigned_name,
|
||||
unaligned_name,
|
||||
) = sys.argv
|
||||
|
||||
unaligned_path = os.path.join(build_dir, unaligned_name)
|
||||
unsigned_path = os.path.join(build_dir, unsigned_name)
|
||||
|
||||
if os.path.exists(unsigned_path):
|
||||
os.remove(unsigned_path)
|
||||
|
||||
if subprocess.run([
|
||||
zipalign,
|
||||
'-f', '4',
|
||||
unaligned_path,
|
||||
unsigned_path,
|
||||
]).returncode:
|
||||
sys.exit(1)
|
@ -1,104 +0,0 @@
|
||||
import os
|
||||
import os.path
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
(
|
||||
script,
|
||||
d8,
|
||||
aapt,
|
||||
aapt2,
|
||||
source_dir,
|
||||
build_dir,
|
||||
private_name,
|
||||
unaligned_name,
|
||||
sha_name,
|
||||
android_jar,
|
||||
sdl_jar,
|
||||
powder_jar,
|
||||
tpt_arch,
|
||||
debug_release,
|
||||
manifest_xml,
|
||||
*resources,
|
||||
) = sys.argv
|
||||
|
||||
if tpt_arch == 'x86':
|
||||
android_arch = 'x86'
|
||||
if tpt_arch == 'arm':
|
||||
android_arch = 'armeabi-v7a'
|
||||
if tpt_arch == 'aarch64':
|
||||
android_arch = 'arm64-v8a'
|
||||
if tpt_arch == 'x86_64':
|
||||
android_arch = 'x86_64'
|
||||
|
||||
sha_packaged_name = 'libpowder.so'
|
||||
|
||||
manifest_path = os.path.join(build_dir, manifest_xml)
|
||||
sha_path = os.path.join(build_dir, sha_name)
|
||||
unaligned_path = os.path.join(build_dir, unaligned_name)
|
||||
private_dir = os.path.join(build_dir, private_name)
|
||||
arch_dir = os.path.join(private_dir, 'lib', android_arch)
|
||||
sha_lib_path = os.path.join(arch_dir, sha_packaged_name)
|
||||
flat_dir = os.path.join(private_dir, 'flat')
|
||||
|
||||
if os.path.exists(arch_dir):
|
||||
shutil.rmtree(arch_dir)
|
||||
os.makedirs(arch_dir)
|
||||
if os.path.exists(sha_lib_path):
|
||||
os.remove(sha_lib_path)
|
||||
if os.path.exists(unaligned_path):
|
||||
os.remove(unaligned_path)
|
||||
if os.path.exists(flat_dir):
|
||||
shutil.rmtree(flat_dir)
|
||||
os.makedirs(flat_dir)
|
||||
|
||||
if subprocess.run([
|
||||
aapt2,
|
||||
'compile',
|
||||
'-o', os.path.join(private_dir, 'flat'),
|
||||
*resources,
|
||||
], cwd = build_dir).returncode:
|
||||
sys.exit(1)
|
||||
|
||||
aapt2_link_inputs = []
|
||||
for root, dirs, files in os.walk(flat_dir):
|
||||
for name in files:
|
||||
if name.endswith(".flat"):
|
||||
aapt2_link_inputs.append(os.path.join(root, name))
|
||||
if subprocess.run([
|
||||
aapt2,
|
||||
'link',
|
||||
'-o', unaligned_path,
|
||||
'-I', android_jar,
|
||||
'--manifest', manifest_path,
|
||||
*aapt2_link_inputs,
|
||||
]).returncode:
|
||||
sys.exit(1)
|
||||
|
||||
shutil.copy(sha_path, sha_lib_path)
|
||||
if subprocess.run([
|
||||
aapt,
|
||||
'add',
|
||||
unaligned_path,
|
||||
os.path.join('lib', android_arch, sha_packaged_name),
|
||||
], cwd = private_dir).returncode:
|
||||
sys.exit(1)
|
||||
|
||||
if subprocess.run([
|
||||
d8,
|
||||
os.path.join(build_dir, sdl_jar),
|
||||
os.path.join(build_dir, powder_jar),
|
||||
'--' + debug_release,
|
||||
'--lib', android_jar,
|
||||
'--min-api', '21',
|
||||
], cwd = private_dir).returncode:
|
||||
sys.exit(1)
|
||||
|
||||
if subprocess.run([
|
||||
aapt,
|
||||
'add',
|
||||
unaligned_path,
|
||||
'classes.dex',
|
||||
], cwd = private_dir).returncode:
|
||||
sys.exit(1)
|
@ -1,8 +0,0 @@
|
||||
[constants]
|
||||
android_ndk_toolchain_prefix = 'aarch64-linux-android21-'
|
||||
|
||||
[host_machine]
|
||||
system = 'android'
|
||||
cpu_family = 'aarch64'
|
||||
cpu = 'armv8'
|
||||
endian = 'little'
|
@ -1,8 +0,0 @@
|
||||
[constants]
|
||||
android_ndk_toolchain_prefix = 'armv7a-linux-androideabi21-'
|
||||
|
||||
[host_machine]
|
||||
system = 'android'
|
||||
cpu_family = 'arm'
|
||||
cpu = 'armv7a'
|
||||
endian = 'little'
|
@ -1,8 +0,0 @@
|
||||
[constants]
|
||||
android_ndk_toolchain_prefix = 'i686-linux-android21-'
|
||||
|
||||
[host_machine]
|
||||
system = 'android'
|
||||
cpu_family = 'x86'
|
||||
cpu = 'i686'
|
||||
endian = 'little'
|
@ -1,8 +0,0 @@
|
||||
[constants]
|
||||
android_ndk_toolchain_prefix = 'x86_64-linux-android21-'
|
||||
|
||||
[host_machine]
|
||||
system = 'android'
|
||||
cpu_family = 'x86_64'
|
||||
cpu = 'amd64'
|
||||
endian = 'little'
|
272
android/debug.sh
@ -1,272 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# mainly based on https://www.sh-zam.com/2019/05/debugging-krita-on-android.html
|
||||
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
function get_buildoption() {
|
||||
jq -r '.[] | select(.name == "'$1'") | .value' < meson-info/intro-buildoptions.json
|
||||
}
|
||||
|
||||
function get_cpp_compiler() {
|
||||
jq -r '.[] | select(.name == "'$1'") | .target_sources.[] | select(.language == "cpp") | .compiler.[]' < meson-info/intro-targets.json
|
||||
}
|
||||
|
||||
# customize
|
||||
default_app_id=uk.co.powdertoy.tpt
|
||||
default_app_exe=powder
|
||||
default_lldb_server=/opt/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/17/lib/linux/aarch64/lldb-server
|
||||
default_lldb_client=/opt/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/lldb.sh
|
||||
in_build_site=no
|
||||
if which jq >/dev/null && [[ -f meson-info/intro-buildoptions.json ]]; then
|
||||
>&2 echo "[+] pwd is a build site, auto-detecting parameters"
|
||||
in_build_site=yes
|
||||
default_app_id=$(get_buildoption app_id)
|
||||
default_app_exe=$(get_buildoption app_exe)
|
||||
found_lldb=no
|
||||
compiler_path=$(get_cpp_compiler $default_app_exe)
|
||||
for line in $compiler_path; do
|
||||
# iterate over the command array (might be for example [ "ccache", "aarch64-linux-android21-clang++" ])
|
||||
if (echo $line | grep toolchains && basename $line | grep android | grep clang++) >/dev/null; then
|
||||
arch=$(basename $line | cut -d '-' -f 1)
|
||||
default_lldb_server=$(realpath $(dirname $line)/../lib/clang/*/lib/linux/$arch/lldb-server)
|
||||
default_lldb_client=$(realpath $(dirname $line)/lldb.sh)
|
||||
found_lldb=yes
|
||||
fi
|
||||
done
|
||||
if [[ $found_lldb != yes ]]; then
|
||||
>&2 echo "[-] cannot determine LLDB paths from compiler command array:"
|
||||
for line in $compiler_path; do
|
||||
>&2 echo "[-] - $line"
|
||||
done
|
||||
exit 1
|
||||
fi
|
||||
>&2 echo "[+] APP_ID: $default_app_id"
|
||||
>&2 echo "[+] APP_EXE: $default_app_exe"
|
||||
>&2 echo "[+] LLDB_SERVER: $default_lldb_server"
|
||||
>&2 echo "[+] LLDB_CLIENT: $default_lldb_client"
|
||||
else
|
||||
>&2 echo "[+] pwd is not a build site, not auto-detecting parameters"
|
||||
fi
|
||||
app_id=${APP_ID:-$default_app_id}
|
||||
app_exe=${APP_EXE:-$default_app_exe}
|
||||
lldb_server=${LLDB_SERVER:-$default_lldb_server}
|
||||
lldb_server_port=${LLDB_SERVER_PORT:-9998}
|
||||
jdb_port=${JDB_PORT:-13456}
|
||||
lldb_client=${LLDB_CLIENT:-$default_lldb_client}
|
||||
meson=${MESON:-meson}
|
||||
adb=${ADB:-adb}
|
||||
jdb=${JDB:-jdb}
|
||||
|
||||
# don't customize unless necessary
|
||||
app_activity=${APP_ACTIVITY:-PowderActivity}
|
||||
lldb_server_staging=${LLDB_SERVER_STAGING:-/data/local/tmp/lldb-server}
|
||||
lldb_server_remote=${LLDB_SERVER_REMOTE:-lldb-server}
|
||||
pidof_retry_count=${PIDOF_RETRY_COUNT:-20}
|
||||
pidof_retry_delay=${PIDOF_RETRY_DELAY:-0.1}
|
||||
|
||||
function check_which() {
|
||||
if ! which $1 >/dev/null; then
|
||||
>&2 echo "[-] can't run $1"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function check_env() {
|
||||
if ! [[ -f $lldb_server ]]; then
|
||||
>&2 echo "[-] $lldb_server doesn't exist"
|
||||
return 1
|
||||
fi
|
||||
check_which $lldb_client
|
||||
check_which $adb
|
||||
check_which $jdb
|
||||
}
|
||||
|
||||
function check_adb() {
|
||||
$adb shell whoami >/dev/null
|
||||
}
|
||||
|
||||
function maybe_install_app() {
|
||||
if [[ $in_build_site != yes ]]; then
|
||||
return 0
|
||||
fi
|
||||
android_keystore=$(get_buildoption android_keystore)
|
||||
android_keyalias=$(get_buildoption android_keyalias)
|
||||
if [[ -z ${ANDROID_KEYSTORE_PASS-} ]]; then
|
||||
>&2 echo "[-] ANDROID_KEYSTORE_PASS not set"
|
||||
>&2 echo
|
||||
>&2 cat << HELP
|
||||
The current directory seems to be a build site, but ANDROID_KEYSTORE_PASS is not set, so android/$app_exe.apk cannot be invoked. If you don't have a keystore yet, create one with:
|
||||
|
||||
ANDROID_KEYSTORE_PASS=bagelsbagels keytool -genkey \\
|
||||
-keystore $android_keystore \\
|
||||
-alias $android_keyalias \\
|
||||
-storepass:env ANDROID_KEYSTORE_PASS \\
|
||||
-keypass:env ANDROID_KEYSTORE_PASS \\
|
||||
-dname CN=bagels
|
||||
|
||||
Then try again with:
|
||||
|
||||
ANDROID_KEYSTORE_PASS=bagelsbagels $0
|
||||
|
||||
Naturally, replace bagelsbagels with an appropriate password.
|
||||
HELP
|
||||
exit 1
|
||||
fi
|
||||
>&2 echo "[+] meson compiling android/$app_exe.apk"
|
||||
if ! $meson compile sign-apk; then
|
||||
>&2 echo "[-] failed"
|
||||
return 1
|
||||
fi
|
||||
>&2 echo "[+] adb installing android/$app_exe.apk"
|
||||
if ! $adb install android/$app_exe.apk; then
|
||||
>&2 echo "[-] failed"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function check_debuggable() {
|
||||
$adb shell run-as $app_id whoami >/dev/null
|
||||
}
|
||||
|
||||
function find_lldb_server() {
|
||||
$adb shell run-as $app_id pgrep $lldb_server_remote >/dev/null
|
||||
}
|
||||
|
||||
function kill_lldb_server() {
|
||||
if ! $adb shell run-as $app_id pkill $lldb_server_remote; then
|
||||
>&2 echo "[-] failed"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function adb_forward() {
|
||||
>&2 echo "[+] adb forwarding tcp:$jdb_port jdwp:$pid"
|
||||
if ! ($adb forward tcp:$jdb_port jdwp:$pid | grep $jdb_port >/dev/null); then
|
||||
>&2 echo "[+] failed"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function adb_unforward() {
|
||||
$adb forward --remove tcp:$jdb_port
|
||||
}
|
||||
|
||||
function undo_current_adb_forward() {
|
||||
>&2 echo "[+] adb un-forwarding orphaned tcp:$jdb_port"
|
||||
adb_unforward
|
||||
}
|
||||
|
||||
function maybe_undo_previous_adb_forward() {
|
||||
if $adb forward --list | grep tcp:$jdb_port; then
|
||||
>&2 echo "[+] adb un-forwarding orphaned tcp:$jdb_port"
|
||||
adb_unforward
|
||||
fi
|
||||
}
|
||||
|
||||
function maybe_kill_previous_lldb_server() {
|
||||
if find_lldb_server; then
|
||||
>&2 echo "[+] killing orphaned $lldb_server_remote"
|
||||
kill_lldb_server
|
||||
fi
|
||||
}
|
||||
|
||||
function kill_current_lldb_server() {
|
||||
>&2 echo "[+] killing $lldb_server_remote"
|
||||
kill_lldb_server
|
||||
}
|
||||
|
||||
function start_app() {
|
||||
>&2 echo "[+] starting $app_id/.$app_activity"
|
||||
set +e
|
||||
$adb shell am start -D -n "$app_id/.$app_activity" >/dev/null
|
||||
set -e
|
||||
local i
|
||||
local maybe_pid
|
||||
local pidof_result
|
||||
for ((i = 0; i <= $pidof_retry_count; i++)); do
|
||||
set +e
|
||||
maybe_pid=$($adb shell pidof $app_id)
|
||||
pidof_result=$?
|
||||
set -e
|
||||
if [[ $pidof_result == 0 ]]; then
|
||||
pid=$maybe_pid
|
||||
break
|
||||
fi
|
||||
sleep $pidof_retry_delay
|
||||
done
|
||||
if [[ -z ${pid-} ]]; then
|
||||
>&2 echo "[-] failed"
|
||||
return 1
|
||||
fi
|
||||
echo $pid
|
||||
}
|
||||
|
||||
function jdb_attach() {
|
||||
>&2 echo "[+] attaching jdb in the background"
|
||||
$jdb -attach localhost:$jdb_port >/dev/null 2>/dev/null &
|
||||
disown $!
|
||||
# at some point jdb exits because it doesn't have an stdin... fine by me
|
||||
}
|
||||
|
||||
function maybe_deploy_lldb_server() {
|
||||
if ! $adb shell [[ -f $lldb_server_staging ]]; then
|
||||
>&2 echo "[+] $lldb_server_remote not present on host, deploying"
|
||||
if ! ($adb push $lldb_server $lldb_server_staging && $adb shell chmod +x $lldb_server_staging); then
|
||||
>&2 echo "[-] failed"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function start_lldb_server() {
|
||||
if ! $adb shell run-as $app_id pgrep $lldb_server_remote >/dev/null; then
|
||||
>&2 echo "[+] $lldb_server_remote not running on host, starting"
|
||||
$adb shell run-as $app_id cp $lldb_server_staging /data/data/$app_id/$lldb_server_remote
|
||||
$adb shell run-as $app_id ./$lldb_server_remote platform --server --listen "*:$lldb_server_port" >/dev/null 2>/dev/null &
|
||||
disown $!
|
||||
if ! $adb shell run-as $app_id pgrep $lldb_server_remote >/dev/null; then
|
||||
>&2 echo "[-] failed"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function start_lldb() {
|
||||
local pid=$1
|
||||
>&2 echo "[+] starting $lldb_client"
|
||||
local lldb_init=$(mktemp)
|
||||
cat - << LLDB_INIT > $lldb_init
|
||||
platform select remote-android
|
||||
platform connect connect://localhost:$lldb_server_port
|
||||
attach $pid
|
||||
continue
|
||||
LLDB_INIT
|
||||
local lldb_status
|
||||
set +e
|
||||
$lldb_client --source $lldb_init
|
||||
lldb_status=$?
|
||||
set -e
|
||||
>&2 echo "[+] $lldb_client exited with status $lldb_status"
|
||||
rm $lldb_init
|
||||
}
|
||||
|
||||
check_env
|
||||
check_adb
|
||||
maybe_install_app
|
||||
check_debuggable
|
||||
maybe_kill_previous_lldb_server
|
||||
maybe_undo_previous_adb_forward
|
||||
if [[ ${1-} == clean ]]; then
|
||||
>&2 echo "[+] done"
|
||||
exit 0
|
||||
fi
|
||||
maybe_deploy_lldb_server
|
||||
start_lldb_server
|
||||
pid=$(start_app)
|
||||
adb_forward
|
||||
jdb_attach
|
||||
start_lldb $pid
|
||||
kill_current_lldb_server
|
||||
undo_current_adb_forward
|
||||
>&2 echo "[+] done"
|
@ -1,25 +0,0 @@
|
||||
import os
|
||||
import os.path
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
(
|
||||
script,
|
||||
adb,
|
||||
build_dir,
|
||||
phony,
|
||||
apk_name,
|
||||
) = sys.argv
|
||||
|
||||
apk_path = os.path.join(build_dir, apk_name)
|
||||
phony_path = os.path.join(build_dir, phony)
|
||||
|
||||
if os.path.exists(phony_path):
|
||||
os.remove(phony_path)
|
||||
|
||||
if subprocess.run([
|
||||
adb,
|
||||
'install',
|
||||
apk_path,
|
||||
]).returncode:
|
||||
sys.exit(1)
|
@ -1,105 +0,0 @@
|
||||
android_manifest_xml = configure_file(
|
||||
input: 'AndroidManifest.template.xml',
|
||||
output: 'AndroidManifest.xml',
|
||||
configuration: conf_data,
|
||||
)
|
||||
powder_jar_sources = configure_file(
|
||||
input: 'PowderActivity.template.java',
|
||||
output: 'PowderActivity.java',
|
||||
configuration: conf_data,
|
||||
)
|
||||
|
||||
subdir('res')
|
||||
|
||||
python3 = find_program('python3')
|
||||
android_platform_jar = meson.get_external_property('android_platform_jar')
|
||||
java_runtime_jar = meson.get_external_property('java_runtime_jar')
|
||||
android_keystore = get_option('android_keystore')
|
||||
sdl_jar = tpt_libs.get_variable('sdl_jar')
|
||||
powder_jar = custom_target(
|
||||
'powder-jar',
|
||||
output: app_exe + '.jar',
|
||||
command: [
|
||||
python3,
|
||||
files('powder-jar.py'),
|
||||
find_program('javac'),
|
||||
find_program('jar'),
|
||||
meson.current_source_dir(),
|
||||
meson.project_build_root(),
|
||||
'@PRIVATE_DIR@',
|
||||
'@OUTPUT@',
|
||||
android_platform_jar,
|
||||
java_runtime_jar,
|
||||
sdl_jar,
|
||||
is_debug ? 'debug' : 'release',
|
||||
powder_jar_sources,
|
||||
],
|
||||
)
|
||||
unaligned_apk = custom_target(
|
||||
'build-apk',
|
||||
output: app_exe + '.unaligned.apk',
|
||||
input: powder_sha,
|
||||
command: [
|
||||
python3,
|
||||
files('build-apk.py'),
|
||||
find_program('d8'),
|
||||
find_program('aapt'),
|
||||
find_program('aapt2'),
|
||||
meson.current_source_dir(),
|
||||
meson.project_build_root(),
|
||||
'@PRIVATE_DIR@',
|
||||
'@OUTPUT@',
|
||||
'@INPUT@',
|
||||
android_platform_jar,
|
||||
sdl_jar,
|
||||
powder_jar,
|
||||
host_arch,
|
||||
is_debug ? 'debug' : 'release',
|
||||
android_manifest_xml,
|
||||
android_resources,
|
||||
],
|
||||
)
|
||||
unsigned_apk = custom_target(
|
||||
'align-apk',
|
||||
output: app_exe + '.unsigned.apk',
|
||||
input: unaligned_apk,
|
||||
command: [
|
||||
python3,
|
||||
files('align-apk.py'),
|
||||
find_program('zipalign'),
|
||||
meson.project_build_root(),
|
||||
'@OUTPUT@',
|
||||
'@INPUT@',
|
||||
],
|
||||
)
|
||||
signed_apk = custom_target(
|
||||
'sign-apk',
|
||||
output: app_exe + '.apk',
|
||||
input: unsigned_apk,
|
||||
command: [
|
||||
python3,
|
||||
files('sign-apk.py'),
|
||||
find_program('apksigner'),
|
||||
meson.project_build_root(),
|
||||
'@OUTPUT@',
|
||||
'@INPUT@',
|
||||
android_keystore,
|
||||
get_option('android_keyalias'),
|
||||
],
|
||||
)
|
||||
adb = find_program('adb', required: false)
|
||||
if adb.found()
|
||||
install_apk = custom_target(
|
||||
'install-apk',
|
||||
input: signed_apk,
|
||||
output: 'install-apk',
|
||||
command: [ python3, files('install-apk.py'), adb, meson.project_build_root(), '@OUTPUT@', '@INPUT@' ],
|
||||
)
|
||||
custom_target(
|
||||
'run-apk',
|
||||
input: [ signed_apk, install_apk ],
|
||||
build_always_stale: true,
|
||||
output: 'run-apk',
|
||||
command: [ python3, files('run-apk.py'), adb, meson.project_build_root(), '@OUTPUT@', '@INPUT0@', app_id ],
|
||||
)
|
||||
endif
|
@ -1,54 +0,0 @@
|
||||
import os
|
||||
import os.path
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
(
|
||||
script,
|
||||
javac,
|
||||
jar,
|
||||
source_dir,
|
||||
build_dir,
|
||||
private_name,
|
||||
powder_jar_name,
|
||||
android_jar,
|
||||
java_runtime,
|
||||
sdl_jar,
|
||||
debug_release,
|
||||
*javac_sources,
|
||||
) = sys.argv
|
||||
|
||||
powder_jar_path = os.path.join(build_dir, powder_jar_name)
|
||||
private_dir = os.path.join(build_dir, private_name)
|
||||
class_dir = os.path.join(private_dir, 'class')
|
||||
|
||||
if os.path.exists(powder_jar_path):
|
||||
os.remove(powder_jar_path)
|
||||
if os.path.exists(class_dir):
|
||||
shutil.rmtree(class_dir)
|
||||
os.makedirs(class_dir)
|
||||
|
||||
if subprocess.run([
|
||||
javac,
|
||||
'-d', class_dir,
|
||||
'-source', '1.8',
|
||||
'-target', '1.8',
|
||||
'-bootclasspath', java_runtime,
|
||||
'-classpath', os.pathsep.join([ android_jar, sdl_jar ]),
|
||||
*javac_sources,
|
||||
], cwd = build_dir).returncode:
|
||||
sys.exit(1)
|
||||
|
||||
jar_inputs = []
|
||||
for root, dirs, files in os.walk(class_dir):
|
||||
for name in files:
|
||||
if name.endswith(".class"):
|
||||
jar_inputs.append(os.path.relpath(os.path.join(root, name), start = class_dir))
|
||||
if subprocess.run([
|
||||
jar,
|
||||
'cMf',
|
||||
powder_jar_path,
|
||||
*jar_inputs,
|
||||
], cwd = class_dir).returncode:
|
||||
sys.exit(1)
|
@ -1,7 +0,0 @@
|
||||
android_resources = files(
|
||||
'values/colors.xml',
|
||||
'values/styles.xml',
|
||||
)
|
||||
|
||||
subdir('values')
|
||||
subdir('mipmap-mdpi')
|
@ -1 +0,0 @@
|
||||
android_resources += fs.copyfile(rendered_icons['icon_exe'], 'ic_launcher.png')
|
@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="colorPrimary">#3F51B5</color>
|
||||
<color name="colorPrimaryDark">#303F9F</color>
|
||||
<color name="colorAccent">#FF4081</color>
|
||||
</resources>
|
@ -1,5 +0,0 @@
|
||||
android_resources += configure_file(
|
||||
input: 'strings.template.xml',
|
||||
output: 'strings.xml',
|
||||
configuration: conf_data,
|
||||
)
|
@ -1,3 +0,0 @@
|
||||
<resources>
|
||||
<string name="app_name">@APPNAME@</string>
|
||||
</resources>
|
@ -1,4 +0,0 @@
|
||||
<resources>
|
||||
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
|
||||
</style>
|
||||
</resources>
|
@ -1,25 +0,0 @@
|
||||
import os
|
||||
import os.path
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
(
|
||||
script,
|
||||
adb,
|
||||
build_dir,
|
||||
phony,
|
||||
apk_name,
|
||||
app_id,
|
||||
) = sys.argv
|
||||
|
||||
apk_path = os.path.join(build_dir, apk_name)
|
||||
|
||||
if subprocess.run([
|
||||
adb,
|
||||
'shell',
|
||||
'am',
|
||||
'start',
|
||||
'--activity-clear-top',
|
||||
'-n', app_id + '/.PowderActivity',
|
||||
]).returncode:
|
||||
sys.exit(1)
|
@ -1,35 +0,0 @@
|
||||
import os
|
||||
import os.path
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
(
|
||||
script,
|
||||
apksigner,
|
||||
build_dir,
|
||||
apk_name,
|
||||
unsigned_name,
|
||||
android_keystore,
|
||||
android_keyalias,
|
||||
) = sys.argv
|
||||
|
||||
if 'ANDROID_KEYSTORE_PASS' not in os.environ:
|
||||
print('ANDROID_KEYSTORE_PASS not set')
|
||||
sys.exit(1)
|
||||
|
||||
unsigned_path = os.path.join(build_dir, unsigned_name)
|
||||
apk_path = os.path.join(build_dir, apk_name)
|
||||
|
||||
if os.path.exists(apk_path):
|
||||
os.remove(apk_path)
|
||||
|
||||
if subprocess.run([
|
||||
apksigner,
|
||||
'sign',
|
||||
'--ks', android_keystore,
|
||||
'--ks-key-alias', android_keyalias,
|
||||
'--ks-pass', 'env:ANDROID_KEYSTORE_PASS',
|
||||
'--out', apk_path,
|
||||
unsigned_path,
|
||||
]).returncode:
|
||||
sys.exit(1)
|
@ -1,3 +0,0 @@
|
||||
# This file is used by the starcatcher.us update server to pull changelogs for mod releases
|
||||
# Erase and replace the changelog for every release, do not just append changes to the end
|
||||
# Lines starting with # and empty lines are ignored
|
@ -1,25 +0,0 @@
|
||||
[constants]
|
||||
andriod_ndk_toolchain_bin = '/opt/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin'
|
||||
|
||||
[properties]
|
||||
# only needed if you want to run the custom target powder_apk (powder.apk)
|
||||
# android_ndk_toolchain_prefix comes from the correct cross-file in ./android/cross
|
||||
android_ndk_toolchain_prefix = android_ndk_toolchain_prefix
|
||||
android_platform = 'android-30'
|
||||
android_platform_jar = '/opt/android-sdk/platforms/' + android_platform + '/android.jar'
|
||||
java_runtime_jar = '/usr/lib/jvm/java-8-openjdk/jre/lib/rt.jar'
|
||||
|
||||
[binaries]
|
||||
c = andriod_ndk_toolchain_bin / (android_ndk_toolchain_prefix + 'clang')
|
||||
# c = [ 'ccache', andriod_ndk_toolchain_bin / (android_ndk_toolchain_prefix + 'clang') ]
|
||||
cpp = andriod_ndk_toolchain_bin / (android_ndk_toolchain_prefix + 'clang++')
|
||||
# cpp = [ 'ccache', andriod_ndk_toolchain_bin / (android_ndk_toolchain_prefix + 'clang++') ]
|
||||
strip = andriod_ndk_toolchain_bin / 'llvm-strip'
|
||||
# only needed if you want to run the custom target powder_apk (powder.apk)
|
||||
javac = '/usr/lib/jvm/java-8-openjdk/bin/javac'
|
||||
jar = '/usr/lib/jvm/java-8-openjdk/bin/jar'
|
||||
d8 = '/opt/android-sdk/build-tools/32.0.0/d8'
|
||||
aapt = '/opt/android-sdk/build-tools/32.0.0/aapt'
|
||||
aapt2 = '/opt/android-sdk/build-tools/32.0.0/aapt2'
|
||||
zipalign = '/opt/android-sdk/build-tools/32.0.0/zipalign'
|
||||
apksigner = '/opt/android-sdk/build-tools/32.0.0/apksigner'
|
@ -1,11 +0,0 @@
|
||||
[binaries]
|
||||
c = [ 'clang', '-arch', 'arm64' ]
|
||||
cpp = [ 'clang++', '-arch', 'arm64' ]
|
||||
objcpp = [ 'clang++', '-arch', 'arm64' ]
|
||||
strip = 'strip'
|
||||
|
||||
[host_machine]
|
||||
system = 'darwin'
|
||||
cpu_family = 'aarch64'
|
||||
cpu = 'armv8'
|
||||
endian = 'little'
|
@ -1,14 +0,0 @@
|
||||
[constants]
|
||||
prefix = 'x86_64-w64-mingw32'
|
||||
|
||||
[binaries]
|
||||
c = prefix + '-gcc'
|
||||
cpp = prefix + '-g++'
|
||||
strip = prefix + '-strip'
|
||||
windres = prefix + '-windres'
|
||||
|
||||
[host_machine]
|
||||
system = 'windows'
|
||||
cpu_family = 'x86_64'
|
||||
cpu = 'x86_64'
|
||||
endian = 'little'
|
89
data/Shaders.h
Normal file
@ -0,0 +1,89 @@
|
||||
#pragma once
|
||||
|
||||
const char *const fireFragment = "#version 120\n\
|
||||
uniform sampler2D fireAlpha;\
|
||||
void main () {\
|
||||
vec4 texColor = texture2D(fireAlpha, gl_PointCoord);\
|
||||
gl_FragColor = vec4(gl_Color.rgb, texColor.a*gl_Color.a);\
|
||||
}";
|
||||
const char *const fireVertex = "#version 120\n\
|
||||
void main(void)\
|
||||
{\
|
||||
gl_Position = ftransform();;\
|
||||
gl_FrontColor = gl_Color;\
|
||||
}";
|
||||
const char *const lensFragment = "#version 120\n\
|
||||
uniform sampler2D pTex;\
|
||||
uniform sampler2D tfX;\
|
||||
uniform sampler2D tfY;\
|
||||
uniform float xres;\
|
||||
uniform float yres;\
|
||||
void main () {\
|
||||
vec4 transformX = texture2D(tfX, vec2(gl_TexCoord[0].s, -gl_TexCoord[0].t));\
|
||||
vec4 transformY = -texture2D(tfY, vec2(gl_TexCoord[0].s, -gl_TexCoord[0].t));\
|
||||
transformX.r /= xres;\
|
||||
transformY.g /= yres;\
|
||||
vec4 texColor = vec4(\
|
||||
texture2D(pTex, gl_TexCoord[0].st-vec2(transformX.r*0.75, transformY.g*0.75)).r,\
|
||||
texture2D(pTex, gl_TexCoord[0].st-vec2(transformX.r*0.875, transformY.g*0.875)).g,\
|
||||
texture2D(pTex, gl_TexCoord[0].st-vec2(transformX.r, transformY.g)).b,\
|
||||
1.0\
|
||||
);\
|
||||
gl_FragColor = texColor;\
|
||||
}";
|
||||
const char *const lensVertex = "#version 120\n\
|
||||
void main(void)\
|
||||
{\
|
||||
gl_TexCoord[0] = gl_MultiTexCoord0;\
|
||||
gl_Position = ftransform();;\
|
||||
gl_FrontColor = gl_Color;\
|
||||
}";
|
||||
const char *const airVFragment = "#version 120\n\
|
||||
uniform sampler2D airX;\
|
||||
uniform sampler2D airY;\
|
||||
uniform sampler2D airP;\
|
||||
void main () {\
|
||||
vec4 texX = texture2D(airX, gl_TexCoord[0].st);\
|
||||
vec4 texY = texture2D(airY, gl_TexCoord[0].st);\
|
||||
vec4 texP = texture2D(airP, gl_TexCoord[0].st);\
|
||||
gl_FragColor = vec4(abs(texX.r)/2.0, texP.b/2.0, abs(texY.g)/2.0, 1.0);\
|
||||
}";
|
||||
const char *const airVVertex = "#version 120\n\
|
||||
void main(void)\
|
||||
{\
|
||||
gl_TexCoord[0] = gl_MultiTexCoord0;\
|
||||
gl_Position = ftransform();;\
|
||||
gl_FrontColor = gl_Color;\
|
||||
}";
|
||||
const char *const airPFragment = "#version 120\n\
|
||||
uniform sampler2D airX;\
|
||||
uniform sampler2D airY;\
|
||||
uniform sampler2D airP;\
|
||||
void main () {\
|
||||
vec4 texP = texture2D(airP, gl_TexCoord[0].st);\
|
||||
gl_FragColor = vec4(max(texP.b/2.0, 0), 0, abs(min(texP.b/2.0, 0)), 1.0);\
|
||||
}";
|
||||
const char *const airPVertex = "#version 120\n\
|
||||
void main(void)\
|
||||
{\
|
||||
gl_TexCoord[0] = gl_MultiTexCoord0;\
|
||||
gl_Position = ftransform();;\
|
||||
gl_FrontColor = gl_Color;\
|
||||
}";
|
||||
const char *const airCFragment = "#version 120\n\
|
||||
uniform sampler2D airX;\
|
||||
uniform sampler2D airY;\
|
||||
uniform sampler2D airP;\
|
||||
void main () {\
|
||||
vec4 texX = texture2D(airX, gl_TexCoord[0].st);\
|
||||
vec4 texY = texture2D(airY, gl_TexCoord[0].st);\
|
||||
vec4 texP = texture2D(airP, gl_TexCoord[0].st);\
|
||||
gl_FragColor = vec4(max(texP.b/2.0, 0), 0, abs(min(texP.b/2.0, 0)), 1.0) + vec4(abs(texX.r)/8.0, abs(texX.r)/8.0, abs(texX.r)/8.0, 1.0) + vec4(abs(texY.g)/8.0, abs(texY.g)/8.0, abs(texY.g)/8.0, 1.0);\
|
||||
}";
|
||||
const char *const airCVertex = "#version 120\n\
|
||||
void main(void)\
|
||||
{\
|
||||
gl_TexCoord[0] = gl_MultiTexCoord0;\
|
||||
gl_Position = ftransform();;\
|
||||
gl_FrontColor = gl_Color;\
|
||||
}";
|
704
data/font.cpp
Normal file
@ -0,0 +1,704 @@
|
||||
#ifndef FONTEDITOR
|
||||
extern const unsigned char font_data[] = {
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x70, 0x1C, 0xC3, 0x20, 0x00, 0x47, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xC0, 0x4C, 0x37, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x19, 0xCC, 0xE0, 0x3F, 0xCC, 0xF0, 0x2F, 0xCC, 0x90, 0x09, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x30, 0xD0, 0x3F, 0x33, 0xE1, 0x07, 0xF4, 0x12, 0x33, 0xFF, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xD0, 0xE2, 0xCC, 0x1C, 0xDE, 0x01, 0x3C, 0x40, 0xB7, 0x34, 0x33, 0x8B, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x7D, 0x30, 0x0C, 0x13, 0xD0, 0x32, 0xB3, 0x33, 0x1C, 0x7D, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0xC0, 0x34, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x34, 0x1D, 0x07, 0x03, 0x07, 0x1D, 0x34, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x07, 0x1D, 0x34, 0x30, 0x34, 0x1D, 0x07, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x44, 0xD0, 0x1C, 0x64, 0xF0, 0x3F, 0x64, 0xD0, 0x1C, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x30, 0xE0, 0x2F, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0D, 0x03, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x80, 0x02, 0x0C, 0xA0, 0x00, 0x03, 0x28, 0xC0, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xF8, 0xE0, 0x39, 0x07, 0x33, 0x32, 0x03, 0xB3, 0x38, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x36, 0xC0, 0x00, 0x03, 0x0C, 0x74, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFC, 0xB1, 0x34, 0x41, 0x03, 0x0A, 0x2C, 0x70, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFC, 0x71, 0x34, 0x01, 0x03, 0x1E, 0x00, 0x33, 0x34, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xC0, 0x03, 0x37, 0x1C, 0x73, 0x34, 0xBF, 0x03, 0x30, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFF, 0x33, 0x00, 0x57, 0xE0, 0x2F, 0x00, 0x13, 0x30, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xF4, 0xD3, 0x00, 0x07, 0xF0, 0x1F, 0x03, 0x33, 0x34, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFF, 0x07, 0x34, 0x80, 0x03, 0x0E, 0x38, 0xD0, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFC, 0xB1, 0x34, 0x03, 0xD3, 0x1F, 0x03, 0x73, 0x34, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFC, 0xB1, 0x34, 0x03, 0xC3, 0x3F, 0x40, 0x23, 0x30, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x07, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x04, 0x00, 0x0C, 0x0D, 0x03, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC3, 0x0B, 0x1B, 0xC0, 0x0B, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x0F, 0x90, 0x83, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFD, 0x71, 0x30, 0x81, 0x03, 0x0E, 0x34, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0F, 0x1D, 0x30, 0xE7, 0x37, 0x73, 0x1C, 0xE3, 0x2F, 0x07, 0x00, 0xFD, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xD0, 0x1D, 0x47, 0x33, 0x30, 0xFF, 0x33, 0x30, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xBF, 0x30, 0x38, 0x43, 0xF3, 0x1F, 0x43, 0x33, 0x34, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xF4, 0xD1, 0x34, 0x03, 0x31, 0x00, 0x03, 0x70, 0x34, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x7F, 0x30, 0x1D, 0x43, 0x33, 0x30, 0x03, 0x33, 0x34, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFF, 0x32, 0x00, 0x03, 0xF0, 0x0B, 0x03, 0x30, 0x10, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFF, 0x33, 0x10, 0x03, 0xF0, 0x0B, 0x03, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xF4, 0xD1, 0x34, 0x03, 0x30, 0x3E, 0x03, 0x73, 0x34, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x47, 0x33, 0x30, 0x03, 0xF3, 0x3F, 0x03, 0x33, 0x30, 0x47, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x1D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1D, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xD0, 0x01, 0x0C, 0xC0, 0x00, 0x0C, 0xC0, 0x10, 0x0D, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x70, 0x34, 0x4C, 0x03, 0x37, 0xC0, 0x0B, 0x30, 0x0B, 0x0C, 0x0B, 0x47, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x07, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x10, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x1F, 0x3D, 0x7B, 0x3B, 0xE3, 0x32, 0x83, 0x30, 0x03, 0x30, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x70, 0xD0, 0x3C, 0x30, 0x37, 0xCC, 0x28, 0x33, 0xDC, 0x0C, 0x3C, 0x03, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x40, 0x1F, 0x74, 0x1C, 0x07, 0xCD, 0x00, 0x33, 0xD0, 0x1C, 0x1D, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x7F, 0x30, 0x1D, 0x43, 0x73, 0x34, 0xFF, 0x31, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x40, 0x1F, 0x34, 0x1D, 0x07, 0xCD, 0x00, 0x33, 0xDC, 0x1C, 0x1D, 0xFD, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFF, 0x31, 0x34, 0x03, 0xF3, 0x0F, 0xD7, 0x30, 0x34, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFC, 0xB1, 0x31, 0x07, 0xD0, 0x0F, 0x90, 0x23, 0x34, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFF, 0x13, 0x13, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x30, 0xC0, 0x0C, 0x30, 0x03, 0xCC, 0x00, 0x33, 0xD0, 0x2C, 0x1D, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x03, 0x33, 0x30, 0x03, 0xB3, 0x38, 0xCD, 0xC1, 0x0D, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x43, 0x30, 0xC7, 0x34, 0xCD, 0x1C, 0xED, 0x1E, 0x2C, 0x0E, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x30, 0xC0, 0x34, 0x1C, 0xB8, 0x03, 0x3D, 0xC0, 0x2D, 0x34, 0x1C, 0x03, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x03, 0xB3, 0x38, 0xDC, 0x40, 0x07, 0x30, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x00, 0x2D, 0xC0, 0x02, 0x2C, 0xD0, 0x02, 0x6C, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x2F, 0x03, 0x03, 0x03, 0x03, 0x03, 0x2F, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x30, 0x80, 0x02, 0x0C, 0xA0, 0x00, 0x03, 0x28, 0xC0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x3E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3E, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x1D, 0x37, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x30, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x04, 0xC3, 0xCF, 0x30, 0xFD, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x70, 0xC0, 0x00, 0x7F, 0x5C, 0x33, 0xCC, 0x30, 0x7F, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x5C, 0x32, 0xC0, 0x24, 0x3D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x0D, 0x30, 0xF8, 0x38, 0x33, 0xCC, 0x31, 0xFD, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x0C, 0xF3, 0xCB, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x3D, 0x07, 0x03, 0x2F, 0x03, 0x03, 0x07, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x2C, 0x33, 0x4C, 0x3F, 0xC0, 0x04, 0xE3, 0x07, 0x00,
|
||||
0x05, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x7F, 0x9C, 0x33, 0xCC, 0x30, 0xC7, 0x01, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x04, 0x1C, 0x00, 0x0D, 0x0C, 0x0C, 0x1D, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0x30, 0x00, 0x34, 0x30, 0x30, 0x30, 0x30, 0x1E, 0x00,
|
||||
0x05, 0x00, 0x00, 0x30, 0xC0, 0x10, 0xE3, 0xEC, 0xF0, 0xC1, 0x1C, 0xC3, 0x01, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x47, 0x3D, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x71, 0x37, 0x33, 0x33, 0x32, 0x43, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x1C, 0x33, 0xCC, 0x30, 0xD3, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x1C, 0x33, 0xCC, 0x34, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x1C, 0x33, 0xCC, 0x34, 0x7F, 0x0C, 0x30, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1D, 0x33, 0xCC, 0x34, 0xFD, 0x00, 0x03, 0x0C, 0x50,
|
||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x33, 0x1F, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x0C, 0xC1, 0x43, 0x30, 0x3F, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x1C, 0x74, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x0D, 0x33, 0xCC, 0x34, 0xFD, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x0C, 0x33, 0xCD, 0x2D, 0x2C, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x33, 0x32, 0x33, 0x73, 0x37, 0xCD, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x2C, 0xD3, 0xC7, 0x38, 0xC7, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x0C, 0x73, 0x4C, 0x37, 0x74, 0xC0, 0xF0, 0x01, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC4, 0xC2, 0xC2, 0x12, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x38, 0x0C, 0x0C, 0x03, 0x0C, 0x0C, 0x38, 0x00, 0x00, 0x00,
|
||||
0x02, 0x00, 0x32, 0x33, 0x33, 0x13, 0x00,
|
||||
0x04, 0x00, 0x00, 0x0B, 0x0C, 0x0C, 0x30, 0x0C, 0x0C, 0x0B, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x72, 0x37, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x04, 0x07, 0x20, 0x0C, 0xC3, 0x71, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x03, 0xFD, 0x70, 0x27, 0x33, 0x30, 0x37, 0xFD, 0x01, 0x03, 0x20, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xF4, 0xC1, 0x21, 0x0C, 0xF0, 0x0B, 0x0C, 0xC0, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x70, 0x34, 0xFD, 0xC1, 0x0C, 0xFD, 0x71, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x03, 0xB3, 0x38, 0xDC, 0xE0, 0x2F, 0x30, 0xE0, 0x2F, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x02, 0x00, 0x32, 0x13, 0x32, 0x13, 0x00,
|
||||
0x05, 0x00, 0xF0, 0xB1, 0xCD, 0x01, 0x7D, 0x0C, 0xD3, 0x07, 0x39, 0xD2, 0xF8, 0x01, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xDC, 0x41, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x07, 0x1D, 0x1D, 0xD7, 0x36, 0x33, 0x30, 0xD7, 0x37, 0x1D, 0x1D, 0xF4, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x7D, 0x04, 0xC3, 0xCF, 0x30, 0xFD, 0x01, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xC7, 0x1D, 0x77, 0xC0, 0x1D, 0x70, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x03, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x07, 0x1D, 0x1D, 0xF7, 0x36, 0xF3, 0x31, 0x37, 0x37, 0x1D, 0x1D, 0xF4, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x2D, 0x33, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x30, 0xE0, 0x2F, 0x30, 0x00, 0x02, 0xFE, 0x02, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x1F, 0x31, 0x1C, 0x07, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x1F, 0x34, 0x1C, 0x34, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x31, 0x0C, 0xC3, 0x30, 0x0D, 0xBF, 0x33, 0x00, 0x03, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xF4, 0x33, 0xFF, 0xCC, 0x3F, 0xD3, 0xCF, 0x00, 0x33, 0xC0, 0x0C, 0x30, 0x03, 0xCC, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x74, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x82, 0x03, 0x00,
|
||||
0x03, 0xCD, 0xC3, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x2D, 0xDC, 0x30, 0xC3, 0x0D, 0x2E, 0x00, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x00, 0xDD, 0x00, 0xDD, 0xD0, 0x0D, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x40, 0x03, 0xF0, 0x90, 0x30, 0x1C, 0xCC, 0x01, 0x28, 0x40, 0xF3, 0x34, 0x37, 0xC6, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x40, 0x03, 0xF0, 0x90, 0x30, 0x1C, 0xCC, 0x01, 0x28, 0x40, 0x7B, 0x34, 0x31, 0x46, 0x07, 0xF0, 0x03, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0xC0, 0x0F, 0xD0, 0x92, 0xC0, 0x1C, 0xCF, 0x01, 0x28, 0x40, 0xF3, 0x34, 0x37, 0xC6, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x70, 0xC0, 0x02, 0x0B, 0x31, 0x34, 0xFD, 0x01, 0x00,
|
||||
0x06, 0x0C, 0x40, 0x02, 0x74, 0xD0, 0x1D, 0x47, 0x33, 0x30, 0xFF, 0x33, 0x30, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xC0, 0x00, 0x06, 0x74, 0xD0, 0x1D, 0x47, 0x33, 0x30, 0xFF, 0x33, 0x30, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x74, 0x80, 0x08, 0x74, 0xD0, 0x1D, 0x47, 0x33, 0x30, 0xFF, 0x33, 0x30, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x74, 0x83, 0x08, 0x74, 0xD0, 0x1D, 0x47, 0x33, 0x30, 0xFF, 0x33, 0x30, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xDC, 0x41, 0x04, 0x74, 0xD0, 0x1D, 0x47, 0x33, 0x30, 0xFF, 0x33, 0x30, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x74, 0xC0, 0x0C, 0xB8, 0xD0, 0x1D, 0x47, 0x33, 0x30, 0xFF, 0x33, 0x30, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x0B, 0x37, 0x00, 0xCA, 0x00, 0x0C, 0xBF, 0xF0, 0x0F, 0xC0, 0x30, 0x10, 0xC3, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xF4, 0xD1, 0x34, 0x03, 0x31, 0x00, 0x03, 0x70, 0x34, 0xFD, 0x01, 0x09, 0x38, 0x00, 0x00,
|
||||
0x06, 0x0C, 0x40, 0x02, 0xFF, 0x32, 0x00, 0x03, 0xF0, 0x0B, 0x03, 0x30, 0x10, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xC0, 0x00, 0x06, 0xFF, 0x32, 0x00, 0x03, 0xF0, 0x0B, 0x03, 0x30, 0x10, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x74, 0x80, 0x08, 0xFF, 0x32, 0x00, 0x03, 0xF0, 0x0B, 0x03, 0x30, 0x10, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xDC, 0x41, 0x04, 0xFF, 0x32, 0x00, 0x03, 0xF0, 0x0B, 0x03, 0x30, 0x10, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x03, 0x09, 0x1D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1D, 0x00, 0x00, 0x00,
|
||||
0x04, 0x30, 0x18, 0x1D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1D, 0x00, 0x00, 0x00,
|
||||
0x04, 0x1D, 0x22, 0x1D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1D, 0x00, 0x00, 0x00,
|
||||
0x04, 0x77, 0x11, 0x1D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1D, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xC0, 0x0F, 0x30, 0x1D, 0x0C, 0xCD, 0x1F, 0xC3, 0xC0, 0x30, 0x34, 0xFC, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x74, 0x03, 0x22, 0x70, 0xD0, 0x3C, 0x30, 0x37, 0xCC, 0x28, 0x33, 0xDC, 0x0C, 0x3C, 0x03, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x30, 0x00, 0x24, 0x40, 0x1F, 0x74, 0x1C, 0x07, 0xCD, 0x00, 0x33, 0xD0, 0x1C, 0x1D, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0xC0, 0x00, 0x18, 0x40, 0x1F, 0x74, 0x1C, 0x07, 0xCD, 0x00, 0x33, 0xD0, 0x1C, 0x1D, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0xD0, 0x01, 0x88, 0x40, 0x1F, 0x74, 0x1C, 0x07, 0xCD, 0x00, 0x33, 0xD0, 0x1C, 0x1D, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x74, 0x03, 0x22, 0x40, 0x1F, 0x74, 0x1C, 0x07, 0xCD, 0x00, 0x33, 0xD0, 0x1C, 0x1D, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x74, 0x03, 0x44, 0x40, 0x1F, 0x74, 0x1C, 0x07, 0xCD, 0x00, 0x33, 0xD0, 0x1C, 0x1D, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x60, 0x24, 0xDD, 0x41, 0x07, 0xDD, 0x61, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x40, 0xDF, 0x74, 0x1C, 0xC7, 0xCD, 0x28, 0x73, 0xD3, 0x78, 0x1D, 0xFB, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x30, 0x00, 0x24, 0x30, 0xC0, 0x0C, 0x30, 0x03, 0xCC, 0x00, 0x33, 0xD0, 0x2C, 0x1D, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0xC0, 0x00, 0x18, 0x30, 0xC0, 0x0C, 0x30, 0x03, 0xCC, 0x00, 0x33, 0xD0, 0x2C, 0x1D, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0xD0, 0x01, 0x88, 0x30, 0xC0, 0x0C, 0x30, 0x03, 0xCC, 0x00, 0x33, 0xD0, 0x2C, 0x1D, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x74, 0x03, 0x44, 0x30, 0xC0, 0x0C, 0x30, 0x03, 0xCC, 0x00, 0x33, 0xD0, 0x2C, 0x1D, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xC0, 0x00, 0x06, 0x03, 0xB3, 0x38, 0xDC, 0x40, 0x07, 0x30, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x20, 0x00, 0x03, 0xF0, 0x07, 0xC3, 0x31, 0x34, 0x47, 0xF3, 0x0F, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x7D, 0x30, 0x0C, 0x73, 0x30, 0x1E, 0x43, 0x33, 0x32, 0xE3, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xC0, 0x00, 0x09, 0x7D, 0x04, 0xC3, 0xCF, 0x30, 0xFD, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x03, 0x06, 0x7D, 0x04, 0xC3, 0xCF, 0x30, 0xFD, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x40, 0x07, 0x22, 0x7D, 0x04, 0xC3, 0xCF, 0x30, 0xFD, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xD0, 0x8D, 0x08, 0x7D, 0x04, 0xC3, 0xCF, 0x30, 0xFD, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xC0, 0x1D, 0x11, 0x7D, 0x04, 0xC3, 0xCF, 0x30, 0xFD, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0xD0, 0xC1, 0x0C, 0x1D, 0x7D, 0x04, 0xC3, 0xCF, 0x30, 0xFD, 0x01, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x1F, 0xC1, 0x30, 0xFC, 0x2F, 0xC3, 0x00, 0x7D, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x5C, 0x32, 0xC0, 0x24, 0x3D, 0x90, 0xE0, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xC0, 0x00, 0x09, 0x7D, 0x0C, 0xF3, 0xCB, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x03, 0x06, 0x7D, 0x0C, 0xF3, 0xCB, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xC0, 0x81, 0x08, 0x7D, 0x0C, 0xF3, 0xCB, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x70, 0x47, 0x04, 0x7D, 0x0C, 0xF3, 0xCB, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x03, 0x09, 0x00, 0x0D, 0x0C, 0x0C, 0x1D, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x30, 0x18, 0x00, 0x0D, 0x0C, 0x0C, 0x1D, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x1D, 0x23, 0x00, 0x0D, 0x0C, 0x0C, 0x1D, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x11, 0x77, 0x00, 0x0D, 0x0C, 0x0C, 0x1D, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xD0, 0x0D, 0x1D, 0xD8, 0xF4, 0x33, 0xCC, 0x34, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xD0, 0x8D, 0x08, 0x7F, 0x1C, 0x33, 0xCC, 0x30, 0xD3, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xC0, 0x00, 0x09, 0x7D, 0x1C, 0x33, 0xCC, 0x34, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x03, 0x06, 0x7D, 0x1C, 0x33, 0xCC, 0x34, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xD0, 0x81, 0x08, 0x7D, 0x1C, 0x33, 0xCC, 0x34, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xD0, 0x8D, 0x08, 0x7D, 0x1C, 0x33, 0xCC, 0x34, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x70, 0x47, 0x04, 0x7D, 0x1C, 0x33, 0xCC, 0x34, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x10, 0x40, 0x07, 0x10, 0xF0, 0x3F, 0x10, 0x40, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0xDC, 0xB2, 0x8E, 0x37, 0x7B, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xC0, 0x00, 0x09, 0xC7, 0x0D, 0x33, 0xCC, 0x34, 0xFD, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x03, 0x06, 0xC7, 0x0D, 0x33, 0xCC, 0x34, 0xFD, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x40, 0x07, 0x22, 0xC7, 0x0D, 0x33, 0xCC, 0x34, 0xFD, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xC0, 0x1D, 0x11, 0xC7, 0x0D, 0x33, 0xCC, 0x34, 0xFD, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x03, 0x06, 0xC3, 0x0C, 0x73, 0x4C, 0x37, 0x74, 0xC0, 0xF0, 0x01, 0x00,
|
||||
0x05, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x7F, 0x1C, 0x33, 0xCC, 0x34, 0x7F, 0x0C, 0x30, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x70, 0x47, 0x04, 0xC3, 0x0C, 0x73, 0x4C, 0x37, 0x74, 0xC0, 0xF0, 0x01, 0x00,
|
||||
0x06, 0x0C, 0x40, 0x02, 0xFF, 0x32, 0x00, 0x03, 0xF0, 0x0B, 0x03, 0x30, 0x10, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xDC, 0x41, 0x04, 0xFF, 0x32, 0x00, 0x03, 0xF0, 0x0B, 0x03, 0x30, 0x10, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x30, 0x00, 0x30, 0x00, 0xF0, 0x1F, 0x30, 0x34, 0x30, 0x34, 0x30, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xC0, 0x00, 0x06, 0xFF, 0x33, 0x10, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xF4, 0xD1, 0x34, 0x03, 0xF1, 0x0B, 0x03, 0x70, 0x34, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFC, 0xB1, 0x31, 0x07, 0xD0, 0x0F, 0x90, 0x23, 0x34, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x1D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1D, 0x00, 0x00, 0x00,
|
||||
0x04, 0x77, 0x11, 0x1D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1D, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xD0, 0x01, 0x0C, 0xC0, 0x00, 0x0C, 0xC0, 0x10, 0x0D, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x03, 0xC0, 0x30, 0x00, 0x0C, 0x03, 0xC0, 0xF0, 0x1F, 0x0D, 0x43, 0xA3, 0x30, 0x34, 0x07, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x03, 0x30, 0x30, 0x00, 0x03, 0x03, 0xF0, 0xFF, 0x1F, 0x03, 0x43, 0x33, 0x30, 0x34, 0x47, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x30, 0x00, 0x30, 0x00, 0xF0, 0x0F, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xC0, 0x00, 0x06, 0x47, 0x33, 0x0D, 0xB7, 0xF0, 0x02, 0xB3, 0x30, 0x2C, 0x47, 0x0B, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x30, 0x00, 0x24, 0x70, 0xD0, 0x0C, 0x3C, 0xC3, 0xCD, 0x28, 0x73, 0xC3, 0x3C, 0x30, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xCC, 0x80, 0x0B, 0x03, 0x33, 0x30, 0x07, 0xD3, 0x3F, 0x00, 0x23, 0x34, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x47, 0x33, 0x30, 0x03, 0x33, 0x30, 0x03, 0x33, 0x30, 0xFF, 0x03, 0x03, 0x20, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xD0, 0x1D, 0x47, 0x33, 0x30, 0xFF, 0x33, 0x30, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFF, 0x31, 0x00, 0x03, 0xF0, 0x1F, 0x43, 0x33, 0x34, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xBF, 0x30, 0x38, 0x43, 0xF3, 0x1F, 0x43, 0x33, 0x34, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFF, 0x33, 0x10, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x1F, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x34, 0x0C, 0x28, 0x0C, 0xFF, 0x3F, 0x03, 0x30, 0x02, 0x20, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFF, 0x32, 0x00, 0x03, 0xF0, 0x0B, 0x03, 0x30, 0x10, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x70, 0xCD, 0x1C, 0xF8, 0x0B, 0xF4, 0x07, 0xDC, 0x0D, 0xCD, 0x1C, 0xC3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFC, 0x71, 0x34, 0x01, 0x03, 0x1E, 0x00, 0x33, 0x34, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x70, 0xD0, 0x0C, 0x3C, 0xC3, 0xCD, 0x28, 0x73, 0xC3, 0x3C, 0x30, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x0C, 0x03, 0xBE, 0x70, 0xD0, 0x0C, 0x3C, 0xC3, 0xCD, 0x28, 0x73, 0xC3, 0x3C, 0x30, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x47, 0x33, 0x0D, 0x37, 0xF0, 0x02, 0xB3, 0x30, 0x2C, 0x47, 0x0B, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFC, 0xC3, 0x30, 0x0C, 0xC3, 0x30, 0x0D, 0xA3, 0x30, 0x47, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x1F, 0x3D, 0x7B, 0x3B, 0xE3, 0x32, 0x83, 0x30, 0x03, 0x30, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x47, 0x33, 0x30, 0x03, 0xF3, 0x3F, 0x03, 0x33, 0x30, 0x47, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x40, 0x1F, 0x74, 0x1C, 0x07, 0xCD, 0x00, 0x33, 0xD0, 0x1C, 0x1D, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFF, 0x33, 0x30, 0x03, 0x33, 0x30, 0x03, 0x33, 0x30, 0x47, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x7F, 0x30, 0x1D, 0x43, 0x73, 0x34, 0xFF, 0x31, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xF4, 0xD1, 0x34, 0x03, 0x31, 0x00, 0x03, 0x70, 0x34, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFF, 0x13, 0x13, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x03, 0x33, 0x30, 0x07, 0xD3, 0x3F, 0x00, 0x23, 0x34, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xF8, 0x0F, 0xDE, 0x38, 0xC7, 0x30, 0xCB, 0x38, 0xFC, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x30, 0xC0, 0x34, 0x1C, 0xB8, 0x03, 0x3D, 0xC0, 0x2D, 0x34, 0x1C, 0x03, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x70, 0x70, 0x0C, 0x0C, 0x03, 0xC3, 0xC0, 0x30, 0x30, 0x0C, 0x0C, 0xFF, 0x0F, 0x00, 0x03, 0x80, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x03, 0x33, 0x30, 0x07, 0xD3, 0x3F, 0x00, 0x03, 0x30, 0x40, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x34, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC7, 0x34, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x70, 0x4C, 0xC3, 0x30, 0x0C, 0xC3, 0x30, 0x0C, 0xC3, 0x30, 0x0C, 0xC3, 0x31, 0x0D, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x30, 0x00, 0x30, 0x00, 0xF0, 0x1F, 0x30, 0x34, 0x30, 0x34, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x07, 0x74, 0x03, 0x30, 0x03, 0x30, 0xFF, 0x31, 0x43, 0x33, 0x43, 0x33, 0xFF, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x07, 0x30, 0x00, 0x03, 0xF0, 0x1F, 0x43, 0x33, 0x34, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x7D, 0x70, 0x1C, 0x01, 0x83, 0x3F, 0x00, 0x73, 0x34, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x70, 0xF4, 0xC1, 0x74, 0x1C, 0x73, 0xD0, 0xFC, 0x00, 0x33, 0x03, 0xCD, 0x1C, 0x1D, 0xD7, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFD, 0x73, 0x30, 0x03, 0xC3, 0x3F, 0x5C, 0x73, 0x30, 0x43, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x04, 0xC3, 0xCF, 0x30, 0xFD, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xD0, 0xCB, 0x01, 0x7C, 0x5C, 0x33, 0xCC, 0x30, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x0C, 0xF3, 0xC3, 0x30, 0x7F, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x07, 0x03, 0x03, 0x07, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xE0, 0x07, 0x30, 0xFC, 0x4C, 0x33, 0xCC, 0x31, 0x7C, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x0C, 0xF3, 0xCB, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xB3, 0x3B, 0xFD, 0x31, 0x33, 0x77, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x04, 0xC3, 0x47, 0x30, 0x3E, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x8D, 0xB3, 0xCF, 0x33, 0xC7, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xC0, 0x0C, 0x2E, 0xC7, 0x8D, 0xB3, 0xCF, 0x33, 0xC7, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE3, 0xEC, 0xF1, 0xC1, 0x1C, 0xC3, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x30, 0xD3, 0x8C, 0x32, 0xC7, 0x01, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xF3, 0x3D, 0x77, 0x33, 0x31, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x0C, 0xF3, 0xCF, 0x30, 0xD3, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x1C, 0x33, 0xCC, 0x34, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0C, 0x33, 0xCC, 0x30, 0xD7, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x1C, 0x33, 0xCC, 0x34, 0x7F, 0x0C, 0x30, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x5C, 0x32, 0xC0, 0x24, 0x3D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x71, 0x37, 0x33, 0x33, 0x32, 0x43, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x0C, 0x73, 0x4C, 0x37, 0x74, 0xC0, 0xF0, 0x01, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x03, 0xFC, 0xB1, 0x37, 0x33, 0x73, 0x37, 0xFD, 0x01, 0x03, 0x30, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x2C, 0xD3, 0xC7, 0x38, 0xC7, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x30, 0x0C, 0xC3, 0x30, 0x0C, 0xFF, 0x03, 0x30, 0x00, 0x02, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x1C, 0xD3, 0x0F, 0x30, 0xD0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x37, 0x33, 0x33, 0x33, 0x33, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0xC3, 0xCC, 0x30, 0x33, 0xCC, 0x0C, 0xFF, 0x0F, 0x00, 0x03, 0x80, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0xC1, 0x34, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xDD, 0x00, 0xF3, 0xC7, 0x4C, 0x33, 0x7F, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0C, 0xF0, 0xC7, 0x34, 0x7F, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x48, 0x43, 0x8F, 0x30, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7, 0xC7, 0x1C, 0xF3, 0xC3, 0xCC, 0x34, 0xD7, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1C, 0xE3, 0xCF, 0x30, 0xD3, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xC0, 0x00, 0x09, 0x7D, 0x0C, 0xF3, 0xCB, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x70, 0x47, 0x04, 0x7D, 0x0C, 0xF3, 0xCB, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x0C, 0xF0, 0x0B, 0x0C, 0xC0, 0x1F, 0x9C, 0xC3, 0x30, 0x1C, 0x03, 0x34, 0xD0, 0x01, 0x00,
|
||||
0x04, 0x00, 0x00, 0x30, 0x18, 0x7F, 0x03, 0x03, 0x03, 0x07, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x1C, 0xF2, 0xC1, 0x20, 0x7C, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x0C, 0xC1, 0x43, 0x30, 0x3F, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x04, 0x1C, 0x00, 0x0D, 0x0C, 0x0C, 0x1D, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x11, 0x77, 0x00, 0x0D, 0x0C, 0x0C, 0x1D, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0x30, 0x00, 0x34, 0x30, 0x30, 0x30, 0x30, 0x1E, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0xCC, 0x00, 0xCD, 0x1F, 0xCA, 0x34, 0xC7, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x00, 0xC3, 0x00, 0xFF, 0x1F, 0xC3, 0x34, 0xD3, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x0C, 0xF0, 0x0B, 0x0C, 0xC0, 0x1F, 0x9C, 0xC3, 0x30, 0x1C, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x03, 0x06, 0xE3, 0xEC, 0xF1, 0xC1, 0x1C, 0xC7, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xC0, 0x00, 0x09, 0xC7, 0x8D, 0xB3, 0xCF, 0x33, 0xC7, 0x01, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x70, 0x4D, 0x1F, 0xC3, 0x0C, 0x73, 0x4C, 0x37, 0x74, 0xC0, 0xF0, 0x01, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x0C, 0x33, 0xCC, 0x30, 0xFF, 0x30, 0x80, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x00, 0x1C, 0x07, 0x40, 0x33, 0x00, 0x30, 0x03, 0x02, 0x73, 0x74, 0x34, 0xFD, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x32, 0x32, 0x37, 0xD3, 0x1D, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xFE, 0x02, 0x30, 0x00, 0xF0, 0x1F, 0x30, 0x34, 0x30, 0x34, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x0C, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0xFC, 0xC1, 0x34, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x47, 0x1F, 0xD3, 0x34, 0x33, 0x10, 0xFF, 0x0B, 0x33, 0x00, 0x73, 0x34, 0xD7, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7, 0xC7, 0x1C, 0xF2, 0x1F, 0xCC, 0x20, 0xD7, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xD0, 0x1D, 0x47, 0xF3, 0x3E, 0x77, 0x33, 0x33, 0x33, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xD0, 0x1C, 0xEE, 0x32, 0x33, 0x33, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x47, 0x07, 0xD3, 0x1D, 0x73, 0x34, 0xFF, 0x3E, 0x73, 0x37, 0x33, 0x33, 0x37, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x07, 0xD3, 0x1C, 0xFF, 0x2E, 0x33, 0x33, 0x37, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x0F, 0x0C, 0x0C, 0x28, 0x0A, 0xF4, 0x07, 0xCD, 0x1C, 0xC7, 0x34, 0xC3, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x81, 0x09, 0xFD, 0x71, 0x37, 0x33, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xFF, 0x30, 0x0C, 0x0C, 0x83, 0xA2, 0xF0, 0xFF, 0x07, 0xD3, 0xCC, 0x31, 0xC7, 0x34, 0x37, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x1F, 0x83, 0x09, 0xFF, 0x1F, 0x73, 0x37, 0x37, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xCC, 0x40, 0x07, 0xFC, 0x71, 0x34, 0x01, 0x03, 0x1E, 0x00, 0x03, 0x34, 0xFE, 0x71, 0x04, 0xBD, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x30, 0x43, 0x07, 0x3E, 0x04, 0xC3, 0x47, 0x30, 0x3E, 0x5C, 0xD0, 0x02, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x30, 0xC7, 0x30, 0xDD, 0x34, 0xF4, 0x1F, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x73, 0x33, 0xFD, 0x02, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x40, 0x1F, 0x74, 0x1C, 0x07, 0xCD, 0xFF, 0x33, 0xD0, 0x1C, 0x1D, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x1C, 0xF3, 0xCF, 0x34, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x2D, 0x03, 0x13, 0x03, 0x03, 0x8B, 0x03, 0xCD, 0x01, 0xDC, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xCB, 0x30, 0x31, 0x0D, 0xDC, 0x02, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0xCC, 0x00, 0x64, 0x02, 0x03, 0x2D, 0x03, 0x13, 0x03, 0x03, 0x8B, 0x03, 0xCD, 0x01, 0xDC, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xC0, 0x0C, 0x90, 0x09, 0x43, 0xCB, 0x30, 0x31, 0x0D, 0xDC, 0x02, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x01, 0x00, 0x1D, 0x07, 0x00, 0x07, 0xCD, 0x30, 0x03, 0xCC, 0x30, 0x03, 0xCD, 0x31, 0x47, 0x47, 0x37, 0xFD, 0x01, 0x1D, 0x00, 0x00, 0x0C, 0x00, 0xC0, 0x07, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x0C, 0x73, 0xCC, 0x30, 0xC3, 0x1C, 0x33, 0x4D, 0x37, 0x7D, 0xD0, 0x01, 0x00, 0x0C, 0x00, 0x7C, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x80, 0x00, 0xF4, 0x07, 0x9D, 0x1C, 0x07, 0x34, 0x03, 0x30, 0x03, 0x34, 0x87, 0x1D, 0xFD, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFD, 0x71, 0x32, 0x03, 0x33, 0x36, 0xFD, 0x01, 0x02, 0x00, 0x00, 0x00,
|
||||
0x0A, 0xE0, 0x0B, 0x00, 0x93, 0x0B, 0x40, 0x03, 0xD0, 0x08, 0x1C, 0x07, 0x40, 0x33, 0x00, 0x30, 0x03, 0x02, 0x73, 0x74, 0x34, 0xFD, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xBE, 0x31, 0x38, 0x34, 0x80, 0x00, 0x43, 0x32, 0x32, 0x37, 0xD3, 0x1D, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0xF0, 0x3F, 0x00, 0x22, 0x02, 0x00, 0x00, 0xD0, 0x00, 0x1C, 0x07, 0x40, 0x33, 0x00, 0x30, 0x03, 0x02, 0x73, 0x74, 0x34, 0xFD, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0xF0, 0x3F, 0x22, 0x02, 0x00, 0x43, 0x32, 0x32, 0x37, 0xD3, 0x1D, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xF4, 0xD1, 0x34, 0x03, 0x31, 0x00, 0x03, 0x70, 0x00, 0x3D, 0x00, 0x03, 0x20, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x5C, 0x32, 0xC0, 0x00, 0x0D, 0x30, 0x80, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x0A, 0xB4, 0x03, 0x03, 0x7B, 0x80, 0x2E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x2F, 0x33, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xF8, 0xB2, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0xC3, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x4C, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xBE, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0C, 0x00, 0x2E, 0x00, 0xB8, 0xB3, 0x0B, 0xCC, 0xC0, 0x0C, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x2E, 0x33, 0x00, 0x33, 0x00, 0x00, 0x00, 0xB8, 0x80, 0x0B, 0xCC, 0xEE, 0x0C, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0C, 0x00, 0x34, 0x00, 0x30, 0x1C, 0x00, 0x30, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x0D, 0x00, 0x1C, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x03, 0x00, 0x0D, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x0C, 0x03, 0xF8, 0x02, 0x07, 0x0D, 0x03, 0x0F, 0xC3, 0x0D, 0xA3, 0x0C, 0x37, 0x0C, 0x0F, 0x0C, 0x07, 0x3C, 0x00, 0x28, 0x00, 0x1C, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xCC, 0x80, 0x0B, 0xC7, 0x31, 0x0E, 0xFB, 0xF0, 0x0C, 0xC7, 0x03, 0x28, 0xC0, 0x01, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xB8, 0x00, 0x0C, 0x00, 0xFF, 0xC1, 0xD0, 0x30, 0x34, 0xFC, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x0C, 0xC0, 0x00, 0x2E, 0xC0, 0x00, 0xFC, 0xC1, 0x34, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFF, 0x31, 0x34, 0x73, 0x73, 0x1D, 0x7F, 0x33, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x1C, 0xB3, 0xCD, 0x1C, 0xDF, 0x0C, 0x30, 0x00, 0x00,
|
||||
0x06, 0x00, 0x02, 0x30, 0xFF, 0x33, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x20, 0x30, 0x7F, 0x07, 0x03, 0x03, 0x07, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x30, 0x10, 0x0C, 0xC0, 0x2F, 0xC0, 0x00, 0x30, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x71, 0xF0, 0x07, 0x03, 0x1C, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFF, 0x33, 0x10, 0x03, 0xF0, 0x0F, 0x83, 0x33, 0x30, 0x07, 0x03, 0x30, 0xF4, 0x01, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x1C, 0xF0, 0xC3, 0x38, 0xC7, 0x40, 0x43, 0x07, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0C, 0x47, 0x33, 0x07, 0xF8, 0x0B, 0xD0, 0x1F, 0xC0, 0xDD, 0x40, 0x33, 0x07, 0xC3, 0xF0, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xC3, 0xEE, 0xD0, 0x1F, 0xCC, 0x0C, 0x77, 0x0F, 0x00, 0x03, 0x80, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFC, 0x71, 0x34, 0x01, 0x03, 0x1E, 0x00, 0x33, 0x34, 0xFE, 0x01, 0x09, 0x38, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x04, 0xC3, 0x47, 0x30, 0x3E, 0x90, 0xE0, 0x01, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x70, 0x34, 0x4C, 0x03, 0x37, 0xC0, 0x0B, 0x30, 0x0B, 0x0C, 0x0B, 0x47, 0x0F, 0x00, 0x03, 0x80, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE3, 0xB0, 0x07, 0x1F, 0x30, 0x07, 0xC3, 0x03, 0x30, 0x00, 0x02, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x07, 0x33, 0x37, 0xF7, 0xF0, 0x03, 0xF3, 0x30, 0x37, 0x47, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x33, 0x2B, 0xFF, 0x30, 0x2B, 0x23, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xC0, 0xD1, 0xFC, 0x0D, 0xDC, 0x00, 0x2F, 0xC0, 0x2C, 0x30, 0x2C, 0x1C, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xF3, 0x1F, 0x7C, 0xC0, 0x1C, 0x0C, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x34, 0x30, 0x0D, 0x70, 0x03, 0xF0, 0x02, 0x30, 0x0B, 0x30, 0x2C, 0x70, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0xC3, 0x1E, 0x7C, 0xC0, 0x1C, 0x0C, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x70, 0x34, 0x0C, 0x0C, 0x03, 0xC3, 0xFF, 0x30, 0x30, 0x0C, 0x0C, 0x07, 0x0F, 0x00, 0x03, 0x80, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x30, 0x0C, 0xFF, 0x30, 0x0C, 0xC3, 0x03, 0x30, 0x00, 0x02, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x70, 0xF0, 0xCF, 0xC0, 0x10, 0x03, 0x03, 0xFC, 0x0F, 0x30, 0x30, 0xC0, 0xC0, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xDF, 0x70, 0xF0, 0x0F, 0x0C, 0x03, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03, 0x30, 0x30, 0x00, 0x03, 0x03, 0x30, 0xF0, 0x0F, 0x03, 0x83, 0x33, 0x30, 0x30, 0x07, 0x03, 0x03, 0x00, 0x30, 0x00, 0xF4, 0x01, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xC3, 0x00, 0xC3, 0x0F, 0xC3, 0x38, 0xC7, 0x30, 0x00, 0x34, 0x00, 0x1D, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x4D, 0x0B, 0xC3, 0x0D, 0xC3, 0x0C, 0xC3, 0x0C, 0x87, 0x17, 0xFD, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x70, 0x2D, 0x73, 0x73, 0x1E, 0x3D, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xF4, 0xD1, 0x34, 0x03, 0x31, 0x00, 0x03, 0x70, 0x34, 0xFD, 0x01, 0x09, 0x38, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x5C, 0x32, 0xC0, 0x24, 0x3D, 0x90, 0xE0, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFF, 0x13, 0x13, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x80, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B, 0xC1, 0xDD, 0x30, 0x33, 0x8C, 0x0C, 0x03, 0x0F, 0x00, 0x03, 0x80, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x03, 0xB3, 0x38, 0xDC, 0x40, 0x07, 0x30, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x0C, 0x73, 0x4C, 0x37, 0x74, 0xC0, 0x00, 0x03, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x03, 0xB3, 0x38, 0xDC, 0xF0, 0x3F, 0x30, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x0C, 0x73, 0x4C, 0x37, 0x74, 0xF0, 0x03, 0x03, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0C, 0x0D, 0x07, 0xB8, 0x03, 0xF4, 0x00, 0xDC, 0x02, 0x0D, 0x07, 0x03, 0x3C, 0x00, 0x30, 0x00, 0x20, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xB0, 0x0C, 0x7D, 0x30, 0x0E, 0xC7, 0x03, 0x30, 0x00, 0x02, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x43, 0x4C, 0x0C, 0x30, 0x30, 0xC0, 0xC0, 0x00, 0x03, 0x03, 0x0C, 0x0C, 0xF0, 0xFF, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x03, 0xC3, 0xC0, 0x30, 0x30, 0x0C, 0xFC, 0x0F, 0x00, 0x03, 0x80, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x30, 0x30, 0x0C, 0x0C, 0x07, 0x43, 0xFF, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x0F, 0x00, 0x03, 0x80, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x70, 0x0C, 0xFD, 0x00, 0x0C, 0xC0, 0x03, 0x30, 0x00, 0x02, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x03, 0x33, 0x31, 0x37, 0xD3, 0x3F, 0x30, 0x03, 0x31, 0x40, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x73, 0x33, 0xFD, 0x03, 0x33, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x07, 0x30, 0x00, 0x03, 0xF0, 0x1F, 0x43, 0x33, 0x30, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0C, 0xF0, 0xC7, 0x34, 0xC3, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1F, 0xD1, 0x34, 0x33, 0x30, 0xFE, 0x2F, 0x30, 0x00, 0x70, 0x34, 0xD0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xC7, 0x0C, 0xE3, 0xBF, 0xC0, 0x00, 0xD0, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1F, 0xD1, 0x34, 0x33, 0x30, 0xFE, 0x2F, 0x30, 0x00, 0x70, 0x34, 0xD0, 0x1F, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xC7, 0x0C, 0xE3, 0xBF, 0xC0, 0x00, 0xD0, 0x0B, 0x30, 0x00, 0x08, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x1D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1D, 0x00, 0x00, 0x00,
|
||||
0x08, 0x30, 0x03, 0xE0, 0x02, 0xC3, 0x70, 0xCD, 0x1C, 0xF8, 0x0B, 0xF4, 0x07, 0xDC, 0x0D, 0xCD, 0x1C, 0xC3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xCC, 0x80, 0x0B, 0x33, 0xB3, 0x3B, 0xFD, 0x31, 0x33, 0x77, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x47, 0x33, 0x0D, 0x37, 0xF0, 0x0F, 0x83, 0x33, 0x30, 0x07, 0x03, 0x30, 0xF4, 0x01, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE3, 0xEC, 0xF1, 0xC3, 0x38, 0xC3, 0x40, 0x43, 0x07, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xC0, 0x3F, 0x30, 0x0C, 0x0C, 0x03, 0xC3, 0xD0, 0x30, 0x28, 0x0C, 0x07, 0x0F, 0x80, 0x02, 0x70, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xC0, 0x0C, 0xCD, 0xA0, 0x0C, 0xC7, 0x03, 0x28, 0xC0, 0x01, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x47, 0x33, 0x30, 0x03, 0xF3, 0x3F, 0x03, 0x33, 0x30, 0x07, 0x03, 0x30, 0xF4, 0x01, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x0C, 0xF3, 0xCF, 0x30, 0xC3, 0x40, 0x43, 0x07, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x70, 0x34, 0x0C, 0x0C, 0x03, 0xC3, 0xFF, 0x30, 0x30, 0x0C, 0x0C, 0x07, 0x0F, 0x80, 0x02, 0x70, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x30, 0x0C, 0xFF, 0x30, 0x0C, 0xC3, 0x03, 0x28, 0xC0, 0x01, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x03, 0x33, 0x30, 0x07, 0xD3, 0x3F, 0x00, 0x03, 0x30, 0xC0, 0x03, 0x0C, 0x80, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x1C, 0xD3, 0x0F, 0x30, 0xF0, 0xC0, 0x00, 0x02, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xC3, 0x47, 0x0F, 0x7B, 0x3B, 0x8C, 0xCB, 0x30, 0x08, 0xC3, 0x00, 0x0C, 0x03, 0xF0, 0x00, 0x80, 0x02, 0x00, 0x07, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xC3, 0xF7, 0x70, 0x37, 0x4C, 0x0C, 0x07, 0x0F, 0x80, 0x02, 0x70, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x0D, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x1D, 0x00, 0x00, 0x00,
|
||||
0x06, 0xCC, 0x80, 0x0B, 0x74, 0xD0, 0x1D, 0x47, 0x33, 0x30, 0xFF, 0x33, 0x30, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xC0, 0x0C, 0x2E, 0x7D, 0x04, 0xC3, 0xCF, 0x30, 0xFD, 0x01, 0x00, 0x00, 0x00,
|
||||
0x06, 0xDC, 0x41, 0x04, 0x74, 0xD0, 0x1D, 0x47, 0x33, 0x30, 0xFF, 0x33, 0x30, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xC0, 0x1D, 0x11, 0x7D, 0x04, 0xC3, 0xCF, 0x30, 0xFD, 0x01, 0x00, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x0B, 0x37, 0x00, 0xCA, 0x00, 0x0C, 0xBF, 0xF0, 0x0F, 0xC0, 0x30, 0x10, 0xC3, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x1F, 0x04, 0xC3, 0xC0, 0xFF, 0xC2, 0x30, 0x00, 0x7D, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xCC, 0x80, 0x0B, 0xFF, 0x32, 0x00, 0x03, 0xF0, 0x0B, 0x03, 0x30, 0x10, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x30, 0x83, 0x0B, 0x7D, 0x0C, 0xF3, 0xCB, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x7D, 0x70, 0x1C, 0x01, 0xE3, 0x3F, 0x03, 0x73, 0x34, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x40, 0xE3, 0xCF, 0x30, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xDC, 0x41, 0x04, 0x7D, 0x70, 0x1C, 0x01, 0xE3, 0x3F, 0x03, 0x73, 0x34, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x70, 0x47, 0x04, 0x7E, 0x40, 0xE3, 0xCF, 0x30, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x70, 0x07, 0x10, 0x01, 0xC3, 0x70, 0xCD, 0x1C, 0xF8, 0x0B, 0xF4, 0x07, 0xDC, 0x0D, 0xCD, 0x1C, 0xC3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xDC, 0x41, 0x04, 0x33, 0xB3, 0x3B, 0xFD, 0x31, 0x33, 0x77, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xDC, 0x41, 0x04, 0xFC, 0x71, 0x34, 0x01, 0x03, 0x1E, 0x00, 0x33, 0x34, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x70, 0x47, 0x04, 0x3E, 0x04, 0xC3, 0x47, 0x30, 0x3E, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFF, 0x13, 0x34, 0xD0, 0x00, 0x1F, 0x00, 0x33, 0x34, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x44, 0x43, 0x03, 0x1F, 0xC0, 0x4C, 0xE3, 0x07, 0x00,
|
||||
0x07, 0xF8, 0x02, 0x00, 0x70, 0xD0, 0x0C, 0x3C, 0xC3, 0xCD, 0x28, 0x73, 0xC3, 0x3C, 0x30, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xE0, 0x0B, 0x00, 0xC7, 0x8D, 0xB3, 0xCF, 0x33, 0xC7, 0x01, 0x00, 0x00, 0x00,
|
||||
0x07, 0x74, 0x03, 0x44, 0x70, 0xD0, 0x0C, 0x3C, 0xC3, 0xCD, 0x28, 0x73, 0xC3, 0x3C, 0x30, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xD0, 0x0D, 0x11, 0xC7, 0x8D, 0xB3, 0xCF, 0x33, 0xC7, 0x01, 0x00, 0x00, 0x00,
|
||||
0x07, 0x74, 0x03, 0x44, 0x40, 0x1F, 0x74, 0x1C, 0x07, 0xCD, 0x00, 0x33, 0xD0, 0x1C, 0x1D, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x70, 0x47, 0x04, 0x7D, 0x1C, 0x33, 0xCC, 0x34, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x40, 0x1F, 0x74, 0x1C, 0x07, 0xCD, 0xFF, 0x33, 0xD0, 0x1C, 0x1D, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x1C, 0xF3, 0xCF, 0x34, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x74, 0x03, 0x44, 0x40, 0x1F, 0x74, 0x1C, 0x07, 0xCD, 0xFF, 0x33, 0xD0, 0x1C, 0x1D, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x70, 0x47, 0x04, 0x7D, 0x1C, 0xF3, 0xCF, 0x34, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xDD, 0x40, 0x04, 0x7D, 0x70, 0x1C, 0x01, 0x83, 0x3F, 0x00, 0x73, 0x34, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x70, 0x47, 0x04, 0x7D, 0x48, 0x43, 0x8F, 0x30, 0x7D, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0xFD, 0x01, 0x00, 0x03, 0x33, 0x30, 0x07, 0xD3, 0x3F, 0x00, 0x23, 0x34, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xE0, 0x0B, 0x00, 0xC3, 0x0C, 0x73, 0x4C, 0x37, 0x74, 0xC0, 0xF0, 0x01, 0x00,
|
||||
0x06, 0xDC, 0x41, 0x04, 0x03, 0x33, 0x30, 0x07, 0xD3, 0x3F, 0x00, 0x23, 0x34, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x70, 0x47, 0x04, 0xC3, 0x0C, 0x73, 0x4C, 0x37, 0x74, 0xC0, 0xF0, 0x01, 0x00,
|
||||
0x06, 0x30, 0x83, 0x19, 0x03, 0x33, 0x30, 0x07, 0xD3, 0x3F, 0x00, 0x23, 0x34, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0xC0, 0x8C, 0x19, 0xC3, 0x0C, 0x73, 0x4C, 0x37, 0x74, 0xC0, 0xF0, 0x01, 0x00,
|
||||
0x06, 0xDC, 0x41, 0x04, 0x03, 0x33, 0x30, 0x07, 0xD3, 0x3F, 0x00, 0x03, 0x30, 0x40, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x70, 0x47, 0x04, 0xC3, 0x1C, 0xD3, 0x0F, 0x30, 0xD0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xFF, 0x33, 0x10, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x0F, 0xC0, 0x00, 0x08, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x07, 0x03, 0x03, 0x07, 0x0C, 0x09, 0x00,
|
||||
0x08, 0x70, 0x07, 0x10, 0x01, 0x07, 0x74, 0x03, 0x30, 0x03, 0x30, 0xFF, 0x31, 0x43, 0x33, 0x43, 0x33, 0xFF, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xC0, 0x1D, 0x10, 0x01, 0x03, 0xDD, 0x00, 0xF3, 0xC7, 0x4C, 0x33, 0x7F, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x30, 0x10, 0x0C, 0xC0, 0x2F, 0xC0, 0x00, 0x30, 0x00, 0x3C, 0x00, 0x0D, 0xC0, 0x01, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x71, 0xF0, 0x07, 0x03, 0x1C, 0xC0, 0x40, 0x02, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0C, 0x0D, 0x07, 0xB8, 0x03, 0xF4, 0x00, 0xDC, 0x02, 0x0D, 0x07, 0x03, 0x1C, 0x00, 0x24, 0x00, 0x0E, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xB0, 0x0C, 0x7D, 0x30, 0x0E, 0x87, 0x03, 0x24, 0xE0, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x30, 0xC0, 0x34, 0x1C, 0xB8, 0x83, 0xFF, 0xC2, 0x2D, 0x34, 0x1C, 0x03, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xB4, 0xF2, 0x8F, 0x1E, 0xC7, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x7F, 0x00, 0xFF, 0x01, 0xFF, 0x07, 0xFF, 0x1F, 0xFF, 0x7F, 0xFF, 0x1B, 0xBF, 0x01, 0x1B, 0x00,
|
||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x00, 0x00, 0xF8, 0xF0, 0x3F, 0xEE, 0x2C, 0x30, 0xCB, 0x0B, 0x30, 0x42, 0xC3, 0x33, 0x00, 0x03, 0x30, 0x00, 0xF3, 0x33, 0x00, 0x03, 0x30, 0x00, 0xFF, 0x3F, 0x00,
|
||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x00, 0xCB, 0x00, 0x00, 0xEE, 0xC0, 0xFF, 0xF8, 0xB0, 0xC0, 0xFF, 0x2C, 0xC0, 0x00, 0x0C, 0xCF, 0x00, 0x0C, 0xC0, 0x00, 0xCC, 0xCF, 0x00, 0x0C, 0xC0, 0x00, 0xFC, 0xFF,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x70, 0x00, 0x00, 0xF3, 0xFF, 0xD3, 0x03, 0xE0, 0x3C, 0x3F, 0x38, 0x03, 0xD0, 0x33, 0xFF, 0x38, 0x03, 0xE0, 0xF0, 0xFF, 0x03,
|
||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x8B, 0xF7, 0x0C, 0x13, 0x9F, 0x3B, 0x37, 0x00, 0xC0, 0x23, 0xFF, 0xFF, 0x8B, 0x03, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x7F, 0x80, 0x03, 0x2C, 0x0D, 0x00, 0x37, 0x00, 0xC0, 0xF3, 0xFF, 0x3C, 0xFF, 0xCF, 0x03, 0x00, 0xDC, 0x00, 0x70, 0x38, 0xC0, 0x02, 0xFD, 0x07,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x03, 0xF0, 0xFF, 0xC0, 0xFF, 0x3F, 0xFC, 0xFF, 0xC3, 0xFF, 0x3F, 0xFC, 0xFF, 0x03, 0xFF, 0x0F, 0xC0, 0x3F, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x00, 0xC0, 0x03, 0x00, 0x3C, 0xF0, 0xC0, 0xC3, 0x3A, 0x3C, 0x0B, 0xCE, 0x2B, 0x80, 0x7E, 0x00, 0xD0, 0x03, 0x00, 0xFC, 0xFF, 0xFF,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0xFC, 0xFF, 0xC3, 0xFF, 0x3F, 0xFC, 0xFF, 0xC3, 0xFF, 0x3F, 0xFC, 0xFF, 0xC3, 0xFF, 0x3F, 0xFC, 0xFF, 0x03, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x7F, 0x80, 0x03, 0x2C, 0x0D, 0x0F, 0x37, 0xF0, 0xC0, 0xF3, 0xFF, 0x3C, 0xFF, 0xCF, 0x03, 0x0F, 0xDC, 0xF0, 0x70, 0x38, 0xC0, 0x02, 0xFD, 0x07,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1F, 0x00, 0xAD, 0x07, 0xB0, 0xC5, 0x00, 0x17, 0x0C, 0x70, 0xD0, 0x00, 0x0C, 0x03, 0xBC, 0xEF, 0xB3, 0x11, 0xE0, 0x07, 0x05, 0x3C, 0x52, 0xC8,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xC0, 0x3F, 0x00, 0xF0, 0x00, 0xC0, 0x30, 0xC0, 0xFF, 0x3F, 0xFC, 0xFF, 0xC3, 0xFF, 0x3F,
|
||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0xFF, 0x0F, 0xFC, 0xFF, 0x3F, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xE0, 0x2F, 0xFF, 0xE3, 0x2F, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x7F, 0x80, 0xFF, 0x2F, 0xFD, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0x7F, 0xF8, 0xFF, 0x02, 0xFD, 0x07,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x02, 0x00, 0xC8, 0x07, 0x10, 0xC3, 0x00, 0x31, 0x0D, 0x00, 0xFD, 0x01, 0x00, 0x74, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0xF0, 0xF0, 0x00, 0x0F, 0x0F, 0xF0, 0xF0, 0x00, 0x0F, 0x0F, 0xF0, 0xF0, 0x00, 0x0F, 0x0F, 0xF0, 0xF0, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x80, 0xFF, 0x8B, 0x1E, 0xD0, 0x2E, 0x00, 0xF0, 0x00, 0xE0, 0xFF, 0x0B, 0x00, 0x0F, 0x00, 0xB8, 0x03, 0xB0, 0xE2, 0xFF, 0x02, 0x50, 0x01,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x07, 0x03, 0x1E, 0x03, 0x73, 0x03, 0xEF, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF,
|
||||
0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFE, 0x02, 0xBE, 0xC1, 0xD0, 0x01, 0xF0, 0x3F, 0xE0, 0x0B, 0x1F, 0x1C, 0xD0, 0x4A, 0x03, 0x6C, 0xB3, 0x00, 0xC3, 0x4D, 0x7E, 0xD0, 0xBF, 0x01,
|
||||
0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2A, 0x00, 0xAA, 0x0A, 0x80, 0x2A, 0xFC, 0xA0, 0xF2, 0x3F, 0xA0, 0xFC, 0x03, 0xC8, 0xFF, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x01, 0x00, 0xC0, 0x07, 0xAA, 0xEA, 0x1F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xAA, 0xEA, 0x1F, 0x00, 0xC0, 0x07, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00,
|
||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x03, 0x00, 0xD0, 0x03, 0x00, 0xF4, 0xAB, 0xAA, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xF4, 0xAB, 0xAA, 0xD0, 0x03, 0x00, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xFE, 0xFF, 0xA0, 0xEA, 0xA3, 0x80, 0xEF, 0x02, 0xFE, 0x0B, 0xF8, 0xAF, 0xEA, 0xFF, 0x2F, 0xFE, 0x2F, 0x20, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x2D, 0xFE, 0x2F, 0x00, 0x00, 0xF0, 0xFF, 0x06, 0x00, 0x64, 0xFE, 0x0A, 0x05, 0x90, 0x00, 0x00, 0x02, 0x40, 0x06,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x03, 0x07, 0x36, 0x06, 0x4C, 0x0E, 0x28, 0x3C, 0x70, 0xF0, 0xE0, 0xC1, 0xF6, 0x7F, 0xF2, 0xFF, 0x03, 0xFE, 0x02, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x40, 0x44, 0x04, 0x20, 0x11, 0x84, 0x48, 0x10, 0x12, 0x42, 0x88, 0x04, 0x32, 0x22, 0xCC, 0x8C, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x01, 0xD0, 0x01, 0x80, 0x07, 0x40, 0x7B, 0x00, 0xFF, 0x02, 0xBC, 0x0F, 0xE0, 0x2B, 0x40, 0x7F, 0xD0, 0xFF, 0x1F, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x14, 0x00, 0x90, 0x01, 0x80, 0x0A, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x03, 0x00, 0xCF, 0xBD, 0x3C, 0x00, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x03, 0x00, 0xCF, 0xBD, 0x3C, 0x00, 0xF0, 0xFF, 0xFF, 0x00, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x03, 0x00, 0xCF, 0xBD, 0x3C, 0x00, 0xF0, 0xFF, 0xFF, 0x00, 0x74, 0x00, 0x40, 0x07, 0x00, 0x34, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x03, 0x00, 0xCF, 0xBD, 0x3C, 0x00, 0xF0, 0xFF, 0xFF, 0x74, 0x00, 0x74, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xF0, 0xFF, 0xC3, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x00, 0xC0, 0x07, 0x00, 0xBD, 0x02, 0xE8, 0xB3, 0xE0, 0x3C, 0xAC, 0xC3, 0x03, 0x0F, 0x3C, 0x00, 0xC0, 0x03, 0x00, 0xFC, 0xFF, 0xFF,
|
||||
0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x0C, 0x1C, 0xB9, 0xD1, 0x6C, 0x73, 0x0E, 0x70, 0x34, 0x70, 0x0A, 0x68, 0xD3, 0xFF, 0x1F, 0xBC, 0x99, 0x8F, 0x8B, 0x8B, 0x7B, 0x9B, 0x79, 0xFF, 0xFF, 0xFF,
|
||||
0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x3F, 0x00, 0xC0, 0x0F, 0x00, 0xFC, 0x0F, 0x00, 0xFF, 0x03, 0xF0, 0xFF, 0x03, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x1F, 0xCB, 0x30, 0xC3, 0x3F, 0xC7, 0x00, 0x7E, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xC3, 0xFF, 0x3F, 0x0C, 0x00, 0xC3, 0xFC, 0x33, 0x0C, 0x24, 0xC3, 0xC0, 0x31, 0x0C, 0x06, 0xC3, 0x30, 0x30, 0x0C, 0x00, 0xC3, 0xFF, 0x3F,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0x30, 0x00, 0x03, 0xC3, 0x30, 0x30, 0x3F, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0xFF, 0xFF, 0xFF, 0x0C, 0x0C, 0xC3, 0xC0, 0x00, 0x0C, 0xFC, 0xFF,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0xFC, 0x0F, 0xC0, 0xFF, 0x00, 0xFC, 0x0F, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x3C, 0x00, 0xC0, 0x03, 0xF0, 0x3F, 0x00, 0xFF, 0x03, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x02, 0xFF, 0x3F, 0x8E, 0xCB, 0xBE, 0x99, 0xFF, 0x8B, 0xFF, 0x9B, 0xF9, 0x8E, 0xCB, 0xF2, 0xFF, 0x03, 0xFE, 0x02, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
|
||||
0x03, 0x00, 0x70, 0x78, 0x38, 0x0C, 0xC3, 0x30, 0xEE, 0x1D,
|
||||
0x03, 0x00, 0x40, 0xB7, 0xCB, 0x30, 0x0C, 0xC3, 0xD2, 0xD2,
|
||||
0x05, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x4C, 0x33, 0xCC, 0x30, 0xC7, 0xF4, 0x01, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xF0, 0x90, 0x03, 0x0C, 0x30, 0xF4, 0x02, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x08, 0x03, 0x06, 0x06, 0x06, 0xFC, 0x03, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x08, 0x83, 0x0B, 0x30, 0xC2, 0xF4, 0x01, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x60, 0x63, 0xCC, 0x3F, 0xC0, 0x00, 0x03, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x0C, 0xF0, 0x07, 0x34, 0xC1, 0xF8, 0x01, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x0C, 0xF1, 0xC2, 0x34, 0xC3, 0xF4, 0x01, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x03, 0x06, 0x06, 0x0C, 0x30, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x0C, 0xD3, 0xC7, 0x34, 0xC3, 0xF4, 0x01, 0x00, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x0C, 0x63, 0x0C, 0x3E, 0xC0, 0xF8, 0x01, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
||||
0x03, 0x00, 0x00, 0x0C, 0xCF, 0xF3, 0x3C, 0xCF, 0x33, 0x00,
|
||||
0x03, 0x00, 0x00, 0xC0, 0x3C, 0xCF, 0xF3, 0x3C, 0x0F, 0x03,
|
||||
0x05, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x03, 0x30, 0xC0, 0x0F, 0x30, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0xD0, 0x7F, 0x40, 0xFF, 0x1F, 0xFC, 0xFF, 0x43, 0xFF, 0x1F, 0x40, 0x15, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x06, 0x90, 0x91, 0x01, 0x06, 0x24, 0x30, 0x90, 0x1B, 0x46, 0x6E, 0x96, 0xB9, 0x91, 0xE4, 0x06, 0x0C, 0x18, 0x90, 0x40, 0x46, 0x06, 0x90, 0x1B,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x02, 0xC2, 0xAB, 0xAA, 0x3E, 0x20, 0xE0, 0xAB, 0xAA, 0x3E, 0x02, 0xC2, 0xFF, 0xFF, 0x0F, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0xC0, 0x30, 0x00, 0x0C, 0x03, 0xF0, 0xFF, 0x00, 0xFE, 0x0B, 0xD0, 0x7F, 0x00, 0xA4, 0x01, 0x00, 0x0A, 0x00, 0xA0, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x81, 0x24, 0x10, 0x85, 0x00, 0x20, 0x66, 0x40, 0x15, 0x45, 0x62, 0x90, 0x4D, 0xD0, 0xF1, 0x23, 0x01, 0xFD, 0x41, 0x41, 0x07, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xA0, 0x00, 0x40, 0x1F, 0x00, 0xF8, 0x02, 0xD0, 0x7F, 0x00, 0xFE, 0x0B, 0xF0, 0xEF, 0x00, 0xFF, 0x0D, 0xD0, 0x77, 0x00, 0xF4, 0x01,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3C, 0x00, 0xD4, 0x01, 0xD0, 0x06, 0x40, 0x7F, 0x00, 0xFD, 0x01, 0xF4, 0x07, 0xD0, 0x1F, 0x00, 0x7F, 0x00, 0xD0, 0x01, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x15, 0x00, 0xFE, 0x0B, 0x88, 0x2F, 0x52, 0xF0, 0x50, 0x01, 0x0A, 0xD4, 0xAF, 0x7F, 0xFD, 0xF5, 0xC7, 0x0B, 0x3E, 0x70, 0xD0, 0x00, 0xA8, 0x02,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2F, 0x80, 0x5F, 0x2F, 0x0C, 0x00, 0xC3, 0x00, 0x30, 0x0C, 0x00, 0xC3, 0x01, 0x34, 0x34, 0xC0, 0x01, 0x07, 0x0D, 0xD0, 0x75, 0x00, 0xF4, 0x01,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xF4, 0x01, 0xC0, 0x3F, 0x00, 0xF0, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0xE0, 0xEF, 0x00, 0xBB, 0x0B, 0xA0, 0xAA, 0x00, 0xAA, 0x0A, 0x80, 0x19, 0x00, 0x64, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x2D, 0x80, 0xE7, 0x0B, 0xBE, 0xF8, 0xFA, 0x02, 0xFE, 0x0B, 0x80, 0x2F, 0x00, 0x50, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xF8, 0x02, 0xE0, 0xBF, 0x80, 0xAF, 0x2F, 0xBE, 0xE0, 0xDB, 0x02, 0x78, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xA0, 0x00, 0x40, 0x1F, 0x50, 0xFE, 0x5B, 0xFD, 0xFF, 0x47, 0xFF, 0x1F, 0xE0, 0xBF, 0x00, 0xFE, 0x0B, 0xF0, 0xF5, 0x40, 0x01, 0x14,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1A, 0x00, 0x09, 0x06, 0x20, 0x80, 0x00, 0x02, 0x08, 0xFC, 0xFF, 0xC3, 0x00, 0x30, 0x0C, 0x00, 0xC3, 0x00, 0x30, 0x0C, 0x00, 0xC3, 0xFF, 0x3F,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x0A, 0xF0, 0xFF, 0x00, 0xAA, 0x0A, 0xF0, 0xFF, 0x00, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x02, 0xFF, 0x3F, 0xFE, 0xDF, 0xFE, 0x1F, 0xFE, 0x1D, 0xFE, 0x12, 0xFE, 0x2E, 0xFE, 0xF2, 0xFE, 0x03, 0xFE, 0x02, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x31, 0x00, 0x30, 0x01, 0x40, 0x34, 0x00, 0xCC, 0x00, 0x00, 0x0A, 0x00, 0xF8, 0x02, 0xE0, 0xBF, 0x80, 0xFF, 0x2F, 0xFE, 0xFF, 0xFB, 0xFF, 0xFF,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x2F, 0xFC, 0xFF, 0xC3, 0x07, 0x3D, 0x3C, 0xC0, 0xC3, 0x03, 0x3C, 0x7C, 0xD0, 0xC3, 0xFF, 0x3F, 0xF8, 0xFF, 0x02, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x00, 0xC0, 0xF3, 0x3C, 0x3C, 0xCF, 0x03, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x91, 0xE3, 0x46, 0x2E, 0x1B, 0xB9, 0x61, 0xE4, 0x06, 0x91, 0x1B, 0x41, 0x6E, 0x24, 0xB9, 0x91, 0xE3, 0x46, 0x2E, 0x1B, 0xB9, 0x01, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x0C, 0xC0, 0x23, 0x00, 0x80, 0x08, 0x00, 0x20, 0x0F, 0xC0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x2F, 0xC0, 0x01, 0x0D, 0x06, 0x40, 0x32, 0x00, 0x30, 0x03, 0x00, 0x33, 0x00, 0x30, 0x06, 0x40, 0xC2, 0x01, 0x0D, 0xE0, 0x2F, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x23, 0x80, 0x32, 0x0A, 0x0D, 0xC3, 0xD1, 0x10, 0x1C, 0x0D, 0xC0, 0x81, 0x02, 0x0A, 0xE0, 0x2F, 0x00, 0x54, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x03, 0xB0, 0xE0, 0x00, 0x03, 0x0C, 0x30, 0xC0, 0x00, 0x0B, 0x0E, 0xC0, 0x3F, 0x00, 0xAC, 0x03, 0xC0, 0x3A, 0x00, 0xAC, 0x03,
|
||||
0x05, 0x00, 0x00, 0xF0, 0xC6, 0x1B, 0x6F, 0xBC, 0xF1, 0xC6, 0x1B, 0x6F, 0xBC, 0xF1, 0x06, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x6F, 0xE4, 0x6F, 0xE4, 0x6F, 0xE4, 0x6F, 0xE4, 0x6F, 0xE4, 0x6F, 0xE4, 0x6F, 0xE4, 0x6F, 0xE4, 0x6F, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3E, 0x00, 0xF9, 0x00, 0xE4, 0x03, 0x90, 0x0F, 0x40, 0x3E, 0x00, 0xF9, 0x00, 0xE4, 0x03, 0x90, 0x0F, 0x40, 0x3E, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0xFF, 0x03, 0xF0, 0x3F, 0x00, 0xFF, 0x03, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x82, 0xE0, 0xBA, 0x2E, 0x08, 0x82, 0x80, 0x20, 0x08, 0xAE, 0xEB, 0x82, 0x20, 0x08, 0x08, 0x82, 0xE0, 0xBA, 0x2E, 0x08, 0x82, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x30, 0xFC, 0x00, 0x43, 0x07, 0xFC, 0x20, 0x40, 0x07, 0x30, 0x20, 0x00, 0x03, 0x00, 0xFC, 0x00, 0x40, 0x07, 0x00, 0x20,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xC0, 0x20, 0x1D, 0x20, 0x61, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x84, 0x01, 0x24, 0xB4, 0xF1, 0x01, 0xFE, 0x0F, 0xD0, 0x0F, 0x00, 0xFC,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x90, 0x1A, 0x40, 0xFE, 0x06, 0xE4, 0x6F, 0x40, 0xFE, 0x06, 0x90, 0x1A, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x81, 0x88, 0x88, 0x58, 0x55, 0x55, 0xF5, 0x0F, 0x40, 0x55, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x64, 0x00, 0xA5, 0x6B, 0x01, 0x64, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xFF, 0x86, 0xC0, 0x00, 0x2C, 0x40, 0xFE, 0x0B, 0xE4, 0xBF, 0x0C, 0xC0, 0xF2, 0x6F, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xF4, 0x01, 0xC0, 0x30, 0x00, 0x0D, 0x07, 0xF0, 0xF0, 0x40, 0x5F, 0x1F, 0xFC, 0xFA, 0xD3, 0xFF, 0x7F, 0xFF, 0xF0, 0xDF, 0xFF, 0x7F,
|
||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x1E, 0x00, 0x80, 0x07, 0x00, 0xE0, 0x01, 0x00, 0x78, 0x60, 0x00, 0x24, 0x98, 0x01, 0x80, 0x42, 0x06, 0x00, 0x00, 0x19, 0x00, 0x00, 0x04,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7F, 0x00, 0x5C, 0x0D, 0xC0, 0xC1, 0x00, 0x1C, 0x0C, 0x40, 0xFF, 0x01, 0x00, 0x74, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x68, 0x00, 0xA2, 0x02, 0x80, 0x0A, 0x00, 0x25, 0x00, 0x44, 0x08, 0x10, 0x01, 0x40, 0x04, 0x00, 0x14, 0x00, 0x10, 0x00, 0x00,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0xFA, 0x00, 0x5B, 0x0E, 0x60, 0x90, 0x00, 0x01, 0x04,
|
||||
0x06, 0x00, 0x00, 0x00, 0xCD, 0xF1, 0x3F, 0xFD, 0x41, 0x06, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0xDC, 0xC0, 0x0C, 0x99, 0x31, 0x30, 0x89, 0x41, 0x07,
|
||||
0x0A, 0x00, 0x00, 0x00, 0x74, 0x00, 0xD0, 0x1F, 0x40, 0x8B, 0x07, 0x3D, 0xF3, 0xF1, 0x3F, 0x3F, 0xFD, 0xF8, 0x41, 0xFF, 0x07, 0xD0, 0x1C, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
extern const unsigned short font_ptrs[] = {
|
||||
0x0000, 0x0010, 0x0020, 0x0030, 0x0040, 0x0050, 0x0060, 0x0070,
|
||||
0x0080, 0x0090, 0x00A0, 0x00B0, 0x00C0, 0x00D0, 0x00E0, 0x00F0,
|
||||
0x0100, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170,
|
||||
0x0180, 0x0190, 0x01A0, 0x01B0, 0x01C0, 0x01D0, 0x01E0, 0x01F0,
|
||||
0x0200, 0x0210, 0x021A, 0x022A, 0x023D, 0x0250, 0x0266, 0x0279,
|
||||
0x0283, 0x0290, 0x029D, 0x02B0, 0x02C3, 0x02D0, 0x02E0, 0x02EA,
|
||||
0x02FD, 0x0310, 0x0320, 0x0333, 0x0346, 0x0359, 0x036C, 0x037F,
|
||||
0x0392, 0x03A5, 0x03B8, 0x03C2, 0x03CF, 0x03E2, 0x03F5, 0x0408,
|
||||
0x041B, 0x0434, 0x0447, 0x045A, 0x046D, 0x0480, 0x0493, 0x04A6,
|
||||
0x04B9, 0x04CC, 0x04D9, 0x04EC, 0x0502, 0x0515, 0x052E, 0x0544,
|
||||
0x055A, 0x056D, 0x0583, 0x0596, 0x05A9, 0x05BC, 0x05D2, 0x05E5,
|
||||
0x05FE, 0x0614, 0x0627, 0x063D, 0x064A, 0x065A, 0x0667, 0x0674,
|
||||
0x0687, 0x0691, 0x06A1, 0x06B1, 0x06C1, 0x06D1, 0x06E1, 0x06EE,
|
||||
0x06FE, 0x070E, 0x071B, 0x0728, 0x0738, 0x0745, 0x0758, 0x0768,
|
||||
0x0778, 0x0788, 0x0798, 0x07A5, 0x07B5, 0x07C2, 0x07D2, 0x07E2,
|
||||
0x07F5, 0x0805, 0x0815, 0x0825, 0x0832, 0x0839, 0x0846,
|
||||
|
||||
0x0859, 0x0869, 0x0873, 0x0886, 0x0899, 0x08AC, 0x08BF, 0x08C6,
|
||||
0x08D6, 0x08E9, 0x0902, 0x0912, 0x0925, 0x0938, 0x0939, 0x0952,
|
||||
0x0962, 0x096F, 0x0982, 0x098F, 0x099C, 0x09AC, 0x09BF, 0x09D5,
|
||||
0x09E5, 0x09F5, 0x09FF, 0x0A0F, 0x0A25, 0x0A3B, 0x0A51, 0x0A67,
|
||||
0x0A7A, 0x0A8D, 0x0AA0, 0x0AB3, 0x0AC6, 0x0AD9, 0x0AEC, 0x0B08,
|
||||
0x0B1B, 0x0B2E, 0x0B41, 0x0B54, 0x0B67, 0x0B74, 0x0B81, 0x0B8E,
|
||||
0x0B9B, 0x0BB1, 0x0BC7, 0x0BDD, 0x0BF3, 0x0C09, 0x0C1F, 0x0C35,
|
||||
0x0C48, 0x0C5E, 0x0C74, 0x0C8A, 0x0CA0, 0x0CB6, 0x0CC9, 0x0CDC,
|
||||
0x0CEF, 0x0CFF, 0x0D0F, 0x0D1F, 0x0D2F, 0x0D3F, 0x0D4F, 0x0D68,
|
||||
0x0D78, 0x0D88, 0x0D98, 0x0DA8, 0x0DB8, 0x0DC5, 0x0DD2, 0x0DDF,
|
||||
0x0DEC, 0x0DFC, 0x0E0C, 0x0E1C, 0x0E2C, 0x0E3C, 0x0E4C, 0x0E5C,
|
||||
0x0E6F, 0x0E7F, 0x0E8F, 0x0E9F, 0x0EAF, 0x0EBF, 0x0ECF, 0x0EDF,
|
||||
|
||||
0x0EEF, 0x0F02, 0x0F15, 0x0F2E, 0x0F41, 0x0F54, 0x0F67, 0x0F74,
|
||||
0x0F81, 0x0F94, 0x0FB3, 0x0FD2, 0x0FEB, 0x0FFE, 0x1014, 0x1027,
|
||||
0x103A, 0x104D, 0x1060, 0x1073, 0x1086, 0x109F, 0x10B2, 0x10CB,
|
||||
0x10DE, 0x10F4, 0x110A, 0x111D, 0x1130, 0x1149, 0x115C, 0x1172,
|
||||
0x1185, 0x1198, 0x11AB, 0x11BE, 0x11D1, 0x11EA, 0x1200, 0x1216,
|
||||
0x1229, 0x1242, 0x125E, 0x1277, 0x1290, 0x12A3, 0x12B6, 0x12D2,
|
||||
0x12E5, 0x12F5, 0x1305, 0x1315, 0x1322, 0x1332, 0x1342, 0x1355,
|
||||
0x1365, 0x1375, 0x1385, 0x1395, 0x13A5, 0x13B8, 0x13C8, 0x13D8,
|
||||
0x13E8, 0x13F8, 0x1408, 0x141B, 0x142B, 0x143E, 0x144E, 0x1461,
|
||||
0x1471, 0x1484, 0x149A, 0x14AD, 0x14C3, 0x14D3, 0x14E3, 0x14F9,
|
||||
0x1509, 0x1519, 0x1529, 0x153C, 0x1549, 0x1559, 0x1569, 0x1576,
|
||||
0x1583, 0x1590, 0x15A9, 0x15C2, 0x15D5, 0x15E5, 0x15F5, 0x1605,
|
||||
0x1615, 0x1634, 0x1647, 0x1660, 0x1673, 0x168C, 0x16A2, 0x16B5,
|
||||
0x16C8, 0x16E1, 0x16FA, 0x1713, 0x1726, 0x1745, 0x175E, 0x1771,
|
||||
0x1781, 0x179A, 0x17AD, 0x17C3, 0x17D3, 0x17EC, 0x1802, 0x181B,
|
||||
0x1831, 0x1856, 0x1875, 0x188E, 0x18A1, 0x18C0, 0x18D3, 0x18F2,
|
||||
0x1905, 0x1918, 0x1928, 0x193B, 0x194E, 0x1961, 0x196B, 0x1975,
|
||||
0x1988, 0x19AD, 0x19D2, 0x19EB, 0x19FE, 0x1A14, 0x1A27, 0x1A3A,
|
||||
0x1A4A, 0x1A5D, 0x1A6A, 0x1A80, 0x1A90, 0x1AA3, 0x1AB3, 0x1ACF,
|
||||
0x1AE5, 0x1AF8, 0x1B08, 0x1B1E, 0x1B31, 0x1B44, 0x1B57, 0x1B6D,
|
||||
0x1B80, 0x1B99, 0x1BAC, 0x1BC2, 0x1BD5, 0x1BF1, 0x1C07, 0x1C26,
|
||||
0x1C3F, 0x1C58, 0x1C6B, 0x1C7E, 0x1C8E, 0x1CA1, 0x1CB7, 0x1CCA,
|
||||
0x1CDA, 0x1CED, 0x1CFD, 0x1D16, 0x1D29, 0x1D45, 0x1D5B, 0x1D71,
|
||||
0x1D84, 0x1D97, 0x1DAA, 0x1DBD, 0x1DCD, 0x1DE6, 0x1DFC, 0x1E15,
|
||||
0x1E2B, 0x1E38, 0x1E51, 0x1E64, 0x1E77, 0x1E87, 0x1E9D, 0x1EB0,
|
||||
0x1EC3, 0x1ED3, 0x1EE9, 0x1EFC, 0x1F0F, 0x1F1F, 0x1F3B, 0x1F51,
|
||||
0x1F5E, 0x1F71, 0x1F81, 0x1F94, 0x1FA4, 0x1FC0, 0x1FDC, 0x1FEF,
|
||||
0x1FFF, 0x2012, 0x2022, 0x2035, 0x2045, 0x205E, 0x2071, 0x2084,
|
||||
0x2094, 0x20A7, 0x20B7, 0x20CD, 0x20DD, 0x20F3, 0x2103, 0x2119,
|
||||
0x2129, 0x213F, 0x214F, 0x2165, 0x2175, 0x2188, 0x2198, 0x21AB,
|
||||
0x21BB, 0x21CE, 0x21DE, 0x21F1, 0x2201, 0x2214, 0x2224, 0x2237,
|
||||
0x2244, 0x225D, 0x2273, 0x2289, 0x2299, 0x22B2, 0x22C5, 0x22DB,
|
||||
|
||||
0x22EB, 0x2304, 0x2329, 0x234E, 0x236D, 0x2392, 0x23B1, 0x23D0,
|
||||
0x23EF, 0x240E, 0x242D, 0x244C, 0x246B, 0x2490, 0x24A3, 0x24C2,
|
||||
0x24E1, 0x2500, 0x251F, 0x2538, 0x255A, 0x257C, 0x25A1, 0x25C6,
|
||||
0x25E2, 0x25FE, 0x261A, 0x2636, 0x2652, 0x266E, 0x268A, 0x26A6,
|
||||
0x26C2, 0x26DE, 0x26FA, 0x2719, 0x273B, 0x275D, 0x2776, 0x2795,
|
||||
0x27B4, 0x27D3, 0x27F2, 0x280E, 0x281B, 0x2825, 0x282F, 0x283F,
|
||||
0x284F, 0x285F, 0x286F, 0x287F, 0x288F, 0x289F, 0x28AF, 0x28BF,
|
||||
0x28CF, 0x28DF, 0x28EC, 0x28F6, 0x2900, 0x2910, 0x2923, 0x2936,
|
||||
0x2955, 0x2974, 0x2993, 0x29B2, 0x29D1, 0x29F0, 0x2A0F, 0x2A2E,
|
||||
0x2A4D, 0x2A6C, 0x2A8B, 0x2AAA, 0x2AC9, 0x2AE8, 0x2B07, 0x2B26,
|
||||
0x2B42, 0x2B61, 0x2B80, 0x2B9F, 0x2BBE, 0x2BDD, 0x2BFC, 0x2C1B,
|
||||
0x2C3A, 0x2C4A, 0x2C63, 0x2C7F, 0x2C9E, 0x2CBD, 0x2CDC, 0x2CFB,
|
||||
0x2D1A, 0x2D3C, 0x2D5B, 0x2D7A, 0x2D99, 0x2DBE, 0x2DDD, 0x2DFC,
|
||||
0x2E1B, 0x2E2E, 0x2E3B, 0x2E4E, 0x2E61, 0x2E74, 0x2E87, 0x2E9A,
|
||||
0x2EAD, 0x2EC0, 0x2ED3, 0x2EE6, 0x2EF9, 0x2F0C, 0x2F1F, 0x2F32,
|
||||
0x2F45, 0x2F58, 0x2F6B, 0x2F7E, 0x2F91, 0x2FA4, 0x2FB7, 0x2FCA,
|
||||
|
||||
0x2FDD,
|
||||
};
|
||||
extern const unsigned int font_ranges[][2] = {
|
||||
{ 0x000000, 0x00007E },
|
||||
{ 0x0000A0, 0x0000FF },
|
||||
{ 0x000400, 0x0004FF },
|
||||
{ 0x00E000, 0x00E07F },
|
||||
{ 0x00FFFD, 0x00FFFD },
|
||||
{ 0, 0 },
|
||||
};
|
||||
#endif
|
11
data/font.h
Normal file
@ -0,0 +1,11 @@
|
||||
#pragma once
|
||||
#define FONT_H 12
|
||||
#ifndef FONTEDITOR
|
||||
extern const unsigned char font_data[];
|
||||
extern const unsigned short font_ptrs[];
|
||||
extern const unsigned int font_ranges[][2];
|
||||
#else
|
||||
extern unsigned char *font_data;
|
||||
extern unsigned short *font_ptrs;
|
||||
extern unsigned int (*font_ranges)[2];
|
||||
#endif
|
23
data/hmap.cpp
Normal file
24
data/hmap.h
Normal file
@ -0,0 +1,24 @@
|
||||
/**
|
||||
* Powder Toy - Heatmap Data
|
||||
*
|
||||
* Copyright (c) 2010 Simon Robertshaw
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
|
||||
*/
|
||||
#pragma once
|
||||
extern const unsigned char color_data[];
|
||||
//extern const char plasma_data[];
|
||||
extern const unsigned char hflm_data[];
|
||||
extern const unsigned char firw_data[];
|
4118
data/icon.cpp
Normal file
22
data/icon.h
Normal file
@ -0,0 +1,22 @@
|
||||
/**
|
||||
* Powder Toy - Main source
|
||||
*
|
||||
* Copyright (c) 2008 - 2010 Stanislaw Skowronek.
|
||||
* Copyright (c) 2010 Simon Robertshaw
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
|
||||
*/
|
||||
#pragma once
|
||||
extern const unsigned char app_icon[];
|
310
data/icondoc.h
Normal file
@ -0,0 +1,310 @@
|
||||
/**
|
||||
* Powder Toy - Main source
|
||||
*
|
||||
* Copyright (c) 2008 - 2010 Stanislaw Skowronek.
|
||||
* Copyright (c) 2010 Simon Robertshaw
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
|
||||
*/
|
||||
#pragma once
|
||||
const unsigned char icon_doc_32_png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x08, 0x06, 0x00, 0x00, 0x00, 0x73, 0x7a, 0x7a,
|
||||
0xf4, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47, 0x42, 0x00, 0xae, 0xce, 0x1c, 0xe9, 0x00, 0x00,
|
||||
0x00, 0x06, 0x62, 0x4b, 0x47, 0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, 0xbd, 0xa7, 0x93,
|
||||
0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00, 0x0b, 0x13,
|
||||
0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 0x07, 0xdb, 0x04,
|
||||
0x06, 0x11, 0x21, 0x0c, 0xfc, 0x0b, 0x2f, 0xdf, 0x00, 0x00, 0x04, 0x65, 0x49, 0x44, 0x41, 0x54,
|
||||
0x58, 0xc3, 0xb5, 0x96, 0x7f, 0x4c, 0xd4, 0x65, 0x1c, 0xc7, 0x5f, 0xcf, 0x73, 0xdf, 0xe3, 0x7e,
|
||||
0x90, 0x8b, 0x98, 0xb8, 0x36, 0x12, 0xb8, 0x38, 0x69, 0x03, 0x4c, 0x64, 0xec, 0x6a, 0xa2, 0xd3,
|
||||
0xb5, 0x74, 0x78, 0x4c, 0x42, 0x33, 0x51, 0xda, 0x5c, 0xe3, 0x97, 0x72, 0x79, 0xcc, 0x5c, 0xfd,
|
||||
0x53, 0xcb, 0x50, 0x69, 0x93, 0xda, 0x9a, 0x3a, 0x0d, 0x0d, 0x99, 0xf3, 0x9f, 0x3b, 0x98, 0x89,
|
||||
0x72, 0x14, 0x64, 0xb2, 0x62, 0x2b, 0x56, 0xad, 0x56, 0x20, 0xbf, 0x06, 0x3a, 0xe1, 0x1c, 0x8b,
|
||||
0xed, 0x86, 0x89, 0x77, 0x96, 0x7f, 0x30, 0xf6, 0xed, 0x0f, 0xb9, 0x1b, 0xe6, 0x1d, 0x7c, 0x39,
|
||||
0xe8, 0xb3, 0x3d, 0x7b, 0xbe, 0xcf, 0xb3, 0xef, 0xf3, 0x7c, 0x5f, 0xcf, 0xfb, 0xf3, 0xe3, 0xf9,
|
||||
0x0a, 0x9e, 0xb4, 0xd5, 0x40, 0x0a, 0x0b, 0x37, 0x3f, 0x30, 0x0a, 0x78, 0x17, 0xb2, 0x48, 0x09,
|
||||
0x33, 0x97, 0x52, 0x52, 0x52, 0xe2, 0x11, 0x42, 0xa0, 0xaa, 0x2a, 0x42, 0x08, 0x80, 0xd0, 0xb3,
|
||||
0xaa, 0xaa, 0xa1, 0x17, 0x55, 0x55, 0x45, 0x55, 0x55, 0xcc, 0x66, 0x33, 0x05, 0x05, 0x05, 0x3e,
|
||||
0xa7, 0xd3, 0x59, 0x73, 0xf3, 0xe6, 0xcd, 0xd6, 0x19, 0x90, 0xa8, 0x01, 0xa4, 0x10, 0x82, 0xce,
|
||||
0xce, 0x4e, 0x4d, 0x1b, 0x5c, 0xe8, 0xed, 0x61, 0x6f, 0x7a, 0x26, 0x89, 0x89, 0x89, 0x2b, 0xda,
|
||||
0xdb, 0xdb, 0x3f, 0xcd, 0xcb, 0xcb, 0xd3, 0xdf, 0xba, 0x75, 0xab, 0x59, 0x2b, 0x84, 0x0c, 0x33,
|
||||
0xa7, 0x9f, 0x7d, 0xca, 0xf9, 0xec, 0xfc, 0xa9, 0xd3, 0x08, 0x21, 0x68, 0x68, 0x68, 0xc0, 0xe7,
|
||||
0xf3, 0x19, 0x3a, 0x3a, 0x3a, 0x6a, 0xad, 0x56, 0xeb, 0x0e, 0xad, 0x6e, 0x94, 0x91, 0x14, 0xd0,
|
||||
0xd2, 0x00, 0xba, 0xea, 0xeb, 0x11, 0x42, 0x30, 0x35, 0x35, 0x45, 0x57, 0x57, 0x17, 0x89, 0x89,
|
||||
0x89, 0x4a, 0x5b, 0x5b, 0x5b, 0xad, 0xc5, 0x62, 0x79, 0x5d, 0x0b, 0x84, 0x24, 0x4a, 0xeb, 0x77,
|
||||
0x55, 0x86, 0x20, 0x84, 0x10, 0x48, 0x29, 0x19, 0x1e, 0x1e, 0x46, 0x4a, 0x49, 0x52, 0x52, 0x92,
|
||||
0xd2, 0xda, 0xda, 0x7a, 0x5c, 0x0b, 0x44, 0xd4, 0x00, 0x19, 0xc5, 0x75, 0xa1, 0x8f, 0x03, 0x48,
|
||||
0x29, 0x19, 0x1f, 0x1f, 0x0f, 0xc1, 0x58, 0x2c, 0x16, 0xa5, 0xb9, 0xb9, 0x79, 0x5e, 0x25, 0xa2,
|
||||
0x06, 0x98, 0x6d, 0x41, 0x97, 0x04, 0x01, 0x14, 0x45, 0x41, 0x51, 0x14, 0x52, 0x53, 0x53, 0x75,
|
||||
0x4d, 0x4d, 0x4d, 0xb5, 0xc9, 0xc9, 0xc9, 0x11, 0x21, 0x16, 0x05, 0x30, 0xe0, 0x7e, 0xfb, 0x31,
|
||||
0x08, 0x9f, 0xcf, 0x47, 0x42, 0x42, 0x02, 0xf1, 0xf1, 0xf1, 0x58, 0xad, 0x56, 0xb2, 0xb3, 0xb3,
|
||||
0x71, 0x3a, 0x9d, 0x3a, 0x87, 0xc3, 0x71, 0x24, 0x21, 0x21, 0xe1, 0x9d, 0x70, 0x10, 0x32, 0xd2,
|
||||
0x89, 0xe6, 0x8d, 0x01, 0xb7, 0x83, 0xf4, 0x3d, 0x67, 0x1e, 0x5b, 0xa3, 0xd7, 0xeb, 0x31, 0x9b,
|
||||
0xcd, 0xc4, 0xc6, 0xc6, 0x32, 0x3d, 0x3d, 0x4d, 0x20, 0x10, 0x60, 0x64, 0x64, 0x84, 0x93, 0x27,
|
||||
0x4f, 0xc6, 0x66, 0x66, 0x66, 0x96, 0x6a, 0x06, 0x98, 0x2d, 0x6b, 0xb8, 0x76, 0x65, 0x70, 0x90,
|
||||
0xcc, 0xe2, 0xba, 0xd0, 0x78, 0xc0, 0xed, 0x08, 0xf9, 0x3e, 0x26, 0x26, 0x06, 0xa3, 0xd1, 0x88,
|
||||
0xc1, 0x60, 0xc0, 0x64, 0x32, 0x61, 0x30, 0x18, 0x1e, 0x15, 0x1c, 0x45, 0x89, 0x05, 0xe2, 0x16,
|
||||
0xed, 0x82, 0x6a, 0xcf, 0x55, 0x76, 0xa4, 0xa7, 0x87, 0xc6, 0x6f, 0x1c, 0x3b, 0xfa, 0x44, 0x40,
|
||||
0x06, 0x61, 0xa4, 0x94, 0xe8, 0x74, 0x3a, 0xf4, 0x7a, 0x3d, 0x26, 0x93, 0x09, 0x40, 0xa7, 0xa5,
|
||||
0x12, 0x22, 0x65, 0x64, 0xae, 0xea, 0x82, 0xc2, 0xc7, 0xc6, 0x97, 0x3e, 0x3c, 0xfc, 0x84, 0x72,
|
||||
0xb3, 0x4b, 0xb8, 0x94, 0x12, 0x55, 0x55, 0x31, 0x1a, 0x8d, 0x61, 0x0f, 0xac, 0xf0, 0x3f, 0xd8,
|
||||
0x7f, 0x21, 0x66, 0x5c, 0x00, 0x20, 0x16, 0x1d, 0x03, 0x59, 0x7b, 0x76, 0xa3, 0xb5, 0x52, 0x06,
|
||||
0x9b, 0x94, 0x32, 0x08, 0xc0, 0xa2, 0xb3, 0xa0, 0xa7, 0xb1, 0x29, 0xf4, 0x5c, 0x7a, 0xea, 0x04,
|
||||
0xfd, 0x2e, 0x07, 0x73, 0xed, 0x11, 0xec, 0x75, 0x3a, 0x9d, 0xe6, 0xdb, 0x10, 0xad, 0x97, 0x51,
|
||||
0x43, 0xd5, 0x41, 0x1a, 0xe6, 0x71, 0x45, 0xd0, 0x22, 0x01, 0x44, 0x5d, 0x07, 0xa2, 0xa9, 0x94,
|
||||
0x0b, 0xaa, 0x84, 0x5a, 0xfd, 0xbb, 0xab, 0xe6, 0x98, 0xa6, 0x5b, 0x33, 0x52, 0x66, 0x45, 0xad,
|
||||
0x40, 0xb5, 0xe7, 0x2a, 0xa5, 0xa7, 0x4e, 0x60, 0x2f, 0x2c, 0x5c, 0x7a, 0x05, 0xe6, 0x02, 0x08,
|
||||
0x06, 0xdd, 0xd8, 0xa8, 0x97, 0x86, 0xaa, 0x83, 0xd8, 0x7a, 0xcf, 0x92, 0xb5, 0xbb, 0x48, 0x13,
|
||||
0x84, 0x66, 0x80, 0xb9, 0x82, 0x70, 0x5f, 0xe7, 0x14, 0x17, 0x7a, 0x7b, 0xe8, 0xfc, 0xe6, 0x1a,
|
||||
0xab, 0xf2, 0xed, 0x68, 0x0d, 0x97, 0x48, 0x7b, 0x2a, 0x0b, 0x91, 0xcc, 0xba, 0x75, 0x2b, 0x5d,
|
||||
0xf5, 0xe7, 0xe9, 0xaa, 0x3f, 0xcf, 0x85, 0x1b, 0x3d, 0x20, 0xa0, 0xb8, 0xe6, 0x63, 0xfe, 0x0e,
|
||||
0x04, 0xd8, 0x75, 0xec, 0x28, 0x97, 0x0e, 0x7f, 0xb4, 0x34, 0x0a, 0x44, 0x32, 0xcf, 0x5e, 0x0b,
|
||||
0xd5, 0x9e, 0x16, 0x06, 0xdc, 0x0e, 0x6c, 0x7d, 0xe7, 0x98, 0xbc, 0x37, 0x49, 0x4e, 0x6e, 0x2e,
|
||||
0x4f, 0x2d, 0x5b, 0x86, 0x7d, 0xfb, 0x76, 0xaa, 0x3d, 0x57, 0xb1, 0xda, 0xed, 0x54, 0x7b, 0x5a,
|
||||
0x34, 0xef, 0xa9, 0x09, 0x20, 0xe8, 0xe3, 0x8a, 0xef, 0xa7, 0x00, 0x95, 0xa1, 0x35, 0x07, 0xb8,
|
||||
0xfe, 0x5c, 0x11, 0x5b, 0xc6, 0x9a, 0x58, 0x99, 0x92, 0xc2, 0x2b, 0xf9, 0xf9, 0xd8, 0x7a, 0xcf,
|
||||
0xd2, 0xe2, 0x72, 0x03, 0x2a, 0x63, 0xa3, 0xa3, 0xac, 0xaf, 0x28, 0xd7, 0xa4, 0x80, 0xa2, 0x45,
|
||||
0xae, 0xee, 0xc6, 0x26, 0xd6, 0xee, 0x2e, 0xa2, 0xcc, 0xe9, 0xc4, 0x7b, 0xfb, 0x36, 0x69, 0xdd,
|
||||
0xa7, 0x39, 0xf7, 0xbb, 0x09, 0xef, 0x6a, 0x1b, 0x65, 0x0f, 0xae, 0x71, 0xc4, 0xfb, 0x2c, 0x5f,
|
||||
0xae, 0xd9, 0x42, 0x61, 0x31, 0xec, 0x7c, 0xf0, 0x2d, 0x30, 0xc4, 0x91, 0x95, 0x2b, 0x97, 0x46,
|
||||
0x81, 0x0d, 0xfb, 0x2a, 0x38, 0x74, 0xf1, 0x22, 0x55, 0x1f, 0xbc, 0x8f, 0xad, 0xef, 0x2c, 0x77,
|
||||
0xbc, 0x5e, 0xf6, 0x77, 0x4e, 0xb1, 0xaf, 0xa4, 0x14, 0x21, 0x04, 0xc3, 0x59, 0x07, 0x58, 0xb7,
|
||||
0x69, 0x23, 0x57, 0x5c, 0x6e, 0x9e, 0x8e, 0x7b, 0x06, 0x21, 0x1e, 0x05, 0xea, 0x56, 0x0d, 0xe9,
|
||||
0x39, 0x67, 0x1a, 0x0a, 0x21, 0xd8, 0x50, 0x51, 0x4e, 0xc0, 0xef, 0xa7, 0x2c, 0xe6, 0x17, 0x4a,
|
||||
0x5e, 0xcc, 0x22, 0xa3, 0xb8, 0x8e, 0xa1, 0xbe, 0x3e, 0x02, 0x81, 0x00, 0x3f, 0xfc, 0xf6, 0x2b,
|
||||
0xdf, 0xb5, 0xb5, 0xe1, 0xbd, 0x3b, 0x41, 0x5f, 0x77, 0x0f, 0x39, 0xb9, 0xeb, 0x38, 0x73, 0xbc,
|
||||
0x96, 0x8c, 0xe2, 0x3a, 0x6c, 0xeb, 0xd7, 0x73, 0x67, 0x64, 0x84, 0x55, 0xf9, 0x76, 0xec, 0xef,
|
||||
0xbd, 0x3b, 0x67, 0x5a, 0x47, 0x54, 0x20, 0xb7, 0xbc, 0x8c, 0x07, 0x7e, 0x3f, 0x69, 0x19, 0x19,
|
||||
0xbc, 0xe9, 0xf9, 0x8b, 0x7e, 0x57, 0x25, 0xcd, 0x03, 0x03, 0x6c, 0xde, 0xb6, 0x0d, 0x57, 0x41,
|
||||
0x3c, 0x83, 0x37, 0x7a, 0x71, 0xbf, 0xb6, 0x9c, 0x2d, 0x63, 0x8d, 0xe4, 0xbf, 0xba, 0x99, 0x43,
|
||||
0xcb, 0x87, 0x10, 0x42, 0xd0, 0xef, 0xaa, 0xc4, 0x7f, 0x7f, 0x92, 0xfb, 0x93, 0x93, 0x6c, 0xcc,
|
||||
0xcb, 0x23, 0xe0, 0xf7, 0xcf, 0x59, 0x09, 0x23, 0xfe, 0x0f, 0x7c, 0x51, 0xf8, 0x02, 0x8d, 0xe3,
|
||||
0x71, 0xdc, 0x9b, 0xb8, 0xcb, 0x8a, 0xac, 0x2c, 0xba, 0x9f, 0xdf, 0xc4, 0x1f, 0x1d, 0xd7, 0x11,
|
||||
0x42, 0xf0, 0xd9, 0xc4, 0x0a, 0xf6, 0xbf, 0xb5, 0x93, 0x31, 0x9d, 0x0e, 0xef, 0xf8, 0x9f, 0x74,
|
||||
0x7b, 0x5a, 0x90, 0xf9, 0x0e, 0x3e, 0xa9, 0x85, 0xcf, 0xbf, 0xfe, 0x0a, 0x23, 0x0f, 0xc9, 0xb1,
|
||||
0xbd, 0xc4, 0xda, 0xbb, 0x3f, 0xa2, 0xa6, 0xa6, 0xd1, 0x5d, 0xf2, 0x13, 0x6d, 0x97, 0x2f, 0x87,
|
||||
0x4f, 0xcf, 0x30, 0x73, 0x2f, 0x03, 0x99, 0x80, 0x69, 0x89, 0xff, 0x53, 0x1e, 0x02, 0x7d, 0xc0,
|
||||
0xcf, 0xf3, 0x01, 0x98, 0x81, 0x65, 0x33, 0xfd, 0x52, 0xda, 0x3f, 0x40, 0x60, 0xa6, 0x0f, 0xd9,
|
||||
0xbf, 0x2f, 0x89, 0x69, 0x46, 0x25, 0x68, 0x1c, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
|
||||
0x44, 0xae, 0x42, 0x60, 0x82
|
||||
};
|
||||
const unsigned char icon_doc_16_png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff,
|
||||
0x61, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47, 0x42, 0x00, 0xae, 0xce, 0x1c, 0xe9, 0x00, 0x00,
|
||||
0x00, 0x06, 0x62, 0x4b, 0x47, 0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, 0xbd, 0xa7, 0x93,
|
||||
0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00, 0x0b, 0x13,
|
||||
0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 0x07, 0xdb, 0x04,
|
||||
0x06, 0x11, 0x21, 0x22, 0x20, 0xdd, 0x22, 0x10, 0x00, 0x00, 0x01, 0x95, 0x49, 0x44, 0x41, 0x54,
|
||||
0x38, 0xcb, 0x95, 0x93, 0x3d, 0x4b, 0x82, 0x51, 0x14, 0xc7, 0x7f, 0xc7, 0x24, 0x4d, 0x7c, 0x96,
|
||||
0x96, 0x50, 0x48, 0x14, 0x8a, 0x86, 0x16, 0x23, 0x28, 0xea, 0x23, 0xd8, 0xd0, 0xcb, 0x20, 0x86,
|
||||
0x6b, 0x11, 0xb4, 0xd8, 0x10, 0x6d, 0x81, 0xbd, 0x7c, 0x02, 0x5b, 0xa2, 0x10, 0x47, 0x6b, 0x2a,
|
||||
0xa7, 0x1c, 0x0b, 0x24, 0xb3, 0xa9, 0xf7, 0xa1, 0x25, 0xb2, 0x20, 0xe4, 0x59, 0xad, 0xd0, 0xb2,
|
||||
0xdb, 0x50, 0x8f, 0x3c, 0xbe, 0x3c, 0x50, 0x07, 0x2e, 0xdc, 0x73, 0xef, 0x39, 0xff, 0xf3, 0x3b,
|
||||
0x87, 0x7b, 0x45, 0x29, 0x05, 0x80, 0x88, 0x0c, 0x02, 0x1a, 0x16, 0xa6, 0x94, 0x3a, 0x6b, 0x77,
|
||||
0x6e, 0x37, 0xed, 0xb5, 0x68, 0x34, 0x9a, 0x37, 0x1c, 0x8f, 0xcf, 0xc7, 0x4b, 0xb1, 0x08, 0x40,
|
||||
0xa9, 0x54, 0x42, 0x44, 0xc6, 0xda, 0x89, 0x98, 0x05, 0x04, 0xa0, 0x50, 0x28, 0x10, 0xcf, 0x1c,
|
||||
0x12, 0x9f, 0x9c, 0xaa, 0x5f, 0xf4, 0x0e, 0x05, 0xd1, 0x75, 0x3d, 0x2f, 0x22, 0xe3, 0x4a, 0xa9,
|
||||
0xbc, 0x59, 0xc0, 0x66, 0x76, 0x44, 0x04, 0xa0, 0x21, 0x19, 0xe0, 0xfe, 0x34, 0x8f, 0xcb, 0xe5,
|
||||
0x42, 0xd7, 0xf5, 0x53, 0x11, 0x19, 0xb3, 0x12, 0x10, 0x43, 0xa4, 0x79, 0x01, 0x38, 0x1c, 0x0e,
|
||||
0xb3, 0xc8, 0x78, 0xdb, 0x16, 0x8c, 0xe0, 0xe0, 0x6c, 0x84, 0x8b, 0xf4, 0x5e, 0x03, 0x99, 0xd7,
|
||||
0xeb, 0x05, 0x20, 0x10, 0x08, 0xd4, 0x8b, 0x35, 0x13, 0xd8, 0x8c, 0x8a, 0x97, 0x7b, 0xfb, 0xf5,
|
||||
0xea, 0xf3, 0x5b, 0x09, 0x1e, 0x0e, 0x96, 0xd1, 0x34, 0x0d, 0x4d, 0xd3, 0xf0, 0xfb, 0xfd, 0x0d,
|
||||
0x79, 0x2d, 0x04, 0x06, 0x85, 0x61, 0xc9, 0xd8, 0x12, 0x49, 0xc0, 0x6e, 0xff, 0x09, 0x75, 0x3a,
|
||||
0x9d, 0x96, 0x04, 0xd2, 0x9c, 0xdc, 0xce, 0x7e, 0x63, 0xe4, 0x5f, 0x43, 0x0c, 0x6f, 0xac, 0xd3,
|
||||
0x44, 0xf7, 0x37, 0x82, 0x78, 0x26, 0xc3, 0x5c, 0x22, 0x41, 0x68, 0x7a, 0xfa, 0x4f, 0x04, 0xf5,
|
||||
0x21, 0xde, 0xa5, 0x17, 0x11, 0x11, 0x9e, 0x8b, 0x8f, 0x24, 0x63, 0x31, 0x46, 0x6f, 0xb6, 0x19,
|
||||
0x9a, 0x8d, 0x98, 0x29, 0x6c, 0x96, 0x2d, 0x00, 0x2c, 0x1c, 0x7f, 0x92, 0xba, 0xbe, 0xe2, 0x24,
|
||||
0x9b, 0xa5, 0x7f, 0x22, 0x64, 0xbe, 0x6a, 0x89, 0x6d, 0x79, 0xca, 0x7d, 0xa1, 0x10, 0xb9, 0x9d,
|
||||
0x5d, 0x72, 0x3b, 0xbb, 0xa4, 0xae, 0xaf, 0x00, 0x88, 0x6e, 0x6e, 0xf2, 0x5a, 0x2e, 0x13, 0x5e,
|
||||
0x5f, 0xe3, 0xe9, 0x28, 0x6b, 0x29, 0x40, 0xad, 0x56, 0x63, 0xb8, 0xf3, 0x8b, 0x81, 0x99, 0x19,
|
||||
0xdc, 0x5f, 0x6f, 0x64, 0x57, 0x57, 0x78, 0xb3, 0xbb, 0xe9, 0xa9, 0x54, 0xa8, 0x54, 0x3f, 0xa8,
|
||||
0xde, 0xde, 0xd1, 0xed, 0xf1, 0x34, 0xa2, 0x98, 0xbe, 0xf3, 0x08, 0xe0, 0x01, 0xba, 0x00, 0x37,
|
||||
0xe0, 0x00, 0x3a, 0x0c, 0x6d, 0xa0, 0x02, 0x94, 0x81, 0x77, 0xe0, 0x45, 0x29, 0x75, 0x0e, 0xf0,
|
||||
0x0d, 0xff, 0x1c, 0x7a, 0x37, 0x5c, 0xfd, 0x46, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
|
||||
0x44, 0xae, 0x42, 0x60, 0x82
|
||||
};
|
||||
|
||||
const unsigned char icon_desktop_48_png[] = {
|
||||
0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x08, 0x06, 0x00, 0x00, 0x00, 0x57, 0x02, 0xF9,
|
||||
0x87, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47, 0x42, 0x00, 0xAE, 0xCE, 0x1C, 0xE9, 0x00, 0x00,
|
||||
0x00, 0x04, 0x67, 0x41, 0x4D, 0x41, 0x00, 0x00, 0xB1, 0x8F, 0x0B, 0xFC, 0x61, 0x05, 0x00, 0x00,
|
||||
0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0E, 0xC3, 0x00, 0x00, 0x0E, 0xC3, 0x01, 0xC7,
|
||||
0x6F, 0xA8, 0x64, 0x00, 0x00, 0x0A, 0x20, 0x49, 0x44, 0x41, 0x54, 0x68, 0x43, 0xED, 0x99, 0x7B,
|
||||
0x8C, 0x54, 0xE5, 0x19, 0x87, 0xF7, 0x32, 0xB7, 0x9D, 0x85, 0x55, 0xA0, 0x08, 0x08, 0x08, 0x42,
|
||||
0x65, 0x97, 0x4B, 0x54, 0x84, 0x5D, 0x6A, 0xB9, 0x2C, 0x48, 0xD1, 0x22, 0x82, 0x84, 0x22, 0x85,
|
||||
0xCA, 0xC5, 0xD4, 0x96, 0x58, 0xA3, 0x98, 0x52, 0xB0, 0x50, 0xA4, 0x88, 0x97, 0x16, 0x42, 0xAC,
|
||||
0xD2, 0x48, 0x6B, 0x49, 0x1A, 0xA9, 0xED, 0xC2, 0x2E, 0x36, 0xB5, 0xB1, 0x7F, 0x58, 0x42, 0x45,
|
||||
0x88, 0x88, 0xB4, 0xB5, 0x2D, 0x88, 0xA1, 0x05, 0xE4, 0xD2, 0x05, 0x16, 0x90, 0xCB, 0xEE, 0xCC,
|
||||
0x99, 0x99, 0x33, 0x73, 0xE6, 0xF2, 0xF6, 0x79, 0xCF, 0x39, 0x33, 0x3B, 0x80, 0x95, 0x59, 0x62,
|
||||
0x22, 0x24, 0x98, 0x3C, 0xF9, 0x0E, 0x24, 0xB2, 0xCF, 0xEF, 0x3D, 0xBF, 0xEF, 0x3B, 0x67, 0x76,
|
||||
0x8A, 0x8A, 0xAE, 0xFD, 0x77, 0x6D, 0x02, 0xD7, 0x26, 0x70, 0x75, 0x4F, 0xE0, 0xE9, 0x67, 0x7F,
|
||||
0xFA, 0xD8, 0xF2, 0xE7, 0x56, 0xC8, 0xD5, 0xC0, 0xE2, 0xA7, 0x96, 0xCD, 0x67, 0xDA, 0x3E, 0x28,
|
||||
0xCE, 0x4D, 0x5D, 0xC5, 0xF7, 0xEC, 0x3B, 0xF2, 0x85, 0xF1, 0xC8, 0xE2, 0xD5, 0xA2, 0x64, 0x1D,
|
||||
0x3E, 0xEB, 0xCF, 0xEA, 0x8A, 0x78, 0x17, 0x37, 0x84, 0x93, 0xE1, 0x8B, 0x0E, 0xD0, 0x96, 0xE1,
|
||||
0xB9, 0x01, 0xFA, 0xA1, 0xDD, 0xEE, 0xA2, 0x3B, 0x30, 0x74, 0xC8, 0x10, 0x19, 0x0D, 0x73, 0x61,
|
||||
0x55, 0x4D, 0xB5, 0xAC, 0x1B, 0x5B, 0x2D, 0x75, 0xC3, 0x6B, 0xE4, 0xB5, 0x11, 0xAC, 0x77, 0x55,
|
||||
0xCB, 0x86, 0x19, 0xC3, 0xA4, 0xFE, 0x51, 0x98, 0x3F, 0x4C, 0x1A, 0x96, 0xDE, 0x29, 0x0D, 0x2B,
|
||||
0x46, 0x4A, 0xC3, 0xCF, 0xC6, 0x48, 0xC3, 0x8B, 0x63, 0x59, 0xBF, 0x26, 0x0D, 0x2F, 0x29, 0xFC,
|
||||
0x79, 0x75, 0x2D, 0xEB, 0x28, 0x18, 0x01, 0x5F, 0x91, 0x86, 0x17, 0xF8, 0x7F, 0x16, 0xD4, 0x48,
|
||||
0xFD, 0xDC, 0x6A, 0xA9, 0x9F, 0x09, 0x53, 0xF8, 0xB7, 0xEE, 0x63, 0x1D, 0xCF, 0x7A, 0x0F, 0xEB,
|
||||
0xDD, 0x35, 0xB2, 0x7E, 0x34, 0xF0, 0x73, 0x36, 0xC0, 0xFA, 0x51, 0x35, 0x52, 0x37, 0xB2, 0x46,
|
||||
0x1E, 0x9A, 0x33, 0xE7, 0x3C, 0x34, 0xA8, 0x1B, 0x60, 0x00, 0xF2, 0x15, 0x17, 0x05, 0xE8, 0x5F,
|
||||
0x5C, 0x24, 0x3F, 0x2C, 0x2A, 0x91, 0x4D, 0xC5, 0xA5, 0x72, 0xCC, 0xEF, 0x93, 0x64, 0x77, 0xBF,
|
||||
0x64, 0x6A, 0xCB, 0x24, 0xF3, 0x44, 0x50, 0x32, 0x7F, 0x08, 0x4A, 0xFA, 0x74, 0x7B, 0xC9, 0x64,
|
||||
0x3A, 0x4B, 0x3A, 0x5D, 0x09, 0x23, 0xE0, 0x5E, 0x49, 0xA5, 0xEE, 0x96, 0x74, 0x6A, 0x92, 0xA4,
|
||||
0xD2, 0xB3, 0xB8, 0xFE, 0x96, 0x24, 0x53, 0x13, 0x25, 0x95, 0x1C, 0x02, 0x83, 0x25, 0x99, 0xEC,
|
||||
0x23, 0x49, 0xAB, 0x1C, 0xFC, 0x62, 0x1D, 0x0C, 0x88, 0xF5, 0x06, 0xAC, 0x0D, 0x48, 0x62, 0xBE,
|
||||
0x5F, 0xE2, 0x8F, 0xF8, 0x25, 0xF1, 0x70, 0x40, 0xE2, 0xB3, 0xB9, 0x1E, 0xEF, 0x17, 0xB3, 0x06,
|
||||
0x6E, 0xF5, 0x89, 0x59, 0xCD, 0x3A, 0x8C, 0x75, 0xA8, 0x5F, 0x06, 0x0C, 0x18, 0x60, 0x53, 0x59,
|
||||
0x59, 0xA5, 0xB5, 0xB1, 0x2B, 0xF6, 0x99, 0x01, 0x5E, 0xF6, 0x7A, 0xE4, 0xB0, 0xD7, 0x2B, 0xE9,
|
||||
0x00, 0xE2, 0x45, 0x3E, 0xC9, 0x54, 0xC0, 0x0A, 0x02, 0xB4, 0x54, 0xD8, 0xE2, 0x99, 0x4C, 0x57,
|
||||
0xA4, 0x3B, 0x41, 0x0F, 0x18, 0x80, 0xF8, 0x40, 0xD6, 0xEE, 0xC8, 0xF7, 0x40, 0xBE, 0x1F, 0xD2,
|
||||
0x7D, 0xA1, 0x07, 0xE2, 0xED, 0x20, 0xE8, 0x88, 0x27, 0x7D, 0x62, 0x35, 0xFA, 0x24, 0xB1, 0x11,
|
||||
0x7E, 0x0C, 0x8F, 0xF9, 0x24, 0xFE, 0x03, 0xE4, 0x7F, 0x04, 0x4B, 0x91, 0xE7, 0x3A, 0x3E, 0x1D,
|
||||
0xE9, 0x51, 0x48, 0xDF, 0xEE, 0x93, 0xD8, 0x70, 0x18, 0x0D, 0xB5, 0x3E, 0x19, 0x34, 0x68, 0x90,
|
||||
0x44, 0xA3, 0x51, 0x88, 0x15, 0x16, 0x20, 0xD9, 0x35, 0x20, 0xE2, 0xF3, 0x8B, 0xA8, 0x3C, 0x48,
|
||||
0x80, 0xB5, 0x21, 0x80, 0x78, 0x6F, 0xB8, 0x13, 0xD9, 0x5B, 0x20, 0x00, 0x1E, 0xE4, 0x09, 0x9A,
|
||||
0xF6, 0xD9, 0xA4, 0xB8, 0x4E, 0xA5, 0x3C, 0x4C, 0x1F, 0x92, 0x5E, 0x1B, 0x4B, 0xD7, 0x04, 0xF2,
|
||||
0x7B, 0xE0, 0xE7, 0x88, 0xCF, 0x04, 0xC4, 0x6C, 0xA6, 0x22, 0x3D, 0x93, 0xE9, 0x7F, 0xAF, 0x4C,
|
||||
0xE2, 0x0F, 0x22, 0x3F, 0x16, 0x7A, 0x13, 0xA0, 0x1B, 0xF4, 0x41, 0xBE, 0x07, 0x74, 0xF4, 0x49,
|
||||
0xFF, 0xFE, 0xFD, 0xDD, 0x00, 0xD1, 0xC2, 0x02, 0x48, 0x89, 0x17, 0x79, 0xAF, 0x33, 0x7D, 0xE5,
|
||||
0x66, 0xD8, 0xC5, 0x1D, 0xC8, 0x0C, 0x96, 0x4C, 0xFA, 0x1E, 0xB8, 0xC9, 0x95, 0x0E, 0x30, 0x75,
|
||||
0x0D, 0x02, 0x29, 0xAE, 0x53, 0x65, 0xC8, 0x07, 0x10, 0x57, 0xFC, 0x88, 0x33, 0xF9, 0x33, 0x88,
|
||||
0xEF, 0x66, 0x7D, 0x91, 0x75, 0x0A, 0x54, 0x7A, 0x25, 0xD1, 0x1D, 0x98, 0x72, 0x7C, 0x2C, 0xCC,
|
||||
0x20, 0xC0, 0x82, 0x32, 0x31, 0x1F, 0x08, 0x50, 0x17, 0x84, 0xBF, 0xEC, 0x97, 0x18, 0x77, 0x3C,
|
||||
0x56, 0x0E, 0x5E, 0x9F, 0x44, 0xF9, 0xF9, 0x55, 0x95, 0x95, 0x52, 0x55, 0x55, 0x25, 0xFD, 0xFA,
|
||||
0xF5, 0x2B, 0x2C, 0x80, 0x3D, 0x75, 0xA5, 0x98, 0x0A, 0x95, 0xC1, 0xE3, 0x4C, 0x39, 0xF1, 0x25,
|
||||
0x49, 0x67, 0xEE, 0x42, 0x76, 0x32, 0x6B, 0x5F, 0x56, 0xA6, 0x9D, 0xF6, 0x23, 0xAD, 0x21, 0xCA,
|
||||
0xA8, 0x0C, 0xA4, 0xA8, 0x0B, 0xB5, 0x49, 0xA9, 0xBC, 0x85, 0xEC, 0x49, 0xF8, 0x2B, 0x93, 0x7E,
|
||||
0x1D, 0x9E, 0x80, 0x6A, 0xE8, 0x84, 0x74, 0x77, 0x56, 0xBA, 0x9D, 0xA0, 0x1E, 0xF1, 0xB9, 0x4C,
|
||||
0x7D, 0x15, 0xF2, 0xCF, 0x05, 0xC5, 0x9C, 0xC5, 0xF5, 0x38, 0xA6, 0xCF, 0xC0, 0xA2, 0x1D, 0x40,
|
||||
0x03, 0x94, 0xF8, 0xA4, 0x63, 0xC7, 0x8E, 0x52, 0x51, 0x51, 0x21, 0xC1, 0x60, 0xB0, 0xC0, 0x00,
|
||||
0x74, 0x5F, 0x7A, 0x51, 0x99, 0xAF, 0x22, 0xFF, 0x14, 0x34, 0xFA, 0x11, 0xD6, 0xEA, 0x2C, 0x82,
|
||||
0x65, 0x30, 0x1E, 0xE9, 0x8E, 0xAC, 0x04, 0x48, 0x97, 0x23, 0x8E, 0x74, 0x4A, 0xD7, 0x0A, 0xBB,
|
||||
0xF3, 0x16, 0x01, 0xAC, 0xB3, 0xC8, 0xFF, 0x07, 0xDE, 0x85, 0x7A, 0x58, 0x88, 0xF4, 0x18, 0xA8,
|
||||
0x82, 0x1A, 0xC4, 0x11, 0x8D, 0x4F, 0x47, 0xF6, 0x65, 0xE4, 0x0F, 0x96, 0x8B, 0x79, 0x84, 0x00,
|
||||
0xEF, 0x04, 0x24, 0xF6, 0x3B, 0x58, 0x02, 0x33, 0xB8, 0x13, 0x83, 0x09, 0x40, 0x95, 0x74, 0xE3,
|
||||
0xE6, 0x73, 0xC9, 0x4D, 0x9C, 0x99, 0x8B, 0x7C, 0x03, 0x95, 0xD9, 0xCD, 0x9A, 0xA0, 0x1E, 0x19,
|
||||
0x36, 0x6A, 0x7A, 0x0D, 0xEB, 0x47, 0xD4, 0x67, 0x0F, 0x75, 0x79, 0x0D, 0x66, 0x20, 0x5C, 0x09,
|
||||
0x9D, 0x99, 0x78, 0x7B, 0x47, 0x3E, 0xD5, 0x81, 0x00, 0x65, 0x62, 0xC5, 0x38, 0x65, 0xF6, 0x10,
|
||||
0xE2, 0x5F, 0x4C, 0xF9, 0x6F, 0x08, 0x6F, 0x65, 0x7D, 0x85, 0x75, 0x1E, 0xD2, 0x73, 0x74, 0xEA,
|
||||
0xF0, 0x7D, 0xF8, 0x05, 0x1C, 0x20, 0x80, 0x59, 0x26, 0x31, 0xB3, 0x02, 0xAE, 0x93, 0x58, 0x2C,
|
||||
0x28, 0xD1, 0x73, 0x04, 0xD8, 0x5F, 0x26, 0xD1, 0x3A, 0xBF, 0x44, 0x1F, 0x77, 0x02, 0x44, 0xA2,
|
||||
0x11, 0x89, 0x44, 0x22, 0x05, 0xDE, 0x81, 0x26, 0xA6, 0x2E, 0x7A, 0xE2, 0xF4, 0x42, 0x78, 0x34,
|
||||
0xE2, 0x6B, 0x09, 0xD0, 0x02, 0x69, 0x17, 0x13, 0xE1, 0xFD, 0xF0, 0x12, 0xD2, 0x13, 0x08, 0x50,
|
||||
0x89, 0x78, 0x67, 0x5B, 0x5E, 0xFB, 0x6F, 0x9D, 0x41, 0x7E, 0xAB, 0xD6, 0x87, 0xF5, 0x10, 0xF2,
|
||||
0xC7, 0x60, 0x1B, 0xAC, 0x47, 0xB8, 0x0E, 0x7E, 0x0F, 0xEF, 0x52, 0x97, 0x26, 0xFA, 0x8F, 0xBC,
|
||||
0x69, 0xD2, 0x77, 0xF3, 0x46, 0xB8, 0x9D, 0x00, 0x37, 0x49, 0x34, 0xD6, 0x9E, 0x95, 0xE9, 0x47,
|
||||
0x7D, 0x12, 0xD9, 0x17, 0x70, 0x02, 0x20, 0x5F, 0x78, 0x80, 0xCC, 0x75, 0xC8, 0x8F, 0x84, 0x65,
|
||||
0xB0, 0x05, 0x69, 0x33, 0x4F, 0x3E, 0x45, 0x6D, 0xD2, 0xC8, 0xB3, 0xA6, 0x4C, 0x02, 0xBC, 0x8D,
|
||||
0xF4, 0x5C, 0xB8, 0x0D, 0xAE, 0x77, 0x8E, 0xCB, 0x83, 0x80, 0xA4, 0xF5, 0x3E, 0xD2, 0x84, 0x49,
|
||||
0x98, 0x88, 0x32, 0x94, 0xF8, 0x61, 0x5D, 0xE1, 0x2C, 0xD7, 0x26, 0x01, 0x6C, 0xBC, 0xF6, 0xF4,
|
||||
0xCD, 0xD8, 0x18, 0xA4, 0x9F, 0x46, 0x7E, 0x25, 0xE2, 0xDF, 0x86, 0x4A, 0x27, 0x40, 0xD4, 0xDB,
|
||||
0xB6, 0x0A, 0xBD, 0xBD, 0x63, 0x37, 0xD3, 0x7F, 0x00, 0xF1, 0x37, 0x98, 0x7C, 0x18, 0xD2, 0xDC,
|
||||
0x85, 0xEC, 0xE4, 0x75, 0x55, 0xF1, 0x6C, 0x00, 0xBD, 0x4E, 0x21, 0xBE, 0x03, 0x9E, 0x44, 0x7E,
|
||||
0x0C, 0x9B, 0xB7, 0xB3, 0x58, 0x1F, 0x78, 0xEC, 0x69, 0x27, 0xF6, 0xBA, 0xF2, 0xD4, 0x30, 0x1E,
|
||||
0x07, 0x4E, 0x25, 0x93, 0xD5, 0x86, 0x50, 0x4E, 0x75, 0x7A, 0xC2, 0x37, 0x90, 0xFF, 0x2D, 0xC2,
|
||||
0x27, 0xC0, 0x80, 0x46, 0xF8, 0x25, 0xF2, 0xB5, 0x4C, 0xFD, 0xFA, 0x8B, 0x02, 0xA8, 0xE3, 0xFF,
|
||||
0x7D, 0x90, 0xD9, 0x01, 0x32, 0x3B, 0x01, 0xF1, 0x4C, 0xA6, 0x55, 0xDE, 0x96, 0x26, 0x80, 0x3D,
|
||||
0x79, 0xA4, 0x75, 0x4D, 0x2A, 0x49, 0xE4, 0x95, 0xF7, 0xC4, 0xB2, 0x96, 0xB1, 0xD6, 0x8A, 0xF5,
|
||||
0x61, 0xB9, 0x58, 0x7F, 0x21, 0x40, 0x73, 0x50, 0x12, 0x89, 0x72, 0xC4, 0x83, 0x04, 0xE0, 0xAC,
|
||||
0x8F, 0xB3, 0xEA, 0xB4, 0xE3, 0xDD, 0x90, 0x1F, 0xCC, 0xD4, 0xBF, 0x89, 0xFC, 0x6A, 0xE4, 0x3F,
|
||||
0x00, 0x43, 0x62, 0xF6, 0xC3, 0x2A, 0xCB, 0x39, 0x02, 0xD4, 0x13, 0xE0, 0xDE, 0xB6, 0x07, 0x48,
|
||||
0x23, 0xAE, 0x64, 0x27, 0x6F, 0x57, 0xC6, 0xAE, 0xCD, 0x85, 0x93, 0xD7, 0xE9, 0x23, 0x6F, 0x59,
|
||||
0x70, 0x9C, 0x00, 0x1B, 0x24, 0x61, 0xCD, 0x96, 0x44, 0xB8, 0xAB, 0x24, 0x5A, 0x54, 0xBE, 0x8B,
|
||||
0x24, 0xE2, 0x37, 0x13, 0xA0, 0x2F, 0xF2, 0x95, 0x88, 0x23, 0x6D, 0x8E, 0x23, 0xC4, 0x3C, 0xE4,
|
||||
0x5F, 0xE7, 0xFA, 0x30, 0xE2, 0x31, 0x6A, 0x13, 0x43, 0xDE, 0xC1, 0x09, 0x40, 0xDF, 0xED, 0x4D,
|
||||
0x7B, 0x40, 0x8C, 0xC8, 0x52, 0x77, 0x0F, 0x18, 0x62, 0x18, 0x86, 0x7D, 0x5D, 0xC0, 0x1D, 0x20,
|
||||
0x40, 0x5A, 0xC9, 0x56, 0xC7, 0xE9, 0x7D, 0x76, 0xFA, 0xA9, 0x14, 0xD2, 0x8A, 0x3B, 0x7D, 0x8B,
|
||||
0x00, 0x96, 0x75, 0x12, 0xFE, 0x84, 0xF4, 0xA3, 0x30, 0x10, 0x7A, 0x23, 0x3E, 0x0A, 0xA6, 0x20,
|
||||
0xAF, 0xCC, 0x46, 0x7C, 0x21, 0xD2, 0xAF, 0xC2, 0x11, 0x26, 0x1F, 0x23, 0x04, 0xD2, 0x2E, 0xAD,
|
||||
0x93, 0x8F, 0x48, 0xD4, 0xDD, 0xB0, 0x91, 0xC8, 0xC7, 0x84, 0x78, 0xC1, 0x96, 0x56, 0xF9, 0x70,
|
||||
0xC1, 0x01, 0x54, 0x96, 0x0A, 0xD9, 0x01, 0x74, 0xEA, 0xB9, 0x3B, 0xD0, 0x5A, 0x1F, 0x47, 0x5E,
|
||||
0x27, 0x9F, 0xA4, 0xFB, 0x1A, 0xA0, 0x59, 0xAC, 0xC4, 0x76, 0xC4, 0x57, 0xC2, 0x4C, 0x78, 0x18,
|
||||
0xF9, 0x67, 0x11, 0x5F, 0x03, 0x6B, 0xA1, 0x8E, 0x3B, 0xB0, 0x0D, 0xF9, 0x13, 0x60, 0xB6, 0xCA,
|
||||
0xBB, 0xEF, 0x38, 0x1A, 0x40, 0xA7, 0x9E, 0x5D, 0x23, 0x11, 0x03, 0xF9, 0x7F, 0x22, 0xFE, 0x4A,
|
||||
0xDB, 0x2B, 0xD4, 0xBA, 0x69, 0xB3, 0x93, 0x77, 0xA6, 0xAF, 0xBD, 0x77, 0xBA, 0x7F, 0xE1, 0xF4,
|
||||
0x2D, 0xAA, 0x03, 0x89, 0x66, 0xF8, 0x07, 0x6C, 0x44, 0x78, 0x33, 0x1C, 0x82, 0xE3, 0x70, 0x1A,
|
||||
0xF9, 0xB0, 0x23, 0x9E, 0x93, 0x37, 0x73, 0xF5, 0xC9, 0x4E, 0x3F, 0xA2, 0x21, 0xDC, 0xE9, 0x1B,
|
||||
0x91, 0x16, 0x89, 0x18, 0x1F, 0x12, 0xE0, 0x8F, 0x6D, 0x0F, 0x90, 0xAB, 0x8E, 0xBB, 0x69, 0xED,
|
||||
0xBB, 0x60, 0x9F, 0x36, 0x6E, 0xE7, 0xDD, 0xDE, 0xEB, 0xE4, 0xED, 0x3B, 0xA0, 0x15, 0x4A, 0x24,
|
||||
0x10, 0x77, 0x88, 0x27, 0x42, 0x48, 0x9B, 0x10, 0xA7, 0x36, 0x0A, 0xD7, 0xAC, 0x66, 0x4C, 0x27,
|
||||
0x8F, 0x38, 0xF5, 0x71, 0xBA, 0xEF, 0xBC, 0x61, 0xE6, 0xD7, 0x47, 0x03, 0x18, 0x2E, 0x11, 0xE3,
|
||||
0x28, 0x01, 0xB6, 0x5E, 0x4E, 0x80, 0xB8, 0xD3, 0x79, 0xFB, 0xC8, 0x74, 0x41, 0x5A, 0x4F, 0x1D,
|
||||
0x27, 0x84, 0x8A, 0x6B, 0x6D, 0x5C, 0xF9, 0xBC, 0x00, 0xF1, 0x38, 0x01, 0x20, 0xA1, 0xF2, 0x1A,
|
||||
0x42, 0xC5, 0xB3, 0x93, 0x67, 0xCD, 0x76, 0x5E, 0x4F, 0x9C, 0xEC, 0xA6, 0x8D, 0x44, 0x9C, 0xFA,
|
||||
0xE4, 0xA6, 0x6F, 0xE8, 0xB5, 0x6E, 0xDA, 0x66, 0xD8, 0x91, 0xB7, 0x07, 0xC2, 0x85, 0x6D, 0xE2,
|
||||
0x54, 0xFA, 0xF0, 0x79, 0x27, 0x4E, 0xB6, 0x3A, 0xCE, 0x89, 0xE3, 0x76, 0xDE, 0xEE, 0xBD, 0xD6,
|
||||
0x46, 0xA7, 0x9F, 0xBD, 0xD6, 0xE9, 0x6B, 0x00, 0x95, 0x77, 0xA6, 0x6F, 0xE6, 0x02, 0xE4, 0x6D,
|
||||
0x5A, 0x9D, 0xBA, 0x4E, 0x1F, 0xB4, 0x36, 0x76, 0xEF, 0x73, 0x1B, 0x17, 0x79, 0x36, 0xAB, 0x6E,
|
||||
0x5A, 0xC3, 0x38, 0x0B, 0xDB, 0x6D, 0xE9, 0x70, 0x38, 0x6C, 0x53, 0xD0, 0x29, 0x94, 0x4A, 0xBF,
|
||||
0x45, 0xE7, 0xCF, 0xE5, 0xA6, 0x9F, 0x5F, 0x1D, 0x67, 0xEA, 0x79, 0x93, 0xD7, 0x10, 0x56, 0x5E,
|
||||
0x7D, 0xEC, 0x3B, 0x80, 0x78, 0x16, 0x7B, 0xFA, 0x5A, 0x19, 0x77, 0xFA, 0x7A, 0x5C, 0x22, 0xEE,
|
||||
0x4C, 0x5F, 0x8F, 0x4B, 0x95, 0xCF, 0x06, 0x50, 0x69, 0x2A, 0x64, 0xA3, 0xA7, 0xCE, 0x61, 0xA4,
|
||||
0xDF, 0xBC, 0x8C, 0x0A, 0x9D, 0x7E, 0x06, 0xF9, 0x6D, 0x60, 0x00, 0xD5, 0xB1, 0x8F, 0x4C, 0xA7,
|
||||
0xFF, 0x96, 0x62, 0xD7, 0xC7, 0x9D, 0xFA, 0x85, 0xF2, 0x09, 0x67, 0xFA, 0x26, 0xF5, 0xC9, 0xDF,
|
||||
0xB4, 0x7A, 0x64, 0xEA, 0x79, 0xAF, 0x53, 0x6F, 0x3D, 0xEF, 0xF3, 0xE5, 0x5D, 0x71, 0xED, 0xBF,
|
||||
0x4E, 0x3F, 0x7C, 0x8C, 0x00, 0x5B, 0x08, 0xE0, 0x1C, 0xA3, 0xF9, 0x5C, 0xF2, 0x39, 0x90, 0xDA,
|
||||
0xC5, 0x0B, 0x9A, 0xB5, 0x1C, 0xF1, 0x4D, 0x48, 0x7F, 0x92, 0x3B, 0xEF, 0xB5, 0xFB, 0xD9, 0xE9,
|
||||
0xEB, 0xA9, 0x93, 0xDB, 0xB8, 0x76, 0xE7, 0xB3, 0xBD, 0x77, 0x6A, 0xA3, 0x1B, 0xD7, 0x09, 0xC0,
|
||||
0xC4, 0xDD, 0x4D, 0x6B, 0xF7, 0x3F, 0x7F, 0xD3, 0xE6, 0xD5, 0x46, 0xA7, 0x6E, 0xF7, 0x5E, 0x09,
|
||||
0xEB, 0xE6, 0x7D, 0x0B, 0xF9, 0x15, 0x62, 0x9C, 0x99, 0x76, 0x19, 0x01, 0x36, 0xF5, 0x94, 0xD4,
|
||||
0xE9, 0xAF, 0xB3, 0x69, 0x17, 0x23, 0x5F, 0x07, 0xEF, 0xD3, 0xFD, 0x46, 0xE4, 0xE3, 0xEE, 0x89,
|
||||
0xA3, 0xDD, 0x77, 0x6B, 0xE3, 0x6E, 0xDA, 0xFC, 0xDE, 0xE7, 0xE4, 0xDD, 0x87, 0x54, 0xF6, 0x81,
|
||||
0xE5, 0x9C, 0x3A, 0x6E, 0xE7, 0xF5, 0xCC, 0xCF, 0x1D, 0x99, 0xF9, 0xBD, 0x6F, 0x66, 0xF2, 0xDB,
|
||||
0x08, 0xF0, 0x3C, 0x01, 0xEE, 0x93, 0xF0, 0xDE, 0x9E, 0xAD, 0x7B, 0x20, 0x54, 0xE8, 0x1E, 0xD8,
|
||||
0xC4, 0xE7, 0xDB, 0x46, 0x42, 0x58, 0xA3, 0x91, 0x9F, 0x09, 0x0B, 0x11, 0x5F, 0x01, 0x1B, 0x61,
|
||||
0x27, 0x9D, 0x3F, 0x40, 0x80, 0xA3, 0xF6, 0xB9, 0x1F, 0x77, 0x2B, 0xD3, 0x1A, 0x40, 0xA7, 0x1E,
|
||||
0x81, 0x53, 0x1C, 0x99, 0x27, 0xE8, 0xFB, 0x71, 0xA6, 0x7E, 0x14, 0x9A, 0xB8, 0xD6, 0x97, 0xB5,
|
||||
0xE3, 0x4C, 0xFA, 0xBF, 0xB0, 0x0F, 0xF6, 0x82, 0x3E, 0x6D, 0x4F, 0xC2, 0x29, 0xA4, 0x9B, 0x98,
|
||||
0xFE, 0x1E, 0xD6, 0x35, 0x84, 0x98, 0x24, 0xE1, 0xE6, 0x1B, 0x24, 0xFC, 0x8E, 0xC7, 0x0E, 0x10,
|
||||
0x0A, 0x85, 0x6C, 0x0A, 0xDB, 0xC4, 0x6B, 0xF8, 0x20, 0xCE, 0xCB, 0x58, 0xF2, 0xA3, 0x76, 0x62,
|
||||
0xED, 0xBF, 0x41, 0xAC, 0x8F, 0xFB, 0xF0, 0xF1, 0x70, 0xA0, 0x58, 0xC6, 0x08, 0x02, 0x4C, 0xA4,
|
||||
0x3A, 0xD3, 0x91, 0x7F, 0x08, 0x16, 0x11, 0x60, 0x1D, 0xF5, 0xD9, 0x42, 0xEF, 0xFF, 0x4E, 0x6D,
|
||||
0xDE, 0x83, 0x0D, 0x88, 0x2F, 0x21, 0xC0, 0x6C, 0xAA, 0x33, 0x4D, 0x62, 0xCD, 0xF7, 0xC3, 0x24,
|
||||
0x89, 0x9E, 0x9D, 0x22, 0xD1, 0xA6, 0xA9, 0x30, 0x59, 0xA2, 0x9F, 0xDC, 0x2F, 0x91, 0xF0, 0x44,
|
||||
0xA4, 0xA7, 0xC2, 0x3C, 0x58, 0x89, 0xF4, 0xAF, 0x61, 0x1D, 0x3C, 0xC7, 0xE4, 0x27, 0x10, 0xA4,
|
||||
0x9B, 0x84, 0xF9, 0x54, 0x17, 0x7E, 0xF3, 0xE2, 0x4F, 0x64, 0x97, 0xDC, 0x03, 0xC9, 0x3B, 0x08,
|
||||
0x30, 0x0B, 0x9E, 0xE4, 0xB7, 0x0A, 0xCF, 0x94, 0x4A, 0x72, 0x55, 0xA9, 0x58, 0xBF, 0x82, 0x7A,
|
||||
0x8F, 0x58, 0x9B, 0x79, 0xCB, 0xDC, 0x02, 0xDB, 0x79, 0xA7, 0x3F, 0x50, 0x21, 0xF1, 0xD0, 0x8D,
|
||||
0xC8, 0xDF, 0x0A, 0xC3, 0x90, 0xBE, 0x03, 0x79, 0x5E, 0x8F, 0xFF, 0xCD, 0x47, 0x44, 0x3E, 0x07,
|
||||
0xC7, 0x7E, 0x52, 0x2A, 0xB1, 0xEF, 0x14, 0x4B, 0xF4, 0xBB, 0x25, 0x12, 0x7D, 0x10, 0x26, 0x70,
|
||||
0x3D, 0x81, 0x75, 0x7A, 0xB1, 0x44, 0x16, 0x94, 0x48, 0xE4, 0x37, 0x5E, 0x31, 0x0E, 0x55, 0x20,
|
||||
0xDD, 0x0B, 0x6E, 0x43, 0x7C, 0x08, 0xF4, 0x82, 0xA0, 0x84, 0x4F, 0x79, 0x24, 0xB4, 0xC3, 0x2F,
|
||||
0xE1, 0x75, 0xFE, 0xB6, 0xEF, 0x81, 0x24, 0xBF, 0x91, 0x48, 0x7A, 0xA0, 0x82, 0x00, 0x5D, 0xF8,
|
||||
0x60, 0xC2, 0xAF, 0x37, 0xAC, 0xBE, 0x5C, 0x0F, 0xE6, 0xB7, 0x09, 0xD5, 0x30, 0xCC, 0x23, 0xF1,
|
||||
0xE1, 0x30, 0x0D, 0x96, 0x94, 0x8A, 0xF9, 0x6A, 0x89, 0x98, 0x7F, 0xF6, 0x88, 0xB9, 0x99, 0xEB,
|
||||
0xD5, 0x48, 0x4F, 0xF4, 0x48, 0xAC, 0x0B, 0x1F, 0x54, 0xDA, 0xEB, 0x6F, 0x15, 0xBC, 0x36, 0xCD,
|
||||
0xD0, 0x54, 0xE4, 0x91, 0x46, 0x88, 0x70, 0x6D, 0x14, 0x43, 0x27, 0x98, 0xEC, 0x11, 0x63, 0x7D,
|
||||
0xA9, 0x18, 0x7C, 0x86, 0x30, 0x76, 0xB1, 0xEE, 0xF4, 0x48, 0xB8, 0xC1, 0x2B, 0xA1, 0xE5, 0x4C,
|
||||
0x7F, 0x86, 0x4F, 0x42, 0xB5, 0x97, 0x11, 0xE0, 0xC2, 0x63, 0xEB, 0x4A, 0xFB, 0xF3, 0x25, 0x2B,
|
||||
0xA4, 0xC2, 0xD9, 0xF3, 0xDE, 0xBE, 0xE6, 0x49, 0xAB, 0xA7, 0x8E, 0x5E, 0x3B, 0x9B, 0xB5, 0xF5,
|
||||
0x69, 0xAB, 0x47, 0xA5, 0xFE, 0x7D, 0x4C, 0x5F, 0x13, 0xF2, 0xDF, 0x32, 0xF3, 0x4E, 0x9C, 0xDC,
|
||||
0xC9, 0x93, 0x77, 0x6C, 0xB6, 0xBE, 0x22, 0x3B, 0x27, 0x4B, 0xD8, 0x70, 0x9E, 0xB4, 0x21, 0x7D,
|
||||
0xE2, 0xBA, 0xA7, 0x4D, 0xFE, 0xC6, 0x6D, 0x61, 0x03, 0xB7, 0x84, 0x5A, 0x0A, 0xDB, 0xC4, 0xFA,
|
||||
0x0F, 0x66, 0x5F, 0xD2, 0xF4, 0x5A, 0x5F, 0x17, 0x72, 0x01, 0xF2, 0x4E, 0x9D, 0xEC, 0xC3, 0x2A,
|
||||
0x17, 0xE0, 0x53, 0xDF, 0xEF, 0x39, 0x36, 0x79, 0xD2, 0xB6, 0xBE, 0xE3, 0xEB, 0x6B, 0xB2, 0xF3,
|
||||
0xC1, 0xC4, 0x79, 0x5D, 0x70, 0x03, 0x84, 0x79, 0xF2, 0xDA, 0x01, 0x42, 0x17, 0x04, 0x70, 0xA4,
|
||||
0x35, 0x40, 0xA8, 0xA5, 0x0D, 0x01, 0xAE, 0xB4, 0xDA, 0xB4, 0xE9, 0x49, 0xAC, 0x1D, 0xBB, 0xD2,
|
||||
0xF9, 0xD4, 0x0F, 0xF5, 0xF3, 0x17, 0x2C, 0x1A, 0x77, 0xB9, 0x5F, 0x2F, 0xF1, 0xF5, 0x94, 0x7C,
|
||||
0x9E, 0x5C, 0xCA, 0x83, 0x3B, 0x32, 0x14, 0xFA, 0x42, 0x30, 0xF7, 0xFD, 0x00, 0x17, 0x5E, 0xE8,
|
||||
0x0C, 0xB7, 0x80, 0x7E, 0x79, 0x50, 0x10, 0xC5, 0x45, 0x25, 0x03, 0x4B, 0x8A, 0x3D, 0x83, 0x3E,
|
||||
0x4F, 0x0A, 0xF8, 0xD9, 0x2A, 0xDF, 0x01, 0x4A, 0xF3, 0x03, 0xE8, 0x17, 0x66, 0x1A, 0xA2, 0x1C,
|
||||
0xF4, 0x9B, 0x8F, 0x2B, 0x19, 0x9D, 0xFC, 0x79, 0xF2, 0xF9, 0x41, 0xAE, 0x5D, 0x5F, 0x9B, 0xC0,
|
||||
0xB5, 0x09, 0x5C, 0x85, 0x13, 0xF8, 0x1F, 0x36, 0x17, 0x75, 0x31, 0x45, 0xB2, 0x22, 0x02, 0x00,
|
||||
0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82
|
||||
};
|
26
data/images.cpp
Normal file
23
data/images.h
Normal file
@ -0,0 +1,23 @@
|
||||
/**
|
||||
* Powder Toy - Images
|
||||
*
|
||||
* Copyright (c) 2008 - 2010 Stanislaw Skowronek.
|
||||
* Copyright (c) 2010 Simon Robertshaw.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
|
||||
*/
|
||||
#pragma once
|
||||
extern const unsigned char save_to_server_image[];
|
||||
extern const unsigned char save_to_disk_image[];
|
147
data/localization/EN.cpp
Normal file
@ -0,0 +1,147 @@
|
||||
#include "Config.h"
|
||||
#include "common/Localization.h"
|
||||
#include "common/Internationalization.h"
|
||||
|
||||
struct LocaleEN : public Locale
|
||||
{
|
||||
String GetName() const override { return "English"; }
|
||||
|
||||
size_t GetPluralIndex(size_t n) const override
|
||||
{
|
||||
// 0: singular, 1: plural
|
||||
return n == 1 ? 0 : 1;
|
||||
}
|
||||
|
||||
void Set() const override
|
||||
{
|
||||
using i18n::translation;
|
||||
using i18n::pluralForm;
|
||||
|
||||
pluralForm("save") = {"save", "saves"};
|
||||
pluralForm("stamp") = {"stamp", "stamps"};
|
||||
}
|
||||
|
||||
String GetIntroText() const override
|
||||
{
|
||||
return
|
||||
U"\blThe Powder Toy - Version " MTOS(SAVE_VERSION) "." MTOS(MINOR_VERSION) " - https://powdertoy.co.uk, irc.freenode.net #powder\n"
|
||||
U"\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\n"
|
||||
"\n"
|
||||
"\bgControl+C/V/X are Copy, Paste and cut respectively.\n"
|
||||
"\bgTo choose a material, hover over one of the icons on the right, it will show a selection of elements in that group.\n"
|
||||
"\bgPick your material from the menu using mouse left/right buttons.\n"
|
||||
"Draw freeform lines by dragging your mouse left/right button across the drawing area.\n"
|
||||
"Shift+drag will create straight lines of particles.\n"
|
||||
"Ctrl+drag will result in filled rectangles.\n"
|
||||
"Ctrl+Shift+click will flood-fill a closed area.\n"
|
||||
"Use the mouse scroll wheel, or '[' and ']', to change the tool size for particles.\n"
|
||||
"Middle click or Alt+Click to \"sample\" the particles.\n"
|
||||
"Ctrl+Z will act as Undo.\n"
|
||||
"\n\boUse 'Z' for a zoom tool. Click to make the drawable zoom window stay around. Use the wheel to change the zoom strength.\n"
|
||||
"The spacebar can be used to pause physics. Use 'F' to step ahead by one frame.\n"
|
||||
"Use 'S' to save parts of the window as 'stamps'. 'L' loads the most recent stamp, 'K' shows a library of stamps you saved.\n"
|
||||
"Use 'P' to take a screenshot and save it into the current directory.\n"
|
||||
"Use 'H' to toggle the HUD. Use 'D' to toggle debug mode in the HUD.\n"
|
||||
"\n"
|
||||
"Contributors: \bgStanislaw K Skowronek (Designed the original Powder Toy),\n"
|
||||
"\bgSimon Robertshaw, Skresanov Savely, cracker64, Catelite, Bryan Hoyle, Nathan Cousins, jacksonmj,\n"
|
||||
"\bgFelix Wallin, Lieuwe Mosch, Anthony Boot, Matthew \"me4502\", MaksProg, jacob1, mniip, LBPHacker\n"
|
||||
"\n"
|
||||
#ifndef BETA
|
||||
"\bgTo use online features such as saving, you need to register at: \brhttps://powdertoy.co.uk/Register.html\n"
|
||||
#else
|
||||
"\brThis is a BETA, you cannot save things publicly. If you are planning on publishing any saves, use the release version\n"
|
||||
#endif
|
||||
;
|
||||
}
|
||||
|
||||
String GetSavePublishingInfo() const override
|
||||
{
|
||||
return
|
||||
U"In The Powder Toy, one can save simulations to their account in two privacy levels: Published and unpublished. You can choose which one by checking or unchecking the 'publish' checkbox. Saves are unpublished by default, so if you do not check publish nobody will be able to see your saves.\n"
|
||||
"\n"
|
||||
"\btPublished saves\bw will appear on the 'By Date' feed and will be seen by many people. These saves also contribute to your Average Score, which is displayed publicly on your profile page on the website. Publish saves that you want people to see so they can comment and vote on.\n"
|
||||
"\btUnpublished saves\bw will not be shown on the 'By Date' feed. These will not contribute to your Average Score. They are not completely private though, as anyone who knows the save id will be able to view it. You can give the save id out to show specific people the save but not allow just everyone to see it.\n"
|
||||
"\n"
|
||||
"To quickly resave a save, open it and click the left side of the split resave button to \bt'Reupload the current simulation'\bw. If you want to change the description or change the published status, you can click the right side to \bt'Modify simulation properties'\bw. Note that you can't change the name of saves; this will create an entirely new save with no comments, votes, or tags; separate from the original.\n"
|
||||
"You may want to publish an unpublished save after it is finished, or to unpublish some currently published ones. You can do this by opening the save, selecting the 'Modify simulation properties' button, and changing the published status there. You can also \btunpublish or delete saves\bw by selecting them in the 'my own' section of the browser and clicking either one of the buttons that appear on bottom.\n"
|
||||
"If a save is under a week old and gains popularity fast, it will be automatically placed on the \btfront page\bw. Only published saves will be able to get here. Moderators can also choose to promote any save onto the front page, but this happens rarely. They can also demote any save from the front page that breaks a rule or they feel doesn't belong.\n"
|
||||
"Once you make a save, you can resave it as many times as you want. A short previous \btsave history\bw is saved, just right click any save in the save browser and select 'View History' to view it. This is useful for when you accidentally save something you didn't mean to and want to go back to the old version.\n";
|
||||
}
|
||||
|
||||
String GetRules() const override
|
||||
{
|
||||
return
|
||||
U"\boSection S: Social and Community Rules\n"
|
||||
"\bwThere are a few rules you should follow while interacting with the community. These rules are enforced by staff members and any issues related to violations of these rules may be brought to our attention by users. This section applies to saves uploaded, comments area, forums, and other areas of the community.\n"
|
||||
"\n"
|
||||
"\bt1. Try to use proper grammar.\bw English is the official community language, but use is not required in regional or cultural groups. If you cannot write English well, we advise that you use Google Translate.\n"
|
||||
"\bt2. Do not spam.\bw There's not a one size fits all definition here, but the idea is usually obvious. In addition, the following are seen as spam and may be hidden or deleted:\n"
|
||||
"- Posting multiple threads on the same subject. Try to combine threads on game feedback or suggestions into one thread.\n"
|
||||
"- Bumping an old thread by replying. This is what we call 'necro' or 'necroing'. The content of the thread may be stale (fixing issues, ideas, etc). We recommend posting a new thread for an updated or more current response.\n"
|
||||
"- Posting on a thread with '+1' or other short replies. There's no need to constantly bump a thread and make finding replies difficult. Replies are great for constructive feedback, while the '+1' button is to show your support for the content.\n"
|
||||
"- Comments that are excessively long or gibberish. Making comments such as repeating the same letter or have little to no intended purpose, fall under this rule. Comments that are in a different language are exempt.\n"
|
||||
"- Excessive formatting. UPPERCASE, Bold, and italics can be nice with moderate use, but please do not use them throughout the entire post.\n"
|
||||
"\bt3. Keep swearing to a minimum.\bw Comments or saves containing swearing are at risk of being deleted. This also includes swearing in other languages.\n"
|
||||
"\bt4. Refrain from uploading sexually explicit, offensive, or other inappropriate materials.\bw\n"
|
||||
"- These include, but are not limited to: sex, drugs, racism, excessive politics, or anything that offends or insults a group of people.\n"
|
||||
"- Reference to these topics in other languages is also prohibited. Do not attempt to bypass this rule.\n"
|
||||
"- Posting URLs or images that violate this rule is prohibited. This includes links or text in your profile information.\n"
|
||||
"\bt5. Do not advertise third-party games, sites, or other places not related to The Powder Toy.\bw\n"
|
||||
"- Mainly this rule is intended to prevent people going through and advertising their own games and products.\n"
|
||||
"- Unauthorized or unofficial community gathering places, such as Discord, are prohibited.\n"
|
||||
"\bt6. Trolling is not allowed.\bw As with some rules, there's no clear definition. Users who repeatedly troll are far more likely to be banned and recieve longer bans than others.\n"
|
||||
"\bt7. Do not impersonate anyone.\bw Registering accounts with names intentionally similar to other users in our community or other online communities is prohibited.\n"
|
||||
"\bt8. Do not post about moderator decisions or issues.\bw If there is a problem regarding a ban on your account or content removal, please contact a moderator through the messages system. Otherwise, discussion about moderator actions should be avoided.\n"
|
||||
"\bt9. Avoid backseat moderating.\bw Moderators are the ones who make the decisions. Users should refrain from threatening bans or possible results from breaking a rule. If there is a possible issue or you are unsure, we recommend reporting the issue through the 'Report' button or via the messaging system on the website.\n"
|
||||
"\bt10. Condoning of breaking common laws is prohibited.\bw The jurisdiction of which country's laws applies is not clear, but there are some common ones to know. These include, but not limited to:\n"
|
||||
"- Piracy of software, music, bagels, etc.\n"
|
||||
"- Hacking / Stealing accounts\n"
|
||||
"- Theft / Fraud\n"
|
||||
"\bt11. Do not stalk or harass any user.\bw This has been a growing problem in recent years by different methods, but generally these include:\n"
|
||||
"- 'Doxing' user(s) to find where they live or their real identity\n"
|
||||
"- Constantly messaging a user when they wish to refrain from any contact\n"
|
||||
"- Mass downvoting saves\n"
|
||||
"- Posting rude or unnecessary comments on someone's content (saves, forum threads, etc)\n"
|
||||
"- Coercing a group of users to 'target' a user\n"
|
||||
"- Personal arguments or hatred. This could be arguing in the comments or making hate saves\n"
|
||||
"- Discrimination, in general, of people. This could be religious, ethnic, etc.\n"
|
||||
"\n"
|
||||
"\boSection G: In-Game Rules\n"
|
||||
"\bwThis section of the rules is focused on in-game actions. Though, Section S also applies in-game, the following rules are more specialized to in-game community interaction.\n"
|
||||
"\bt1. Don't claim other people's work.\bw This could be simply re-uploading another user's or utilizing large sections of saves. Derivative works are allowed, with proper usage. Should you utilize someone's work, by default you must credit the author. Unless the author has explicitly noted different usage terms, this is the standard policy. Derivative works are characterized by innovative usage and originality percentage (ie. how much is original versus someone's work?). Stolen saves will be unpublished or disabled.\n"
|
||||
"\bt2. Self-voting or vote fraud is not allowed.\bw This is defined as making multiple accounts to vote on your own saves or the saves of others. We enforce this rule strictly, therefore, you must understand that there are very few successful ban appeals. Please ensure you and other accounts are not voting from the same household. All alternate accounts will be permanently banned, the main account will be temporarily banned and any affected saves will be disabaled.\n"
|
||||
"\bt3. Asking for votes of any kind is frowned upon.\bw Saves which do this will be unpublished until the issue is fixed. Examples of such that are under this rules are:\n"
|
||||
"- Signs that may hint at voting up or down. The signature green arrow or asking for votes goes under this rule.\n"
|
||||
"- Gimmicks that ask for votes. These might be a total number of votes in exchange for something, like '100 votes and I'll make a better version'. This is what we define as vote farming. Any type of vote farming is not allowed.\n"
|
||||
"- Asking for votes in return for usage of a save or for any other reason is prohibited.\n"
|
||||
"\bt4. Do not spam.\bw As mentioned earlier, there are no standards for what counts as spam. Here are some examples that may qualify as spamming:\n"
|
||||
"- Uploading or re-uploading similar saves within a short amount of time. Don't try to circumvent the system to have your saves seen/voted by people. This includes uploading 'junk' or 'blank' saves with little to no purpose. These saves will be unpublished.\n"
|
||||
"- Uploading text-only saves. These may be announcements or looking for help of sorts. We have the forums and comments area available for many purposes these text-only saves would serve. These saves will be removed from front page.\n"
|
||||
"- Uploading art saves is not strictly prohibited, but may result in a front-page demotion. We like to see usage of the variety of elements in a creative manner. Lack of these factors (such as in deco-only saves) will typically result in a front-page demotion\n"
|
||||
"\bt5. Refrain from uploading sexually explicit or other inappropriate materials. These saves will be deleted and will lead to a ban.\bw\n"
|
||||
"- These include, but are not limited to: sex, drugs, racism, excessive politics, or anything that offends or insults a group of people.\n"
|
||||
"- Don't try to circumvent this rule. Anything that intentionally refers to these concepts/ideas by direct or indirect means falls under this rule.\n"
|
||||
"- Reference to these topics in other languages is also prohibited. Do not attempt to bypass this rule.\n"
|
||||
"- Posting URLs or images that violate this rule is prohibited. This includes links or text in your profile information.\n"
|
||||
"\bt6. Image plotting is strictly prohibited.\bw This includes usage of scripting or any third-party tools to plot or create a save for you. Saves using CGI will be deleted and you may receive a ban.\n"
|
||||
"\bt7. Keep logos and signs to a minimum.\bw These saves may be removed from front page. Items that this rule restricts are:\n"
|
||||
"- Excessive logos placed\n"
|
||||
"- Signs without intended purpose\n"
|
||||
"- Fake update or notifications signs\n"
|
||||
"- Linking other saves that have no related purposes\n"
|
||||
"\bt8. Do not place offtopic or inappropriate tags.\bw Tags are only there to improve search results. They should generally only be one word descriptions of the save. Sentences or subjective tags may be deleted. Inappropriate or offensive tags will likely get you banned.\n"
|
||||
"\bt9. Intentional lag inducing or crashing saves are prohibited.\bw If the majority of users are writing about the save causing crashes or lag, then the save will fall under this rule. These saves will be removed from front page or disabled.\n"
|
||||
"\bt10. Do not misuse the reporting system.\bw Sending in report reasons such as 'bad save' or gibberish wastes our time. Unless the issue pertains to a possible rule violation or community issue, please refrain from sending a report. If you think the save violates or poses a community issue, send a report anyway! Bans will never happen if you are reporting a save in good faith.\n"
|
||||
"\bt11. Do not ask for saves to be demoted or removed from the front-page.\bw Unless the save violates any rules, it will stay on the front-page. There is no exception to this rule for art saves, please do not report art either.\n"
|
||||
"\n"
|
||||
"\boSection R: Other\n"
|
||||
"\bwModerators may interpret these rules as they see fit. Not all rules are equal, some are enforced less than others. Moderators make the final decision on what is and isn't against the rules, but we have made our best effort here to cover all unwanted behavior here. Notice will be posted in this thread whenever the rules are updated.\n"
|
||||
"\n"
|
||||
"Violation of these rules may result in removal of posts / comments, unpublishing or disabling saves, removing saves from front page, or in more extreme cases, a temporary or permanent ban. There are various manual and automated measures in place to enforce these rules. The severity and resulting decisions may not be consistent between moderators.\n"
|
||||
"\n"
|
||||
"If you have any questions about what is and isn't against the rules, feel free to contact a moderator.";
|
||||
}
|
||||
};
|
||||
|
||||
Locale const &Locale_EN = LocaleEN{};
|
12
data/localization/List.h
Normal file
@ -0,0 +1,12 @@
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "common/Localization.h"
|
||||
|
||||
extern Locale const &Locale_EN;
|
||||
|
||||
const std::vector<Locale const *> locales =
|
||||
{
|
||||
&Locale_EN,
|
||||
};
|
290
fonttool.py
@ -1,290 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import bz2
|
||||
import math
|
||||
import re
|
||||
import argparse
|
||||
|
||||
CP_MAX = 0x10FFFF
|
||||
FONT_CPP = "resources/font.bz2"
|
||||
FONT_HEIGHT = 12
|
||||
|
||||
|
||||
class ReadBDFError(RuntimeError):
|
||||
def __init__(self, line_number, message):
|
||||
super().__init__(self, 'line %i: %s' % (line_number, message))
|
||||
|
||||
|
||||
class FontTool:
|
||||
def __init__(self, file):
|
||||
self.file = file
|
||||
with open(self.file, 'rb') as font_cpp:
|
||||
font_cpp_data = bz2.decompress(font_cpp.read())
|
||||
i = 0
|
||||
self.code_points = [False for _ in range(CP_MAX + 2)]
|
||||
while i < len(font_cpp_data):
|
||||
cp = font_cpp_data[i] | (font_cpp_data[i + 1] << 8) | (font_cpp_data[i + 2] << 16)
|
||||
width = font_cpp_data[i + 3]
|
||||
n = i + 4 + 3 * width
|
||||
self.code_points[cp] = font_cpp_data[(i + 3): n]
|
||||
i = n
|
||||
|
||||
def commit(self):
|
||||
l = []
|
||||
for i, data in enumerate(self.code_points):
|
||||
if data:
|
||||
l.append(i & 0xFF)
|
||||
l.append((i >> 8) & 0xFF)
|
||||
l.append((i >> 16) & 0xFF)
|
||||
l += data
|
||||
with open(self.file, 'wb') as font_cpp:
|
||||
font_cpp.write(bz2.compress(bytes(l)))
|
||||
|
||||
def pack(cp_matrix):
|
||||
width = 0
|
||||
for row in cp_matrix:
|
||||
if width < len(row):
|
||||
width = len(row)
|
||||
cp_data = [width]
|
||||
bits = 8
|
||||
for row in cp_matrix:
|
||||
padded = row + [0] * (width - len(row))
|
||||
for cv in padded:
|
||||
if bits == 8:
|
||||
cp_data.append(0)
|
||||
bits = 0
|
||||
cp_data[-1] |= (cv & 3) << bits
|
||||
bits += 2
|
||||
return cp_data
|
||||
|
||||
def unpack(cp_data):
|
||||
ptr = 1
|
||||
bits = 0
|
||||
buf = 0
|
||||
cp_matrix = []
|
||||
for y in range(FONT_HEIGHT):
|
||||
cp_matrix.append([])
|
||||
for x in range(cp_data[0]):
|
||||
if bits == 0:
|
||||
buf = cp_data[ptr]
|
||||
ptr += 1
|
||||
bits = 8
|
||||
cp_matrix[-1].append(buf & 3)
|
||||
buf >>= 2
|
||||
bits -= 2
|
||||
return cp_matrix
|
||||
|
||||
def dump(self, i, print):
|
||||
lut = [' ', '░░', '▒▒', '▓▓']
|
||||
if self.code_points[i]:
|
||||
print('code point %i (%c)' % (i, i))
|
||||
print('')
|
||||
for l in [''.join([lut[ch] for ch in row]) for row in FontTool.unpack(self.code_points[i])]:
|
||||
print(l)
|
||||
print('')
|
||||
else:
|
||||
print('code point %i (%c) is not available' % (i, i))
|
||||
|
||||
|
||||
class RawReader:
|
||||
def __init__(self, path):
|
||||
self.code_points = [False for _ in range(CP_MAX + 2)]
|
||||
with open(path) as raw:
|
||||
items = [int(v) for v in re.findall(r'[0-9]+', raw.read())]
|
||||
ptr = 0
|
||||
while ptr <= len(items) - 2:
|
||||
cp = items[ptr]
|
||||
width = items[ptr + 1]
|
||||
ptr += 2
|
||||
matrix = []
|
||||
for i in range(ptr, ptr + width * FONT_HEIGHT, width):
|
||||
matrix.append(items[i: (i + width)])
|
||||
ptr += width * FONT_HEIGHT
|
||||
self.code_points[cp] = FontTool.pack(matrix)
|
||||
|
||||
|
||||
class BDFReader:
|
||||
|
||||
def __init__(self, path, xoffs, yoffs):
|
||||
self.code_points = [False for _ in range(CP_MAX + 2)]
|
||||
item_re = re.compile(r'[^ \n\r]+')
|
||||
with open(path) as bdf:
|
||||
global_dw = False
|
||||
startchar = False
|
||||
bitmap = False
|
||||
char_dw = False
|
||||
char_cp = False
|
||||
char_bbx = False
|
||||
skip = 0
|
||||
for line_number, line in enumerate(bdf):
|
||||
if skip:
|
||||
skip -= 1
|
||||
continue
|
||||
items = re.findall(item_re, line)
|
||||
if startchar and items[0] == 'ENDCHAR':
|
||||
if len(bitmap) != char_bbx[1]:
|
||||
raise ReadBDFError(line_number, "invalid bitmap data")
|
||||
cp_matrix = []
|
||||
for y in range(FONT_HEIGHT):
|
||||
cp_matrix.append([])
|
||||
for x in range(char_dw):
|
||||
cv = 0
|
||||
xx = x + xoffs
|
||||
yy = FONT_HEIGHT - 1 - y + yoffs
|
||||
if char_bbx[2] <= xx < char_bbx[0] + char_bbx[2] and char_bbx[3] <= yy < char_bbx[1] + \
|
||||
char_bbx[3]:
|
||||
cv = bitmap[char_bbx[1] - 1 - (yy - char_bbx[3])][xx - char_bbx[2]] * 3
|
||||
cp_matrix[-1].append(cv)
|
||||
self.code_points[char_cp] = FontTool.pack(cp_matrix)
|
||||
startchar = False
|
||||
bitmap = False
|
||||
char_dw = False
|
||||
char_cp = False
|
||||
char_bbx = False
|
||||
elif bitmap != False:
|
||||
if len(items) != 1:
|
||||
raise ReadBDFError(line_number, "missing bitmap data")
|
||||
bits = []
|
||||
for ch in items[0]:
|
||||
cv = int(ch, 16)
|
||||
bits += [cv & 8 and 1 or 0, cv & 4 and 1 or 0, cv & 2 and 1 or 0, cv & 1 and 1 or 0]
|
||||
bitmap.append(bits[: char_bbx[0]])
|
||||
elif items[0] == 'SIZE':
|
||||
if len(items) != 4:
|
||||
raise ReadBDFError(line_number, "invalid directive")
|
||||
elif items[0] == 'FONTBOUNDINGBOX':
|
||||
if len(items) != 5:
|
||||
raise ReadBDFError(line_number, "invalid directive")
|
||||
elif not startchar and items[0] == 'STARTCHAR':
|
||||
startchar = True
|
||||
char_dw = global_dw
|
||||
elif items[0] == 'STARTPROPERTIES':
|
||||
if len(items) != 2:
|
||||
raise ReadBDFError(line_number, "invalid directive")
|
||||
skip = int(items[1]) + 1
|
||||
elif startchar and items[0] == 'BITMAP':
|
||||
bitmap = []
|
||||
elif startchar and items[0] == 'BBX':
|
||||
if len(items) != 5:
|
||||
raise ReadBDFError(line_number, "invalid directive")
|
||||
char_bbx = [int(items[1]), int(items[2]), int(items[3]), int(items[4])]
|
||||
elif startchar and items[0] == 'ENCODING':
|
||||
if len(items) != 2:
|
||||
raise ReadBDFError(line_number, "invalid directive")
|
||||
char_cp = int(items[1])
|
||||
elif items[0] == 'METRICSSET':
|
||||
if len(items) != 2:
|
||||
raise ReadBDFError(line_number, "invalid directive")
|
||||
if int(items[1]) == 1:
|
||||
raise ReadBDFError(line_number, "font does not support writing direction 0")
|
||||
elif items[0] == 'DWIDTH':
|
||||
if len(items) != 3:
|
||||
raise ReadBDFError(line_number, "invalid directive")
|
||||
if int(items[2]) != 0:
|
||||
raise ReadBDFError(line_number, "vertical component of dwidth vector is non-zero")
|
||||
char_dw = int(items[1])
|
||||
if not startchar:
|
||||
global_dw = char_dw
|
||||
|
||||
def pad_str(s, pad, n):
|
||||
return s + pad * (n - len(s))
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
parser = argparse.ArgumentParser("fonttool.py", description="font tools for managing fonts, this script can be"
|
||||
" imported as a module",
|
||||
fromfile_prefix_chars="@")
|
||||
command = parser.add_subparsers(dest="command", required=True)
|
||||
|
||||
addbdf = command.add_parser("addbdf", help="Adds BDF Formated Font")
|
||||
addbdf.add_argument("first", metavar="FIRST", type=int)
|
||||
addbdf.add_argument("last", metavar="LAST", type=int)
|
||||
addbdf.add_argument("bdffile", metavar="BDFFILE", help="BDF is an archaic bitmap font format")
|
||||
addbdf.add_argument("xoffs", metavar="XOFFS", nargs="?", default=0, type=int, help="Defaults to 0")
|
||||
addbdf.add_argument("yoffs", metavar="YOFFS", nargs="?", default=0, type=int, help="Defaults to 0")
|
||||
|
||||
addraw = command.add_parser("addraw", help="Adds a Raw Formated Font")
|
||||
addraw.add_argument("first", metavar="FIRST", type=int)
|
||||
addraw.add_argument("last", metavar="LAST", type=int)
|
||||
addraw.add_argument("rawfile", metavar="RAWFILE", help=""""Raw" files are simply ASCII-encoded white-space delimited \
|
||||
lists
|
||||
of decimal integer constants. These lists of integers encode
|
||||
characters as any number of consecutive character description
|
||||
structures laid out as follows:
|
||||
* the code point corresponding to the character being described;
|
||||
* the width in pixels of the character being described;
|
||||
* width times %i brightness levels between 0 and 3, a row-major matrix.""")
|
||||
|
||||
remove = command.add_parser("remove", help="Remove a range of characters")
|
||||
remove.add_argument("first", metavar="FIRST", type=int)
|
||||
remove.add_argument("last", metavar="LAST", type=int, default=None, nargs="?", help="Defaults to FIRST")
|
||||
|
||||
copy = command.add_parser("copy", help="Copy a range of characters to another range")
|
||||
copy.add_argument("dest", metavar="DSTFIRST", type=int)
|
||||
copy.add_argument("first", metavar="SRCFIRST", type=int)
|
||||
copy.add_argument("last", metavar="SRCLAST", type=int, default=None, nargs="?", help="Defaults to SRCFIRST")
|
||||
|
||||
inspect = command.add_parser("inspect", help="Inspect a range of characters")
|
||||
inspect.add_argument("first", metavar="FIRST", type=int)
|
||||
inspect.add_argument("last", metavar="LAST", type=int, default=None, nargs="?", help="Defaults to FIRST")
|
||||
|
||||
diff = command.add_parser("diff", help="Prints subranges that changed between the current and an external font file")
|
||||
diff.add_argument("external", metavar="EXTERNAL", help="External font.bz2")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if 'first' in args:
|
||||
cp_first = args.first
|
||||
if args.last is None:
|
||||
cp_last = cp_first
|
||||
else:
|
||||
cp_last = args.last
|
||||
if cp_first < 0 or cp_last > CP_MAX or cp_first > cp_last:
|
||||
print('invalid range')
|
||||
exit(1)
|
||||
|
||||
ft = FontTool(FONT_CPP)
|
||||
|
||||
if args.command == "addbdf":
|
||||
xoffs = args.xoffs
|
||||
yoffs = args.yoffs
|
||||
bdfr = BDFReader(args.bdffile, xoffs, yoffs)
|
||||
for i in range(cp_first, cp_last + 1):
|
||||
if bdfr.code_points[i] and not ft.code_points[i]:
|
||||
ft.code_points[i] = bdfr.code_points[i]
|
||||
ft.commit()
|
||||
elif args.command == 'addraw':
|
||||
rr = RawReader(args.rawfile)
|
||||
for i in range(cp_first, cp_last + 1):
|
||||
if rr.code_points[i] and not ft.code_points[i]:
|
||||
ft.code_points[i] = rr.code_points[i]
|
||||
ft.commit()
|
||||
elif args.command == 'remove':
|
||||
for i in range(cp_first, cp_last + 1):
|
||||
ft.code_points[i] = False
|
||||
ft.commit()
|
||||
elif args.command == 'copy':
|
||||
for i in range(cp_first, cp_last + 1):
|
||||
ft.code_points[i + (args.dest - cp_first)] = ft.code_points[i]
|
||||
ft.commit()
|
||||
elif args.command == 'inspect':
|
||||
for i in range(cp_first, cp_last + 1):
|
||||
ft.dump(i, print)
|
||||
elif args.command == 'diff':
|
||||
pad_to = 50
|
||||
eft = FontTool(args.external)
|
||||
for i in range(0, CP_MAX + 1):
|
||||
if eft.code_points[i] != ft.code_points[i]:
|
||||
cur = []
|
||||
def add_cur(line):
|
||||
global cur
|
||||
cur.append(line)
|
||||
ft.dump(i, add_cur)
|
||||
ext = []
|
||||
def add_ext(line):
|
||||
global ext
|
||||
ext.append(line)
|
||||
eft.dump(i, add_ext)
|
||||
print('#' * (2 * pad_to + 7))
|
||||
for j in range(max(len(cur), len(ext))):
|
||||
print('# ' + pad_str(j < len(cur) and cur[j] or '', ' ', pad_to) + ' # ' + pad_str(j < len(ext) and ext[j] or '', ' ', pad_to) + ' #')
|
484
meson.build
@ -1,484 +0,0 @@
|
||||
project(
|
||||
'the-powder-toy',
|
||||
[ 'c', 'cpp' ],
|
||||
version: 'the.cake.is.a.lie',
|
||||
default_options: [
|
||||
'c_std=c99',
|
||||
'cpp_std=c++17',
|
||||
'cpp_rtti=false',
|
||||
'build.c_std=c99', # used by to_array
|
||||
'build.cpp_std=c++17', # used by to_array
|
||||
'build.cpp_rtti=false', # used by to_array
|
||||
],
|
||||
meson_version: '>=0.64.0',
|
||||
)
|
||||
|
||||
if get_option('prepare')
|
||||
# we're being run by prepare.py in a ghactions workflow only to determine the values of options; exit early
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
fs = import('fs')
|
||||
to_array = generator(
|
||||
executable('toarray', sources: 'resources/ToArray.cpp', native: true),
|
||||
output: [ '@PLAINNAME@.cpp', '@PLAINNAME@.h' ],
|
||||
arguments: [ '@OUTPUT0@', '@OUTPUT1@', '@INPUT@', '@EXTRA_ARGS@' ]
|
||||
)
|
||||
|
||||
render_icons_with_inkscape = get_option('render_icons_with_inkscape')
|
||||
inkscape = find_program('inkscape', required: render_icons_with_inkscape)
|
||||
|
||||
c_compiler = meson.get_compiler('c')
|
||||
|
||||
is_x86 = host_machine.cpu_family() in [ 'x86', 'x86_64' ]
|
||||
is_64bit = host_machine.cpu_family() in [ 'aarch64', 'x86_64' ]
|
||||
is_msvc = c_compiler.get_id() in [ 'msvc' ]
|
||||
|
||||
host_arch = host_machine.cpu_family()
|
||||
host_platform = host_machine.system()
|
||||
# educated guesses follow, PRs welcome
|
||||
if c_compiler.get_id() in [ 'msvc' ]
|
||||
if host_platform != 'windows'
|
||||
error('this seems fishy')
|
||||
endif
|
||||
host_libc = 'msvc'
|
||||
elif c_compiler.get_id() in [ 'gcc' ] and host_platform == 'windows'
|
||||
host_libc = 'mingw'
|
||||
elif host_platform in [ 'darwin' ]
|
||||
host_libc = 'macos'
|
||||
elif host_platform in [ 'emscripten' ]
|
||||
host_platform = 'emscripten'
|
||||
host_libc = 'emscripten'
|
||||
elif host_platform in [ 'android' ]
|
||||
host_platform = 'android'
|
||||
host_libc = 'bionic'
|
||||
else
|
||||
if host_platform != 'linux'
|
||||
# TODO: maybe use 'default' in place of 'linux', or use something other than host_platform where details such as desktop integration are concerned
|
||||
warning('host platform is not linux but we will pretend that it is')
|
||||
host_platform = 'linux'
|
||||
endif
|
||||
host_libc = 'gnu'
|
||||
endif
|
||||
|
||||
static_variant = get_option('static')
|
||||
if static_variant != 'prebuilt' and host_platform == 'android'
|
||||
warning('only prebuilt libs are supported for android')
|
||||
static_variant = 'prebuilt'
|
||||
endif
|
||||
if static_variant == 'system' and host_platform == 'windows' and host_libc == 'msvc'
|
||||
warning('no way to find system libs for msvc on windows')
|
||||
static_variant = 'prebuilt'
|
||||
endif
|
||||
|
||||
is_static = static_variant != 'none'
|
||||
is_debug = get_option('optimization') in [ '0', 'g' ]
|
||||
app_exe = get_option('app_exe')
|
||||
|
||||
tpt_libs_static = 'none'
|
||||
if static_variant == 'prebuilt'
|
||||
tpt_libs_static = 'static'
|
||||
endif
|
||||
if static_variant == 'none' and host_platform == 'windows' and host_libc == 'msvc'
|
||||
tpt_libs_static = 'dynamic'
|
||||
endif
|
||||
tpt_libs_debug = is_debug ? 'debug' : 'release'
|
||||
tpt_libs_variant = '@0@-@1@-@2@-@3@'.format(host_arch, host_platform, host_libc, tpt_libs_static)
|
||||
tpt_libs_vtag = get_option('tpt_libs_vtag')
|
||||
if tpt_libs_vtag == ''
|
||||
tpt_libs_vtag = 'v20240112165024'
|
||||
endif
|
||||
if tpt_libs_static != 'none'
|
||||
if tpt_libs_variant not in [
|
||||
'x86_64-linux-gnu-static',
|
||||
'x86_64-windows-mingw-static',
|
||||
'x86_64-windows-msvc-static',
|
||||
'x86_64-windows-msvc-dynamic',
|
||||
'x86-windows-msvc-static',
|
||||
'x86-windows-msvc-dynamic',
|
||||
'x86_64-darwin-macos-static',
|
||||
'aarch64-darwin-macos-static',
|
||||
'x86-android-bionic-static',
|
||||
'x86_64-android-bionic-static',
|
||||
'arm-android-bionic-static',
|
||||
'aarch64-android-bionic-static',
|
||||
'wasm32-emscripten-emscripten-static',
|
||||
]
|
||||
error('no prebuilt @0@ libraries are currently provided'.format(tpt_libs_variant))
|
||||
endif
|
||||
tpt_libs = subproject('tpt-libs-prebuilt-@0@-@1@-@2@'.format(tpt_libs_variant, tpt_libs_debug, tpt_libs_vtag))
|
||||
else
|
||||
if get_option('workaround_elusive_bzip2')
|
||||
bzip2_lib_name = get_option('workaround_elusive_bzip2_lib_name')
|
||||
bzip2_include_name = get_option('workaround_elusive_bzip2_include_name')
|
||||
bzip2_lib_dir = get_option('workaround_elusive_bzip2_lib_dir')
|
||||
bzip2_include_dir = include_directories(get_option('workaround_elusive_bzip2_include_dir'))
|
||||
bzip2_static = get_option('workaround_elusive_bzip2_static')
|
||||
meson.override_dependency('bzip2', declare_dependency(
|
||||
dependencies: c_compiler.find_library(
|
||||
bzip2_lib_name,
|
||||
has_headers: bzip2_include_name,
|
||||
dirs: bzip2_lib_dir,
|
||||
header_include_directories: bzip2_include_dir,
|
||||
static: bzip2_static,
|
||||
),
|
||||
include_directories: bzip2_include_dir,
|
||||
))
|
||||
endif
|
||||
endif
|
||||
|
||||
x86_sse_level_str = get_option('x86_sse')
|
||||
if x86_sse_level_str == 'auto'
|
||||
x86_sse_level = 20
|
||||
if not is_x86 or not is_64bit or host_platform == 'darwin' or (is_64bit and is_msvc)
|
||||
x86_sse_level = 0
|
||||
endif
|
||||
elif x86_sse_level_str == 'sse3'
|
||||
x86_sse_level = 30
|
||||
elif x86_sse_level_str == 'sse2'
|
||||
x86_sse_level = 20
|
||||
elif x86_sse_level_str == 'sse'
|
||||
x86_sse_level = 10
|
||||
elif x86_sse_level_str == 'none'
|
||||
x86_sse_level = 0
|
||||
endif
|
||||
|
||||
lua_variant = get_option('lua')
|
||||
if lua_variant == 'auto'
|
||||
if host_platform == 'emscripten'
|
||||
lua_variant = 'lua5.2'
|
||||
else
|
||||
lua_variant = 'luajit'
|
||||
endif
|
||||
endif
|
||||
if lua_variant == 'luajit' and host_platform == 'emscripten'
|
||||
error('luajit does not work with emscripten')
|
||||
endif
|
||||
if lua_variant == 'none'
|
||||
lua_dep = []
|
||||
elif lua_variant == 'lua5.1' or lua_variant == 'lua5.2'
|
||||
lua_dep = dependency(lua_variant + '-c++', static: is_static, required: false)
|
||||
if not lua_dep.found()
|
||||
if not get_option('workaround_noncpp_lua')
|
||||
error('your system @0@ is not compatible with C++, configure with -Dworkaround_noncpp_lua=true to disable this error'.format(lua_variant))
|
||||
endif
|
||||
lua_dep = dependency(lua_variant, static: is_static)
|
||||
endif
|
||||
elif lua_variant == 'luajit'
|
||||
lua_dep = dependency('luajit', static: is_static)
|
||||
endif
|
||||
|
||||
enable_http = get_option('http')
|
||||
if host_platform == 'android'
|
||||
android_ndk_toolchain_prefix = meson.get_external_property('android_ndk_toolchain_prefix')
|
||||
android_platform = meson.get_external_property('android_platform')
|
||||
tpt_libs_android_toolchain_prefix = tpt_libs.get_variable('android_toolchain_prefix')
|
||||
tpt_libs_android_system_version = tpt_libs.get_variable('android_system_version')
|
||||
tpt_libs_android_platform = tpt_libs.get_variable('android_platform')
|
||||
if '@0@@1@-'.format(tpt_libs_android_toolchain_prefix, tpt_libs_android_system_version) != android_ndk_toolchain_prefix
|
||||
error('tpt-libs android toolchain mismatch')
|
||||
endif
|
||||
if tpt_libs_android_platform != android_platform
|
||||
error('tpt-libs android platform mismatch')
|
||||
endif
|
||||
endif
|
||||
curl_dep = []
|
||||
if enable_http and host_platform != 'emscripten'
|
||||
curl_dep = dependency('libcurl', static: is_static)
|
||||
endif
|
||||
|
||||
project_link_args = []
|
||||
project_c_args = []
|
||||
project_cpp_args = []
|
||||
|
||||
fftw_dep = dependency('fftw3f', static: is_static)
|
||||
threads_dep = dependency('threads')
|
||||
if host_platform == 'emscripten'
|
||||
zlib_dep = []
|
||||
png_dep = []
|
||||
sdl2_dep = []
|
||||
bzip2_dep = []
|
||||
project_link_args += [
|
||||
'--no-heap-copy',
|
||||
'-s', 'WASM=1',
|
||||
'-s', 'ALLOW_MEMORY_GROWTH=1',
|
||||
'-s', 'FORCE_FILESYSTEM=1',
|
||||
'-s', 'EXIT_RUNTIME=0',
|
||||
'-s', 'EXPORTED_RUNTIME_METHODS=ccall,cwrap',
|
||||
'-s', 'FS_DEBUG',
|
||||
'-s', 'MODULARIZE',
|
||||
'-s', 'EXPORT_NAME=create_' + app_exe,
|
||||
'-Wl,-u,_emscripten_run_callback_on_thread',
|
||||
'-lidbfs.js',
|
||||
]
|
||||
emcc_args = [
|
||||
'-s', 'USE_SDL=2',
|
||||
'-s', 'USE_BZIP2=1',
|
||||
'-s', 'USE_LIBPNG',
|
||||
'-s', 'USE_ZLIB=1',
|
||||
'-s', 'DISABLE_EXCEPTION_CATCHING=0',
|
||||
]
|
||||
if is_debug
|
||||
project_link_args += [ '--source-map-base=./' ]
|
||||
emcc_args += [ '-gsource-map' ]
|
||||
endif
|
||||
project_link_args += emcc_args
|
||||
project_c_args += emcc_args
|
||||
project_cpp_args += emcc_args
|
||||
else
|
||||
zlib_dep = dependency('zlib', static: is_static)
|
||||
png_dep = dependency('libpng16', static: is_static)
|
||||
sdl2_dep = dependency('sdl2', static: is_static)
|
||||
bzip2_dep = dependency('bzip2', static: is_static)
|
||||
endif
|
||||
json_dep = dependency('jsoncpp', static: is_static)
|
||||
|
||||
if is_msvc
|
||||
if x86_sse_level >= 30
|
||||
warning('SSE3 configured to be enabled but unavailable in msvc')
|
||||
x86_sse_level = 20
|
||||
endif
|
||||
if is_64bit and x86_sse_level > 0
|
||||
warning('SSE explicitly configured but unavailable in msvc targeting 64-bit machines')
|
||||
x86_sse_level = 0
|
||||
endif
|
||||
args_msvc = [
|
||||
'/GS',
|
||||
'/D_SCL_SECURE_NO_WARNINGS',
|
||||
'/DUNICODE',
|
||||
'/D_UNICODE',
|
||||
]
|
||||
if x86_sse_level >= 20
|
||||
args_msvc += [ '/arch:SSE2' ]
|
||||
elif x86_sse_level >= 10
|
||||
args_msvc += [ '/arch:SSE' ]
|
||||
endif
|
||||
if not is_debug
|
||||
args_msvc += [
|
||||
'/Oy-',
|
||||
'/fp:fast',
|
||||
'/GL',
|
||||
]
|
||||
project_link_args += [
|
||||
'/OPT:REF',
|
||||
'/OPT:ICF',
|
||||
'/LTCG',
|
||||
]
|
||||
endif
|
||||
project_c_args += args_msvc
|
||||
project_cpp_args += args_msvc
|
||||
else
|
||||
args_ccomp = []
|
||||
if host_platform == 'darwin' and x86_sse_level > 0
|
||||
message('SSE level explicitly configured but unavailable on macosx')
|
||||
x86_sse_level = 0
|
||||
endif
|
||||
if x86_sse_level >= 30
|
||||
args_ccomp += [ '-msse3' ]
|
||||
elif x86_sse_level >= 20
|
||||
args_ccomp += [ '-msse2' ]
|
||||
elif x86_sse_level >= 10
|
||||
args_ccomp += [ '-msse' ]
|
||||
endif
|
||||
if host_platform == 'windows'
|
||||
args_ccomp += [
|
||||
'-DUNICODE',
|
||||
'-D_UNICODE',
|
||||
]
|
||||
endif
|
||||
if not is_debug
|
||||
args_ccomp += [
|
||||
'-ftree-vectorize',
|
||||
'-funsafe-math-optimizations',
|
||||
'-ffast-math',
|
||||
'-fomit-frame-pointer',
|
||||
]
|
||||
endif
|
||||
if host_platform == 'android'
|
||||
if not is_64bit
|
||||
args_ccomp += [ '-U_FILE_OFFSET_BITS' ]
|
||||
endif
|
||||
# android doesn't ship libc++_shared.so, so we might as well link it statically;
|
||||
# the alternative would be to grab libc++_shared.so from the NDK and ship it with
|
||||
# the app alongside libpowder.so, and possibly add it to SDL's list of libraries to load
|
||||
project_link_args += [ '-static-libstdc++' ]
|
||||
endif
|
||||
project_c_args += args_ccomp + [
|
||||
'-Wno-implicit-fallthrough',
|
||||
'-Wno-missing-field-initializers',
|
||||
'-Wno-unused-result',
|
||||
'-Wno-unused-parameter',
|
||||
]
|
||||
project_cpp_args += args_ccomp + [
|
||||
'-Wno-invalid-offsetof',
|
||||
'-Wno-unused-result',
|
||||
'-Wno-missing-field-initializers',
|
||||
'-Wno-unused-parameter',
|
||||
]
|
||||
endif
|
||||
|
||||
if host_platform == 'windows'
|
||||
args_ccomp_win = [ '-D_WIN32_WINNT=0x0501', '-DNOMINMAX' ]
|
||||
windows_mod = import('windows')
|
||||
if is_static
|
||||
args_ccomp_win += [ '-DCURL_STATICLIB' ]
|
||||
if host_arch == 'x86_64'
|
||||
args_ccomp_win += [ '-DZLIB_WINAPI' ]
|
||||
endif
|
||||
endif
|
||||
if tpt_libs_static == 'dynamic'
|
||||
foreach input_output_condition : tpt_libs.get_variable('config_dlls')
|
||||
dll_input = input_output_condition[0]
|
||||
dll_output = input_output_condition[1]
|
||||
dll_condition = input_output_condition[2]
|
||||
do_copy = false
|
||||
if dll_condition == 'all'
|
||||
do_copy = true
|
||||
elif dll_condition == 'lua=' + lua_variant
|
||||
do_copy = true
|
||||
endif
|
||||
if do_copy
|
||||
fs.copyfile(dll_input, dll_output)
|
||||
endif
|
||||
endforeach
|
||||
endif
|
||||
project_c_args += args_ccomp_win
|
||||
project_cpp_args += args_ccomp_win
|
||||
endif
|
||||
|
||||
project_inc = include_directories([ 'src', 'resources' ])
|
||||
|
||||
if host_platform == 'windows'
|
||||
ident_platform = is_64bit ? 'WIN64' : 'WIN32'
|
||||
elif host_platform == 'linux'
|
||||
ident_platform = is_64bit ? 'LIN64' : 'LIN32'
|
||||
elif host_platform == 'darwin'
|
||||
ident_platform = host_arch == 'aarch64' ? 'MACOSARM' : 'MACOSX'
|
||||
else
|
||||
ident_platform = 'UNKNOWN'
|
||||
endif
|
||||
|
||||
project_deps = []
|
||||
data_files = []
|
||||
powder_deps = []
|
||||
|
||||
project_export_dynamic = false
|
||||
|
||||
subdir('src')
|
||||
subdir('resources')
|
||||
|
||||
powder_files += data_files
|
||||
render_files += data_files
|
||||
font_files += data_files
|
||||
|
||||
if host_platform == 'emscripten'
|
||||
project_link_args += [
|
||||
'-o', app_exe + '.js', # so we get a .wasm, and a .js
|
||||
]
|
||||
endif
|
||||
if get_option('export_lua_symbols')
|
||||
if is_static and lua_variant != 'none' and not project_export_dynamic
|
||||
if host_platform == 'windows'
|
||||
error('Lua symbols are currently impossible to export correctly on Windows')
|
||||
elif c_compiler.has_link_argument('-Wl,--export-dynamic-symbol')
|
||||
project_link_args += [
|
||||
'-Wl,--export-dynamic-symbol=lua_*',
|
||||
'-Wl,--export-dynamic-symbol=luaL_*',
|
||||
'-Wl,--export-dynamic-symbol=luaopen_*',
|
||||
]
|
||||
else
|
||||
warning('your linker does not support -Wl,--export-dynamic-symbol so Meson will be instructed to export all symbols in order to enable loading Lua shared modules, which may blow up the size of the resulting binary')
|
||||
project_export_dynamic = true
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
if get_option('build_powder')
|
||||
powder_deps += project_deps + [
|
||||
threads_dep,
|
||||
zlib_dep,
|
||||
png_dep,
|
||||
sdl2_dep,
|
||||
lua_dep,
|
||||
curl_dep,
|
||||
fftw_dep,
|
||||
bzip2_dep,
|
||||
json_dep,
|
||||
]
|
||||
if host_platform == 'android'
|
||||
powder_sha = shared_library(
|
||||
app_exe,
|
||||
sources: powder_files,
|
||||
include_directories: project_inc,
|
||||
c_args: project_c_args,
|
||||
cpp_args: project_cpp_args,
|
||||
link_args: project_link_args,
|
||||
dependencies: powder_deps,
|
||||
)
|
||||
subdir('android')
|
||||
else
|
||||
executable(
|
||||
app_exe,
|
||||
sources: powder_files,
|
||||
include_directories: project_inc,
|
||||
c_args: project_c_args,
|
||||
cpp_args: project_cpp_args,
|
||||
win_subsystem: is_debug ? 'console' : 'windows',
|
||||
link_args: project_link_args,
|
||||
dependencies: powder_deps,
|
||||
export_dynamic: project_export_dynamic,
|
||||
install: true,
|
||||
)
|
||||
endif
|
||||
endif
|
||||
|
||||
if get_option('build_render')
|
||||
if host_platform == 'emscripten'
|
||||
error('render does not target emscripten')
|
||||
endif
|
||||
render_deps = project_deps + [
|
||||
threads_dep,
|
||||
zlib_dep,
|
||||
bzip2_dep,
|
||||
json_dep,
|
||||
png_dep,
|
||||
]
|
||||
render_link_args = project_link_args
|
||||
if host_platform == 'linux' and is_static
|
||||
render_link_args += [ '-static' ]
|
||||
endif
|
||||
executable(
|
||||
'render',
|
||||
sources: render_files,
|
||||
include_directories: project_inc,
|
||||
c_args: project_c_args,
|
||||
cpp_args: project_cpp_args,
|
||||
link_args: render_link_args,
|
||||
dependencies: render_deps,
|
||||
export_dynamic: project_export_dynamic,
|
||||
)
|
||||
endif
|
||||
|
||||
if get_option('build_font')
|
||||
if host_platform == 'emscripten'
|
||||
error('font does not target emscripten')
|
||||
endif
|
||||
font_deps = project_deps + [
|
||||
threads_dep,
|
||||
zlib_dep,
|
||||
png_dep,
|
||||
sdl2_dep,
|
||||
bzip2_dep,
|
||||
json_dep,
|
||||
]
|
||||
executable(
|
||||
'font',
|
||||
sources: font_files,
|
||||
include_directories: project_inc,
|
||||
c_args: project_c_args,
|
||||
cpp_args: project_cpp_args,
|
||||
link_args: project_link_args,
|
||||
dependencies: font_deps,
|
||||
export_dynamic: project_export_dynamic,
|
||||
)
|
||||
endif
|
@ -1,313 +0,0 @@
|
||||
option(
|
||||
'static',
|
||||
type: 'combo',
|
||||
choices: [ 'none', 'system', 'prebuilt' ],
|
||||
value: 'none',
|
||||
description: 'Build statically using libraries present on the system (\'system\') or using prebuilt libraries official builds use (\'prebuilt\')'
|
||||
)
|
||||
option(
|
||||
'beta',
|
||||
type: 'boolean',
|
||||
value: false,
|
||||
description: 'Beta build'
|
||||
)
|
||||
option(
|
||||
'ignore_updates',
|
||||
type: 'boolean',
|
||||
value: true,
|
||||
description: 'Don\'t show notifications about available updates'
|
||||
)
|
||||
option(
|
||||
'can_install',
|
||||
type: 'combo',
|
||||
choices: [ 'no', 'yes', 'yes_check', 'auto' ],
|
||||
value: 'auto',
|
||||
description: 'Disable (\'no\') or enable (\'yes\') setting up file and URL associations, or even offer to do it at startup (\'yes_check\')'
|
||||
)
|
||||
option(
|
||||
'http',
|
||||
type: 'boolean',
|
||||
value: true,
|
||||
description: 'Enable HTTP via libcurl'
|
||||
)
|
||||
option(
|
||||
'snapshot',
|
||||
type: 'boolean',
|
||||
value: false,
|
||||
description: 'Snapshot build'
|
||||
)
|
||||
option(
|
||||
'display_version_major',
|
||||
type: 'integer',
|
||||
min: 0,
|
||||
value: 98,
|
||||
description: 'Major component of the display version, should more or less map to the MINOR version in semantic versioning'
|
||||
)
|
||||
option(
|
||||
'display_version_minor',
|
||||
type: 'integer',
|
||||
min: 0,
|
||||
value: 2,
|
||||
description: 'Minor component of the display version, should more or less map to the PATCH version in semantic versioning'
|
||||
)
|
||||
option(
|
||||
'build_num',
|
||||
type: 'integer',
|
||||
min: 0,
|
||||
value: 365,
|
||||
description: 'Build number, should be strictly monotonously increasing across public releases'
|
||||
)
|
||||
option(
|
||||
'upstream_version_major',
|
||||
type: 'integer',
|
||||
min: 0,
|
||||
value: 98,
|
||||
description: 'Major component of the upstream display version, mod owners should not change this but merge upstream changes to it'
|
||||
)
|
||||
option(
|
||||
'upstream_version_minor',
|
||||
type: 'integer',
|
||||
min: 0,
|
||||
value: 2,
|
||||
description: 'Minor component of the upstream display version, mod owners should not change this but merge upstream changes to it'
|
||||
)
|
||||
option(
|
||||
'upstream_build_num',
|
||||
type: 'integer',
|
||||
min: 0,
|
||||
value: 365,
|
||||
description: 'Upstream build number, mod owners should not change this but merge upstream changes to it'
|
||||
)
|
||||
option(
|
||||
'mod_id',
|
||||
type: 'integer',
|
||||
min: 0,
|
||||
value: 0,
|
||||
description: 'Mod ID, used on the https://starcatcher.us/TPT build server, the build server will compile for all platforms for you and send updates in-game, see jacob1 to get a mod ID'
|
||||
)
|
||||
option(
|
||||
'lua',
|
||||
type: 'combo',
|
||||
choices: [ 'none', 'lua5.1', 'lua5.2', 'luajit', 'auto' ],
|
||||
value: 'auto',
|
||||
description: 'Lua library to use'
|
||||
)
|
||||
option(
|
||||
'x86_sse',
|
||||
type: 'combo',
|
||||
choices: [ 'none', 'sse', 'sse2', 'sse3', 'auto' ],
|
||||
value: 'auto',
|
||||
description: 'Enable SSE (available only on x86)'
|
||||
)
|
||||
option(
|
||||
'build_powder',
|
||||
type: 'boolean',
|
||||
value: true,
|
||||
description: 'Build the game'
|
||||
)
|
||||
option(
|
||||
'build_render',
|
||||
type: 'boolean',
|
||||
value: false,
|
||||
description: 'Build the thumbnail renderer'
|
||||
)
|
||||
option(
|
||||
'build_font',
|
||||
type: 'boolean',
|
||||
value: false,
|
||||
description: 'Build the font editor'
|
||||
)
|
||||
option(
|
||||
'server',
|
||||
type: 'string',
|
||||
value: 'powdertoy.co.uk',
|
||||
description: 'Simulation server'
|
||||
)
|
||||
option(
|
||||
'static_server',
|
||||
type: 'string',
|
||||
value: 'static.powdertoy.co.uk',
|
||||
description: 'Static simulation server'
|
||||
)
|
||||
option(
|
||||
'update_server',
|
||||
type: 'string',
|
||||
value: '',
|
||||
description: 'Update server, only used by snapshots and mods, see \'snapshot\' and \'mod_id\''
|
||||
)
|
||||
option(
|
||||
'workaround_noncpp_lua',
|
||||
type: 'boolean',
|
||||
value: false,
|
||||
description: 'Allow linking against a non-C++ system Lua'
|
||||
)
|
||||
option(
|
||||
'workaround_elusive_bzip2',
|
||||
type: 'boolean',
|
||||
value: true,
|
||||
description: 'acquire bzip2 dependency with find_library'
|
||||
)
|
||||
option(
|
||||
'workaround_elusive_bzip2_lib_name',
|
||||
type: 'string',
|
||||
value: 'bz2',
|
||||
description: 'bzip2 library name, see \'workaround_elusive_bzip2\''
|
||||
)
|
||||
option(
|
||||
'workaround_elusive_bzip2_lib_dir',
|
||||
type: 'string',
|
||||
value: '/usr/lib/x86_64-linux-gnu',
|
||||
description: 'bzip2 library directory, see \'workaround_elusive_bzip2\''
|
||||
)
|
||||
option(
|
||||
'workaround_elusive_bzip2_include_name',
|
||||
type: 'string',
|
||||
value: 'bzlib.h',
|
||||
description: 'bzip2 header name, see \'workaround_elusive_bzip2\''
|
||||
)
|
||||
option(
|
||||
'workaround_elusive_bzip2_include_dir',
|
||||
type: 'string',
|
||||
value: '/usr/include',
|
||||
description: 'bzip2 header directory, see \'workaround_elusive_bzip2\''
|
||||
)
|
||||
option(
|
||||
'workaround_elusive_bzip2_static',
|
||||
type: 'boolean',
|
||||
value: false,
|
||||
description: 'bzip2 static setting, see \'workaround_elusive_bzip2\''
|
||||
)
|
||||
option(
|
||||
'tpt_libs_vtag',
|
||||
type: 'string',
|
||||
value: '',
|
||||
description: 'tpt-libs vtag override, only used for tpt-libs development'
|
||||
)
|
||||
option(
|
||||
'android_keystore',
|
||||
type: 'string',
|
||||
value: '',
|
||||
description: 'Path to Java keystore for signing an APK, only used for Android development'
|
||||
)
|
||||
option(
|
||||
'android_keyalias',
|
||||
type: 'string',
|
||||
value: 'androidkey',
|
||||
description: 'Signing key alias for signing an APK, only used for Android development'
|
||||
)
|
||||
option(
|
||||
'app_name',
|
||||
type: 'string',
|
||||
value: 'The Powder Toy',
|
||||
description: 'App name, used for desktop integration and the window title, change if you work on a mod'
|
||||
)
|
||||
option(
|
||||
'app_comment',
|
||||
type: 'string',
|
||||
value: 'Physics sandbox game',
|
||||
description: 'App comment, used for desktop integration, change if you work on a mod'
|
||||
)
|
||||
option(
|
||||
'app_exe',
|
||||
type: 'string',
|
||||
value: 'powder',
|
||||
description: 'App executable name, used for desktop integration, change if you work on a mod'
|
||||
)
|
||||
option(
|
||||
'app_id',
|
||||
type: 'string',
|
||||
value: 'uk.co.powdertoy.tpt',
|
||||
description: 'App ID, a D-Bus well-known name, used for desktop integration, change if you work on a mod'
|
||||
)
|
||||
option(
|
||||
'app_data',
|
||||
type: 'string',
|
||||
value: 'The Powder Toy',
|
||||
description: 'App data directory name, do not change even if you work on a mod, only if you know what you are doing'
|
||||
)
|
||||
option(
|
||||
'app_vendor',
|
||||
type: 'string',
|
||||
value: 'powdertoy',
|
||||
description: 'App vendor prefix, used for desktop integration, do not change even if you work on a mod, only if you know what you are doing'
|
||||
)
|
||||
option(
|
||||
'enforce_https',
|
||||
type: 'boolean',
|
||||
value: true,
|
||||
description: 'Enforce encrypted HTTP traffic, may be disabled for debugging'
|
||||
)
|
||||
option(
|
||||
'secure_ciphers_only',
|
||||
type: 'boolean',
|
||||
value: false,
|
||||
description: 'Use only secure ciphers for encrypted HTTP traffic, please review cipher list before enabling'
|
||||
)
|
||||
option(
|
||||
'prepare',
|
||||
type: 'boolean',
|
||||
value: false,
|
||||
description: 'Used by ghactions workflows, not useful otherwise'
|
||||
)
|
||||
option(
|
||||
'render_icons_with_inkscape',
|
||||
type: 'feature',
|
||||
value: 'disabled',
|
||||
description: 'Render icons with Inkscape (inkscape binary needs to be in PATH)'
|
||||
)
|
||||
option(
|
||||
'resolve_vcs_tag',
|
||||
type: 'combo',
|
||||
choices: [ 'no', 'static_release_only', 'yes' ],
|
||||
value: 'static_release_only',
|
||||
description: 'Enable VCS tag resolution, introduces an always-stale custom target'
|
||||
)
|
||||
option(
|
||||
'manifest_copyright',
|
||||
type: 'string',
|
||||
value: 'Copyright © 2008-2011 Stanislaw K Skowrenek, Copyright © 2011-2023 Simon Robertshaw, Copyright © 2016-2023 jacob1',
|
||||
description: 'Copyright string, don\'t take too seriously, subject to change'
|
||||
)
|
||||
option(
|
||||
'manifest_macos_min_ver',
|
||||
type: 'string',
|
||||
value: '',
|
||||
description: 'MacOS minimum allowed platform version string, used by ghactions workflows, not useful otherwise'
|
||||
)
|
||||
option(
|
||||
'manifest_date',
|
||||
type: 'string',
|
||||
value: '',
|
||||
description: 'Build date string, used by ghactions workflows, not useful otherwise'
|
||||
)
|
||||
option(
|
||||
'platform_clipboard',
|
||||
type: 'boolean',
|
||||
value: true,
|
||||
description: 'Enable platform clipboard, allows copying simulation data between different windows'
|
||||
)
|
||||
option(
|
||||
'use_bluescreen',
|
||||
type: 'combo',
|
||||
choices: [ 'no', 'yes', 'auto' ],
|
||||
value: 'auto',
|
||||
description: 'Show blue error screen upon unhandled signals and exceptions'
|
||||
)
|
||||
option(
|
||||
'windows_icons',
|
||||
type: 'boolean',
|
||||
value: true,
|
||||
description: 'Add icon resources to the executable on Windows'
|
||||
)
|
||||
option(
|
||||
'windows_utf8cp',
|
||||
type: 'boolean',
|
||||
value: true,
|
||||
description: 'Ask Windows nicely for UTF-8 as the codepage'
|
||||
)
|
||||
option(
|
||||
'export_lua_symbols',
|
||||
type: 'boolean',
|
||||
value: false,
|
||||
description: 'Export Lua symbols to enable loading of Lua shared modules'
|
||||
)
|
77
newelement.py
Executable file
@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
import re
|
||||
|
||||
if len(sys.argv) != 2:
|
||||
name = input('element name: ')
|
||||
else:
|
||||
name = sys.argv[1]
|
||||
|
||||
if re.search('[^A-Z0-9-]', name):
|
||||
sys.exit('element names should only contain uppercase letters, digits and hyphens (you can change the Name property of the element to whatever later though, which is what shows up in menus)')
|
||||
|
||||
path = 'src/simulation/elements/' + name + '.cpp'
|
||||
|
||||
def get_elements():
|
||||
elements = dict()
|
||||
with open('src/simulation/ElementNumbers.h', 'r') as numbers:
|
||||
for nm, pt in re.findall('ELEMENT_DEFINE\\s*\\(\\s*(\\S+)\\s*,\\s*(\\d+)\\s*\\)', numbers.read()):
|
||||
elements[nm] = int(pt)
|
||||
return elements
|
||||
|
||||
elements = get_elements()
|
||||
if name in elements:
|
||||
sys.exit('element already exists')
|
||||
max_id = 0
|
||||
for nm, pt in elements.items():
|
||||
pt_id = int(pt)
|
||||
if max_id < pt_id:
|
||||
max_id = pt_id
|
||||
new_id = max_id + 1
|
||||
|
||||
with open(path, 'w') as elem:
|
||||
elem.write(r"""#include "simulation/ElementCommon.h"
|
||||
|
||||
static int update(UPDATE_FUNC_ARGS);
|
||||
static int graphics(GRAPHICS_FUNC_ARGS);
|
||||
|
||||
void Element::Element_{0}()
|
||||
{{
|
||||
Identifier = "DEFAULT_PT_{0}";
|
||||
Name = "{0}";
|
||||
Colour = PIXPACK(0xFFFFFF);
|
||||
MenuVisible = 1;
|
||||
MenuSection = SC_SPECIAL;
|
||||
Enabled = 1;
|
||||
|
||||
// element properties here
|
||||
|
||||
Update = &update;
|
||||
Graphics = &graphics;
|
||||
}}
|
||||
|
||||
static int update(UPDATE_FUNC_ARGS)
|
||||
{{
|
||||
// update code here
|
||||
|
||||
return 0;
|
||||
}}
|
||||
|
||||
static int graphics(GRAPHICS_FUNC_ARGS)
|
||||
{{
|
||||
// graphics code here
|
||||
// return 1 if nothing dymanic happens here
|
||||
|
||||
return 0;
|
||||
}}
|
||||
|
||||
""".format(name))
|
||||
elem.close()
|
||||
|
||||
print('element file \'{0}\' successfully created '.format(path))
|
||||
input('now add \'ELEMENT_DEFINE({0}, {1});\' to \'src/simulation/ElementNumbers.h\', then press enter'.format(name, str(new_id)))
|
||||
while True:
|
||||
elements = get_elements()
|
||||
if name in elements and elements[name] == new_id:
|
||||
break
|
||||
input('nope; try doing that again, then press enter')
|
@ -1,70 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>ptsave</string>
|
||||
</array>
|
||||
<key>CFBundleURLName</key>
|
||||
<string>Powder Toy Save URL</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleName</key>
|
||||
<string>@APPNAME@</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>icon_exe.icns</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>@MANIFEST_COPYRIGHT@</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>stm</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>icon_cps.icns</string>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Powder Toy Save</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Viewer</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>cps</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>icon_cps.icns</string>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Powder Toy Stamp</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Viewer</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>@APPEXE@</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>@APPID@</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>@DISPLAY_VERSION_MAJOR@.@DISPLAY_VERSION_MINOR@</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>@DISPLAY_VERSION_MAJOR@.@DISPLAY_VERSION_MINOR@ (build @BUILD_NUM@)</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>@MANIFEST_MACOS_MIN_VER@</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
</dict>
|
||||
</plist>
|
@ -1,137 +0,0 @@
|
||||
#include <cstdint>
|
||||
#include <cstring>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
static void writeU32LE(uint8_t *dest, uint32_t value)
|
||||
{
|
||||
dest[0] = uint8_t( value & 0xFF);
|
||||
dest[1] = uint8_t((value >> 8) & 0xFF);
|
||||
dest[2] = uint8_t((value >> 16) & 0xFF);
|
||||
dest[3] = uint8_t((value >> 24) & 0xFF);
|
||||
}
|
||||
|
||||
static uint32_t readU32BE(const uint8_t *src)
|
||||
{
|
||||
return uint32_t(src[3]) |
|
||||
(uint32_t(src[2]) << 8) |
|
||||
(uint32_t(src[1]) << 16) |
|
||||
(uint32_t(src[0]) << 24);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc < 3)
|
||||
{
|
||||
std::cerr << "usage: " << argv[0] << " OUTPUT INPUT..." << std::endl;
|
||||
exit(1);
|
||||
}
|
||||
auto images = argc - 2;
|
||||
if (images > 255)
|
||||
{
|
||||
std::cerr << "too many images specified" << std::endl;
|
||||
exit(1);
|
||||
}
|
||||
std::string outputPath = argv[1];
|
||||
std::ofstream output(outputPath, std::ios::binary);
|
||||
auto outputFailure = [&outputPath](std::string action) {
|
||||
std::cerr << "failed to " << action << " " << outputPath << ": " << strerror(errno) << std::endl;
|
||||
exit(1);
|
||||
};
|
||||
if (!output)
|
||||
{
|
||||
outputFailure("open");
|
||||
}
|
||||
std::vector<char> header(6 + images * 16, 0);
|
||||
auto writeHeader = [&header, &output, &outputFailure]() {
|
||||
output.seekp(0, std::ios_base::beg);
|
||||
output.write(&header[0], header.size());
|
||||
if (!output)
|
||||
{
|
||||
outputFailure("write");
|
||||
}
|
||||
};
|
||||
writeHeader(); // make space for header
|
||||
auto *headerU8 = reinterpret_cast<uint8_t *>(&header[0]);
|
||||
headerU8[2] = 1;
|
||||
headerU8[4] = images;
|
||||
for (auto image = 0; image < images; ++image)
|
||||
{
|
||||
std::string inputPath = argv[2 + image];
|
||||
std::ifstream input(inputPath, std::ios::binary);
|
||||
auto inputFailure = [&inputPath](std::string action) {
|
||||
std::cerr << "failed to " << action << " " << inputPath << ": " << strerror(errno) << std::endl;
|
||||
exit(1);
|
||||
};
|
||||
auto imageFailure = [&inputPath](std::string failure) {
|
||||
std::cerr << "failed to process " << inputPath << ": " << failure << std::endl;
|
||||
exit(1);
|
||||
};
|
||||
if (!input)
|
||||
{
|
||||
inputFailure("open");
|
||||
}
|
||||
std::vector<char> buf;
|
||||
input.seekg(0, std::ios_base::end);
|
||||
buf.resize(input.tellg());
|
||||
input.seekg(0, std::ios_base::beg);
|
||||
input.read(&buf[0], buf.size());
|
||||
if (!input)
|
||||
{
|
||||
inputFailure("read");
|
||||
}
|
||||
auto *bufU8 = reinterpret_cast<uint8_t *>(&buf[0]);
|
||||
if (buf.size() < 0x21 ||
|
||||
readU32BE(&bufU8[0]) != UINT32_C(0x89504E47) ||
|
||||
readU32BE(&bufU8[4]) != UINT32_C(0x0D0A1A0A) ||
|
||||
bufU8[0x18] != 8 ||
|
||||
bufU8[0x19] != 6)
|
||||
{
|
||||
imageFailure("not a 32bpp RGBA PNG");
|
||||
}
|
||||
auto writeOffset = output.tellp();
|
||||
output.write(&buf[0], buf.size());
|
||||
if (!output)
|
||||
{
|
||||
outputFailure("write");
|
||||
}
|
||||
auto width = readU32BE(&bufU8[0x10]);
|
||||
auto height = readU32BE(&bufU8[0x14]);
|
||||
if (width == 256)
|
||||
{
|
||||
width = 0;
|
||||
}
|
||||
if (width > 255)
|
||||
{
|
||||
imageFailure("width exceeds U8 limit");
|
||||
}
|
||||
if (height == 256)
|
||||
{
|
||||
height = 0;
|
||||
}
|
||||
if (height > 255)
|
||||
{
|
||||
imageFailure("height exceeds U8 limit");
|
||||
}
|
||||
auto *entryU8 = headerU8 + 6 + image * 16;
|
||||
entryU8[0] = width;
|
||||
entryU8[1] = height;
|
||||
entryU8[4] = 1;
|
||||
entryU8[6] = 32;
|
||||
if (buf.size() > UINT32_MAX)
|
||||
{
|
||||
imageFailure("data size exceeds U32 limit");
|
||||
}
|
||||
writeU32LE(&entryU8[8], uint32_t(buf.size()));
|
||||
if (writeOffset > UINT32_MAX)
|
||||
{
|
||||
std::cerr << "output data size exceeds U32 limit" << std::endl;
|
||||
exit(1);
|
||||
}
|
||||
writeU32LE(&entryU8[12], uint32_t(writeOffset));
|
||||
}
|
||||
writeHeader(); // actually write it out
|
||||
return 0;
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
#include <fstream>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc != 5)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
auto *outputCppPath = argv[1];
|
||||
auto *outputHPath = argv[2];
|
||||
auto *inputAnyPath = argv[3];
|
||||
auto *symbolName = argv[4];
|
||||
std::ifstream inputAny(inputAnyPath, std::ios::binary);
|
||||
std::ofstream outputCpp(outputCppPath);
|
||||
if (!outputCpp)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
outputCpp << "#include \"" << outputHPath << "\"\nconst unsigned char " << symbolName << "[] = { ";
|
||||
auto dataLen = 0U;
|
||||
while (true)
|
||||
{
|
||||
char ch;
|
||||
inputAny.read(&ch, 1);
|
||||
if (inputAny.eof())
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (!inputAny)
|
||||
{
|
||||
return 3;
|
||||
}
|
||||
outputCpp << (unsigned int)(unsigned char)(ch) << ", ";
|
||||
dataLen += 1;
|
||||
}
|
||||
outputCpp << " }; const unsigned int " << symbolName << "_size = " << dataLen << ";\n";
|
||||
if (!outputCpp)
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
std::ofstream outputH(outputHPath);
|
||||
if (!outputH)
|
||||
{
|
||||
return 5;
|
||||
}
|
||||
outputH << "#pragma once\nextern const unsigned char " << symbolName << "[]; extern const unsigned int " << symbolName << "_size;\n";
|
||||
if (!outputH)
|
||||
{
|
||||
return 6;
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<component type="desktop">
|
||||
<id>@APPID@</id>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>GPL-3.0</project_license>
|
||||
<name>@APPNAME@</name>
|
||||
<summary>@APPCOMMENT@</summary>
|
||||
<content_rating type="oars-1.1">
|
||||
<content_attribute id="social-chat">moderate</content_attribute>
|
||||
</content_rating>
|
||||
<launchable type="desktop-id">@APPID@.desktop</launchable>
|
||||
<description>
|
||||
<p>
|
||||
Have you ever wanted to blow something up? Or maybe you always dreamt of operating an atomic power plant? Do you have a will to develop your own CPU? The Powder Toy lets you to do all of these, and even more!
|
||||
</p>
|
||||
<p>
|
||||
The Powder Toy is a free physics sandbox game, which simulates air pressure and velocity, heat, gravity and a countless number of interactions between different substances! The game provides you with various building materials, liquids, gases and electronic components which can be used to construct complex machines, guns, bombs, realistic terrains and almost anything else. You can then mine them and watch cool explosions, add intricate wirings, play with little stickmen or operate your machine. You can browse and play thousands of different saves made by the community or upload your own – we welcome your creations!
|
||||
</p>
|
||||
<p>
|
||||
There is a Lua API – you can automate your work or even make plugins for the game. The Powder Toy is free and the source code is distributed under the GNU General Public License, so you can modify the game yourself or help with development.
|
||||
</p>
|
||||
</description>
|
||||
<screenshots>
|
||||
<screenshot>
|
||||
<image>https://powdertoy.co.uk/Themes/Next/Design/Images/Screen2.png</image>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
<url type="homepage">https://powdertoy.co.uk/</url>
|
||||
<url type="bugtracker">https://github.com/The-Powder-Toy/The-Powder-Toy/issues</url>
|
||||
<url type="help">https://powdertoy.co.uk/Wiki/W/Main_Page.html</url>
|
||||
<releases>
|
||||
<release date="@MANIFEST_DATE@" version="@DISPLAY_VERSION_MAJOR@.@DISPLAY_VERSION_MINOR@.@BUILD_NUM@" />
|
||||
</releases>
|
||||
</component>
|
BIN
resources/document.icns
Normal file
BIN
resources/document.ico
Normal file
After Width: | Height: | Size: 25 KiB |
@ -1,9 +0,0 @@
|
||||
We keep these icons here to make it possible to build TPT without Inkscape. If
|
||||
you have Inkscape and want to change the game's icons, edit the SVGs in the
|
||||
parent directory and configure your build sites with
|
||||
`-Drender_icons_with_inkscape=true`.
|
||||
|
||||
The GitHub Actions workflows currently do not use Inkscape and use these icons
|
||||
instead, so once you are satisfied with the state of the SVGs, replace these
|
||||
icons with the ones in your build site in the same subdirectory and make a new
|
||||
commit.
|
Before Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 563 B |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 644 B |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 2.8 KiB |
BIN
resources/icon.icns
Executable file
BIN
resources/icon.ico
Normal file
After Width: | Height: | Size: 76 KiB |
16
resources/icon/icontofile.py
Normal file
@ -0,0 +1,16 @@
|
||||
import sys
|
||||
from PIL import Image
|
||||
image = Image.open(sys.argv[1])
|
||||
|
||||
output = ""
|
||||
formatted = []
|
||||
for pixel in image.getdata():
|
||||
formatted.extend("0x{0:02X}".format(byte) for byte in pixel)
|
||||
for i in range(len(formatted)/16 + 1):
|
||||
print(", ".join(formatted[i*16:(i+1)*16]) + ",")
|
||||
|
||||
"""with open(sys.argv[1], "rb") as icon:
|
||||
icondata = icon.read()
|
||||
output = ["0x{0:02X}".format(ord(byte)) for byte in icondata]
|
||||
for line in range(len(output)/16+1):
|
||||
print(", ".join(output[line*16:(line+1)*16])+",")"""
|
BIN
resources/icon/new-unused/icon.icns
Normal file
117
resources/icon/new-unused/icon.svg
Normal file
@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="1024"
|
||||
height="1024"
|
||||
viewBox="0 0 270.93334 270.93333"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="icon_pile_gradient.svg"
|
||||
inkscape:export-filename="/home/lbphacker/temp/tpt-logo/icon_circle.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5602">
|
||||
<stop
|
||||
style="stop-color:#ff7a4c;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop5604" />
|
||||
<stop
|
||||
style="stop-color:#ffff4a;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop5606" />
|
||||
</linearGradient>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
style="color-interpolation-filters:sRGB"
|
||||
id="filter5229"
|
||||
x="-0.099935167"
|
||||
width="1.1998703"
|
||||
y="-0.091193162"
|
||||
height="1.1823863">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="7.6262206"
|
||||
id="feGaussianBlur5231" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5602"
|
||||
id="linearGradient5608"
|
||||
x1="623.16376"
|
||||
y1="313.71109"
|
||||
x2="835.82587"
|
||||
y2="100.99124"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.3535534"
|
||||
inkscape:cx="218.91161"
|
||||
inkscape:cy="713.0457"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="705"
|
||||
inkscape:window-x="-4"
|
||||
inkscape:window-y="-4"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="false"
|
||||
showguides="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-bottom="0"
|
||||
fit-margin-right="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-594.1217,-81.893738)">
|
||||
<g
|
||||
id="g5610">
|
||||
<path
|
||||
transform="matrix(1.1416809,0,0,1.1416809,-103.36921,-12.109215)"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path950"
|
||||
d="m 729.5891,100.64025 a 6.8536343,6.8536343 0 0 0 -6.8539,6.85333 6.8536343,6.8536343 0 0 0 6.8539,6.85384 6.8536343,6.8536343 0 0 0 6.8533,-6.85384 6.8536343,6.8536343 0 0 0 -6.8533,-6.85333 z m 0,27.34045 c -3.7851,0 -6.8534,3.06823 -6.8534,6.85333 l 0,14.43478 c 0,3.78508 3.0683,6.85384 6.8534,6.85384 3.7851,0 6.8538,-3.06876 6.8538,-6.85384 l 0,-14.43478 c 0,-3.7851 -3.0687,-6.85333 -6.8538,-6.85333 z m 26.5585,18.38389 a 6.8536343,6.8536343 0 0 0 -6.8538,6.85384 6.8536343,6.8536343 0 0 0 6.8538,6.85333 6.8536343,6.8536343 0 0 0 6.8539,-6.85333 6.8536343,6.8536343 0 0 0 -6.8539,-6.85384 z m -62.3124,22.72367 a 6.8536343,6.8536343 0 0 0 -6.8539,6.85333 6.8536343,6.8536343 0 0 0 6.8539,6.85385 6.8536343,6.8536343 0 0 0 6.8538,-6.85385 6.8536343,6.8536343 0 0 0 -6.8538,-6.85333 z m 35.7544,0.66715 a 6.8536343,6.8536343 0 0 0 -6.8539,6.85384 6.8536343,6.8536343 0 0 0 6.8539,6.85385 6.8536343,6.8536343 0 0 0 6.8533,-6.85385 6.8536343,6.8536343 0 0 0 -6.8533,-6.85384 z m -0.1886,27.342 c -3.3028,0.0484 -6.4566,1.38153 -8.7928,3.71656 l -78.8505,78.85152 c -7.9961,8.00073 -2.3327,21.6754 8.9788,21.67982 l 157.7032,0 c 11.312,-0.003 16.9767,-13.67855 8.9802,-21.67982 l -78.8515,-78.85152 c -2.4281,-2.42693 -5.7354,-3.76761 -9.168,-3.71656 z m 0.7482,8.51369 0,0 c 0.4485,0 0.8969,0.044 1.3385,0.13074 1.4334,0.202 2.8158,0.85351 3.9181,1.95595 l 74.9995,74.99956 c 2.6995,2.6994 2.6995,7.07622 0,9.77563 -2.699,2.69939 -7.0755,2.69939 -9.7751,0 l -70.3275,-70.32749 -11.8003,11.80031 c -2.6993,2.69937 -7.076,2.6993 -9.7756,0 -2.6992,-2.69951 -2.6988,-7.07626 0,-9.77563 l 16.5344,-16.53439 c 1.3498,-1.34968 3.1186,-2.02467 4.8875,-2.02468 z m 55.2437,1.29294 a 6.8536343,6.8536343 0 0 0 -6.8533,6.85385 6.8536343,6.8536343 0 0 0 6.8533,6.85333 6.8536343,6.8536343 0 0 0 6.8538,-6.85333 6.8536343,6.8536343 0 0 0 -6.8538,-6.85385 z m -115.8803,12.52999 a 6.8536343,6.8536343 0 0 0 -6.8538,6.85384 6.8536343,6.8536343 0 0 0 6.8538,6.85333 6.8536343,6.8536343 0 0 0 6.8534,-6.85333 6.8536343,6.8536343 0 0 0 -6.8534,-6.85384 z m 27.0614,18.73839 a 6.8536343,6.8536343 0 0 1 6.8534,6.85333 6.8536343,6.8536343 0 0 1 -6.8534,6.85384 6.8536343,6.8536343 0 0 1 -6.8538,-6.85384 6.8536343,6.8536343 0 0 1 6.8538,-6.85333 z m -27.4784,26.01701 a 6.8536343,6.8536343 0 0 1 6.8538,6.85333 6.8536343,6.8536343 0 0 1 -6.8538,6.85385 6.8536343,6.8536343 0 0 1 -6.8533,-6.85385 6.8536343,6.8536343 0 0 1 6.8533,-6.85333 z"
|
||||
style="opacity:0.90700001;fill:#000000;fill-opacity:1;stroke:none;stroke-width:13.70695019;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter5229)" />
|
||||
<path
|
||||
style="opacity:1;fill:url(#linearGradient5608);fill-opacity:1;stroke:#4d361f;stroke-width:3.96875027;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-rule:nonzero"
|
||||
d="m 729.58874,102.78984 a 7.8246635,7.8246635 0 0 0 -7.82496,7.82432 7.8246635,7.8246635 0 0 0 7.82496,7.82489 7.8246635,7.8246635 0 0 0 7.82429,-7.82489 7.8246635,7.8246635 0 0 0 -7.82429,-7.82432 z m 0,31.21407 c -4.32137,0 -7.82439,3.50293 -7.82439,7.82431 l 0,16.47992 c 0,4.32136 3.50302,7.8249 7.82439,7.8249 4.32138,0 7.82486,-3.50354 7.82486,-7.8249 l 0,-16.47992 c 0,-4.32138 -3.50348,-7.82431 -7.82486,-7.82431 z m 30.32135,20.98853 a 7.8246635,7.8246635 0 0 0 -7.82486,7.82491 7.8246635,7.8246635 0 0 0 7.82486,7.82431 7.8246635,7.8246635 0 0 0 7.82496,-7.82431 7.8246635,7.8246635 0 0 0 -7.82496,-7.82491 z m -71.14088,25.94318 a 7.8246635,7.8246635 0 0 0 -7.82497,7.82432 7.8246635,7.8246635 0 0 0 7.82497,7.82491 7.8246635,7.8246635 0 0 0 7.82485,-7.82491 7.8246635,7.8246635 0 0 0 -7.82485,-7.82432 z m 40.82011,0.76168 a 7.8246635,7.8246635 0 0 0 -7.82497,7.82489 7.8246635,7.8246635 0 0 0 7.82497,7.82492 7.8246635,7.8246635 0 0 0 7.82428,-7.82492 7.8246635,7.8246635 0 0 0 -7.82428,-7.82489 z m -0.21533,31.21584 c -3.77074,0.0553 -7.37137,1.57726 -10.03856,4.24312 l -90.02211,90.02327 c -9.129,9.1343 -2.6632,24.7464 10.25092,24.75145 l 180.04673,0 c 12.91469,-0.004 19.38198,-15.61654 10.25253,-24.75145 l -90.02326,-90.02327 c -2.77211,-2.77078 -6.54799,-4.30141 -10.46693,-4.24312 z m 0.85421,9.71992 0,0 c 0.51205,0 1.02398,0.0503 1.52815,0.14926 1.63648,0.23062 3.21474,0.97444 4.47322,2.23307 l 85.62549,85.62556 c 3.08197,3.08186 3.08197,8.07879 0,11.16066 -3.0814,3.08183 -8.07797,3.08183 -11.16005,0 l -80.29156,-80.29155 -13.47218,13.47219 c -3.08173,3.08181 -8.07853,3.08173 -11.16061,0 -3.08163,-3.08199 -3.08117,-8.07884 0,-11.16066 l 18.877,-18.87699 c 1.54104,-1.5409 3.56045,-2.31153 5.57997,-2.31154 z m 63.07068,1.47613 a 7.8246635,7.8246635 0 0 0 -7.82428,7.8249 7.8246635,7.8246635 0 0 0 7.82428,7.82432 7.8246635,7.8246635 0 0 0 7.82486,-7.82432 7.8246635,7.8246635 0 0 0 -7.82486,-7.8249 z m -132.29832,14.30524 a 7.8246635,7.8246635 0 0 0 -7.82486,7.8249 7.8246635,7.8246635 0 0 0 7.82486,7.82432 7.8246635,7.8246635 0 0 0 7.82439,-7.82432 7.8246635,7.8246635 0 0 0 -7.82439,-7.8249 z m 30.89547,21.39326 a 7.8246635,7.8246635 0 0 1 7.8244,7.82432 7.8246635,7.8246635 0 0 1 -7.8244,7.8249 7.8246635,7.8246635 0 0 1 -7.82484,-7.8249 7.8246635,7.8246635 0 0 1 7.82484,-7.82432 z m -31.37155,29.70312 a 7.8246635,7.8246635 0 0 1 7.82484,7.82432 7.8246635,7.8246635 0 0 1 -7.82484,7.82491 7.8246635,7.8246635 0 0 1 -7.82428,-7.82491 7.8246635,7.8246635 0 0 1 7.82428,-7.82432 z"
|
||||
id="path952"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 8.4 KiB |
BIN
resources/icon/new-unused/icon_128.png
Normal file
After Width: | Height: | Size: 7.2 KiB |
BIN
resources/icon/new-unused/icon_256.ico
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
resources/icon/new-unused/icon_256.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
resources/icon/new-unused/icon_48.ico
Normal file
After Width: | Height: | Size: 9.4 KiB |
BIN
resources/icon/new-unused/icon_64.ico
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
resources/icon/new-unused/icon_96.ico
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
resources/icon/new-unused/icon_circle.png
Normal file
After Width: | Height: | Size: 111 KiB |
101
resources/icon/new-unused/icon_circle.svg
Normal file
@ -0,0 +1,101 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="1024"
|
||||
height="1024"
|
||||
viewBox="0 0 270.93334 270.93333"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
sodipodi:docname="icon_circle.svg"
|
||||
inkscape:export-filename="/home/lbphacker/temp/tpt-logo/icon_circle.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<defs
|
||||
id="defs2">
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
style="color-interpolation-filters:sRGB"
|
||||
id="filter5229"
|
||||
x="-0.099935167"
|
||||
width="1.1998703"
|
||||
y="-0.091193162"
|
||||
height="1.1823863">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="7.6262206"
|
||||
id="feGaussianBlur5231" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.66"
|
||||
inkscape:cx="328.01066"
|
||||
inkscape:cy="553.26531"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="g986"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="982"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="false"
|
||||
showguides="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-bottom="0"
|
||||
fit-margin-right="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-594.1217,-81.893738)">
|
||||
<g
|
||||
id="g986">
|
||||
<circle
|
||||
r="135.46667"
|
||||
cy="217.36041"
|
||||
cx="729.58838"
|
||||
id="circle948"
|
||||
style="opacity:1;fill:#ffd090;fill-opacity:1;stroke:none;stroke-width:1.74795687;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
transform="matrix(0.91722511,0,0,0.91722511,60.391628,16.637154)"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path950"
|
||||
d="m 729.5891,100.64025 a 6.8536343,6.8536343 0 0 0 -6.8539,6.85333 6.8536343,6.8536343 0 0 0 6.8539,6.85384 6.8536343,6.8536343 0 0 0 6.8533,-6.85384 6.8536343,6.8536343 0 0 0 -6.8533,-6.85333 z m 0,27.34045 c -3.7851,0 -6.8534,3.06823 -6.8534,6.85333 v 14.43478 c 0,3.78508 3.0683,6.85384 6.8534,6.85384 3.7851,0 6.8538,-3.06876 6.8538,-6.85384 v -14.43478 c 0,-3.7851 -3.0687,-6.85333 -6.8538,-6.85333 z m 26.5585,18.38389 a 6.8536343,6.8536343 0 0 0 -6.8538,6.85384 6.8536343,6.8536343 0 0 0 6.8538,6.85333 6.8536343,6.8536343 0 0 0 6.8539,-6.85333 6.8536343,6.8536343 0 0 0 -6.8539,-6.85384 z m -62.3124,22.72367 a 6.8536343,6.8536343 0 0 0 -6.8539,6.85333 6.8536343,6.8536343 0 0 0 6.8539,6.85385 6.8536343,6.8536343 0 0 0 6.8538,-6.85385 6.8536343,6.8536343 0 0 0 -6.8538,-6.85333 z m 35.7544,0.66715 a 6.8536343,6.8536343 0 0 0 -6.8539,6.85384 6.8536343,6.8536343 0 0 0 6.8539,6.85385 6.8536343,6.8536343 0 0 0 6.8533,-6.85385 6.8536343,6.8536343 0 0 0 -6.8533,-6.85384 z m -0.1886,27.342 c -3.3028,0.0484 -6.4566,1.38153 -8.7928,3.71656 l -78.8505,78.85152 c -7.9961,8.00073 -2.3327,21.6754 8.9788,21.67982 h 157.7032 c 11.312,-0.003 16.9767,-13.67855 8.9802,-21.67982 l -78.8515,-78.85152 c -2.4281,-2.42693 -5.7354,-3.76761 -9.168,-3.71656 z m 0.7482,8.51369 v 0 c 0.4485,0 0.8969,0.044 1.3385,0.13074 1.4334,0.202 2.8158,0.85351 3.9181,1.95595 l 74.9995,74.99956 c 2.6995,2.6994 2.6995,7.07622 0,9.77563 -2.699,2.69939 -7.0755,2.69939 -9.7751,0 l -70.3275,-70.32749 -11.8003,11.80031 c -2.6993,2.69937 -7.076,2.6993 -9.7756,0 -2.6992,-2.69951 -2.6988,-7.07626 0,-9.77563 l 16.5344,-16.53439 c 1.3498,-1.34968 3.1186,-2.02467 4.8875,-2.02468 z m 55.2437,1.29294 a 6.8536343,6.8536343 0 0 0 -6.8533,6.85385 6.8536343,6.8536343 0 0 0 6.8533,6.85333 6.8536343,6.8536343 0 0 0 6.8538,-6.85333 6.8536343,6.8536343 0 0 0 -6.8538,-6.85385 z m -115.8803,12.52999 a 6.8536343,6.8536343 0 0 0 -6.8538,6.85384 6.8536343,6.8536343 0 0 0 6.8538,6.85333 6.8536343,6.8536343 0 0 0 6.8534,-6.85333 6.8536343,6.8536343 0 0 0 -6.8534,-6.85384 z m 27.0614,18.73839 a 6.8536343,6.8536343 0 0 1 6.8534,6.85333 6.8536343,6.8536343 0 0 1 -6.8534,6.85384 6.8536343,6.8536343 0 0 1 -6.8538,-6.85384 6.8536343,6.8536343 0 0 1 6.8538,-6.85333 z m -27.4784,26.01701 a 6.8536343,6.8536343 0 0 1 6.8538,6.85333 6.8536343,6.8536343 0 0 1 -6.8538,6.85385 6.8536343,6.8536343 0 0 1 -6.8533,-6.85385 6.8536343,6.8536343 0 0 1 6.8533,-6.85333 z"
|
||||
style="opacity:0.90700001;fill:#000000;fill-opacity:1;stroke:none;stroke-width:13.70695019;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter5229)" />
|
||||
<path
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:12.57235909;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 729.58907,108.94692 a 6.2863255,6.2863255 0 0 0 -6.28657,6.28605 6.2863255,6.2863255 0 0 0 6.28657,6.28651 6.2863255,6.2863255 0 0 0 6.28602,-6.28651 6.2863255,6.2863255 0 0 0 -6.28602,-6.28605 z m 0,25.07735 c -3.47179,0 -6.28611,2.81425 -6.28611,6.28604 v 13.23995 c 0,3.47177 2.81432,6.28651 6.28611,6.28651 3.47179,0 6.28648,-2.81474 6.28648,-6.28651 v -13.23995 c 0,-3.47179 -2.81469,-6.28604 -6.28648,-6.28604 z m 24.36013,16.86216 a 6.2863255,6.2863255 0 0 0 -6.28648,6.28652 6.2863255,6.2863255 0 0 0 6.28648,6.28604 6.2863255,6.2863255 0 0 0 6.28657,-6.28604 6.2863255,6.2863255 0 0 0 -6.28657,-6.28652 z m -57.1545,20.84272 a 6.2863255,6.2863255 0 0 0 -6.28657,6.28605 6.2863255,6.2863255 0 0 0 6.28657,6.28652 6.2863255,6.2863255 0 0 0 6.28648,-6.28652 6.2863255,6.2863255 0 0 0 -6.28648,-6.28605 z m 32.79483,0.61193 a 6.2863255,6.2863255 0 0 0 -6.28657,6.28651 6.2863255,6.2863255 0 0 0 6.28657,6.28653 6.2863255,6.2863255 0 0 0 6.28602,-6.28653 6.2863255,6.2863255 0 0 0 -6.28602,-6.28651 z m -0.17299,25.07877 c -3.02941,0.0444 -5.92215,1.26717 -8.06497,3.40892 l -72.32366,72.32459 c -7.33423,7.33848 -2.13961,19.88123 8.23558,19.88528 h 144.64933 c 10.37565,-0.003 15.57146,-12.54631 8.23687,-19.88528 l -72.32458,-72.32459 c -2.22711,-2.22604 -5.26065,-3.45575 -8.40912,-3.40892 z m 0.68627,7.80897 v 0 c 0.41138,0 0.82266,0.0404 1.22771,0.11992 1.31475,0.18528 2.58272,0.78286 3.59378,1.79404 l 68.79142,68.79148 c 2.47605,2.47596 2.47605,6.49049 0,8.96646 -2.47559,2.47594 -6.48983,2.47594 -8.96597,0 l -64.50615,-64.50614 -10.82353,10.82354 c -2.47586,2.47593 -6.49028,2.47586 -8.96642,0 -2.47578,-2.47606 -2.47541,-6.49053 0,-8.96646 l 15.16576,-15.16575 c 1.23807,-1.23796 2.86046,-1.85708 4.48294,-1.85709 z m 50.67091,1.18592 a 6.2863255,6.2863255 0 0 0 -6.28602,6.28652 6.2863255,6.2863255 0 0 0 6.28602,6.28605 6.2863255,6.2863255 0 0 0 6.28648,-6.28605 6.2863255,6.2863255 0 0 0 -6.28648,-6.28652 z M 674.4854,217.90756 a 6.2863255,6.2863255 0 0 0 -6.28648,6.28651 6.2863255,6.2863255 0 0 0 6.28648,6.28605 6.2863255,6.2863255 0 0 0 6.28611,-6.28605 6.2863255,6.2863255 0 0 0 -6.28611,-6.28651 z m 24.82139,17.18732 a 6.2863255,6.2863255 0 0 1 6.28611,6.28605 6.2863255,6.2863255 0 0 1 -6.28611,6.28651 6.2863255,6.2863255 0 0 1 -6.28647,-6.28651 6.2863255,6.2863255 0 0 1 6.28647,-6.28605 z m -25.20387,23.86345 a 6.2863255,6.2863255 0 0 1 6.28647,6.28605 6.2863255,6.2863255 0 0 1 -6.28647,6.28652 6.2863255,6.2863255 0 0 1 -6.28602,-6.28652 6.2863255,6.2863255 0 0 1 6.28602,-6.28605 z"
|
||||
id="path952"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 8.1 KiB |
BIN
resources/icon/powder-128.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
resources/icon/powder-16.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
resources/icon/powder-24.png
Normal file
After Width: | Height: | Size: 7.8 KiB |
BIN
resources/icon/powder-256.png
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
resources/icon/powder-32.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
resources/icon/powder-48.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 255 KiB |
@ -1,533 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="64"
|
||||
height="64"
|
||||
viewBox="0 0 16.933331 16.933331"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||
sodipodi:docname="icon_exe.svg"
|
||||
inkscape:export-filename="icon.png"
|
||||
inkscape:export-xdpi="192"
|
||||
inkscape:export-ydpi="192"
|
||||
xml:space="preserve"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#ffffff"
|
||||
inkscape:document-units="px"
|
||||
showgrid="false"
|
||||
inkscape:zoom="16.970563"
|
||||
inkscape:cx="57.422963"
|
||||
inkscape:cy="24.188945"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="1054"
|
||||
inkscape:window-x="1297"
|
||||
inkscape:window-y="26"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="layer7" /><defs
|
||||
id="defs2"><linearGradient
|
||||
id="linearGradient10317"><stop
|
||||
style="stop-color:#f5ffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop10311" /><stop
|
||||
style="stop-color:#f5ffff;stop-opacity:1;"
|
||||
offset="0.58129495"
|
||||
id="stop10313" /><stop
|
||||
style="stop-color:#f5ffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop10315" /></linearGradient><linearGradient
|
||||
id="linearGradient7451"><stop
|
||||
style="stop-color:#f5ffff;stop-opacity:0.98309183;"
|
||||
offset="0"
|
||||
id="stop7445" /><stop
|
||||
style="stop-color:#f5ffff;stop-opacity:0.65823293;"
|
||||
offset="0.44851306"
|
||||
id="stop7447" /><stop
|
||||
style="stop-color:#f5ffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop7449" /></linearGradient><linearGradient
|
||||
id="linearGradient7331"><stop
|
||||
style="stop-color:#f5ffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop7325" /><stop
|
||||
style="stop-color:#f5ffff;stop-opacity:1;"
|
||||
offset="0.37253886"
|
||||
id="stop7327" /><stop
|
||||
style="stop-color:#f5ffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop7329" /></linearGradient><linearGradient
|
||||
id="linearGradient6957"><stop
|
||||
style="stop-color:#f5ffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop6951" /><stop
|
||||
style="stop-color:#f5ffff;stop-opacity:1;"
|
||||
offset="0.61608356"
|
||||
id="stop6953" /><stop
|
||||
style="stop-color:#f5ffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop6955" /></linearGradient><linearGradient
|
||||
id="linearGradient6573"><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop6567" /><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:0.823915;"
|
||||
offset="0.62599742"
|
||||
id="stop6569" /><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop6571" /></linearGradient><linearGradient
|
||||
id="linearGradient6175"><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:0.47854495;"
|
||||
offset="0"
|
||||
id="stop6169" /><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:0.29862821;"
|
||||
offset="0.67936534"
|
||||
id="stop6171" /><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop6173" /></linearGradient><linearGradient
|
||||
id="linearGradient5893"><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:0.71252441;"
|
||||
offset="0"
|
||||
id="stop5887" /><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:0.5904839;"
|
||||
offset="0.67936534"
|
||||
id="stop5889" /><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5891" /></linearGradient><linearGradient
|
||||
id="linearGradient5757"><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5751" /><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:1;"
|
||||
offset="0.75665909"
|
||||
id="stop5753" /><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5755" /></linearGradient><linearGradient
|
||||
id="linearGradient5685"><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5679" /><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:1;"
|
||||
offset="0.63781762"
|
||||
id="stop5681" /><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5683" /></linearGradient><linearGradient
|
||||
id="linearGradient5619"><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5613" /><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:1;"
|
||||
offset="0.73820531"
|
||||
id="stop5615" /><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5617" /></linearGradient><linearGradient
|
||||
id="linearGradient5441"><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:0.89862061;"
|
||||
offset="0"
|
||||
id="stop5435" /><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:0.72535044;"
|
||||
offset="0.62599742"
|
||||
id="stop5437" /><stop
|
||||
style="stop-color:#f5ff08;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5439" /></linearGradient><linearGradient
|
||||
id="linearGradient1452"><stop
|
||||
style="stop-color:#f50008;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop1446" /><stop
|
||||
style="stop-color:#f50008;stop-opacity:1;"
|
||||
offset="0.7918601"
|
||||
id="stop1448" /><stop
|
||||
style="stop-color:#f50008;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop1450" /></linearGradient><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1452"
|
||||
id="radialGradient522"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.78484331,0,0,0.78747227,696.44887,-323.11915)"
|
||||
cx="85.568382"
|
||||
cy="110.37487"
|
||||
fx="85.568382"
|
||||
fy="110.37487"
|
||||
r="80.962494" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1452"
|
||||
id="radialGradient524"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.8981104,0,0,0.76442481,749.97364,-321.90886)"
|
||||
cx="85.568382"
|
||||
cy="110.37487"
|
||||
fx="85.568382"
|
||||
fy="110.37487"
|
||||
r="80.962494" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6573"
|
||||
id="radialGradient526"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.63729372,0,0,0.41448086,723.17431,-328.11791)"
|
||||
cx="85.568382"
|
||||
cy="110.37487"
|
||||
fx="85.568382"
|
||||
fy="110.37487"
|
||||
r="80.962494" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5619"
|
||||
id="radialGradient528"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.44694866,0,0,0.65155251,787.10411,-304.51482)"
|
||||
cx="85.568382"
|
||||
cy="110.37487"
|
||||
fx="85.568382"
|
||||
fy="110.37487"
|
||||
r="80.962494" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5619"
|
||||
id="radialGradient530"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.44694866,0,0,0.40774632,806.63991,-285.18279)"
|
||||
cx="85.568382"
|
||||
cy="110.37487"
|
||||
fx="85.568382"
|
||||
fy="110.37487"
|
||||
r="80.962494" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5685"
|
||||
id="radialGradient532"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.31040892,0,0,0.40774632,771.18902,-267.79397)"
|
||||
cx="85.568382"
|
||||
cy="110.37487"
|
||||
fx="85.568382"
|
||||
fy="110.37487"
|
||||
r="80.962494" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5757"
|
||||
id="radialGradient534"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.61485849,0,0,0.48365086,699.42828,-280.26845)"
|
||||
cx="85.568382"
|
||||
cy="110.37487"
|
||||
fx="85.568382"
|
||||
fy="110.37487"
|
||||
r="80.962494" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5893"
|
||||
id="radialGradient536"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.18217879,0,0,0.57948295,785.06567,-317.57229)"
|
||||
cx="85.568382"
|
||||
cy="110.37487"
|
||||
fx="85.568382"
|
||||
fy="110.37487"
|
||||
r="80.962494" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6175"
|
||||
id="radialGradient538"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.17110206,0,0,0.57948295,813.03511,-347.11197)"
|
||||
cx="85.568382"
|
||||
cy="110.37487"
|
||||
fx="85.568382"
|
||||
fy="110.37487"
|
||||
r="80.962494" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6175"
|
||||
id="radialGradient540"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.65699536,0,0,0.23041338,805.19531,-234.77302)"
|
||||
cx="85.568382"
|
||||
cy="110.37487"
|
||||
fx="85.568382"
|
||||
fy="110.37487"
|
||||
r="80.962494" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6175"
|
||||
id="radialGradient542"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.65699536,0,0,0.23041338,673.99742,-230.76895)"
|
||||
cx="85.568382"
|
||||
cy="110.37487"
|
||||
fx="85.568382"
|
||||
fy="110.37487"
|
||||
r="80.962494" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5441"
|
||||
id="radialGradient544"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.44694866,0,0,0.46338383,720.63883,-314.42592)"
|
||||
cx="85.568382"
|
||||
cy="110.37487"
|
||||
fx="85.568382"
|
||||
fy="110.37487"
|
||||
r="80.962494" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6957"
|
||||
id="radialGradient546"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.81417897,0,0,0.30393809,713.08122,-253.70655)"
|
||||
cx="85.568382"
|
||||
cy="110.37487"
|
||||
fx="85.568382"
|
||||
fy="110.37487"
|
||||
r="80.962494" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient10317"
|
||||
id="radialGradient548"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.37560777,0,0,0.52796713,798.71131,-289.99247)"
|
||||
cx="85.568382"
|
||||
cy="110.37487"
|
||||
fx="85.568382"
|
||||
fy="110.37487"
|
||||
r="80.962494" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient7331"
|
||||
id="radialGradient550"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.51429536,0,0,0.55006434,705.69388,-287.70068)"
|
||||
cx="85.568382"
|
||||
cy="110.37487"
|
||||
fx="85.568382"
|
||||
fy="110.37487"
|
||||
r="80.962494" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient7451"
|
||||
id="radialGradient552"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.51429536,0,0,0.55006434,726.67823,-322.63777)"
|
||||
cx="85.568382"
|
||||
cy="110.37487"
|
||||
fx="85.568382"
|
||||
fy="110.37487"
|
||||
r="80.962494" /></defs><g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer7"
|
||||
inkscape:label="icon"><rect
|
||||
style="opacity:1;fill:#cccccc;stroke-width:0.0500064;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect9549"
|
||||
width="16.933332"
|
||||
height="13.229165"
|
||||
x="0"
|
||||
y="1.8520831" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 16.139581,13.493748 v 0.529167 h 0.529166 v -0.529167 z"
|
||||
id="path2369" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 16.139581,12.699998 v 0.529167 h 0.529166 v -0.529167 z"
|
||||
id="path2367" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 16.139581,11.906248 v 0.529167 h 0.529166 v -0.529167 z"
|
||||
id="path2365" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 16.139581,11.112498 v 0.529167 h 0.529166 v -0.529167 z"
|
||||
id="path2363" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 16.139581,10.318749 v 0.529166 h 0.529166 v -0.529166 z"
|
||||
id="path2361" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 16.139581,9.5249987 v 0.5291663 h 0.529166 V 9.5249987 Z"
|
||||
id="path2359" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 16.139581,8.7312488 v 0.5291666 h 0.529166 V 8.7312488 Z"
|
||||
id="path2357" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 16.139581,6.0854158 v 2.3812497 h 0.529166 V 6.0854158 Z"
|
||||
id="path2355" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 16.139581,5.2916659 v 0.5291666 h 0.529166 V 5.2916659 Z"
|
||||
id="path2353" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 16.139581,4.497916 v 0.5291666 h 0.529166 V 4.497916 Z"
|
||||
id="path2351" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 16.139581,3.7041662 v 0.5291665 h 0.529166 V 3.7041662 Z"
|
||||
id="path2349" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 16.139581,2.9104163 v 0.5291666 h 0.529166 V 2.9104163 Z"
|
||||
id="rect14444" /><rect
|
||||
style="opacity:1;fill:#666666;stroke-width:0.0500064;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect15056"
|
||||
width="1.0583332"
|
||||
height="0.52916658"
|
||||
x="15.610415"
|
||||
y="2.1166663" /><rect
|
||||
style="opacity:1;fill:#666666;stroke-width:0.0500064;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect15468"
|
||||
width="1.0583332"
|
||||
height="0.52916658"
|
||||
x="14.287498"
|
||||
y="2.1166663" /><rect
|
||||
style="opacity:1;fill:#666666;stroke-width:0.0500064;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect15470"
|
||||
width="1.0583332"
|
||||
height="0.52916658"
|
||||
x="12.964582"
|
||||
y="2.1166663" /><rect
|
||||
style="opacity:1;fill:#999999;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect15882"
|
||||
width="3.9687495"
|
||||
height="0.52916658"
|
||||
x="0.26458329"
|
||||
y="2.1166663" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 14.287498,-16.139581 h 0.529167 v -0.529167 h -0.529167 z"
|
||||
transform="rotate(90)"
|
||||
id="path2231" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 14.287498,-15.345831 h 0.529167 v -0.529167 h -0.529167 z"
|
||||
transform="rotate(90)"
|
||||
id="path2229" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 14.287498,-14.552081 h 0.529167 v -0.529167 h -0.529167 z"
|
||||
transform="rotate(90)"
|
||||
id="path2227" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 14.287498,-11.641665 h 0.529167 v -2.645833 h -0.529167 z"
|
||||
transform="rotate(90)"
|
||||
id="path2225" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 14.287498,-5.8208325 h 0.529167 v -5.5562495 h -0.529167 z"
|
||||
transform="rotate(90)"
|
||||
id="path2223" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 14.287498,-4.7624993 h 0.529167 v -0.7937499 h -0.529167 z"
|
||||
transform="rotate(90)"
|
||||
id="path2221" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 14.287498,-1.8520831 h 0.529167 V -4.497916 h -0.529167 z"
|
||||
transform="rotate(90)"
|
||||
id="path2219" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 14.287498,-1.0583332 h 0.529167 v -0.5291666 h -0.529167 z"
|
||||
transform="rotate(90)"
|
||||
id="path2217" /><path
|
||||
style="opacity:1;fill:#000000;stroke-width:0.0500063;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 14.287498,-0.2645833 h 0.529167 v -0.52916659 h -0.529167 z"
|
||||
transform="rotate(90)"
|
||||
id="rect16090" /></g><g
|
||||
id="g1799"
|
||||
transform="matrix(0.9833263,0,0,0.93331382,-31.070772,-23.035828)"
|
||||
style="stroke-width:1.04385"><rect
|
||||
style="fill:#000000;fill-opacity:1;stroke-width:0.445374;stroke-linecap:square"
|
||||
id="rect486"
|
||||
width="135.46664"
|
||||
height="101.59999"
|
||||
x="753.36902"
|
||||
y="-330.61847"
|
||||
inkscape:label="rect-bg"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-56.418761,66.544469)"
|
||||
mask="none" /><path
|
||||
id="rect488"
|
||||
mask="none"
|
||||
style="fill:url(#radialGradient522);fill-opacity:1;stroke-width:0.445431;stroke-linecap:square;stroke-dasharray:none"
|
||||
inkscape:label="rect-red"
|
||||
d="m 725.48004,-288.15082 v 101.59998 h 101.67054 v -101.59998 z"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-53.150408,61.568041)" /><path
|
||||
id="rect490"
|
||||
mask="none"
|
||||
style="fill:url(#radialGradient524);fill-opacity:1;stroke-width:0.445431;stroke-linecap:square;stroke-dasharray:none"
|
||||
inkscape:label="rect-red"
|
||||
d="m 754.10795,-288.15082 v 101.59998 h 106.83874 v -101.59998 z"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-53.150408,61.568041)" /><path
|
||||
id="rect492"
|
||||
mask="none"
|
||||
style="fill:url(#radialGradient526);fill-opacity:1;stroke-width:0.445431;stroke-linecap:square;stroke-dasharray:none"
|
||||
inkscape:label="rect-yellow"
|
||||
d="m 726.11063,-288.15082 v 39.33912 h 103.1919 v -39.33912 z"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-53.150408,61.568041)" /><path
|
||||
id="rect494"
|
||||
mask="none"
|
||||
style="fill:url(#radialGradient528);fill-opacity:1;stroke-width:0.44543;stroke-linecap:square;stroke-dasharray:none"
|
||||
inkscape:label="rect-yellow"
|
||||
d="m 789.16083,-285.35065 v 98.79981 h 71.78586 v -98.79981 z"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-53.150408,61.568041)" /><path
|
||||
id="rect496"
|
||||
mask="none"
|
||||
style="fill:url(#radialGradient530);fill-opacity:1;stroke-width:0.44543;stroke-linecap:square;stroke-dasharray:none"
|
||||
inkscape:label="rect-yellow"
|
||||
d="m 808.70031,-273.18864 v 66.02235 h 52.24638 v -66.02235 z"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-53.150408,61.568041)" /><path
|
||||
id="rect498"
|
||||
mask="none"
|
||||
style="fill:url(#radialGradient532);fill-opacity:1;stroke-width:0.44543;stroke-linecap:square;stroke-dasharray:none"
|
||||
inkscape:label="rect-yellow"
|
||||
d="m 772.61997,-255.80111 v 66.02236 h 50.262 v -66.02236 z"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-53.150408,61.568041)" /><path
|
||||
id="rect500"
|
||||
mask="none"
|
||||
style="fill:url(#radialGradient534);fill-opacity:1;stroke-width:0.44543;stroke-linecap:square;stroke-dasharray:none"
|
||||
inkscape:label="rect-yellow"
|
||||
d="m 725.48004,-266.04489 v 78.31666 h 76.3411 v -78.31666 z"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-53.150408,61.568041)" /><path
|
||||
id="rect502"
|
||||
mask="none"
|
||||
style="fill:url(#radialGradient536);fill-opacity:1;stroke-width:0.44543;stroke-linecap:square;stroke-dasharray:none"
|
||||
inkscape:label="rect-yellow"
|
||||
d="m 785.90646,-288.15082 v 81.45637 h 29.49662 v -81.45637 z"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-53.150408,61.568041)" /><path
|
||||
id="rect504"
|
||||
mask="none"
|
||||
style="fill:url(#radialGradient538);fill-opacity:1;stroke-width:0.44543;stroke-linecap:square;stroke-dasharray:none"
|
||||
inkscape:label="rect-yellow"
|
||||
d="m 813.8244,-288.15082 v 51.91565 h 27.70629 v -51.91565 z"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-53.150408,61.568041)" /><path
|
||||
id="rect506"
|
||||
mask="none"
|
||||
style="fill:url(#radialGradient540);fill-opacity:1;stroke-width:0.445429;stroke-linecap:square;stroke-dasharray:none"
|
||||
inkscape:label="rect-yellow"
|
||||
d="m 808.21965,-227.99781 v 37.31065 h 52.72704 v -37.31065 z"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-53.150408,61.568041)" /><path
|
||||
id="rect508"
|
||||
mask="none"
|
||||
style="fill:url(#radialGradient542);fill-opacity:1;stroke-width:0.445429;stroke-linecap:square;stroke-dasharray:none"
|
||||
inkscape:label="rect-yellow"
|
||||
d="m 725.48004,-223.99378 v 37.31065 h 57.9261 v -37.31065 z"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-53.150408,61.568041)" /><path
|
||||
id="rect510"
|
||||
mask="none"
|
||||
style="fill:url(#radialGradient544);fill-opacity:1;stroke-width:0.445431;stroke-linecap:square;stroke-dasharray:none"
|
||||
inkscape:label="rect-yellow"
|
||||
d="m 725.48004,-288.15082 v 62.38874 h 69.58982 v -62.38874 z"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-53.150408,61.568041)" /><path
|
||||
id="rect512"
|
||||
mask="none"
|
||||
style="fill:url(#radialGradient546);fill-opacity:1;stroke-width:0.445431;stroke-linecap:square;stroke-dasharray:none"
|
||||
inkscape:label="rect-white"
|
||||
d="m 725.48004,-244.76798 v 49.2169 h 123.18557 v -49.2169 z"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-53.150408,61.568041)" /><path
|
||||
id="rect514"
|
||||
mask="none"
|
||||
style="fill:url(#radialGradient548);fill-opacity:1;stroke-width:0.445431;stroke-linecap:square;stroke-dasharray:none"
|
||||
inkscape:label="rect-white"
|
||||
d="m 800.4409,-274.46305 v 85.49128 h 60.50579 v -85.49128 z"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-53.150408,61.568041)" /><path
|
||||
id="rect516"
|
||||
mask="none"
|
||||
style="fill:url(#radialGradient550);fill-opacity:1;stroke-width:0.445431;stroke-linecap:square;stroke-dasharray:none"
|
||||
inkscape:label="rect-white"
|
||||
d="m 725.48004,-271.52176 v 84.97092 h 65.85919 v -84.97092 z"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-53.150408,61.568041)" /><path
|
||||
id="rect518"
|
||||
mask="none"
|
||||
style="fill:url(#radialGradient552);fill-opacity:1;stroke-width:0.445431;stroke-linecap:square;stroke-dasharray:none"
|
||||
inkscape:label="rect-white"
|
||||
d="m 729.04751,-288.15082 v 70.7628 h 83.27759 v -70.7628 z"
|
||||
transform="matrix(0.1171875,0,0,0.1171875,-53.150408,61.568041)" /></g></svg>
|
Before Width: | Height: | Size: 23 KiB |
@ -1,120 +0,0 @@
|
||||
rendered_icons_optionally_from_svg = {
|
||||
'icon_exe' : { 'png': 'icon_exe.png' , 'svg': 'icon_exe.svg', 'width': '256', 'height': '256' },
|
||||
'icon_exe_48': { 'png': 'icon_exe_48.png', 'svg': 'icon_exe.svg', 'width': '48', 'height': '48' },
|
||||
'icon_exe_32': { 'png': 'icon_exe_32.png', 'svg': 'icon_exe.svg', 'width': '32', 'height': '32' },
|
||||
'icon_exe_16': { 'png': 'icon_exe_16.png', 'svg': 'icon_exe.svg', 'width': '16', 'height': '16' },
|
||||
'icon_cps' : { 'png': 'icon_cps.png' , 'svg': 'icon_cps.svg', 'width': '256', 'height': '256' },
|
||||
'icon_cps_48': { 'png': 'icon_cps_48.png', 'svg': 'icon_cps.svg', 'width': '48', 'height': '48' },
|
||||
'icon_cps_32': { 'png': 'icon_cps_32.png', 'svg': 'icon_cps.svg', 'width': '32', 'height': '32' },
|
||||
'icon_cps_16': { 'png': 'icon_cps_16.png', 'svg': 'icon_cps.svg', 'width': '16', 'height': '16' },
|
||||
}
|
||||
rendered_icons = {}
|
||||
if render_icons_with_inkscape.allowed()
|
||||
foreach key, info : rendered_icons_optionally_from_svg
|
||||
rendered_icons += { key: custom_target(
|
||||
key + '-from-svg',
|
||||
output: info['png'],
|
||||
command: [
|
||||
inkscape,
|
||||
'--export-area-page',
|
||||
'--export-type', 'png',
|
||||
'--export-filename', '@OUTPUT@',
|
||||
'--export-width', info['width'],
|
||||
'--export-height', info['height'],
|
||||
files(info['svg']),
|
||||
],
|
||||
) }
|
||||
endforeach
|
||||
else
|
||||
foreach key, info : rendered_icons_optionally_from_svg
|
||||
rendered_icons += { key: files('generated_icons/' + info['png']) }
|
||||
endforeach
|
||||
endif
|
||||
|
||||
if host_platform == 'windows'
|
||||
windows_icons = get_option('windows_icons')
|
||||
windows_utf8cp = get_option('windows_utf8cp')
|
||||
rc_conf_depends = []
|
||||
rc_conf_depend_files = [
|
||||
'resource.h',
|
||||
]
|
||||
icon_exe_ico_path = ''
|
||||
icon_cps_ico_path = ''
|
||||
winutf8_xml_path = ''
|
||||
if windows_icons
|
||||
make_ico = executable('makeico', sources: 'MakeIco.cpp', native: true)
|
||||
generated_win_icos = {}
|
||||
win_icos = {
|
||||
'icon_exe': [ 'icon_exe', 'icon_exe_48', 'icon_exe_32', 'icon_exe_16' ],
|
||||
'icon_cps': [ 'icon_cps', 'icon_cps_48', 'icon_cps_32', 'icon_cps_16' ],
|
||||
}
|
||||
foreach key, icons : win_icos
|
||||
command = [
|
||||
make_ico,
|
||||
'@OUTPUT@',
|
||||
]
|
||||
foreach ikey : icons
|
||||
command += [ rendered_icons[ikey] ]
|
||||
endforeach
|
||||
generated_win_icos += { key: custom_target(
|
||||
key + '-ico',
|
||||
output: key + '.ico',
|
||||
command: command,
|
||||
) }
|
||||
endforeach
|
||||
rc_conf_depends += [
|
||||
generated_win_icos['icon_exe'],
|
||||
generated_win_icos['icon_cps'],
|
||||
]
|
||||
icon_exe_ico_path = join_paths(meson.current_build_dir(), 'icon_exe.ico')
|
||||
icon_cps_ico_path = join_paths(meson.current_build_dir(), 'icon_cps.ico')
|
||||
endif
|
||||
if windows_utf8cp
|
||||
rc_conf_depend_files += [
|
||||
'winutf8.xml',
|
||||
]
|
||||
winutf8_xml_path = join_paths(meson.current_source_dir(), 'winutf8.xml')
|
||||
endif
|
||||
rc_conf_data = configuration_data()
|
||||
rc_conf_data.merge_from(conf_data)
|
||||
rc_conf_data.set('HAVE_ICONS', windows_icons ? 1 : 0)
|
||||
rc_conf_data.set('HAVE_UTF8CP', windows_utf8cp ? 1 : 0)
|
||||
rc_conf_data.set('RESOUCE_H', join_paths(meson.current_source_dir(), 'resource.h'))
|
||||
rc_conf_data.set('WINUTF8_XML', winutf8_xml_path)
|
||||
rc_conf_data.set('ICON_EXE_ICO', icon_exe_ico_path)
|
||||
rc_conf_data.set('ICON_CPS_ICO', icon_cps_ico_path)
|
||||
powder_files += windows_mod.compile_resources(
|
||||
configure_file(
|
||||
input: 'powder-res.template.rc',
|
||||
output: 'powder-res.rc',
|
||||
configuration: rc_conf_data,
|
||||
),
|
||||
depends: rc_conf_depends,
|
||||
depend_files: rc_conf_depend_files,
|
||||
)
|
||||
elif host_platform == 'darwin'
|
||||
configure_file(
|
||||
input: 'Info.template.plist',
|
||||
output: 'Info.plist',
|
||||
configuration: conf_data,
|
||||
)
|
||||
elif host_platform == 'linux'
|
||||
data_files += to_array.process(rendered_icons['icon_exe'], extra_args: 'icon_exe_png')
|
||||
data_files += to_array.process(rendered_icons['icon_cps'], extra_args: 'icon_cps_png')
|
||||
data_files += to_array.process('save.xml', extra_args: 'save_xml')
|
||||
data_files += to_array.process(configure_file(
|
||||
input: 'powder.template.desktop',
|
||||
output: 'powder.desktop',
|
||||
configuration: conf_data,
|
||||
), extra_args: 'powder_desktop')
|
||||
|
||||
configure_file(
|
||||
input: 'appdata.template.xml',
|
||||
output: 'appdata.xml',
|
||||
configuration: conf_data,
|
||||
)
|
||||
endif
|
||||
|
||||
data_files += to_array.process('save_local.png', extra_args: 'save_local_png')
|
||||
data_files += to_array.process('save_online.png', extra_args: 'save_online_png')
|
||||
data_files += to_array.process('font.bz2', extra_args: 'compressed_font_data')
|
5
resources/powder-res.rc
Normal file
@ -0,0 +1,5 @@
|
||||
#include "resource.h"
|
||||
|
||||
IDI_ICON ICON DISCARDABLE "icon.ico"
|
||||
IDI_DOC_ICON ICON DISCARDABLE "document.ico"
|
||||
IDI_EVENTCOMPAT LUASCRIPT "../src/lua/luascripts/eventcompat.lua"
|
@ -1,40 +0,0 @@
|
||||
#pragma code_page(65001) // UTF-8
|
||||
|
||||
#include "@RESOUCE_H@"
|
||||
#include <winuser.h>
|
||||
#include <winver.h>
|
||||
#include <ntdef.h>
|
||||
|
||||
#define HAVE_ICONS @HAVE_ICONS@
|
||||
#define HAVE_UTF8CP @HAVE_UTF8CP@
|
||||
#if HAVE_ICONS
|
||||
IDI_ICON ICON DISCARDABLE "@ICON_EXE_ICO@"
|
||||
IDI_DOC_ICON ICON DISCARDABLE "@ICON_CPS_ICO@"
|
||||
#endif
|
||||
#if HAVE_UTF8CP
|
||||
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "@WINUTF8_XML@"
|
||||
#endif
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION @DISPLAY_VERSION_MAJOR@,@DISPLAY_VERSION_MINOR@,0,@BUILD_NUM@
|
||||
PRODUCTVERSION @DISPLAY_VERSION_MAJOR@,@DISPLAY_VERSION_MINOR@,0,@BUILD_NUM@
|
||||
{
|
||||
BLOCK "StringFileInfo"
|
||||
{
|
||||
BLOCK "040904b0"
|
||||
{
|
||||
VALUE "CompanyName", "https://powdertoy.co.uk/\0"
|
||||
VALUE "FileDescription", "@APPNAME@\0"
|
||||
VALUE "FileVersion", "@DISPLAY_VERSION_MAJOR@.@DISPLAY_VERSION_MINOR@.0.@BUILD_NUM@\0"
|
||||
VALUE "OriginalFilename", "@APPEXE@.exe\0"
|
||||
VALUE "LegalCopyright", "@MANIFEST_COPYRIGHT@\0"
|
||||
VALUE "ProductName", "@APPCOMMENT@\0"
|
||||
VALUE "ProductVersion", "@DISPLAY_VERSION_MAJOR@.@DISPLAY_VERSION_MINOR@.0.@BUILD_NUM@\0"
|
||||
VALUE "InternalName", "@APPID@\0"
|
||||
}
|
||||
}
|
||||
BLOCK "VarFileInfo"
|
||||
{
|
||||
VALUE "Translation", 0x409, 65001
|
||||
}
|
||||
}
|
30
resources/powder.appdata.xml
Normal file
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<component type="desktop">
|
||||
<id>uk.co.powdertoy.tpt</id>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>GPL-3.0</project_license>
|
||||
<name>Powder Toy</name>
|
||||
<summary>Physics sandbox game</summary>
|
||||
<content_rating type="oars-1.1">
|
||||
<content_attribute id="social-chat">moderate</content_attribute>
|
||||
</content_rating>
|
||||
<launchable type="desktop-id">powder.desktop</launchable>
|
||||
<description>
|
||||
<p>
|
||||
The Powder Toy is a free physics sandbox game, which simulates air pressure and velocity, heat, gravity and a countless number of interactions between different substances! The game provides you with various building materials, liquids, gases and electronic components which can be used to construct complex machines, guns, bombs, realistic terrains and almost anything else. You can then mine them and watch cool explosions, add intricate wirings, play with little stickmen or operate your machine. You can browse and play thousands of different saves made by the community or upload your own - we welcome your creations!
|
||||
</p>
|
||||
</description>
|
||||
<screenshots>
|
||||
<screenshot>
|
||||
<image>http://powdertoy.co.uk/Themes/Next/Design/Images/Screen2.png</image>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
<url type="homepage">https://powdertoy.co.uk/</url>
|
||||
<url type="bugtracker">https://github.com/The-Powder-Toy/The-Powder-Toy/issues</url>
|
||||
<url type="help">https://powdertoy.co.uk/Wiki/W/Main_Page.html</url>
|
||||
<releases>
|
||||
<release date="2019-02-21" version="94.1" />
|
||||
</releases>
|
||||
|
||||
|
||||
</component>
|
9
resources/powder.desktop
Normal file
@ -0,0 +1,9 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Encoding=UTF-8
|
||||
Name=Powder Toy
|
||||
Comment=Physics sandbox game
|
||||
Exec=powder
|
||||
Icon=powder
|
||||
Type=Application
|
||||
Categories=Game;Simulation;
|