summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xauto/create.sh1
-rw-r--r--extra/aom/fix-stack-size-e53da0b.patch78
-rw-r--r--extra/chromium/chromium-launcher.sh41
-rw-r--r--extra/chromium/chromium-revert-drop-of-system-java.patch15
-rw-r--r--extra/chromium/chromium-use-alpine-target.patch24
-rw-r--r--extra/chromium/chromium.conf5
-rw-r--r--extra/chromium/chromium.desktop10
-rw-r--r--extra/chromium/credentials-header.patch11
-rw-r--r--extra/chromium/default-pthread-stacksize.patch45
-rw-r--r--extra/chromium/elf-arm.patch11
-rw-r--r--extra/chromium/enable-GlobalMediaControlsCastStartStop.patch32
-rw-r--r--extra/chromium/fix-narrowing-cast.patch53
-rw-r--r--extra/chromium/fix-unittests-sandbox.patch11
-rw-r--r--extra/chromium/gcc-arm.patch11
-rw-r--r--extra/chromium/gdbinit.patch21
-rw-r--r--extra/chromium/google-api.keys10
-rw-r--r--extra/chromium/media-base.patch10
-rw-r--r--extra/chromium/memory-tagging-arm64.patch18
-rw-r--r--extra/chromium/musl-crashpad.patch25
-rw-r--r--extra/chromium/musl-fixes.patch221
-rw-r--r--extra/chromium/musl-hacks.patch98
-rw-r--r--extra/chromium/musl-libc++.patch51
-rw-r--r--extra/chromium/musl-sandbox.patch176
-rw-r--r--extra/chromium/musl-stat.patch12
-rw-r--r--extra/chromium/musl-tid-caching.patch81
-rw-r--r--extra/chromium/musl-v8-monotonic-pthread-cont_timedwait.patch22
-rw-r--r--extra/chromium/nasm.patch11
-rw-r--r--extra/chromium/no-execinfo.patch75
-rw-r--r--extra/chromium/no-getcontext.patch26
-rw-r--r--extra/chromium/no-mallinfo.patch83
-rw-r--r--extra/chromium/quiche-arena-size.patch11
-rw-r--r--extra/chromium/remove-strip_binary.patch32
-rw-r--r--extra/chromium/resolver.patch36
-rw-r--r--extra/chromium/revert-use-ffile-compilation-dir.patch48
-rw-r--r--extra/chromium/scoped-file.patch31
-rw-r--r--extra/chromium/sql-make-VirtualCursor-standard-layout-type.patch238
-rw-r--r--extra/chromium/system-opus.patch52
-rw-r--r--extra/chromium/unbundle-ffmpeg-av_stream_get_first_dts.patch12
-rw-r--r--extra/chromium/unbundle-ffmpeg-av_stream_get_first_dts.patch.112
-rw-r--r--extra/chromium/use-deprecated-ffmpeg-api.patch36
-rw-r--r--extra/chromium/use-deprecated-ffmpeg-api.patch.136
-rw-r--r--extra/chromium/use-oauth2-client-switches-as-default.patch17
-rw-r--r--extra/chromium/wayland-egl.patch22
-rw-r--r--extra/chromium/webcodecs-stop-using-AudioOpusEncoder.patch49
-rw-r--r--extra/chromium/webrtc-check-existence-of-cursor-metadata.patch31
-rw-r--r--extra/compiler-rt/link-execinfo.patch11
-rw-r--r--extra/dav1d/fix-asmcheck.patch63
-rw-r--r--extra/ffmpeg/0001-ffbuild-libversion.sh-add-shebang.patch24
-rw-r--r--extra/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch55
-rw-r--r--extra/ffmpeg/add-av_stream_get_first_dts-for-chromium.patch45
-rw-r--r--extra/ffmpeg4/0001-ffbuild-libversion.sh-add-shebang.patch24
-rw-r--r--extra/ffmpeg4/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch55
-rw-r--r--extra/gdk-pixbuf/disable-tests.patch13
-rw-r--r--extra/glew/glew.patch34
-rw-r--r--extra/glib/0001-gquark-fix-initialization-with-c-constructors.patch47
-rw-r--r--extra/glib/deprecated-no-warn.patch23
-rw-r--r--extra/glib/musl-libintl.patch22
-rw-r--r--extra/glm/fix-endian-test.patch30
-rw-r--r--extra/glm/glm.pc7
-rw-r--r--extra/gobject-introspection/musl-time64.patch37
-rw-r--r--extra/libexecinfo/10-execinfo.patch64
-rw-r--r--extra/libexecinfo/20-define-gnu-source.patch24
-rw-r--r--extra/libexecinfo/30-linux-makefile.patch44
-rw-r--r--extra/libpng/libpng-1.6.37-apng.patch1728
-rw-r--r--extra/libretls/test_program.c11
-rw-r--r--extra/libsrt/fix-cmake.patch39
-rw-r--r--extra/llvm-libunwind/libcxx-musl.patch28
-rw-r--r--extra/llvm-libunwind/libunwind-link-libssp.patch20
-rw-r--r--extra/menu-cache/menu-cache-1.1.0-0001-Support-gcc10-compilation.patch108
-rw-r--r--extra/nodejs/disable-running-gyp-on-shared-deps.patch20
-rw-r--r--extra/nodejs/fix-build-with-system-c-ares.patch535
-rw-r--r--extra/openntpd/libtls-standalone.patch20
-rw-r--r--extra/openntpd/ntp-user.patch13
-rw-r--r--extra/openntpd/openntpd.confd3
-rw-r--r--extra/openntpd/openntpd.initd14
-rw-r--r--extra/openssh/sshd.confd26
-rw-r--r--extra/openssh/sshd.initd162
-rw-r--r--extra/polybar/fix-version.patch11
-rw-r--r--extra/sdl2/directfb-cflags.patch10
-rw-r--r--extra/tzdata/0001-posixtz-ensure-the-file-offset-we-pass-to-lseek-is-o.patch27
-rw-r--r--extra/tzdata/0002-fix-implicit-declaration-warnings-by-including-strin.patch28
-rw-r--r--extra/v4l-utils/fix_parse_next_subopt.patch36
-rw-r--r--extra/v4l-utils/types.patch26
-rw-r--r--extra/x264/oclobj.h4684
-rw-r--r--repo/apps/arandr.xibuild15
-rw-r--r--repo/apps/chromium.xibuild287
-rw-r--r--repo/apps/mpv.xibuild33
-rw-r--r--repo/apps/pcmanfm.xibuild33
-rw-r--r--repo/apps/polybar.xibuild44
-rw-r--r--repo/devel/clang.xibuild4
-rw-r--r--repo/devel/compiler-rt.xibuild38
-rw-r--r--repo/devel/libexecinfo.xibuild32
-rw-r--r--repo/devel/lld.xibuild29
-rw-r--r--repo/devel/llvm-libunwind.xibuild48
-rw-r--r--repo/devel/waf.xibuild14
-rw-r--r--repo/media/aom.xibuild24
-rw-r--r--repo/media/dav1d.xibuild30
-rw-r--r--repo/media/ffmpeg.xibuild63
-rw-r--r--repo/media/ffmpeg4.xibuild64
-rw-r--r--repo/media/lame.xibuild26
-rw-r--r--repo/media/libass.xibuild23
-rw-r--r--repo/media/librist.xibuild22
-rw-r--r--repo/media/libsrt.xibuild28
-rw-r--r--repo/media/mpc-mpd.xibuild21
-rw-r--r--repo/media/mpd.xibuild42
-rw-r--r--repo/media/soxr.xibuild23
-rw-r--r--repo/media/v4l-utils.xibuild29
-rw-r--r--repo/media/vidstab.xibuild23
-rw-r--r--repo/media/x264.xibuild35
-rw-r--r--repo/media/x265.xibuild53
-rw-r--r--repo/media/xvidcore.xibuild24
-rw-r--r--repo/meta/base.xibuild2
-rw-r--r--repo/system/c-ares.xibuild23
-rw-r--r--repo/system/glew.xibuild20
-rw-r--r--repo/system/glib.xibuild10
-rw-r--r--repo/system/glm.xibuild35
-rw-r--r--repo/system/glu.xibuild24
-rw-r--r--repo/system/gobject-introspection.xibuild7
-rw-r--r--repo/system/imlib2.xibuild2
-rw-r--r--repo/system/libexif.xibuild23
-rw-r--r--repo/system/libfm-extra.xibuild31
-rw-r--r--repo/system/libfm.xibuild31
-rw-r--r--repo/system/libpng.xibuild8
-rw-r--r--repo/system/libretls.xibuild31
-rw-r--r--repo/system/menu-cache.xibuild28
-rw-r--r--repo/system/nodejs.xibuild36
-rw-r--r--repo/system/openntpd.xibuild49
-rw-r--r--repo/system/shared-mime-info.xibuild6
-rw-r--r--repo/system/tzdata.xibuild56
-rw-r--r--repo/util/fzf.xibuild1
-rw-r--r--repo/util/gawk.xibuild1
-rw-r--r--repo/util/inetutils.xibuild1
-rw-r--r--repo/util/openssh.xibuild14
-rw-r--r--repo/x11/adwaita-icon-theme.xibuild27
-rw-r--r--repo/x11/gdk-pixbuf.xibuild17
-rw-r--r--repo/x11/gsettings-desktop-schemas.xibuild26
-rw-r--r--repo/x11/gtk2.xibuild42
-rw-r--r--repo/x11/gtk3.xibuild43
-rw-r--r--repo/x11/harfbuzz.xibuild5
-rw-r--r--repo/x11/hicolor-icon-theme.xibuild24
-rw-r--r--repo/x11/libva.xibuild10
-rw-r--r--repo/x11/maim.xibuild23
-rw-r--r--repo/x11/mesa.xibuild7
-rw-r--r--repo/x11/pango.xibuild8
-rw-r--r--repo/x11/sdl2.xibuild38
-rw-r--r--repo/x11/slop.xibuild23
-rw-r--r--repo/x11/xf86-video-intel.xibuild27
-rw-r--r--repo/x11/xorg-server.xibuild29
-rw-r--r--repo/xi/xipkg.xibuild4
-rw-r--r--repo/xi/xiutils.xibuild2
-rw-r--r--skip/libssh.xibuild25
-rw-r--r--skip/x264.xibuild27
-rw-r--r--templates/cmake.xibuild2
-rw-r--r--templates/configure.xibuild2
-rw-r--r--templates/make.xibuild2
-rw-r--r--wishlist.md20
156 files changed, 12043 insertions, 58 deletions
diff --git a/auto/create.sh b/auto/create.sh
index 7640e3d..eb73caa 100755
--- a/auto/create.sh
+++ b/auto/create.sh
@@ -63,6 +63,7 @@ EOF
filename=$(basename $l)
curl -SsL $l > extra/$name/$filename
filenames="$filename $filenames"
+ sleep 2
done
echo "ADDITIONAL=\"$filenames\"" >> $buildfile
diff --git a/extra/aom/fix-stack-size-e53da0b.patch b/extra/aom/fix-stack-size-e53da0b.patch
new file mode 100644
index 0000000..d8206e8
--- /dev/null
+++ b/extra/aom/fix-stack-size-e53da0b.patch
@@ -0,0 +1,78 @@
+From e53da0b1bf2652896bed7b65929a1d8d0729d922 Mon Sep 17 00:00:00 2001
+From: Wan-Teh Chang <wtc@google.com>
+Date: Thu, 27 Aug 2020 20:49:03 -0700
+Subject: [PATCH] Ensure thread stack size is at least 256 KB
+
+BUG=aomedia:2754
+
+Change-Id: Ia6e211f9b87bc2efe376e7b9f4adb11741850b18
+---
+
+diff --git a/aom_util/aom_thread.c b/aom_util/aom_thread.c
+index a749a22..8411569 100644
+--- a/aom_util/aom_thread.c
++++ b/aom_util/aom_thread.c
+@@ -133,16 +133,39 @@
+ goto Error;
+ }
+ if (pthread_cond_init(&worker->impl_->condition_, NULL)) {
+- pthread_mutex_destroy(&worker->impl_->mutex_);
+- goto Error;
++ goto Error1;
+ }
++ pthread_attr_t *attr = NULL;
++#if HAVE_PTHREAD_H
++ pthread_attr_t thread_attributes;
++ attr = &thread_attributes;
++ if (pthread_attr_init(attr)) {
++ goto Error2;
++ }
++ size_t stack_size;
++ if (pthread_attr_getstacksize(attr, &stack_size)) {
++ pthread_attr_destroy(attr);
++ goto Error2;
++ }
++ const size_t kMinStackSize = 256 * 1024;
++ if (stack_size < kMinStackSize &&
++ pthread_attr_setstacksize(attr, kMinStackSize)) {
++ pthread_attr_destroy(attr);
++ goto Error2;
++ }
++#endif // HAVE_PTHREAD_H
+ pthread_mutex_lock(&worker->impl_->mutex_);
+- ok = !pthread_create(&worker->impl_->thread_, NULL, thread_loop, worker);
++ ok = !pthread_create(&worker->impl_->thread_, attr, thread_loop, worker);
+ if (ok) worker->status_ = OK;
+ pthread_mutex_unlock(&worker->impl_->mutex_);
++#if HAVE_PTHREAD_H
++ pthread_attr_destroy(attr);
++#endif
+ if (!ok) {
+- pthread_mutex_destroy(&worker->impl_->mutex_);
++ Error2:
+ pthread_cond_destroy(&worker->impl_->condition_);
++ Error1:
++ pthread_mutex_destroy(&worker->impl_->mutex_);
+ Error:
+ aom_free(worker->impl_);
+ worker->impl_ = NULL;
+diff --git a/aom_util/aom_thread.h b/aom_util/aom_thread.h
+index 8d04312..efbed78 100644
+--- a/aom_util/aom_thread.h
++++ b/aom_util/aom_thread.h
+@@ -32,6 +32,7 @@
+ #include <process.h> // NOLINT
+ #include <windows.h> // NOLINT
+ typedef HANDLE pthread_t;
++typedef int pthread_attr_t;
+ typedef CRITICAL_SECTION pthread_mutex_t;
+
+ #if _WIN32_WINNT < 0x0600
+@@ -147,6 +148,7 @@
+ #include <sys/builtin.h> // NOLINT
+
+ #define pthread_t TID
++#define pthread_attr_t int
+ #define pthread_mutex_t HMTX
+
+ typedef struct {
diff --git a/extra/chromium/chromium-launcher.sh b/extra/chromium/chromium-launcher.sh
new file mode 100644
index 0000000..ceba3f2
--- /dev/null
+++ b/extra/chromium/chromium-launcher.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+export DBUS_SESSION_BUS_ADDRES=unix:path=/run/dbus/system_bus_socket
+
+# Allow the user to override command-line flags, bug #357629.
+# This is based on Debian's chromium-browser package, and is intended
+# to be consistent with Debian.
+for f in /etc/chromium/*.conf; do
+ [ -f ${f} ] && . "${f}"
+done
+
+# Prefer user defined CHROMIUM_USER_FLAGS (from env) over system
+# default CHROMIUM_FLAGS (from /etc/chromium/default).
+CHROMIUM_FLAGS=${CHROMIUM_USER_FLAGS:-"$CHROMIUM_FLAGS"}
+
+# Let the wrapped binary know that it has been run through the wrapper
+export CHROME_WRAPPER=$(readlink -f "$0")
+
+PROGDIR=${CHROME_WRAPPER%/*}
+
+case ":$PATH:" in
+ *:$PROGDIR:*)
+ # $PATH already contains $PROGDIR
+ ;;
+ *)
+ # Append $PROGDIR to $PATH
+ export PATH="$PATH:$PROGDIR"
+ ;;
+esac
+
+if [ $(id -u) -eq 0 ] && [ $(stat -t -L ${XDG_CONFIG_HOME:-${HOME}} | cut -d' ' -f5) -eq 0 ]; then
+ # Running as root with HOME owned by root.
+ # Pass --user-data-dir to work around upstream failsafe.
+ CHROMIUM_FLAGS="--user-data-dir=${XDG_CONFIG_HOME:-${HOME}/.config}/chromium
+ ${CHROMIUM_FLAGS}"
+fi
+
+# Set the .desktop file name
+export CHROME_DESKTOP="chromium.desktop"
+
+exec "$PROGDIR/chromium" --extra-plugin-dir=/usr/lib/nsbrowser/plugins ${CHROMIUM_FLAGS} "$@"
diff --git a/extra/chromium/chromium-revert-drop-of-system-java.patch b/extra/chromium/chromium-revert-drop-of-system-java.patch
new file mode 100644
index 0000000..117a50f
--- /dev/null
+++ b/extra/chromium/chromium-revert-drop-of-system-java.patch
@@ -0,0 +1,15 @@
+This was dropped for some reason in 6951c37cecd05979b232a39e5c10e6346a0f74ef
+--- a/third_party/closure_compiler/compiler.py 2021-05-20 04:17:53.000000000 +0200
++++ b/third_party/closure_compiler/compiler.py 2021-05-20 04:17:53.000000000 +0200
+@@ -13,8 +13,9 @@
+
+
+ _CURRENT_DIR = os.path.join(os.path.dirname(__file__))
+-_JAVA_PATH = os.path.join(_CURRENT_DIR, "..", "jdk", "current", "bin", "java")
+-assert os.path.isfile(_JAVA_PATH), "java only allowed in android builds"
++_JAVA_BIN = "java"
++_JDK_PATH = os.path.join(_CURRENT_DIR, "..", "jdk", "current", "bin", "java")
++_JAVA_PATH = _JDK_PATH if os.path.isfile(_JDK_PATH) else _JAVA_BIN
+
+ class Compiler(object):
+ """Runs the Closure compiler on given source files to typecheck them
diff --git a/extra/chromium/chromium-use-alpine-target.patch b/extra/chromium/chromium-use-alpine-target.patch
new file mode 100644
index 0000000..8282aca
--- /dev/null
+++ b/extra/chromium/chromium-use-alpine-target.patch
@@ -0,0 +1,24 @@
+--- ./build/config/compiler/BUILD.gn
++++ ./build/config/compiler/BUILD.gn
+@@ -752,8 +752,8 @@
+ }
+ } else if (current_cpu == "arm") {
+ if (is_clang && !is_android && !is_nacl) {
+- cflags += [ "--target=arm-linux-gnueabihf" ]
+- ldflags += [ "--target=arm-linux-gnueabihf" ]
++ cflags += [ "--target=armv7-alpine-linux-musleabihf" ]
++ ldflags += [ "--target=armv7-alpine-linux-musleabihf" ]
+ }
+ if (!is_nacl) {
+ cflags += [
+@@ -766,8 +766,8 @@
+ }
+ } else if (current_cpu == "arm64") {
+ if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
+- cflags += [ "--target=aarch64-linux-gnu" ]
+- ldflags += [ "--target=aarch64-linux-gnu" ]
++ cflags += [ "--target=aarch64-alpine-linux-musl" ]
++ ldflags += [ "--target=aarch64-alpine-linux-musl" ]
+ }
+ } else if (current_cpu == "mipsel" && !is_nacl) {
+ ldflags += [ "-Wl,--hash-style=sysv" ]
diff --git a/extra/chromium/chromium.conf b/extra/chromium/chromium.conf
new file mode 100644
index 0000000..a8b8db3
--- /dev/null
+++ b/extra/chromium/chromium.conf
@@ -0,0 +1,5 @@
+# Default settings for chromium. This file is sourced by /bin/sh from
+# the chromium launcher.
+
+# Options to pass to chromium.
+#CHROMIUM_FLAGS=""
diff --git a/extra/chromium/chromium.desktop b/extra/chromium/chromium.desktop
new file mode 100644
index 0000000..e5f549b
--- /dev/null
+++ b/extra/chromium/chromium.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=Chromium
+GenericName=Web Browser
+Comment=Access the Internet
+Exec=chromium-browser %U
+Terminal=false
+Icon=chromium
+Type=Application
+Categories=GTK;Network;WebBrowser;
+MimeType=text/html;text/xml;application/xhtml+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
diff --git a/extra/chromium/credentials-header.patch b/extra/chromium/credentials-header.patch
new file mode 100644
index 0000000..840bd2a
--- /dev/null
+++ b/extra/chromium/credentials-header.patch
@@ -0,0 +1,11 @@
+--- ./sandbox/linux/services/credentials.h.orig
++++ ./sandbox/linux/services/credentials.h
+@@ -14,6 +14,8 @@
+ #include <string>
+ #include <vector>
+
++#include <sys/types.h>
++
+ #include "sandbox/linux/system_headers/capability.h"
+ #include "sandbox/sandbox_export.h"
+
diff --git a/extra/chromium/default-pthread-stacksize.patch b/extra/chromium/default-pthread-stacksize.patch
new file mode 100644
index 0000000..74ebc76
--- /dev/null
+++ b/extra/chromium/default-pthread-stacksize.patch
@@ -0,0 +1,45 @@
+--- ./base/threading/platform_thread_linux.cc
++++ ./base/threading/platform_thread_linux.cc
+@@ -186,7 +186,8 @@
+
+ size_t GetDefaultThreadStackSize(const pthread_attr_t& attributes) {
+ #if !defined(THREAD_SANITIZER)
+- return 0;
++ // use 2mb to avoid running out of space. This is what android uses
++ return 2 * (1 << 20);
+ #else
+ // ThreadSanitizer bloats the stack heavily. Evidence has been that the
+ // default stack size isn't enough for some browser tests.
+--- ./base/threading/platform_thread_unittest.cc.orig
++++ ./base/threading/platform_thread_unittest.cc
+@@ -420,7 +420,7 @@
+ ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \
+ !defined(THREAD_SANITIZER)) || \
+ (BUILDFLAG(IS_ANDROID) && !defined(ADDRESS_SANITIZER))
+- EXPECT_EQ(0u, stack_size);
++ EXPECT_EQ(2u << 20, stack_size);
+ #else
+ EXPECT_GT(stack_size, 0u);
+ EXPECT_LT(stack_size, 20u * (1 << 20));
+--- ./chrome/browser/shutdown_signal_handlers_posix.cc
++++ ./chrome/browser/shutdown_signal_handlers_posix.cc
+@@ -187,11 +187,19 @@
+ g_shutdown_pipe_read_fd = pipefd[0];
+ g_shutdown_pipe_write_fd = pipefd[1];
+ #if !defined(ADDRESS_SANITIZER)
++# if defined(__GLIBC__)
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
++# else
++ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2 * 8; // match up musls 2k PTHREAD_STACK_MIN with glibcs 16k
++# endif
+ #else
++# if defined(__GLIBC__)
+ // ASan instrumentation bloats the stack frames, so we need to increase the
+ // stack size to avoid hitting the guard page.
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4;
++# else
++ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4 * 8; // match up musls 2k PTHREAD_STACK_MIN with glibcs 16k
++# endif
+ #endif
+ ShutdownDetector* detector = new ShutdownDetector(
+ g_shutdown_pipe_read_fd, std::move(shutdown_callback), task_runner);
diff --git a/extra/chromium/elf-arm.patch b/extra/chromium/elf-arm.patch
new file mode 100644
index 0000000..3799dc9
--- /dev/null
+++ b/extra/chromium/elf-arm.patch
@@ -0,0 +1,11 @@
+--- ./v8/src/base/cpu.cc.orig
++++ ./v8/src/base/cpu.cc
+@@ -16,7 +16,7 @@
+ #if V8_OS_QNX
+ #include <sys/syspage.h> // cpuinfo
+ #endif
+-#if V8_OS_LINUX && (V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64)
++#if V8_OS_LINUX && (V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64 || V8_HOST_ARCH_ARM)
+ #include <elf.h>
+ #endif
+ #if V8_OS_AIX
diff --git a/extra/chromium/enable-GlobalMediaControlsCastStartStop.patch b/extra/chromium/enable-GlobalMediaControlsCastStartStop.patch
new file mode 100644
index 0000000..e0d4544
--- /dev/null
+++ b/extra/chromium/enable-GlobalMediaControlsCastStartStop.patch
@@ -0,0 +1,32 @@
+From b58f0f2725a8c1a8a131f9984b5fd53b54119dba Mon Sep 17 00:00:00 2001
+From: Muyao Xu <muyaoxu@google.com>
+Date: Thu, 20 Jan 2022 23:46:21 +0000
+Subject: [PATCH] [Zenith] Enable GlobalMediaControlsCastStartStop flag by
+ default
+
+The feature is rolled out to 100% stable through finch for M96+.
+This CL enables it by default and fixes some unit tests failures.
+
+Bug: 1287242, 1287305
+Change-Id: I7e5c9625b77379fef253c41ef292a0dd6fc366fb
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3388416
+Reviewed-by: Takumi Fujimoto <takumif@chromium.org>
+Commit-Queue: Muyao Xu <muyaoxu@google.com>
+Cr-Commit-Position: refs/heads/main@{#961658}
+---
+ chrome/browser/media/router/media_router_feature.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browser/media/router/media_router_feature.cc
+index f28f9b0b802..a8d544f7d6d 100644
+--- a/chrome/browser/media/router/media_router_feature.cc
++++ b/chrome/browser/media/router/media_router_feature.cc
+@@ -33,7 +33,7 @@ const base::Feature kMediaRouter{"MediaRouter",
+ const base::Feature kCastAllowAllIPsFeature{"CastAllowAllIPs",
+ base::FEATURE_DISABLED_BY_DEFAULT};
+ const base::Feature kGlobalMediaControlsCastStartStop{
+- "GlobalMediaControlsCastStartStop", base::FEATURE_DISABLED_BY_DEFAULT};
++ "GlobalMediaControlsCastStartStop", base::FEATURE_ENABLED_BY_DEFAULT};
+ const base::Feature kAllowAllSitesToInitiateMirroring{
+ "AllowAllSitesToInitiateMirroring", base::FEATURE_DISABLED_BY_DEFAULT};
+ const base::Feature kDialMediaRouteProvider{"DialMediaRouteProvider",
diff --git a/extra/chromium/fix-narrowing-cast.patch b/extra/chromium/fix-narrowing-cast.patch
new file mode 100644
index 0000000..afd42a1
--- /dev/null
+++ b/extra/chromium/fix-narrowing-cast.patch
@@ -0,0 +1,53 @@
+--- a/base/files/file_util_linux.cc
++++ b/base/files/file_util_linux.cc
+@@ -23,14 +23,14 @@
+
+ // Not all possible |statfs_buf.f_type| values are in linux/magic.h.
+ // Missing values are copied from the statfs man page.
+- switch (statfs_buf.f_type) {
++ switch (static_cast<uintmax_t>(statfs_buf.f_type)) {
+ case 0:
+ *type = FILE_SYSTEM_0;
+ break;
+ case EXT2_SUPER_MAGIC: // Also ext3 and ext4
+ case MSDOS_SUPER_MAGIC:
+ case REISERFS_SUPER_MAGIC:
+- case static_cast<int>(BTRFS_SUPER_MAGIC):
++ case BTRFS_SUPER_MAGIC:
+ case 0x5346544E: // NTFS
+ case 0x58465342: // XFS
+ case 0x3153464A: // JFS
+@@ -40,14 +40,14 @@
+ *type = FILE_SYSTEM_NFS;
+ break;
+ case SMB_SUPER_MAGIC:
+- case static_cast<int>(0xFF534D42): // CIFS
++ case 0xFF534D42: // CIFS
+ *type = FILE_SYSTEM_SMB;
+ break;
+ case CODA_SUPER_MAGIC:
+ *type = FILE_SYSTEM_CODA;
+ break;
+- case static_cast<int>(HUGETLBFS_MAGIC):
+- case static_cast<int>(RAMFS_MAGIC):
++ case HUGETLBFS_MAGIC:
++ case RAMFS_MAGIC:
+ case TMPFS_MAGIC:
+ *type = FILE_SYSTEM_MEMORY;
+ break;
+--- a/base/system/sys_info_posix.cc
++++ b/base/system/sys_info_posix.cc
+@@ -100,10 +100,10 @@
+ if (HANDLE_EINTR(statfs(path.value().c_str(), &stats)) != 0)
+ return false;
+
+- switch (stats.f_type) {
++ switch (static_cast<uintmax_t>(stats.f_type)) {
+ case TMPFS_MAGIC:
+- case static_cast<int>(HUGETLBFS_MAGIC):
+- case static_cast<int>(RAMFS_MAGIC):
++ case HUGETLBFS_MAGIC:
++ case RAMFS_MAGIC:
+ return true;
+ }
+ return false;
diff --git a/extra/chromium/fix-unittests-sandbox.patch b/extra/chromium/fix-unittests-sandbox.patch
new file mode 100644
index 0000000..e11face
--- /dev/null
+++ b/extra/chromium/fix-unittests-sandbox.patch
@@ -0,0 +1,11 @@
+--- ./sandbox/linux/syscall_broker/broker_file_permission_unittest.cc.orig
++++ ./sandbox/linux/syscall_broker/broker_file_permission_unittest.cc
+@@ -134,7 +134,7 @@
+ #endif
+
+ const int kNumberOfBitsInOAccMode = 2;
+- static_assert(O_ACCMODE == ((1 << kNumberOfBitsInOAccMode) - 1),
++ static_assert(O_ACCMODE == (((1 << kNumberOfBitsInOAccMode) - 1) | O_PATH),
+ "incorrect number of bits");
+ // check every possible flag and act accordingly.
+ // Skipping AccMode bits as they are present in every case.
diff --git a/extra/chromium/gcc-arm.patch b/extra/chromium/gcc-arm.patch
new file mode 100644
index 0000000..9eaa240
--- /dev/null
+++ b/extra/chromium/gcc-arm.patch
@@ -0,0 +1,11 @@
+--- ./third_party/zlib/BUILD.gn.orig
++++ ./third_party/zlib/BUILD.gn
+@@ -21,7 +21,7 @@
+ !(is_win && !is_clang)) {
+ # TODO(richard.townsend@arm.com): Optimizations temporarily disabled for
+ # Windows on Arm MSVC builds, see http://crbug.com/v8/10012.
+- if (arm_use_neon) {
++ if (arm_use_neon && is_clang) {
+ use_arm_neon_optimizations = true
+ }
+ }
diff --git a/extra/chromium/gdbinit.patch b/extra/chromium/gdbinit.patch
new file mode 100644
index 0000000..39d3464
--- /dev/null
+++ b/extra/chromium/gdbinit.patch
@@ -0,0 +1,21 @@
+--- ./tools/gdb/gdbinit.orig
++++ ./tools/gdb/gdbinit
+@@ -50,17 +50,7 @@
+
+ def set_src_dir(compile_dir):
+ global src_dir
+- git = subprocess.Popen(
+- ['git', '-C', compile_dir, 'rev-parse', '--show-toplevel'],
+- stdout=subprocess.PIPE,
+- stderr=subprocess.PIPE)
+- src_dir, _ = git.communicate()
+- if git.returncode:
+- return
+- if isinstance(src_dir, str):
+- src_dir = src_dir.rstrip()
+- else:
+- src_dir = src_dir.decode('utf-8').rstrip()
++ src_dir = os.path.abspath(os.getcwd())
+
+ load_libcxx_pretty_printers(src_dir)
+
diff --git a/extra/chromium/google-api.keys b/extra/chromium/google-api.keys
new file mode 100644
index 0000000..8cd0f0a
--- /dev/null
+++ b/extra/chromium/google-api.keys
@@ -0,0 +1,10 @@
+IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
+IyMjIyMKIyBQbGVhc2UgZG9udCB1c2UgdGhlc2Uga2V5cyBvdXRzaWRlIG9mIEFscGluZSBMaW51
+eCBwcm9qZWN0ICMKIyBZb3UgY2FuIGNyZWF0ZSB5b3VyIG93biBhdDogICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICMKIyBodHRwOi8vd3d3LmNocm9taXVtLm9yZy9kZXZlbG9wZXJzL2hv
+dy10b3MvYXBpLWtleXMgICAgICAgICMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
+IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKX2dvb2dsZV9hcGlfa2V5PSJBSXphU3lDUkk0
+RUdwRHVfQUFISThFMnllbmpWaFdRZHA0RzhpZ2MiCl9nb29nbGVfZGVmYXVsdF9jbGllbnRfaWQ9
+IjQ5NzU1MDYyMjM2Ny11YnRrbWQzYjJwcDVndWxiYTVuNmhhNnNxNG4zNWVoai5hcHBzLmdvb2ds
+ZXVzZXJjb250ZW50LmNvbSIKX2dvb2dsZV9kZWZhdWx0X2NsaWVudF9zZWNyZXQ9Ik5hQ1g4dElJ
+QXBocmpzNTZuM1RwSHhfZSIKCg==
diff --git a/extra/chromium/media-base.patch b/extra/chromium/media-base.patch
new file mode 100644
index 0000000..99b881f
--- /dev/null
+++ b/extra/chromium/media-base.patch
@@ -0,0 +1,10 @@
+--- ./media/base/subsample_entry.h
++++ ./media/base/subsample_entry.h
+@@ -9,6 +9,7 @@
+ #include <stdint.h>
+
+ #include <vector>
++#include <cstddef>
+
+ #include "media/base/media_export.h"
+
diff --git a/extra/chromium/memory-tagging-arm64.patch b/extra/chromium/memory-tagging-arm64.patch
new file mode 100644
index 0000000..6072698
--- /dev/null
+++ b/extra/chromium/memory-tagging-arm64.patch
@@ -0,0 +1,18 @@
+--- ./base/allocator/partition_allocator/tagging.cc.orig
++++ ./base/allocator/partition_allocator/tagging.cc
+@@ -19,15 +19,6 @@
+ #define PR_GET_TAGGED_ADDR_CTRL 56
+ #define PR_TAGGED_ADDR_ENABLE (1UL << 0)
+
+-#if BUILDFLAG(IS_LINUX)
+-#include <linux/version.h>
+-
+-// Linux headers already provide these since v5.10.
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0)
+-#define HAS_PR_MTE_MACROS
+-#endif
+-#endif
+-
+ #ifndef HAS_PR_MTE_MACROS
+ #define PR_MTE_TCF_SHIFT 1
+ #define PR_MTE_TCF_NONE (0UL << PR_MTE_TCF_SHIFT)
diff --git a/extra/chromium/musl-crashpad.patch b/extra/chromium/musl-crashpad.patch
new file mode 100644
index 0000000..387deea
--- /dev/null
+++ b/extra/chromium/musl-crashpad.patch
@@ -0,0 +1,25 @@
+diff --git a/third_party/crashpad/crashpad/util/linux/ptracer.cc b/third_party/crashpad/crashpad/util/linux/ptracer.cc
+index c6c9229..a5336b6 100644
+--- ./third_party/crashpad/crashpad/util/linux/ptracer.cc
++++ ./third_party/crashpad/crashpad/util/linux/ptracer.cc
+@@ -26,6 +26,7 @@
+
+ #if defined(ARCH_CPU_X86_FAMILY)
+ #include <asm/ldt.h>
++#include <asm/ptrace-abi.h>
+ #endif
+
+ namespace crashpad {
+diff --git a/third_party/crashpad/crashpad/util/linux/thread_info.h b/third_party/crashpad/crashpad/util/linux/thread_info.h
+index 5b55c24..08cec52 100644
+--- ./third_party/crashpad/crashpad/util/linux/thread_info.h
++++ ./third_party/crashpad/crashpad/util/linux/thread_info.h
+@@ -273,7 +273,7 @@ union FloatContext {
+ "Size mismatch");
+ #elif defined(ARCH_CPU_ARMEL)
+ static_assert(sizeof(f32_t::fpregs) == sizeof(user_fpregs), "Size mismatch");
+-#if !defined(__GLIBC__)
++#if defined(OS_ANDROID)
+ static_assert(sizeof(f32_t::vfp) == sizeof(user_vfp), "Size mismatch");
+ #endif
+ #elif defined(ARCH_CPU_ARM64)
diff --git a/extra/chromium/musl-fixes.patch b/extra/chromium/musl-fixes.patch
new file mode 100644
index 0000000..da2c115
--- /dev/null
+++ b/extra/chromium/musl-fixes.patch
@@ -0,0 +1,221 @@
+--- ./third_party/lss/linux_syscall_support.h.orig
++++ ./third_party/lss/linux_syscall_support.h
+@@ -1127,6 +1127,12 @@
+ #ifndef __NR_fallocate
+ #define __NR_fallocate 285
+ #endif
++
++#undef __NR_pread
++#define __NR_pread __NR_pread64
++#undef __NR_pwrite
++#define __NR_pwrite __NR_pwrite64
++
+ /* End of x86-64 definitions */
+ #elif defined(__mips__)
+ #if _MIPS_SIM == _MIPS_SIM_ABI32
+--- ./third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h.orig
++++ ./third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h
+@@ -37,6 +37,10 @@
+ #include "common/memory.h"
+ #include "google_breakpad/common/minidump_format.h"
+
++#if !defined(__GLIBC__)
++ #define _libc_fpstate _fpstate
++#endif
++
+ namespace google_breakpad {
+
+ // Wraps platform-dependent implementations of accessors to ucontext_t structs.
+--- ./third_party/breakpad/breakpad/src/common/linux/elf_core_dump.h.orig
++++ ./third_party/breakpad/breakpad/src/common/linux/elf_core_dump.h
+@@ -36,6 +36,7 @@
+ #include <elf.h>
+ #include <link.h>
+ #include <stddef.h>
++#include <limits.h>
+
+ #include "common/memory_range.h"
+
+--- ./sandbox/linux/suid/process_util.h.orig
++++ ./sandbox/linux/suid/process_util.h
+@@ -11,6 +11,14 @@
+ #include <stdbool.h>
+ #include <sys/types.h>
+
++// Some additional functions
++# define TEMP_FAILURE_RETRY(expression) \
++ (__extension__ \
++ ({ long int __result; \
++ do __result = (long int) (expression); \
++ while (__result == -1L && errno == EINTR); \
++ __result; }))
++
+ // This adjusts /proc/process/oom_score_adj so the Linux OOM killer
+ // will prefer certain process types over others. The range for the
+ // adjustment is [-1000, 1000], with [0, 1000] being user accessible.
+--- ./sandbox/linux/seccomp-bpf/trap.cc.orig 2020-04-12 08:26:40.184159217 -0400
++++ ./sandbox/linux/seccomp-bpf/trap.cc 2020-04-12 08:46:16.737191222 -0400
+@@ -174,7 +174,7 @@
+ // If the version of glibc doesn't include this information in
+ // siginfo_t (older than 2.17), we need to explicitly copy it
+ // into an arch_sigsys structure.
+- memcpy(&sigsys, &info->_sifields, sizeof(sigsys));
++ memcpy(&sigsys, &info->__sifields, sizeof(sigsys));
+ #endif
+
+ #if defined(__mips__)
+diff --git a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
+--- ./chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc.orig
++++ ./chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
+@@ -59,7 +59,9 @@
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(__GLIBC__)
+ #include <gnu/libc-version.h>
++#endif
+
+ #include "base/linux_util.h"
+ #include "base/strings/string_split.h"
+@@ -321,7 +323,7 @@
+ void RecordLinuxGlibcVersion() {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(__GLIBC__) || BUILDFLAG(IS_CHROMEOS_LACROS)
+ base::Version version(gnu_get_libc_version());
+
+ UMALinuxGlibcVersion glibc_version_result = UMA_LINUX_GLIBC_NOT_PARSEABLE;
+--- ./services/device/serial/serial_io_handler_posix.cc.orig 2019-07-03 10:57:32.568171835 -0400
++++ ./services/device/serial/serial_io_handler_posix.cc 2019-07-03 10:57:16.867983031 -0400
+@@ -6,6 +6,7 @@
+
+ #include <sys/ioctl.h>
+ #include <termios.h>
++#include <asm-generic/ioctls.h>
+
+ #include <algorithm>
+ #include <utility>
+diff --git a/third_party/ots/include/opentype-sanitiser.h b/third_party/ots/include/opentype-sanitiser.h
+--- ./third_party/ots/src/include/opentype-sanitiser.h
++++ ./third_party/ots/src/include/opentype-sanitiser.h
+@@ -20,6 +20,7 @@ typedef unsigned __int64 uint64_t;
+ #define htonl(x) _byteswap_ulong (x)
+ #define htons(x) _byteswap_ushort (x)
+ #else
++#include <sys/types.h>
+ #include <arpa/inet.h>
+ #include <stdint.h>
+ #endif
+--- ./base/logging.cc.orig
++++ ./base/logging.cc
+@@ -592,8 +592,7 @@
+
+ LogMessage::~LogMessage() {
+ size_t stack_start = stream_.tellp();
+-#if !defined(OFFICIAL_BUILD) && !BUILDFLAG(IS_NACL) && !defined(__UCLIBC__) && \
+- !BUILDFLAG(IS_AIX)
++#if !defined(OFFICIAL_BUILD) && !defined(OS_NACL) && defined(__GLIBC__)
+ if (severity_ == LOGGING_FATAL && !base::debug::BeingDebugged()) {
+ // Include a stack trace on a fatal, unless a debugger is attached.
+ base::debug::StackTrace stack_trace;
+--- ./third_party/blink/renderer/platform/wtf/stack_util.cc.orig
++++ ./third_party/blink/renderer/platform/wtf/stack_util.cc
+@@ -28,7 +28,7 @@
+ // FIXME: On Mac OSX and Linux, this method cannot estimate stack size
+ // correctly for the main thread.
+
+-#elif defined(__GLIBC__) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD) || \
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD) || \
+ BUILDFLAG(IS_FUCHSIA)
+ // pthread_getattr_np() can fail if the thread is not invoked by
+ // pthread_create() (e.g., the main thread of blink_unittests).
+@@ -96,7 +96,7 @@
+ }
+
+ void* GetStackStart() {
+-#if defined(__GLIBC__) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD) || \
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD) || \
+ BUILDFLAG(IS_FUCHSIA)
+ pthread_attr_t attr;
+ int error;
+--- ./third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Signals.inc.orig 2019-06-18 11:51:17.000000000 -0400
++++ ./third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Signals.inc 2019-07-03 12:32:50.938758186 -0400
+@@ -25,7 +25,7 @@
+ #include "llvm/Support/raw_ostream.h"
+ #include <algorithm>
+ #include <string>
+-#if HAVE_EXECINFO_H
++#if HAVE_EXECINFO_H && defined(__GLIBC__)
+ # include <execinfo.h> // For backtrace().
+ #endif
+ #if HAVE_SIGNAL_H
+@@ -52,6 +52,7 @@
+ #include <unwind.h>
+ #else
+ #undef HAVE__UNWIND_BACKTRACE
++#undef HAVE_BACKTRACE
+ #endif
+ #endif
+
+--- ./third_party/nasm/nasmlib/realpath.c.orig 2019-07-03 12:23:05.021949895 -0400
++++ ./third_party/nasm/nasmlib/realpath.c 2019-07-03 12:24:24.246862665 -0400
+@@ -49,7 +49,7 @@
+
+ #include "nasmlib.h"
+
+-#ifdef HAVE_CANONICALIZE_FILE_NAME
++#if defined(__GLIBC__)
+
+ /*
+ * GNU-specific, but avoids the realpath(..., NULL)
+--- ./third_party/perfetto/include/perfetto/ext/base/thread_utils.h
++++ ./third_party/perfetto/include/perfetto/ext/base/thread_utils.h
+@@ -29,7 +29,7 @@
+ #include <algorithm>
+ #endif
+
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
++#if 1
+ #include <sys/prctl.h>
+ #endif
+
+@@ -58,7 +58,7 @@ inline bool MaybeSetThreadName(const std::string& name) {
+
+ inline bool GetThreadName(std::string& out_result) {
+ char buf[16] = {};
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
++#if 1
+ if (prctl(PR_GET_NAME, buf) != 0)
+ return false;
+ #else
+--- ./net/dns/public/scoped_res_state.cc.orig
++++ ./net/dns/public/scoped_res_state.cc
+@@ -13,7 +13,7 @@
+ namespace net {
+
+ ScopedResState::ScopedResState() {
+-#if BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_FUCHSIA)
++#if BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_FUCHSIA) || defined(_GNU_SOURCE)
+ // Note: res_ninit in glibc always returns 0 and sets RES_INIT.
+ // res_init behaves the same way.
+ memset(&_res, 0, sizeof(_res));
+@@ -25,16 +25,8 @@
+ }
+
+ ScopedResState::~ScopedResState() {
+-#if !BUILDFLAG(IS_OPENBSD) && !BUILDFLAG(IS_FUCHSIA)
+-
+- // Prefer res_ndestroy where available.
+-#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_FREEBSD)
+- res_ndestroy(&res_);
+-#else
+- res_nclose(&res_);
+-#endif // BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_FREEBSD)
+-
+-#endif // !BUILDFLAG(IS_OPENBSD) && !BUILDFLAG(IS_FUCHSIA)
++ // musl res_init() doesn't actually do anything
++ // no destruction is necessary as no memory has been allocated
+ }
+
+ bool ScopedResState::IsValid() const {
diff --git a/extra/chromium/musl-hacks.patch b/extra/chromium/musl-hacks.patch
new file mode 100644
index 0000000..93db25a
--- /dev/null
+++ b/extra/chromium/musl-hacks.patch
@@ -0,0 +1,98 @@
+--- ./base/debug/stack_trace.cc
++++ ./base/debug/stack_trace.cc
+@@ -168,7 +168,7 @@
+
+ #if BUILDFLAG(CAN_UNWIND_WITH_FRAME_POINTERS)
+ uintptr_t GetStackEnd() {
+-#if BUILDFLAG(IS_ANDROID)
++#if BUILDFLAG(IS_ANDROID) || (defined(OS_LINUX) && !defined(__GLIBC__))
+ // Bionic reads proc/maps on every call to pthread_getattr_np() when called
+ // from the main thread. So we need to cache end of stack in that case to get
+ // acceptable performance.
+@@ -234,8 +234,10 @@
+ defined(MEMORY_SANITIZER)
+ // Sanitizer configurations (ASan, TSan, MSan) emit unsymbolized stacks.
+ return false;
+-#else
++#elif defined(__GLIBC__)
+ return true;
++#else
++ return false;
+ #endif
+ }
+
+@@ -251,7 +253,9 @@
+ }
+
+ void StackTrace::OutputToStream(std::ostream* os) const {
++#if defined(__GLIBC__) && !defined(_AIX)
+ OutputToStreamWithPrefix(os, nullptr);
++#endif
+ }
+
+ std::string StackTrace::ToString() const {
+@@ -259,7 +263,7 @@
+ }
+ std::string StackTrace::ToStringWithPrefix(const char* prefix_string) const {
+ std::stringstream stream;
+-#if !defined(__UCLIBC__) && !defined(_AIX)
++#if defined(__GLIBC__) && !defined(_AIX)
+ OutputToStreamWithPrefix(&stream, prefix_string);
+ #endif
+ return stream.str();
+--- ./net/socket/udp_socket_posix.cc
++++ ./net/socket/udp_socket_posix.cc
+@@ -1191,7 +1191,7 @@
+ msg_iov->push_back({const_cast<char*>(buffer->data()), buffer->length()});
+ msgvec->reserve(buffers.size());
+ for (size_t j = 0; j < buffers.size(); j++)
+- msgvec->push_back({{nullptr, 0, &msg_iov[j], 1, nullptr, 0, 0}, 0});
++ msgvec->push_back({{nullptr, 0, &msg_iov[j], 1, 0, 0, 0}, 0});
+ int result = HANDLE_EINTR(Sendmmsg(fd, &msgvec[0], buffers.size(), 0));
+ SendResult send_result(0, 0, std::move(buffers));
+ if (result < 0) {
+--- ./base/debug/elf_reader.cc.orig
++++ ./base/debug/elf_reader.cc
+@@ -149,7 +149,12 @@
+ strtab_addr = static_cast<size_t>(dynamic_iter->d_un.d_ptr) +
+ reinterpret_cast<const char*>(relocation_offset);
+ #else
+- strtab_addr = reinterpret_cast<const char*>(dynamic_iter->d_un.d_ptr);
++ if (dynamic_iter->d_un.d_ptr < relocation_offset) {
++ strtab_addr = static_cast<size_t>(dynamic_iter->d_un.d_ptr) +
++ reinterpret_cast<const char*>(relocation_offset);
++ } else {
++ strtab_addr = reinterpret_cast<const char*>(dynamic_iter->d_un.d_ptr);
++ }
+ #endif
+ } else if (dynamic_iter->d_tag == DT_SONAME) {
+ soname_strtab_offset = dynamic_iter->d_un.d_val;
+--- ./mojo/public/c/system/thunks.cc.orig
++++ ./mojo/public/c/system/thunks.cc
+@@ -100,7 +100,8 @@
+ base::ScopedAllowBlocking allow_blocking;
+ base::NativeLibraryOptions library_options;
+ #if !defined(ADDRESS_SANITIZER) && !defined(THREAD_SANITIZER) && \
+- !defined(MEMORY_SANITIZER) && !defined(LEAK_SANITIZER)
++ !defined(MEMORY_SANITIZER) && !defined(LEAK_SANITIZER) && \
++ defined(RTLD_DEEPBIND)
+ // Sanitizer builds cannnot support RTLD_DEEPBIND, but they also disable
+ // allocator shims, so it's unnecessary there.
+ library_options.prefer_own_symbols = true;
+--- ./base/native_library_unittest.cc.orig
++++ ./base/native_library_unittest.cc
+@@ -121,6 +121,7 @@
+ #if !defined(OS_ANDROID) && !defined(THREAD_SANITIZER) && \
+ !defined(MEMORY_SANITIZER)
+
++#if defined(RTLD_DEEPBIND)
+ // Verifies that the |prefer_own_symbols| option satisfies its guarantee that
+ // a loaded library will always prefer local symbol resolution before
+ // considering global symbols.
+@@ -156,6 +157,7 @@
+ EXPECT_EQ(2, NativeLibraryTestIncrement());
+ EXPECT_EQ(3, NativeLibraryTestIncrement());
+ }
++#endif // defined(RTLD_DEEPBIND)
+
+ #endif // !defined(OS_ANDROID)
diff --git a/extra/chromium/musl-libc++.patch b/extra/chromium/musl-libc++.patch
new file mode 100644
index 0000000..4316a7b
--- /dev/null
+++ b/extra/chromium/musl-libc++.patch
@@ -0,0 +1,51 @@
+--- ./buildtools/third_party/libc++/trunk/include/locale
++++ ./buildtools/third_party/libc++/trunk/include/locale
+@@ -10,6 +10,15 @@
+ #ifndef _LIBCPP_LOCALE
+ #define _LIBCPP_LOCALE
+
++// musl doesn't define _l (with locale) variants of functions, as it only supports UTF-8.
++// we can simply make macros that will call the non-localated ones if we're using musl, or rather not-using something that has the _l ones.
++// couldn't find anything glibc #defines when it creates strtoull_l (that it doesn't undefine a few lines later), so let's test against glibc and glibc-likes.
++// almost all glibc-likes define __GNU_LIBRARY__ for compatibility
++#ifndef __GNU_LIBRARY__
++#define strtoull_l(A, B, C, LOC) strtoull(A,B,C)
++#define strtoll_l(A, B, C, LOC) strtoll(A,B,C)
++#endif
++
+ /*
+ locale synopsis
+
+--- ./buildtools/third_party/libc++/trunk/src/locale.cpp
++++ ./buildtools/third_party/libc++/trunk/src/locale.cpp
+@@ -1019,11 +1019,11 @@
+ return low;
+ }
+
+-#if defined(__EMSCRIPTEN__)
++// #if defined(__EMSCRIPTEN__)
+ extern "C" const unsigned short ** __ctype_b_loc();
+ extern "C" const int ** __ctype_tolower_loc();
+ extern "C" const int ** __ctype_toupper_loc();
+-#endif
++// #endif
+
+ #ifdef _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE
+ const ctype<char>::mask*
+@@ -1127,12 +1127,10 @@
+ #elif defined(_AIX)
+ return (const unsigned int *)__lc_ctype_ptr->obj->mask;
+ #else
+- // Platform not supported: abort so the person doing the port knows what to
+- // fix
+-# warning ctype<char>::classic_table() is not implemented
+- printf("ctype<char>::classic_table() is not implemented\n");
+- abort();
+- return NULL;
++// not sure any other libc like this exists, but there is no way to differentiate musl as of right now
++// to be fair, with the change above, this should always work
++// also, #warning is a gcc extension
++ return (const unsigned long *)*__ctype_b_loc();
+ #endif
+ }
+ #endif
diff --git a/extra/chromium/musl-sandbox.patch b/extra/chromium/musl-sandbox.patch
new file mode 100644
index 0000000..4fe0098
--- /dev/null
+++ b/extra/chromium/musl-sandbox.patch
@@ -0,0 +1,176 @@
+diff --git a/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc ./sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc
+index ff5a1c0..da56b9b 100644
+--- a/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc
++++ ./sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc
+@@ -139,21 +139,11 @@ namespace sandbox {
+ // present (as in newer versions of posix_spawn).
+ ResultExpr RestrictCloneToThreadsAndEPERMFork() {
+ const Arg<unsigned long> flags(0);
+-
+- // TODO(mdempsky): Extend DSL to support (flags & ~mask1) == mask2.
+- const uint64_t kAndroidCloneMask = CLONE_VM | CLONE_FS | CLONE_FILES |
+- CLONE_SIGHAND | CLONE_THREAD |
+- CLONE_SYSVSEM;
+- const uint64_t kObsoleteAndroidCloneMask = kAndroidCloneMask | CLONE_DETACHED;
+-
+- const uint64_t kGlibcPthreadFlags =
+- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD |
+- CLONE_SYSVSEM | CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID;
+- const BoolExpr glibc_test = flags == kGlibcPthreadFlags;
+-
+- const BoolExpr android_test =
+- AnyOf(flags == kAndroidCloneMask, flags == kObsoleteAndroidCloneMask,
+- flags == kGlibcPthreadFlags);
++ const int required = CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
++ CLONE_THREAD | CLONE_SYSVSEM;
++ const int safe = CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID |
++ CLONE_DETACHED;
++ const BoolExpr thread_clone_ok = (flags&~safe)==required;
+
+ // The following two flags are the two important flags in any vfork-emulating
+ // clone call. EPERM any clone call that contains both of them.
+@@ -163,7 +153,7 @@ ResultExpr RestrictCloneToThreadsAndEPERMFork() {
+ AnyOf((flags & (CLONE_VM | CLONE_THREAD)) == 0,
+ (flags & kImportantCloneVforkFlags) == kImportantCloneVforkFlags);
+
+- return If(IsAndroid() ? android_test : glibc_test, Allow())
++ return If(thread_clone_ok, Allow())
+ .ElseIf(is_fork_or_clone_vfork, Error(EPERM))
+ .Else(CrashSIGSYSClone());
+ }
+diff --git a/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc ./sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
+index d9d1882..0567557 100644
+--- a/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
++++ ./sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
+@@ -392,6 +392,7 @@ bool SyscallSets::IsAllowedProcessStartOrDeath(int sysno) {
+ #if defined(__i386__)
+ case __NR_waitpid:
+ #endif
++ case __NR_set_tid_address:
+ return true;
+ case __NR_clone: // Should be parameter-restricted.
+ case __NR_setns: // Privileged.
+@@ -404,7 +405,6 @@ bool SyscallSets::IsAllowedProcessStartOrDeath(int sysno) {
+ #if defined(__i386__) || defined(__x86_64__) || defined(__mips__)
+ case __NR_set_thread_area:
+ #endif
+- case __NR_set_tid_address:
+ case __NR_unshare:
+ #if !defined(__mips__) && !defined(__aarch64__)
+ case __NR_vfork:
+@@ -514,6 +514,8 @@ bool SyscallSets::IsAllowedAddressSpaceAccess(int sysno) {
+ case __NR_mlock:
+ case __NR_munlock:
+ case __NR_munmap:
++ case __NR_mremap:
++ case __NR_membarrier:
+ return true;
+ case __NR_madvise:
+ case __NR_mincore:
+@@ -531,7 +533,6 @@ bool SyscallSets::IsAllowedAddressSpaceAccess(int sysno) {
+ case __NR_modify_ldt:
+ #endif
+ case __NR_mprotect:
+- case __NR_mremap:
+ case __NR_msync:
+ case __NR_munlockall:
+ case __NR_readahead:
+diff --git a/sandbox/linux/system_headers/arm64_linux_syscalls.h ./sandbox/linux/system_headers/arm64_linux_syscalls.h
+index 59d0eab..7ae7002 100644
+--- a/sandbox/linux/system_headers/arm64_linux_syscalls.h
++++ ./sandbox/linux/system_headers/arm64_linux_syscalls.h
+@@ -1063,4 +1063,8 @@
+ #define __NR_memfd_create 279
+ #endif
+
++#if !defined(__NR_membarrier)
++#define __NR_membarrier 283
++#endif
++
+ #endif // SANDBOX_LINUX_SYSTEM_HEADERS_ARM64_LINUX_SYSCALLS_H_
+diff --git a/sandbox/linux/system_headers/arm_linux_syscalls.h ./sandbox/linux/system_headers/arm_linux_syscalls.h
+index 1addd53..7843b5e 100644
+--- a/sandbox/linux/system_headers/arm_linux_syscalls.h
++++ ./sandbox/linux/system_headers/arm_linux_syscalls.h
+@@ -1385,6 +1385,10 @@
+ #define __NR_memfd_create (__NR_SYSCALL_BASE+385)
+ #endif
+
++#if !defined(__NR_membarrier)
++#define __NR_membarrier (__NR_SYSCALL_BASE+389)
++#endif
++
+ // ARM private syscalls.
+ #if !defined(__ARM_NR_BASE)
+ #define __ARM_NR_BASE (__NR_SYSCALL_BASE + 0xF0000)
+diff --git a/sandbox/linux/system_headers/linux_syscalls.h ./sandbox/linux/system_headers/linux_syscalls.h
+index 2b78a0c..b6fedb5 100644
+--- a/sandbox/linux/system_headers/linux_syscalls.h
++++ ./sandbox/linux/system_headers/linux_syscalls.h
+@@ -10,6 +10,7 @@
+ #define SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_
+
+ #include "build/build_config.h"
++#include <sys/syscall.h>
+
+ #if defined(__x86_64__)
+ #include "sandbox/linux/system_headers/x86_64_linux_syscalls.h"
+diff --git a/sandbox/linux/system_headers/mips64_linux_syscalls.h ./sandbox/linux/system_headers/mips64_linux_syscalls.h
+index ec75815..5515270 100644
+--- a/sandbox/linux/system_headers/mips64_linux_syscalls.h
++++ ./sandbox/linux/system_headers/mips64_linux_syscalls.h
+@@ -1271,4 +1271,8 @@
+ #define __NR_memfd_create (__NR_Linux + 314)
+ #endif
+
++#if !defined(__NR_membarrier)
++#define __NR_membarrier (__NR_Linux 318)
++#endif
++
+ #endif // SANDBOX_LINUX_SYSTEM_HEADERS_MIPS64_LINUX_SYSCALLS_H_
+diff --git a/sandbox/linux/system_headers/mips_linux_syscalls.h ./sandbox/linux/system_headers/mips_linux_syscalls.h
+index ddbf97f..ad3d64b 100644
+--- a/sandbox/linux/system_headers/mips_linux_syscalls.h
++++ ./sandbox/linux/system_headers/mips_linux_syscalls.h
+@@ -1433,4 +1433,8 @@
+ #define __NR_memfd_create (__NR_Linux + 354)
+ #endif
+
++#if !defined(__NR_membarrier)
++#define __NR_membarrier (__NR_Linux 358)
++#endif
++
+ #endif // SANDBOX_LINUX_SYSTEM_HEADERS_MIPS_LINUX_SYSCALLS_H_
+diff --git a/sandbox/linux/system_headers/x86_64_linux_syscalls.h ./sandbox/linux/system_headers/x86_64_linux_syscalls.h
+index b0ae0a2..8b12029 100644
+--- a/sandbox/linux/system_headers/x86_64_linux_syscalls.h
++++ ./sandbox/linux/system_headers/x86_64_linux_syscalls.h
+@@ -1350,5 +1350,9 @@
+ #define __NR_rseq 334
+ #endif
+
++#if !defined(__NR_membarrier)
++#define __NR_membarrier 324
++#endif
++
+ #endif // SANDBOX_LINUX_SYSTEM_HEADERS_X86_64_LINUX_SYSCALLS_H_
+
+diff --git a/services/service_manager/sandbox/linux/bpf_renderer_policy_linux.cc ./services/service_manager/sandbox/linux/bpf_renderer_policy_linux.cc
+index a85c0ea..715aa1e 100644
+--- a/sandbox/policy/linux/bpf_renderer_policy_linux.cc
++++ ./sandbox/policy/linux/bpf_renderer_policy_linux.cc
+@@ -93,11 +93,11 @@
+ case __NR_sysinfo:
+ case __NR_times:
+ case __NR_uname:
+- return Allow();
+- case __NR_sched_getaffinity:
+ case __NR_sched_getparam:
+ case __NR_sched_getscheduler:
+ case __NR_sched_setscheduler:
++ return Allow();
++ case __NR_sched_getaffinity:
+ return RestrictSchedTarget(GetPolicyPid(), sysno);
+ case __NR_prlimit64:
+ // See crbug.com/662450 and setrlimit comment above.
+
diff --git a/extra/chromium/musl-stat.patch b/extra/chromium/musl-stat.patch
new file mode 100644
index 0000000..5a6036a
--- /dev/null
+++ b/extra/chromium/musl-stat.patch
@@ -0,0 +1,12 @@
+--- a/base/files/file.h.orig
++++ b/base/files/file.h
+@@ -19,7 +19,8 @@
+ #include "build/build_config.h"
+
+ #if BUILDFLAG(IS_BSD) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_NACL) || \
+- BUILDFLAG(IS_FUCHSIA) || (BUILDFLAG(IS_ANDROID) && __ANDROID_API__ < 21)
++ BUILDFLAG(IS_FUCHSIA) || (BUILDFLAG(IS_ANDROID) && __ANDROID_API__ < 21) || \
++ (defined(OS_LINUX) && !defined(__GLIBC__))
+ struct stat;
+ namespace base {
+ typedef struct stat stat_wrapper_t;
diff --git a/extra/chromium/musl-tid-caching.patch b/extra/chromium/musl-tid-caching.patch
new file mode 100644
index 0000000..bb83038
--- /dev/null
+++ b/extra/chromium/musl-tid-caching.patch
@@ -0,0 +1,81 @@
+--- ./sandbox/linux/services/namespace_sandbox.cc.orig
++++ ./sandbox/linux/services/namespace_sandbox.cc
+@@ -209,6 +209,70 @@
+ return base::LaunchProcess(argv, launch_options_copy);
+ }
+
++#if defined(__aarch64__)
++#define TLS_ABOVE_TP
++#endif
++
++struct musl_pthread
++{
++ /* Part 1 -- these fields may be external or
++ * internal (accessed via asm) ABI. Do not change. */
++ struct pthread *self;
++#ifndef TLS_ABOVE_TP
++ uintptr_t *dtv;
++#endif
++ struct pthread *prev, *next; /* non-ABI */
++ uintptr_t sysinfo;
++#ifndef TLS_ABOVE_TP
++#ifdef CANARY_PAD
++ uintptr_t canary_pad;
++#endif
++ uintptr_t canary;
++#endif
++
++/* Part 2 -- implementation details, non-ABI. */
++ int tid;
++ int errno_val;
++ volatile int detach_state;
++ volatile int cancel;
++ volatile unsigned char canceldisable, cancelasync;
++ unsigned char tsd_used:1;
++ unsigned char dlerror_flag:1;
++ unsigned char *map_base;
++ size_t map_size;
++ void *stack;
++ size_t stack_size;
++ size_t guard_size;
++ void *result;
++ struct __ptcb *cancelbuf;
++ void **tsd;
++ struct {
++ volatile void *volatile head;
++ long off;
++ volatile void *volatile pending;
++ } robust_list;
++ int h_errno_val;
++ volatile int timer_id;
++ locale_t locale;
++ volatile int killlock[1];
++ char *dlerror_buf;
++ void *stdio_locks;
++
++ /* Part 3 -- the positions of these fields relative to
++ * the end of the structure is external and internal ABI. */
++#ifdef TLS_ABOVE_TP
++ uintptr_t canary;
++ uintptr_t *dtv;
++#endif
++};
++
++void MaybeUpdateMuslTidCache()
++{
++ pid_t real_tid = sys_gettid();
++ pid_t* cached_tid_location = &reinterpret_cast<struct musl_pthread*>(pthread_self())->tid;
++ *cached_tid_location = real_tid;
++}
++
+ // static
+ pid_t NamespaceSandbox::ForkInNewPidNamespace(bool drop_capabilities_in_child) {
+ const pid_t pid =
+@@ -226,6 +290,7 @@
+ #if defined(LIBC_GLIBC)
+ MaybeUpdateGlibcTidCache();
+ #endif
++ MaybeUpdateMuslTidCache();
+ return 0;
+ }
+
diff --git a/extra/chromium/musl-v8-monotonic-pthread-cont_timedwait.patch b/extra/chromium/musl-v8-monotonic-pthread-cont_timedwait.patch
new file mode 100644
index 0000000..768027d
--- /dev/null
+++ b/extra/chromium/musl-v8-monotonic-pthread-cont_timedwait.patch
@@ -0,0 +1,22 @@
+Use monotonic clock for pthread_cond_timedwait with musl too.
+
+--- ./v8/src/base/platform/condition-variable.cc
++++ ./v8/src/base/platform/condition-variable.cc
+@@ -16,7 +16,7 @@
+
+ ConditionVariable::ConditionVariable() {
+ #if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || \
+- (V8_OS_LINUX && V8_LIBC_GLIBC))
++ V8_OS_LINUX)
+ // On Free/Net/OpenBSD and Linux with glibc we can change the time
+ // source for pthread_cond_timedwait() to use the monotonic clock.
+ pthread_condattr_t attr;
+@@ -92,7 +92,7 @@
+ &native_handle_, &mutex->native_handle(), &ts);
+ #else
+ #if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || \
+- (V8_OS_LINUX && V8_LIBC_GLIBC))
++ V8_OS_LINUX)
+ // On Free/Net/OpenBSD and Linux with glibc we can change the time
+ // source for pthread_cond_timedwait() to use the monotonic clock.
+ result = clock_gettime(CLOCK_MONOTONIC, &ts);
diff --git a/extra/chromium/nasm.patch b/extra/chromium/nasm.patch
new file mode 100644
index 0000000..ff22a6f
--- /dev/null
+++ b/extra/chromium/nasm.patch
@@ -0,0 +1,11 @@
+--- ./third_party/nasm/config/config-linux.h
++++ ./third_party/nasm/config/config-linux.h
+@@ -117,7 +117,7 @@
+ #define HAVE_ACCESS 1
+
+ /* Define to 1 if you have the `canonicalize_file_name' function. */
+-#define HAVE_CANONICALIZE_FILE_NAME 1
++// #define HAVE_CANONICALIZE_FILE_NAME 1
+
+ /* Define to 1 if you have the `cpu_to_le16' intrinsic function. */
+ /* #undef HAVE_CPU_TO_LE16 */
diff --git a/extra/chromium/no-execinfo.patch b/extra/chromium/no-execinfo.patch
new file mode 100644
index 0000000..8cb2f79
--- /dev/null
+++ b/extra/chromium/no-execinfo.patch
@@ -0,0 +1,75 @@
+--- ./base/debug/stack_trace_posix.cc
++++ ./base/debug/stack_trace_posix.cc
+@@ -27,7 +27,7 @@
+ #if !defined(USE_SYMBOLIZE)
+ #include <cxxabi.h>
+ #endif
+-#if !defined(__UCLIBC__) && !defined(_AIX)
++#if defined(__GLIBC__) && !defined(_AIX)
+ #include <execinfo.h>
+ #endif
+
+@@ -89,7 +89,7 @@
+ // Note: code in this function is NOT async-signal safe (std::string uses
+ // malloc internally).
+
+-#if !defined(__UCLIBC__) && !defined(_AIX)
++#if defined(__GLIBC__) && !defined(_AIX)
+ std::string::size_type search_from = 0;
+ while (search_from < text->size()) {
+ // Look for the start of a mangled symbol, from search_from.
+@@ -136,7 +136,7 @@
+ virtual ~BacktraceOutputHandler() = default;
+ };
+
+-#if !defined(__UCLIBC__) && !defined(_AIX)
++#if defined(__GLIBC__) && !defined(_AIX)
+ void OutputPointer(void* pointer, BacktraceOutputHandler* handler) {
+ // This should be more than enough to store a 64-bit number in hex:
+ // 16 hex digits + 1 for null-terminator.
+@@ -839,7 +839,7 @@
+ // If we do not have unwind tables, then try tracing using frame pointers.
+ return base::debug::TraceStackFramePointers(const_cast<const void**>(trace),
+ count, 0);
+-#elif !defined(__UCLIBC__) && !defined(_AIX)
++#elif defined(__GLIBC__) && !defined(_AIX)
+ // Though the backtrace API man page does not list any possible negative
+ // return values, we take no chance.
+ return base::saturated_cast<size_t>(backtrace(trace, count));
+@@ -852,13 +852,13 @@
+ // NOTE: This code MUST be async-signal safe (it's used by in-process
+ // stack dumping signal handler). NO malloc or stdio is allowed here.
+
+-#if !defined(__UCLIBC__) && !defined(_AIX)
++#if defined(__GLIBC__) && !defined(_AIX)
+ PrintBacktraceOutputHandler handler;
+ ProcessBacktrace(trace_, count_, prefix_string, &handler);
+ #endif
+ }
+
+-#if !defined(__UCLIBC__) && !defined(_AIX)
++#if defined(__GLIBC__) && !defined(_AIX)
+ void StackTrace::OutputToStreamWithPrefix(std::ostream* os,
+ const char* prefix_string) const {
+ StreamBacktraceOutputHandler handler(os);
+--- ./v8/src/codegen/external-reference-table.cc.orig
++++ ./v8/src/codegen/external-reference-table.cc
+@@ -11,7 +11,9 @@
+
+ #if defined(DEBUG) && defined(V8_OS_LINUX) && !defined(V8_OS_ANDROID)
+ #define SYMBOLIZE_FUNCTION
++#if defined(__GLIBC__)
+ #include <execinfo.h>
++#endif
+
+ #include <vector>
+
+@@ -96,7 +98,7 @@
+ }
+
+ const char* ExternalReferenceTable::ResolveSymbol(void* address) {
+-#ifdef SYMBOLIZE_FUNCTION
++#if defined(SYMBOLIZE_FUNCTION) && defined(__GLIBC__)
+ char** names = backtrace_symbols(&address, 1);
+ const char* name = names[0];
+ // The array of names is malloc'ed. However, each name string is static
diff --git a/extra/chromium/no-getcontext.patch b/extra/chromium/no-getcontext.patch
new file mode 100644
index 0000000..71c1e91
--- /dev/null
+++ b/extra/chromium/no-getcontext.patch
@@ -0,0 +1,26 @@
+--- ./third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
++++ ./third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
+@@ -490,7 +490,9 @@
+ siginfo.si_code = SI_USER;
+ siginfo.si_pid = getpid();
+ ucontext_t context;
++#if defined(__GLIBC__)
+ getcontext(&context);
++#endif
+ return HandleSignal(sig, &siginfo, &context);
+ }
+
+@@ -675,9 +677,13 @@
+ sys_prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
+
+ CrashContext context;
++#if defined(__GLIBC__)
+ int getcontext_result = getcontext(&context.context);
+ if (getcontext_result)
+ return false;
++#else
++ return false;
++#endif
+
+ #if defined(__i386__)
+ // In CPUFillFromUContext in minidumpwriter.cc the stack pointer is retrieved
diff --git a/extra/chromium/no-mallinfo.patch b/extra/chromium/no-mallinfo.patch
new file mode 100644
index 0000000..23ce40e
--- /dev/null
+++ b/extra/chromium/no-mallinfo.patch
@@ -0,0 +1,83 @@
+--- ./base/trace_event/malloc_dump_provider.cc.orig
++++ ./base/trace_event/malloc_dump_provider.cc
+@@ -212,7 +212,7 @@
+ &allocated_objects_count);
+ #elif defined(OS_FUCHSIA)
+ // TODO(fuchsia): Port, see https://crbug.com/706592.
+-#else
++#elif defined(__GLIBC__)
+ #if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
+ #if __GLIBC_PREREQ(2, 33)
+ #define MALLINFO2_FOUND_IN_LIBC
+--- ./base/process/process_metrics_posix.cc.orig
++++ ./base/process/process_metrics_posix.cc
+@@ -105,7 +105,7 @@
+
+ #endif // !BUILDFLAG(IS_FUCHSIA)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#if (BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
+ namespace {
+
+ size_t GetMallocUsageMallinfo() {
+@@ -123,7 +123,7 @@
+ }
+
+ } // namespace
+-#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ||
++#endif // (BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || BUILDFLAG(IS_CHROMEOS) ||
+ // BUILDFLAG(IS_ANDROID)
+
+ size_t ProcessMetrics::GetMallocUsage() {
+@@ -131,9 +131,9 @@
+ malloc_statistics_t stats = {0};
+ malloc_zone_statistics(nullptr, &stats);
+ return stats.size_in_use;
+-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
++#elif (BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID)
+ return GetMallocUsageMallinfo();
+-#elif BUILDFLAG(IS_FUCHSIA)
++#else
+ // TODO(fuchsia): Not currently exposed. https://crbug.com/735087.
+ return 0;
+ #endif
+--- ./third_party/tflite/src/tensorflow/lite/profiling/memory_info.cc.orig
++++ ./third_party/tflite/src/tensorflow/lite/profiling/memory_info.cc
+@@ -35,7 +35,7 @@
+
+ MemoryUsage GetMemoryUsage() {
+ MemoryUsage result;
+-#ifdef __linux__
++#if defined(__linux__) && defined(__GLIBC__)
+ rusage res;
+ if (getrusage(RUSAGE_SELF, &res) == 0) {
+ result.max_rss_kb = res.ru_maxrss;
+--- ./third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc
++++ ./third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc.orig
+@@ -86,11 +86,11 @@
+ }
+
+ size_t Process::GetMallocUsage() {
+-#if defined(HAVE_MALLINFO2)
++#if defined(HAVE_MALLINFO2) && defined(__GLIBC__)
+ struct mallinfo2 mi;
+ mi = ::mallinfo2();
+ return mi.uordblks;
+-#elif defined(HAVE_MALLINFO)
++#elif defined(HAVE_MALLINFO) && defined(__GLIBC__)
+ struct mallinfo mi;
+ mi = ::mallinfo();
+ return mi.uordblks;
+
+--- ./third_party/swiftshader/third_party/llvm-10.0/configs/linux/include/llvm/Config/config.h.orig 2019-09-30 13:03:42.556880537 -0400
++++ ./third_party/swiftshader/third_party/llvm-10.0/configs/linux/include/llvm/Config/config.h 2019-09-30 13:07:27.989821227 -0400
+@@ -122,7 +122,9 @@
+ /* #undef HAVE_MALLCTL */
+
+ /* Define to 1 if you have the `mallinfo' function. */
++#if defined(__GLIBC__)
+ #define HAVE_MALLINFO 1
++#endif
+
+ /* Define to 1 if you have the <malloc.h> header file. */
+ #define HAVE_MALLOC_H 1
diff --git a/extra/chromium/quiche-arena-size.patch b/extra/chromium/quiche-arena-size.patch
new file mode 100644
index 0000000..50abcae
--- /dev/null
+++ b/extra/chromium/quiche-arena-size.patch
@@ -0,0 +1,11 @@
+--- ./net/third_party/quiche/src/quic/core/quic_one_block_arena.h
++++ ./net/third_party/quiche/src/quic/core/quic_one_block_arena.h
+@@ -69,7 +69,7 @@
+
+ // QuicConnections currently use around 1KB of polymorphic types which would
+ // ordinarily be on the heap. Instead, store them inline in an arena.
+-using QuicConnectionArena = QuicOneBlockArena<1152>;
++using QuicConnectionArena = QuicOneBlockArena<1504>;
+
+ } // namespace quic
+
diff --git a/extra/chromium/remove-strip_binary.patch b/extra/chromium/remove-strip_binary.patch
new file mode 100644
index 0000000..8b13c6a
--- /dev/null
+++ b/extra/chromium/remove-strip_binary.patch
@@ -0,0 +1,32 @@
+--- a/chrome/test/chromedriver/BUILD.gn.orig
++++ b/chrome/test/chromedriver/BUILD.gn
+@@ -308,11 +308,7 @@
+ }
+ }
+
+-if (is_linux) {
+- chromedriver_output = "chromedriver.unstripped"
+-} else {
+- chromedriver_output = "chromedriver"
+-}
++chromedriver_output = "chromedriver"
+
+ executable("$chromedriver_output") {
+ testonly = true
+@@ -336,16 +332,6 @@
+ }
+ }
+
+-if (is_linux) {
+- strip_binary("chromedriver") {
+- testonly = true
+- binary_input = "$root_out_dir/$chromedriver_output"
+- symbol_output = "$root_out_dir/chromedriver.debug"
+- stripped_binary_output = "$root_out_dir/chromedriver"
+- deps = [ ":$chromedriver_output" ]
+- }
+-}
+-
+ python_library("chromedriver_py_tests") {
+ testonly = true
+ deps = [
diff --git a/extra/chromium/resolver.patch b/extra/chromium/resolver.patch
new file mode 100644
index 0000000..8dca36a
--- /dev/null
+++ b/extra/chromium/resolver.patch
@@ -0,0 +1,36 @@
+--- ./net/dns/host_resolver_manager.cc.orig
++++ ./net/dns/host_resolver_manager.cc
+@@ -3014,8 +3014,7 @@
+ NetworkChangeNotifier::AddConnectionTypeObserver(this);
+ if (system_dns_config_notifier_)
+ system_dns_config_notifier_->AddObserver(this);
+-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_OPENBSD) && \
+- !BUILDFLAG(IS_ANDROID)
++#if defined(__GLIBC__)
+ EnsureDnsReloaderInit();
+ #endif
+
+--- ./net/dns/dns_reloader.cc.orig
++++ ./net/dns/dns_reloader.cc
+@@ -6,8 +6,7 @@
+
+ #include "build/build_config.h"
+
+-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_OPENBSD) && \
+- !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_FUCHSIA)
++#if defined(__GLIBC__)
+
+ #include <resolv.h>
+
+--- ./net/dns/host_resolver_proc.cc.orig
++++ ./net/dns/host_resolver_proc.cc
+@@ -176,8 +176,7 @@
+ base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
+ base::BlockingType::WILL_BLOCK);
+
+-#if BUILDFLAG(IS_POSIX) && \
+- !(BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_ANDROID))
++#if defined(__GLIBC__)
+ DnsReloaderMaybeReload();
+ #endif
+ absl::optional<AddressInfo> ai;
diff --git a/extra/chromium/revert-use-ffile-compilation-dir.patch b/extra/chromium/revert-use-ffile-compilation-dir.patch
new file mode 100644
index 0000000..f0c110f
--- /dev/null
+++ b/extra/chromium/revert-use-ffile-compilation-dir.patch
@@ -0,0 +1,48 @@
+diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
+index f442166..c325f72 100644
+--- a/build/config/compiler/BUILD.gn
++++ b/build/config/compiler/BUILD.gn
+@@ -1248,19 +1248,12 @@ config("compiler_deterministic") {
+ # different build directory like "out/feature_a" and "out/feature_b" if
+ # we build same files with same compile flag.
+ # Other paths are already given in relative, no need to normalize them.
+- if (is_nacl) {
+- # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here.
+- cflags += [
+- "-Xclang",
+- "-fdebug-compilation-dir",
+- "-Xclang",
+- ".",
+- ]
+- } else {
+- # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir=
+- # and -fcoverage-compilation-dir=.
+- cflags += [ "-ffile-compilation-dir=." ]
+- }
++ cflags += [
++ "-Xclang",
++ "-fdebug-compilation-dir",
++ "-Xclang",
++ ".",
++ ]
+ if (!is_win) {
+ # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
+ asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
+diff --git a/build/config/compiler/compiler.gni b/build/config/compiler/compiler.gni
+index 008a386..89e7fdf 100644
+--- a/build/config/compiler/compiler.gni
++++ b/build/config/compiler/compiler.gni
+@@ -238,8 +238,11 @@ declare_args() {
+ # deterministic builds to reduce compile times, so this is less relevant for
+ # official builders.
+ strip_absolute_paths_from_debug_symbols_default =
+- is_android || is_fuchsia || is_nacl || (is_win && use_lld) || is_linux ||
+- is_chromeos || (is_apple && !enable_dsyms)
++ # TODO(crbug.com/1010267): remove '!use_clang_coverage', coverage build has
++ # dependency to absolute path of source files.
++ !use_clang_coverage &&
++ (is_android || is_fuchsia || is_nacl || (is_win && use_lld) || is_linux ||
++ is_chromeos || (is_apple && !enable_dsyms))
+
+ # If the platform uses stripped absolute paths by default, then we don't expose
+ # it as a configuration option. If this is causing problems, please file a bug.
diff --git a/extra/chromium/scoped-file.patch b/extra/chromium/scoped-file.patch
new file mode 100644
index 0000000..34bf6eb
--- /dev/null
+++ b/extra/chromium/scoped-file.patch
@@ -0,0 +1,31 @@
+--- ./base/files/scoped_file_linux.cc.orig
++++ ./base/files/scoped_file_linux.cc
+@@ -7,6 +7,7 @@
+ #include <algorithm>
+ #include <array>
+ #include <atomic>
++#include <dlfcn.h>
+
+ #include "base/compiler_specific.h"
+ #include "base/debug/stack_trace.h"
+@@ -80,9 +81,18 @@
+
+ extern "C" {
+
+-int __close(int);
+-
+ __attribute__((visibility("default"), noinline)) int close(int fd) {
++ static int (*__close)(int) = nullptr;
++
++ if (__close == nullptr) {
++ __close = (int (*)(int))dlsym(RTLD_NEXT, "close");
++
++ if (__close == nullptr) {
++ RAW_LOG(ERROR, "musl close not found\n");
++ IMMEDIATE_CRASH();
++ }
++ }
++
+ if (base::IsFDOwned(fd) && g_is_ownership_enforced)
+ CrashOnFdOwnershipViolation();
+ return __close(fd);
diff --git a/extra/chromium/sql-make-VirtualCursor-standard-layout-type.patch b/extra/chromium/sql-make-VirtualCursor-standard-layout-type.patch
new file mode 100644
index 0000000..3364d41
--- /dev/null
+++ b/extra/chromium/sql-make-VirtualCursor-standard-layout-type.patch
@@ -0,0 +1,238 @@
+From 144479ad7b4287bee4067f95e4218f614798a865 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sun, 16 Jan 2022 19:15:26 +0000
+Subject: [PATCH] sql: make VirtualCursor standard layout type
+
+sql::recover::VirtualCursor needs to be a standard layout type, but
+has members of type std::unique_ptr. However, std::unique_ptr is not
+guaranteed to be standard layout. Compiling with clang combined with
+gcc-11 libstdc++ fails because of this.
+
+Bug: 1189788
+Change-Id: Ia6dc388cc5ef1c0f2afc75f8ca45b9f12687ca9c
+---
+ sql/recover_module/btree.cc | 18 ++++++++++++------
+ sql/recover_module/btree.h | 21 +++++++++++++++------
+ sql/recover_module/cursor.cc | 24 ++++++++++++------------
+ sql/recover_module/cursor.h | 2 +-
+ sql/recover_module/pager.cc | 5 ++---
+ sql/recover_module/pager.h | 6 +++---
+ 6 files changed, 45 insertions(+), 31 deletions(-)
+
+diff --git a/sql/recover_module/btree.cc b/sql/recover_module/btree.cc
+index cc9420e5c05..f12d8fa32a2 100644
+--- a/sql/recover_module/btree.cc
++++ b/sql/recover_module/btree.cc
+@@ -136,16 +136,22 @@ static_assert(std::is_trivially_destructible<LeafPageDecoder>::value,
+ "Move the destructor to the .cc file if it's non-trival");
+ #endif // !DCHECK_IS_ON()
+
+-LeafPageDecoder::LeafPageDecoder(DatabasePageReader* db_reader) noexcept
+- : page_id_(db_reader->page_id()),
+- db_reader_(db_reader),
+- cell_count_(ComputeCellCount(db_reader)),
+- next_read_index_(0),
+- last_record_size_(0) {
++LeafPageDecoder::LeafPageDecoder() noexcept = default;
++
++void LeafPageDecoder::Initialize(DatabasePageReader* db_reader) {
++ page_id_ = db_reader->page_id();
++ db_reader_ = db_reader;
++ cell_count_ = ComputeCellCount(db_reader);
++ next_read_index_ = 0;
++ last_record_size_ = 0;
+ DCHECK(IsOnValidPage(db_reader));
+ DCHECK(DatabasePageReader::IsValidPageId(page_id_));
+ }
+
++void LeafPageDecoder::Reset() {
++ db_reader_ = nullptr;
++}
++
+ bool LeafPageDecoder::TryAdvance() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(CanAdvance());
+diff --git a/sql/recover_module/btree.h b/sql/recover_module/btree.h
+index eaa087a5c52..df0e0c937c0 100644
+--- a/sql/recover_module/btree.h
++++ b/sql/recover_module/btree.h
+@@ -101,9 +101,7 @@ class LeafPageDecoder {
+ public:
+ // Creates a decoder for a DatabasePageReader's last read page.
+ //
+- // |db_reader| must have been used to read an inner page of a table B-tree.
+- // |db_reader| must outlive this instance.
+- explicit LeafPageDecoder(DatabasePageReader* db_reader) noexcept;
++ LeafPageDecoder() noexcept;
+ ~LeafPageDecoder() noexcept = default;
+
+ LeafPageDecoder(const LeafPageDecoder&) = delete;
+@@ -151,6 +149,17 @@ class LeafPageDecoder {
+ // read as long as CanAdvance() returns true.
+ bool TryAdvance();
+
++ // Initialize with DatabasePageReader
++ // |db_reader| must have been used to read an inner page of a table B-tree.
++ // |db_reader| must outlive this instance.
++ void Initialize(DatabasePageReader* db_reader);
++
++ // Reset internal DatabasePageReader
++ void Reset();
++
++ // True if DatabasePageReader is valid
++ bool IsValid() { return (db_reader_ != nullptr); }
++
+ // True if the given reader may point to an inner page in a table B-tree.
+ //
+ // The last ReadPage() call on |db_reader| must have succeeded.
+@@ -164,14 +173,14 @@ class LeafPageDecoder {
+ static int ComputeCellCount(DatabasePageReader* db_reader);
+
+ // The number of the B-tree page this reader is reading.
+- const int64_t page_id_;
++ int64_t page_id_;
+ // Used to read the tree page.
+ //
+ // Raw pointer usage is acceptable because this instance's owner is expected
+ // to ensure that the DatabasePageReader outlives this.
+- DatabasePageReader* const db_reader_;
++ DatabasePageReader* db_reader_;
+ // Caches the ComputeCellCount() value for this reader's page.
+- const int cell_count_ = ComputeCellCount(db_reader_);
++ int cell_count_;
+
+ // The reader's cursor state.
+ //
+diff --git a/sql/recover_module/cursor.cc b/sql/recover_module/cursor.cc
+index 4f827edf1b4..240de4999fe 100644
+--- a/sql/recover_module/cursor.cc
++++ b/sql/recover_module/cursor.cc
+@@ -28,7 +28,7 @@ VirtualCursor::~VirtualCursor() {
+ int VirtualCursor::First() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ inner_decoders_.clear();
+- leaf_decoder_ = nullptr;
++ leaf_decoder_.Reset();
+
+ AppendPageDecoder(table_->root_page_id());
+ return Next();
+@@ -38,18 +38,18 @@ int VirtualCursor::Next() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ record_reader_.Reset();
+
+- while (!inner_decoders_.empty() || leaf_decoder_.get()) {
+- if (leaf_decoder_.get()) {
+- if (!leaf_decoder_->CanAdvance()) {
++ while (!inner_decoders_.empty() || leaf_decoder_.IsValid()) {
++ if (leaf_decoder_.IsValid()) {
++ if (!leaf_decoder_.CanAdvance()) {
+ // The leaf has been exhausted. Remove it from the DFS stack.
+- leaf_decoder_ = nullptr;
++ leaf_decoder_.Reset();
+ continue;
+ }
+- if (!leaf_decoder_->TryAdvance())
++ if (!leaf_decoder_.TryAdvance())
+ continue;
+
+- if (!payload_reader_.Initialize(leaf_decoder_->last_record_size(),
+- leaf_decoder_->last_record_offset())) {
++ if (!payload_reader_.Initialize(leaf_decoder_.last_record_size(),
++ leaf_decoder_.last_record_offset())) {
+ continue;
+ }
+ if (!record_reader_.Initialize())
+@@ -101,13 +101,13 @@ int VirtualCursor::ReadColumn(int column_index,
+ int64_t VirtualCursor::RowId() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(record_reader_.IsInitialized());
+- DCHECK(leaf_decoder_.get());
+- return leaf_decoder_->last_record_rowid();
++ DCHECK(leaf_decoder_.IsValid());
++ return leaf_decoder_.last_record_rowid();
+ }
+
+ void VirtualCursor::AppendPageDecoder(int page_id) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+- DCHECK(leaf_decoder_.get() == nullptr)
++ DCHECK(!leaf_decoder_.IsValid())
+ << __func__
+ << " must only be called when the current path has no leaf decoder";
+
+@@ -115,7 +115,7 @@ void VirtualCursor::AppendPageDecoder(int page_id) {
+ return;
+
+ if (LeafPageDecoder::IsOnValidPage(&db_reader_)) {
+- leaf_decoder_ = std::make_unique<LeafPageDecoder>(&db_reader_);
++ leaf_decoder_.Initialize(&db_reader_);
+ return;
+ }
+
+diff --git a/sql/recover_module/cursor.h b/sql/recover_module/cursor.h
+index 845b7852648..cc4e85f83f9 100644
+--- a/sql/recover_module/cursor.h
++++ b/sql/recover_module/cursor.h
+@@ -130,7 +130,7 @@ class VirtualCursor {
+ std::vector<std::unique_ptr<InnerPageDecoder>> inner_decoders_;
+
+ // Decodes the leaf page containing records.
+- std::unique_ptr<LeafPageDecoder> leaf_decoder_;
++ LeafPageDecoder leaf_decoder_;
+
+ SEQUENCE_CHECKER(sequence_checker_);
+ };
+diff --git a/sql/recover_module/pager.cc b/sql/recover_module/pager.cc
+index 58e75de2704..69d98cef98d 100644
+--- a/sql/recover_module/pager.cc
++++ b/sql/recover_module/pager.cc
+@@ -23,8 +23,7 @@ static_assert(DatabasePageReader::kMaxPageId <= std::numeric_limits<int>::max(),
+ "ints are not appropriate for representing page IDs");
+
+ DatabasePageReader::DatabasePageReader(VirtualTable* table)
+- : page_data_(std::make_unique<uint8_t[]>(table->page_size())),
+- table_(table) {
++ : page_data_(table->page_size()), table_(table) {
+ DCHECK(table != nullptr);
+ DCHECK(IsValidPageSize(table->page_size()));
+ }
+@@ -58,7 +57,7 @@ int DatabasePageReader::ReadPage(int page_id) {
+ "The |read_offset| computation above may overflow");
+
+ int sqlite_status =
+- RawRead(sqlite_file, read_size, read_offset, page_data_.get());
++ RawRead(sqlite_file, read_size, read_offset, page_data_.data());
+
+ // |page_id_| needs to be set to kInvalidPageId if the read failed.
+ // Otherwise, future ReadPage() calls with the previous |page_id_| value
+diff --git a/sql/recover_module/pager.h b/sql/recover_module/pager.h
+index 07cac3cb989..d08f0932fab 100644
+--- a/sql/recover_module/pager.h
++++ b/sql/recover_module/pager.h
+@@ -6,8 +6,8 @@
+ #define SQL_RECOVER_MODULE_PAGER_H_
+
+ #include <cstdint>
+-#include <memory>
+ #include <ostream>
++#include <vector>
+
+ #include "base/check_op.h"
+ #include "base/memory/raw_ptr.h"
+@@ -72,7 +72,7 @@ class DatabasePageReader {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK_NE(page_id_, kInvalidPageId)
+ << "Successful ReadPage() required before accessing pager state";
+- return page_data_.get();
++ return page_data_.data();
+ }
+
+ // The number of bytes in the page read by the last ReadPage() call.
+@@ -139,7 +139,7 @@ class DatabasePageReader {
+ int page_id_ = kInvalidPageId;
+ // Stores the bytes of the last page successfully read by ReadPage().
+ // The content is undefined if the last call to ReadPage() did not succeed.
+- const std::unique_ptr<uint8_t[]> page_data_;
++ std::vector<uint8_t> page_data_;
+ // Raw pointer usage is acceptable because this instance's owner is expected
+ // to ensure that the VirtualTable outlives this.
+ const raw_ptr<VirtualTable> table_;
diff --git a/extra/chromium/system-opus.patch b/extra/chromium/system-opus.patch
new file mode 100644
index 0000000..dc85e80
--- /dev/null
+++ b/extra/chromium/system-opus.patch
@@ -0,0 +1,52 @@
+Has been upstreamed in Chromium main branch, shouldn't be necessary
+when the commit gets pulled into a new release
+
+From 3bd46cb9a51773f103ef52b39d6407740eb0d60a Mon Sep 17 00:00:00 2001
+From: Eugene Zemtsov <eugene@chromium.org>
+Date: Thu, 24 Feb 2022 23:17:20 +0000
+Subject: [PATCH] webcodecs: Stop using AudioOpusEncoder as backed for mojo
+ audio encoder
+
+AudioOpusEncoder was only used here for testing. Let's not let it get
+comfortable. We'll use MF AAC encoder here when we have it. (Soon...)
+
+Bug: 1259883
+Change-Id: Ia1819395c8c8fd6d403d4b8558c12f9a1bf7e761
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3489449
+Commit-Queue: Eugene Zemtsov <eugene@chromium.org>
+Auto-Submit: Eugene Zemtsov <eugene@chromium.org>
+Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
+Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
+Cr-Commit-Position: refs/heads/main@{#974895}
+---
+ media/mojo/services/gpu_mojo_media_client.cc | 10 +---------
+ 1 file changed, 1 insertion(+), 9 deletions(-)
+
+diff --git a/media/mojo/services/gpu_mojo_media_client.cc b/media/mojo/services/gpu_mojo_media_client.cc
+index 8f83a4d6cf662..40cdaff8d3a00 100644
+--- a/media/mojo/services/gpu_mojo_media_client.cc
++++ b/media/mojo/services/gpu_mojo_media_client.cc
+@@ -13,7 +13,6 @@
+ #include "build/chromeos_buildflags.h"
+ #include "gpu/ipc/service/gpu_channel.h"
+ #include "media/audio/audio_features.h"
+-#include "media/audio/audio_opus_encoder.h"
+ #include "media/base/audio_decoder.h"
+ #include "media/base/cdm_factory.h"
+ #include "media/base/media_switches.h"
+@@ -119,14 +118,7 @@ std::unique_ptr<AudioEncoder> GpuMojoMediaClient::CreateAudioEncoder(
+ scoped_refptr<base::SequencedTaskRunner> task_runner) {
+ if (!base::FeatureList::IsEnabled(features::kPlatformAudioEncoder))
+ return nullptr;
+- // TODO(crbug.com/1259883) Right now Opus encoder is all we have, later on
+- // we'll create a real platform encoder here.
+- auto opus_encoder = std::make_unique<AudioOpusEncoder>();
+- auto encoding_runner = base::ThreadPool::CreateSequencedTaskRunner(
+- {base::TaskPriority::USER_BLOCKING});
+- return std::make_unique<OffloadingAudioEncoder>(std::move(opus_encoder),
+- std::move(encoding_runner),
+- std::move(task_runner));
++ return nullptr;
+ }
+
+ VideoDecoderType GpuMojoMediaClient::GetDecoderImplementationType() {
diff --git a/extra/chromium/unbundle-ffmpeg-av_stream_get_first_dts.patch b/extra/chromium/unbundle-ffmpeg-av_stream_get_first_dts.patch
new file mode 100644
index 0000000..dae1add
--- /dev/null
+++ b/extra/chromium/unbundle-ffmpeg-av_stream_get_first_dts.patch
@@ -0,0 +1,12 @@
+diff --git a/build/linux/unbundle/ffmpeg.gn b/build/linux/unbundle/ffmpeg.gn
+index 16e20744706..6a079b32221 100644
+--- a/build/linux/unbundle/ffmpeg.gn
++++ b/build/linux/unbundle/ffmpeg.gn
+@@ -12,6 +12,7 @@ pkg_config("system_ffmpeg") {
+ "libavformat",
+ "libavutil",
+ ]
++ defines = [ "av_stream_get_first_dts(stream)=stream->first_dts" ]
+ }
+
+ buildflag_header("ffmpeg_features") {
diff --git a/extra/chromium/unbundle-ffmpeg-av_stream_get_first_dts.patch.1 b/extra/chromium/unbundle-ffmpeg-av_stream_get_first_dts.patch.1
new file mode 100644
index 0000000..dae1add
--- /dev/null
+++ b/extra/chromium/unbundle-ffmpeg-av_stream_get_first_dts.patch.1
@@ -0,0 +1,12 @@
+diff --git a/build/linux/unbundle/ffmpeg.gn b/build/linux/unbundle/ffmpeg.gn
+index 16e20744706..6a079b32221 100644
+--- a/build/linux/unbundle/ffmpeg.gn
++++ b/build/linux/unbundle/ffmpeg.gn
+@@ -12,6 +12,7 @@ pkg_config("system_ffmpeg") {
+ "libavformat",
+ "libavutil",
+ ]
++ defines = [ "av_stream_get_first_dts(stream)=stream->first_dts" ]
+ }
+
+ buildflag_header("ffmpeg_features") {
diff --git a/extra/chromium/use-deprecated-ffmpeg-api.patch b/extra/chromium/use-deprecated-ffmpeg-api.patch
new file mode 100644
index 0000000..f0ec736
--- /dev/null
+++ b/extra/chromium/use-deprecated-ffmpeg-api.patch
@@ -0,0 +1,36 @@
+diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
+index ac4713b07268..492a9a37d096 100644
+--- a/media/filters/ffmpeg_demuxer.cc
++++ b/media/filters/ffmpeg_demuxer.cc
+@@ -427,11 +427,11 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
+ scoped_refptr<DecoderBuffer> buffer;
+
+ if (type() == DemuxerStream::TEXT) {
+- size_t id_size = 0;
++ int id_size = 0;
+ uint8_t* id_data = av_packet_get_side_data(
+ packet.get(), AV_PKT_DATA_WEBVTT_IDENTIFIER, &id_size);
+
+- size_t settings_size = 0;
++ int settings_size = 0;
+ uint8_t* settings_data = av_packet_get_side_data(
+ packet.get(), AV_PKT_DATA_WEBVTT_SETTINGS, &settings_size);
+
+@@ -443,7 +443,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
+ buffer = DecoderBuffer::CopyFrom(packet->data, packet->size,
+ side_data.data(), side_data.size());
+ } else {
+- size_t side_data_size = 0;
++ int side_data_size = 0;
+ uint8_t* side_data = av_packet_get_side_data(
+ packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size);
+
+@@ -504,7 +504,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
+ packet->size - data_offset);
+ }
+
+- size_t skip_samples_size = 0;
++ int skip_samples_size = 0;
+ const uint32_t* skip_samples_ptr =
+ reinterpret_cast<const uint32_t*>(av_packet_get_side_data(
+ packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));
diff --git a/extra/chromium/use-deprecated-ffmpeg-api.patch.1 b/extra/chromium/use-deprecated-ffmpeg-api.patch.1
new file mode 100644
index 0000000..f0ec736
--- /dev/null
+++ b/extra/chromium/use-deprecated-ffmpeg-api.patch.1
@@ -0,0 +1,36 @@
+diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
+index ac4713b07268..492a9a37d096 100644
+--- a/media/filters/ffmpeg_demuxer.cc
++++ b/media/filters/ffmpeg_demuxer.cc
+@@ -427,11 +427,11 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
+ scoped_refptr<DecoderBuffer> buffer;
+
+ if (type() == DemuxerStream::TEXT) {
+- size_t id_size = 0;
++ int id_size = 0;
+ uint8_t* id_data = av_packet_get_side_data(
+ packet.get(), AV_PKT_DATA_WEBVTT_IDENTIFIER, &id_size);
+
+- size_t settings_size = 0;
++ int settings_size = 0;
+ uint8_t* settings_data = av_packet_get_side_data(
+ packet.get(), AV_PKT_DATA_WEBVTT_SETTINGS, &settings_size);
+
+@@ -443,7 +443,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
+ buffer = DecoderBuffer::CopyFrom(packet->data, packet->size,
+ side_data.data(), side_data.size());
+ } else {
+- size_t side_data_size = 0;
++ int side_data_size = 0;
+ uint8_t* side_data = av_packet_get_side_data(
+ packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size);
+
+@@ -504,7 +504,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
+ packet->size - data_offset);
+ }
+
+- size_t skip_samples_size = 0;
++ int skip_samples_size = 0;
+ const uint32_t* skip_samples_ptr =
+ reinterpret_cast<const uint32_t*>(av_packet_get_side_data(
+ packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));
diff --git a/extra/chromium/use-oauth2-client-switches-as-default.patch b/extra/chromium/use-oauth2-client-switches-as-default.patch
new file mode 100644
index 0000000..9d9c57b
--- /dev/null
+++ b/extra/chromium/use-oauth2-client-switches-as-default.patch
@@ -0,0 +1,17 @@
+diff -upr chromium-89.0.4389.58.orig/google_apis/google_api_keys.cc chromium-89.0.4389.58/google_apis/google_api_keys.cc
+--- chromium-89.0.4389.58.orig/google_apis/google_api_keys.cc 2021-02-24 22:37:18.494007649 +0000
++++ chromium-89.0.4389.58/google_apis/google_api_keys.cc 2021-02-24 22:35:00.865777600 +0000
+@@ -154,11 +154,11 @@ class APIKeyCache {
+
+ std::string default_client_id = CalculateKeyValue(
+ GOOGLE_DEFAULT_CLIENT_ID,
+- STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_ID), nullptr,
++ STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_ID), ::switches::kOAuth2ClientID,
+ std::string(), environment.get(), command_line, gaia_config);
+ std::string default_client_secret = CalculateKeyValue(
+ GOOGLE_DEFAULT_CLIENT_SECRET,
+- STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_SECRET), nullptr,
++ STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_SECRET), ::switches::kOAuth2ClientSecret,
+ std::string(), environment.get(), command_line, gaia_config);
+
+ // We currently only allow overriding the baked-in values for the
diff --git a/extra/chromium/wayland-egl.patch b/extra/chromium/wayland-egl.patch
new file mode 100644
index 0000000..58a0798
--- /dev/null
+++ b/extra/chromium/wayland-egl.patch
@@ -0,0 +1,22 @@
+--- a/ui/gl/gl_image_native_pixmap.cc 2020-05-18 11:40:06.000000000 -0700
++++ b/ui/gl/gl_image_native_pixmap.cc 2020-05-22 02:07:16.007770442 -0700
+@@ -288,6 +288,8 @@
+ std::move(scoped_fd));
+ }
+
++ handle.planes[0].size = size_.GetArea();
++
+ return handle;
+ #endif // !defined(OS_FUCHSIA)
+ }
+--- a/gpu/command_buffer/service/error_state.cc 2020-05-18 11:39:22.000000000 -0700
++++ b/gpu/command_buffer/service/error_state.cc 2020-05-22 13:43:09.181180388 -0700
+@@ -115,6 +115,8 @@
+ // buffer.
+ error = GL_NO_ERROR;
+ }
++ if (error == GL_INVALID_ENUM)
++ error = GL_NO_ERROR;
+ return error;
+ }
+
diff --git a/extra/chromium/webcodecs-stop-using-AudioOpusEncoder.patch b/extra/chromium/webcodecs-stop-using-AudioOpusEncoder.patch
new file mode 100644
index 0000000..32957d3
--- /dev/null
+++ b/extra/chromium/webcodecs-stop-using-AudioOpusEncoder.patch
@@ -0,0 +1,49 @@
+From 3bd46cb9a51773f103ef52b39d6407740eb0d60a Mon Sep 17 00:00:00 2001
+From: Eugene Zemtsov <eugene@chromium.org>
+Date: Thu, 24 Feb 2022 23:17:20 +0000
+Subject: [PATCH] webcodecs: Stop using AudioOpusEncoder as backed for mojo
+ audio encoder
+
+AudioOpusEncoder was only used here for testing. Let's not let it get
+comfortable. We'll use MF AAC encoder here when we have it. (Soon...)
+
+Bug: 1259883
+Change-Id: Ia1819395c8c8fd6d403d4b8558c12f9a1bf7e761
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3489449
+Commit-Queue: Eugene Zemtsov <eugene@chromium.org>
+Auto-Submit: Eugene Zemtsov <eugene@chromium.org>
+Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
+Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
+Cr-Commit-Position: refs/heads/main@{#974895}
+---
+ media/mojo/services/gpu_mojo_media_client.cc | 10 +---------
+ 1 file changed, 1 insertion(+), 9 deletions(-)
+
+diff --git a/media/mojo/services/gpu_mojo_media_client.cc b/media/mojo/services/gpu_mojo_media_client.cc
+index 8f83a4d6cf6..40cdaff8d3a 100644
+--- a/media/mojo/services/gpu_mojo_media_client.cc
++++ b/media/mojo/services/gpu_mojo_media_client.cc
+@@ -13,7 +13,6 @@
+ #include "build/chromeos_buildflags.h"
+ #include "gpu/ipc/service/gpu_channel.h"
+ #include "media/audio/audio_features.h"
+-#include "media/audio/audio_opus_encoder.h"
+ #include "media/base/audio_decoder.h"
+ #include "media/base/cdm_factory.h"
+ #include "media/base/media_switches.h"
+@@ -119,14 +118,7 @@ std::unique_ptr<AudioEncoder> GpuMojoMediaClient::CreateAudioEncoder(
+ scoped_refptr<base::SequencedTaskRunner> task_runner) {
+ if (!base::FeatureList::IsEnabled(features::kPlatformAudioEncoder))
+ return nullptr;
+- // TODO(crbug.com/1259883) Right now Opus encoder is all we have, later on
+- // we'll create a real platform encoder here.
+- auto opus_encoder = std::make_unique<AudioOpusEncoder>();
+- auto encoding_runner = base::ThreadPool::CreateSequencedTaskRunner(
+- {base::TaskPriority::USER_BLOCKING});
+- return std::make_unique<OffloadingAudioEncoder>(std::move(opus_encoder),
+- std::move(encoding_runner),
+- std::move(task_runner));
++ return nullptr;
+ }
+
+ VideoDecoderType GpuMojoMediaClient::GetDecoderImplementationType() {
diff --git a/extra/chromium/webrtc-check-existence-of-cursor-metadata.patch b/extra/chromium/webrtc-check-existence-of-cursor-metadata.patch
new file mode 100644
index 0000000..0c7e731
--- /dev/null
+++ b/extra/chromium/webrtc-check-existence-of-cursor-metadata.patch
@@ -0,0 +1,31 @@
+From c2cd814cdd8cbf8dda6ccec2266327a5321fbde8 Mon Sep 17 00:00:00 2001
+From: Jan Grulich <grulja@gmail.com>
+Date: Tue, 15 Mar 2022 14:31:55 +0100
+Subject: [PATCH] PipeWire capturer: check existence of cursor metadata
+
+Check whether there are any cursor metadata before we try to validate
+and use them, otherwise we might crash on this.
+
+Bug: webrtc:13429
+Change-Id: I365da59a189b6b974cebafc94fec49d5b942efae
+Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/255601
+Reviewed-by: Alexander Cooper <alcooper@chromium.org>
+Commit-Queue: Alexander Cooper <alcooper@chromium.org>
+Cr-Commit-Position: refs/heads/main@{#36240}
+---
+ .../desktop_capture/linux/wayland/shared_screencast_stream.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc b/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
+index a8c86e26..9e81df4c 100644
+--- a/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
++++ b/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
+@@ -650,7 +650,7 @@ void SharedScreenCastStreamPrivate::ProcessBuffer(pw_buffer* buffer) {
+ const struct spa_meta_cursor* cursor =
+ static_cast<struct spa_meta_cursor*>(spa_buffer_find_meta_data(
+ spa_buffer, SPA_META_Cursor, sizeof(*cursor)));
+- if (spa_meta_cursor_is_valid(cursor)) {
++ if (cursor && spa_meta_cursor_is_valid(cursor)) {
+ struct spa_meta_bitmap* bitmap = nullptr;
+
+ if (cursor->bitmap_offset)
diff --git a/extra/compiler-rt/link-execinfo.patch b/extra/compiler-rt/link-execinfo.patch
new file mode 100644
index 0000000..8da49fb
--- /dev/null
+++ b/extra/compiler-rt/link-execinfo.patch
@@ -0,0 +1,11 @@
+--- a/lib/scudo/standalone/CMakeLists.txt
++++ b/lib/scudo/standalone/CMakeLists.txt
+@@ -137,6 +137,8 @@
+
+ append_list_if(FUCHSIA zircon SCUDO_LINK_LIBS)
+
++list(APPEND SCUDO_LINK_LIBS execinfo)
++
+ if(COMPILER_RT_HAS_SCUDO_STANDALONE)
+ add_compiler_rt_object_libraries(RTScudoStandalone
+ ARCHS ${SCUDO_STANDALONE_SUPPORTED_ARCH}
diff --git a/extra/dav1d/fix-asmcheck.patch b/extra/dav1d/fix-asmcheck.patch
new file mode 100644
index 0000000..922db6e
--- /dev/null
+++ b/extra/dav1d/fix-asmcheck.patch
@@ -0,0 +1,63 @@
+Patch-Source: https://code.videolan.org/videolan/dav1d/-/merge_requests/1406
+From 87f9a81cd770e49394a45deca7a3df41243de00b Mon Sep 17 00:00:00 2001
+From: Henrik Gramner <gramner@twoorioles.com>
+Date: Sat, 19 Mar 2022 03:09:31 +0100
+Subject: [PATCH] checkasm: Fix alignment of stack buffers in the film grain
+ tests
+
+---
+ tests/checkasm/filmgrain.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/tests/checkasm/filmgrain.c b/tests/checkasm/filmgrain.c
+index ff7ffc36..9aa4f269 100644
+--- a/tests/checkasm/filmgrain.c
++++ b/tests/checkasm/filmgrain.c
+@@ -83,9 +83,9 @@ static void check_gen_grny(const Dav1dFilmGrainDSPContext *const dsp) {
+ }
+
+ static void check_gen_grnuv(const Dav1dFilmGrainDSPContext *const dsp) {
+- entry grain_lut_y[GRAIN_HEIGHT + 1][GRAIN_WIDTH];
+- entry grain_lut_c[GRAIN_HEIGHT][GRAIN_WIDTH];
+- entry grain_lut_a[GRAIN_HEIGHT + 1][GRAIN_WIDTH];
++ ALIGN_STK_16(entry, grain_lut_y, GRAIN_HEIGHT + 1,[GRAIN_WIDTH]);
++ ALIGN_STK_16(entry, grain_lut_c, GRAIN_HEIGHT, [GRAIN_WIDTH]);
++ ALIGN_STK_16(entry, grain_lut_a, GRAIN_HEIGHT + 1,[GRAIN_WIDTH]);
+
+ declare_func(void, entry grain_lut[][GRAIN_WIDTH],
+ const entry grain_lut_y[][GRAIN_WIDTH],
+@@ -155,6 +155,7 @@ static void check_fgy_sbrow(const Dav1dFilmGrainDSPContext *const dsp) {
+
+ if (check_func(dsp->fgy_32x32xn, "fgy_32x32xn_%dbpc", BITDEPTH)) {
+ ALIGN_STK_16(Dav1dFilmGrainData, fg_data, 16,);
++ ALIGN_STK_16(entry, grain_lut, GRAIN_HEIGHT + 1,[GRAIN_WIDTH]);
+ ALIGN_STK_64(uint8_t, scaling, SCALING_SIZE,);
+ fg_data[0].seed = rnd() & 0xFFFF;
+
+@@ -164,7 +165,6 @@ static void check_fgy_sbrow(const Dav1dFilmGrainDSPContext *const dsp) {
+ const int bitdepth_max = 0xff;
+ #endif
+
+- entry grain_lut[GRAIN_HEIGHT + 1][GRAIN_WIDTH];
+ fg_data[0].grain_scale_shift = rnd() & 3;
+ fg_data[0].ar_coeff_shift = (rnd() & 3) + 6;
+ fg_data[0].ar_coeff_lag = rnd() & 3;
+@@ -267,6 +267,7 @@ static void check_fguv_sbrow(const Dav1dFilmGrainDSPContext *const dsp) {
+ BITDEPTH, ss_name[layout_idx], csfl))
+ {
+ ALIGN_STK_16(Dav1dFilmGrainData, fg_data, 1,);
++ ALIGN_STK_16(entry, grain_lut, 2,[GRAIN_HEIGHT + 1][GRAIN_WIDTH]);
+ ALIGN_STK_64(uint8_t, scaling, SCALING_SIZE,);
+
+ fg_data[0].seed = rnd() & 0xFFFF;
+@@ -279,7 +280,6 @@ static void check_fguv_sbrow(const Dav1dFilmGrainDSPContext *const dsp) {
+ const int uv_pl = rnd() & 1;
+ const int is_identity = rnd() & 1;
+
+- entry grain_lut[2][GRAIN_HEIGHT + 1][GRAIN_WIDTH];
+ fg_data[0].grain_scale_shift = rnd() & 3;
+ fg_data[0].ar_coeff_shift = (rnd() & 3) + 6;
+ fg_data[0].ar_coeff_lag = rnd() & 3;
+--
+GitLab
+
diff --git a/extra/ffmpeg/0001-ffbuild-libversion.sh-add-shebang.patch b/extra/ffmpeg/0001-ffbuild-libversion.sh-add-shebang.patch
new file mode 100644
index 0000000..1df1691
--- /dev/null
+++ b/extra/ffmpeg/0001-ffbuild-libversion.sh-add-shebang.patch
@@ -0,0 +1,24 @@
+From 3eb43e2e9df80baad20722b3698e6995a546853a Mon Sep 17 00:00:00 2001
+From: Carlo Landmeter <clandmeter@alpinelinux.org>
+Date: Tue, 29 Jun 2021 11:56:32 +0000
+Subject: [PATCH] ffbuild/libversion.sh: add shebang
+
+when using something like qemu-user where argv[0] is qemu the script
+will not be exexuted by the shell.
+---
+ ffbuild/libversion.sh | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/ffbuild/libversion.sh b/ffbuild/libversion.sh
+index 990ce9f640..30046b1d25 100755
+--- a/ffbuild/libversion.sh
++++ b/ffbuild/libversion.sh
+@@ -1,3 +1,5 @@
++#!/bin/sh
++
+ toupper(){
+ echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ }
+--
+2.32.0
+
diff --git a/extra/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch b/extra/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
new file mode 100644
index 0000000..9cc6fdf
--- /dev/null
+++ b/extra/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
@@ -0,0 +1,55 @@
+From ab11be0becb90542f10d5713659b559842c53af2 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Tue, 29 Mar 2016 15:15:17 +0200
+Subject: [PATCH] libavutil: clean up unused FF_SYMVER macro
+
+There is nothing using it since commit d63443b9 (lavc: drop the
+av_fast_{re,m}alloc compatibility wrappers).
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ libavutil/internal.h | 28 ----------------------------
+ 1 file changed, 28 deletions(-)
+
+diff --git a/libavutil/internal.h b/libavutil/internal.h
+index 61784b5..69d63d5 100644
+--- a/libavutil/internal.h
++++ b/libavutil/internal.h
+@@ -187,34 +187,6 @@
+ #endif
+
+ /**
+- * Define a function with only the non-default version specified.
+- *
+- * On systems with ELF shared libraries, all symbols exported from
+- * FFmpeg libraries are tagged with the name and major version of the
+- * library to which they belong. If a function is moved from one
+- * library to another, a wrapper must be retained in the original
+- * location to preserve binary compatibility.
+- *
+- * Functions defined with this macro will never be used to resolve
+- * symbols by the build-time linker.
+- *
+- * @param type return type of function
+- * @param name name of function
+- * @param args argument list of function
+- * @param ver version tag to assign function
+- */
+-#if HAVE_SYMVER_ASM_LABEL
+-# define FF_SYMVER(type, name, args, ver) \
+- type ff_##name args __asm__ (EXTERN_PREFIX #name "@" ver); \
+- type ff_##name args
+-#elif HAVE_SYMVER_GNU_ASM
+-# define FF_SYMVER(type, name, args, ver) \
+- __asm__ (".symver ff_" #name "," EXTERN_PREFIX #name "@" ver); \
+- type ff_##name args; \
+- type ff_##name args
+-#endif
+-
+-/**
+ * Return NULL if a threading library has not been enabled.
+ * Used to disable threading functions in AVCodec definitions
+ * when not needed.
+--
+2.7.4
+
diff --git a/extra/ffmpeg/add-av_stream_get_first_dts-for-chromium.patch b/extra/ffmpeg/add-av_stream_get_first_dts-for-chromium.patch
new file mode 100644
index 0000000..1ba7b76
--- /dev/null
+++ b/extra/ffmpeg/add-av_stream_get_first_dts-for-chromium.patch
@@ -0,0 +1,45 @@
+Patch-Source: https://github.com/archlinux/svntogit-packages/blob/afdf00ac125851675c1599ab46545f6c58cfb655/trunk/add-av_stream_get_first_dts-for-chromium.patch
+From 95aab0fd83619408995720ce53d7a74790580220 Mon Sep 17 00:00:00 2001
+From: "liberato@chromium.org" <liberato@chromium.org>
+Date: Wed, 7 Jul 2021 19:01:22 -0700
+Subject: [PATCH] Add av_stream_get_first_dts for Chromium
+
+[foutrelis: adjust for new FFStream struct replacing AVStreamInternal]
+---
+ libavformat/avformat.h | 4 ++++
+ libavformat/utils.c | 7 +++++++
+ 2 files changed, 11 insertions(+)
+
+diff --git a/libavformat/avformat.h b/libavformat/avformat.h
+index cd7b0d941c..b4a6dce885 100644
+--- a/libavformat/avformat.h
++++ b/libavformat/avformat.h
+@@ -1010,6 +1010,10 @@ struct AVCodecParserContext *av_stream_get_parser(const AVStream *s);
+ */
+ int64_t av_stream_get_end_pts(const AVStream *st);
+
++// Chromium: We use the internal field first_dts vvv
++int64_t av_stream_get_first_dts(const AVStream *st);
++// Chromium: We use the internal field first_dts ^^^
++
+ #define AV_PROGRAM_RUNNING 1
+
+ /**
+diff --git a/libavformat/utils.c b/libavformat/utils.c
+index de7580c32d..0ef0fe530e 100644
+--- a/libavformat/utils.c
++++ b/libavformat/utils.c
+@@ -121,6 +121,13 @@ int64_t av_stream_get_end_pts(const AVStream *st)
+ return AV_NOPTS_VALUE;
+ }
+
++// Chromium: We use the internal field first_dts vvv
++int64_t av_stream_get_first_dts(const AVStream *st)
++{
++ return cffstream(st)->first_dts;
++}
++// Chromium: We use the internal field first_dts ^^^
++
+ struct AVCodecParserContext *av_stream_get_parser(const AVStream *st)
+ {
+ return st->internal->parser;
diff --git a/extra/ffmpeg4/0001-ffbuild-libversion.sh-add-shebang.patch b/extra/ffmpeg4/0001-ffbuild-libversion.sh-add-shebang.patch
new file mode 100644
index 0000000..1df1691
--- /dev/null
+++ b/extra/ffmpeg4/0001-ffbuild-libversion.sh-add-shebang.patch
@@ -0,0 +1,24 @@
+From 3eb43e2e9df80baad20722b3698e6995a546853a Mon Sep 17 00:00:00 2001
+From: Carlo Landmeter <clandmeter@alpinelinux.org>
+Date: Tue, 29 Jun 2021 11:56:32 +0000
+Subject: [PATCH] ffbuild/libversion.sh: add shebang
+
+when using something like qemu-user where argv[0] is qemu the script
+will not be exexuted by the shell.
+---
+ ffbuild/libversion.sh | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/ffbuild/libversion.sh b/ffbuild/libversion.sh
+index 990ce9f640..30046b1d25 100755
+--- a/ffbuild/libversion.sh
++++ b/ffbuild/libversion.sh
+@@ -1,3 +1,5 @@
++#!/bin/sh
++
+ toupper(){
+ echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ }
+--
+2.32.0
+
diff --git a/extra/ffmpeg4/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch b/extra/ffmpeg4/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
new file mode 100644
index 0000000..9cc6fdf
--- /dev/null
+++ b/extra/ffmpeg4/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
@@ -0,0 +1,55 @@
+From ab11be0becb90542f10d5713659b559842c53af2 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Tue, 29 Mar 2016 15:15:17 +0200
+Subject: [PATCH] libavutil: clean up unused FF_SYMVER macro
+
+There is nothing using it since commit d63443b9 (lavc: drop the
+av_fast_{re,m}alloc compatibility wrappers).
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ libavutil/internal.h | 28 ----------------------------
+ 1 file changed, 28 deletions(-)
+
+diff --git a/libavutil/internal.h b/libavutil/internal.h
+index 61784b5..69d63d5 100644
+--- a/libavutil/internal.h
++++ b/libavutil/internal.h
+@@ -187,34 +187,6 @@
+ #endif
+
+ /**
+- * Define a function with only the non-default version specified.
+- *
+- * On systems with ELF shared libraries, all symbols exported from
+- * FFmpeg libraries are tagged with the name and major version of the
+- * library to which they belong. If a function is moved from one
+- * library to another, a wrapper must be retained in the original
+- * location to preserve binary compatibility.
+- *
+- * Functions defined with this macro will never be used to resolve
+- * symbols by the build-time linker.
+- *
+- * @param type return type of function
+- * @param name name of function
+- * @param args argument list of function
+- * @param ver version tag to assign function
+- */
+-#if HAVE_SYMVER_ASM_LABEL
+-# define FF_SYMVER(type, name, args, ver) \
+- type ff_##name args __asm__ (EXTERN_PREFIX #name "@" ver); \
+- type ff_##name args
+-#elif HAVE_SYMVER_GNU_ASM
+-# define FF_SYMVER(type, name, args, ver) \
+- __asm__ (".symver ff_" #name "," EXTERN_PREFIX #name "@" ver); \
+- type ff_##name args; \
+- type ff_##name args
+-#endif
+-
+-/**
+ * Return NULL if a threading library has not been enabled.
+ * Used to disable threading functions in AVCodec definitions
+ * when not needed.
+--
+2.7.4
+
diff --git a/extra/gdk-pixbuf/disable-tests.patch b/extra/gdk-pixbuf/disable-tests.patch
new file mode 100644
index 0000000..01ee3a6
--- /dev/null
+++ b/extra/gdk-pixbuf/disable-tests.patch
@@ -0,0 +1,13 @@
+Index: meson.build
+--- a/meson.build
++++ b/meson.build
+@@ -398,7 +398,9 @@ endif
+ subdir('po')
+
+ if not meson.is_cross_build()
+- subdir('tests')
++ if get_option('installed_tests')
++ subdir('tests')
++ endif
+ subdir('thumbnailer')
+ endif
diff --git a/extra/glew/glew.patch b/extra/glew/glew.patch
new file mode 100644
index 0000000..61c4447
--- /dev/null
+++ b/extra/glew/glew.patch
@@ -0,0 +1,34 @@
+Fixes pkg-config file to have correct system libdir.
+
+diff -aur glew-2.2.0/Makefile glew-2.2.0-alpine/Makefile
+--- glew-2.2.0/Makefile 2020-03-15 11:53:59.000000000 +0000
++++ glew-2.2.0-alpine/Makefile 2022-01-28 02:42:23.773580331 +0000
+@@ -144,7 +144,7 @@
+ glew.pc: glew.pc.in
+ sed \
+ -e "s|@prefix@|$(GLEW_PREFIX)|g" \
+- -e "s|@libdir@|$(LIBDIR)|g" \
++ -e "s|@libdir@|/usr/lib|g" \
+ -e "s|@exec_prefix@|$(BINDIR)|g" \
+ -e "s|@includedir@|$(INCDIR)|g" \
+ -e "s|@version@|$(GLEW_VERSION)|g" \
+
+diff -aur glew-2.2.0/config/Makefile.linux glew-2.2.0-alpine/config/Makefile.linux
+--- glew-2.2.0/config/Makefile.linux 2020-03-15 11:53:59.000000000 +0000
++++ glew-2.2.0-alpine/config/Makefile.linux 2022-01-28 02:43:26.813582486 +0000
+@@ -12,13 +12,8 @@
+ ifeq (e2k,${M_ARCH})
+ ARCH64 = true
+ endif
+-ifeq (${ARCH64},true)
+- LDFLAGS.EXTRA = -L/usr/X11R6/lib64 -L/usr/lib64
+- LIBDIR = $(GLEW_DEST)/lib64
+-else
+- LDFLAGS.EXTRA = -L/usr/X11R6/lib -L/usr/lib
+- LIBDIR = $(GLEW_DEST)/lib
+-endif
++LDFLAGS.EXTRA = -L/usr/X11R6/lib -L/usr/lib
++LIBDIR = $(GLEW_DEST)/lib
+ LDFLAGS.GL = -lGL -lX11
+ LDFLAGS.STATIC = -Wl,-Bstatic
+ LDFLAGS.DYNAMIC = -Wl,-Bdynamic
diff --git a/extra/glib/0001-gquark-fix-initialization-with-c-constructors.patch b/extra/glib/0001-gquark-fix-initialization-with-c-constructors.patch
new file mode 100644
index 0000000..50a9a8c
--- /dev/null
+++ b/extra/glib/0001-gquark-fix-initialization-with-c-constructors.patch
@@ -0,0 +1,47 @@
+From e4216dee57f5156e192b2910f13eb855a104cb18 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Wed, 6 Jul 2016 12:38:40 +0200
+Subject: [PATCH] gquark: fix initialization with c++ constructors
+
+C++ constructors may want create new quarks, but we can not guarantee
+that the glib library ctor is executed first. Therefore we make sure
+that quarks are always initialized from g_quark_from_string and
+g_quark_from_static_string
+
+This fixes crashes in glibmm with musl which likely happens on AIX too.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=768215
+https://bugzilla.gnome.org/show_bug.cgi?id=756139#c14
+---
+ glib/gquark.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/glib/gquark.c b/glib/gquark.c
+index 9e51a92..17ecd7f 100644
+--- a/glib/gquark.c
++++ b/glib/gquark.c
+@@ -57,6 +57,11 @@ static gint quark_block_offset = 0;
+ void
+ g_quark_init (void)
+ {
++ /* we may be initialized from c++ constructor or the glib ctor, but we
++ cannot guarantee in what order. So we check if we have been initialized */
++ if (quark_ht != NULL)
++ return;
++
+ g_assert (quark_seq_id == 0);
+ quark_ht = g_hash_table_new (g_str_hash, g_str_equal);
+ quarks = g_new (gchar*, QUARK_BLOCK_SIZE);
+@@ -179,6 +184,9 @@ quark_from_string (const gchar *string,
+ {
+ GQuark quark = 0;
+
++ if (G_UNLIKELY (quark_ht == NULL))
++ g_quark_init();
++
+ quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string));
+
+ if (!quark)
+--
+2.9.0
+
diff --git a/extra/glib/deprecated-no-warn.patch b/extra/glib/deprecated-no-warn.patch
new file mode 100644
index 0000000..e247eca
--- /dev/null
+++ b/extra/glib/deprecated-no-warn.patch
@@ -0,0 +1,23 @@
+diff -Naur a/gio/glib-compile-schemas.c b/gio/glib-compile-schemas.c
+--- a/gio/glib-compile-schemas.c 2018-09-21 15:23:52.000000000 +0100
++++ b/gio/glib-compile-schemas.c 2019-02-10 14:37:30.034879344 +0000
+@@ -1233,19 +1233,6 @@
+ return;
+ }
+
+- if (path && (g_str_has_prefix (path, "/apps/") ||
+- g_str_has_prefix (path, "/desktop/") ||
+- g_str_has_prefix (path, "/system/")))
+- {
+- gchar *message = NULL;
+- message = g_strdup_printf (_("Warning: Schema “%s” has path “%s”. "
+- "Paths starting with "
+- "“/apps/”, “/desktop/” or “/system/” are deprecated."),
+- id, path);
+- g_printerr ("%s\n", message);
+- g_free (message);
+- }
+-
+ state->schema_state = schema_state_new (path, gettext_domain,
+ extends, extends_name, list_of);
+
diff --git a/extra/glib/musl-libintl.patch b/extra/glib/musl-libintl.patch
new file mode 100644
index 0000000..a673800
--- /dev/null
+++ b/extra/glib/musl-libintl.patch
@@ -0,0 +1,22 @@
+diff --git a/meson.build b/meson.build
+index 319f183..3a5fdfc 100644
+--- a/meson.build
++++ b/meson.build
+@@ -2047,9 +2047,6 @@ endif
+ # FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible
+ # implementations. This could be extended if issues are found in some platforms.
+ libintl_deps = []
+-if cc.has_function('ngettext')
+- have_bind_textdomain_codeset = cc.has_function('bind_textdomain_codeset')
+-else
+ # First just find the bare library.
+ libintl = cc.find_library('intl', required : false)
+ # The bare library probably won't link without help if it's static.
+@@ -2081,7 +2078,6 @@ else
+ have_bind_textdomain_codeset = cc.has_function('bind_textdomain_codeset', args : osx_ldflags,
+ dependencies : libintl_deps)
+ endif
+-endif
+
+ glib_conf.set('HAVE_BIND_TEXTDOMAIN_CODESET', have_bind_textdomain_codeset)
+
diff --git a/extra/glm/fix-endian-test.patch b/extra/glm/fix-endian-test.patch
new file mode 100644
index 0000000..ba2cce4
--- /dev/null
+++ b/extra/glm/fix-endian-test.patch
@@ -0,0 +1,30 @@
+diff --git a/test/gtc/gtc_packing.cpp b/test/gtc/gtc_packing.cpp
+index 5830999..86167c5 100644
+--- a/test/gtc/gtc_packing.cpp
++++ b/test/gtc/gtc_packing.cpp
+@@ -5,6 +5,8 @@
+ #include <cstdio>
+ #include <vector>
+
++#include <endian.h>
++
+ void print_bits(float const& s)
+ {
+ union
+@@ -154,6 +156,7 @@ int test_U3x10_1x2()
+ Error += glm::all(glm::equal(v0, v1)) ? 0 : 1;
+ }
+
++#if BYTE_ORDER == LITTLE_ENDIAN
+ glm::u8vec4 const v0(0xff, 0x77, 0x0, 0x33);
+ glm::uint32 const p0 = *reinterpret_cast<glm::uint32 const*>(&v0[0]);
+ glm::uint32 const r0 = 0x330077ff;
+@@ -165,7 +168,7 @@ int test_U3x10_1x2()
+ glm::uint32 const r1 = 0xc001dcff;
+
+ Error += p1 == r1 ? 0 : 1;
+-
++#endif
+ return Error;
+ }
+
diff --git a/extra/glm/glm.pc b/extra/glm/glm.pc
new file mode 100644
index 0000000..e3bb5ac
--- /dev/null
+++ b/extra/glm/glm.pc
@@ -0,0 +1,7 @@
+prefix=/usr
+includedir=${prefix}/include
+
+Name: GLM
+Description: OpenGL Mathematics
+Version: 0.9.9
+Cflags: -I${includedir}
diff --git a/extra/gobject-introspection/musl-time64.patch b/extra/gobject-introspection/musl-time64.patch
new file mode 100644
index 0000000..9990efd
--- /dev/null
+++ b/extra/gobject-introspection/musl-time64.patch
@@ -0,0 +1,37 @@
+--- a/giscanner/ast.py 2022-03-18 11:54:42.318927500 +0000
++++ b/giscanner/ast.py 2022-03-18 11:54:42.318927500 +0000
+@@ -346,7 +346,7 @@
+ type_names['ssize_t'] = type_names['gssize']
+ type_names['uintptr_t'] = type_names['guintptr']
+ type_names['intptr_t'] = type_names['gintptr']
+-type_names['time_t'] = TYPE_LONG
++type_names['time_t'] = TYPE_INT64
+ type_names['off_t'] = type_names['gsize']
+ type_names['pid_t'] = TYPE_INT
+ type_names['uid_t'] = TYPE_UINT
+--- a/tests/scanner/Regress-1.0-expected.gir 2022-03-18 11:54:42.318927500 +0000
++++ b/tests/scanner/Regress-1.0-expected.gir 2022-03-18 11:54:42.318927500 +0000
+@@ -2023,7 +2023,7 @@
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </instance-parameter>
+ <parameter name="time" transfer-ownership="none">
+- <type name="glong" c:type="time_t"/>
++ <type name="gint64" c:type="time_t"/>
+ </parameter>
+ </parameters>
+ </method>
+@@ -8569,7 +8569,7 @@
+ <function name="test_timet" c:identifier="regress_test_timet">
+ <source-position filename="regress.h" line="94"/>
+ <return-value transfer-ownership="none">
+- <type name="glong" c:type="time_t"/>
++ <type name="gint64" c:type="time_t"/>
+ </return-value>
+ <parameters>
+ <parameter name="in" transfer-ownership="none">
+@@ -8576,4 +8576,4 @@
+- <type name="glong" c:type="time_t"/>
++ <type name="gint64" c:type="time_t"/>
+ </parameter>
+ </parameters>
+ </function>
diff --git a/extra/libexecinfo/10-execinfo.patch b/extra/libexecinfo/10-execinfo.patch
new file mode 100644
index 0000000..44db530
--- /dev/null
+++ b/extra/libexecinfo/10-execinfo.patch
@@ -0,0 +1,64 @@
+--- a/execinfo.c.orig
++++ b/execinfo.c
+@@ -69,7 +69,8 @@
+ char **
+ backtrace_symbols(void *const *buffer, int size)
+ {
+- int i, clen, alen, offset;
++ size_t clen, alen;
++ int i, offset;
+ char **rval;
+ char *cp;
+ Dl_info info;
+@@ -78,7 +79,6 @@
+ rval = malloc(clen);
+ if (rval == NULL)
+ return NULL;
+- (char **)cp = &(rval[size]);
+ for (i = 0; i < size; i++) {
+ if (dladdr(buffer[i], &info) != 0) {
+ if (info.dli_sname == NULL)
+@@ -92,14 +92,14 @@
+ 2 + /* " <" */
+ strlen(info.dli_sname) + /* "function" */
+ 1 + /* "+" */
+- D10(offset) + /* "offset */
++ 10 + /* "offset */
+ 5 + /* "> at " */
+ strlen(info.dli_fname) + /* "filename" */
+ 1; /* "\0" */
+ rval = realloc_safe(rval, clen + alen);
+ if (rval == NULL)
+ return NULL;
+- snprintf(cp, alen, "%p <%s+%d> at %s",
++ snprintf((char *) rval + clen, alen, "%p <%s+%d> at %s",
+ buffer[i], info.dli_sname, offset, info.dli_fname);
+ } else {
+ alen = 2 + /* "0x" */
+@@ -108,12 +108,15 @@
+ rval = realloc_safe(rval, clen + alen);
+ if (rval == NULL)
+ return NULL;
+- snprintf(cp, alen, "%p", buffer[i]);
++ snprintf((char *) rval + clen, alen, "%p", buffer[i]);
+ }
+- rval[i] = cp;
+- cp += alen;
++ rval[i] = (char *) clen;
++ clen += alen;
+ }
+
++ for (i = 0; i < size; i++)
++ rval[i] += (long) rval;
++
+ return rval;
+ }
+
+@@ -155,6 +158,6 @@
+ return;
+ snprintf(buf, len, "%p\n", buffer[i]);
+ }
+- write(fd, buf, len - 1);
++ write(fd, buf, strlen(buf));
+ }
+ }
diff --git a/extra/libexecinfo/20-define-gnu-source.patch b/extra/libexecinfo/20-define-gnu-source.patch
new file mode 100644
index 0000000..7255ecd
--- /dev/null
+++ b/extra/libexecinfo/20-define-gnu-source.patch
@@ -0,0 +1,24 @@
+--- a/execinfo.c.orig
++++ b/execinfo.c
+@@ -26,6 +26,7 @@
+ * $Id: execinfo.c,v 1.3 2004/07/19 05:21:09 sobomax Exp $
+ */
+
++#define _GNU_SOURCE
+ #include <sys/types.h>
+ #include <sys/uio.h>
+ #include <dlfcn.h>
+--- a/stacktraverse.c.orig
++++ b/stacktraverse.c
+@@ -1,3 +1,4 @@
++#define _GNU_SOURCE
+ #include <stddef.h>
+
+ #include "stacktraverse.h"
+--- a/test.c.orig
++++ b/test.c
+@@ -1,3 +1,4 @@
++#define _GNU_SOURCE
+ #include <stdio.h>
+ #include <stdlib.h>
+
diff --git a/extra/libexecinfo/30-linux-makefile.patch b/extra/libexecinfo/30-linux-makefile.patch
new file mode 100644
index 0000000..6bc8a89
--- /dev/null
+++ b/extra/libexecinfo/30-linux-makefile.patch
@@ -0,0 +1,44 @@
+--- a/Makefile.orig
++++ b/Makefile
+@@ -23,24 +23,25 @@
+ # SUCH DAMAGE.
+ #
+ # $Id: Makefile,v 1.3 2004/07/19 05:19:55 sobomax Exp $
++#
++# Linux Makefile by Matt Smith <mcs@darkregion.net>, 2011/01/04
+
+-LIB= execinfo
++CC=cc
++AR=ar
++EXECINFO_CFLAGS=$(CFLAGS) -O2 -pipe -fno-strict-aliasing -std=gnu99 -fstack-protector -c
++EXECINFO_LDFLAGS=$(LDFLAGS)
+
+-SRCS= stacktraverse.c stacktraverse.h execinfo.c execinfo.h
++all: static dynamic
+
+-INCS= execinfo.h
++static:
++ $(CC) $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) stacktraverse.c
++ $(CC) $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) execinfo.c
++ $(AR) rcs libexecinfo.a stacktraverse.o execinfo.o
+
+-SHLIB_MAJOR= 1
+-SHLIB_MINOR= 0
++dynamic:
++ $(CC) -fpic -DPIC $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) stacktraverse.c -o stacktraverse.So
++ $(CC) -fpic -DPIC $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) execinfo.c -o execinfo.So
++ $(CC) -shared -Wl,-soname,libexecinfo.so.1 -o libexecinfo.so.1 stacktraverse.So execinfo.So
+
+-NOPROFILE= yes
+-
+-DPADD= ${LIBM}
+-LDADD= -lm
+-
+-#WARNS?= 4
+-
+-#stacktraverse.c: gen.py
+-# ./gen.py > stacktraverse.c
+-
+-.include <bsd.lib.mk>
++clean:
++ rm -rf *.o *.So *.a *.so
diff --git a/extra/libpng/libpng-1.6.37-apng.patch b/extra/libpng/libpng-1.6.37-apng.patch
new file mode 100644
index 0000000..8aaa50b
--- /dev/null
+++ b/extra/libpng/libpng-1.6.37-apng.patch
@@ -0,0 +1,1728 @@
+diff -Naru libpng-1.6.37.org/png.h libpng-1.6.37/png.h
+--- libpng-1.6.37.org/png.h 2019-04-19 07:21:37.398024800 +0900
++++ libpng-1.6.37/png.h 2019-04-19 07:22:37.871245630 +0900
+@@ -330,6 +330,10 @@
+ # include "pnglibconf.h"
+ #endif
+
++#define PNG_APNG_SUPPORTED
++#define PNG_READ_APNG_SUPPORTED
++#define PNG_WRITE_APNG_SUPPORTED
++
+ #ifndef PNG_VERSION_INFO_ONLY
+ /* Machine specific configuration. */
+ # include "pngconf.h"
+@@ -425,6 +429,17 @@
+ * See pngconf.h for base types that vary by machine/system
+ */
+
++#ifdef PNG_APNG_SUPPORTED
++/* dispose_op flags from inside fcTL */
++#define PNG_DISPOSE_OP_NONE 0x00U
++#define PNG_DISPOSE_OP_BACKGROUND 0x01U
++#define PNG_DISPOSE_OP_PREVIOUS 0x02U
++
++/* blend_op flags from inside fcTL */
++#define PNG_BLEND_OP_SOURCE 0x00U
++#define PNG_BLEND_OP_OVER 0x01U
++#endif /* PNG_APNG_SUPPORTED */
++
+ /* This triggers a compiler error in png.c, if png.c and png.h
+ * do not agree upon the version number.
+ */
+@@ -746,6 +761,10 @@
+ #define PNG_INFO_sCAL 0x4000U /* ESR, 1.0.6 */
+ #define PNG_INFO_IDAT 0x8000U /* ESR, 1.0.6 */
+ #define PNG_INFO_eXIf 0x10000U /* GR-P, 1.6.31 */
++#ifdef PNG_APNG_SUPPORTED
++#define PNG_INFO_acTL 0x20000U
++#define PNG_INFO_fcTL 0x40000U
++#endif
+
+ /* This is used for the transformation routines, as some of them
+ * change these values for the row. It also should enable using
+@@ -783,6 +802,10 @@
+ #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
+ typedef PNG_CALLBACK(void, *png_progressive_info_ptr, (png_structp, png_infop));
+ typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop));
++#ifdef PNG_APNG_SUPPORTED
++typedef PNG_CALLBACK(void, *png_progressive_frame_ptr, (png_structp,
++ png_uint_32));
++#endif
+
+ /* The following callback receives png_uint_32 row_number, int pass for the
+ * png_bytep data of the row. When transforming an interlaced image the
+@@ -3226,6 +3249,74 @@
+ /*******************************************************************************
+ * END OF HARDWARE AND SOFTWARE OPTIONS
+ ******************************************************************************/
++#ifdef PNG_APNG_SUPPORTED
++PNG_EXPORT(250, png_uint_32, png_get_acTL, (png_structp png_ptr,
++ png_infop info_ptr, png_uint_32 *num_frames, png_uint_32 *num_plays));
++
++PNG_EXPORT(251, png_uint_32, png_set_acTL, (png_structp png_ptr,
++ png_infop info_ptr, png_uint_32 num_frames, png_uint_32 num_plays));
++
++PNG_EXPORT(252, png_uint_32, png_get_num_frames, (png_structp png_ptr,
++ png_infop info_ptr));
++
++PNG_EXPORT(253, png_uint_32, png_get_num_plays, (png_structp png_ptr,
++ png_infop info_ptr));
++
++PNG_EXPORT(254, png_uint_32, png_get_next_frame_fcTL,
++ (png_structp png_ptr, png_infop info_ptr, png_uint_32 *width,
++ png_uint_32 *height, png_uint_32 *x_offset, png_uint_32 *y_offset,
++ png_uint_16 *delay_num, png_uint_16 *delay_den, png_byte *dispose_op,
++ png_byte *blend_op));
++
++PNG_EXPORT(255, png_uint_32, png_set_next_frame_fcTL,
++ (png_structp png_ptr, png_infop info_ptr, png_uint_32 width,
++ png_uint_32 height, png_uint_32 x_offset, png_uint_32 y_offset,
++ png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op,
++ png_byte blend_op));
++
++PNG_EXPORT(256, png_uint_32, png_get_next_frame_width,
++ (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(257, png_uint_32, png_get_next_frame_height,
++ (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(258, png_uint_32, png_get_next_frame_x_offset,
++ (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(259, png_uint_32, png_get_next_frame_y_offset,
++ (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(260, png_uint_16, png_get_next_frame_delay_num,
++ (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(261, png_uint_16, png_get_next_frame_delay_den,
++ (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(262, png_byte, png_get_next_frame_dispose_op,
++ (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(263, png_byte, png_get_next_frame_blend_op,
++ (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(264, png_byte, png_get_first_frame_is_hidden,
++ (png_structp png_ptr, png_infop info_ptr));
++PNG_EXPORT(265, png_uint_32, png_set_first_frame_is_hidden,
++ (png_structp png_ptr, png_infop info_ptr, png_byte is_hidden));
++
++#ifdef PNG_READ_APNG_SUPPORTED
++PNG_EXPORT(266, void, png_read_frame_head, (png_structp png_ptr,
++ png_infop info_ptr));
++#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
++PNG_EXPORT(267, void, png_set_progressive_frame_fn, (png_structp png_ptr,
++ png_progressive_frame_ptr frame_info_fn,
++ png_progressive_frame_ptr frame_end_fn));
++#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
++#endif /* PNG_READ_APNG_SUPPORTED */
++
++#ifdef PNG_WRITE_APNG_SUPPORTED
++PNG_EXPORT(268, void, png_write_frame_head, (png_structp png_ptr,
++ png_infop info_ptr, png_bytepp row_pointers,
++ png_uint_32 width, png_uint_32 height,
++ png_uint_32 x_offset, png_uint_32 y_offset,
++ png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op,
++ png_byte blend_op));
++
++PNG_EXPORT(269, void, png_write_frame_tail, (png_structp png_ptr,
++ png_infop info_ptr));
++#endif /* PNG_WRITE_APNG_SUPPORTED */
++#endif /* PNG_APNG_SUPPORTED */
+
+ /* Maintainer: Put new public prototypes here ^, in libpng.3, in project
+ * defs, and in scripts/symbols.def.
+@@ -3235,7 +3326,11 @@
+ * one to use is one more than this.)
+ */
+ #ifdef PNG_EXPORT_LAST_ORDINAL
++#ifdef PNG_APNG_SUPPORTED
++ PNG_EXPORT_LAST_ORDINAL(269);
++#else
+ PNG_EXPORT_LAST_ORDINAL(249);
++#endif /* PNG_APNG_SUPPORTED */
+ #endif
+
+ #ifdef __cplusplus
+diff -Naru libpng-1.6.37.org/pngget.c libpng-1.6.37/pngget.c
+--- libpng-1.6.37.org/pngget.c 2019-04-19 07:21:37.399024787 +0900
++++ libpng-1.6.37/pngget.c 2019-04-19 07:22:37.850245901 +0900
+@@ -1246,4 +1246,166 @@
+ # endif
+ #endif
+
++#ifdef PNG_APNG_SUPPORTED
++png_uint_32 PNGAPI
++png_get_acTL(png_structp png_ptr, png_infop info_ptr,
++ png_uint_32 *num_frames, png_uint_32 *num_plays)
++{
++ png_debug1(1, "in %s retrieval function", "acTL");
++
++ if (png_ptr != NULL && info_ptr != NULL &&
++ (info_ptr->valid & PNG_INFO_acTL) &&
++ num_frames != NULL && num_plays != NULL)
++ {
++ *num_frames = info_ptr->num_frames;
++ *num_plays = info_ptr->num_plays;
++ return (1);
++ }
++
++ return (0);
++}
++
++png_uint_32 PNGAPI
++png_get_num_frames(png_structp png_ptr, png_infop info_ptr)
++{
++ png_debug(1, "in png_get_num_frames()");
++
++ if (png_ptr != NULL && info_ptr != NULL)
++ return (info_ptr->num_frames);
++ return (0);
++}
++
++png_uint_32 PNGAPI
++png_get_num_plays(png_structp png_ptr, png_infop info_ptr)
++{
++ png_debug(1, "in png_get_num_plays()");
++
++ if (png_ptr != NULL && info_ptr != NULL)
++ return (info_ptr->num_plays);
++ return (0);
++}
++
++png_uint_32 PNGAPI
++png_get_next_frame_fcTL(png_structp png_ptr, png_infop info_ptr,
++ png_uint_32 *width, png_uint_32 *height,
++ png_uint_32 *x_offset, png_uint_32 *y_offset,
++ png_uint_16 *delay_num, png_uint_16 *delay_den,
++ png_byte *dispose_op, png_byte *blend_op)
++{
++ png_debug1(1, "in %s retrieval function", "fcTL");
++
++ if (png_ptr != NULL && info_ptr != NULL &&
++ (info_ptr->valid & PNG_INFO_fcTL) &&
++ width != NULL && height != NULL &&
++ x_offset != NULL && y_offset != NULL &&
++ delay_num != NULL && delay_den != NULL &&
++ dispose_op != NULL && blend_op != NULL)
++ {
++ *width = info_ptr->next_frame_width;
++ *height = info_ptr->next_frame_height;
++ *x_offset = info_ptr->next_frame_x_offset;
++ *y_offset = info_ptr->next_frame_y_offset;
++ *delay_num = info_ptr->next_frame_delay_num;
++ *delay_den = info_ptr->next_frame_delay_den;
++ *dispose_op = info_ptr->next_frame_dispose_op;
++ *blend_op = info_ptr->next_frame_blend_op;
++ return (1);
++ }
++
++ return (0);
++}
++
++png_uint_32 PNGAPI
++png_get_next_frame_width(png_structp png_ptr, png_infop info_ptr)
++{
++ png_debug(1, "in png_get_next_frame_width()");
++
++ if (png_ptr != NULL && info_ptr != NULL)
++ return (info_ptr->next_frame_width);
++ return (0);
++}
++
++png_uint_32 PNGAPI
++png_get_next_frame_height(png_structp png_ptr, png_infop info_ptr)
++{
++ png_debug(1, "in png_get_next_frame_height()");
++
++ if (png_ptr != NULL && info_ptr != NULL)
++ return (info_ptr->next_frame_height);
++ return (0);
++}
++
++png_uint_32 PNGAPI
++png_get_next_frame_x_offset(png_structp png_ptr, png_infop info_ptr)
++{
++ png_debug(1, "in png_get_next_frame_x_offset()");
++
++ if (png_ptr != NULL && info_ptr != NULL)
++ return (info_ptr->next_frame_x_offset);
++ return (0);
++}
++
++png_uint_32 PNGAPI
++png_get_next_frame_y_offset(png_structp png_ptr, png_infop info_ptr)
++{
++ png_debug(1, "in png_get_next_frame_y_offset()");
++
++ if (png_ptr != NULL && info_ptr != NULL)
++ return (info_ptr->next_frame_y_offset);
++ return (0);
++}
++
++png_uint_16 PNGAPI
++png_get_next_frame_delay_num(png_structp png_ptr, png_infop info_ptr)
++{
++ png_debug(1, "in png_get_next_frame_delay_num()");
++
++ if (png_ptr != NULL && info_ptr != NULL)
++ return (info_ptr->next_frame_delay_num);
++ return (0);
++}
++
++png_uint_16 PNGAPI
++png_get_next_frame_delay_den(png_structp png_ptr, png_infop info_ptr)
++{
++ png_debug(1, "in png_get_next_frame_delay_den()");
++
++ if (png_ptr != NULL && info_ptr != NULL)
++ return (info_ptr->next_frame_delay_den);
++ return (0);
++}
++
++png_byte PNGAPI
++png_get_next_frame_dispose_op(png_structp png_ptr, png_infop info_ptr)
++{
++ png_debug(1, "in png_get_next_frame_dispose_op()");
++
++ if (png_ptr != NULL && info_ptr != NULL)
++ return (info_ptr->next_frame_dispose_op);
++ return (0);
++}
++
++png_byte PNGAPI
++png_get_next_frame_blend_op(png_structp png_ptr, png_infop info_ptr)
++{
++ png_debug(1, "in png_get_next_frame_blend_op()");
++
++ if (png_ptr != NULL && info_ptr != NULL)
++ return (info_ptr->next_frame_blend_op);
++ return (0);
++}
++
++png_byte PNGAPI
++png_get_first_frame_is_hidden(png_structp png_ptr, png_infop info_ptr)
++{
++ png_debug(1, "in png_first_frame_is_hidden()");
++
++ if (png_ptr != NULL)
++ return (png_byte)(png_ptr->apng_flags & PNG_FIRST_FRAME_HIDDEN);
++
++ PNG_UNUSED(info_ptr)
++
++ return 0;
++}
++#endif /* PNG_APNG_SUPPORTED */
+ #endif /* READ || WRITE */
+diff -Naru libpng-1.6.37.org/pnginfo.h libpng-1.6.37/pnginfo.h
+--- libpng-1.6.37.org/pnginfo.h 2019-04-19 07:21:37.399024787 +0900
++++ libpng-1.6.37/pnginfo.h 2019-04-19 07:22:37.850245901 +0900
+@@ -263,5 +263,18 @@
+ png_bytepp row_pointers; /* the image bits */
+ #endif
+
++#ifdef PNG_APNG_SUPPORTED
++ png_uint_32 num_frames; /* including default image */
++ png_uint_32 num_plays;
++ png_uint_32 next_frame_width;
++ png_uint_32 next_frame_height;
++ png_uint_32 next_frame_x_offset;
++ png_uint_32 next_frame_y_offset;
++ png_uint_16 next_frame_delay_num;
++ png_uint_16 next_frame_delay_den;
++ png_byte next_frame_dispose_op;
++ png_byte next_frame_blend_op;
++#endif
++
+ };
+ #endif /* PNGINFO_H */
+diff -Naru libpng-1.6.37.org/pngpread.c libpng-1.6.37/pngpread.c
+--- libpng-1.6.37.org/pngpread.c 2019-04-19 07:21:37.399024787 +0900
++++ libpng-1.6.37/pngpread.c 2019-04-19 07:22:37.850245901 +0900
+@@ -195,6 +195,106 @@
+
+ chunk_name = png_ptr->chunk_name;
+
++#ifdef PNG_READ_APNG_SUPPORTED
++ if (png_ptr->num_frames_read > 0 &&
++ png_ptr->num_frames_read < info_ptr->num_frames)
++ {
++ if (chunk_name == png_IDAT)
++ {
++ /* Discard trailing IDATs for the first frame */
++ if (png_ptr->mode & PNG_HAVE_fcTL || png_ptr->num_frames_read > 1)
++ png_error(png_ptr, "out of place IDAT");
++
++ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
++ {
++ png_push_save_buffer(png_ptr);
++ return;
++ }
++
++ png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
++ return;
++ }
++ else if (chunk_name == png_fdAT)
++ {
++ if (png_ptr->buffer_size < 4)
++ {
++ png_push_save_buffer(png_ptr);
++ return;
++ }
++
++ png_ensure_sequence_number(png_ptr, 4);
++
++ if (!(png_ptr->mode & PNG_HAVE_fcTL))
++ {
++ /* Discard trailing fdATs for frames other than the first */
++ if (png_ptr->num_frames_read < 2)
++ png_error(png_ptr, "out of place fdAT");
++
++ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
++ {
++ png_push_save_buffer(png_ptr);
++ return;
++ }
++
++ png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
++ return;
++ }
++
++ else
++ {
++ /* frame data follows */
++ png_ptr->idat_size = png_ptr->push_length - 4;
++ png_ptr->mode |= PNG_HAVE_IDAT;
++ png_ptr->process_mode = PNG_READ_IDAT_MODE;
++
++ return;
++ }
++ }
++
++ else if (chunk_name == png_fcTL)
++ {
++ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
++ {
++ png_push_save_buffer(png_ptr);
++ return;
++ }
++
++ png_read_reset(png_ptr);
++ png_ptr->mode &= ~PNG_HAVE_fcTL;
++
++ png_handle_fcTL(png_ptr, info_ptr, png_ptr->push_length);
++
++ if (!(png_ptr->mode & PNG_HAVE_fcTL))
++ png_error(png_ptr, "missing required fcTL chunk");
++
++ png_read_reinit(png_ptr, info_ptr);
++ png_progressive_read_reset(png_ptr);
++
++ if (png_ptr->frame_info_fn != NULL)
++ (*(png_ptr->frame_info_fn))(png_ptr, png_ptr->num_frames_read);
++
++ png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
++
++ return;
++ }
++
++ else
++ {
++ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
++ {
++ png_push_save_buffer(png_ptr);
++ return;
++ }
++ png_warning(png_ptr, "Skipped (ignored) a chunk "
++ "between APNG chunks");
++ png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
++ return;
++ }
++
++ return;
++ }
++#endif /* PNG_READ_APNG_SUPPORTED */
++
+ if (chunk_name == png_IDAT)
+ {
+ if ((png_ptr->mode & PNG_AFTER_IDAT) != 0)
+@@ -261,6 +361,9 @@
+
+ else if (chunk_name == png_IDAT)
+ {
++#ifdef PNG_READ_APNG_SUPPORTED
++ png_have_info(png_ptr, info_ptr);
++#endif
+ png_ptr->idat_size = png_ptr->push_length;
+ png_ptr->process_mode = PNG_READ_IDAT_MODE;
+ png_push_have_info(png_ptr, info_ptr);
+@@ -406,6 +509,30 @@
+ png_handle_iTXt(png_ptr, info_ptr, png_ptr->push_length);
+ }
+ #endif
++#ifdef PNG_READ_APNG_SUPPORTED
++ else if (chunk_name == png_acTL)
++ {
++ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
++ {
++ png_push_save_buffer(png_ptr);
++ return;
++ }
++
++ png_handle_acTL(png_ptr, info_ptr, png_ptr->push_length);
++ }
++
++ else if (chunk_name == png_fcTL)
++ {
++ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
++ {
++ png_push_save_buffer(png_ptr);
++ return;
++ }
++
++ png_handle_fcTL(png_ptr, info_ptr, png_ptr->push_length);
++ }
++
++#endif /* PNG_READ_APNG_SUPPORTED */
+
+ else
+ {
+@@ -539,7 +666,11 @@
+ png_byte chunk_tag[4];
+
+ /* TODO: this code can be commoned up with the same code in push_read */
++#ifdef PNG_READ_APNG_SUPPORTED
++ PNG_PUSH_SAVE_BUFFER_IF_LT(12)
++#else
+ PNG_PUSH_SAVE_BUFFER_IF_LT(8)
++#endif
+ png_push_fill_buffer(png_ptr, chunk_length, 4);
+ png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length);
+ png_reset_crc(png_ptr);
+@@ -547,17 +678,64 @@
+ png_ptr->chunk_name = PNG_CHUNK_FROM_STRING(chunk_tag);
+ png_ptr->mode |= PNG_HAVE_CHUNK_HEADER;
+
++#ifdef PNG_READ_APNG_SUPPORTED
++ if (png_ptr->chunk_name != png_fdAT && png_ptr->num_frames_read > 0)
++ {
++ if (png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED)
++ {
++ png_ptr->process_mode = PNG_READ_CHUNK_MODE;
++ if (png_ptr->frame_end_fn != NULL)
++ (*(png_ptr->frame_end_fn))(png_ptr, png_ptr->num_frames_read);
++ png_ptr->num_frames_read++;
++ return;
++ }
++ else
++ {
++ if (png_ptr->chunk_name == png_IEND)
++ png_error(png_ptr, "Not enough image data");
++ if (png_ptr->push_length + 4 > png_ptr->buffer_size)
++ {
++ png_push_save_buffer(png_ptr);
++ return;
++ }
++ png_warning(png_ptr, "Skipping (ignoring) a chunk between "
++ "APNG chunks");
++ png_crc_finish(png_ptr, png_ptr->push_length);
++ png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
++ return;
++ }
++ }
++ else
++#endif
++#ifdef PNG_READ_APNG_SUPPORTED
++ if (png_ptr->chunk_name != png_IDAT && png_ptr->num_frames_read == 0)
++#else
+ if (png_ptr->chunk_name != png_IDAT)
++#endif
+ {
+ png_ptr->process_mode = PNG_READ_CHUNK_MODE;
+
+ if ((png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED) == 0)
+ png_error(png_ptr, "Not enough compressed data");
+
++#ifdef PNG_READ_APNG_SUPPORTED
++ if (png_ptr->frame_end_fn != NULL)
++ (*(png_ptr->frame_end_fn))(png_ptr, png_ptr->num_frames_read);
++ png_ptr->num_frames_read++;
++#endif
++
+ return;
+ }
+
+ png_ptr->idat_size = png_ptr->push_length;
++
++#ifdef PNG_READ_APNG_SUPPORTED
++ if (png_ptr->num_frames_read > 0)
++ {
++ png_ensure_sequence_number(png_ptr, 4);
++ png_ptr->idat_size -= 4;
++ }
++#endif
+ }
+
+ if (png_ptr->idat_size != 0 && png_ptr->save_buffer_size != 0)
+@@ -631,6 +809,15 @@
+ if (!(buffer_length > 0) || buffer == NULL)
+ png_error(png_ptr, "No IDAT data (internal error)");
+
++#ifdef PNG_READ_APNG_SUPPORTED
++ /* If the app is not APNG-aware, decode only the first frame */
++ if (!(png_ptr->apng_flags & PNG_APNG_APP) && png_ptr->num_frames_read > 0)
++ {
++ png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED;
++ return;
++ }
++#endif
++
+ /* This routine must process all the data it has been given
+ * before returning, calling the row callback as required to
+ * handle the uncompressed results.
+@@ -1085,6 +1272,18 @@
+ png_set_read_fn(png_ptr, progressive_ptr, png_push_fill_buffer);
+ }
+
++#ifdef PNG_READ_APNG_SUPPORTED
++void PNGAPI
++png_set_progressive_frame_fn(png_structp png_ptr,
++ png_progressive_frame_ptr frame_info_fn,
++ png_progressive_frame_ptr frame_end_fn)
++{
++ png_ptr->frame_info_fn = frame_info_fn;
++ png_ptr->frame_end_fn = frame_end_fn;
++ png_ptr->apng_flags |= PNG_APNG_APP;
++}
++#endif
++
+ png_voidp PNGAPI
+ png_get_progressive_ptr(png_const_structrp png_ptr)
+ {
+diff -Naru libpng-1.6.37.org/pngpriv.h libpng-1.6.37/pngpriv.h
+--- libpng-1.6.37.org/pngpriv.h 2019-04-19 07:21:37.399024787 +0900
++++ libpng-1.6.37/pngpriv.h 2019-04-19 07:22:37.850245901 +0900
+@@ -637,6 +637,10 @@
+ #define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000U /* Have another chunk after IDAT */
+ /* 0x4000U (unused) */
+ #define PNG_IS_READ_STRUCT 0x8000U /* Else is a write struct */
++#ifdef PNG_APNG_SUPPORTED
++#define PNG_HAVE_acTL 0x10000U
++#define PNG_HAVE_fcTL 0x20000U
++#endif
+
+ /* Flags for the transformations the PNG library does on the image data */
+ #define PNG_BGR 0x0001U
+@@ -873,6 +877,16 @@
+ #define png_tRNS PNG_U32(116, 82, 78, 83)
+ #define png_zTXt PNG_U32(122, 84, 88, 116)
+
++#ifdef PNG_APNG_SUPPORTED
++#define png_acTL PNG_U32( 97, 99, 84, 76)
++#define png_fcTL PNG_U32(102, 99, 84, 76)
++#define png_fdAT PNG_U32(102, 100, 65, 84)
++
++/* For png_struct.apng_flags: */
++#define PNG_FIRST_FRAME_HIDDEN 0x0001U
++#define PNG_APNG_APP 0x0002U
++#endif
++
+ /* The following will work on (signed char*) strings, whereas the get_uint_32
+ * macro will fail on top-bit-set values because of the sign extension.
+ */
+@@ -1644,6 +1658,47 @@
+ */
+ #endif
+
++#ifdef PNG_APNG_SUPPORTED
++PNG_INTERNAL_FUNCTION(void,png_ensure_fcTL_is_valid,(png_structp png_ptr,
++ png_uint_32 width, png_uint_32 height,
++ png_uint_32 x_offset, png_uint_32 y_offset,
++ png_uint_16 delay_num, png_uint_16 delay_den,
++ png_byte dispose_op, png_byte blend_op), PNG_EMPTY);
++
++#ifdef PNG_READ_APNG_SUPPORTED
++PNG_INTERNAL_FUNCTION(void,png_handle_acTL,(png_structp png_ptr, png_infop info_ptr,
++ png_uint_32 length),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_handle_fcTL,(png_structp png_ptr, png_infop info_ptr,
++ png_uint_32 length),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_handle_fdAT,(png_structp png_ptr, png_infop info_ptr,
++ png_uint_32 length),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_have_info,(png_structp png_ptr, png_infop info_ptr),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_ensure_sequence_number,(png_structp png_ptr,
++ png_uint_32 length),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_read_reset,(png_structp png_ptr),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_read_reinit,(png_structp png_ptr,
++ png_infop info_ptr),PNG_EMPTY);
++#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
++PNG_INTERNAL_FUNCTION(void,png_progressive_read_reset,(png_structp png_ptr),PNG_EMPTY);
++#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
++#endif /* PNG_READ_APNG_SUPPORTED */
++
++#ifdef PNG_WRITE_APNG_SUPPORTED
++PNG_INTERNAL_FUNCTION(void,png_write_acTL,(png_structp png_ptr,
++ png_uint_32 num_frames, png_uint_32 num_plays),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_write_fcTL,(png_structp png_ptr,
++ png_uint_32 width, png_uint_32 height,
++ png_uint_32 x_offset, png_uint_32 y_offset,
++ png_uint_16 delay_num, png_uint_16 delay_den,
++ png_byte dispose_op, png_byte blend_op),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_write_fdAT,(png_structp png_ptr,
++ png_const_bytep data, png_size_t length),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_write_reset,(png_structp png_ptr),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_write_reinit,(png_structp png_ptr,
++ png_infop info_ptr, png_uint_32 width, png_uint_32 height),PNG_EMPTY);
++#endif /* PNG_WRITE_APNG_SUPPORTED */
++#endif /* PNG_APNG_SUPPORTED */
++
+ /* Added at libpng version 1.4.0 */
+ #ifdef PNG_COLORSPACE_SUPPORTED
+ /* These internal functions are for maintaining the colorspace structure within
+diff -Naru libpng-1.6.37.org/pngread.c libpng-1.6.37/pngread.c
+--- libpng-1.6.37.org/pngread.c 2019-04-19 07:21:37.400024774 +0900
++++ libpng-1.6.37/pngread.c 2019-04-19 07:22:37.851245887 +0900
+@@ -161,6 +161,9 @@
+
+ else if (chunk_name == png_IDAT)
+ {
++#ifdef PNG_READ_APNG_SUPPORTED
++ png_have_info(png_ptr, info_ptr);
++#endif
+ png_ptr->idat_size = length;
+ break;
+ }
+@@ -255,6 +258,17 @@
+ png_handle_iTXt(png_ptr, info_ptr, length);
+ #endif
+
++#ifdef PNG_READ_APNG_SUPPORTED
++ else if (chunk_name == png_acTL)
++ png_handle_acTL(png_ptr, info_ptr, length);
++
++ else if (chunk_name == png_fcTL)
++ png_handle_fcTL(png_ptr, info_ptr, length);
++
++ else if (chunk_name == png_fdAT)
++ png_handle_fdAT(png_ptr, info_ptr, length);
++#endif
++
+ else
+ png_handle_unknown(png_ptr, info_ptr, length,
+ PNG_HANDLE_CHUNK_AS_DEFAULT);
+@@ -262,6 +276,72 @@
+ }
+ #endif /* SEQUENTIAL_READ */
+
++#ifdef PNG_READ_APNG_SUPPORTED
++void PNGAPI
++png_read_frame_head(png_structp png_ptr, png_infop info_ptr)
++{
++ png_byte have_chunk_after_DAT; /* after IDAT or after fdAT */
++
++ png_debug(0, "Reading frame head");
++
++ if (!(png_ptr->mode & PNG_HAVE_acTL))
++ png_error(png_ptr, "attempt to png_read_frame_head() but "
++ "no acTL present");
++
++ /* do nothing for the main IDAT */
++ if (png_ptr->num_frames_read == 0)
++ return;
++
++ png_read_reset(png_ptr);
++ png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
++ png_ptr->mode &= ~PNG_HAVE_fcTL;
++
++ have_chunk_after_DAT = 0;
++ for (;;)
++ {
++ png_uint_32 length = png_read_chunk_header(png_ptr);
++
++ if (png_ptr->chunk_name == png_IDAT)
++ {
++ /* discard trailing IDATs for the first frame */
++ if (have_chunk_after_DAT || png_ptr->num_frames_read > 1)
++ png_error(png_ptr, "png_read_frame_head(): out of place IDAT");
++ png_crc_finish(png_ptr, length);
++ }
++
++ else if (png_ptr->chunk_name == png_fcTL)
++ {
++ png_handle_fcTL(png_ptr, info_ptr, length);
++ have_chunk_after_DAT = 1;
++ }
++
++ else if (png_ptr->chunk_name == png_fdAT)
++ {
++ png_ensure_sequence_number(png_ptr, length);
++
++ /* discard trailing fdATs for frames other than the first */
++ if (!have_chunk_after_DAT && png_ptr->num_frames_read > 1)
++ png_crc_finish(png_ptr, length - 4);
++ else if(png_ptr->mode & PNG_HAVE_fcTL)
++ {
++ png_ptr->idat_size = length - 4;
++ png_ptr->mode |= PNG_HAVE_IDAT;
++
++ break;
++ }
++ else
++ png_error(png_ptr, "png_read_frame_head(): out of place fdAT");
++ }
++ else
++ {
++ png_warning(png_ptr, "Skipped (ignored) a chunk "
++ "between APNG chunks");
++ png_crc_finish(png_ptr, length);
++ }
++ }
++}
++#endif /* PNG_READ_APNG_SUPPORTED */
++
+ /* Optional call to update the users info_ptr structure */
+ void PNGAPI
+ png_read_update_info(png_structrp png_ptr, png_inforp info_ptr)
+diff -Naru libpng-1.6.37.org/pngrutil.c libpng-1.6.37/pngrutil.c
+--- libpng-1.6.37.org/pngrutil.c 2019-04-19 07:21:37.401024761 +0900
++++ libpng-1.6.37/pngrutil.c 2019-04-19 07:22:37.853245862 +0900
+@@ -865,6 +865,11 @@
+ filter_type = buf[11];
+ interlace_type = buf[12];
+
++#ifdef PNG_READ_APNG_SUPPORTED
++ png_ptr->first_frame_width = width;
++ png_ptr->first_frame_height = height;
++#endif
++
+ /* Set internal variables */
+ png_ptr->width = width;
+ png_ptr->height = height;
+@@ -2857,6 +2862,179 @@
+ }
+ #endif
+
++#ifdef PNG_READ_APNG_SUPPORTED
++void /* PRIVATE */
++png_handle_acTL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
++{
++ png_byte data[8];
++ png_uint_32 num_frames;
++ png_uint_32 num_plays;
++ png_uint_32 didSet;
++
++ png_debug(1, "in png_handle_acTL");
++
++ if (!(png_ptr->mode & PNG_HAVE_IHDR))
++ {
++ png_error(png_ptr, "Missing IHDR before acTL");
++ }
++ else if (png_ptr->mode & PNG_HAVE_IDAT)
++ {
++ png_warning(png_ptr, "Invalid acTL after IDAT skipped");
++ png_crc_finish(png_ptr, length);
++ return;
++ }
++ else if (png_ptr->mode & PNG_HAVE_acTL)
++ {
++ png_warning(png_ptr, "Duplicate acTL skipped");
++ png_crc_finish(png_ptr, length);
++ return;
++ }
++ else if (length != 8)
++ {
++ png_warning(png_ptr, "acTL with invalid length skipped");
++ png_crc_finish(png_ptr, length);
++ return;
++ }
++
++ png_crc_read(png_ptr, data, 8);
++ png_crc_finish(png_ptr, 0);
++
++ num_frames = png_get_uint_31(png_ptr, data);
++ num_plays = png_get_uint_31(png_ptr, data + 4);
++
++ /* the set function will do error checking on num_frames */
++ didSet = png_set_acTL(png_ptr, info_ptr, num_frames, num_plays);
++ if(didSet)
++ png_ptr->mode |= PNG_HAVE_acTL;
++}
++
++void /* PRIVATE */
++png_handle_fcTL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
++{
++ png_byte data[22];
++ png_uint_32 width;
++ png_uint_32 height;
++ png_uint_32 x_offset;
++ png_uint_32 y_offset;
++ png_uint_16 delay_num;
++ png_uint_16 delay_den;
++ png_byte dispose_op;
++ png_byte blend_op;
++
++ png_debug(1, "in png_handle_fcTL");
++
++ png_ensure_sequence_number(png_ptr, length);
++
++ if (!(png_ptr->mode & PNG_HAVE_IHDR))
++ {
++ png_error(png_ptr, "Missing IHDR before fcTL");
++ }
++ else if (png_ptr->mode & PNG_HAVE_IDAT)
++ {
++ /* for any frames other then the first this message may be misleading,
++ * but correct. PNG_HAVE_IDAT is unset before the frame head is read
++ * i can't think of a better message */
++ png_warning(png_ptr, "Invalid fcTL after IDAT skipped");
++ png_crc_finish(png_ptr, length-4);
++ return;
++ }
++ else if (png_ptr->mode & PNG_HAVE_fcTL)
++ {
++ png_warning(png_ptr, "Duplicate fcTL within one frame skipped");
++ png_crc_finish(png_ptr, length-4);
++ return;
++ }
++ else if (length != 26)
++ {
++ png_warning(png_ptr, "fcTL with invalid length skipped");
++ png_crc_finish(png_ptr, length-4);
++ return;
++ }
++
++ png_crc_read(png_ptr, data, 22);
++ png_crc_finish(png_ptr, 0);
++
++ width = png_get_uint_31(png_ptr, data);
++ height = png_get_uint_31(png_ptr, data + 4);
++ x_offset = png_get_uint_31(png_ptr, data + 8);
++ y_offset = png_get_uint_31(png_ptr, data + 12);
++ delay_num = png_get_uint_16(data + 16);
++ delay_den = png_get_uint_16(data + 18);
++ dispose_op = data[20];
++ blend_op = data[21];
++
++ if (png_ptr->num_frames_read == 0 && (x_offset != 0 || y_offset != 0))
++ {
++ png_warning(png_ptr, "fcTL for the first frame must have zero offset");
++ return;
++ }
++
++ if (info_ptr != NULL)
++ {
++ if (png_ptr->num_frames_read == 0 &&
++ (width != info_ptr->width || height != info_ptr->height))
++ {
++ png_warning(png_ptr, "size in first frame's fcTL must match "
++ "the size in IHDR");
++ return;
++ }
++
++ /* The set function will do more error checking */
++ png_set_next_frame_fcTL(png_ptr, info_ptr, width, height,
++ x_offset, y_offset, delay_num, delay_den,
++ dispose_op, blend_op);
++
++ png_read_reinit(png_ptr, info_ptr);
++
++ png_ptr->mode |= PNG_HAVE_fcTL;
++ }
++}
++
++void /* PRIVATE */
++png_have_info(png_structp png_ptr, png_infop info_ptr)
++{
++ if((info_ptr->valid & PNG_INFO_acTL) && !(info_ptr->valid & PNG_INFO_fcTL))
++ {
++ png_ptr->apng_flags |= PNG_FIRST_FRAME_HIDDEN;
++ info_ptr->num_frames++;
++ }
++}
++
++void /* PRIVATE */
++png_handle_fdAT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
++{
++ png_ensure_sequence_number(png_ptr, length);
++
++ /* This function is only called from png_read_end(), png_read_info(),
++ * and png_push_read_chunk() which means that:
++ * - the user doesn't want to read this frame
++ * - or this is an out-of-place fdAT
++ * in either case it is safe to ignore the chunk with a warning */
++ png_warning(png_ptr, "ignoring fdAT chunk");
++ png_crc_finish(png_ptr, length - 4);
++ PNG_UNUSED(info_ptr)
++}
++
++void /* PRIVATE */
++png_ensure_sequence_number(png_structp png_ptr, png_uint_32 length)
++{
++ png_byte data[4];
++ png_uint_32 sequence_number;
++
++ if (length < 4)
++ png_error(png_ptr, "invalid fcTL or fdAT chunk found");
++
++ png_crc_read(png_ptr, data, 4);
++ sequence_number = png_get_uint_31(png_ptr, data);
++
++ if (sequence_number != png_ptr->next_seq_num)
++ png_error(png_ptr, "fcTL or fdAT chunk with out-of-order sequence "
++ "number found");
++
++ png_ptr->next_seq_num++;
++}
++#endif /* PNG_READ_APNG_SUPPORTED */
++
+ #ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
+ /* Utility function for png_handle_unknown; set up png_ptr::unknown_chunk */
+ static int
+@@ -4165,7 +4343,38 @@
+ {
+ uInt avail_in;
+ png_bytep buffer;
++#ifdef PNG_READ_APNG_SUPPORTED
++ png_uint_32 bytes_to_skip = 0;
++
++ while (png_ptr->idat_size == 0 || bytes_to_skip != 0)
++ {
++ png_crc_finish(png_ptr, bytes_to_skip);
++ bytes_to_skip = 0;
+
++ png_ptr->idat_size = png_read_chunk_header(png_ptr);
++ if (png_ptr->num_frames_read == 0)
++ {
++ if (png_ptr->chunk_name != png_IDAT)
++ png_error(png_ptr, "Not enough image data");
++ }
++ else
++ {
++ if (png_ptr->chunk_name == png_IEND)
++ png_error(png_ptr, "Not enough image data");
++ if (png_ptr->chunk_name != png_fdAT)
++ {
++ png_warning(png_ptr, "Skipped (ignored) a chunk "
++ "between APNG chunks");
++ bytes_to_skip = png_ptr->idat_size;
++ continue;
++ }
++
++ png_ensure_sequence_number(png_ptr, png_ptr->idat_size);
++
++ png_ptr->idat_size -= 4;
++ }
++ }
++#else
+ while (png_ptr->idat_size == 0)
+ {
+ png_crc_finish(png_ptr, 0);
+@@ -4177,7 +4386,7 @@
+ if (png_ptr->chunk_name != png_IDAT)
+ png_error(png_ptr, "Not enough image data");
+ }
+-
++#endif /* PNG_READ_APNG_SUPPORTED */
+ avail_in = png_ptr->IDAT_read_size;
+
+ if (avail_in > png_ptr->idat_size)
+@@ -4240,6 +4449,9 @@
+
+ png_ptr->mode |= PNG_AFTER_IDAT;
+ png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED;
++#ifdef PNG_READ_APNG_SUPPORTED
++ png_ptr->num_frames_read++;
++#endif
+
+ if (png_ptr->zstream.avail_in > 0 || png_ptr->idat_size > 0)
+ png_chunk_benign_error(png_ptr, "Extra compressed data");
+@@ -4678,4 +4890,80 @@
+
+ png_ptr->flags |= PNG_FLAG_ROW_INIT;
+ }
++
++#ifdef PNG_READ_APNG_SUPPORTED
++/* This function is to be called after the main IDAT set has been read and
++ * before a new IDAT is read. It resets some parts of png_ptr
++ * to make them usable by the read functions again */
++void /* PRIVATE */
++png_read_reset(png_structp png_ptr)
++{
++ png_ptr->mode &= ~PNG_HAVE_IDAT;
++ png_ptr->mode &= ~PNG_AFTER_IDAT;
++ png_ptr->row_number = 0;
++ png_ptr->pass = 0;
++}
++
++void /* PRIVATE */
++png_read_reinit(png_structp png_ptr, png_infop info_ptr)
++{
++ png_ptr->width = info_ptr->next_frame_width;
++ png_ptr->height = info_ptr->next_frame_height;
++ png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth,png_ptr->width);
++ png_ptr->info_rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth,
++ png_ptr->width);
++ if (png_ptr->prev_row)
++ memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1);
++}
++
++#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
++/* same as png_read_reset() but for the progressive reader */
++void /* PRIVATE */
++png_progressive_read_reset(png_structp png_ptr)
++{
++#ifdef PNG_READ_INTERLACING_SUPPORTED
++ /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
++
++ /* Start of interlace block */
++ const int png_pass_start[] = {0, 4, 0, 2, 0, 1, 0};
++
++ /* Offset to next interlace block */
++ const int png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1};
++
++ /* Start of interlace block in the y direction */
++ const int png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1};
++
++ /* Offset to next interlace block in the y direction */
++ const int png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2};
++
++ if (png_ptr->interlaced)
++ {
++ if (!(png_ptr->transformations & PNG_INTERLACE))
++ png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 -
++ png_pass_ystart[0]) / png_pass_yinc[0];
++ else
++ png_ptr->num_rows = png_ptr->height;
++
++ png_ptr->iwidth = (png_ptr->width +
++ png_pass_inc[png_ptr->pass] - 1 -
++ png_pass_start[png_ptr->pass]) /
++ png_pass_inc[png_ptr->pass];
++ }
++ else
++#endif /* PNG_READ_INTERLACING_SUPPORTED */
++ {
++ png_ptr->num_rows = png_ptr->height;
++ png_ptr->iwidth = png_ptr->width;
++ }
++ png_ptr->flags &= ~PNG_FLAG_ZSTREAM_ENDED;
++ if (inflateReset(&(png_ptr->zstream)) != Z_OK)
++ png_error(png_ptr, "inflateReset failed");
++ png_ptr->zstream.avail_in = 0;
++ png_ptr->zstream.next_in = 0;
++ png_ptr->zstream.next_out = png_ptr->row_buf;
++ png_ptr->zstream.avail_out = (uInt)PNG_ROWBYTES(png_ptr->pixel_depth,
++ png_ptr->iwidth) + 1;
++}
++#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
++#endif /* PNG_READ_APNG_SUPPORTED */
+ #endif /* READ */
+diff -Naru libpng-1.6.37.org/pngset.c libpng-1.6.37/pngset.c
+--- libpng-1.6.37.org/pngset.c 2019-04-19 07:21:37.401024761 +0900
++++ libpng-1.6.37/pngset.c 2019-04-19 07:22:37.858245798 +0900
+@@ -288,6 +288,11 @@
+ info_ptr->pixel_depth = (png_byte)(info_ptr->channels * info_ptr->bit_depth);
+
+ info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, width);
++
++#ifdef PNG_APNG_SUPPORTED
++ /* for non-animated png. this may be overwritten from an acTL chunk later */
++ info_ptr->num_frames = 1;
++#endif
+ }
+
+ #ifdef PNG_oFFs_SUPPORTED
+@@ -1158,6 +1163,147 @@
+ }
+ #endif /* sPLT */
+
++#ifdef PNG_APNG_SUPPORTED
++png_uint_32 PNGAPI
++png_set_acTL(png_structp png_ptr, png_infop info_ptr,
++ png_uint_32 num_frames, png_uint_32 num_plays)
++{
++ png_debug1(1, "in %s storage function", "acTL");
++
++ if (png_ptr == NULL || info_ptr == NULL)
++ {
++ png_warning(png_ptr,
++ "Call to png_set_acTL() with NULL png_ptr "
++ "or info_ptr ignored");
++ return (0);
++ }
++ if (num_frames == 0)
++ {
++ png_warning(png_ptr,
++ "Ignoring attempt to set acTL with num_frames zero");
++ return (0);
++ }
++ if (num_frames > PNG_UINT_31_MAX)
++ {
++ png_warning(png_ptr,
++ "Ignoring attempt to set acTL with num_frames > 2^31-1");
++ return (0);
++ }
++ if (num_plays > PNG_UINT_31_MAX)
++ {
++ png_warning(png_ptr,
++ "Ignoring attempt to set acTL with num_plays "
++ "> 2^31-1");
++ return (0);
++ }
++
++ info_ptr->num_frames = num_frames;
++ info_ptr->num_plays = num_plays;
++
++ info_ptr->valid |= PNG_INFO_acTL;
++
++ return (1);
++}
++
++/* delay_num and delay_den can hold any 16-bit values including zero */
++png_uint_32 PNGAPI
++png_set_next_frame_fcTL(png_structp png_ptr, png_infop info_ptr,
++ png_uint_32 width, png_uint_32 height,
++ png_uint_32 x_offset, png_uint_32 y_offset,
++ png_uint_16 delay_num, png_uint_16 delay_den,
++ png_byte dispose_op, png_byte blend_op)
++{
++ png_debug1(1, "in %s storage function", "fcTL");
++
++ if (png_ptr == NULL || info_ptr == NULL)
++ {
++ png_warning(png_ptr,
++ "Call to png_set_fcTL() with NULL png_ptr or info_ptr "
++ "ignored");
++ return (0);
++ }
++
++ png_ensure_fcTL_is_valid(png_ptr, width, height, x_offset, y_offset,
++ delay_num, delay_den, dispose_op, blend_op);
++
++ if (blend_op == PNG_BLEND_OP_OVER)
++ {
++ if (!(png_ptr->color_type & PNG_COLOR_MASK_ALPHA) &&
++ !(png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)))
++ {
++ png_warning(png_ptr, "PNG_BLEND_OP_OVER is meaningless "
++ "and wasteful for opaque images, ignored");
++ blend_op = PNG_BLEND_OP_SOURCE;
++ }
++ }
++
++ info_ptr->next_frame_width = width;
++ info_ptr->next_frame_height = height;
++ info_ptr->next_frame_x_offset = x_offset;
++ info_ptr->next_frame_y_offset = y_offset;
++ info_ptr->next_frame_delay_num = delay_num;
++ info_ptr->next_frame_delay_den = delay_den;
++ info_ptr->next_frame_dispose_op = dispose_op;
++ info_ptr->next_frame_blend_op = blend_op;
++
++ info_ptr->valid |= PNG_INFO_fcTL;
++
++ return (1);
++}
++
++void /* PRIVATE */
++png_ensure_fcTL_is_valid(png_structp png_ptr,
++ png_uint_32 width, png_uint_32 height,
++ png_uint_32 x_offset, png_uint_32 y_offset,
++ png_uint_16 delay_num, png_uint_16 delay_den,
++ png_byte dispose_op, png_byte blend_op)
++{
++ if (width == 0 || width > PNG_UINT_31_MAX)
++ png_error(png_ptr, "invalid width in fcTL (> 2^31-1)");
++ if (height == 0 || height > PNG_UINT_31_MAX)
++ png_error(png_ptr, "invalid height in fcTL (> 2^31-1)");
++ if (x_offset > PNG_UINT_31_MAX)
++ png_error(png_ptr, "invalid x_offset in fcTL (> 2^31-1)");
++ if (y_offset > PNG_UINT_31_MAX)
++ png_error(png_ptr, "invalid y_offset in fcTL (> 2^31-1)");
++ if (width + x_offset > png_ptr->first_frame_width ||
++ height + y_offset > png_ptr->first_frame_height)
++ png_error(png_ptr, "dimensions of a frame are greater than"
++ "the ones in IHDR");
++
++ if (dispose_op != PNG_DISPOSE_OP_NONE &&
++ dispose_op != PNG_DISPOSE_OP_BACKGROUND &&
++ dispose_op != PNG_DISPOSE_OP_PREVIOUS)
++ png_error(png_ptr, "invalid dispose_op in fcTL");
++
++ if (blend_op != PNG_BLEND_OP_SOURCE &&
++ blend_op != PNG_BLEND_OP_OVER)
++ png_error(png_ptr, "invalid blend_op in fcTL");
++
++ PNG_UNUSED(delay_num)
++ PNG_UNUSED(delay_den)
++}
++
++png_uint_32 PNGAPI
++png_set_first_frame_is_hidden(png_structp png_ptr, png_infop info_ptr,
++ png_byte is_hidden)
++{
++ png_debug(1, "in png_first_frame_is_hidden()");
++
++ if (png_ptr == NULL)
++ return 0;
++
++ if (is_hidden)
++ png_ptr->apng_flags |= PNG_FIRST_FRAME_HIDDEN;
++ else
++ png_ptr->apng_flags &= ~PNG_FIRST_FRAME_HIDDEN;
++
++ PNG_UNUSED(info_ptr)
++
++ return 1;
++}
++#endif /* PNG_APNG_SUPPORTED */
++
+ #ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED
+ static png_byte
+ check_location(png_const_structrp png_ptr, int location)
+diff -Naru libpng-1.6.37.org/pngstruct.h libpng-1.6.37/pngstruct.h
+--- libpng-1.6.37.org/pngstruct.h 2019-04-19 07:21:37.401024761 +0900
++++ libpng-1.6.37/pngstruct.h 2019-04-19 07:22:37.854245849 +0900
+@@ -409,6 +409,27 @@
+ png_byte filter_type;
+ #endif
+
++#ifdef PNG_APNG_SUPPORTED
++ png_uint_32 apng_flags;
++ png_uint_32 next_seq_num; /* next fcTL/fdAT chunk sequence number */
++ png_uint_32 first_frame_width;
++ png_uint_32 first_frame_height;
++
++#ifdef PNG_READ_APNG_SUPPORTED
++ png_uint_32 num_frames_read; /* incremented after all image data of */
++ /* a frame is read */
++#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
++ png_progressive_frame_ptr frame_info_fn; /* frame info read callback */
++ png_progressive_frame_ptr frame_end_fn; /* frame data read callback */
++#endif
++#endif
++
++#ifdef PNG_WRITE_APNG_SUPPORTED
++ png_uint_32 num_frames_to_write;
++ png_uint_32 num_frames_written;
++#endif
++#endif /* PNG_APNG_SUPPORTED */
++
+ /* New members added in libpng-1.2.0 */
+
+ /* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */
+diff -Naru libpng-1.6.37.org/pngtest.c libpng-1.6.37/pngtest.c
+--- libpng-1.6.37.org/pngtest.c 2019-04-19 07:21:37.401024761 +0900
++++ libpng-1.6.37/pngtest.c 2019-04-19 07:22:37.854245849 +0900
+@@ -875,6 +875,10 @@
+ volatile int num_passes;
+ int pass;
+ int bit_depth, color_type;
++#ifdef PNG_APNG_SUPPORTED
++ png_uint_32 num_frames;
++ png_uint_32 num_plays;
++#endif
+
+ row_buf = NULL;
+ error_parameters.file_name = inname;
+@@ -1383,6 +1387,22 @@
+ }
+ }
+ #endif
++
++#ifdef PNG_APNG_SUPPORTED
++ if (png_get_valid(read_ptr, read_info_ptr, PNG_INFO_acTL))
++ {
++ if (png_get_acTL(read_ptr, read_info_ptr, &num_frames, &num_plays))
++ {
++ png_byte is_hidden;
++ pngtest_debug2("Handling acTL chunks (frames %ld, plays %ld)",
++ num_frames, num_plays);
++ png_set_acTL(write_ptr, write_info_ptr, num_frames, num_plays);
++ is_hidden = png_get_first_frame_is_hidden(read_ptr, read_info_ptr);
++ png_set_first_frame_is_hidden(write_ptr, write_info_ptr, is_hidden);
++ }
++ }
++#endif
++
+ #ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
+ {
+ png_unknown_chunkp unknowns;
+@@ -1463,6 +1483,110 @@
+ t_misc += (t_stop - t_start);
+ t_start = t_stop;
+ #endif
++#ifdef PNG_APNG_SUPPORTED
++ if (png_get_valid(read_ptr, read_info_ptr, PNG_INFO_acTL))
++ {
++ png_uint_32 frame;
++ for (frame = 0; frame < num_frames; frame++)
++ {
++ png_uint_32 frame_width;
++ png_uint_32 frame_height;
++ png_uint_32 x_offset;
++ png_uint_32 y_offset;
++ png_uint_16 delay_num;
++ png_uint_16 delay_den;
++ png_byte dispose_op;
++ png_byte blend_op;
++ png_read_frame_head(read_ptr, read_info_ptr);
++ if (png_get_valid(read_ptr, read_info_ptr, PNG_INFO_fcTL))
++ {
++ png_get_next_frame_fcTL(read_ptr, read_info_ptr,
++ &frame_width, &frame_height,
++ &x_offset, &y_offset,
++ &delay_num, &delay_den,
++ &dispose_op, &blend_op);
++ }
++ else
++ {
++ frame_width = width;
++ frame_height = height;
++ x_offset = 0;
++ y_offset = 0;
++ delay_num = 1;
++ delay_den = 1;
++ dispose_op = PNG_DISPOSE_OP_NONE;
++ blend_op = PNG_BLEND_OP_SOURCE;
++ }
++#ifdef PNG_WRITE_APNG_SUPPORTED
++ png_write_frame_head(write_ptr, write_info_ptr, (png_bytepp)&row_buf,
++ frame_width, frame_height,
++ x_offset, y_offset,
++ delay_num, delay_den,
++ dispose_op, blend_op);
++#endif
++ for (pass = 0; pass < num_passes; pass++)
++ {
++# ifdef calc_pass_height
++ png_uint_32 pass_height;
++
++ if (num_passes == 7) /* interlaced */
++ {
++ if (PNG_PASS_COLS(frame_width, pass) > 0)
++ pass_height = PNG_PASS_ROWS(frame_height, pass);
++
++ else
++ pass_height = 0;
++ }
++
++ else /* not interlaced */
++ pass_height = frame_height;
++# else
++# define pass_height frame_height
++# endif
++
++ pngtest_debug1("Writing row data for pass %d", pass);
++ for (y = 0; y < pass_height; y++)
++ {
++#ifndef SINGLE_ROWBUF_ALLOC
++ pngtest_debug2("Allocating row buffer (pass %d, y = %u)...", pass, y);
++
++ row_buf = (png_bytep)png_malloc(read_ptr,
++ png_get_rowbytes(read_ptr, read_info_ptr));
++
++ pngtest_debug2("\t0x%08lx (%lu bytes)", (unsigned long)row_buf,
++ (unsigned long)png_get_rowbytes(read_ptr, read_info_ptr));
++
++#endif /* !SINGLE_ROWBUF_ALLOC */
++ png_read_rows(read_ptr, (png_bytepp)&row_buf, NULL, 1);
++
++#ifdef PNG_WRITE_SUPPORTED
++#ifdef PNGTEST_TIMING
++ t_stop = (float)clock();
++ t_decode += (t_stop - t_start);
++ t_start = t_stop;
++#endif
++ png_write_rows(write_ptr, (png_bytepp)&row_buf, 1);
++#ifdef PNGTEST_TIMING
++ t_stop = (float)clock();
++ t_encode += (t_stop - t_start);
++ t_start = t_stop;
++#endif
++#endif /* PNG_WRITE_SUPPORTED */
++
++#ifndef SINGLE_ROWBUF_ALLOC
++ pngtest_debug2("Freeing row buffer (pass %d, y = %u)", pass, y);
++ png_free(read_ptr, row_buf);
++ row_buf = NULL;
++#endif /* !SINGLE_ROWBUF_ALLOC */
++ }
++ }
++#ifdef PNG_WRITE_APNG_SUPPORTED
++ png_write_frame_tail(write_ptr, write_info_ptr);
++#endif
++ }
++ }
++ else
++#endif
+ for (pass = 0; pass < num_passes; pass++)
+ {
+ # ifdef calc_pass_height
+diff -Naru libpng-1.6.37.org/pngwrite.c libpng-1.6.37/pngwrite.c
+--- libpng-1.6.37.org/pngwrite.c 2019-04-19 07:21:37.402024748 +0900
++++ libpng-1.6.37/pngwrite.c 2019-04-19 07:22:37.855245836 +0900
+@@ -128,6 +128,10 @@
+ * the application continues writing the PNG. So check the 'invalid'
+ * flag here too.
+ */
++#ifdef PNG_WRITE_APNG_SUPPORTED
++ if (info_ptr->valid & PNG_INFO_acTL)
++ png_write_acTL(png_ptr, info_ptr->num_frames, info_ptr->num_plays);
++#endif
+ #ifdef PNG_GAMMA_SUPPORTED
+ # ifdef PNG_WRITE_gAMA_SUPPORTED
+ if ((info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) == 0 &&
+@@ -370,6 +374,11 @@
+ png_benign_error(png_ptr, "Wrote palette index exceeding num_palette");
+ #endif
+
++#ifdef PNG_WRITE_APNG_SUPPORTED
++ if (png_ptr->num_frames_written != png_ptr->num_frames_to_write)
++ png_error(png_ptr, "Not enough frames written");
++#endif
++
+ /* See if user wants us to write information chunks */
+ if (info_ptr != NULL)
+ {
+@@ -1461,6 +1470,43 @@
+ }
+ #endif
+
++#ifdef PNG_WRITE_APNG_SUPPORTED
++void PNGAPI
++png_write_frame_head(png_structp png_ptr, png_infop info_ptr,
++ png_bytepp row_pointers, png_uint_32 width, png_uint_32 height,
++ png_uint_32 x_offset, png_uint_32 y_offset,
++ png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op,
++ png_byte blend_op)
++{
++ png_debug(1, "in png_write_frame_head");
++
++ /* there is a chance this has been set after png_write_info was called,
++ * so it would be set but not written. is there a way to be sure? */
++ if (!(info_ptr->valid & PNG_INFO_acTL))
++ png_error(png_ptr, "png_write_frame_head(): acTL not set");
++
++ png_write_reset(png_ptr);
++
++ png_write_reinit(png_ptr, info_ptr, width, height);
++
++ if ( !(png_ptr->num_frames_written == 0 &&
++ (png_ptr->apng_flags & PNG_FIRST_FRAME_HIDDEN) ) )
++ png_write_fcTL(png_ptr, width, height, x_offset, y_offset,
++ delay_num, delay_den, dispose_op, blend_op);
++
++ PNG_UNUSED(row_pointers)
++}
++
++void PNGAPI
++png_write_frame_tail(png_structp png_ptr, png_infop info_ptr)
++{
++ png_debug(1, "in png_write_frame_tail");
++
++ png_ptr->num_frames_written++;
++
++ PNG_UNUSED(info_ptr)
++}
++#endif /* PNG_WRITE_APNG_SUPPORTED */
+
+ #ifdef PNG_SIMPLIFIED_WRITE_SUPPORTED
+ /* Initialize the write structure - general purpose utility. */
+diff -Naru libpng-1.6.37.org/pngwutil.c libpng-1.6.37/pngwutil.c
+--- libpng-1.6.37.org/pngwutil.c 2019-04-19 07:21:37.402024748 +0900
++++ libpng-1.6.37/pngwutil.c 2019-04-19 07:22:37.867245682 +0900
+@@ -821,6 +821,11 @@
+ /* Write the chunk */
+ png_write_complete_chunk(png_ptr, png_IHDR, buf, 13);
+
++#ifdef PNG_WRITE_APNG_SUPPORTED
++ png_ptr->first_frame_width = width;
++ png_ptr->first_frame_height = height;
++#endif
++
+ if ((png_ptr->do_filter) == PNG_NO_FILTERS)
+ {
+ if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE ||
+@@ -1002,8 +1007,17 @@
+ optimize_cmf(data, png_image_size(png_ptr));
+ #endif
+
+- if (size > 0)
+- png_write_complete_chunk(png_ptr, png_IDAT, data, size);
++ if (size > 0)
++#ifdef PNG_WRITE_APNG_SUPPORTED
++ {
++ if (png_ptr->num_frames_written == 0)
++#endif
++ png_write_complete_chunk(png_ptr, png_IDAT, data, size);
++#ifdef PNG_WRITE_APNG_SUPPORTED
++ else
++ png_write_fdAT(png_ptr, data, size);
++ }
++#endif /* PNG_WRITE_APNG_SUPPORTED */
+ png_ptr->mode |= PNG_HAVE_IDAT;
+
+ png_ptr->zstream.next_out = data;
+@@ -1050,7 +1064,17 @@
+ #endif
+
+ if (size > 0)
++#ifdef PNG_WRITE_APNG_SUPPORTED
++ {
++ if (png_ptr->num_frames_written == 0)
++#endif
+ png_write_complete_chunk(png_ptr, png_IDAT, data, size);
++#ifdef PNG_WRITE_APNG_SUPPORTED
++ else
++ png_write_fdAT(png_ptr, data, size);
++ }
++#endif /* PNG_WRITE_APNG_SUPPORTED */
++
+ png_ptr->zstream.avail_out = 0;
+ png_ptr->zstream.next_out = NULL;
+ png_ptr->mode |= PNG_HAVE_IDAT | PNG_AFTER_IDAT;
+@@ -1885,6 +1909,82 @@
+ }
+ #endif
+
++#ifdef PNG_WRITE_APNG_SUPPORTED
++void /* PRIVATE */
++png_write_acTL(png_structp png_ptr,
++ png_uint_32 num_frames, png_uint_32 num_plays)
++{
++ png_byte buf[8];
++
++ png_debug(1, "in png_write_acTL");
++
++ png_ptr->num_frames_to_write = num_frames;
++
++ if (png_ptr->apng_flags & PNG_FIRST_FRAME_HIDDEN)
++ num_frames--;
++
++ png_save_uint_32(buf, num_frames);
++ png_save_uint_32(buf + 4, num_plays);
++
++ png_write_complete_chunk(png_ptr, png_acTL, buf, (png_size_t)8);
++}
++
++void /* PRIVATE */
++png_write_fcTL(png_structp png_ptr, png_uint_32 width, png_uint_32 height,
++ png_uint_32 x_offset, png_uint_32 y_offset,
++ png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op,
++ png_byte blend_op)
++{
++ png_byte buf[26];
++
++ png_debug(1, "in png_write_fcTL");
++
++ if (png_ptr->num_frames_written == 0 && (x_offset != 0 || y_offset != 0))
++ png_error(png_ptr, "x and/or y offset for the first frame aren't 0");
++ if (png_ptr->num_frames_written == 0 &&
++ (width != png_ptr->first_frame_width ||
++ height != png_ptr->first_frame_height))
++ png_error(png_ptr, "width and/or height in the first frame's fcTL "
++ "don't match the ones in IHDR");
++
++ /* more error checking */
++ png_ensure_fcTL_is_valid(png_ptr, width, height, x_offset, y_offset,
++ delay_num, delay_den, dispose_op, blend_op);
++
++ png_save_uint_32(buf, png_ptr->next_seq_num);
++ png_save_uint_32(buf + 4, width);
++ png_save_uint_32(buf + 8, height);
++ png_save_uint_32(buf + 12, x_offset);
++ png_save_uint_32(buf + 16, y_offset);
++ png_save_uint_16(buf + 20, delay_num);
++ png_save_uint_16(buf + 22, delay_den);
++ buf[24] = dispose_op;
++ buf[25] = blend_op;
++
++ png_write_complete_chunk(png_ptr, png_fcTL, buf, (png_size_t)26);
++
++ png_ptr->next_seq_num++;
++}
++
++void /* PRIVATE */
++png_write_fdAT(png_structp png_ptr,
++ png_const_bytep data, png_size_t length)
++{
++ png_byte buf[4];
++
++ png_write_chunk_header(png_ptr, png_fdAT, (png_uint_32)(4 + length));
++
++ png_save_uint_32(buf, png_ptr->next_seq_num);
++ png_write_chunk_data(png_ptr, buf, 4);
++
++ png_write_chunk_data(png_ptr, data, length);
++
++ png_write_chunk_end(png_ptr);
++
++ png_ptr->next_seq_num++;
++}
++#endif /* PNG_WRITE_APNG_SUPPORTED */
++
+ /* Initializes the row writing capability of libpng */
+ void /* PRIVATE */
+ png_write_start_row(png_structrp png_ptr)
+@@ -2778,4 +2878,39 @@
+ }
+ #endif /* WRITE_FLUSH */
+ }
++
++#ifdef PNG_WRITE_APNG_SUPPORTED
++void /* PRIVATE */
++png_write_reset(png_structp png_ptr)
++{
++ png_ptr->row_number = 0;
++ png_ptr->pass = 0;
++ png_ptr->mode &= ~PNG_HAVE_IDAT;
++}
++
++void /* PRIVATE */
++png_write_reinit(png_structp png_ptr, png_infop info_ptr,
++ png_uint_32 width, png_uint_32 height)
++{
++ if (png_ptr->num_frames_written == 0 &&
++ (width != png_ptr->first_frame_width ||
++ height != png_ptr->first_frame_height))
++ png_error(png_ptr, "width and/or height in the first frame's fcTL "
++ "don't match the ones in IHDR");
++ if (width > png_ptr->first_frame_width ||
++ height > png_ptr->first_frame_height)
++ png_error(png_ptr, "width and/or height for a frame greater than"
++ "the ones in IHDR");
++
++ png_set_IHDR(png_ptr, info_ptr, width, height,
++ info_ptr->bit_depth, info_ptr->color_type,
++ info_ptr->interlace_type, info_ptr->compression_type,
++ info_ptr->filter_type);
++
++ png_ptr->width = width;
++ png_ptr->height = height;
++ png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, width);
++ png_ptr->usr_width = png_ptr->width;
++}
++#endif /* PNG_WRITE_APNG_SUPPORTED */
+ #endif /* WRITE */
+diff -Naru libpng-1.6.37.org/scripts/symbols.def libpng-1.6.37/scripts/symbols.def
+--- libpng-1.6.37.org/scripts/symbols.def 2019-04-19 07:21:37.405024710 +0900
++++ libpng-1.6.37/scripts/symbols.def 2019-04-19 07:22:37.856245823 +0900
+@@ -253,3 +253,23 @@
+ png_set_eXIf @247
+ png_get_eXIf_1 @248
+ png_set_eXIf_1 @249
++ png_get_acTL @250
++ png_set_acTL @251
++ png_get_num_frames @252
++ png_get_num_plays @253
++ png_get_next_frame_fcTL @254
++ png_set_next_frame_fcTL @255
++ png_get_next_frame_width @256
++ png_get_next_frame_height @257
++ png_get_next_frame_x_offset @258
++ png_get_next_frame_y_offset @259
++ png_get_next_frame_delay_num @260
++ png_get_next_frame_delay_den @261
++ png_get_next_frame_dispose_op @262
++ png_get_next_frame_blend_op @263
++ png_get_first_frame_is_hidden @264
++ png_set_first_frame_is_hidden @265
++ png_read_frame_head @266
++ png_set_progressive_frame_fn @267
++ png_write_frame_head @268
++ png_write_frame_tail @269
diff --git a/extra/libretls/test_program.c b/extra/libretls/test_program.c
new file mode 100644
index 0000000..f8d7332
--- /dev/null
+++ b/extra/libretls/test_program.c
@@ -0,0 +1,11 @@
+#include <stdlib.h>
+#include <assert.h>
+#include <tls.h>
+
+int
+main(int argc, const char *argv[])
+{
+ assert(tls_init() == 0);
+
+ return EXIT_SUCCESS;
+}
diff --git a/extra/libsrt/fix-cmake.patch b/extra/libsrt/fix-cmake.patch
new file mode 100644
index 0000000..6193da2
--- /dev/null
+++ b/extra/libsrt/fix-cmake.patch
@@ -0,0 +1,39 @@
+Upstream: Should be, and they should fix it
+Reason: Fixes a few issues
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index ed6e603..5f899c1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -34,14 +34,8 @@ set_if(GNU ${CMAKE_SYSTEM_NAME} MATCHES "GNU")
+ set_if(POSIX LINUX OR DARWIN OR BSD OR (CYGWIN AND CYGWIN_USE_POSIX))
+ set_if(SYMLINKABLE LINUX OR DARWIN OR BSD OR CYGWIN OR GNU)
+
+-# Not sure what to do in case of compiling by MSVC.
+-# This will make installdir in C:\Program Files\SRT then
+-# inside "bin" and "lib64" directories. At least this maintains
+-# the current status. Shall this be not desired, override values
+-# of CMAKE_INSTALL_BINDIR, CMAKE_INSTALL_LIBDIR and CMAKE_INSTALL_INCLUDEDIR.
+-if (NOT DEFINED CMAKE_INSTALL_LIBDIR)
+- include(GNUInstallDirs)
+-endif()
++
++include(GNUInstallDirs)
+
+ set (SRT_VERSION 1.4.2)
+ set_version_variables(SRT_VERSION ${SRT_VERSION})
+@@ -59,14 +53,6 @@ endif()
+ # Set CMAKE_BUILD_TYPE properly, now that you know
+ # that ENABLE_DEBUG is set as it should.
+
+-if (ENABLE_DEBUG EQUAL 2)
+- set (CMAKE_BUILD_TYPE "RelWithDebInfo")
+-elseif (ENABLE_DEBUG) # 1, ON, YES, TRUE, Y, or any other non-zero number
+- set (CMAKE_BUILD_TYPE "Debug")
+-else()
+- set (CMAKE_BUILD_TYPE "Release")
+-endif()
+-
+ message(STATUS "BUILD TYPE: ${CMAKE_BUILD_TYPE}")
+
+ getVarsWith(ENFORCE_ enforcers)
diff --git a/extra/llvm-libunwind/libcxx-musl.patch b/extra/llvm-libunwind/libcxx-musl.patch
new file mode 100644
index 0000000..358d4a3
--- /dev/null
+++ b/extra/llvm-libunwind/libcxx-musl.patch
@@ -0,0 +1,28 @@
+Patch-Source: https://github.com/void-linux/void-packages/blob/74f16232621ca8dfb6d244beff1df35a6df1647f/srcpkgs/llvm12/patches/libcxx-musl.patch
+
+--- a/libcxx/include/locale
++++ b/libcxx/include/locale
+@@ -742,7 +742,11 @@ __num_get_signed_integral(const char* __a, const char* __a_end,
+ typename remove_reference<decltype(errno)>::type __save_errno = errno;
+ errno = 0;
+ char *__p2;
++#if defined(__linux__) && !defined(__GLIBC__)
++ long long __ll = strtoll(__a, &__p2, __base);
++#else
+ long long __ll = strtoll_l(__a, &__p2, __base, _LIBCPP_GET_C_LOCALE);
++#endif
+ typename remove_reference<decltype(errno)>::type __current_errno = errno;
+ if (__current_errno == 0)
+ errno = __save_errno;
+@@ -782,7 +786,11 @@ __num_get_unsigned_integral(const char* __a, const char* __a_end,
+ typename remove_reference<decltype(errno)>::type __save_errno = errno;
+ errno = 0;
+ char *__p2;
++#if defined(__linux__) && !defined(__GLIBC__)
++ unsigned long long __ll = strtoull(__a, &__p2, __base);
++#else
+ unsigned long long __ll = strtoull_l(__a, &__p2, __base, _LIBCPP_GET_C_LOCALE);
++#endif
+ typename remove_reference<decltype(errno)>::type __current_errno = errno;
+ if (__current_errno == 0)
+ errno = __save_errno;
diff --git a/extra/llvm-libunwind/libunwind-link-libssp.patch b/extra/llvm-libunwind/libunwind-link-libssp.patch
new file mode 100644
index 0000000..ae819fe
--- /dev/null
+++ b/extra/llvm-libunwind/libunwind-link-libssp.patch
@@ -0,0 +1,20 @@
+--- a/libunwind/src/CMakeLists.txt
++++ b/libunwind/src/CMakeLists.txt
+@@ -129,7 +129,7 @@
+ else()
+ target_compile_options(unwind_shared PRIVATE -fno-rtti)
+ endif()
+- target_link_libraries(unwind_shared PRIVATE ${LIBUNWIND_LIBRARIES})
++ target_link_libraries(unwind_shared PRIVATE ${LIBUNWIND_LIBRARIES} -lssp_nonshared)
+ set_target_properties(unwind_shared
+ PROPERTIES
+ CXX_EXTENSIONS OFF
+@@ -157,7 +157,7 @@
+ else()
+ target_compile_options(unwind_static PRIVATE -fno-rtti)
+ endif()
+- target_link_libraries(unwind_static PRIVATE ${LIBUNWIND_LIBRARIES})
++ target_link_libraries(unwind_static PRIVATE ${LIBUNWIND_LIBRARIES} -lssp_nonshared)
+ set_target_properties(unwind_static
+ PROPERTIES
+ CXX_EXTENSIONS OFF
diff --git a/extra/menu-cache/menu-cache-1.1.0-0001-Support-gcc10-compilation.patch b/extra/menu-cache/menu-cache-1.1.0-0001-Support-gcc10-compilation.patch
new file mode 100644
index 0000000..29f8e53
--- /dev/null
+++ b/extra/menu-cache/menu-cache-1.1.0-0001-Support-gcc10-compilation.patch
@@ -0,0 +1,108 @@
+From 1ce739649b4d66339a03fc0ec9ee7a2f7c141780 Mon Sep 17 00:00:00 2001
+From: Mamoru TASAKA <mtasaka@fedoraproject.org>
+Date: Fri, 24 Jan 2020 13:33:00 +0900
+Subject: [PATCH] Support gcc10 compilation
+
+gcc10 now defaults to -fno-common, and with gcc10 menu-cache compilation fails like
+
+/bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:167: multiple definition of `DirDirs'; main.o:menu-cache-gen/menu-tags.h:167: first defined here
+/bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:164: multiple definition of `AppDirs'; main.o:menu-cache-gen/menu-tags.h:164: first defined here
+/bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:52: multiple definition of `menuTag_Layout'; main.o:menu-cache-gen/menu-tags.h:52: first defined here
+....
+
+This patch fixes compilation with gcc10: properly declaring variables in header with "extern", and also removing some unneeded variables in header files.
+---
+ menu-cache-gen/menu-tags.h | 55 ++++++++++++--------------------------
+ 1 file changed, 17 insertions(+), 38 deletions(-)
+
+diff --git a/menu-cache-gen/menu-tags.h b/menu-cache-gen/menu-tags.h
+index f3fd7d3..f71c0bc 100644
+--- a/menu-cache-gen/menu-tags.h
++++ b/menu-cache-gen/menu-tags.h
+@@ -22,38 +22,17 @@
+ #include <libfm/fm-extra.h>
+ #include <menu-cache.h>
+
+-FmXmlFileTag menuTag_Menu;
+-FmXmlFileTag menuTag_AppDir;
+-FmXmlFileTag menuTag_DefaultAppDirs;
+-FmXmlFileTag menuTag_DirectoryDir;
+-FmXmlFileTag menuTag_DefaultDirectoryDirs;
+-FmXmlFileTag menuTag_Include;
+-FmXmlFileTag menuTag_Exclude;
+-FmXmlFileTag menuTag_Filename;
+-FmXmlFileTag menuTag_Or;
+-FmXmlFileTag menuTag_And;
+-FmXmlFileTag menuTag_Not;
+-FmXmlFileTag menuTag_Category;
+-FmXmlFileTag menuTag_MergeFile;
+-FmXmlFileTag menuTag_MergeDir;
+-FmXmlFileTag menuTag_DefaultMergeDirs;
+-FmXmlFileTag menuTag_Directory;
+-FmXmlFileTag menuTag_Name;
+-FmXmlFileTag menuTag_Deleted;
+-FmXmlFileTag menuTag_NotDeleted;
+-FmXmlFileTag menuTag_OnlyUnallocated;
+-FmXmlFileTag menuTag_NotOnlyUnallocated;
+-FmXmlFileTag menuTag_All;
+-FmXmlFileTag menuTag_LegacyDir;
+-FmXmlFileTag menuTag_KDELegacyDirs;
+-FmXmlFileTag menuTag_Move;
+-FmXmlFileTag menuTag_Old;
+-FmXmlFileTag menuTag_New;
+-FmXmlFileTag menuTag_Layout;
+-FmXmlFileTag menuTag_DefaultLayout;
+-FmXmlFileTag menuTag_Menuname;
+-FmXmlFileTag menuTag_Separator;
+-FmXmlFileTag menuTag_Merge;
++extern FmXmlFileTag menuTag_AppDir;
++extern FmXmlFileTag menuTag_DirectoryDir;
++extern FmXmlFileTag menuTag_Include;
++extern FmXmlFileTag menuTag_Exclude;
++extern FmXmlFileTag menuTag_Filename;
++extern FmXmlFileTag menuTag_Or;
++extern FmXmlFileTag menuTag_And;
++extern FmXmlFileTag menuTag_Not;
++extern FmXmlFileTag menuTag_Category;
++extern FmXmlFileTag menuTag_All;
++extern FmXmlFileTag menuTag_LegacyDir;
+
+ typedef enum {
+ MERGE_NONE, /* starting value */
+@@ -152,19 +131,19 @@ typedef struct {
+ } MenuRule;
+
+ /* requested language(s) */
+-char **languages;
++extern char **languages;
+
+ /* list of menu files to monitor */
+-GSList *MenuFiles;
++extern GSList *MenuFiles;
+
+ /* list of menu dirs to monitor */
+-GSList *MenuDirs;
++extern GSList *MenuDirs;
+
+ /* list of available app dirs */
+-GSList *AppDirs;
++extern GSList *AppDirs;
+
+ /* list of available dir dirs */
+-GSList *DirDirs;
++extern GSList *DirDirs;
+
+ /* parse and merge menu files */
+ MenuMenu *get_merged_menu(const char *file, FmXmlFile **xmlfile, GError **error);
+@@ -177,7 +156,7 @@ gboolean save_menu_cache(MenuMenu *layout, const char *menuname, const char *fil
+ void _free_layout_items(GList *data);
+
+ /* verbosity level */
+-gint verbose;
++extern gint verbose;
+
+ #define DBG if (verbose) g_debug
+ #define VDBG if (verbose > 1) g_debug
+--
+2.24.1
+
diff --git a/extra/nodejs/disable-running-gyp-on-shared-deps.patch b/extra/nodejs/disable-running-gyp-on-shared-deps.patch
new file mode 100644
index 0000000..f646201
--- /dev/null
+++ b/extra/nodejs/disable-running-gyp-on-shared-deps.patch
@@ -0,0 +1,20 @@
+From: Jakub Jirutka <jakub@jirutka.cz>
+Date: Sat, 26 Nov 2016 01:32:00 +0200
+Subject: Disable running gyp on shared deps
+
+Author: Stephen Gallagher <sgallagh@redhat.com>
+
+Modified 2016-11-26 by Jakub Jirutka <jakub@jirutka.cz> to update for
+Node.js 7.2.0
+
+--- a/Makefile
++++ b/Makefile
+@@ -141,7 +141,7 @@
+ echo "'test-code-cache' target is a noop"
+
+ out/Makefile: config.gypi common.gypi node.gyp \
+- deps/uv/uv.gyp deps/llhttp/llhttp.gyp deps/zlib/zlib.gyp \
++ deps/uv/uv.gyp deps/llhttp/llhttp.gyp \
+ tools/v8_gypfiles/toolchain.gypi tools/v8_gypfiles/features.gypi \
+ tools/v8_gypfiles/inspector.gypi tools/v8_gypfiles/v8.gyp
+ $(PYTHON) tools/gyp_node.py -f make
diff --git a/extra/nodejs/fix-build-with-system-c-ares.patch b/extra/nodejs/fix-build-with-system-c-ares.patch
new file mode 100644
index 0000000..8121891
--- /dev/null
+++ b/extra/nodejs/fix-build-with-system-c-ares.patch
@@ -0,0 +1,535 @@
+From aff98a5667c22794e2eaf658f6dfbee54cdd4a3b Mon Sep 17 00:00:00 2001
+From: Felix Yan <felixonmars@archlinux.org>
+Date: Thu, 12 Aug 2021 02:44:43 +0800
+Subject: [PATCH 1/2] deps: fix building with system c-ares on Linux
+Patch-Source: https://github.com/nodejs/node/pull/39739
+
+The change in #39724 breaks building with system c-ares
+(`--shared-cares`):
+```
+In file included from ../src/cares_wrap.cc:25:
+../src/cares_wrap.h:25:11: fatal error: ares_nameser.h: No such file or
+directory
+ 25 | # include <ares_nameser.h>
+ | ^~~~~~~~~~~~~~~~
+```
+
+Since `ares_nameser.h` isn't available with a default system c-ares
+installation, let's copy it as our private header here.
+
+Tested to build fine on Arch Linux with shared c-ares.
+---
+ src/ares_nameser.h | 482 +++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 482 insertions(+)
+ create mode 100644 src/ares_nameser.h
+
+diff --git a/src/ares_nameser.h b/src/ares_nameser.h
+new file mode 100644
+index 000000000000..5270e5a3a6a0
+--- /dev/null
++++ b/src/ares_nameser.h
+@@ -0,0 +1,482 @@
++
++#ifndef ARES_NAMESER_H
++#define ARES_NAMESER_H
++
++#ifdef HAVE_ARPA_NAMESER_H
++# include <arpa/nameser.h>
++#endif
++#ifdef HAVE_ARPA_NAMESER_COMPAT_H
++# include <arpa/nameser_compat.h>
++#endif
++
++/* ============================================================================
++ * arpa/nameser.h may or may not provide ALL of the below defines, so check
++ * each one individually and set if not
++ * ============================================================================
++ */
++
++#ifndef NS_PACKETSZ
++# define NS_PACKETSZ 512 /* maximum packet size */
++#endif
++
++#ifndef NS_MAXDNAME
++# define NS_MAXDNAME 256 /* maximum domain name */
++#endif
++
++#ifndef NS_MAXCDNAME
++# define NS_MAXCDNAME 255 /* maximum compressed domain name */
++#endif
++
++#ifndef NS_MAXLABEL
++# define NS_MAXLABEL 63
++#endif
++
++#ifndef NS_HFIXEDSZ
++# define NS_HFIXEDSZ 12 /* #/bytes of fixed data in header */
++#endif
++
++#ifndef NS_QFIXEDSZ
++# define NS_QFIXEDSZ 4 /* #/bytes of fixed data in query */
++#endif
++
++#ifndef NS_RRFIXEDSZ
++# define NS_RRFIXEDSZ 10 /* #/bytes of fixed data in r record */
++#endif
++
++#ifndef NS_INT16SZ
++# define NS_INT16SZ 2
++#endif
++
++#ifndef NS_INADDRSZ
++# define NS_INADDRSZ 4
++#endif
++
++#ifndef NS_IN6ADDRSZ
++# define NS_IN6ADDRSZ 16
++#endif
++
++#ifndef NS_CMPRSFLGS
++# define NS_CMPRSFLGS 0xc0 /* Flag bits indicating name compression. */
++#endif
++
++#ifndef NS_DEFAULTPORT
++# define NS_DEFAULTPORT 53 /* For both TCP and UDP. */
++#endif
++
++/* ============================================================================
++ * arpa/nameser.h should provide these enumerations always, so if not found,
++ * provide them
++ * ============================================================================
++ */
++#ifndef HAVE_ARPA_NAMESER_H
++
++typedef enum __ns_class {
++ ns_c_invalid = 0, /* Cookie. */
++ ns_c_in = 1, /* Internet. */
++ ns_c_2 = 2, /* unallocated/unsupported. */
++ ns_c_chaos = 3, /* MIT Chaos-net. */
++ ns_c_hs = 4, /* MIT Hesiod. */
++ /* Query class values which do not appear in resource records */
++ ns_c_none = 254, /* for prereq. sections in update requests */
++ ns_c_any = 255, /* Wildcard match. */
++ ns_c_max = 65536
++} ns_class;
++
++typedef enum __ns_type {
++ ns_t_invalid = 0, /* Cookie. */
++ ns_t_a = 1, /* Host address. */
++ ns_t_ns = 2, /* Authoritative server. */
++ ns_t_md = 3, /* Mail destination. */
++ ns_t_mf = 4, /* Mail forwarder. */
++ ns_t_cname = 5, /* Canonical name. */
++ ns_t_soa = 6, /* Start of authority zone. */
++ ns_t_mb = 7, /* Mailbox domain name. */
++ ns_t_mg = 8, /* Mail group member. */
++ ns_t_mr = 9, /* Mail rename name. */
++ ns_t_null = 10, /* Null resource record. */
++ ns_t_wks = 11, /* Well known service. */
++ ns_t_ptr = 12, /* Domain name pointer. */
++ ns_t_hinfo = 13, /* Host information. */
++ ns_t_minfo = 14, /* Mailbox information. */
++ ns_t_mx = 15, /* Mail routing information. */
++ ns_t_txt = 16, /* Text strings. */
++ ns_t_rp = 17, /* Responsible person. */
++ ns_t_afsdb = 18, /* AFS cell database. */
++ ns_t_x25 = 19, /* X_25 calling address. */
++ ns_t_isdn = 20, /* ISDN calling address. */
++ ns_t_rt = 21, /* Router. */
++ ns_t_nsap = 22, /* NSAP address. */
++ ns_t_nsap_ptr = 23, /* Reverse NSAP lookup (deprecated). */
++ ns_t_sig = 24, /* Security signature. */
++ ns_t_key = 25, /* Security key. */
++ ns_t_px = 26, /* X.400 mail mapping. */
++ ns_t_gpos = 27, /* Geographical position (withdrawn). */
++ ns_t_aaaa = 28, /* Ip6 Address. */
++ ns_t_loc = 29, /* Location Information. */
++ ns_t_nxt = 30, /* Next domain (security). */
++ ns_t_eid = 31, /* Endpoint identifier. */
++ ns_t_nimloc = 32, /* Nimrod Locator. */
++ ns_t_srv = 33, /* Server Selection. */
++ ns_t_atma = 34, /* ATM Address */
++ ns_t_naptr = 35, /* Naming Authority PoinTeR */
++ ns_t_kx = 36, /* Key Exchange */
++ ns_t_cert = 37, /* Certification record */
++ ns_t_a6 = 38, /* IPv6 address (deprecates AAAA) */
++ ns_t_dname = 39, /* Non-terminal DNAME (for IPv6) */
++ ns_t_sink = 40, /* Kitchen sink (experimentatl) */
++ ns_t_opt = 41, /* EDNS0 option (meta-RR) */
++ ns_t_apl = 42, /* Address prefix list (RFC3123) */
++ ns_t_ds = 43, /* Delegation Signer (RFC4034) */
++ ns_t_sshfp = 44, /* SSH Key Fingerprint (RFC4255) */
++ ns_t_rrsig = 46, /* Resource Record Signature (RFC4034) */
++ ns_t_nsec = 47, /* Next Secure (RFC4034) */
++ ns_t_dnskey = 48, /* DNS Public Key (RFC4034) */
++ ns_t_tkey = 249, /* Transaction key */
++ ns_t_tsig = 250, /* Transaction signature. */
++ ns_t_ixfr = 251, /* Incremental zone transfer. */
++ ns_t_axfr = 252, /* Transfer zone of authority. */
++ ns_t_mailb = 253, /* Transfer mailbox records. */
++ ns_t_maila = 254, /* Transfer mail agent records. */
++ ns_t_any = 255, /* Wildcard match. */
++ ns_t_zxfr = 256, /* BIND-specific, nonstandard. */
++ ns_t_caa = 257, /* Certification Authority Authorization. */
++ ns_t_max = 65536
++} ns_type;
++
++typedef enum __ns_opcode {
++ ns_o_query = 0, /* Standard query. */
++ ns_o_iquery = 1, /* Inverse query (deprecated/unsupported). */
++ ns_o_status = 2, /* Name server status query (unsupported). */
++ /* Opcode 3 is undefined/reserved. */
++ ns_o_notify = 4, /* Zone change notification. */
++ ns_o_update = 5, /* Zone update message. */
++ ns_o_max = 6
++} ns_opcode;
++
++typedef enum __ns_rcode {
++ ns_r_noerror = 0, /* No error occurred. */
++ ns_r_formerr = 1, /* Format error. */
++ ns_r_servfail = 2, /* Server failure. */
++ ns_r_nxdomain = 3, /* Name error. */
++ ns_r_notimpl = 4, /* Unimplemented. */
++ ns_r_refused = 5, /* Operation refused. */
++ /* these are for BIND_UPDATE */
++ ns_r_yxdomain = 6, /* Name exists */
++ ns_r_yxrrset = 7, /* RRset exists */
++ ns_r_nxrrset = 8, /* RRset does not exist */
++ ns_r_notauth = 9, /* Not authoritative for zone */
++ ns_r_notzone = 10, /* Zone of record different from zone section */
++ ns_r_max = 11,
++ /* The following are TSIG extended errors */
++ ns_r_badsig = 16,
++ ns_r_badkey = 17,
++ ns_r_badtime = 18
++} ns_rcode;
++
++#endif /* HAVE_ARPA_NAMESER_H */
++
++
++/* ============================================================================
++ * arpa/nameser_compat.h typically sets these. However on some systems
++ * arpa/nameser.h does, but may not set all of them. Lets conditionally
++ * define each
++ * ============================================================================
++ */
++
++#ifndef PACKETSZ
++# define PACKETSZ NS_PACKETSZ
++#endif
++
++#ifndef MAXDNAME
++# define MAXDNAME NS_MAXDNAME
++#endif
++
++#ifndef MAXCDNAME
++# define MAXCDNAME NS_MAXCDNAME
++#endif
++
++#ifndef MAXLABEL
++# define MAXLABEL NS_MAXLABEL
++#endif
++
++#ifndef HFIXEDSZ
++# define HFIXEDSZ NS_HFIXEDSZ
++#endif
++
++#ifndef QFIXEDSZ
++# define QFIXEDSZ NS_QFIXEDSZ
++#endif
++
++#ifndef RRFIXEDSZ
++# define RRFIXEDSZ NS_RRFIXEDSZ
++#endif
++
++#ifndef INDIR_MASK
++# define INDIR_MASK NS_CMPRSFLGS
++#endif
++
++#ifndef NAMESERVER_PORT
++# define NAMESERVER_PORT NS_DEFAULTPORT
++#endif
++
++
++/* opcodes */
++#ifndef O_QUERY
++# define O_QUERY 0 /* ns_o_query */
++#endif
++#ifndef O_IQUERY
++# define O_IQUERY 1 /* ns_o_iquery */
++#endif
++#ifndef O_STATUS
++# define O_STATUS 2 /* ns_o_status */
++#endif
++#ifndef O_NOTIFY
++# define O_NOTIFY 4 /* ns_o_notify */
++#endif
++#ifndef O_UPDATE
++# define O_UPDATE 5 /* ns_o_update */
++#endif
++
++
++/* response codes */
++#ifndef SERVFAIL
++# define SERVFAIL ns_r_servfail
++#endif
++#ifndef NOTIMP
++# define NOTIMP ns_r_notimpl
++#endif
++#ifndef REFUSED
++# define REFUSED ns_r_refused
++#endif
++#if defined(_WIN32) && !defined(HAVE_ARPA_NAMESER_COMPAT_H) && defined(NOERROR)
++# undef NOERROR /* it seems this is already defined in winerror.h */
++#endif
++#ifndef NOERROR
++# define NOERROR ns_r_noerror
++#endif
++#ifndef FORMERR
++# define FORMERR ns_r_formerr
++#endif
++#ifndef NXDOMAIN
++# define NXDOMAIN ns_r_nxdomain
++#endif
++/* Non-standard response codes, use numeric values */
++#ifndef YXDOMAIN
++# define YXDOMAIN 6 /* ns_r_yxdomain */
++#endif
++#ifndef YXRRSET
++# define YXRRSET 7 /* ns_r_yxrrset */
++#endif
++#ifndef NXRRSET
++# define NXRRSET 8 /* ns_r_nxrrset */
++#endif
++#ifndef NOTAUTH
++# define NOTAUTH 9 /* ns_r_notauth */
++#endif
++#ifndef NOTZONE
++# define NOTZONE 10 /* ns_r_notzone */
++#endif
++#ifndef TSIG_BADSIG
++# define TSIG_BADSIG 16 /* ns_r_badsig */
++#endif
++#ifndef TSIG_BADKEY
++# define TSIG_BADKEY 17 /* ns_r_badkey */
++#endif
++#ifndef TSIG_BADTIME
++# define TSIG_BADTIME 18 /* ns_r_badtime */
++#endif
++
++
++/* classes */
++#ifndef C_IN
++# define C_IN 1 /* ns_c_in */
++#endif
++#ifndef C_CHAOS
++# define C_CHAOS 3 /* ns_c_chaos */
++#endif
++#ifndef C_HS
++# define C_HS 4 /* ns_c_hs */
++#endif
++#ifndef C_NONE
++# define C_NONE 254 /* ns_c_none */
++#endif
++#ifndef C_ANY
++# define C_ANY 255 /* ns_c_any */
++#endif
++
++
++/* types */
++#ifndef T_A
++# define T_A 1 /* ns_t_a */
++#endif
++#ifndef T_NS
++# define T_NS 2 /* ns_t_ns */
++#endif
++#ifndef T_MD
++# define T_MD 3 /* ns_t_md */
++#endif
++#ifndef T_MF
++# define T_MF 4 /* ns_t_mf */
++#endif
++#ifndef T_CNAME
++# define T_CNAME 5 /* ns_t_cname */
++#endif
++#ifndef T_SOA
++# define T_SOA 6 /* ns_t_soa */
++#endif
++#ifndef T_MB
++# define T_MB 7 /* ns_t_mb */
++#endif
++#ifndef T_MG
++# define T_MG 8 /* ns_t_mg */
++#endif
++#ifndef T_MR
++# define T_MR 9 /* ns_t_mr */
++#endif
++#ifndef T_NULL
++# define T_NULL 10 /* ns_t_null */
++#endif
++#ifndef T_WKS
++# define T_WKS 11 /* ns_t_wks */
++#endif
++#ifndef T_PTR
++# define T_PTR 12 /* ns_t_ptr */
++#endif
++#ifndef T_HINFO
++# define T_HINFO 13 /* ns_t_hinfo */
++#endif
++#ifndef T_MINFO
++# define T_MINFO 14 /* ns_t_minfo */
++#endif
++#ifndef T_MX
++# define T_MX 15 /* ns_t_mx */
++#endif
++#ifndef T_TXT
++# define T_TXT 16 /* ns_t_txt */
++#endif
++#ifndef T_RP
++# define T_RP 17 /* ns_t_rp */
++#endif
++#ifndef T_AFSDB
++# define T_AFSDB 18 /* ns_t_afsdb */
++#endif
++#ifndef T_X25
++# define T_X25 19 /* ns_t_x25 */
++#endif
++#ifndef T_ISDN
++# define T_ISDN 20 /* ns_t_isdn */
++#endif
++#ifndef T_RT
++# define T_RT 21 /* ns_t_rt */
++#endif
++#ifndef T_NSAP
++# define T_NSAP 22 /* ns_t_nsap */
++#endif
++#ifndef T_NSAP_PTR
++# define T_NSAP_PTR 23 /* ns_t_nsap_ptr */
++#endif
++#ifndef T_SIG
++# define T_SIG 24 /* ns_t_sig */
++#endif
++#ifndef T_KEY
++# define T_KEY 25 /* ns_t_key */
++#endif
++#ifndef T_PX
++# define T_PX 26 /* ns_t_px */
++#endif
++#ifndef T_GPOS
++# define T_GPOS 27 /* ns_t_gpos */
++#endif
++#ifndef T_AAAA
++# define T_AAAA 28 /* ns_t_aaaa */
++#endif
++#ifndef T_LOC
++# define T_LOC 29 /* ns_t_loc */
++#endif
++#ifndef T_NXT
++# define T_NXT 30 /* ns_t_nxt */
++#endif
++#ifndef T_EID
++# define T_EID 31 /* ns_t_eid */
++#endif
++#ifndef T_NIMLOC
++# define T_NIMLOC 32 /* ns_t_nimloc */
++#endif
++#ifndef T_SRV
++# define T_SRV 33 /* ns_t_srv */
++#endif
++#ifndef T_ATMA
++# define T_ATMA 34 /* ns_t_atma */
++#endif
++#ifndef T_NAPTR
++# define T_NAPTR 35 /* ns_t_naptr */
++#endif
++#ifndef T_KX
++# define T_KX 36 /* ns_t_kx */
++#endif
++#ifndef T_CERT
++# define T_CERT 37 /* ns_t_cert */
++#endif
++#ifndef T_A6
++# define T_A6 38 /* ns_t_a6 */
++#endif
++#ifndef T_DNAME
++# define T_DNAME 39 /* ns_t_dname */
++#endif
++#ifndef T_SINK
++# define T_SINK 40 /* ns_t_sink */
++#endif
++#ifndef T_OPT
++# define T_OPT 41 /* ns_t_opt */
++#endif
++#ifndef T_APL
++# define T_APL 42 /* ns_t_apl */
++#endif
++#ifndef T_DS
++# define T_DS 43 /* ns_t_ds */
++#endif
++#ifndef T_SSHFP
++# define T_SSHFP 44 /* ns_t_sshfp */
++#endif
++#ifndef T_RRSIG
++# define T_RRSIG 46 /* ns_t_rrsig */
++#endif
++#ifndef T_NSEC
++# define T_NSEC 47 /* ns_t_nsec */
++#endif
++#ifndef T_DNSKEY
++# define T_DNSKEY 48 /* ns_t_dnskey */
++#endif
++#ifndef T_TKEY
++# define T_TKEY 249 /* ns_t_tkey */
++#endif
++#ifndef T_TSIG
++# define T_TSIG 250 /* ns_t_tsig */
++#endif
++#ifndef T_IXFR
++# define T_IXFR 251 /* ns_t_ixfr */
++#endif
++#ifndef T_AXFR
++# define T_AXFR 252 /* ns_t_axfr */
++#endif
++#ifndef T_MAILB
++# define T_MAILB 253 /* ns_t_mailb */
++#endif
++#ifndef T_MAILA
++# define T_MAILA 254 /* ns_t_maila */
++#endif
++#ifndef T_ANY
++# define T_ANY 255 /* ns_t_any */
++#endif
++#ifndef T_ZXFR
++# define T_ZXFR 256 /* ns_t_zxfr */
++#endif
++#ifndef T_CAA
++# define T_CAA 257 /* ns_t_caa */
++#endif
++#ifndef T_MAX
++# define T_MAX 65536 /* ns_t_max */
++#endif
++
++
++#endif /* ARES_NAMESER_H */
+
+From db4643979ee676b3a3d6cdf2fb597d399cf8013f Mon Sep 17 00:00:00 2001
+From: Felix Yan <felixonmars@archlinux.org>
+Date: Fri, 13 Aug 2021 00:01:59 +0800
+Subject: [PATCH 2/2] build: ignore cpplint for third-party ares_nameser.h
+
+---
+ Makefile | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Makefile b/Makefile
+index ec4c774748cd..c418995c53c1 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1289,6 +1289,7 @@ jslint-ci: lint-js-ci
+ LINT_CPP_ADDON_DOC_FILES_GLOB = test/addons/??_*/*.cc test/addons/??_*/*.h
+ LINT_CPP_ADDON_DOC_FILES = $(wildcard $(LINT_CPP_ADDON_DOC_FILES_GLOB))
+ LINT_CPP_EXCLUDE ?=
++LINT_CPP_EXCLUDE += src/ares_nameser.h
+ LINT_CPP_EXCLUDE += src/node_root_certs.h
+ LINT_CPP_EXCLUDE += $(LINT_CPP_ADDON_DOC_FILES)
+ LINT_CPP_EXCLUDE += $(wildcard test/js-native-api/??_*/*.cc test/js-native-api/??_*/*.h test/node-api/??_*/*.cc test/node-api/??_*/*.h)
diff --git a/extra/openntpd/libtls-standalone.patch b/extra/openntpd/libtls-standalone.patch
new file mode 100644
index 0000000..3b5d8e4
--- /dev/null
+++ b/extra/openntpd/libtls-standalone.patch
@@ -0,0 +1,20 @@
+diff --git a/configure.ac b/configure.ac
+index 88884c2..b0c0697 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -60,8 +60,13 @@ AM_CONDITIONAL([HAVE_CLOCK_GETRES], [test "x$ac_cv_func_clock_getres" = xyes])
+ AM_CONDITIONAL([HAVE_CLOCK_GETTIME], [test "x$ac_cv_func_clock_gettime" = xyes])
+
+ # check for libtls
+-AC_SEARCH_LIBS([tls_config_set_ca_mem],[tls],
+- [LIBS="$LIBS -ltls -lssl -lcrypto"],,[-lssl -lcrypto])
++PKG_CHECK_MODULES([LIBTLS], [libtls],[],[
++ PKG_CHECK_MODULES([LIBTLS], [libtls-standalone])
++ ])
++AC_SEARCH_LIBS([tls_config_set_ca_mem],[tls tls-standalone],
++ [LIBS="$LIBS $LIBTLS_LIBS"
++ CFLAGS="$CFLAGS $LIBTLS_CFLAGS"],
++ ,[$LIBTLS_LIBS])
+ AC_CHECK_FUNCS([tls_config_set_ca_mem])
+
+ # check if libtls uses 3-argument tls_write
diff --git a/extra/openntpd/ntp-user.patch b/extra/openntpd/ntp-user.patch
new file mode 100644
index 0000000..200676c
--- /dev/null
+++ b/extra/openntpd/ntp-user.patch
@@ -0,0 +1,13 @@
+diff --git a/src/ntpd.h b/src/ntpd.h
+index 6403391..cc41d42 100644
+--- a/src/ntpd.h
++++ b/src/ntpd.h
+@@ -37,7 +37,7 @@
+ #define MAXIMUM(a, b) ((a) > (b) ? (a) : (b))
+
+ #ifndef NTPD_USER
+-#define NTPD_USER "_ntp"
++#define NTPD_USER "ntp"
+ #endif
+
+ #ifndef SYSCONFDIR
diff --git a/extra/openntpd/openntpd.confd b/extra/openntpd/openntpd.confd
new file mode 100644
index 0000000..ec002b7
--- /dev/null
+++ b/extra/openntpd/openntpd.confd
@@ -0,0 +1,3 @@
+# See ntpd(8) man page ... some popular options:
+# -s Set the time immediately at startup
+#NTPD_OPTS=
diff --git a/extra/openntpd/openntpd.initd b/extra/openntpd/openntpd.initd
new file mode 100644
index 0000000..dc9a9ae
--- /dev/null
+++ b/extra/openntpd/openntpd.initd
@@ -0,0 +1,14 @@
+#!/sbin/openrc-run
+
+name="NTP Server"
+command=/usr/sbin/ntpd
+command_args="-d $NTPD_OPTS"
+command_background=yes
+pidfile=/run/$RC_SVCNAME.pid
+required_files=/etc/ntpd.conf
+
+depend() {
+ need net
+ provide ntp-client
+ use dns logger
+}
diff --git a/extra/openssh/sshd.confd b/extra/openssh/sshd.confd
new file mode 100644
index 0000000..8c44444
--- /dev/null
+++ b/extra/openssh/sshd.confd
@@ -0,0 +1,26 @@
+# Configuration for /etc/init.d/sshd
+
+# Path of sshd_config file.
+#cfgfile="/etc/ssh/sshd_config"
+
+# Any random options you want to pass to sshd.
+# See the sshd(8) manpage for more info.
+#command_args=""
+
+# Space-separated list of SSH host key types to generate if they do
+# not already exist. An empty value means generate all of the default
+# set of dsa, ecdsa, ed25519, and rsa types.
+#
+# Example: "ed25519 rsa".
+#
+#key_types_to_generate=""
+
+# The number of bits to use for a generated ECDSA SSH host key.
+# Defaults to 256 bits if not set.
+#
+#ecdsa_bit_size="256"
+
+# Number of bits for use for a generated RSA SSH host key.
+# Defaults to 3072 bits if not set.
+#
+#rsa_bit_size="3072"
diff --git a/extra/openssh/sshd.initd b/extra/openssh/sshd.initd
new file mode 100644
index 0000000..477cdbc
--- /dev/null
+++ b/extra/openssh/sshd.initd
@@ -0,0 +1,162 @@
+#!/sbin/openrc-run
+
+description="OpenBSD Secure Shell server"
+description_checkconfig="Verify configuration file"
+description_reload="Reload configuration"
+
+extra_commands="checkconfig"
+extra_started_commands="reload"
+
+# NOTE: SSHD_* variables are deprecated and will be removed in future!
+: "${sshd_disable_keygen:="${SSHD_DISABLE_KEYGEN:-"no"}"}"
+: "${cfgfile:=${SSHD_CONFIG:-"${SSHD_CONFDIR:-"/etc/ssh"}/sshd_config"}}"
+
+pidfile="${SSHD_PIDFILE:-"/run/$RC_SVCNAME.pid"}"
+command="${SSHD_BINARY:-"/usr/sbin/sshd"}"
+command_args="${command_args:-${SSHD_OPTS:-}}"
+
+required_files="$cfgfile"
+
+generate_host_key_type() {
+ local bit_size key_type
+
+ key_type=$1
+ if [ ! -f /etc/ssh/ssh_host_"${key_type}"_key ]; then
+ case $key_type in
+ ecdsa) bit_size="$ecdsa_bit_size";;
+ rsa) bit_size="$rsa_bit_size";;
+ esac
+ einfo "Generating $key_type SSH host key..."
+ ssh-keygen \
+ -q \
+ -f /etc/ssh/ssh_host_"$key_type"_key \
+ -N '' \
+ -t "$key_type" \
+ ${bit_size:+ -b ${bit_size}} || return 1
+ fi
+}
+
+generate_host_keys() {
+ local type
+
+ if [ -z "$key_types_to_generate" ] &&
+ [ -z "$ecdsa_bit_size" ] && [ -z "$rsa_bit_size" ]; then
+ ssh-keygen -A
+ return
+ fi
+ for type in ${key_types_to_generate:-dsa ecdsa ed25519 rsa}; do
+ generate_host_key_type "$type" || return 1
+ done
+}
+
+get_conf() {
+ awk "/^$1/{ print \$2 }" "$cfgfile" 2>/dev/null
+}
+
+conf_enabled() {
+ [ "$(get_conf "$1")" = "yes" ]
+}
+
+depend() {
+ use logger dns
+ after entropy
+
+ if [ "${rc_need+set}" = "set" ] ; then
+ : # Do nothing, the user has explicitly set rc_need
+ else
+ local x warn_addr
+ # shellcheck disable=SC2013
+ for x in $(get_conf ListenAddress) ; do
+ case "$x" in
+ 0.0.0.0|0.0.0.0:*) ;;
+ ::|\[::\]*) ;;
+ *) warn_addr="$warn_addr $x" ;;
+ esac
+ done
+ if [ -n "$warn_addr" ] ; then
+ need net
+ ewarn "You are binding an interface in ListenAddress statement in your sshd_config!"
+ ewarn "You must add rc_need=\"net.FOO\" to your /etc/conf.d/sshd"
+ ewarn "where FOO is the interface(s) providing the following address(es):"
+ ewarn "$warn_addr"
+ fi
+ fi
+}
+
+update_command() {
+ if conf_enabled KerberosAuthentication || conf_enabled GSSAPIAuthentication && [ -r /usr/sbin/sshd.krb5 ]; then
+ command="${SSHD_BINARY:-"/usr/sbin/sshd.krb5"}"
+ elif conf_enabled UsePAM && [ -r /usr/sbin/sshd.pam ]; then
+ command="${SSHD_BINARY:-"/usr/sbin/sshd.pam"}"
+ fi
+}
+
+checkconfig() {
+ update_command
+ warn_deprecated_var SSHD_BINARY
+ warn_deprecated_var SSHD_CONFDIR
+ warn_deprecated_var SSHD_CONFIG cfgfile
+ warn_deprecated_var SSHD_DISABLE_KEYGEN sshd_disable_keygen
+ warn_deprecated_var SSHD_OPTS command_args
+ warn_deprecated_var SSHD_PIDFILE
+
+ if [ ! -d /var/empty ] ; then
+ mkdir -p /var/empty || return 1
+ fi
+
+ if ! yesno "$sshd_disable_keygen"; then
+ generate_host_keys || return 1
+ fi
+
+ [ "$pidfile" != "/run/sshd.pid" ] \
+ && command_args="$command_args -o PidFile=$pidfile"
+
+ [ "$cfgfile" != "/etc/ssh/sshd_config" ] \
+ && command_args="$command_args -f $cfgfile"
+
+ # shellcheck disable=SC2086
+ "$command" -t $command_args || return 1
+}
+
+start_pre() {
+ checkconfig
+}
+
+stop_pre() {
+ update_command
+ if [ "${RC_CMD}" = "restart" ] ; then
+ checkconfig || return 1
+ fi
+}
+
+stop_post() {
+ if [ "$RC_RUNLEVEL" = "shutdown" ]; then
+ _sshd_pids=$(pgrep "${command##*/}")
+ if [ -n "$_sshd_pids" ]; then
+ ebegin "Shutting down ssh connections"
+ # shellcheck disable=SC2086
+ kill -TERM $_sshd_pids >/dev/null 2>&1
+ eend 0
+ fi
+ fi
+}
+
+reload() {
+ checkconfig || return 1
+
+ ebegin "Reloading $RC_SVCNAME"
+ start-stop-daemon --signal HUP \
+ --exec "$command" --pidfile "$pidfile"
+ eend $?
+}
+
+warn_deprecated_var() {
+ local varname="$1"
+ local replacement="${2:-}"
+
+ eval "test -n \"\$$varname\"" || return 0
+
+ ewarn "Variable \$$varname is deprecated and will be removed in the future!"
+ # shellcheck disable=SC2015
+ [ "$replacement" ] && ewarn "Use \$$replacement instead of \$$varname." ||:
+}
diff --git a/extra/polybar/fix-version.patch b/extra/polybar/fix-version.patch
new file mode 100644
index 0000000..1548ce3
--- /dev/null
+++ b/extra/polybar/fix-version.patch
@@ -0,0 +1,11 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -33,7 +33,7 @@
+ OUTPUT_VARIABLE git_describe
+ OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
+
+-if(git_result EQUAL "0")
++if(0)
+ set(APP_VERSION "${git_describe}")
+ else()
+ message(STATUS "Could not detect version with git, falling back to built-in version information.")
diff --git a/extra/sdl2/directfb-cflags.patch b/extra/sdl2/directfb-cflags.patch
new file mode 100644
index 0000000..037667d
--- /dev/null
+++ b/extra/sdl2/directfb-cflags.patch
@@ -0,0 +1,10 @@
+--- a/cmake/sdlchecks.cmake
++++ b/cmake/sdlchecks.cmake
+@@ -745,6 +745,7 @@
+ set(SDL_VIDEO_DRIVER_DIRECTFB 1)
+ set(SDL_VIDEO_RENDER_DIRECTFB 1)
+ list(APPEND EXTRA_CFLAGS ${PKG_DIRECTFB_CFLAGS})
++ list(JOIN PKG_DIRECTFB_CFLAGS " " SDL_CFLAGS)
+ if(SDL_DIRECTFB_SHARED AND NOT HAVE_SDL_LOADSO)
+ message_warn("You must have SDL_LoadObject() support for dynamic DirectFB loading")
+ endif()
diff --git a/extra/tzdata/0001-posixtz-ensure-the-file-offset-we-pass-to-lseek-is-o.patch b/extra/tzdata/0001-posixtz-ensure-the-file-offset-we-pass-to-lseek-is-o.patch
new file mode 100644
index 0000000..c4ae70b
--- /dev/null
+++ b/extra/tzdata/0001-posixtz-ensure-the-file-offset-we-pass-to-lseek-is-o.patch
@@ -0,0 +1,27 @@
+From e6765bd363d2dd1dcaeeae5117cc25aae53fb944 Mon Sep 17 00:00:00 2001
+From: William Pitcock <nenolod@dereferenced.org>
+Date: Thu, 28 Apr 2011 02:56:42 -0500
+Subject: [PATCH 1/2] posixtz: ensure the file offset we pass to lseek is off_t
+
+on 32-bit systems, sizeof(off_t) is 4, on 64-bit sizeof(off_t) is 8
+causing a word masking issue.
+---
+ posixtz.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/posixtz.c b/posixtz.c
+index cddcb3e..972ca31 100644
+--- a/posixtz-0.5/posixtz.c
++++ b/posixtz-0.5/posixtz.c
+@@ -36,7 +36,7 @@ char *posix_tz(const char *filename)
+ if (r != TZ_BUFLEN
+ || strncmp(buf, "TZif", 4) != 0
+ || (unsigned char)buf[4] < 2
+- || lseek(fd, -TZ_BUFLEN, SEEK_END) < 0
++ || lseek(fd, (off_t) -TZ_BUFLEN, SEEK_END) < 0
+ )
+ goto ERROR;
+
+--
+2.16.2
+
diff --git a/extra/tzdata/0002-fix-implicit-declaration-warnings-by-including-strin.patch b/extra/tzdata/0002-fix-implicit-declaration-warnings-by-including-strin.patch
new file mode 100644
index 0000000..6f61b25
--- /dev/null
+++ b/extra/tzdata/0002-fix-implicit-declaration-warnings-by-including-strin.patch
@@ -0,0 +1,28 @@
+From 89d4aece7ba679703060393ac95086fd514c7fc7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?S=C3=B6ren=20Tempel?= <soeren+git@soeren-tempel.net>
+Date: Tue, 27 Mar 2018 19:09:44 +0200
+Subject: [PATCH 2/2] fix implicit declaration warnings by including string.h
+ and unistd.h
+
+string.h is needed for strncmp(3) and unistd.h is needed for read(3),
+close(3) and lseek(3).
+---
+ posixtz.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/posixtz.c b/posixtz.c
+index 972ca31..4a36e10 100644
+--- a/posixtz-0.5/posixtz.c
++++ b/posixtz-0.5/posixtz.c
+@@ -14,6 +14,8 @@
+ #include <fcntl.h>
+ #include <limits.h>
+ #include <stdio.h>
++#include <string.h>
++#include <unistd.h>
+
+ #include "posixtz.h"
+
+--
+2.16.2
+
diff --git a/extra/v4l-utils/fix_parse_next_subopt.patch b/extra/v4l-utils/fix_parse_next_subopt.patch
new file mode 100644
index 0000000..d4df9d4
--- /dev/null
+++ b/extra/v4l-utils/fix_parse_next_subopt.patch
@@ -0,0 +1,36 @@
+parse_next_subopt() relies on undefined behavior and only works with glibc's
+implementation of getsubopt(). This fixes the issue.
+--- a/utils/v4l2-ctl/v4l2-ctl-common.cpp 2021-11-08 11:23:39.079748359 +0100
++++ b/utils/v4l2-ctl/v4l2-ctl-common.cpp 2021-11-08 11:39:49.328576794 +0100
+@@ -956,15 +956,23 @@ static bool parse_subset(char *optarg)
+
+ static bool parse_next_subopt(char **subs, char **value)
+ {
+- static char *const subopts[] = {
+- nullptr
+- };
+- int opt = getsubopt(subs, subopts, value);
++ char *start = *subs;
++ if (!start || (start[0] == '\0')) {
++ fprintf(stderr, "Missing suboption value\n");
++ return true;
++ }
++ *value = start;
+
+- if (opt < 0 || *value)
+- return false;
+- fprintf(stderr, "Missing suboption value\n");
+- return true;
++ char *sep = std::strchr(start, ',');
++ if (sep != nullptr) {
++ *sep = '\0';
++ *subs = sep + 1;
++ }
++ else {
++ *subs = std::strchr(start, '\0');
++ }
++
++ return false;
+ }
+
+ void common_cmd(const std::string &media_bus_info, int ch, char *optarg)
diff --git a/extra/v4l-utils/types.patch b/extra/v4l-utils/types.patch
new file mode 100644
index 0000000..340bb81
--- /dev/null
+++ b/extra/v4l-utils/types.patch
@@ -0,0 +1,26 @@
+--- a/utils/keytable/keymap.h
++++ b/utils/keytable/keymap.h
+@@ -2,6 +2,10 @@
+ #ifndef __KEYMAP_H
+ #define __KEYMAP_H
+
++#include <stdint.h>
++typedef uint32_t u_int32_t;
++typedef int error_t;
++
+ struct keymap {
+ struct keymap *next;
+ char *name;
+--- a/utils/ir-ctl/keymap.h
++++ b/utils/ir-ctl/keymap.h
+@@ -2,6 +2,10 @@
+ #ifndef __KEYMAP_H
+ #define __KEYMAP_H
+
++#include <stdint.h>
++typedef uint32_t u_int32_t;
++typedef int error_t;
++
+ struct keymap {
+ struct keymap *next;
+ char *name;
diff --git a/extra/x264/oclobj.h b/extra/x264/oclobj.h
new file mode 100644
index 0000000..8ec2e5a
--- /dev/null
+++ b/extra/x264/oclobj.h
@@ -0,0 +1,4684 @@
+static const char x264_opencl_source[] = {
+0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4c, 0x20, 0x45,
+0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x20, 0x63, 0x6c, 0x5f, 0x6b, 0x68, 0x72, 0x5f,
+0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x65, 0x78, 0x74, 0x65,
+0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x73, 0x20, 0x3a, 0x20, 0x65,
+0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x73,
+0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x5f, 0x74, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72,
+0x20, 0x3d, 0x20, 0x43, 0x4c, 0x4b, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x49, 0x5a, 0x45,
+0x44, 0x5f, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x53, 0x5f, 0x46, 0x41, 0x4c, 0x53, 0x45, 0x20, 0x7c,
+0x20, 0x43, 0x4c, 0x4b, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x43, 0x4c, 0x41,
+0x4d, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x45, 0x44, 0x47, 0x45, 0x20, 0x7c, 0x20, 0x43, 0x4c, 0x4b,
+0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4e, 0x45, 0x41, 0x52, 0x45, 0x53, 0x54, 0x3b,
+0x0a, 0x2f, 0x2a, 0x20, 0x37, 0x2e, 0x31, 0x38, 0x2e, 0x31, 0x2e, 0x31, 0x20, 0x20, 0x45, 0x78,
+0x61, 0x63, 0x74, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65,
+0x72, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x2a, 0x2f, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64,
+0x65, 0x66, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x63, 0x68, 0x61, 0x72, 0x20, 0x69,
+0x6e, 0x74, 0x38, 0x5f, 0x74, 0x3b, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x75,
+0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x63, 0x68, 0x61, 0x72, 0x20, 0x20, 0x20, 0x75,
+0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x3b, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20,
+0x73, 0x68, 0x6f, 0x72, 0x74, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x3b, 0x0a,
+0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64,
+0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74,
+0x3b, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x69,
+0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x3b, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20,
+0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33,
+0x32, 0x5f, 0x74, 0x3b, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x75, 0x69, 0x6e,
+0x74, 0x38, 0x5f, 0x74, 0x20, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x3b, 0x0a, 0x74, 0x79, 0x70,
+0x65, 0x64, 0x65, 0x66, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x73, 0x75,
+0x6d, 0x5f, 0x74, 0x3b, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x75, 0x69, 0x6e,
+0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x3b, 0x0a, 0x23, 0x64,
+0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x4c, 0x4f, 0x57, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x53,
+0x54, 0x5f, 0x4d, 0x41, 0x53, 0x4b, 0x20, 0x28, 0x28, 0x31, 0x3c, 0x3c, 0x31, 0x34, 0x29, 0x2d,
+0x31, 0x29, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x4c, 0x4f, 0x57, 0x52, 0x45,
+0x53, 0x5f, 0x43, 0x4f, 0x53, 0x54, 0x5f, 0x53, 0x48, 0x49, 0x46, 0x54, 0x20, 0x31, 0x34, 0x0a,
+0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x43, 0x4f, 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x58,
+0x20, 0x28, 0x31, 0x3c, 0x3c, 0x32, 0x38, 0x29, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65,
+0x20, 0x50, 0x49, 0x58, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x58, 0x20, 0x32, 0x35, 0x35, 0x0a, 0x23,
+0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x42, 0x49, 0x54, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f,
+0x53, 0x55, 0x4d, 0x20, 0x28, 0x38, 0x20, 0x2a, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x6f, 0x66, 0x28,
+0x73, 0x75, 0x6d, 0x5f, 0x74, 0x29, 0x29, 0x0a, 0x2f, 0x2a, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x74,
+0x61, 0x6e, 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73,
+0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74,
+0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x2a, 0x2f,
+0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x43, 0x4f, 0x53, 0x54, 0x5f, 0x45, 0x53,
+0x54, 0x20, 0x20, 0x20, 0x20, 0x30, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x43,
+0x4f, 0x53, 0x54, 0x5f, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x51, 0x20, 0x31, 0x0a, 0x23, 0x64, 0x65,
+0x66, 0x69, 0x6e, 0x65, 0x20, 0x49, 0x4e, 0x54, 0x52, 0x41, 0x5f, 0x4d, 0x42, 0x53, 0x20, 0x20,
+0x20, 0x32, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x43, 0x4f, 0x50, 0x59, 0x32,
+0x5f, 0x49, 0x46, 0x5f, 0x4c, 0x54, 0x28, 0x20, 0x78, 0x2c, 0x20, 0x79, 0x2c, 0x20, 0x61, 0x2c,
+0x20, 0x62, 0x20, 0x29, 0x5c, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x28, 0x79, 0x29, 0x20, 0x3c, 0x20,
+0x28, 0x78, 0x29, 0x20, 0x29, 0x5c, 0x0a, 0x7b, 0x5c, 0x0a, 0x28, 0x78, 0x29, 0x20, 0x3d, 0x20,
+0x28, 0x79, 0x29, 0x3b, 0x5c, 0x0a, 0x28, 0x61, 0x29, 0x20, 0x3d, 0x20, 0x28, 0x62, 0x29, 0x3b,
+0x5c, 0x0a, 0x7d, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74,
+0x32, 0x20, 0x64, 0x69, 0x61, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x5b, 0x34, 0x5d, 0x20, 0x3d, 0x0a,
+0x7b, 0x0a, 0x7b, 0x30, 0x2c, 0x20, 0x2d, 0x31, 0x7d, 0x2c, 0x20, 0x7b, 0x2d, 0x31, 0x2c, 0x20,
+0x30, 0x7d, 0x2c, 0x20, 0x7b, 0x31, 0x2c, 0x20, 0x30, 0x7d, 0x2c, 0x20, 0x7b, 0x30, 0x2c, 0x20,
+0x31, 0x7d, 0x2c, 0x0a, 0x7d, 0x3b, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x70, 0x69,
+0x78, 0x65, 0x6c, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69,
+0x78, 0x65, 0x6c, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x72,
+0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x29, 0x20, 0x63, 0x6c,
+0x61, 0x6d, 0x70, 0x28, 0x20, 0x78, 0x2c, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x20, 0x30, 0x2c,
+0x20, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x20, 0x50, 0x49, 0x58, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x58,
+0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x69, 0x6e, 0x74,
+0x32, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x5f, 0x6d, 0x76,
+0x28, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x73, 0x68, 0x6f, 0x72,
+0x74, 0x32, 0x20, 0x62, 0x2c, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x32, 0x20, 0x63, 0x20, 0x29,
+0x0a, 0x7b, 0x0a, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x32, 0x20, 0x74, 0x31, 0x20, 0x3d, 0x20, 0x6d,
+0x69, 0x6e, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x32,
+0x20, 0x74, 0x32, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x61, 0x2c,
+0x20, 0x62, 0x29, 0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
+0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x32, 0x28, 0x6d, 0x61, 0x78,
+0x28, 0x74, 0x31, 0x2c, 0x20, 0x74, 0x32, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x6c,
+0x69, 0x6e, 0x65, 0x20, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x20, 0x61, 0x62, 0x73, 0x32, 0x28,
+0x20, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x20, 0x61, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x73, 0x75,
+0x6d, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x61, 0x20, 0x3e, 0x3e, 0x20,
+0x28, 0x42, 0x49, 0x54, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x4d, 0x20, 0x2d, 0x20,
+0x31, 0x29, 0x29, 0x20, 0x26, 0x20, 0x28, 0x28, 0x28, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x29,
+0x31, 0x20, 0x3c, 0x3c, 0x20, 0x42, 0x49, 0x54, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x55,
+0x4d, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x28, 0x73, 0x75, 0x6d,
+0x5f, 0x74, 0x29, 0x2d, 0x31, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28,
+0x61, 0x20, 0x2b, 0x20, 0x73, 0x29, 0x20, 0x5e, 0x20, 0x73, 0x3b, 0x0a, 0x7d, 0x0a, 0x23, 0x64,
+0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x48, 0x41, 0x44, 0x41, 0x4d, 0x41, 0x52, 0x44, 0x34, 0x28,
+0x20, 0x64, 0x30, 0x2c, 0x20, 0x64, 0x31, 0x2c, 0x20, 0x64, 0x32, 0x2c, 0x20, 0x64, 0x33, 0x2c,
+0x20, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x2c, 0x20, 0x73, 0x32, 0x2c, 0x20, 0x73, 0x33, 0x20,
+0x29, 0x20, 0x7b, 0x5c, 0x0a, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x20, 0x74, 0x30, 0x20, 0x3d,
+0x20, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x73, 0x31, 0x3b, 0x5c, 0x0a, 0x73, 0x75, 0x6d, 0x32, 0x5f,
+0x74, 0x20, 0x74, 0x31, 0x20, 0x3d, 0x20, 0x73, 0x30, 0x20, 0x2d, 0x20, 0x73, 0x31, 0x3b, 0x5c,
+0x0a, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x20, 0x74, 0x32, 0x20, 0x3d, 0x20, 0x73, 0x32, 0x20,
+0x2b, 0x20, 0x73, 0x33, 0x3b, 0x5c, 0x0a, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x20, 0x74, 0x33,
+0x20, 0x3d, 0x20, 0x73, 0x32, 0x20, 0x2d, 0x20, 0x73, 0x33, 0x3b, 0x5c, 0x0a, 0x64, 0x30, 0x20,
+0x3d, 0x20, 0x74, 0x30, 0x20, 0x2b, 0x20, 0x74, 0x32, 0x3b, 0x5c, 0x0a, 0x64, 0x32, 0x20, 0x3d,
+0x20, 0x74, 0x30, 0x20, 0x2d, 0x20, 0x74, 0x32, 0x3b, 0x5c, 0x0a, 0x64, 0x31, 0x20, 0x3d, 0x20,
+0x74, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x33, 0x3b, 0x5c, 0x0a, 0x64, 0x33, 0x20, 0x3d, 0x20, 0x74,
+0x31, 0x20, 0x2d, 0x20, 0x74, 0x33, 0x3b, 0x5c, 0x0a, 0x7d, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69,
+0x6e, 0x65, 0x20, 0x48, 0x41, 0x44, 0x41, 0x4d, 0x41, 0x52, 0x44, 0x34, 0x56, 0x28, 0x20, 0x64,
+0x30, 0x2c, 0x20, 0x64, 0x31, 0x2c, 0x20, 0x64, 0x32, 0x2c, 0x20, 0x64, 0x33, 0x2c, 0x20, 0x73,
+0x30, 0x2c, 0x20, 0x73, 0x31, 0x2c, 0x20, 0x73, 0x32, 0x2c, 0x20, 0x73, 0x33, 0x20, 0x29, 0x20,
+0x7b, 0x5c, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x74, 0x30, 0x20, 0x3d, 0x20, 0x73, 0x30, 0x20,
+0x2b, 0x20, 0x73, 0x31, 0x3b, 0x5c, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x74, 0x31, 0x20, 0x3d,
+0x20, 0x73, 0x30, 0x20, 0x2d, 0x20, 0x73, 0x31, 0x3b, 0x5c, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20,
+0x74, 0x32, 0x20, 0x3d, 0x20, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x73, 0x33, 0x3b, 0x5c, 0x0a, 0x69,
+0x6e, 0x74, 0x32, 0x20, 0x74, 0x33, 0x20, 0x3d, 0x20, 0x73, 0x32, 0x20, 0x2d, 0x20, 0x73, 0x33,
+0x3b, 0x5c, 0x0a, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x30, 0x20, 0x2b, 0x20, 0x74, 0x32, 0x3b,
+0x5c, 0x0a, 0x64, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x30, 0x20, 0x2d, 0x20, 0x74, 0x32, 0x3b, 0x5c,
+0x0a, 0x64, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x33, 0x3b, 0x5c, 0x0a,
+0x64, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x31, 0x20, 0x2d, 0x20, 0x74, 0x33, 0x3b, 0x5c, 0x0a, 0x7d,
+0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41, 0x54, 0x44, 0x5f, 0x43, 0x5f,
+0x38, 0x78, 0x34, 0x5f, 0x51, 0x28, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x20, 0x71, 0x31, 0x2c,
+0x20, 0x71, 0x32, 0x20, 0x29, 0x5c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x28,
+0x20, 0x71, 0x31, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x70, 0x69, 0x78, 0x31, 0x2c,
+0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x5f, 0x70, 0x69, 0x78, 0x31, 0x2c, 0x20, 0x71, 0x32, 0x20,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x70, 0x69, 0x78, 0x32, 0x2c, 0x20, 0x69, 0x6e, 0x74,
+0x20, 0x69, 0x5f, 0x70, 0x69, 0x78, 0x32, 0x20, 0x29, 0x5c, 0x0a, 0x7b, 0x5c, 0x0a, 0x73, 0x75,
+0x6d, 0x32, 0x5f, 0x74, 0x20, 0x74, 0x6d, 0x70, 0x5b, 0x34, 0x5d, 0x5b, 0x34, 0x5d, 0x3b, 0x5c,
+0x0a, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x20, 0x61, 0x30, 0x2c, 0x20, 0x61, 0x31, 0x2c, 0x20,
+0x61, 0x32, 0x2c, 0x20, 0x61, 0x33, 0x3b, 0x5c, 0x0a, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x20,
+0x73, 0x75, 0x6d, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x5c, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69,
+0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x34, 0x3b,
+0x20, 0x69, 0x2b, 0x2b, 0x2c, 0x20, 0x70, 0x69, 0x78, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x69, 0x5f,
+0x70, 0x69, 0x78, 0x31, 0x2c, 0x20, 0x70, 0x69, 0x78, 0x32, 0x20, 0x2b, 0x3d, 0x20, 0x69, 0x5f,
+0x70, 0x69, 0x78, 0x32, 0x20, 0x29, 0x5c, 0x0a, 0x7b, 0x5c, 0x0a, 0x61, 0x30, 0x20, 0x3d, 0x20,
+0x28, 0x70, 0x69, 0x78, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x2d, 0x20, 0x70, 0x69, 0x78, 0x32, 0x5b,
+0x30, 0x5d, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x29, 0x28,
+0x70, 0x69, 0x78, 0x31, 0x5b, 0x34, 0x5d, 0x20, 0x2d, 0x20, 0x70, 0x69, 0x78, 0x32, 0x5b, 0x34,
+0x5d, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x42, 0x49, 0x54, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x53,
+0x55, 0x4d, 0x29, 0x3b, 0x5c, 0x0a, 0x61, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x70, 0x69, 0x78, 0x31,
+0x5b, 0x31, 0x5d, 0x20, 0x2d, 0x20, 0x70, 0x69, 0x78, 0x32, 0x5b, 0x31, 0x5d, 0x29, 0x20, 0x2b,
+0x20, 0x28, 0x28, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x29, 0x28, 0x70, 0x69, 0x78, 0x31, 0x5b,
+0x35, 0x5d, 0x20, 0x2d, 0x20, 0x70, 0x69, 0x78, 0x32, 0x5b, 0x35, 0x5d, 0x29, 0x20, 0x3c, 0x3c,
+0x20, 0x42, 0x49, 0x54, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x4d, 0x29, 0x3b, 0x5c,
+0x0a, 0x61, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x70, 0x69, 0x78, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x2d,
+0x20, 0x70, 0x69, 0x78, 0x32, 0x5b, 0x32, 0x5d, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x73, 0x75,
+0x6d, 0x32, 0x5f, 0x74, 0x29, 0x28, 0x70, 0x69, 0x78, 0x31, 0x5b, 0x36, 0x5d, 0x20, 0x2d, 0x20,
+0x70, 0x69, 0x78, 0x32, 0x5b, 0x36, 0x5d, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x42, 0x49, 0x54, 0x53,
+0x5f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x4d, 0x29, 0x3b, 0x5c, 0x0a, 0x61, 0x33, 0x20, 0x3d,
+0x20, 0x28, 0x70, 0x69, 0x78, 0x31, 0x5b, 0x33, 0x5d, 0x20, 0x2d, 0x20, 0x70, 0x69, 0x78, 0x32,
+0x5b, 0x33, 0x5d, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x29,
+0x28, 0x70, 0x69, 0x78, 0x31, 0x5b, 0x37, 0x5d, 0x20, 0x2d, 0x20, 0x70, 0x69, 0x78, 0x32, 0x5b,
+0x37, 0x5d, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x42, 0x49, 0x54, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f,
+0x53, 0x55, 0x4d, 0x29, 0x3b, 0x5c, 0x0a, 0x48, 0x41, 0x44, 0x41, 0x4d, 0x41, 0x52, 0x44, 0x34,
+0x28, 0x20, 0x74, 0x6d, 0x70, 0x5b, 0x69, 0x5d, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6d, 0x70,
+0x5b, 0x69, 0x5d, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x5b, 0x69, 0x5d, 0x5b, 0x32,
+0x5d, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x5b, 0x69, 0x5d, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x61, 0x30,
+0x2c, 0x20, 0x61, 0x31, 0x2c, 0x20, 0x61, 0x32, 0x2c, 0x20, 0x61, 0x33, 0x20, 0x29, 0x3b, 0x5c,
+0x0a, 0x7d, 0x5c, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d,
+0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x34, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x20, 0x29,
+0x5c, 0x0a, 0x7b, 0x5c, 0x0a, 0x48, 0x41, 0x44, 0x41, 0x4d, 0x41, 0x52, 0x44, 0x34, 0x28, 0x20,
+0x61, 0x30, 0x2c, 0x20, 0x61, 0x31, 0x2c, 0x20, 0x61, 0x32, 0x2c, 0x20, 0x61, 0x33, 0x2c, 0x20,
+0x74, 0x6d, 0x70, 0x5b, 0x30, 0x5d, 0x5b, 0x69, 0x5d, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x5b, 0x31,
+0x5d, 0x5b, 0x69, 0x5d, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x5b, 0x32, 0x5d, 0x5b, 0x69, 0x5d, 0x2c,
+0x20, 0x74, 0x6d, 0x70, 0x5b, 0x33, 0x5d, 0x5b, 0x69, 0x5d, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x73,
+0x75, 0x6d, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x32, 0x28, 0x20, 0x61, 0x30, 0x20, 0x29,
+0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x32, 0x28, 0x20, 0x61, 0x31, 0x20, 0x29, 0x20, 0x2b, 0x20,
+0x61, 0x62, 0x73, 0x32, 0x28, 0x20, 0x61, 0x32, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73,
+0x32, 0x28, 0x20, 0x61, 0x33, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x7d, 0x5c, 0x0a, 0x72, 0x65, 0x74,
+0x75, 0x72, 0x6e, 0x20, 0x28, 0x28, 0x28, 0x73, 0x75, 0x6d, 0x5f, 0x74, 0x29, 0x73, 0x75, 0x6d,
+0x29, 0x20, 0x2b, 0x20, 0x28, 0x73, 0x75, 0x6d, 0x3e, 0x3e, 0x42, 0x49, 0x54, 0x53, 0x5f, 0x50,
+0x45, 0x52, 0x5f, 0x53, 0x55, 0x4d, 0x29, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x3b, 0x5c, 0x0a,
+0x7d, 0x0a, 0x2f, 0x2a, 0x0a, 0x2a, 0x20, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x20, 0x66,
+0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f,
+0x72, 0x6d, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x20, 0x73, 0x75,
+0x6d, 0x20, 0x72, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61,
+0x6e, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x67,
+0x65, 0x72, 0x73, 0x0a, 0x2a, 0x2f, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c,
+0x6c, 0x65, 0x6c, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x76, 0x61, 0x6c,
+0x75, 0x65, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x2c, 0x20, 0x76, 0x6f, 0x6c, 0x61, 0x74,
+0x69, 0x6c, 0x65, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x2a, 0x61,
+0x72, 0x72, 0x61, 0x79, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5b, 0x78,
+0x5d, 0x20, 0x3d, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3b, 0x0a, 0x62, 0x61, 0x72, 0x72, 0x69,
+0x65, 0x72, 0x28, 0x20, 0x43, 0x4c, 0x4b, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x4d, 0x45,
+0x4d, 0x5f, 0x46, 0x45, 0x4e, 0x43, 0x45, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x64,
+0x69, 0x6d, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73,
+0x69, 0x7a, 0x65, 0x28, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28,
+0x20, 0x64, 0x69, 0x6d, 0x20, 0x3e, 0x20, 0x31, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x64, 0x69, 0x6d,
+0x20, 0x3e, 0x3e, 0x3d, 0x20, 0x31, 0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x78, 0x20, 0x3c, 0x20,
+0x64, 0x69, 0x6d, 0x20, 0x29, 0x0a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5b, 0x78, 0x5d, 0x20, 0x2b,
+0x3d, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5b, 0x78, 0x20, 0x2b, 0x20, 0x64, 0x69, 0x6d, 0x5d,
+0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x64, 0x69, 0x6d, 0x20, 0x3e, 0x20, 0x33, 0x32, 0x20, 0x29,
+0x0a, 0x62, 0x61, 0x72, 0x72, 0x69, 0x65, 0x72, 0x28, 0x20, 0x43, 0x4c, 0x4b, 0x5f, 0x4c, 0x4f,
+0x43, 0x41, 0x4c, 0x5f, 0x4d, 0x45, 0x4d, 0x5f, 0x46, 0x45, 0x4e, 0x43, 0x45, 0x20, 0x29, 0x3b,
+0x0a, 0x7d, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5b,
+0x30, 0x5d, 0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x76, 0x5f, 0x63, 0x6f, 0x73,
+0x74, 0x28, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x6d, 0x76, 0x64, 0x20, 0x29, 0x0a, 0x7b,
+0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6d, 0x76, 0x64, 0x66, 0x20, 0x3d, 0x20, 0x28,
+0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x6d, 0x76, 0x64, 0x2e, 0x78, 0x2c, 0x20, 0x6d,
+0x76, 0x64, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x2e, 0x30, 0x66, 0x3b, 0x0a, 0x66, 0x6c,
+0x6f, 0x61, 0x74, 0x32, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x72, 0x6f, 0x75, 0x6e,
+0x64, 0x28, 0x20, 0x6c, 0x6f, 0x67, 0x32, 0x28, 0x6d, 0x76, 0x64, 0x66, 0x29, 0x20, 0x2a, 0x20,
+0x32, 0x2e, 0x30, 0x66, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x37, 0x31, 0x38, 0x66, 0x20, 0x2b, 0x20,
+0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x21, 0x21, 0x6d, 0x76, 0x64, 0x2e, 0x78,
+0x2c, 0x20, 0x21, 0x21, 0x6d, 0x76, 0x64, 0x2e, 0x79, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x65,
+0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x20, 0x28, 0x63, 0x6f, 0x73, 0x74,
+0x2e, 0x78, 0x20, 0x2b, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x2e, 0x79, 0x29, 0x3b, 0x0a, 0x7d, 0x0a,
+0x2f, 0x2a, 0x20, 0x4d, 0x6f, 0x64, 0x65, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
+0x6e, 0x20, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x73, 0x2c, 0x20, 0x73, 0x65, 0x6c, 0x65,
+0x63, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x20, 0x53, 0x41, 0x54,
+0x44, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20,
+0x65, 0x61, 0x63, 0x68, 0x20, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x0a, 0x2a, 0x20, 0x6d, 0x61,
+0x63, 0x72, 0x6f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x20, 0x20, 0x57, 0x68, 0x65, 0x6e, 0x20,
+0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x42, 0x20, 0x73, 0x6c, 0x69, 0x63,
+0x65, 0x73, 0x2c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65,
+0x73, 0x20, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20,
+0x63, 0x6f, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x0a, 0x2a, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x20,
+0x62, 0x69, 0x64, 0x69, 0x72, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x2e, 0x20, 0x20, 0x2a, 0x2f,
+0x0a, 0x2f, 0x2a, 0x20, 0x46, 0x6f, 0x75, 0x72, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73,
+0x20, 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x6c, 0x79, 0x20, 0x6d,
+0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x20, 0x38, 0x78, 0x38, 0x20, 0x42, 0x49, 0x44, 0x49, 0x52,
+0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x53, 0x41, 0x54, 0x44, 0x20,
+0x2a, 0x2f, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x69, 0x64, 0x69, 0x72, 0x5f, 0x73, 0x61, 0x74,
+0x64, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x69, 0x69, 0x5f, 0x63, 0x6f, 0x6f, 0x70, 0x34, 0x28, 0x20,
+0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32,
+0x64, 0x5f, 0x74, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x2c,
+0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73, 0x2c, 0x0a, 0x72,
+0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64,
+0x5f, 0x74, 0x20, 0x66, 0x72, 0x65, 0x66, 0x30, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c,
+0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x30, 0x2c, 0x0a, 0x72, 0x65, 0x61,
+0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74,
+0x20, 0x66, 0x72, 0x65, 0x66, 0x31, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x0a, 0x69,
+0x6e, 0x74, 0x32, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x31, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x77,
+0x65, 0x69, 0x67, 0x68, 0x74, 0x2c, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x75, 0x6d,
+0x32, 0x5f, 0x74, 0x20, 0x2a, 0x74, 0x6d, 0x70, 0x70, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x69,
+0x64, 0x78, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x76, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6c, 0x65, 0x20,
+0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x28, 0x20, 0x2a, 0x74,
+0x6d, 0x70, 0x20, 0x29, 0x5b, 0x34, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x76, 0x6f, 0x6c, 0x61, 0x74,
+0x69, 0x6c, 0x65, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74,
+0x28, 0x20, 0x2a, 0x20, 0x29, 0x5b, 0x34, 0x5d, 0x29, 0x74, 0x6d, 0x70, 0x70, 0x3b, 0x0a, 0x73,
+0x75, 0x6d, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x30, 0x2c, 0x20, 0x62, 0x31, 0x2c, 0x20, 0x62, 0x32,
+0x2c, 0x20, 0x62, 0x33, 0x3b, 0x0a, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x75, 0x6d,
+0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x66, 0x72, 0x65, 0x66, 0x30,
+0x41, 0x70, 0x6f, 0x73, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x71, 0x70,
+0x6f, 0x73, 0x30, 0x2e, 0x78, 0x3e, 0x3e, 0x32, 0x2c, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x30, 0x2e,
+0x79, 0x3e, 0x3e, 0x32, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x68, 0x70, 0x65, 0x6c, 0x30,
+0x41, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x30, 0x2e, 0x78, 0x26, 0x32, 0x29,
+0x3e, 0x3e, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x30, 0x2e, 0x79, 0x26,
+0x32, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x30, 0x42, 0x20,
+0x3d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x71, 0x70, 0x6f, 0x73, 0x30, 0x20, 0x2b, 0x20,
+0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x28, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x30, 0x2e, 0x78,
+0x26, 0x31, 0x29, 0x3c, 0x3c, 0x31, 0x29, 0x2c, 0x20, 0x28, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x30,
+0x2e, 0x79, 0x26, 0x31, 0x29, 0x3c, 0x3c, 0x31, 0x29, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32,
+0x20, 0x66, 0x72, 0x65, 0x66, 0x30, 0x42, 0x70, 0x6f, 0x73, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e,
+0x74, 0x32, 0x29, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x30, 0x42, 0x2e, 0x78, 0x3e, 0x3e, 0x32, 0x2c,
+0x20, 0x71, 0x70, 0x6f, 0x73, 0x30, 0x42, 0x2e, 0x79, 0x3e, 0x3e, 0x32, 0x29, 0x3b, 0x0a, 0x69,
+0x6e, 0x74, 0x20, 0x68, 0x70, 0x65, 0x6c, 0x30, 0x42, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x71, 0x70,
+0x6f, 0x73, 0x30, 0x42, 0x2e, 0x78, 0x26, 0x32, 0x29, 0x3e, 0x3e, 0x31, 0x29, 0x20, 0x2b, 0x20,
+0x28, 0x71, 0x70, 0x6f, 0x73, 0x30, 0x42, 0x2e, 0x79, 0x26, 0x32, 0x29, 0x3b, 0x0a, 0x69, 0x6e,
+0x74, 0x32, 0x20, 0x66, 0x72, 0x65, 0x66, 0x31, 0x41, 0x70, 0x6f, 0x73, 0x20, 0x3d, 0x20, 0x28,
+0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x31, 0x2e, 0x78, 0x3e, 0x3e, 0x32,
+0x2c, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x31, 0x2e, 0x79, 0x3e, 0x3e, 0x32, 0x29, 0x3b, 0x0a, 0x69,
+0x6e, 0x74, 0x20, 0x68, 0x70, 0x65, 0x6c, 0x31, 0x41, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x71, 0x70,
+0x6f, 0x73, 0x31, 0x2e, 0x78, 0x26, 0x32, 0x29, 0x3e, 0x3e, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x28,
+0x71, 0x70, 0x6f, 0x73, 0x31, 0x2e, 0x79, 0x26, 0x32, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32,
+0x20, 0x71, 0x70, 0x6f, 0x73, 0x31, 0x42, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29,
+0x71, 0x70, 0x6f, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x28,
+0x28, 0x71, 0x70, 0x6f, 0x73, 0x31, 0x2e, 0x78, 0x26, 0x31, 0x29, 0x3c, 0x3c, 0x31, 0x29, 0x2c,
+0x20, 0x28, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x31, 0x2e, 0x79, 0x26, 0x31, 0x29, 0x3c, 0x3c, 0x31,
+0x29, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x66, 0x72, 0x65, 0x66, 0x31, 0x42, 0x70,
+0x6f, 0x73, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x71, 0x70, 0x6f, 0x73,
+0x31, 0x42, 0x2e, 0x78, 0x3e, 0x3e, 0x32, 0x2c, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x31, 0x42, 0x2e,
+0x79, 0x3e, 0x3e, 0x32, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x68, 0x70, 0x65, 0x6c, 0x31,
+0x42, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x31, 0x42, 0x2e, 0x78, 0x26, 0x32,
+0x29, 0x3e, 0x3e, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x31, 0x42, 0x2e,
+0x79, 0x26, 0x32, 0x29, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f,
+0x73, 0x68, 0x69, 0x66, 0x74, 0x30, 0x41, 0x20, 0x3d, 0x20, 0x38, 0x20, 0x2a, 0x20, 0x68, 0x70,
+0x65, 0x6c, 0x30, 0x41, 0x2c, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74,
+0x30, 0x42, 0x20, 0x3d, 0x20, 0x38, 0x20, 0x2a, 0x20, 0x68, 0x70, 0x65, 0x6c, 0x30, 0x42, 0x3b,
+0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74,
+0x31, 0x41, 0x20, 0x3d, 0x20, 0x38, 0x20, 0x2a, 0x20, 0x68, 0x70, 0x65, 0x6c, 0x31, 0x41, 0x2c,
+0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x31, 0x42, 0x20, 0x3d, 0x20,
+0x38, 0x20, 0x2a, 0x20, 0x68, 0x70, 0x65, 0x6c, 0x31, 0x42, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74,
+0x20, 0x76, 0x41, 0x2c, 0x20, 0x76, 0x42, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x65, 0x6e,
+0x63, 0x2c, 0x20, 0x72, 0x65, 0x66, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x66, 0x31, 0x3b, 0x0a, 0x75,
+0x69, 0x6e, 0x74, 0x20, 0x61, 0x30, 0x2c, 0x20, 0x61, 0x31, 0x3b, 0x0a, 0x63, 0x6f, 0x6e, 0x73,
+0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x32, 0x20, 0x3d, 0x20,
+0x36, 0x34, 0x20, 0x2d, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3b, 0x0a, 0x23, 0x64, 0x65,
+0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x42, 0x49, 0x44, 0x49, 0x52, 0x5f,
+0x44, 0x49, 0x46, 0x46, 0x28, 0x20, 0x4f, 0x55, 0x54, 0x2c, 0x20, 0x58, 0x20, 0x29, 0x5c, 0x0a,
+0x65, 0x6e, 0x63, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65,
+0x75, 0x69, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x2c,
+0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x70, 0x6f,
+0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x58, 0x2c, 0x20, 0x69, 0x64,
+0x78, 0x29, 0x20, 0x29, 0x2e, 0x73, 0x30, 0x3b, 0x5c, 0x0a, 0x76, 0x41, 0x20, 0x3d, 0x20, 0x28,
+0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x72,
+0x65, 0x66, 0x30, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70,
+0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x30, 0x41, 0x70, 0x6f, 0x73, 0x20, 0x2b,
+0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x58, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x29, 0x20,
+0x29, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x3e, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69,
+0x66, 0x74, 0x30, 0x41, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x3b, 0x5c, 0x0a, 0x76,
+0x42, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75,
+0x69, 0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x30, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c,
+0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x30, 0x42,
+0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x58, 0x2c, 0x20,
+0x69, 0x64, 0x78, 0x29, 0x20, 0x29, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x3e, 0x20, 0x6d, 0x61, 0x73,
+0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x30, 0x42, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46,
+0x46, 0x3b, 0x5c, 0x0a, 0x72, 0x65, 0x66, 0x30, 0x20, 0x3d, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64,
+0x28, 0x20, 0x76, 0x41, 0x2c, 0x20, 0x76, 0x42, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x76, 0x41, 0x20,
+0x3d, 0x20, 0x28, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28,
+0x20, 0x66, 0x72, 0x65, 0x66, 0x31, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20, 0x73,
+0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x31, 0x41, 0x70, 0x6f,
+0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x58, 0x2c, 0x20, 0x69, 0x64,
+0x78, 0x29, 0x20, 0x29, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x3e, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f,
+0x73, 0x68, 0x69, 0x66, 0x74, 0x31, 0x41, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x3b,
+0x5c, 0x0a, 0x76, 0x42, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61,
+0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x31, 0x5f, 0x70, 0x6c, 0x61, 0x6e,
+0x65, 0x73, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x72, 0x65,
+0x66, 0x31, 0x42, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28,
+0x58, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x29, 0x20, 0x29, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x3e, 0x20,
+0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x31, 0x42, 0x29, 0x20, 0x26, 0x20,
+0x30, 0x78, 0x46, 0x46, 0x3b, 0x5c, 0x0a, 0x72, 0x65, 0x66, 0x31, 0x20, 0x3d, 0x20, 0x72, 0x68,
+0x61, 0x64, 0x64, 0x28, 0x20, 0x76, 0x41, 0x2c, 0x20, 0x76, 0x42, 0x20, 0x29, 0x3b, 0x5c, 0x0a,
+0x4f, 0x55, 0x54, 0x20, 0x3d, 0x20, 0x65, 0x6e, 0x63, 0x20, 0x2d, 0x20, 0x28, 0x28, 0x72, 0x65,
+0x66, 0x30, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x2b, 0x20, 0x72, 0x65,
+0x66, 0x31, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x32, 0x20, 0x2b, 0x20, 0x28,
+0x31, 0x20, 0x3c, 0x3c, 0x20, 0x35, 0x29, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x36, 0x29, 0x3b, 0x0a,
+0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x44, 0x49, 0x46,
+0x46, 0x5f, 0x45, 0x58, 0x28, 0x20, 0x4f, 0x55, 0x54, 0x2c, 0x20, 0x61, 0x2c, 0x20, 0x62, 0x20,
+0x29, 0x5c, 0x0a, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x42, 0x49, 0x44, 0x49, 0x52, 0x5f, 0x44, 0x49,
+0x46, 0x46, 0x28, 0x20, 0x61, 0x30, 0x2c, 0x20, 0x61, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x52, 0x45,
+0x41, 0x44, 0x5f, 0x42, 0x49, 0x44, 0x49, 0x52, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x28, 0x20, 0x61,
+0x31, 0x2c, 0x20, 0x62, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x4f, 0x55, 0x54, 0x20, 0x3d, 0x20, 0x61,
+0x30, 0x20, 0x2b, 0x20, 0x28, 0x61, 0x31, 0x3c, 0x3c, 0x42, 0x49, 0x54, 0x53, 0x5f, 0x50, 0x45,
+0x52, 0x5f, 0x53, 0x55, 0x4d, 0x29, 0x3b, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20,
+0x52, 0x4f, 0x57, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x53, 0x41, 0x54, 0x44, 0x28, 0x20, 0x61, 0x2c,
+0x20, 0x62, 0x2c, 0x20, 0x63, 0x20, 0x29, 0x5c, 0x0a, 0x66, 0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73,
+0x2e, 0x79, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x3b, 0x5c, 0x0a, 0x66, 0x72, 0x65, 0x66, 0x30, 0x41,
+0x70, 0x6f, 0x73, 0x2e, 0x79, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x5c, 0x0a, 0x66, 0x72, 0x65,
+0x66, 0x30, 0x42, 0x70, 0x6f, 0x73, 0x2e, 0x79, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x5c, 0x0a,
+0x66, 0x72, 0x65, 0x66, 0x31, 0x41, 0x70, 0x6f, 0x73, 0x2e, 0x79, 0x20, 0x2b, 0x3d, 0x20, 0x63,
+0x3b, 0x5c, 0x0a, 0x66, 0x72, 0x65, 0x66, 0x31, 0x42, 0x70, 0x6f, 0x73, 0x2e, 0x79, 0x20, 0x2b,
+0x3d, 0x20, 0x63, 0x3b, 0x5c, 0x0a, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x5f,
+0x45, 0x58, 0x28, 0x20, 0x62, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x34, 0x20, 0x29, 0x3b, 0x5c,
+0x0a, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x5f, 0x45, 0x58, 0x28, 0x20, 0x62,
+0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x52, 0x45, 0x41, 0x44,
+0x5f, 0x44, 0x49, 0x46, 0x46, 0x5f, 0x45, 0x58, 0x28, 0x20, 0x62, 0x32, 0x2c, 0x20, 0x32, 0x2c,
+0x20, 0x36, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x44, 0x49, 0x46, 0x46,
+0x5f, 0x45, 0x58, 0x28, 0x20, 0x62, 0x33, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x37, 0x20, 0x29, 0x3b,
+0x5c, 0x0a, 0x48, 0x41, 0x44, 0x41, 0x4d, 0x41, 0x52, 0x44, 0x34, 0x28, 0x20, 0x74, 0x6d, 0x70,
+0x5b, 0x69, 0x64, 0x78, 0x5d, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x5b, 0x69, 0x64,
+0x78, 0x5d, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x5b, 0x69, 0x64, 0x78, 0x5d, 0x5b,
+0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x5b, 0x69, 0x64, 0x78, 0x5d, 0x5b, 0x33, 0x5d, 0x2c,
+0x20, 0x62, 0x30, 0x2c, 0x20, 0x62, 0x31, 0x2c, 0x20, 0x62, 0x32, 0x2c, 0x20, 0x62, 0x33, 0x20,
+0x29, 0x3b, 0x5c, 0x0a, 0x48, 0x41, 0x44, 0x41, 0x4d, 0x41, 0x52, 0x44, 0x34, 0x28, 0x20, 0x62,
+0x30, 0x2c, 0x20, 0x62, 0x31, 0x2c, 0x20, 0x62, 0x32, 0x2c, 0x20, 0x62, 0x33, 0x2c, 0x20, 0x74,
+0x6d, 0x70, 0x5b, 0x30, 0x5d, 0x5b, 0x69, 0x64, 0x78, 0x5d, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x5b,
+0x31, 0x5d, 0x5b, 0x69, 0x64, 0x78, 0x5d, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x5b, 0x32, 0x5d, 0x5b,
+0x69, 0x64, 0x78, 0x5d, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x5b, 0x33, 0x5d, 0x5b, 0x69, 0x64, 0x78,
+0x5d, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x73, 0x75, 0x6d, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x62, 0x73,
+0x32, 0x28, 0x20, 0x62, 0x30, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x32, 0x28, 0x20,
+0x62, 0x31, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x32, 0x28, 0x20, 0x62, 0x32, 0x20,
+0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x32, 0x28, 0x20, 0x62, 0x33, 0x20, 0x29, 0x3b, 0x0a,
+0x52, 0x4f, 0x57, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x53, 0x41, 0x54, 0x44, 0x28, 0x20, 0x30, 0x2c,
+0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x52, 0x4f, 0x57, 0x5f, 0x38, 0x78, 0x34,
+0x5f, 0x53, 0x41, 0x54, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x34, 0x20, 0x29,
+0x3b, 0x0a, 0x23, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x42, 0x49,
+0x44, 0x49, 0x52, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x0a, 0x23, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20,
+0x52, 0x45, 0x41, 0x44, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x5f, 0x45, 0x58, 0x0a, 0x23, 0x75, 0x6e,
+0x64, 0x65, 0x66, 0x20, 0x52, 0x4f, 0x57, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x53, 0x41, 0x54, 0x44,
+0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x28, 0x28, 0x73, 0x75, 0x6d, 0x5f, 0x74,
+0x29, 0x73, 0x75, 0x6d, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x73, 0x75, 0x6d, 0x3e, 0x3e, 0x42, 0x49,
+0x54, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x4d, 0x29, 0x29, 0x20, 0x3e, 0x3e, 0x20,
+0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x2f, 0x2a, 0x0a, 0x2a, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x73,
+0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2d, 0x20, 0x70, 0x69, 0x63, 0x6b, 0x20,
+0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x70,
+0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x66, 0x6f,
+0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x38, 0x78, 0x38, 0x20, 0x6d, 0x61, 0x63, 0x72, 0x6f,
+0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x0a, 0x2a, 0x20, 0x49, 0x6e, 0x74, 0x72, 0x61, 0x2c, 0x20,
+0x6c, 0x69, 0x73, 0x74, 0x30, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x31, 0x2e, 0x20,
+0x20, 0x57, 0x68, 0x65, 0x6e, 0x20, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x20,
+0x61, 0x20, 0x42, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x2c, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20,
+0x74, 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x20, 0x62, 0x69, 0x64, 0x69, 0x72,
+0x0a, 0x2a, 0x20, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73,
+0x2e, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65,
+0x73, 0x5f, 0x6d, 0x76, 0x73, 0x5b, 0x30, 0x7c, 0x31, 0x5d, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66,
+0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x5f, 0x63, 0x6f,
+0x73, 0x74, 0x73, 0x5b, 0x30, 0x7c, 0x31, 0x5d, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6c, 0x61, 0x72,
+0x67, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x0a,
+0x2a, 0x20, 0x68, 0x6f, 0x6c, 0x64, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x66, 0x72, 0x61, 0x6d,
+0x65, 0x73, 0x20, 0x77, 0x6f, 0x72, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x6f, 0x74, 0x69,
+0x6f, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x20, 0x20, 0x57, 0x65, 0x20,
+0x6d, 0x75, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x6f,
+0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x0a, 0x2a, 0x20, 0x6c,
+0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73,
+0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x27, 0x73, 0x20, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73,
+0x3a, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x20, 0x20, 0x43, 0x50, 0x55, 0x20, 0x65, 0x71, 0x75, 0x69,
+0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x2d, 0x3e, 0x6c, 0x6f,
+0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x73, 0x5b, 0x30, 0x5d, 0x5b, 0x62, 0x20, 0x2d, 0x20,
+0x70, 0x30, 0x20, 0x2d, 0x20, 0x31, 0x5d, 0x0a, 0x2a, 0x20, 0x20, 0x20, 0x47, 0x50, 0x55, 0x20,
+0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x66, 0x65, 0x6e, 0x63,
+0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x73, 0x30, 0x5b, 0x28, 0x62, 0x20,
+0x2d, 0x20, 0x70, 0x30, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x62, 0x5f, 0x63,
+0x6f, 0x75, 0x6e, 0x74, 0x5d, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
+0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x50, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x20, 0x65,
+0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x20, 0x5b, 0x6d, 0x62, 0x5f, 0x77, 0x69,
+0x64, 0x74, 0x68, 0x2c, 0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5d, 0x0a,
+0x2a, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20,
+0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x42,
+0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x20, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x3a,
+0x20, 0x20, 0x5b, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x2a, 0x20, 0x34, 0x2c,
+0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5d, 0x0a, 0x2a, 0x2f, 0x0a, 0x6b,
+0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x5f,
+0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f,
+0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x20,
+0x20, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x2c, 0x0a, 0x72, 0x65,
+0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64, 0x5f,
+0x74, 0x20, 0x20, 0x20, 0x66, 0x72, 0x65, 0x66, 0x30, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73,
+0x2c, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67,
+0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x20, 0x20, 0x66, 0x72, 0x65, 0x66, 0x31, 0x5f, 0x70, 0x6c,
+0x61, 0x6e, 0x65, 0x73, 0x2c, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62,
+0x61, 0x6c, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x32, 0x20, 0x20, 0x2a, 0x66, 0x65, 0x6e, 0x63,
+0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x73, 0x30, 0x2c, 0x0a, 0x63, 0x6f,
+0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74,
+0x32, 0x20, 0x20, 0x2a, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f,
+0x6d, 0x76, 0x73, 0x31, 0x2c, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62,
+0x61, 0x6c, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x32, 0x20, 0x20, 0x2a, 0x66, 0x72, 0x65, 0x66,
+0x31, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x73, 0x30, 0x2c, 0x0a, 0x63,
+0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74, 0x31,
+0x36, 0x5f, 0x74, 0x20, 0x2a, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73,
+0x5f, 0x6d, 0x76, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x30, 0x2c, 0x0a, 0x63, 0x6f, 0x6e, 0x73,
+0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74,
+0x20, 0x2a, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76,
+0x5f, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x31, 0x2c, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67,
+0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x2a,
+0x66, 0x65, 0x6e, 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x2c,
+0x0a, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x63, 0x6f,
+0x73, 0x74, 0x73, 0x2c, 0x0a, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x66, 0x72, 0x61, 0x6d, 0x65,
+0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2c, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x6e,
+0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x63, 0x6f,
+0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2c, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20,
+0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2a,
+0x73, 0x61, 0x74, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x62, 0x69, 0x70, 0x72, 0x65, 0x64, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x2c,
+0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x69, 0x73, 0x74, 0x5f, 0x73, 0x63, 0x61, 0x6c,
+0x65, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x62, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x30, 0x2c, 0x0a, 0x69, 0x6e, 0x74,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x70, 0x31, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x61, 0x6d,
+0x62, 0x64, 0x61, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f, 0x78,
+0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64,
+0x28, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x5f, 0x62, 0x69, 0x64,
+0x69, 0x72, 0x20, 0x3d, 0x20, 0x62, 0x20, 0x3c, 0x20, 0x70, 0x31, 0x3b, 0x0a, 0x69, 0x66, 0x28,
+0x20, 0x62, 0x5f, 0x62, 0x69, 0x64, 0x69, 0x72, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x2f, 0x2a, 0x20,
+0x77, 0x68, 0x65, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x42,
+0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x2c, 0x20, 0x69, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74,
+0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x42, 0x49, 0x44, 0x49, 0x52, 0x20, 0x53,
+0x41, 0x54, 0x44, 0x0a, 0x2a, 0x20, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e,
+0x74, 0x73, 0x2c, 0x20, 0x73, 0x6f, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6c, 0x61, 0x75,
+0x6e, 0x63, 0x68, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x66, 0x6f, 0x75, 0x72, 0x20,
+0x74, 0x69, 0x6d, 0x65, 0x73, 0x20, 0x61, 0x73, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x74, 0x68,
+0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x69, 0x6e, 0x0a, 0x2a, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72,
+0x20, 0x74, 0x6f, 0x20, 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77,
+0x6f, 0x72, 0x6b, 0x20, 0x61, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20,
+0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x47, 0x50, 0x55, 0x2e, 0x20, 0x20, 0x41, 0x6e, 0x64,
+0x20, 0x69, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x0a, 0x2a, 0x20, 0x70, 0x61,
+0x64, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x69, 0x6e,
+0x20, 0x74, 0x68, 0x65, 0x20, 0x58, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x6d, 0x62, 0x5f, 0x78, 0x20, 0x3e, 0x3e, 0x3d, 0x20, 0x32, 0x3b,
+0x0a, 0x69, 0x66, 0x28, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x62, 0x5f,
+0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x29, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a,
+0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f, 0x79, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74,
+0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x31, 0x20, 0x29, 0x3b,
+0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d,
+0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65,
+0x28, 0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f, 0x63, 0x6f,
+0x75, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x2a,
+0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20,
+0x6d, 0x62, 0x5f, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x20, 0x2b, 0x20, 0x6d,
+0x62, 0x5f, 0x79, 0x20, 0x2a, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a,
+0x2f, 0x2a, 0x20, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x20, 0x69, 0x6e,
+0x74, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5b, 0x34, 0x5d,
+0x20, 0x66, 0x6f, 0x72, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c,
+0x20, 0x28, 0x73, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x73, 0x74,
+0x29, 0x20, 0x2a, 0x2f, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x20, 0x3c, 0x20,
+0x34, 0x20, 0x26, 0x26, 0x20, 0x6d, 0x62, 0x5f, 0x79, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x20, 0x29,
+0x0a, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5b, 0x6d, 0x62, 0x5f,
+0x78, 0x5d, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x63, 0x6f, 0x73,
+0x74, 0x20, 0x3d, 0x20, 0x43, 0x4f, 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x58, 0x3b, 0x0a, 0x69, 0x6e,
+0x74, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x30, 0x3b,
+0x0a, 0x69, 0x66, 0x28, 0x20, 0x21, 0x62, 0x5f, 0x62, 0x69, 0x64, 0x69, 0x72, 0x20, 0x29, 0x0a,
+0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x65,
+0x6e, 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5b, 0x6d, 0x62,
+0x5f, 0x78, 0x79, 0x5d, 0x3b, 0x0a, 0x43, 0x4f, 0x50, 0x59, 0x32, 0x5f, 0x49, 0x46, 0x5f, 0x4c,
+0x54, 0x28, 0x20, 0x62, 0x63, 0x6f, 0x73, 0x74, 0x2c, 0x20, 0x69, 0x63, 0x6f, 0x73, 0x74, 0x2c,
+0x20, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x3b,
+0x0a, 0x7d, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x62, 0x20, 0x21, 0x3d, 0x20, 0x70, 0x30, 0x20, 0x29,
+0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x76, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x30, 0x20,
+0x3d, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76,
+0x5f, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x30, 0x5b, 0x28, 0x62, 0x20, 0x2d, 0x20, 0x70, 0x30, 0x20,
+0x2d, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x62, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20,
+0x2b, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x3b, 0x0a, 0x43, 0x4f, 0x50, 0x59, 0x32, 0x5f,
+0x49, 0x46, 0x5f, 0x4c, 0x54, 0x28, 0x20, 0x62, 0x63, 0x6f, 0x73, 0x74, 0x2c, 0x20, 0x6d, 0x76,
+0x5f, 0x63, 0x6f, 0x73, 0x74, 0x30, 0x2c, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65,
+0x64, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x62, 0x20,
+0x21, 0x3d, 0x20, 0x70, 0x31, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x76,
+0x5f, 0x63, 0x6f, 0x73, 0x74, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f,
+0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x31, 0x5b, 0x28,
+0x70, 0x31, 0x20, 0x2d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x62,
+0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x2b, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x3b,
+0x0a, 0x43, 0x4f, 0x50, 0x59, 0x32, 0x5f, 0x49, 0x46, 0x5f, 0x4c, 0x54, 0x28, 0x20, 0x62, 0x63,
+0x6f, 0x73, 0x74, 0x2c, 0x20, 0x6d, 0x76, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x31, 0x2c, 0x20, 0x6c,
+0x69, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x3b, 0x0a, 0x7d,
+0x0a, 0x69, 0x66, 0x28, 0x20, 0x62, 0x5f, 0x62, 0x69, 0x64, 0x69, 0x72, 0x20, 0x29, 0x0a, 0x7b,
+0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x20, 0x3d, 0x20, 0x28, 0x69,
+0x6e, 0x74, 0x32, 0x29, 0x28, 0x6d, 0x62, 0x5f, 0x78, 0x2c, 0x20, 0x6d, 0x62, 0x5f, 0x79, 0x29,
+0x20, 0x3c, 0x3c, 0x20, 0x33, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f, 0x69, 0x20,
+0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28,
+0x20, 0x30, 0x20, 0x29, 0x20, 0x26, 0x20, 0x33, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62,
+0x5f, 0x69, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f,
+0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x31, 0x20, 0x29, 0x20, 0x2a, 0x20,
+0x28, 0x67, 0x65, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x28,
+0x20, 0x30, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x67, 0x65,
+0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29, 0x20,
+0x3e, 0x3e, 0x20, 0x32, 0x29, 0x3b, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61,
+0x6c, 0x20, 0x2b, 0x3d, 0x20, 0x6d, 0x62, 0x5f, 0x69, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70,
+0x20, 0x2a, 0x20, 0x34, 0x3b, 0x0a, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
+0x20, 0x2b, 0x3d, 0x20, 0x6d, 0x62, 0x5f, 0x69, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20,
+0x2a, 0x20, 0x31, 0x36, 0x3b, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x54, 0x52,
+0x59, 0x5f, 0x42, 0x49, 0x44, 0x49, 0x52, 0x28, 0x20, 0x6d, 0x76, 0x30, 0x2c, 0x20, 0x6d, 0x76,
+0x31, 0x2c, 0x20, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x20, 0x29, 0x5c, 0x0a, 0x7b, 0x5c,
+0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x69,
+0x6e, 0x74, 0x32, 0x29, 0x28, 0x28, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x2e, 0x78, 0x3c, 0x3c, 0x32,
+0x29, 0x20, 0x2b, 0x20, 0x6d, 0x76, 0x30, 0x2e, 0x78, 0x2c, 0x20, 0x28, 0x63, 0x6f, 0x6f, 0x72,
+0x64, 0x2e, 0x79, 0x3c, 0x3c, 0x32, 0x29, 0x20, 0x2b, 0x20, 0x6d, 0x76, 0x30, 0x2e, 0x79, 0x29,
+0x3b, 0x5c, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x31, 0x20, 0x3d, 0x20,
+0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x28, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x2e, 0x78, 0x3c,
+0x3c, 0x32, 0x29, 0x20, 0x2b, 0x20, 0x6d, 0x76, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x28, 0x63, 0x6f,
+0x6f, 0x72, 0x64, 0x2e, 0x79, 0x3c, 0x3c, 0x32, 0x29, 0x20, 0x2b, 0x20, 0x6d, 0x76, 0x31, 0x2e,
+0x79, 0x29, 0x3b, 0x5c, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b,
+0x6d, 0x62, 0x5f, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x62, 0x69, 0x64, 0x69, 0x72, 0x5f, 0x73, 0x61,
+0x74, 0x64, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x69, 0x69, 0x5f, 0x63, 0x6f, 0x6f, 0x70, 0x34, 0x28,
+0x20, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x63, 0x6f,
+0x6f, 0x72, 0x64, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x30, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65,
+0x73, 0x2c, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x30, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x31, 0x5f,
+0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x31, 0x2c, 0x20, 0x62,
+0x69, 0x70, 0x72, 0x65, 0x64, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x2c, 0x20, 0x73, 0x61,
+0x74, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2c, 0x20, 0x6d, 0x62, 0x5f, 0x69, 0x20, 0x29,
+0x3b, 0x5c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x6f,
+0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x63, 0x6f,
+0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x63, 0x6f,
+0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x63, 0x6f,
+0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x33, 0x5d, 0x3b, 0x5c, 0x0a, 0x43, 0x4f,
+0x50, 0x59, 0x32, 0x5f, 0x49, 0x46, 0x5f, 0x4c, 0x54, 0x28, 0x20, 0x62, 0x63, 0x6f, 0x73, 0x74,
+0x2c, 0x20, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x20, 0x2a, 0x20, 0x6c, 0x61, 0x6d, 0x62,
+0x64, 0x61, 0x20, 0x2b, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x2c, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x5f,
+0x75, 0x73, 0x65, 0x64, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x7d, 0x0a, 0x2f, 0x2a,
+0x20, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63,
+0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x2f, 0x0a, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x32, 0x20, 0x64,
+0x6d, 0x76, 0x30, 0x2c, 0x20, 0x64, 0x6d, 0x76, 0x31, 0x3b, 0x0a, 0x73, 0x68, 0x6f, 0x72, 0x74,
+0x32, 0x20, 0x6d, 0x76, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x65, 0x66, 0x31, 0x5f, 0x6c, 0x6f,
+0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x73, 0x30, 0x5b, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d,
+0x3b, 0x0a, 0x64, 0x6d, 0x76, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x76, 0x72, 0x20, 0x2a, 0x20,
+0x28, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x29, 0x20, 0x64, 0x69, 0x73, 0x74, 0x5f, 0x73, 0x63, 0x61,
+0x6c, 0x65, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x2b, 0x20, 0x28, 0x73, 0x68, 0x6f,
+0x72, 0x74, 0x29, 0x20, 0x31, 0x32, 0x38, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x28, 0x73, 0x68, 0x6f,
+0x72, 0x74, 0x29, 0x20, 0x38, 0x3b, 0x0a, 0x64, 0x6d, 0x76, 0x31, 0x20, 0x3d, 0x20, 0x64, 0x6d,
+0x76, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x76, 0x72, 0x3b, 0x0a, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x49,
+0x44, 0x49, 0x52, 0x28, 0x20, 0x64, 0x6d, 0x76, 0x30, 0x2c, 0x20, 0x64, 0x6d, 0x76, 0x31, 0x2c,
+0x20, 0x30, 0x20, 0x29, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x69, 0x6e, 0x74,
+0x28, 0x20, 0x64, 0x6d, 0x76, 0x30, 0x20, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x61, 0x73, 0x5f, 0x75,
+0x69, 0x6e, 0x74, 0x28, 0x20, 0x64, 0x6d, 0x76, 0x31, 0x20, 0x29, 0x20, 0x29, 0x0a, 0x7b, 0x0a,
+0x2f, 0x2a, 0x20, 0x42, 0x2d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x20, 0x70, 0x72, 0x65, 0x64,
+0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x2f, 0x0a, 0x64, 0x6d, 0x76, 0x30, 0x20, 0x3d,
+0x20, 0x30, 0x3b, 0x20, 0x64, 0x6d, 0x76, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x54, 0x52,
+0x59, 0x5f, 0x42, 0x49, 0x44, 0x49, 0x52, 0x28, 0x20, 0x64, 0x6d, 0x76, 0x30, 0x2c, 0x20, 0x64,
+0x6d, 0x76, 0x31, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x2f, 0x2a, 0x20, 0x4c,
+0x30, 0x2b, 0x4c, 0x31, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+0x2a, 0x2f, 0x0a, 0x64, 0x6d, 0x76, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c,
+0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x73, 0x30, 0x5b, 0x28, 0x62, 0x20, 0x2d, 0x20,
+0x70, 0x30, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x62, 0x5f, 0x63, 0x6f, 0x75,
+0x6e, 0x74, 0x20, 0x2b, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x3b, 0x0a, 0x64, 0x6d, 0x76,
+0x31, 0x20, 0x3d, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f,
+0x6d, 0x76, 0x73, 0x31, 0x5b, 0x28, 0x70, 0x31, 0x20, 0x2d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x31,
+0x29, 0x20, 0x2a, 0x20, 0x6d, 0x62, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x2b, 0x20, 0x6d,
+0x62, 0x5f, 0x78, 0x79, 0x5d, 0x3b, 0x0a, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x49, 0x44, 0x49, 0x52,
+0x28, 0x20, 0x64, 0x6d, 0x76, 0x30, 0x2c, 0x20, 0x64, 0x6d, 0x76, 0x31, 0x2c, 0x20, 0x35, 0x20,
+0x29, 0x3b, 0x0a, 0x23, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x49,
+0x44, 0x49, 0x52, 0x0a, 0x7d, 0x0a, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x73,
+0x74, 0x73, 0x5b, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28,
+0x20, 0x62, 0x63, 0x6f, 0x73, 0x74, 0x2c, 0x20, 0x4c, 0x4f, 0x57, 0x52, 0x45, 0x53, 0x5f, 0x43,
+0x4f, 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x53, 0x4b, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x6c, 0x69,
+0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x20, 0x3c, 0x3c, 0x20, 0x4c, 0x4f, 0x57, 0x52, 0x45,
+0x53, 0x5f, 0x43, 0x4f, 0x53, 0x54, 0x5f, 0x53, 0x48, 0x49, 0x46, 0x54, 0x29, 0x3b, 0x0a, 0x7d,
+0x0a, 0x2f, 0x2a, 0x0a, 0x2a, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x20, 0x73,
+0x75, 0x6d, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x0a, 0x2a,
+0x0a, 0x2a, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68,
+0x20, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x20, 0x5b, 0x32, 0x35,
+0x36, 0x2c, 0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5d, 0x0a, 0x2a, 0x2f,
+0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x73, 0x75, 0x6d,
+0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x63, 0x6f, 0x6e,
+0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36,
+0x5f, 0x74, 0x20, 0x2a, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f,
+0x63, 0x6f, 0x73, 0x74, 0x73, 0x2c, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f,
+0x62, 0x61, 0x6c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x2a, 0x69, 0x6e,
+0x76, 0x5f, 0x71, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x2c,
+0x0a, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x72, 0x6f, 0x77, 0x5f,
+0x73, 0x61, 0x74, 0x64, 0x73, 0x2c, 0x0a, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x69, 0x6e,
+0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x66, 0x72, 0x61,
+0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x62, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x62, 0x69, 0x61, 0x73, 0x2c, 0x0a, 0x69, 0x6e, 0x74,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x62, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x30, 0x2c, 0x0a,
+0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x31, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74,
+0x20, 0x79, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f,
+0x69, 0x64, 0x28, 0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f,
+0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f,
+0x62, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x69,
+0x6e, 0x74, 0x20, 0x72, 0x6f, 0x77, 0x5f, 0x73, 0x61, 0x74, 0x64, 0x73, 0x20, 0x3d, 0x20, 0x30,
+0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x73, 0x74, 0x20, 0x3d,
+0x20, 0x30, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x73, 0x74,
+0x5f, 0x61, 0x71, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74,
+0x72, 0x61, 0x5f, 0x6d, 0x62, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x66, 0x6f, 0x72, 0x28,
+0x20, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f,
+0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x20, 0x78, 0x20, 0x3c,
+0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x20, 0x78, 0x20, 0x2b, 0x3d, 0x20,
+0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x28,
+0x20, 0x30, 0x20, 0x29, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f, 0x78,
+0x79, 0x20, 0x3d, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x6d, 0x62, 0x5f, 0x77,
+0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d,
+0x20, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x73,
+0x74, 0x73, 0x5b, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x20, 0x26, 0x20, 0x4c, 0x4f, 0x57, 0x52,
+0x45, 0x53, 0x5f, 0x43, 0x4f, 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x53, 0x4b, 0x3b, 0x0a, 0x69, 0x6e,
+0x74, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f,
+0x77, 0x72, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x5b, 0x6d, 0x62, 0x5f, 0x78, 0x79,
+0x5d, 0x20, 0x3e, 0x3e, 0x20, 0x4c, 0x4f, 0x57, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x53, 0x54,
+0x5f, 0x53, 0x48, 0x49, 0x46, 0x54, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x5f, 0x66, 0x72,
+0x61, 0x6d, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6d, 0x62, 0x20, 0x3d, 0x20, 0x28,
+0x78, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x6d, 0x62, 0x5f,
+0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x2d, 0x20, 0x31, 0x20, 0x26, 0x26, 0x20, 0x79, 0x20, 0x3e,
+0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x79, 0x20, 0x3c, 0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69,
+0x67, 0x68, 0x74, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x6d, 0x62, 0x5f, 0x77,
+0x69, 0x64, 0x74, 0x68, 0x20, 0x3c, 0x3d, 0x20, 0x32, 0x20, 0x7c, 0x7c, 0x20, 0x6d, 0x62, 0x5f,
+0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3c, 0x3d, 0x20, 0x32, 0x3b, 0x0a, 0x69, 0x66, 0x28,
+0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x62, 0x5f,
+0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6d, 0x62, 0x20, 0x29,
+0x0a, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x6d, 0x62, 0x73, 0x2b, 0x2b, 0x3b, 0x0a, 0x69, 0x6e,
+0x74, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x61, 0x71, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x73,
+0x74, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x76, 0x5f, 0x71, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x66,
+0x61, 0x63, 0x74, 0x6f, 0x72, 0x5b, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x20, 0x2b, 0x20, 0x31,
+0x32, 0x38, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x38, 0x3b, 0x0a, 0x72, 0x6f, 0x77, 0x5f, 0x73, 0x61,
+0x74, 0x64, 0x73, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x61, 0x71, 0x3b, 0x0a,
+0x69, 0x66, 0x28, 0x20, 0x62, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72,
+0x65, 0x5f, 0x6d, 0x62, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x73,
+0x74, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x3b, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x5f,
+0x65, 0x73, 0x74, 0x5f, 0x61, 0x71, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x61,
+0x71, 0x3b, 0x0a, 0x7d, 0x0a, 0x7d, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74,
+0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5b, 0x32, 0x35, 0x36, 0x5d, 0x3b, 0x0a, 0x69, 0x6e,
+0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
+0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x6f, 0x77, 0x5f, 0x73, 0x61,
+0x74, 0x64, 0x73, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c,
+0x5f, 0x73, 0x75, 0x6d, 0x28, 0x20, 0x72, 0x6f, 0x77, 0x5f, 0x73, 0x61, 0x74, 0x64, 0x73, 0x2c,
+0x20, 0x78, 0x2c, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x29, 0x3b, 0x0a, 0x63, 0x6f,
+0x73, 0x74, 0x5f, 0x65, 0x73, 0x74, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x61,
+0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65,
+0x73, 0x74, 0x2c, 0x20, 0x78, 0x2c, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x29, 0x3b,
+0x0a, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x71, 0x20, 0x3d, 0x20, 0x70,
+0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x20, 0x63, 0x6f, 0x73,
+0x74, 0x5f, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x71, 0x2c, 0x20, 0x78, 0x2c, 0x20, 0x62, 0x75, 0x66,
+0x66, 0x65, 0x72, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x6d, 0x62, 0x73,
+0x20, 0x20, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x73, 0x75,
+0x6d, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x6d, 0x62, 0x73, 0x2c, 0x20, 0x78, 0x2c,
+0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x62,
+0x20, 0x21, 0x3d, 0x20, 0x70, 0x31, 0x20, 0x29, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x73,
+0x74, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+0x29, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x73, 0x74, 0x20, 0x2a, 0x20, 0x31, 0x30, 0x30, 0x2e,
+0x30, 0x66, 0x20, 0x2f, 0x20, 0x28, 0x31, 0x32, 0x30, 0x2e, 0x30, 0x66, 0x20, 0x2b, 0x20, 0x28,
+0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x62, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x62, 0x69, 0x61,
+0x73, 0x29, 0x29, 0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f,
+0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x30,
+0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x72, 0x6f, 0x77, 0x5f, 0x73, 0x61,
+0x74, 0x64, 0x73, 0x5b, 0x79, 0x5d, 0x20, 0x3d, 0x20, 0x72, 0x6f, 0x77, 0x5f, 0x73, 0x61, 0x74,
+0x64, 0x73, 0x3b, 0x0a, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x20,
+0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2b, 0x20, 0x43, 0x4f,
+0x53, 0x54, 0x5f, 0x45, 0x53, 0x54, 0x2c, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x73, 0x74,
+0x20, 0x29, 0x3b, 0x0a, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x20,
+0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2b, 0x20, 0x43, 0x4f,
+0x53, 0x54, 0x5f, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x51, 0x2c, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f,
+0x65, 0x73, 0x74, 0x5f, 0x61, 0x71, 0x20, 0x29, 0x3b, 0x0a, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63,
+0x5f, 0x61, 0x64, 0x64, 0x28, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74,
+0x73, 0x20, 0x2b, 0x20, 0x49, 0x4e, 0x54, 0x52, 0x41, 0x5f, 0x4d, 0x42, 0x53, 0x2c, 0x20, 0x69,
+0x6e, 0x74, 0x72, 0x61, 0x5f, 0x6d, 0x62, 0x73, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x7d, 0x0a,
+0x2f, 0x2a, 0x0a, 0x2a, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x20, 0x6c,
+0x6f, 0x77, 0x72, 0x65, 0x73, 0x20, 0x6c, 0x75, 0x6d, 0x61, 0x3a, 0x20, 0x66, 0x75, 0x6c, 0x6c,
+0x2d, 0x72, 0x65, 0x73, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x64,
+0x6f, 0x77, 0x6e, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c,
+0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x20, 0x68,
+0x70, 0x65, 0x6c, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x2d, 0x2d,
+0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x69, 0x6d, 0x67, 0x20, 0x69, 0x73,
+0x20, 0x61, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65,
+0x20, 0x28, 0x61, 0x72, 0x65, 0x61, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x20, 0x74, 0x68, 0x72, 0x6f,
+0x75, 0x67, 0x68, 0x20, 0x61, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x0a, 0x2a, 0x20,
+0x63, 0x61, 0x63, 0x68, 0x65, 0x29, 0x2e, 0x20, 0x41, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x6f,
+0x66, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x6c, 0x6f, 0x63, 0x61,
+0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x78, 0x2c, 0x79, 0x29, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
+0x6e, 0x73, 0x20, 0x66, 0x6f, 0x75, 0x72, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x76, 0x61,
+0x6c, 0x75, 0x65, 0x73, 0x3a, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x76, 0x61, 0x6c, 0x2e, 0x73, 0x30,
+0x20, 0x3d, 0x20, 0x50, 0x28, 0x78, 0x2c, 0x79, 0x29, 0x0a, 0x2a, 0x20, 0x76, 0x61, 0x6c, 0x2e,
+0x73, 0x31, 0x20, 0x3d, 0x20, 0x50, 0x28, 0x78, 0x2b, 0x31, 0x2c, 0x79, 0x29, 0x0a, 0x2a, 0x20,
+0x76, 0x61, 0x6c, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x50, 0x28, 0x78, 0x2b, 0x32, 0x2c, 0x79,
+0x29, 0x0a, 0x2a, 0x20, 0x76, 0x61, 0x6c, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x50, 0x28, 0x78,
+0x2b, 0x33, 0x2c, 0x79, 0x29, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69,
+0x73, 0x20, 0x61, 0x20, 0x34, 0x78, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
+0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73,
+0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x61, 0x20, 0x74, 0x72, 0x61, 0x64, 0x65,
+0x2d, 0x6f, 0x66, 0x66, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x6d, 0x65, 0x6d,
+0x6f, 0x72, 0x79, 0x0a, 0x2a, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72,
+0x65, 0x61, 0x64, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x2e, 0x0a, 0x2a, 0x0a, 0x2a,
+0x20, 0x2d, 0x2d, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x68, 0x70, 0x65, 0x6c, 0x5f, 0x70, 0x6c, 0x61,
+0x6e, 0x65, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74,
+0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74,
+0x61, 0x69, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x75, 0x72, 0x20, 0x48, 0x50,
+0x45, 0x4c, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66,
+0x6f, 0x72, 0x0a, 0x2a, 0x20, 0x73, 0x75, 0x62, 0x70, 0x65, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x69,
+0x6e, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x20, 0x41, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x6f,
+0x66, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x6c, 0x6f, 0x63, 0x61,
+0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x78, 0x2c, 0x79, 0x29, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
+0x6e, 0x73, 0x20, 0x61, 0x20, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x20, 0x77, 0x69, 0x74, 0x68,
+0x0a, 0x2a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x75, 0x72, 0x20, 0x70, 0x6c, 0x61, 0x6e,
+0x61, 0x72, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x43, 0x20, 0x7c, 0x20, 0x56, 0x20,
+0x7c, 0x20, 0x48, 0x20, 0x7c, 0x20, 0x46, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x6c, 0x61, 0x75, 0x6e,
+0x63, 0x68, 0x20, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x20, 0x20,
+0x5b, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x20, 0x6c,
+0x6f, 0x77, 0x72, 0x65, 0x73, 0x2d, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5d, 0x0a, 0x2a, 0x2f,
+0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x64, 0x6f, 0x77,
+0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x68, 0x70, 0x65, 0x6c, 0x28, 0x20, 0x63, 0x6f, 0x6e,
+0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20,
+0x2a, 0x66, 0x65, 0x6e, 0x63, 0x2c, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c,
+0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x66, 0x65, 0x6e, 0x63,
+0x5f, 0x69, 0x6d, 0x67, 0x2c, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79,
+0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x68, 0x70, 0x65, 0x6c, 0x5f,
+0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69,
+0x64, 0x65, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x67,
+0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20,
+0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67,
+0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x75,
+0x69, 0x6e, 0x74, 0x34, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x3b, 0x0a, 0x66, 0x65, 0x6e,
+0x63, 0x20, 0x2b, 0x3d, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20,
+0x2a, 0x20, 0x32, 0x3b, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61,
+0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x73, 0x72, 0x63, 0x31, 0x20, 0x3d, 0x20,
+0x66, 0x65, 0x6e, 0x63, 0x20, 0x2b, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3b, 0x0a, 0x63,
+0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65,
+0x6c, 0x20, 0x2a, 0x73, 0x72, 0x63, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x79, 0x20, 0x3d, 0x3d, 0x20,
+0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x28,
+0x20, 0x31, 0x20, 0x29, 0x2d, 0x31, 0x29, 0x20, 0x3f, 0x20, 0x73, 0x72, 0x63, 0x31, 0x20, 0x3a,
+0x20, 0x73, 0x72, 0x63, 0x31, 0x20, 0x2b, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3b, 0x0a,
+0x69, 0x6e, 0x74, 0x32, 0x20, 0x70, 0x6f, 0x73, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32,
+0x29, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x72,
+0x69, 0x67, 0x68, 0x74, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0x0a, 0x72, 0x69, 0x67, 0x68,
+0x74, 0x20, 0x3d, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5b,
+0x78, 0x2a, 0x32, 0x5d, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x31, 0x5b, 0x78, 0x2a, 0x32, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x20, 0x3d, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64,
+0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5b, 0x78, 0x2a, 0x32, 0x2b, 0x31, 0x5d, 0x2c, 0x20, 0x73,
+0x72, 0x63, 0x31, 0x5b, 0x78, 0x2a, 0x32, 0x2b, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x61,
+0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28,
+0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x29, 0x3b, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x46, 0x0a, 0x72,
+0x69, 0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x66, 0x65,
+0x6e, 0x63, 0x5b, 0x32, 0x2a, 0x78, 0x2b, 0x31, 0x5d, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x31, 0x5b,
+0x32, 0x2a, 0x78, 0x2b, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x20,
+0x3d, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5b, 0x32, 0x2a,
+0x78, 0x2b, 0x32, 0x5d, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x31, 0x5b, 0x32, 0x2a, 0x78, 0x2b, 0x32,
+0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73, 0x31, 0x20, 0x3d,
+0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2c, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x20, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x2f, 0x2f, 0x20, 0x48, 0x0a, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x72, 0x68,
+0x61, 0x64, 0x64, 0x28, 0x20, 0x73, 0x72, 0x63, 0x31, 0x5b, 0x32, 0x2a, 0x78, 0x5d, 0x2c, 0x20,
+0x73, 0x72, 0x63, 0x32, 0x5b, 0x32, 0x2a, 0x78, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x6c, 0x65, 0x66,
+0x74, 0x20, 0x20, 0x3d, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x73, 0x72, 0x63, 0x31,
+0x5b, 0x32, 0x2a, 0x78, 0x2b, 0x31, 0x5d, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x32, 0x5b, 0x32, 0x2a,
+0x78, 0x2b, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73,
+0x32, 0x20, 0x3d, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74,
+0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x56, 0x0a, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d,
+0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x73, 0x72, 0x63, 0x31, 0x5b, 0x32, 0x2a, 0x78,
+0x2b, 0x31, 0x5d, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x32, 0x5b, 0x32, 0x2a, 0x78, 0x2b, 0x31, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x20, 0x3d, 0x20, 0x72, 0x68, 0x61, 0x64,
+0x64, 0x28, 0x20, 0x73, 0x72, 0x63, 0x31, 0x5b, 0x32, 0x2a, 0x78, 0x2b, 0x32, 0x5d, 0x2c, 0x20,
+0x73, 0x72, 0x63, 0x32, 0x5b, 0x32, 0x2a, 0x78, 0x2b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76,
+0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64,
+0x28, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x29, 0x3b,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x43, 0x0a,
+0x75, 0x69, 0x6e, 0x74, 0x34, 0x20, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x69, 0x6e,
+0x74, 0x34, 0x29, 0x20, 0x28, 0x28, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73, 0x33, 0x20,
+0x26, 0x20, 0x30, 0x78, 0x66, 0x66, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x34, 0x29, 0x20, 0x7c,
+0x20, 0x28, 0x28, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73, 0x32, 0x20, 0x26, 0x20, 0x30,
+0x78, 0x66, 0x66, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x36, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x28,
+0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73, 0x31, 0x20, 0x26, 0x20, 0x30, 0x78, 0x66, 0x66,
+0x29, 0x20, 0x3c, 0x3c, 0x20, 0x38, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x76, 0x61, 0x6c, 0x75, 0x65,
+0x73, 0x2e, 0x73, 0x30, 0x20, 0x26, 0x20, 0x30, 0x78, 0x66, 0x66, 0x29, 0x3b, 0x0a, 0x77, 0x72,
+0x69, 0x74, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x68, 0x70, 0x65,
+0x6c, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20, 0x70, 0x6f, 0x73, 0x2c, 0x20, 0x76,
+0x61, 0x6c, 0x20, 0x29, 0x3b, 0x0a, 0x78, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+0x28, 0x20, 0x78, 0x2c, 0x20, 0x78, 0x2b, 0x31, 0x2c, 0x20, 0x78, 0x2b, 0x31, 0x20, 0x3c, 0x20,
+0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x28,
+0x20, 0x30, 0x20, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d, 0x20,
+0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5b, 0x78, 0x2a, 0x32, 0x5d,
+0x2c, 0x20, 0x73, 0x72, 0x63, 0x31, 0x5b, 0x78, 0x2a, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x6c,
+0x65, 0x66, 0x74, 0x20, 0x20, 0x3d, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x66, 0x65,
+0x6e, 0x63, 0x5b, 0x78, 0x2a, 0x32, 0x2b, 0x31, 0x5d, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x31, 0x5b,
+0x78, 0x2a, 0x32, 0x2b, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73,
+0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x72, 0x69, 0x67,
+0x68, 0x74, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x29, 0x3b, 0x0a, 0x78, 0x20, 0x3d, 0x20,
+0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x20, 0x78, 0x2c, 0x20, 0x78, 0x2b, 0x31, 0x2c, 0x20,
+0x78, 0x2b, 0x31, 0x20, 0x3c, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
+0x5f, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x30, 0x20, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x69,
+0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x66, 0x65, 0x6e,
+0x63, 0x5b, 0x78, 0x2a, 0x32, 0x5d, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x31, 0x5b, 0x78, 0x2a, 0x32,
+0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x20, 0x3d, 0x20, 0x72, 0x68, 0x61,
+0x64, 0x64, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5b, 0x78, 0x2a, 0x32, 0x2b, 0x31, 0x5d, 0x2c,
+0x20, 0x73, 0x72, 0x63, 0x31, 0x5b, 0x78, 0x2a, 0x32, 0x2b, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a,
+0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x72, 0x68, 0x61, 0x64,
+0x64, 0x28, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x29,
+0x3b, 0x0a, 0x78, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x20, 0x78, 0x2c,
+0x20, 0x78, 0x2b, 0x31, 0x2c, 0x20, 0x78, 0x2b, 0x31, 0x20, 0x3c, 0x20, 0x67, 0x65, 0x74, 0x5f,
+0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x30, 0x20, 0x29,
+0x20, 0x29, 0x3b, 0x0a, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x72, 0x68, 0x61, 0x64,
+0x64, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5b, 0x78, 0x2a, 0x32, 0x5d, 0x2c, 0x20, 0x73, 0x72,
+0x63, 0x31, 0x5b, 0x78, 0x2a, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x6c, 0x65, 0x66, 0x74, 0x20,
+0x20, 0x3d, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5b, 0x78,
+0x2a, 0x32, 0x2b, 0x31, 0x5d, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x31, 0x5b, 0x78, 0x2a, 0x32, 0x2b,
+0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73, 0x33, 0x20,
+0x3d, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2c, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x20, 0x29, 0x3b, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x6d,
+0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x69, 0x6d, 0x67, 0x2c,
+0x20, 0x70, 0x6f, 0x73, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x29, 0x3b, 0x0a,
+0x7d, 0x0a, 0x2f, 0x2a, 0x0a, 0x2a, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65,
+0x20, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x20, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68,
+0x69, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x73, 0x65, 0x61, 0x72,
+0x63, 0x68, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x70, 0x79, 0x20, 0x66,
+0x72, 0x6f, 0x6d, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6f,
+0x0a, 0x2a, 0x20, 0x61, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x64, 0x65, 0x63, 0x69, 0x6d,
+0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x20, 0x20, 0x54, 0x68, 0x69,
+0x73, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6c, 0x6c,
+0x65, 0x64, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x6c, 0x79, 0x20, 0x74,
+0x6f, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6c, 0x6c, 0x0a, 0x2a,
+0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x63, 0x61, 0x6c,
+0x65, 0x73, 0x2e, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x64,
+0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x20, 0x20, 0x5b, 0x6c, 0x6f, 0x77,
+0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x20, 0x6c, 0x6f,
+0x77, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5d, 0x0a,
+0x2a, 0x2f, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x64,
+0x6f, 0x77, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x31, 0x28, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f,
+0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x68,
+0x69, 0x67, 0x68, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65,
+0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20,
+0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e,
+0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
+0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x79, 0x20,
+0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28,
+0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x70, 0x6f, 0x73, 0x20, 0x3d,
+0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x69,
+0x6e, 0x74, 0x20, 0x67, 0x73, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62,
+0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x75, 0x69,
+0x6e, 0x74, 0x34, 0x20, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x62, 0x6f, 0x74, 0x2c, 0x20, 0x76, 0x61,
+0x6c, 0x75, 0x65, 0x73, 0x3b, 0x0a, 0x74, 0x6f, 0x70, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64,
+0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x68, 0x69, 0x67, 0x68, 0x65, 0x72,
+0x5f, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x28,
+0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x78, 0x2a, 0x32, 0x2c, 0x20, 0x32, 0x2a, 0x79, 0x29, 0x20,
+0x29, 0x3b, 0x0a, 0x62, 0x6f, 0x74, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d,
+0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x68, 0x69, 0x67, 0x68, 0x65, 0x72, 0x5f, 0x72, 0x65,
+0x73, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x28, 0x69, 0x6e, 0x74,
+0x32, 0x29, 0x28, 0x78, 0x2a, 0x32, 0x2c, 0x20, 0x32, 0x2a, 0x79, 0x2b, 0x31, 0x29, 0x20, 0x29,
+0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x72, 0x68,
+0x61, 0x64, 0x64, 0x28, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x2e,
+0x73, 0x30, 0x2c, 0x20, 0x62, 0x6f, 0x74, 0x2e, 0x73, 0x30, 0x20, 0x29, 0x2c, 0x20, 0x72, 0x68,
+0x61, 0x64, 0x64, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x6f, 0x74,
+0x2e, 0x73, 0x31, 0x20, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x2f, 0x2a, 0x20, 0x74, 0x68, 0x65, 0x73,
+0x65, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65,
+0x6e, 0x74, 0x73, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x20, 0x72, 0x65, 0x64, 0x75, 0x6e,
+0x64, 0x61, 0x6e, 0x74, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x73,
+0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x2c, 0x20, 0x62, 0x75, 0x74, 0x20, 0x74, 0x65,
+0x73, 0x74, 0x73, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x0a, 0x2a,
+0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x65,
+0x72, 0x65, 0x2e, 0x20, 0x20, 0x49, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74,
+0x68, 0x69, 0x73, 0x20, 0x77, 0x61, 0x73, 0x20, 0x63, 0x61, 0x75, 0x73, 0x65, 0x64, 0x20, 0x62,
+0x79, 0x20, 0x61, 0x20, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x20, 0x62, 0x75, 0x67, 0x0a, 0x2a,
+0x2f, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x73, 0x65,
+0x6c, 0x65, 0x63, 0x74, 0x28, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73, 0x30, 0x2c,
+0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x74,
+0x6f, 0x70, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x62, 0x6f, 0x74, 0x2e, 0x73, 0x32, 0x20, 0x29, 0x2c,
+0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x2e, 0x73, 0x33, 0x2c, 0x20,
+0x62, 0x6f, 0x74, 0x2e, 0x73, 0x33, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x28, 0x20, 0x78, 0x20,
+0x2b, 0x20, 0x31, 0x20, 0x3c, 0x20, 0x67, 0x73, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x74, 0x6f, 0x70,
+0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28,
+0x20, 0x68, 0x69, 0x67, 0x68, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x73, 0x61, 0x6d,
+0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x78, 0x2a, 0x32,
+0x2b, 0x34, 0x2c, 0x20, 0x32, 0x2a, 0x79, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x62, 0x6f, 0x74, 0x20,
+0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20,
+0x68, 0x69, 0x67, 0x68, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70,
+0x6c, 0x65, 0x72, 0x2c, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x78, 0x2a, 0x32, 0x2b,
+0x34, 0x2c, 0x20, 0x32, 0x2a, 0x79, 0x2b, 0x31, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x61, 0x6c,
+0x75, 0x65, 0x73, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28,
+0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x68, 0x61, 0x64,
+0x64, 0x28, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x2e, 0x73, 0x30,
+0x2c, 0x20, 0x62, 0x6f, 0x74, 0x2e, 0x73, 0x30, 0x20, 0x29, 0x2c, 0x20, 0x72, 0x68, 0x61, 0x64,
+0x64, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x6f, 0x74, 0x2e, 0x73,
+0x31, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x28, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x3c,
+0x20, 0x67, 0x73, 0x20, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e,
+0x73, 0x33, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x20, 0x76, 0x61, 0x6c,
+0x75, 0x65, 0x73, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x72,
+0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x62, 0x6f,
+0x74, 0x2e, 0x73, 0x32, 0x20, 0x29, 0x2c, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x74,
+0x6f, 0x70, 0x2e, 0x73, 0x33, 0x2c, 0x20, 0x62, 0x6f, 0x74, 0x2e, 0x73, 0x33, 0x20, 0x29, 0x20,
+0x29, 0x2c, 0x20, 0x28, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x33, 0x20, 0x3c, 0x20, 0x67, 0x73, 0x20,
+0x29, 0x20, 0x29, 0x3b, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65,
+0x75, 0x69, 0x28, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x70,
+0x6f, 0x73, 0x2c, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x29, 0x28, 0x76, 0x61, 0x6c, 0x75,
+0x65, 0x73, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x2f, 0x2a, 0x0a, 0x2a, 0x20, 0x53, 0x65,
+0x63, 0x6f, 0x6e, 0x64, 0x20, 0x63, 0x6f, 0x70, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x64, 0x6f, 0x77,
+0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x2c, 0x20, 0x6e,
+0x6f, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x20, 0x54,
+0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x28, 0x6e, 0x6f, 0x20, 0x70, 0x65, 0x72,
+0x66, 0x20, 0x6c, 0x6f, 0x73, 0x73, 0x29, 0x0a, 0x2a, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x61, 0x72,
+0x6f, 0x75, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x63, 0x68, 0x65, 0x64,
+0x75, 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x62, 0x75, 0x67, 0x20, 0x69, 0x6e, 0x20, 0x63, 0x75, 0x72,
+0x72, 0x65, 0x6e, 0x74, 0x20, 0x54, 0x61, 0x68, 0x69, 0x74, 0x69, 0x20, 0x64, 0x72, 0x69, 0x76,
+0x65, 0x72, 0x73, 0x2e, 0x20, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x62, 0x75, 0x67, 0x20, 0x68,
+0x61, 0x73, 0x0a, 0x2a, 0x20, 0x74, 0x68, 0x65, 0x6f, 0x72, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c,
+0x6c, 0x79, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x66, 0x69, 0x78, 0x65, 0x64, 0x20, 0x69, 0x6e,
+0x20, 0x74, 0x68, 0x65, 0x20, 0x4a, 0x75, 0x6c, 0x79, 0x20, 0x32, 0x30, 0x31, 0x32, 0x20, 0x64,
+0x72, 0x69, 0x76, 0x65, 0x72, 0x20, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x20, 0x66, 0x72,
+0x6f, 0x6d, 0x20, 0x41, 0x4d, 0x44, 0x2e, 0x0a, 0x2a, 0x2f, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65,
+0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65,
+0x32, 0x28, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61,
+0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x68, 0x69, 0x67, 0x68, 0x65, 0x72, 0x5f, 0x72, 0x65,
+0x73, 0x2c, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d,
+0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x72, 0x65,
+0x73, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65,
+0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29,
+0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c,
+0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e,
+0x74, 0x32, 0x20, 0x70, 0x6f, 0x73, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28,
+0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x67, 0x73, 0x20, 0x3d, 0x20,
+0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x28,
+0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x20, 0x74, 0x6f, 0x70, 0x2c,
+0x20, 0x62, 0x6f, 0x74, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x3b, 0x0a, 0x74, 0x6f,
+0x70, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69,
+0x28, 0x20, 0x68, 0x69, 0x67, 0x68, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x73, 0x61,
+0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x78, 0x2a,
+0x32, 0x2c, 0x20, 0x32, 0x2a, 0x79, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x62, 0x6f, 0x74, 0x20, 0x3d,
+0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x68,
+0x69, 0x67, 0x68, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c,
+0x65, 0x72, 0x2c, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x78, 0x2a, 0x32, 0x2c, 0x20,
+0x32, 0x2a, 0x79, 0x2b, 0x31, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73,
+0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x72, 0x68, 0x61,
+0x64, 0x64, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x6f, 0x74, 0x2e,
+0x73, 0x30, 0x20, 0x29, 0x2c, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x74, 0x6f, 0x70,
+0x2e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x6f, 0x74, 0x2e, 0x73, 0x31, 0x20, 0x29, 0x20, 0x29, 0x3b,
+0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x6c,
+0x65, 0x63, 0x74, 0x28, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73, 0x30, 0x2c, 0x20,
+0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x74, 0x6f,
+0x70, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x62, 0x6f, 0x74, 0x2e, 0x73, 0x32, 0x20, 0x29, 0x2c, 0x20,
+0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x2e, 0x73, 0x33, 0x2c, 0x20, 0x62,
+0x6f, 0x74, 0x2e, 0x73, 0x33, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x28, 0x20, 0x78, 0x20, 0x2b,
+0x20, 0x31, 0x20, 0x3c, 0x20, 0x67, 0x73, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x74, 0x6f, 0x70, 0x20,
+0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20,
+0x68, 0x69, 0x67, 0x68, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70,
+0x6c, 0x65, 0x72, 0x2c, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x78, 0x2a, 0x32, 0x2b,
+0x34, 0x2c, 0x20, 0x32, 0x2a, 0x79, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x62, 0x6f, 0x74, 0x20, 0x3d,
+0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x68,
+0x69, 0x67, 0x68, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c,
+0x65, 0x72, 0x2c, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x78, 0x2a, 0x32, 0x2b, 0x34,
+0x2c, 0x20, 0x32, 0x2a, 0x79, 0x2b, 0x31, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x75,
+0x65, 0x73, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x20,
+0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64,
+0x28, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x2e, 0x73, 0x30, 0x2c,
+0x20, 0x62, 0x6f, 0x74, 0x2e, 0x73, 0x30, 0x20, 0x29, 0x2c, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64,
+0x28, 0x20, 0x74, 0x6f, 0x70, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x6f, 0x74, 0x2e, 0x73, 0x31,
+0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x28, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x3c, 0x20,
+0x67, 0x73, 0x20, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x73,
+0x33, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x20, 0x76, 0x61, 0x6c, 0x75,
+0x65, 0x73, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x72, 0x68,
+0x61, 0x64, 0x64, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x62, 0x6f, 0x74,
+0x2e, 0x73, 0x32, 0x20, 0x29, 0x2c, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x74, 0x6f,
+0x70, 0x2e, 0x73, 0x33, 0x2c, 0x20, 0x62, 0x6f, 0x74, 0x2e, 0x73, 0x33, 0x20, 0x29, 0x20, 0x29,
+0x2c, 0x20, 0x28, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x33, 0x20, 0x3c, 0x20, 0x67, 0x73, 0x20, 0x29,
+0x20, 0x29, 0x3b, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75,
+0x69, 0x28, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x70, 0x6f,
+0x73, 0x2c, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x29, 0x28, 0x76, 0x61, 0x6c, 0x75, 0x65,
+0x73, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x2f, 0x2a, 0x20, 0x4f, 0x70, 0x65, 0x6e, 0x43,
+0x4c, 0x20, 0x31, 0x2e, 0x32, 0x20, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x61, 0x64,
+0x64, 0x65, 0x64, 0x20, 0x61, 0x20, 0x6d, 0x65, 0x6d, 0x73, 0x65, 0x74, 0x20, 0x63, 0x6f, 0x6d,
+0x6d, 0x61, 0x6e, 0x64, 0x2c, 0x20, 0x62, 0x75, 0x74, 0x20, 0x77, 0x65, 0x27, 0x72, 0x65, 0x20,
+0x6e, 0x6f, 0x74, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x31, 0x2e,
+0x32, 0x20, 0x2a, 0x2f, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64,
+0x20, 0x6d, 0x65, 0x6d, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x28, 0x20, 0x67,
+0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x2a, 0x62,
+0x75, 0x66, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x75,
+0x65, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x62, 0x75, 0x66, 0x5b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c,
+0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29, 0x5d, 0x20, 0x3d, 0x20,
+0x76, 0x61, 0x6c, 0x75, 0x65, 0x3b, 0x0a, 0x7d, 0x0a, 0x2f, 0x2a, 0x20, 0x4c, 0x6f, 0x6f, 0x6b,
+0x61, 0x68, 0x65, 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x74,
+0x72, 0x61, 0x20, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x0a, 0x2a, 0x0a, 0x2a, 0x20,
+0x45, 0x61, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x20, 0x61, 0x6e, 0x61, 0x6c, 0x79,
+0x73, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x68, 0x61, 0x73,
+0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65,
+0x64, 0x20, 0x74, 0x77, 0x69, 0x63, 0x65, 0x2c, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x20, 0x66, 0x6f,
+0x72, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x20, 0x47, 0x50, 0x55, 0x73, 0x0a, 0x2a, 0x20,
+0x28, 0x4e, 0x56, 0x29, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x20, 0x66, 0x6f,
+0x72, 0x20, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x47, 0x50, 0x55,
+0x73, 0x20, 0x28, 0x41, 0x4d, 0x44, 0x20, 0x70, 0x72, 0x65, 0x2d, 0x53, 0x6f, 0x75, 0x74, 0x68,
+0x65, 0x72, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x29, 0x2e, 0x20, 0x20, 0x78,
+0x32, 0x36, 0x34, 0x20, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x73, 0x0a, 0x2a, 0x20, 0x74, 0x68,
+0x65, 0x20, 0x47, 0x50, 0x55, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73,
+0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x2d, 0x44, 0x56, 0x45, 0x43, 0x54, 0x4f, 0x52,
+0x49, 0x5a, 0x45, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x20, 0x66, 0x6c, 0x61, 0x67,
+0x20, 0x61, 0x63, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x6c, 0x79, 0x2e, 0x0a, 0x2a, 0x0a,
+0x2a, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x20,
+0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
+0x6e, 0x73, 0x20, 0x77, 0x65, 0x72, 0x65, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e,
+0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x43, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+0x73, 0x20, 0x69, 0x6e, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x2e, 0x63, 0x0a, 0x2a, 0x20, 0x61,
+0x6e, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65,
+0x78, 0x61, 0x63, 0x74, 0x20, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
+0x73, 0x2e, 0x0a, 0x2a, 0x2f, 0x0a, 0x2f, 0x2a, 0x20, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x20, 0x61,
+0x6c, 0x6c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e,
+0x74, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x61,
+0x6c, 0x75, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x76,
+0x65, 0x6e, 0x74, 0x20, 0x61, 0x6d, 0x62, 0x69, 0x67, 0x75, 0x6f, 0x75, 0x73, 0x20, 0x74, 0x79,
+0x70, 0x65, 0x73, 0x20, 0x2a, 0x2f, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x63,
+0x6c, 0x61, 0x6d, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x28, 0x20, 0x58, 0x2c, 0x20, 0x4d, 0x49, 0x4e,
+0x2c, 0x20, 0x4d, 0x41, 0x58, 0x20, 0x29, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x20, 0x63, 0x6c,
+0x61, 0x6d, 0x70, 0x28, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x28, 0x58, 0x29, 0x2c, 0x20, 0x28,
+0x69, 0x6e, 0x74, 0x29, 0x28, 0x4d, 0x49, 0x4e, 0x29, 0x2c, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x29,
+0x28, 0x4d, 0x41, 0x58, 0x29, 0x20, 0x29, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x56, 0x45, 0x43, 0x54,
+0x4f, 0x52, 0x49, 0x5a, 0x45, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38,
+0x78, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x6c, 0x72, 0x28, 0x20, 0x63, 0x6f, 0x6e,
+0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a,
+0x64, 0x61, 0x74, 0x61, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73,
+0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x38, 0x20, 0x70, 0x72, 0x30, 0x2c,
+0x20, 0x69, 0x6e, 0x74, 0x38, 0x20, 0x70, 0x72, 0x31, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x38, 0x20,
+0x70, 0x72, 0x32, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x38, 0x20, 0x70, 0x72, 0x33, 0x20, 0x29, 0x0a,
+0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x38, 0x20, 0x61, 0x5f, 0x76, 0x2c, 0x20, 0x64, 0x5f, 0x76, 0x3b,
+0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x74, 0x6d, 0x70, 0x30, 0x30, 0x2c, 0x20, 0x74, 0x6d, 0x70,
+0x30, 0x31, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x30, 0x32, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x30, 0x33,
+0x2c, 0x20, 0x74, 0x6d, 0x70, 0x31, 0x30, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x31, 0x31, 0x2c, 0x20,
+0x74, 0x6d, 0x70, 0x31, 0x32, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x31, 0x33, 0x3b, 0x0a, 0x69, 0x6e,
+0x74, 0x32, 0x20, 0x74, 0x6d, 0x70, 0x32, 0x30, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x32, 0x31, 0x2c,
+0x20, 0x74, 0x6d, 0x70, 0x32, 0x32, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x32, 0x33, 0x2c, 0x20, 0x74,
+0x6d, 0x70, 0x33, 0x30, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x33, 0x31, 0x2c, 0x20, 0x74, 0x6d, 0x70,
+0x33, 0x32, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x33, 0x33, 0x3b, 0x0a, 0x64, 0x5f, 0x76, 0x20, 0x3d,
+0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x38, 0x28, 0x20, 0x76,
+0x6c, 0x6f, 0x61, 0x64, 0x38, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29,
+0x20, 0x29, 0x3b, 0x0a, 0x61, 0x5f, 0x76, 0x2e, 0x73, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
+0x37, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x5f, 0x76, 0x20, 0x2d, 0x20, 0x70, 0x72, 0x30, 0x29, 0x2e,
+0x73, 0x30, 0x34, 0x31, 0x35, 0x32, 0x36, 0x33, 0x37, 0x3b, 0x0a, 0x48, 0x41, 0x44, 0x41, 0x4d,
+0x41, 0x52, 0x44, 0x34, 0x56, 0x28, 0x20, 0x74, 0x6d, 0x70, 0x30, 0x30, 0x2c, 0x20, 0x74, 0x6d,
+0x70, 0x30, 0x31, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x30, 0x32, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x30,
+0x33, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x6c, 0x6f, 0x2e, 0x6c, 0x6f, 0x2c, 0x20, 0x61, 0x5f,
+0x76, 0x2e, 0x6c, 0x6f, 0x2e, 0x68, 0x69, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x68, 0x69, 0x2e,
+0x6c, 0x6f, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x68, 0x69, 0x2e, 0x68, 0x69, 0x20, 0x29, 0x3b,
+0x0a, 0x64, 0x61, 0x74, 0x61, 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x74,
+0x72, 0x69, 0x64, 0x65, 0x3b, 0x0a, 0x64, 0x5f, 0x76, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6e, 0x76,
+0x65, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x38, 0x28, 0x20, 0x76, 0x6c, 0x6f, 0x61, 0x64, 0x38,
+0x28, 0x20, 0x30, 0x2c, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x61,
+0x5f, 0x76, 0x2e, 0x73, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x20, 0x3d, 0x20, 0x28,
+0x64, 0x5f, 0x76, 0x20, 0x2d, 0x20, 0x70, 0x72, 0x31, 0x29, 0x2e, 0x73, 0x30, 0x34, 0x31, 0x35,
+0x32, 0x36, 0x33, 0x37, 0x3b, 0x0a, 0x48, 0x41, 0x44, 0x41, 0x4d, 0x41, 0x52, 0x44, 0x34, 0x56,
+0x28, 0x20, 0x74, 0x6d, 0x70, 0x31, 0x30, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x31, 0x31, 0x2c, 0x20,
+0x74, 0x6d, 0x70, 0x31, 0x32, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x31, 0x33, 0x2c, 0x20, 0x61, 0x5f,
+0x76, 0x2e, 0x6c, 0x6f, 0x2e, 0x6c, 0x6f, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x6c, 0x6f, 0x2e,
+0x68, 0x69, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x68, 0x69, 0x2e, 0x6c, 0x6f, 0x2c, 0x20, 0x61,
+0x5f, 0x76, 0x2e, 0x68, 0x69, 0x2e, 0x68, 0x69, 0x20, 0x29, 0x3b, 0x0a, 0x64, 0x61, 0x74, 0x61,
+0x20, 0x2b, 0x3d, 0x20, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3b,
+0x0a, 0x64, 0x5f, 0x76, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x69,
+0x6e, 0x74, 0x38, 0x28, 0x20, 0x76, 0x6c, 0x6f, 0x61, 0x64, 0x38, 0x28, 0x20, 0x30, 0x2c, 0x20,
+0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x61, 0x5f, 0x76, 0x2e, 0x73, 0x30,
+0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x5f, 0x76, 0x20, 0x2d,
+0x20, 0x70, 0x72, 0x32, 0x29, 0x2e, 0x73, 0x30, 0x34, 0x31, 0x35, 0x32, 0x36, 0x33, 0x37, 0x3b,
+0x0a, 0x48, 0x41, 0x44, 0x41, 0x4d, 0x41, 0x52, 0x44, 0x34, 0x56, 0x28, 0x20, 0x74, 0x6d, 0x70,
+0x32, 0x30, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x32, 0x31, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x32, 0x32,
+0x2c, 0x20, 0x74, 0x6d, 0x70, 0x32, 0x33, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x6c, 0x6f, 0x2e,
+0x6c, 0x6f, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x6c, 0x6f, 0x2e, 0x68, 0x69, 0x2c, 0x20, 0x61,
+0x5f, 0x76, 0x2e, 0x68, 0x69, 0x2e, 0x6c, 0x6f, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x68, 0x69,
+0x2e, 0x68, 0x69, 0x20, 0x29, 0x3b, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x20, 0x2b, 0x3d, 0x20, 0x64,
+0x61, 0x74, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3b, 0x0a, 0x64, 0x5f, 0x76, 0x20,
+0x3d, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x38, 0x28, 0x20,
+0x76, 0x6c, 0x6f, 0x61, 0x64, 0x38, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20,
+0x29, 0x20, 0x29, 0x3b, 0x0a, 0x61, 0x5f, 0x76, 0x2e, 0x73, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
+0x36, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x5f, 0x76, 0x20, 0x2d, 0x20, 0x70, 0x72, 0x33, 0x29,
+0x2e, 0x73, 0x30, 0x34, 0x31, 0x35, 0x32, 0x36, 0x33, 0x37, 0x3b, 0x0a, 0x48, 0x41, 0x44, 0x41,
+0x4d, 0x41, 0x52, 0x44, 0x34, 0x56, 0x28, 0x20, 0x74, 0x6d, 0x70, 0x33, 0x30, 0x2c, 0x20, 0x74,
+0x6d, 0x70, 0x33, 0x31, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x33, 0x32, 0x2c, 0x20, 0x74, 0x6d, 0x70,
+0x33, 0x33, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x6c, 0x6f, 0x2e, 0x6c, 0x6f, 0x2c, 0x20, 0x61,
+0x5f, 0x76, 0x2e, 0x6c, 0x6f, 0x2e, 0x68, 0x69, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x68, 0x69,
+0x2e, 0x6c, 0x6f, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x68, 0x69, 0x2e, 0x68, 0x69, 0x20, 0x29,
+0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x20, 0x73, 0x75, 0x6d, 0x5f, 0x76, 0x3b, 0x0a, 0x48,
+0x41, 0x44, 0x41, 0x4d, 0x41, 0x52, 0x44, 0x34, 0x56, 0x28, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x6c,
+0x6f, 0x2e, 0x6c, 0x6f, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x6c, 0x6f, 0x2e, 0x68, 0x69, 0x2c,
+0x20, 0x61, 0x5f, 0x76, 0x2e, 0x68, 0x69, 0x2e, 0x6c, 0x6f, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e,
+0x68, 0x69, 0x2e, 0x68, 0x69, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x30, 0x30, 0x2c, 0x20, 0x74, 0x6d,
+0x70, 0x31, 0x30, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x32, 0x30, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x33,
+0x30, 0x20, 0x29, 0x3b, 0x0a, 0x73, 0x75, 0x6d, 0x5f, 0x76, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73,
+0x28, 0x20, 0x61, 0x5f, 0x76, 0x20, 0x29, 0x3b, 0x0a, 0x48, 0x41, 0x44, 0x41, 0x4d, 0x41, 0x52,
+0x44, 0x34, 0x56, 0x28, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x6c, 0x6f, 0x2e, 0x6c, 0x6f, 0x2c, 0x20,
+0x61, 0x5f, 0x76, 0x2e, 0x6c, 0x6f, 0x2e, 0x68, 0x69, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x68,
+0x69, 0x2e, 0x6c, 0x6f, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x68, 0x69, 0x2e, 0x68, 0x69, 0x2c,
+0x20, 0x74, 0x6d, 0x70, 0x30, 0x31, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x31, 0x31, 0x2c, 0x20, 0x74,
+0x6d, 0x70, 0x32, 0x31, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x33, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x73,
+0x75, 0x6d, 0x5f, 0x76, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x20, 0x61, 0x5f, 0x76,
+0x20, 0x29, 0x3b, 0x0a, 0x48, 0x41, 0x44, 0x41, 0x4d, 0x41, 0x52, 0x44, 0x34, 0x56, 0x28, 0x20,
+0x61, 0x5f, 0x76, 0x2e, 0x6c, 0x6f, 0x2e, 0x6c, 0x6f, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x6c,
+0x6f, 0x2e, 0x68, 0x69, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x68, 0x69, 0x2e, 0x6c, 0x6f, 0x2c,
+0x20, 0x61, 0x5f, 0x76, 0x2e, 0x68, 0x69, 0x2e, 0x68, 0x69, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x30,
+0x32, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x31, 0x32, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x32, 0x32, 0x2c,
+0x20, 0x74, 0x6d, 0x70, 0x33, 0x32, 0x20, 0x29, 0x3b, 0x0a, 0x73, 0x75, 0x6d, 0x5f, 0x76, 0x20,
+0x2b, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x20, 0x61, 0x5f, 0x76, 0x20, 0x29, 0x3b, 0x0a, 0x48,
+0x41, 0x44, 0x41, 0x4d, 0x41, 0x52, 0x44, 0x34, 0x56, 0x28, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x6c,
+0x6f, 0x2e, 0x6c, 0x6f, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e, 0x6c, 0x6f, 0x2e, 0x68, 0x69, 0x2c,
+0x20, 0x61, 0x5f, 0x76, 0x2e, 0x68, 0x69, 0x2e, 0x6c, 0x6f, 0x2c, 0x20, 0x61, 0x5f, 0x76, 0x2e,
+0x68, 0x69, 0x2e, 0x68, 0x69, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x30, 0x33, 0x2c, 0x20, 0x74, 0x6d,
+0x70, 0x31, 0x33, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x32, 0x33, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x33,
+0x33, 0x20, 0x29, 0x3b, 0x0a, 0x73, 0x75, 0x6d, 0x5f, 0x76, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x62,
+0x73, 0x28, 0x20, 0x61, 0x5f, 0x76, 0x20, 0x29, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x20,
+0x73, 0x75, 0x6d, 0x32, 0x20, 0x3d, 0x20, 0x73, 0x75, 0x6d, 0x5f, 0x76, 0x2e, 0x68, 0x69, 0x20,
+0x2b, 0x20, 0x73, 0x75, 0x6d, 0x5f, 0x76, 0x2e, 0x6c, 0x6f, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74,
+0x32, 0x20, 0x73, 0x75, 0x6d, 0x33, 0x20, 0x3d, 0x20, 0x73, 0x75, 0x6d, 0x32, 0x2e, 0x68, 0x69,
+0x20, 0x2b, 0x20, 0x73, 0x75, 0x6d, 0x32, 0x2e, 0x6c, 0x6f, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75,
+0x72, 0x6e, 0x20, 0x28, 0x20, 0x73, 0x75, 0x6d, 0x33, 0x2e, 0x68, 0x69, 0x20, 0x2b, 0x20, 0x73,
+0x75, 0x6d, 0x33, 0x2e, 0x6c, 0x6f, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x3b, 0x0a, 0x7d,
+0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x53, 0x41, 0x54, 0x44, 0x5f, 0x43, 0x5f, 0x38, 0x78,
+0x34, 0x5f, 0x51, 0x28, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x6c, 0x70,
+0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2c, 0x20, 0x70,
+0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x29, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a,
+0x2f, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
+0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
+0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
+0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
+0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x0a, 0x2a, 0x20,
+0x38, 0x78, 0x38, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66,
+0x6f, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x20, 0x6c, 0x75, 0x6d, 0x61, 0x20, 0x62, 0x6c,
+0x6f, 0x63, 0x6b, 0x0a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
+0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
+0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
+0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
+0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
+0x2f, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x46, 0x31, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x0a, 0x23, 0x64,
+0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x46, 0x32, 0x28, 0x20, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20,
+0x63, 0x20, 0x29, 0x20, 0x28, 0x20, 0x61, 0x2b, 0x32, 0x2a, 0x62, 0x2b, 0x63, 0x2b, 0x32, 0x20,
+0x29, 0x3e, 0x3e, 0x32, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x56, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x49,
+0x5a, 0x45, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64,
+0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x64, 0x64, 0x6c, 0x28, 0x20, 0x63, 0x6f, 0x6e,
+0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a,
+0x73, 0x72, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72,
+0x69, 0x64, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
+0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x74, 0x6f, 0x70, 0x20, 0x29, 0x0a, 0x7b, 0x0a,
+0x69, 0x6e, 0x74, 0x38, 0x20, 0x70, 0x72, 0x30, 0x2c, 0x20, 0x70, 0x72, 0x31, 0x2c, 0x20, 0x70,
+0x72, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x33, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x30, 0x20,
+0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x2b,
+0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x32, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73,
+0x31, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d,
+0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30,
+0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x32, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70,
+0x72, 0x30, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20,
+0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b,
+0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x35,
+0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20,
+0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20,
+0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70,
+0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x20, 0x3e,
+0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x20,
+0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74,
+0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x29,
+0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20,
+0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32,
+0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d,
+0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x30, 0x20,
+0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x20, 0x2b,
+0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x33, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73,
+0x31, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d,
+0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31,
+0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70,
+0x72, 0x31, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20,
+0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b,
+0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x36,
+0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20,
+0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20,
+0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70,
+0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x29, 0x20, 0x3e,
+0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x20,
+0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74,
+0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x29,
+0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20,
+0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x2b, 0x20, 0x32,
+0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30,
+0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x30,
+0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x20,
+0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x34, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e,
+0x73, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33,
+0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72,
+0x32, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x2b,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a,
+0x70, 0x72, 0x32, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d,
+0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32,
+0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b,
+0x37, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e,
+0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32,
+0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f,
+0x70, 0x5b, 0x38, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x29, 0x20,
+0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x28,
+0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a,
+0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30, 0x5d,
+0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x37, 0x20,
+0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x2b,
+0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x31, 0x31, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33,
+0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70,
+0x72, 0x33, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20,
+0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b,
+0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x36,
+0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20,
+0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20,
+0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70,
+0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x29, 0x20, 0x3e,
+0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x28, 0x20,
+0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74,
+0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x29,
+0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20,
+0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x2b, 0x20, 0x32,
+0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30,
+0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x36,
+0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20,
+0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x31, 0x31, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72,
+0x33, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x31, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x31, 0x5d,
+0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x32, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20,
+0x32, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x73, 0x61,
+0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x6c, 0x72, 0x28,
+0x20, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65,
+0x2c, 0x20, 0x70, 0x72, 0x30, 0x2c, 0x20, 0x70, 0x72, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c,
+0x20, 0x70, 0x72, 0x33, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x30, 0x20, 0x3d,
+0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20,
+0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36,
+0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x31,
+0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20,
+0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x37, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e,
+0x73, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36,
+0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72,
+0x30, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x2b,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a,
+0x70, 0x72, 0x30, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d,
+0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20,
+0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20,
+0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70,
+0x5b, 0x31, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x31, 0x5d, 0x20, 0x29,
+0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20,
+0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30, 0x5d, 0x20, 0x2b, 0x20,
+0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x31, 0x32, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e,
+0x73, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31,
+0x31, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x32, 0x5d, 0x20, 0x2b,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x33, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b,
+0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x36,
+0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20,
+0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20,
+0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70,
+0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x29, 0x20, 0x3e,
+0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x20,
+0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74,
+0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x29,
+0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20,
+0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x2b, 0x20, 0x32,
+0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30,
+0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x34,
+0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20,
+0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x31, 0x31, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72,
+0x31, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x31, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x31, 0x5d,
+0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x32, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20,
+0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20,
+0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f,
+0x70, 0x5b, 0x31, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x33, 0x5d, 0x20,
+0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x37, 0x20, 0x3d,
+0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x32, 0x5d, 0x20, 0x2b,
+0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x31, 0x34, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x32,
+0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x36, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70,
+0x72, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20,
+0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b,
+0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x39,
+0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e,
+0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32,
+0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f,
+0x70, 0x5b, 0x31, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x31, 0x5d, 0x20,
+0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x34, 0x20, 0x3d,
+0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30, 0x5d, 0x20, 0x2b,
+0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x31, 0x32, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x32,
+0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x31, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x32, 0x5d, 0x20,
+0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x33, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32,
+0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70,
+0x5b, 0x31, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x34, 0x5d, 0x20, 0x29,
+0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20,
+0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x33, 0x5d, 0x20, 0x2b, 0x20,
+0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x31, 0x35, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e,
+0x73, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37,
+0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x2b, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72,
+0x33, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x38, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x2b,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b,
+0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31,
+0x30, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x31, 0x5d, 0x20, 0x29, 0x20, 0x3e,
+0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x20,
+0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a,
+0x74, 0x6f, 0x70, 0x5b, 0x31, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x32,
+0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x34,
+0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x31, 0x5d,
+0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x31, 0x33, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70,
+0x72, 0x33, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x31, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x33,
+0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x34, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e,
+0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32,
+0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74,
+0x6f, 0x70, 0x5b, 0x31, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x35, 0x5d,
+0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x37, 0x20,
+0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x34, 0x5d, 0x20,
+0x2b, 0x20, 0x33, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x35, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e,
+0x20, 0x32, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x61, 0x74, 0x64, 0x20,
+0x2b, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61,
+0x5f, 0x6c, 0x72, 0x28, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x20, 0x28, 0x73, 0x72, 0x63, 0x5f,
+0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x29, 0x2c, 0x20, 0x73, 0x72,
+0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x30, 0x2c, 0x20, 0x70,
+0x72, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x33, 0x20, 0x29, 0x3b, 0x0a,
+0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69,
+0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x64, 0x64, 0x72, 0x28, 0x20, 0x63, 0x6f, 0x6e, 0x73,
+0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x73,
+0x72, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69,
+0x64, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73,
+0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x6c,
+0x65, 0x66, 0x74, 0x2c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f,
+0x74, 0x6f, 0x70, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x38, 0x20, 0x70, 0x72, 0x30,
+0x2c, 0x20, 0x70, 0x72, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x33, 0x3b,
+0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x2c, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73,
+0x30, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31,
+0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72,
+0x31, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20,
+0x70, 0x72, 0x33, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73,
+0x30, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32,
+0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x46,
+0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a,
+0x70, 0x72, 0x30, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x32, 0x20,
+0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73,
+0x34, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31,
+0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x70,
+0x72, 0x33, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x70,
+0x72, 0x31, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x35, 0x20, 0x3d,
+0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x34, 0x20, 0x3d,
+0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x36,
+0x20, 0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x35,
+0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e,
+0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e,
+0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61,
+0x74, 0x64, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e,
+0x74, 0x72, 0x61, 0x5f, 0x6c, 0x72, 0x28, 0x20, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x73, 0x72, 0x63,
+0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x30, 0x2c, 0x20, 0x70, 0x72,
+0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x33, 0x20, 0x29, 0x3b, 0x0a, 0x70,
+0x72, 0x33, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x30, 0x20,
+0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x2c,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e,
+0x73, 0x30, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x70, 0x72,
+0x33, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x33, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x30, 0x20, 0x3d,
+0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x32,
+0x20, 0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d,
+0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30,
+0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x70,
+0x72, 0x32, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x34, 0x20, 0x3d,
+0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x29,
+0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73,
+0x33, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x33,
+0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30,
+0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20,
+0x70, 0x72, 0x31, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x35, 0x20,
+0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30,
+0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x70,
+0x72, 0x32, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x37, 0x20, 0x3d,
+0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x29,
+0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73,
+0x36, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30,
+0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30,
+0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46,
+0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31,
+0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30,
+0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x61, 0x74, 0x64, 0x20,
+0x2b, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61,
+0x5f, 0x6c, 0x72, 0x28, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x20, 0x28, 0x73, 0x72, 0x63, 0x5f,
+0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x29, 0x2c, 0x20, 0x73, 0x72,
+0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x30, 0x2c, 0x20, 0x70,
+0x72, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x33, 0x20, 0x29, 0x3b, 0x0a,
+0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69,
+0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x76, 0x72, 0x28, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74,
+0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x73, 0x72,
+0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64,
+0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70,
+0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74,
+0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x6c, 0x65,
+0x66, 0x74, 0x2c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74,
+0x6f, 0x70, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x38, 0x20, 0x70, 0x72, 0x30, 0x2c,
+0x20, 0x70, 0x72, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x33, 0x3b, 0x0a,
+0x70, 0x72, 0x32, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73,
+0x30, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x2c,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30,
+0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x70, 0x72,
+0x33, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x30, 0x20, 0x3d,
+0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x29,
+0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73,
+0x32, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32,
+0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e,
+0x73, 0x32, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x46, 0x32,
+0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e,
+0x73, 0x32, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x46, 0x31,
+0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x33,
+0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32,
+0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e,
+0x73, 0x34, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x46, 0x32,
+0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e,
+0x73, 0x34, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x46, 0x31,
+0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x33,
+0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32,
+0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e,
+0x73, 0x36, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x32,
+0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e,
+0x73, 0x36, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x31,
+0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73,
+0x37, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61,
+0x74, 0x64, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e,
+0x74, 0x72, 0x61, 0x5f, 0x6c, 0x72, 0x28, 0x20, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x73, 0x72, 0x63,
+0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x30, 0x2c, 0x20, 0x70, 0x72,
+0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x33, 0x20, 0x29, 0x3b, 0x0a, 0x70,
+0x72, 0x32, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x30, 0x20,
+0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e,
+0x73, 0x31, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d,
+0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x70,
+0x72, 0x33, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x31, 0x20,
+0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x31,
+0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46,
+0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a,
+0x70, 0x72, 0x31, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x33, 0x20,
+0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e,
+0x73, 0x33, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f,
+0x70, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x31,
+0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x46,
+0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70,
+0x72, 0x30, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x34, 0x20, 0x3d,
+0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20,
+0x70, 0x72, 0x33, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20,
+0x70, 0x72, 0x32, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70,
+0x72, 0x31, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x36, 0x20, 0x3d,
+0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70,
+0x72, 0x30, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x36, 0x20, 0x3d,
+0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20,
+0x70, 0x72, 0x33, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20,
+0x70, 0x72, 0x32, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70,
+0x72, 0x31, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x35, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46,
+0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35,
+0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x61, 0x74, 0x64,
+0x20, 0x2b, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x72,
+0x61, 0x5f, 0x6c, 0x72, 0x28, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x20, 0x28, 0x73, 0x72, 0x63,
+0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x29, 0x2c, 0x20, 0x73,
+0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x30, 0x2c, 0x20,
+0x70, 0x72, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x33, 0x20, 0x29, 0x3b,
+0x0a, 0x23, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x50, 0x52, 0x45, 0x44, 0x0a, 0x7d, 0x0a, 0x69,
+0x6e, 0x74, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f,
+0x38, 0x78, 0x38, 0x5f, 0x68, 0x64, 0x28, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f,
+0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x73, 0x72, 0x63, 0x2c, 0x20,
+0x69, 0x6e, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20,
+0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65,
+0x6c, 0x20, 0x2a, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f,
+0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x6c, 0x65, 0x66, 0x74, 0x2c,
+0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20,
+0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x38, 0x20, 0x70, 0x72, 0x30, 0x2c, 0x20, 0x70, 0x72,
+0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x33, 0x3b, 0x0a, 0x70, 0x72, 0x30,
+0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74,
+0x6f, 0x70, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70,
+0x72, 0x30, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d,
+0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20,
+0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e,
+0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x30,
+0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73,
+0x35, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x20, 0x29,
+0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x37, 0x20,
+0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x0a,
+0x70, 0x72, 0x31, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x29, 0x3b,
+0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5f,
+0x74, 0x6f, 0x70, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30,
+0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29,
+0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20,
+0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x33, 0x20,
+0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x30, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72,
+0x31, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31,
+0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f,
+0x74, 0x6f, 0x70, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20,
+0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72,
+0x31, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33,
+0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31,
+0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x32,
+0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e,
+0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d,
+0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x32,
+0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x20, 0x2b,
+0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32,
+0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20,
+0x29, 0x3b, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66,
+0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20,
+0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x34, 0x20,
+0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73,
+0x35, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x32,
+0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20, 0x2b, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a,
+0x70, 0x72, 0x32, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x37, 0x20,
+0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a,
+0x70, 0x72, 0x33, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b,
+0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x31, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d,
+0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20,
+0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46,
+0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20,
+0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d,
+0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e,
+0x73, 0x34, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d,
+0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x33,
+0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20,
+0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20,
+0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30,
+0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x2b,
+0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61,
+0x74, 0x64, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e,
+0x74, 0x72, 0x61, 0x5f, 0x6c, 0x72, 0x28, 0x20, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x73, 0x72, 0x63,
+0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x30, 0x2c, 0x20, 0x70, 0x72,
+0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x33, 0x20, 0x29, 0x3b, 0x0a, 0x70,
+0x72, 0x30, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x20,
+0x70, 0x72, 0x30, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32,
+0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20,
+0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e,
+0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46, 0x31,
+0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x33, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x28,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20,
+0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73,
+0x34, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x30, 0x2e,
+0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20,
+0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b,
+0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x29,
+0x3b, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74,
+0x5f, 0x74, 0x6f, 0x70, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x30, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x32,
+0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x30, 0x20, 0x3d,
+0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x31, 0x20,
+0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x35, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72,
+0x31, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x33, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70,
+0x72, 0x31, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d,
+0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e,
+0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33,
+0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b,
+0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x36,
+0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73,
+0x37, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x32,
+0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a,
+0x70, 0x72, 0x32, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x3b,
+0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x34, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d,
+0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20,
+0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46,
+0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20,
+0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d,
+0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e,
+0x73, 0x34, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d,
+0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x32,
+0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x2b,
+0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32,
+0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20,
+0x29, 0x3b, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x32, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32,
+0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x30, 0x20, 0x3d,
+0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x31, 0x20,
+0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72,
+0x33, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x35, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70,
+0x72, 0x33, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d,
+0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e,
+0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35,
+0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b,
+0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x36,
+0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x2c, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73,
+0x37, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x32,
+0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a,
+0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x61, 0x74, 0x64, 0x20, 0x2b, 0x20, 0x73, 0x61,
+0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x6c, 0x72, 0x28,
+0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x20, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69,
+0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74,
+0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x30, 0x2c, 0x20, 0x70, 0x72, 0x31, 0x2c, 0x20,
+0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x33, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e,
+0x74, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x38,
+0x78, 0x38, 0x5f, 0x76, 0x6c, 0x28, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63,
+0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x69,
+0x6e, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x63,
+0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c,
+0x20, 0x2a, 0x74, 0x6f, 0x70, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x38, 0x20, 0x70,
+0x72, 0x30, 0x2c, 0x20, 0x70, 0x72, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72,
+0x33, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x20, 0x29,
+0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x30, 0x20,
+0x3d, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b,
+0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x31,
+0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b,
+0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x32,
+0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x31, 0x20,
+0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x32, 0x20,
+0x3d, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b,
+0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x33,
+0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b,
+0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x34,
+0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x33, 0x20,
+0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x34, 0x20,
+0x3d, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x3b,
+0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x35,
+0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b,
+0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x36,
+0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x35, 0x20,
+0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x36, 0x20,
+0x3d, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x29, 0x3b,
+0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x37,
+0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x29, 0x3b,
+0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x38, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x29, 0x3b, 0x0a,
+0x70, 0x72, 0x33, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x38, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x31, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x74, 0x64,
+0x20, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x72,
+0x61, 0x5f, 0x6c, 0x72, 0x28, 0x20, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73,
+0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x30, 0x2c, 0x20, 0x70, 0x72, 0x31, 0x2c,
+0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x33, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30,
+0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e,
+0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x30, 0x2e,
+0x73, 0x31, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73,
+0x30, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73,
+0x31, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e,
+0x73, 0x32, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x30, 0x2e,
+0x73, 0x33, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73,
+0x32, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73,
+0x33, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e,
+0x73, 0x34, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x30, 0x2e,
+0x73, 0x35, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73,
+0x34, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73,
+0x35, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e,
+0x73, 0x36, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x30,
+0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x33,
+0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46,
+0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31,
+0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x70,
+0x72, 0x32, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x31, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a,
+0x70, 0x72, 0x33, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x31, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x31, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x31, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
+0x20, 0x73, 0x61, 0x74, 0x64, 0x20, 0x2b, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34,
+0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x6c, 0x72, 0x28, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b,
+0x20, 0x28, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3c, 0x3c,
+0x20, 0x32, 0x20, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65,
+0x2c, 0x20, 0x70, 0x72, 0x30, 0x2c, 0x20, 0x70, 0x72, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c,
+0x20, 0x70, 0x72, 0x33, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x32,
+0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x68,
+0x75, 0x28, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70,
+0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73,
+0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74,
+0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x6c, 0x65,
+0x66, 0x74, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x38, 0x20, 0x70, 0x72, 0x30, 0x2c,
+0x20, 0x70, 0x72, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x33, 0x3b, 0x0a,
+0x70, 0x72, 0x30, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x29, 0x3b,
+0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x30, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d,
+0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20,
+0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46,
+0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20,
+0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d,
+0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e,
+0x73, 0x34, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d,
+0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x30,
+0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x2b,
+0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32,
+0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20,
+0x29, 0x3b, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x34, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x32,
+0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x30, 0x20, 0x3d,
+0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x31, 0x20,
+0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72,
+0x31, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x32, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70,
+0x72, 0x31, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d,
+0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e,
+0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34,
+0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b,
+0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x36,
+0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x2c, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73,
+0x37, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x32,
+0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a,
+0x70, 0x72, 0x32, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b,
+0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x32, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d,
+0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20,
+0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46,
+0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20,
+0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d,
+0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e,
+0x73, 0x34, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d,
+0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x32,
+0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b,
+0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32,
+0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20,
+0x29, 0x3b, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x36, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32,
+0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x30, 0x20, 0x3d,
+0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x31, 0x20,
+0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x35, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72,
+0x33, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x34, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70,
+0x72, 0x33, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d,
+0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e,
+0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36,
+0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x2b,
+0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x36,
+0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x2c, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x33, 0x2e, 0x73,
+0x37, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x32,
+0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a,
+0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f,
+0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x6c, 0x72, 0x28, 0x20, 0x73, 0x72,
+0x63, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70,
+0x72, 0x30, 0x2c, 0x20, 0x70, 0x72, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72,
+0x33, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x31,
+0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x35, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x28,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20,
+0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73,
+0x32, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x2c,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x30, 0x2e,
+0x73, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20,
+0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b,
+0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x29,
+0x3b, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37,
+0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29,
+0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x3b, 0x20, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x37, 0x20,
+0x3d, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73,
+0x30, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x2c,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x31, 0x2e,
+0x73, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20,
+0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b,
+0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x29,
+0x3b, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37,
+0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29,
+0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x3b, 0x20, 0x70, 0x72, 0x31, 0x2e, 0x73, 0x35, 0x20,
+0x3d, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x2e, 0x73,
+0x36, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x3b, 0x20, 0x70, 0x72, 0x31,
+0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x3b, 0x0a, 0x70,
+0x72, 0x32, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b, 0x20,
+0x70, 0x72, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36,
+0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20,
+0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e,
+0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x37, 0x5d, 0x3b, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x34, 0x20,
+0x3d, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x3b, 0x20, 0x70, 0x72, 0x32, 0x2e, 0x73,
+0x35, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x3b, 0x0a, 0x70, 0x72, 0x32,
+0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x3b, 0x20, 0x70,
+0x72, 0x32, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x3b,
+0x0a, 0x70, 0x72, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x38, 0x29, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x37, 0x5d, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x61, 0x74,
+0x64, 0x20, 0x2b, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e, 0x74,
+0x72, 0x61, 0x5f, 0x6c, 0x72, 0x28, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x73,
+0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x20, 0x29,
+0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72,
+0x30, 0x2c, 0x20, 0x70, 0x72, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x33,
+0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70,
+0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x63, 0x5f, 0x68, 0x28, 0x20, 0x63,
+0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c,
+0x20, 0x2a, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73,
+0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20,
+0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x73, 0x72, 0x63,
+0x5f, 0x6c, 0x20, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x38, 0x20, 0x70,
+0x72, 0x30, 0x2c, 0x20, 0x70, 0x72, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72,
+0x33, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x38, 0x29, 0x73,
+0x72, 0x63, 0x5b, 0x2d, 0x31, 0x5d, 0x3b, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x73,
+0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3b, 0x0a, 0x70, 0x72, 0x31, 0x20, 0x3d,
+0x20, 0x28, 0x69, 0x6e, 0x74, 0x38, 0x29, 0x73, 0x72, 0x63, 0x5b, 0x2d, 0x31, 0x5d, 0x3b, 0x20,
+0x73, 0x72, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64,
+0x65, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x38, 0x29, 0x73,
+0x72, 0x63, 0x5b, 0x2d, 0x31, 0x5d, 0x3b, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x73,
+0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x20, 0x3d,
+0x20, 0x28, 0x69, 0x6e, 0x74, 0x38, 0x29, 0x73, 0x72, 0x63, 0x5b, 0x2d, 0x31, 0x5d, 0x3b, 0x20,
+0x73, 0x72, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64,
+0x65, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x73, 0x61,
+0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x6c, 0x72, 0x28,
+0x20, 0x73, 0x72, 0x63, 0x5f, 0x6c, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69,
+0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x30, 0x2c, 0x20, 0x70, 0x72, 0x31, 0x2c, 0x20, 0x70, 0x72,
+0x32, 0x2c, 0x20, 0x70, 0x72, 0x33, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x20, 0x3d, 0x20,
+0x28, 0x69, 0x6e, 0x74, 0x38, 0x29, 0x73, 0x72, 0x63, 0x5b, 0x2d, 0x31, 0x5d, 0x3b, 0x20, 0x73,
+0x72, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65,
+0x3b, 0x0a, 0x70, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x38, 0x29, 0x73, 0x72,
+0x63, 0x5b, 0x2d, 0x31, 0x5d, 0x3b, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72,
+0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x20, 0x3d, 0x20,
+0x28, 0x69, 0x6e, 0x74, 0x38, 0x29, 0x73, 0x72, 0x63, 0x5b, 0x2d, 0x31, 0x5d, 0x3b, 0x20, 0x73,
+0x72, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65,
+0x3b, 0x0a, 0x70, 0x72, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x38, 0x29, 0x73, 0x72,
+0x63, 0x5b, 0x2d, 0x31, 0x5d, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x61,
+0x74, 0x64, 0x20, 0x2b, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e,
+0x74, 0x72, 0x61, 0x5f, 0x6c, 0x72, 0x28, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x6c, 0x20, 0x2b, 0x20,
+0x28, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20,
+0x32, 0x20, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c,
+0x20, 0x70, 0x72, 0x30, 0x2c, 0x20, 0x70, 0x72, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20,
+0x70, 0x72, 0x33, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x32, 0x36,
+0x34, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x63, 0x5f, 0x76,
+0x28, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69,
+0x78, 0x65, 0x6c, 0x20, 0x2a, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x72,
+0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74,
+0x38, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74,
+0x5f, 0x69, 0x6e, 0x74, 0x38, 0x28, 0x20, 0x76, 0x6c, 0x6f, 0x61, 0x64, 0x38, 0x28, 0x20, 0x30,
+0x2c, 0x20, 0x26, 0x73, 0x72, 0x63, 0x5b, 0x2d, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69,
+0x64, 0x65, 0x5d, 0x20, 0x29, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73,
+0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x6c, 0x72,
+0x28, 0x20, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64,
+0x65, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x70,
+0x72, 0x65, 0x64, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x29, 0x20, 0x2b, 0x0a, 0x73, 0x61,
+0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x6c, 0x72, 0x28,
+0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72,
+0x69, 0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x20, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f,
+0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x70, 0x72,
+0x65, 0x64, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x29,
+0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65,
+0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x63, 0x5f, 0x70, 0x28, 0x20, 0x63, 0x6f, 0x6e,
+0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a,
+0x73, 0x72, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72,
+0x69, 0x64, 0x65, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x48, 0x20, 0x3d, 0x20,
+0x30, 0x2c, 0x20, 0x56, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69,
+0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x34, 0x3b,
+0x20, 0x69, 0x2b, 0x2b, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x48, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x69,
+0x20, 0x2b, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x73, 0x72, 0x63, 0x5b, 0x34, 0x20, 0x2b,
+0x20, 0x69, 0x20, 0x2d, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d,
+0x20, 0x2d, 0x20, 0x73, 0x72, 0x63, 0x5b, 0x32, 0x20, 0x2d, 0x20, 0x69, 0x20, 0x2d, 0x20, 0x73,
+0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x29, 0x3b, 0x0a, 0x56, 0x20, 0x2b,
+0x3d, 0x20, 0x28, 0x69, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x73, 0x72, 0x63,
+0x5b, 0x2d, 0x31, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x20, 0x2b, 0x20, 0x34, 0x29, 0x20, 0x2a, 0x20,
+0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x20, 0x2d, 0x20, 0x73, 0x72,
+0x63, 0x5b, 0x2d, 0x31, 0x20, 0x2b, 0x20, 0x28, 0x32, 0x20, 0x2d, 0x20, 0x69, 0x29, 0x20, 0x2a,
+0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x29, 0x3b, 0x0a, 0x7d,
+0x0a, 0x69, 0x6e, 0x74, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x31, 0x36, 0x20, 0x2a, 0x20, 0x28, 0x73,
+0x72, 0x63, 0x5b, 0x2d, 0x31, 0x20, 0x2b, 0x20, 0x37, 0x20, 0x2a, 0x20, 0x73, 0x72, 0x63, 0x5f,
+0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x20, 0x2b, 0x20, 0x73, 0x72, 0x63, 0x5b, 0x37, 0x20,
+0x2d, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x29, 0x3b, 0x0a,
+0x69, 0x6e, 0x74, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x37, 0x20, 0x2a, 0x20, 0x48, 0x20,
+0x2b, 0x20, 0x31, 0x36, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20,
+0x63, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x37, 0x20, 0x2a, 0x20, 0x56, 0x20, 0x2b, 0x20, 0x31, 0x36,
+0x29, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x30, 0x30, 0x20,
+0x3d, 0x20, 0x61, 0x20, 0x2d, 0x20, 0x33, 0x20, 0x2a, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x33, 0x20,
+0x2a, 0x20, 0x63, 0x20, 0x2b, 0x20, 0x31, 0x36, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x3d, 0x20, 0x69, 0x30, 0x30, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x38, 0x20, 0x70, 0x72,
+0x30, 0x2c, 0x20, 0x70, 0x72, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x33,
+0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f,
+0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20,
+0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62,
+0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f,
+0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20,
+0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62,
+0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f,
+0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20,
+0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62,
+0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f,
+0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20,
+0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62,
+0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f,
+0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20,
+0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62,
+0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f,
+0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20,
+0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62,
+0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f,
+0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20,
+0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62,
+0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f,
+0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20,
+0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x69, 0x30, 0x30, 0x20, 0x2b, 0x3d, 0x20, 0x63,
+0x3b, 0x0a, 0x70, 0x69, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x30, 0x30, 0x3b, 0x0a, 0x70, 0x72, 0x31,
+0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20,
+0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x31,
+0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20,
+0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x31,
+0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20,
+0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x31,
+0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20,
+0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x31,
+0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20,
+0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x31,
+0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20,
+0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x31,
+0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20,
+0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x31,
+0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20,
+0x29, 0x3b, 0x20, 0x69, 0x30, 0x30, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x3b, 0x0a, 0x70, 0x69, 0x78,
+0x20, 0x3d, 0x20, 0x69, 0x30, 0x30, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x30, 0x20, 0x3d,
+0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c,
+0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x3d,
+0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c,
+0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x32, 0x20, 0x3d,
+0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c,
+0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x33, 0x20, 0x3d,
+0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c,
+0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x34, 0x20, 0x3d,
+0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c,
+0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x35, 0x20, 0x3d,
+0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c,
+0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x36, 0x20, 0x3d,
+0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c,
+0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x37, 0x20, 0x3d,
+0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c,
+0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x69, 0x30,
+0x30, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x3b, 0x0a, 0x70, 0x69, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x30,
+0x30, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34,
+0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20,
+0x62, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34,
+0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20,
+0x62, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34,
+0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20,
+0x62, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34,
+0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20,
+0x62, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34,
+0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20,
+0x62, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34,
+0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20,
+0x62, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34,
+0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20,
+0x62, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34,
+0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x69, 0x30, 0x30, 0x20, 0x2b, 0x3d, 0x20,
+0x63, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x73, 0x61,
+0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x6c, 0x72, 0x28,
+0x20, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65,
+0x2c, 0x20, 0x70, 0x72, 0x30, 0x2c, 0x20, 0x70, 0x72, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c,
+0x20, 0x70, 0x72, 0x33, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x69, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x30,
+0x30, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34,
+0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20,
+0x62, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34,
+0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20,
+0x62, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34,
+0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20,
+0x62, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34,
+0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20,
+0x62, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34,
+0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20,
+0x62, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34,
+0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20,
+0x62, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34,
+0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20,
+0x62, 0x3b, 0x0a, 0x70, 0x72, 0x30, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34,
+0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x69, 0x30, 0x30, 0x20, 0x2b, 0x3d, 0x20,
+0x63, 0x3b, 0x0a, 0x70, 0x69, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x30, 0x30, 0x3b, 0x0a, 0x70, 0x72,
+0x31, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70,
+0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35,
+0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72,
+0x31, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70,
+0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35,
+0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72,
+0x31, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70,
+0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35,
+0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72,
+0x31, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70,
+0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35,
+0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72,
+0x31, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70,
+0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35,
+0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72,
+0x31, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70,
+0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35,
+0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72,
+0x31, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70,
+0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35,
+0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72,
+0x31, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70,
+0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35,
+0x20, 0x29, 0x3b, 0x20, 0x69, 0x30, 0x30, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x3b, 0x0a, 0x70, 0x69,
+0x78, 0x20, 0x3d, 0x20, 0x69, 0x30, 0x30, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x30, 0x20,
+0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65,
+0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70,
+0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x31, 0x20,
+0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65,
+0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70,
+0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x32, 0x20,
+0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65,
+0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70,
+0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x33, 0x20,
+0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65,
+0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70,
+0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x34, 0x20,
+0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65,
+0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70,
+0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x35, 0x20,
+0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65,
+0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70,
+0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x36, 0x20,
+0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65,
+0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70,
+0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x32, 0x2e, 0x73, 0x37, 0x20,
+0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65,
+0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x69,
+0x30, 0x30, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x3b, 0x0a, 0x70, 0x69, 0x78, 0x20, 0x3d, 0x20, 0x69,
+0x30, 0x30, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36,
+0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d,
+0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36,
+0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d,
+0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36,
+0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d,
+0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36,
+0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d,
+0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x34, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36,
+0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d,
+0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x35, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36,
+0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d,
+0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x36, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36,
+0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d,
+0x20, 0x62, 0x3b, 0x0a, 0x70, 0x72, 0x33, 0x2e, 0x73, 0x37, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36,
+0x34, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x20, 0x69, 0x30, 0x30, 0x20, 0x2b, 0x3d,
+0x20, 0x63, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x61, 0x74, 0x64, 0x20,
+0x2b, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61,
+0x5f, 0x6c, 0x72, 0x28, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x73, 0x72, 0x63,
+0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x20, 0x29, 0x2c, 0x20,
+0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x30, 0x2c,
+0x20, 0x70, 0x72, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x33, 0x20, 0x29,
+0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65,
+0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x63, 0x5f, 0x64, 0x63, 0x28, 0x20, 0x63, 0x6f,
+0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20,
+0x2a, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74,
+0x72, 0x69, 0x64, 0x65, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x30, 0x20,
+0x3d, 0x20, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x73, 0x32, 0x20,
+0x3d, 0x20, 0x30, 0x2c, 0x20, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x66, 0x6f, 0x72,
+0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c,
+0x20, 0x34, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x73, 0x30, 0x20, 0x2b,
+0x3d, 0x20, 0x73, 0x72, 0x63, 0x5b, 0x69, 0x20, 0x2d, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74,
+0x72, 0x69, 0x64, 0x65, 0x5d, 0x3b, 0x0a, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72, 0x63,
+0x5b, 0x69, 0x20, 0x2b, 0x20, 0x34, 0x20, 0x2d, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72,
+0x69, 0x64, 0x65, 0x5d, 0x3b, 0x0a, 0x73, 0x32, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x5b,
+0x2d, 0x31, 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72,
+0x69, 0x64, 0x65, 0x5d, 0x3b, 0x0a, 0x73, 0x33, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x5b,
+0x2d, 0x31, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x2b, 0x34, 0x29, 0x2a, 0x73, 0x72, 0x63, 0x5f, 0x73,
+0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x38, 0x20, 0x64,
+0x63, 0x30, 0x3b, 0x0a, 0x64, 0x63, 0x30, 0x2e, 0x6c, 0x6f, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e,
+0x74, 0x34, 0x29, 0x28, 0x20, 0x28, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x73, 0x32, 0x20, 0x2b, 0x20,
+0x34, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x33, 0x20, 0x29, 0x3b, 0x0a, 0x64, 0x63, 0x30, 0x2e, 0x68,
+0x69, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x34, 0x29, 0x28, 0x20, 0x28, 0x73, 0x31, 0x20,
+0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74,
+0x20, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34,
+0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x6c, 0x72, 0x28, 0x20, 0x73, 0x72, 0x63, 0x2c, 0x20,
+0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x64, 0x63, 0x30, 0x2c,
+0x20, 0x64, 0x63, 0x30, 0x2c, 0x20, 0x64, 0x63, 0x30, 0x2c, 0x20, 0x64, 0x63, 0x30, 0x20, 0x29,
+0x3b, 0x0a, 0x64, 0x63, 0x30, 0x2e, 0x6c, 0x6f, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x34,
+0x29, 0x28, 0x20, 0x28, 0x73, 0x33, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32,
+0x20, 0x29, 0x3b, 0x0a, 0x64, 0x63, 0x30, 0x2e, 0x68, 0x69, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e,
+0x74, 0x34, 0x29, 0x28, 0x20, 0x28, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x73, 0x33, 0x20, 0x2b, 0x20,
+0x34, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x33, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72,
+0x6e, 0x20, 0x73, 0x61, 0x74, 0x64, 0x20, 0x2b, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78,
+0x34, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x6c, 0x72, 0x28, 0x20, 0x73, 0x72, 0x63, 0x20,
+0x2b, 0x20, 0x28, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3c,
+0x3c, 0x20, 0x32, 0x20, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64,
+0x65, 0x2c, 0x20, 0x64, 0x63, 0x30, 0x2c, 0x20, 0x64, 0x63, 0x30, 0x2c, 0x20, 0x64, 0x63, 0x30,
+0x2c, 0x20, 0x64, 0x63, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65,
+0x20, 0x20, 0x2f, 0x2a, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69,
+0x7a, 0x65, 0x64, 0x3a, 0x20, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x20,
+0x63, 0x68, 0x65, 0x61, 0x70, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x73, 0x20,
+0x61, 0x72, 0x65, 0x20, 0x73, 0x63, 0x61, 0x72, 0x63, 0x65, 0x20, 0x2a, 0x2f, 0x0a, 0x69, 0x6e,
+0x74, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x38,
+0x78, 0x38, 0x5f, 0x64, 0x64, 0x6c, 0x28, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f,
+0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x73, 0x72, 0x63, 0x2c, 0x20,
+0x69, 0x6e, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20,
+0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65,
+0x6c, 0x20, 0x2a, 0x74, 0x6f, 0x70, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61,
+0x74, 0x65, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x33, 0x32,
+0x5d, 0x3b, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20,
+0x30, 0x3b, 0x20, 0x79, 0x20, 0x3c, 0x20, 0x34, 0x3b, 0x20, 0x79, 0x2b, 0x2b, 0x20, 0x29, 0x0a,
+0x7b, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x30,
+0x3b, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x38, 0x3b, 0x20, 0x78, 0x2b, 0x2b, 0x20, 0x29, 0x0a, 0x7b,
+0x0a, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x78, 0x5f, 0x70, 0x6c, 0x75, 0x73, 0x5f, 0x79, 0x20,
+0x3d, 0x20, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x29, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x5f,
+0x69, 0x6e, 0x74, 0x28, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x79, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31,
+0x33, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x78, 0x20, 0x2b, 0x20, 0x79, 0x2a,
+0x38, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x78,
+0x5f, 0x70, 0x6c, 0x75, 0x73, 0x5f, 0x79, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70,
+0x5b, 0x78, 0x5f, 0x70, 0x6c, 0x75, 0x73, 0x5f, 0x79, 0x20, 0x2b, 0x20, 0x31, 0x5d, 0x20, 0x2b,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x78, 0x5f, 0x70, 0x6c, 0x75, 0x73, 0x5f, 0x79, 0x20, 0x2b, 0x20,
+0x32, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x7d, 0x0a, 0x7d, 0x0a, 0x69,
+0x6e, 0x74, 0x20, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38,
+0x78, 0x34, 0x5f, 0x6c, 0x70, 0x28, 0x20, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f,
+0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x38, 0x20,
+0x29, 0x3b, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20,
+0x34, 0x3b, 0x20, 0x79, 0x20, 0x3c, 0x20, 0x38, 0x3b, 0x20, 0x79, 0x2b, 0x2b, 0x20, 0x29, 0x0a,
+0x7b, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x30,
+0x3b, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x38, 0x3b, 0x20, 0x78, 0x2b, 0x2b, 0x20, 0x29, 0x0a, 0x7b,
+0x0a, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x78, 0x5f, 0x70, 0x6c, 0x75, 0x73, 0x5f, 0x79, 0x20,
+0x3d, 0x20, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x29, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x5f,
+0x69, 0x6e, 0x74, 0x28, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x79, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31,
+0x33, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x20,
+0x79, 0x20, 0x2d, 0x20, 0x34, 0x20, 0x29, 0x2a, 0x38, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x32,
+0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x78, 0x5f, 0x70, 0x6c, 0x75, 0x73, 0x5f, 0x79, 0x5d,
+0x20, 0x2b, 0x20, 0x32, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x78, 0x5f, 0x70, 0x6c, 0x75, 0x73, 0x5f,
+0x79, 0x20, 0x2b, 0x20, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x78, 0x5f, 0x70,
+0x6c, 0x75, 0x73, 0x5f, 0x79, 0x20, 0x2b, 0x20, 0x32, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20,
+0x32, 0x3b, 0x0a, 0x7d, 0x0a, 0x7d, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x33, 0x31, 0x5d, 0x20,
+0x3d, 0x20, 0x28, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x34, 0x5d, 0x20,
+0x2b, 0x20, 0x33, 0x2a, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x35, 0x5d, 0x20, 0x29, 0x20, 0x3e, 0x3e,
+0x20, 0x32, 0x3b, 0x0a, 0x73, 0x61, 0x74, 0x64, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64,
+0x5f, 0x38, 0x78, 0x34, 0x5f, 0x6c, 0x70, 0x28, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x20, 0x28,
+0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20, 0x32,
+0x20, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20,
+0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x38, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72,
+0x6e, 0x20, 0x73, 0x61, 0x74, 0x64, 0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x32,
+0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x64,
+0x64, 0x72, 0x28, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20,
+0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73,
+0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x74,
+0x6f, 0x70, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x6c, 0x65, 0x66, 0x74, 0x2c, 0x20, 0x70, 0x69, 0x78,
+0x65, 0x6c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20, 0x29, 0x0a, 0x7b, 0x0a,
+0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x70, 0x72,
+0x65, 0x64, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20,
+0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x78, 0x2c, 0x20, 0x79, 0x20, 0x29, 0x20, 0x70, 0x72, 0x65,
+0x64, 0x5b, 0x28, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x79, 0x29, 0x2a, 0x38, 0x5d, 0x0a, 0x50,
+0x52, 0x45, 0x44, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32,
+0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x32, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50,
+0x52, 0x45, 0x44, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52,
+0x45, 0x44, 0x28, 0x20, 0x31, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31,
+0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52,
+0x45, 0x44, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45,
+0x44, 0x28, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44,
+0x28, 0x20, 0x32, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45,
+0x44, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44,
+0x28, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x32, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20,
+0x33, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20,
+0x31, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x32,
+0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c,
+0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20,
+0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74,
+0x6f, 0x70, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x32, 0x2c, 0x20, 0x30,
+0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20, 0x31, 0x20,
+0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20, 0x32, 0x20, 0x29,
+0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x35, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20,
+0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a,
+0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50,
+0x52, 0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52,
+0x45, 0x44, 0x28, 0x20, 0x35, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45,
+0x44, 0x28, 0x20, 0x36, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20,
+0x34, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x35,
+0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x36, 0x2c,
+0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x37, 0x2c, 0x20,
+0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x35, 0x2c, 0x20, 0x30, 0x20, 0x29,
+0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x36, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20,
+0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x37, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d,
+0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50,
+0x52, 0x45, 0x44, 0x28, 0x20, 0x36, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52,
+0x45, 0x44, 0x28, 0x20, 0x37, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x37, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x74, 0x64,
+0x20, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x6c, 0x70, 0x28, 0x20,
+0x73, 0x72, 0x63, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c,
+0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x38, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44,
+0x28, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x2c,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44,
+0x28, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x31, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x2c, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x30, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20,
+0x31, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x32,
+0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x30,
+0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x31, 0x2c,
+0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x32, 0x2c, 0x20,
+0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20, 0x33,
+0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d,
+0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x34, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x31, 0x2c, 0x20, 0x30,
+0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x20,
+0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x20, 0x29,
+0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20,
+0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20,
+0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d,
+0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20,
+0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x35, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46,
+0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a,
+0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50,
+0x52, 0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52,
+0x45, 0x44, 0x28, 0x20, 0x35, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45,
+0x44, 0x28, 0x20, 0x36, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d,
+0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52,
+0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45,
+0x44, 0x28, 0x20, 0x35, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44,
+0x28, 0x20, 0x36, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x37, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x35, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20,
+0x36, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x37,
+0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x36, 0x2c,
+0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x37, 0x2c, 0x20,
+0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x37, 0x2c, 0x20, 0x30, 0x20, 0x29,
+0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b,
+0x0a, 0x73, 0x61, 0x74, 0x64, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78,
+0x34, 0x5f, 0x6c, 0x70, 0x28, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x73, 0x72,
+0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x20, 0x29, 0x2c,
+0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x65,
+0x64, 0x2c, 0x20, 0x38, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73,
+0x61, 0x74, 0x64, 0x3b, 0x0a, 0x23, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x50, 0x52, 0x45, 0x44,
+0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64,
+0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x76, 0x72, 0x28, 0x20, 0x63, 0x6f, 0x6e, 0x73,
+0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x73,
+0x72, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69,
+0x64, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73,
+0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x6c,
+0x65, 0x66, 0x74, 0x2c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f,
+0x74, 0x6f, 0x70, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a,
+0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x78, 0x2c,
+0x20, 0x79, 0x20, 0x29, 0x20, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x28, 0x78, 0x29, 0x20, 0x2b, 0x20,
+0x28, 0x79, 0x29, 0x2a, 0x38, 0x5d, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x30, 0x2c, 0x20,
+0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31,
+0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5f, 0x74, 0x6f, 0x70, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x30, 0x2c,
+0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x32, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x30, 0x2c,
+0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x31, 0x2c, 0x20,
+0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30,
+0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x30, 0x2c, 0x20,
+0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x31, 0x2c, 0x20, 0x32,
+0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f,
+0x70, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45,
+0x44, 0x28, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44,
+0x28, 0x20, 0x32, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x31, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20,
+0x32, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50,
+0x52, 0x45, 0x44, 0x28, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52,
+0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x32, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20,
+0x33, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50,
+0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52,
+0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x33, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20,
+0x34, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50,
+0x52, 0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52,
+0x45, 0x44, 0x28, 0x20, 0x35, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x34, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20,
+0x35, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50,
+0x52, 0x45, 0x44, 0x28, 0x20, 0x35, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52,
+0x45, 0x44, 0x28, 0x20, 0x36, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x35, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20,
+0x36, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50,
+0x52, 0x45, 0x44, 0x28, 0x20, 0x36, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52,
+0x45, 0x44, 0x28, 0x20, 0x37, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x36, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20,
+0x37, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50,
+0x52, 0x45, 0x44, 0x28, 0x20, 0x37, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32,
+0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44,
+0x28, 0x20, 0x37, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b,
+0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64,
+0x5f, 0x38, 0x78, 0x34, 0x5f, 0x6c, 0x70, 0x28, 0x20, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x73, 0x72,
+0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20,
+0x38, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x20,
+0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x2c,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33,
+0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x20,
+0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x2c,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34,
+0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x20,
+0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x20, 0x29,
+0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x2c, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x20, 0x29,
+0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x31, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20,
+0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20,
+0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x32, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d,
+0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20,
+0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20,
+0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x32, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d,
+0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x20, 0x29,
+0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d,
+0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20,
+0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b,
+0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20,
+0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46,
+0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20,
+0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20, 0x33,
+0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f,
+0x70, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31,
+0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x20,
+0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20, 0x32, 0x20, 0x29,
+0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x34,
+0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x35, 0x2c,
+0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30,
+0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32,
+0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20, 0x30, 0x20,
+0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x35, 0x2c, 0x20, 0x32, 0x20, 0x29,
+0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x35,
+0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x36, 0x2c,
+0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31,
+0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33,
+0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x35, 0x2c, 0x20, 0x30, 0x20,
+0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x36, 0x2c, 0x20, 0x32, 0x20, 0x29,
+0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x36,
+0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x37, 0x2c,
+0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32,
+0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34,
+0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x36, 0x2c, 0x20, 0x30, 0x20,
+0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x37, 0x2c, 0x20, 0x32, 0x20, 0x29,
+0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x37,
+0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x35, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x37, 0x2c, 0x20, 0x30,
+0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x73, 0x61, 0x74, 0x64, 0x20,
+0x2b, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x6c, 0x70, 0x28, 0x20,
+0x73, 0x72, 0x63, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69,
+0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x20, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73,
+0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x38, 0x20, 0x29,
+0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x61, 0x74, 0x64, 0x3b, 0x0a, 0x23,
+0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x50, 0x52, 0x45, 0x44, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x6c,
+0x69, 0x6e, 0x65, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x70, 0x61, 0x63,
+0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f,
+0x74, 0x20, 0x61, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x20,
+0x29, 0x0a, 0x7b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x28,
+0x62, 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x36, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x6c, 0x69,
+0x6e, 0x65, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x70, 0x61, 0x63, 0x6b,
+0x38, 0x74, 0x6f, 0x31, 0x36, 0x28, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20,
+0x61, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x20, 0x29, 0x0a,
+0x7b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x28, 0x62, 0x20,
+0x3c, 0x3c, 0x20, 0x38, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x32, 0x36,
+0x34, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x68, 0x64,
+0x28, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69,
+0x78, 0x65, 0x6c, 0x20, 0x2a, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x72,
+0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20,
+0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x74, 0x6f, 0x70,
+0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69,
+0x78, 0x65, 0x6c, 0x20, 0x2a, 0x6c, 0x65, 0x66, 0x74, 0x2c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x70, 0x72,
+0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x70, 0x72, 0x65, 0x64,
+0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x74, 0x64, 0x3b, 0x0a,
+0x69, 0x6e, 0x74, 0x20, 0x70, 0x31, 0x20, 0x3d, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x38, 0x74,
+0x6f, 0x31, 0x36, 0x28, 0x20, 0x28, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36,
+0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x28,
+0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d,
+0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x69,
+0x6e, 0x74, 0x20, 0x70, 0x32, 0x20, 0x3d, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x38, 0x74, 0x6f,
+0x31, 0x36, 0x28, 0x20, 0x28, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d,
+0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x28,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20,
+0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e,
+0x74, 0x20, 0x70, 0x33, 0x20, 0x3d, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x38, 0x74, 0x6f, 0x31,
+0x36, 0x28, 0x20, 0x28, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x2c,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x28, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b,
+0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74,
+0x20, 0x70, 0x34, 0x20, 0x3d, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x38, 0x74, 0x6f, 0x31, 0x36,
+0x28, 0x20, 0x28, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x2c, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x28, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20,
+0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20,
+0x70, 0x35, 0x20, 0x3d, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x38, 0x74, 0x6f, 0x31, 0x36, 0x28,
+0x20, 0x28, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x28, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x32, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32,
+0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x70,
+0x36, 0x20, 0x3d, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x38, 0x74, 0x6f, 0x31, 0x36, 0x28, 0x20,
+0x28, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x28, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31,
+0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29,
+0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x37,
+0x20, 0x3d, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x38, 0x74, 0x6f, 0x31, 0x36, 0x28, 0x20, 0x28,
+0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x31, 0x5d, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5f,
+0x74, 0x6f, 0x70, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30,
+0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29,
+0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x38,
+0x20, 0x3d, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x38, 0x74, 0x6f, 0x31, 0x36, 0x28, 0x20, 0x28,
+0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x2c, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x28, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74,
+0x6f, 0x70, 0x20, 0x2b, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29,
+0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x39,
+0x20, 0x3d, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x38, 0x74, 0x6f, 0x31, 0x36, 0x28, 0x20, 0x28,
+0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x20, 0x29, 0x29, 0x2c,
+0x20, 0x28, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x29, 0x20,
+0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x20, 0x70, 0x61,
+0x63, 0x6b, 0x38, 0x74, 0x6f, 0x31, 0x36, 0x28, 0x20, 0x28, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x31, 0x5d, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x70,
+0x31, 0x31, 0x20, 0x3d, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x38, 0x74, 0x6f, 0x31, 0x36, 0x28,
+0x20, 0x28, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x29, 0x2c,
+0x20, 0x28, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x29, 0x20,
+0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75,
+0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33,
+0x32, 0x28, 0x20, 0x70, 0x38, 0x2c, 0x20, 0x70, 0x39, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30,
+0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x30, 0x20, 0x2b, 0x20, 0x30, 0x20, 0x2a, 0x20,
+0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61,
+0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36,
+0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x31, 0x30, 0x2c, 0x20, 0x70, 0x31, 0x31, 0x20, 0x29,
+0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x34, 0x20, 0x2b,
+0x20, 0x30, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72,
+0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70,
+0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x37, 0x2c, 0x20, 0x70,
+0x38, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b,
+0x30, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73,
+0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34,
+0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x39,
+0x2c, 0x20, 0x70, 0x31, 0x30, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70,
+0x72, 0x65, 0x64, 0x5b, 0x34, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29,
+0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63,
+0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32,
+0x28, 0x20, 0x70, 0x36, 0x2c, 0x20, 0x70, 0x37, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c,
+0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x30, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x38,
+0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73,
+0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74,
+0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x38, 0x2c, 0x20, 0x70, 0x39, 0x20, 0x29, 0x20, 0x29, 0x2c,
+0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x34, 0x20, 0x2b, 0x20, 0x32, 0x20,
+0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28,
+0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b,
+0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x35, 0x2c, 0x20, 0x70, 0x36, 0x20, 0x29,
+0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x30, 0x20, 0x2b,
+0x20, 0x33, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72,
+0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70,
+0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x37, 0x2c, 0x20, 0x70,
+0x38, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b,
+0x34, 0x20, 0x2b, 0x20, 0x33, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x73, 0x61,
+0x74, 0x64, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x6c, 0x70,
+0x28, 0x20, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64,
+0x65, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x38, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73,
+0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34,
+0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x34,
+0x2c, 0x20, 0x70, 0x35, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72,
+0x65, 0x64, 0x5b, 0x30, 0x20, 0x2b, 0x20, 0x30, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b,
+0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68,
+0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28,
+0x20, 0x70, 0x36, 0x2c, 0x20, 0x70, 0x37, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20,
+0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x34, 0x20, 0x2b, 0x20, 0x30, 0x20, 0x2a, 0x20, 0x38, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f,
+0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f,
+0x33, 0x32, 0x28, 0x20, 0x70, 0x33, 0x2c, 0x20, 0x70, 0x34, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20,
+0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x30, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2a,
+0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20,
+0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31,
+0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x35, 0x2c, 0x20, 0x70, 0x36, 0x20, 0x29, 0x20,
+0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x34, 0x20, 0x2b, 0x20,
+0x31, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65,
+0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61,
+0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x32, 0x2c, 0x20, 0x70, 0x33,
+0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x30,
+0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74,
+0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28,
+0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x34, 0x2c,
+0x20, 0x70, 0x35, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65,
+0x64, 0x5b, 0x34, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a,
+0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61,
+0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20,
+0x70, 0x31, 0x2c, 0x20, 0x70, 0x32, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26,
+0x70, 0x72, 0x65, 0x64, 0x5b, 0x30, 0x20, 0x2b, 0x20, 0x33, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75,
+0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33,
+0x32, 0x28, 0x20, 0x70, 0x33, 0x2c, 0x20, 0x70, 0x34, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30,
+0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x34, 0x20, 0x2b, 0x20, 0x33, 0x20, 0x2a, 0x20,
+0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x73, 0x61, 0x74, 0x64, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x61,
+0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x6c, 0x70, 0x28, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b,
+0x20, 0x28, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3c, 0x3c,
+0x20, 0x32, 0x20, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65,
+0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x38, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74,
+0x75, 0x72, 0x6e, 0x20, 0x73, 0x61, 0x74, 0x64, 0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20,
+0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38,
+0x5f, 0x76, 0x6c, 0x28, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
+0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74,
+0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e,
+0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a,
+0x74, 0x6f, 0x70, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a,
+0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x74, 0x64, 0x3b, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e,
+0x65, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x78, 0x2c, 0x20, 0x79, 0x20, 0x29, 0x20, 0x70,
+0x72, 0x65, 0x64, 0x5b, 0x28, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x79, 0x29, 0x2a, 0x38, 0x5d,
+0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20,
+0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b,
+0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x31,
+0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x30, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20,
+0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d,
+0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x32, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x30, 0x2c, 0x20,
+0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x31, 0x2c, 0x20, 0x31,
+0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20,
+0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d,
+0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x31, 0x2c, 0x20,
+0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x32, 0x2c, 0x20, 0x31,
+0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x32, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20,
+0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d,
+0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x32, 0x2c, 0x20,
+0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20, 0x31,
+0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20,
+0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d,
+0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20,
+0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20, 0x31,
+0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20,
+0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x35, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d,
+0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x36, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20,
+0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x35, 0x2c, 0x20, 0x31,
+0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x35, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20,
+0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x36, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d,
+0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x35, 0x2c, 0x20,
+0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x36, 0x2c, 0x20, 0x31,
+0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x36, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20,
+0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x37, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d,
+0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70,
+0x5b, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x36, 0x2c, 0x20,
+0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x37, 0x2c, 0x20, 0x31,
+0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x37, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20,
+0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x39, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x37, 0x2c,
+0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38,
+0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31,
+0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x74,
+0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x6c, 0x70, 0x28, 0x20, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x73,
+0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c,
+0x20, 0x38, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x30,
+0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x32, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x30, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x30, 0x2c,
+0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x31, 0x2c, 0x20,
+0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44,
+0x28, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x31, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x31, 0x2c,
+0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x32, 0x2c, 0x20,
+0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x34, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44,
+0x28, 0x20, 0x31, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x32, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x32, 0x2c,
+0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c, 0x20,
+0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x35, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44,
+0x28, 0x20, 0x32, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x33, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x33, 0x2c,
+0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x34, 0x2c, 0x20,
+0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x36, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44,
+0x28, 0x20, 0x33, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x34, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x34, 0x2c,
+0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x35, 0x2c, 0x20,
+0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x37, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44,
+0x28, 0x20, 0x34, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x35, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x37, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x39, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x35, 0x2c,
+0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x36, 0x2c, 0x20,
+0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x38, 0x5d,
+0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44,
+0x28, 0x20, 0x35, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28,
+0x20, 0x36, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x38, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x2c, 0x20, 0x74, 0x6f,
+0x70, 0x5b, 0x31, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x36,
+0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x37, 0x2c,
+0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x39,
+0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52,
+0x45, 0x44, 0x28, 0x20, 0x36, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x50, 0x52, 0x45,
+0x44, 0x28, 0x20, 0x37, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x32, 0x28, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x39, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30, 0x5d, 0x2c,
+0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x31, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44,
+0x28, 0x20, 0x37, 0x2c, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3d, 0x20, 0x46, 0x31, 0x28, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x31, 0x30, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x31, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x50, 0x52, 0x45, 0x44, 0x28, 0x20, 0x37, 0x2c, 0x20, 0x33, 0x20, 0x29, 0x20,
+0x3d, 0x20, 0x46, 0x32, 0x28, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x30, 0x5d, 0x2c, 0x20, 0x74,
+0x6f, 0x70, 0x5b, 0x31, 0x31, 0x5d, 0x2c, 0x20, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x32, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x73, 0x61, 0x74, 0x64, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f,
+0x38, 0x78, 0x34, 0x5f, 0x6c, 0x70, 0x28, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x20, 0x28, 0x20,
+0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x20,
+0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70,
+0x72, 0x65, 0x64, 0x2c, 0x20, 0x38, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
+0x20, 0x73, 0x61, 0x74, 0x64, 0x3b, 0x0a, 0x23, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x50, 0x52,
+0x45, 0x44, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72,
+0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x68, 0x75, 0x28, 0x20, 0x63, 0x6f,
+0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20,
+0x2a, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74,
+0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61,
+0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x29, 0x0a,
+0x7b, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20,
+0x70, 0x72, 0x65, 0x64, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61,
+0x74, 0x64, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x31, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x63,
+0x6b, 0x38, 0x74, 0x6f, 0x31, 0x36, 0x28, 0x20, 0x28, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x29, 0x29,
+0x2c, 0x20, 0x28, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20,
+0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x29,
+0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x32, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x38,
+0x74, 0x6f, 0x31, 0x36, 0x28, 0x20, 0x28, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b,
+0x31, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x29, 0x29, 0x2c, 0x20,
+0x28, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33,
+0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x29, 0x3b, 0x0a,
+0x69, 0x6e, 0x74, 0x20, 0x70, 0x33, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x38, 0x74, 0x6f,
+0x31, 0x36, 0x28, 0x20, 0x28, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d,
+0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x28,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20,
+0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e,
+0x74, 0x20, 0x70, 0x34, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x38, 0x74, 0x6f, 0x31, 0x36,
+0x28, 0x20, 0x28, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33, 0x5d, 0x2c, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x28, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20,
+0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20,
+0x70, 0x35, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x38, 0x74, 0x6f, 0x31, 0x36, 0x28, 0x20,
+0x28, 0x46, 0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x6c, 0x65,
+0x66, 0x74, 0x5b, 0x35, 0x5d, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x28, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x34, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35,
+0x5d, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29,
+0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x36,
+0x20, 0x3d, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x38, 0x74, 0x6f, 0x31, 0x36, 0x28, 0x20, 0x28, 0x46,
+0x31, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74,
+0x5b, 0x36, 0x5d, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x35,
+0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20,
+0x2b, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e,
+0x3e, 0x20, 0x32, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x37, 0x20, 0x3d,
+0x20, 0x70, 0x61, 0x63, 0x6b, 0x38, 0x74, 0x6f, 0x31, 0x36, 0x28, 0x20, 0x28, 0x46, 0x31, 0x28,
+0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37,
+0x5d, 0x20, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x28, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x36, 0x5d, 0x20,
+0x2b, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20,
+0x32, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x38, 0x20, 0x3d, 0x20, 0x70,
+0x61, 0x63, 0x6b, 0x38, 0x74, 0x6f, 0x31, 0x36, 0x28, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37,
+0x5d, 0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x37, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73,
+0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34,
+0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x31,
+0x2c, 0x20, 0x70, 0x32, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72,
+0x65, 0x64, 0x5b, 0x28, 0x20, 0x30, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x30, 0x20, 0x29,
+0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34,
+0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63,
+0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x33, 0x2c, 0x20, 0x70, 0x34, 0x20,
+0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x28, 0x20,
+0x34, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x30, 0x20, 0x29, 0x20, 0x2a, 0x20, 0x38, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f,
+0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f,
+0x33, 0x32, 0x28, 0x20, 0x70, 0x32, 0x2c, 0x20, 0x70, 0x33, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20,
+0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x28, 0x20, 0x30, 0x20, 0x29, 0x20, 0x2b,
+0x20, 0x28, 0x20, 0x31, 0x20, 0x29, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76,
+0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72,
+0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70,
+0x34, 0x2c, 0x20, 0x70, 0x35, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70,
+0x72, 0x65, 0x64, 0x5b, 0x28, 0x20, 0x34, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x31, 0x20,
+0x29, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65,
+0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61,
+0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x33, 0x2c, 0x20, 0x70, 0x34,
+0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x28,
+0x20, 0x30, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x32, 0x20, 0x29, 0x20, 0x2a, 0x20, 0x38,
+0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73,
+0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74,
+0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x35, 0x2c, 0x20, 0x70, 0x36, 0x20, 0x29, 0x20, 0x29, 0x2c,
+0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x28, 0x20, 0x34, 0x20, 0x29, 0x20,
+0x2b, 0x20, 0x28, 0x20, 0x32, 0x20, 0x29, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a,
+0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61,
+0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20,
+0x70, 0x34, 0x2c, 0x20, 0x70, 0x35, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26,
+0x70, 0x72, 0x65, 0x64, 0x5b, 0x28, 0x20, 0x30, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x33,
+0x20, 0x29, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72,
+0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70,
+0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x36, 0x2c, 0x20, 0x70,
+0x37, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b,
+0x28, 0x20, 0x34, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x33, 0x20, 0x29, 0x20, 0x2a, 0x20,
+0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x74,
+0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x6c, 0x70, 0x28, 0x20, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x73,
+0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c,
+0x20, 0x38, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61,
+0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36,
+0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x35, 0x2c, 0x20, 0x70, 0x36, 0x20, 0x29, 0x20, 0x29,
+0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x28, 0x20, 0x30, 0x20, 0x29,
+0x20, 0x2b, 0x20, 0x28, 0x20, 0x30, 0x20, 0x29, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b,
+0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68,
+0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28,
+0x20, 0x70, 0x37, 0x2c, 0x20, 0x70, 0x38, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20,
+0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x28, 0x20, 0x34, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x20,
+0x30, 0x20, 0x29, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f,
+0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20,
+0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x36, 0x2c, 0x20,
+0x70, 0x37, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64,
+0x5b, 0x28, 0x20, 0x30, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x31, 0x20, 0x29, 0x20, 0x2a,
+0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20,
+0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31,
+0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x38, 0x2c, 0x20, 0x70, 0x38, 0x20, 0x29, 0x20,
+0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x28, 0x20, 0x34, 0x20,
+0x29, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x31, 0x20, 0x29, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29,
+0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63,
+0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32,
+0x28, 0x20, 0x70, 0x37, 0x2c, 0x20, 0x70, 0x38, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c,
+0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x28, 0x20, 0x30, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x28,
+0x20, 0x32, 0x20, 0x29, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74,
+0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28,
+0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x38, 0x2c,
+0x20, 0x70, 0x38, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65,
+0x64, 0x5b, 0x28, 0x20, 0x34, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x32, 0x20, 0x29, 0x20,
+0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28,
+0x20, 0x61, 0x73, 0x5f, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b,
+0x31, 0x36, 0x74, 0x6f, 0x33, 0x32, 0x28, 0x20, 0x70, 0x38, 0x2c, 0x20, 0x70, 0x38, 0x20, 0x29,
+0x20, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x28, 0x20, 0x30,
+0x20, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x33, 0x20, 0x29, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x34, 0x28, 0x20, 0x61, 0x73, 0x5f, 0x75,
+0x63, 0x68, 0x61, 0x72, 0x34, 0x28, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x31, 0x36, 0x74, 0x6f, 0x33,
+0x32, 0x28, 0x20, 0x70, 0x38, 0x2c, 0x20, 0x70, 0x38, 0x20, 0x29, 0x20, 0x29, 0x2c, 0x20, 0x30,
+0x2c, 0x20, 0x26, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x28, 0x20, 0x34, 0x20, 0x29, 0x20, 0x2b, 0x20,
+0x28, 0x20, 0x33, 0x20, 0x29, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x73, 0x61,
+0x74, 0x64, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x6c,
+0x70, 0x28, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73,
+0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x20, 0x29, 0x2c, 0x20, 0x73, 0x72,
+0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20,
+0x38, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x61, 0x74, 0x64,
+0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65,
+0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x63, 0x5f, 0x68, 0x28, 0x20, 0x63, 0x6f, 0x6e,
+0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a,
+0x73, 0x72, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72,
+0x69, 0x64, 0x65, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a,
+0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65,
+0x6c, 0x20, 0x2a, 0x73, 0x72, 0x63, 0x5f, 0x6c, 0x20, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x3b, 0x0a,
+0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x38, 0x28, 0x20, 0x28, 0x75, 0x63, 0x68, 0x61, 0x72, 0x38,
+0x29, 0x28, 0x73, 0x72, 0x63, 0x5b, 0x2d, 0x31, 0x5d, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x70,
+0x72, 0x65, 0x64, 0x20, 0x29, 0x3b, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72,
+0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65,
+0x38, 0x28, 0x20, 0x28, 0x75, 0x63, 0x68, 0x61, 0x72, 0x38, 0x29, 0x28, 0x73, 0x72, 0x63, 0x5b,
+0x2d, 0x31, 0x5d, 0x29, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x29, 0x3b,
+0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69,
+0x64, 0x65, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x38, 0x28, 0x20, 0x28, 0x75, 0x63,
+0x68, 0x61, 0x72, 0x38, 0x29, 0x28, 0x73, 0x72, 0x63, 0x5b, 0x2d, 0x31, 0x5d, 0x29, 0x2c, 0x20,
+0x32, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x29, 0x3b, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b,
+0x3d, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3b, 0x0a, 0x76, 0x73,
+0x74, 0x6f, 0x72, 0x65, 0x38, 0x28, 0x20, 0x28, 0x75, 0x63, 0x68, 0x61, 0x72, 0x38, 0x29, 0x28,
+0x73, 0x72, 0x63, 0x5b, 0x2d, 0x31, 0x5d, 0x29, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x70, 0x72, 0x65,
+0x64, 0x20, 0x29, 0x3b, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x5f,
+0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x74, 0x64,
+0x20, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x6c, 0x70, 0x28, 0x20,
+0x73, 0x72, 0x63, 0x5f, 0x6c, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64,
+0x65, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x38, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73,
+0x74, 0x6f, 0x72, 0x65, 0x38, 0x28, 0x20, 0x28, 0x75, 0x63, 0x68, 0x61, 0x72, 0x38, 0x29, 0x28,
+0x73, 0x72, 0x63, 0x5b, 0x2d, 0x31, 0x5d, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x70, 0x72, 0x65,
+0x64, 0x20, 0x29, 0x3b, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x5f,
+0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x38, 0x28,
+0x20, 0x28, 0x75, 0x63, 0x68, 0x61, 0x72, 0x38, 0x29, 0x28, 0x73, 0x72, 0x63, 0x5b, 0x2d, 0x31,
+0x5d, 0x29, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x29, 0x3b, 0x20, 0x73,
+0x72, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65,
+0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x38, 0x28, 0x20, 0x28, 0x75, 0x63, 0x68, 0x61,
+0x72, 0x38, 0x29, 0x28, 0x73, 0x72, 0x63, 0x5b, 0x2d, 0x31, 0x5d, 0x29, 0x2c, 0x20, 0x32, 0x2c,
+0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x29, 0x3b, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x3d, 0x20,
+0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f,
+0x72, 0x65, 0x38, 0x28, 0x20, 0x28, 0x75, 0x63, 0x68, 0x61, 0x72, 0x38, 0x29, 0x28, 0x73, 0x72,
+0x63, 0x5b, 0x2d, 0x31, 0x5d, 0x29, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20,
+0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x61, 0x74, 0x64, 0x20, 0x2b,
+0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x6c, 0x70, 0x28, 0x20, 0x73, 0x72,
+0x63, 0x5f, 0x6c, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69,
+0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x20, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73,
+0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x38, 0x20, 0x29,
+0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65,
+0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x63, 0x5f, 0x76, 0x28, 0x20, 0x63, 0x6f, 0x6e,
+0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a,
+0x73, 0x72, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72,
+0x69, 0x64, 0x65, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a,
+0x75, 0x63, 0x68, 0x61, 0x72, 0x31, 0x36, 0x20, 0x76, 0x31, 0x36, 0x3b, 0x0a, 0x76, 0x31, 0x36,
+0x2e, 0x6c, 0x6f, 0x20, 0x3d, 0x20, 0x76, 0x6c, 0x6f, 0x61, 0x64, 0x38, 0x28, 0x20, 0x30, 0x2c,
+0x20, 0x26, 0x73, 0x72, 0x63, 0x5b, 0x2d, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64,
+0x65, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x31, 0x36, 0x2e, 0x68, 0x69, 0x20, 0x3d, 0x20, 0x76,
+0x6c, 0x6f, 0x61, 0x64, 0x38, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x26, 0x73, 0x72, 0x63, 0x5b, 0x2d,
+0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x76,
+0x73, 0x74, 0x6f, 0x72, 0x65, 0x31, 0x36, 0x28, 0x20, 0x76, 0x31, 0x36, 0x2c, 0x20, 0x30, 0x2c,
+0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x31,
+0x36, 0x28, 0x20, 0x76, 0x31, 0x36, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20,
+0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38,
+0x78, 0x34, 0x5f, 0x6c, 0x70, 0x28, 0x20, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f,
+0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x38, 0x20,
+0x29, 0x20, 0x2b, 0x0a, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x6c, 0x70, 0x28,
+0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x20, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69,
+0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74,
+0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x38, 0x20, 0x29, 0x3b,
+0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64,
+0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x63, 0x5f, 0x70, 0x28, 0x20, 0x63, 0x6f, 0x6e, 0x73,
+0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x2a, 0x73,
+0x72, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69,
+0x64, 0x65, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x48, 0x20, 0x3d, 0x20, 0x30,
+0x2c, 0x20, 0x56, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65,
+0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x33, 0x32, 0x5d, 0x3b,
+0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x74, 0x64, 0x3b, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20,
+0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x34,
+0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x48, 0x20, 0x2b, 0x3d, 0x20, 0x28,
+0x69, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x73, 0x72, 0x63, 0x5b, 0x34, 0x20,
+0x2b, 0x20, 0x69, 0x20, 0x2d, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65,
+0x5d, 0x20, 0x2d, 0x20, 0x73, 0x72, 0x63, 0x5b, 0x32, 0x20, 0x2d, 0x20, 0x69, 0x20, 0x2d, 0x20,
+0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x29, 0x3b, 0x0a, 0x56, 0x20,
+0x2b, 0x3d, 0x20, 0x28, 0x69, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x73, 0x72,
+0x63, 0x5b, 0x2d, 0x31, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x20, 0x2b, 0x20, 0x34, 0x29, 0x20, 0x2a,
+0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x20, 0x2d, 0x20, 0x73,
+0x72, 0x63, 0x5b, 0x2d, 0x31, 0x20, 0x2b, 0x20, 0x28, 0x32, 0x20, 0x2d, 0x20, 0x69, 0x29, 0x20,
+0x2a, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x29, 0x3b, 0x0a,
+0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x31, 0x36, 0x20, 0x2a, 0x20, 0x28,
+0x73, 0x72, 0x63, 0x5b, 0x2d, 0x31, 0x20, 0x2b, 0x20, 0x37, 0x20, 0x2a, 0x20, 0x73, 0x72, 0x63,
+0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x20, 0x2b, 0x20, 0x73, 0x72, 0x63, 0x5b, 0x37,
+0x20, 0x2d, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x29, 0x3b,
+0x0a, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x37, 0x20, 0x2a, 0x20, 0x48,
+0x20, 0x2b, 0x20, 0x31, 0x36, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x3b, 0x0a, 0x69, 0x6e, 0x74,
+0x20, 0x63, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x37, 0x20, 0x2a, 0x20, 0x56, 0x20, 0x2b, 0x20, 0x31,
+0x36, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x30, 0x30,
+0x20, 0x3d, 0x20, 0x61, 0x20, 0x2d, 0x20, 0x33, 0x20, 0x2a, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x33,
+0x20, 0x2a, 0x20, 0x63, 0x20, 0x2b, 0x20, 0x31, 0x36, 0x3b, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20,
+0x69, 0x6e, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x79, 0x20, 0x3c, 0x20, 0x34,
+0x3b, 0x20, 0x79, 0x2b, 0x2b, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x69,
+0x78, 0x20, 0x3d, 0x20, 0x69, 0x30, 0x30, 0x3b, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e,
+0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x38, 0x3b, 0x20,
+0x78, 0x2b, 0x2b, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x78, 0x20, 0x2b,
+0x20, 0x79, 0x2a, 0x38, 0x5d, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63, 0x6c, 0x69,
+0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e, 0x3e, 0x20,
+0x35, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x7d,
+0x0a, 0x69, 0x30, 0x30, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x3b, 0x0a, 0x7d, 0x0a, 0x73, 0x61, 0x74,
+0x64, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x6c, 0x70, 0x28,
+0x20, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65,
+0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x38, 0x20, 0x29, 0x3b, 0x0a, 0x66, 0x6f, 0x72,
+0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x79, 0x20, 0x3c,
+0x20, 0x34, 0x3b, 0x20, 0x79, 0x2b, 0x2b, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x20,
+0x70, 0x69, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x30, 0x30, 0x3b, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20,
+0x69, 0x6e, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x38,
+0x3b, 0x20, 0x78, 0x2b, 0x2b, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x78,
+0x20, 0x2b, 0x20, 0x79, 0x2a, 0x38, 0x5d, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x63,
+0x6c, 0x69, 0x70, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x28, 0x20, 0x70, 0x69, 0x78, 0x20, 0x3e,
+0x3e, 0x20, 0x35, 0x20, 0x29, 0x3b, 0x0a, 0x70, 0x69, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b,
+0x0a, 0x7d, 0x0a, 0x69, 0x30, 0x30, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x3b, 0x0a, 0x7d, 0x0a, 0x73,
+0x61, 0x74, 0x64, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f,
+0x6c, 0x70, 0x28, 0x20, 0x73, 0x72, 0x63, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x73, 0x72, 0x63, 0x5f,
+0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x20, 0x29, 0x2c, 0x20, 0x73,
+0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c,
+0x20, 0x38, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x61, 0x74,
+0x64, 0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72,
+0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x63, 0x5f, 0x64, 0x63, 0x28, 0x20, 0x63,
+0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c,
+0x20, 0x2a, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73,
+0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74,
+0x65, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x5b, 0x33, 0x32, 0x5d,
+0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x73, 0x31,
+0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x73, 0x33,
+0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69,
+0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x34, 0x3b, 0x20, 0x69, 0x2b, 0x2b,
+0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x73, 0x30, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x5b, 0x69,
+0x20, 0x2d, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x3b, 0x0a,
+0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x5b, 0x69, 0x20, 0x2b, 0x20, 0x34, 0x20,
+0x2d, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x3b, 0x0a, 0x73,
+0x32, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x5b, 0x2d, 0x31, 0x20, 0x2b, 0x20, 0x69, 0x20,
+0x2a, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x3b, 0x0a, 0x73,
+0x33, 0x20, 0x2b, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x5b, 0x2d, 0x31, 0x20, 0x2b, 0x20, 0x28, 0x69,
+0x2b, 0x34, 0x29, 0x2a, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x3b,
+0x0a, 0x7d, 0x0a, 0x75, 0x63, 0x68, 0x61, 0x72, 0x38, 0x20, 0x64, 0x63, 0x30, 0x3b, 0x0a, 0x64,
+0x63, 0x30, 0x2e, 0x6c, 0x6f, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x29,
+0x28, 0x20, 0x28, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x34, 0x29, 0x20,
+0x3e, 0x3e, 0x20, 0x33, 0x20, 0x29, 0x3b, 0x0a, 0x64, 0x63, 0x30, 0x2e, 0x68, 0x69, 0x20, 0x3d,
+0x20, 0x28, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x29, 0x28, 0x20, 0x28, 0x73, 0x31, 0x20, 0x2b,
+0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f,
+0x72, 0x65, 0x38, 0x28, 0x20, 0x64, 0x63, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x70, 0x72, 0x65,
+0x64, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x38, 0x28, 0x20, 0x64, 0x63,
+0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73,
+0x74, 0x6f, 0x72, 0x65, 0x38, 0x28, 0x20, 0x64, 0x63, 0x30, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x70,
+0x72, 0x65, 0x64, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x38, 0x28, 0x20,
+0x64, 0x63, 0x30, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x29, 0x3b, 0x0a,
+0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f,
+0x38, 0x78, 0x34, 0x5f, 0x6c, 0x70, 0x28, 0x20, 0x73, 0x72, 0x63, 0x2c, 0x20, 0x73, 0x72, 0x63,
+0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x38,
+0x20, 0x29, 0x3b, 0x0a, 0x64, 0x63, 0x30, 0x2e, 0x6c, 0x6f, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x63,
+0x68, 0x61, 0x72, 0x34, 0x29, 0x28, 0x20, 0x28, 0x73, 0x33, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20,
+0x3e, 0x3e, 0x20, 0x32, 0x20, 0x29, 0x3b, 0x0a, 0x64, 0x63, 0x30, 0x2e, 0x68, 0x69, 0x20, 0x3d,
+0x20, 0x28, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x29, 0x28, 0x20, 0x28, 0x73, 0x31, 0x20, 0x2b,
+0x20, 0x73, 0x33, 0x20, 0x2b, 0x20, 0x34, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x33, 0x20, 0x29, 0x3b,
+0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x38, 0x28, 0x20, 0x64, 0x63, 0x30, 0x2c, 0x20, 0x30,
+0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65,
+0x38, 0x28, 0x20, 0x64, 0x63, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20,
+0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x38, 0x28, 0x20, 0x64, 0x63, 0x30, 0x2c,
+0x20, 0x32, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x29, 0x3b, 0x0a, 0x76, 0x73, 0x74, 0x6f,
+0x72, 0x65, 0x38, 0x28, 0x20, 0x64, 0x63, 0x30, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x70, 0x72, 0x65,
+0x64, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x61, 0x74, 0x64,
+0x20, 0x2b, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x6c, 0x70, 0x28, 0x20,
+0x73, 0x72, 0x63, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69,
+0x64, 0x65, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x20, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73,
+0x74, 0x72, 0x69, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x38, 0x20, 0x29,
+0x3b, 0x0a, 0x7d, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x2f, 0x2a, 0x20, 0x46, 0x69,
+0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x73,
+0x74, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x66, 0x6f, 0x72,
+0x20, 0x33, 0x32, 0x20, 0x38, 0x78, 0x38, 0x20, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x62, 0x6c, 0x6f,
+0x63, 0x6b, 0x73, 0x20, 0x70, 0x65, 0x72, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x67, 0x72, 0x6f, 0x75,
+0x70, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x4c, 0x6f, 0x61, 0x64, 0x73, 0x20, 0x33, 0x33, 0x20, 0x6d,
+0x61, 0x63, 0x72, 0x6f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x20, 0x70, 0x6c, 0x75, 0x73, 0x20,
+0x74, 0x68, 0x65, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63,
+0x74, 0x6c, 0x79, 0x20, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x20, 0x69,
+0x6e, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
+0x2c, 0x0a, 0x2a, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x68, 0x65, 0x72,
+0x65, 0x20, 0x6e, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68,
+0x20, 0x65, 0x64, 0x67, 0x65, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2e, 0x20, 0x20, 0x49,
+0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
+0x76, 0x65, 0x6c, 0x79, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x0a,
+0x2a, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x70, 0x20, 0x61,
+0x6e, 0x64, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x20, 0x66,
+0x6f, 0x72, 0x20, 0x75, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x6f,
+0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x0a,
+0x2a, 0x0a, 0x2a, 0x20, 0x54, 0x68, 0x65, 0x6e, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20,
+0x6f, 0x66, 0x20, 0x33, 0x32, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x65, 0x61,
+0x63, 0x68, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73,
+0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x20, 0x6d, 0x6f, 0x64, 0x65,
+0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x38, 0x78, 0x38, 0x0a, 0x2a, 0x20,
+0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x20, 0x20, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x20, 0x63, 0x6f,
+0x6e, 0x73, 0x65, 0x63, 0x75, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64,
+0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e,
+0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x61,
+0x20, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x2a, 0x20, 0x69, 0x73,
+0x20, 0x6e, 0x6f, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x2d, 0x70, 0x61, 0x74, 0x68, 0x20, 0x64, 0x69,
+0x76, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x20, 0x20, 0x38, 0x20, 0x69, 0x6e, 0x74,
+0x72, 0x61, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 0x61, 0x6c,
+0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x74, 0x61, 0x6e,
+0x65, 0x6f, 0x75, 0x73, 0x6c, 0x79, 0x2e, 0x20, 0x20, 0x49, 0x66, 0x0a, 0x2a, 0x20, 0x74, 0x68,
+0x65, 0x20, 0x22, 0x73, 0x6c, 0x6f, 0x77, 0x22, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e,
+0x74, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x2c, 0x20, 0x74,
+0x68, 0x65, 0x20, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x74, 0x77, 0x6f, 0x20, 0x28, 0x6c, 0x65,
+0x61, 0x73, 0x74, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x6c, 0x79, 0x29, 0x20, 0x69, 0x6e, 0x74, 0x72,
+0x61, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x0a, 0x2a, 0x20, 0x74, 0x65,
+0x73, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64,
+0x20, 0x70, 0x61, 0x73, 0x73, 0x2e, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x6c, 0x6f, 0x77,
+0x20, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x65, 0x6e,
+0x61, 0x62, 0x6c, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74,
+0x73, 0x20, 0x73, 0x6c, 0x6f, 0x77, 0x2c, 0x0a, 0x2a, 0x20, 0x73, 0x6c, 0x6f, 0x77, 0x65, 0x72,
+0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x2e, 0x0a, 0x2a,
+0x0a, 0x2a, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x20, 0x61,
+0x6c, 0x6c, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73,
+0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65,
+0x61, 0x64, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x6c,
+0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2c, 0x20, 0x61, 0x6e, 0x64,
+0x0a, 0x2a, 0x20, 0x61, 0x76, 0x6f, 0x69, 0x64, 0x73, 0x20, 0x72, 0x65, 0x2d, 0x66, 0x65, 0x74,
+0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x65, 0x64, 0x67, 0x65, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c,
+0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x6d, 0x65,
+0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x20, 0x20, 0x41, 0x6e, 0x64, 0x20, 0x69, 0x74, 0x20, 0x61, 0x6c,
+0x6c, 0x6f, 0x77, 0x73, 0x20, 0x75, 0x73, 0x20, 0x74, 0x6f, 0x0a, 0x2a, 0x20, 0x63, 0x61, 0x6c,
+0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68,
+0x65, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x63, 0x6f, 0x73,
+0x74, 0x73, 0x20, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x74, 0x61, 0x6e, 0x65, 0x6f, 0x75, 0x73, 0x6c,
+0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68,
+0x20, 0x64, 0x69, 0x76, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x0a, 0x2a, 0x0a, 0x2a,
+0x20, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+0x3a, 0x20, 0x20, 0x20, 0x20, 0x5b, 0x20, 0x33, 0x32, 0x2c, 0x20, 0x38, 0x20, 0x5d, 0x0a, 0x2a,
+0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+0x6e, 0x73, 0x3a, 0x20, 0x20, 0x5b, 0x20, 0x70, 0x61, 0x64, 0x64, 0x65, 0x64, 0x57, 0x69, 0x64,
+0x74, 0x68, 0x2c, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x5d, 0x20, 0x2a, 0x2f, 0x0a,
+0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x62, 0x5f, 0x69,
+0x6e, 0x74, 0x72, 0x61, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38,
+0x78, 0x38, 0x28, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d,
+0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x2c, 0x0a, 0x67,
+0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x2a, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x63,
+0x6f, 0x73, 0x74, 0x2c, 0x0a, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f,
+0x73, 0x74, 0x61, 0x74, 0x73, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x61, 0x6d, 0x62,
+0x64, 0x61, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74,
+0x68, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x6c, 0x6f, 0x77, 0x20, 0x29, 0x0a, 0x7b,
+0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x53,
+0x54, 0x52, 0x49, 0x44, 0x45, 0x20, 0x32, 0x36, 0x35, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e,
+0x65, 0x20, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x20, 0x32,
+0x36, 0x36, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x63,
+0x61, 0x63, 0x68, 0x65, 0x5b, 0x32, 0x33, 0x38, 0x35, 0x5d, 0x3b, 0x0a, 0x6c, 0x6f, 0x63, 0x61,
+0x6c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x66, 0x5b, 0x33,
+0x32, 0x5d, 0x3b, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20,
+0x74, 0x6f, 0x70, 0x5b, 0x33, 0x32, 0x20, 0x2a, 0x20, 0x31, 0x36, 0x5d, 0x3b, 0x0a, 0x6c, 0x6f,
+0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x33,
+0x32, 0x20, 0x2a, 0x20, 0x38, 0x5d, 0x3b, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69,
+0x78, 0x65, 0x6c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x5b, 0x33, 0x32, 0x5d,
+0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6c, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x6c,
+0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e,
+0x74, 0x20, 0x6c, 0x79, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
+0x5f, 0x69, 0x64, 0x28, 0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x67, 0x78,
+0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64,
+0x28, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x67, 0x79, 0x20, 0x3d, 0x20,
+0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x31,
+0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x67, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x67,
+0x65, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29,
+0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x67, 0x69, 0x64, 0x79, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74,
+0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a,
+0x69, 0x6e, 0x74, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x5f, 0x69, 0x64, 0x20, 0x3d, 0x20,
+0x6c, 0x79, 0x20, 0x2a, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73,
+0x69, 0x7a, 0x65, 0x28, 0x20, 0x30, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x6c, 0x78, 0x3b, 0x0a, 0x69,
+0x6e, 0x74, 0x20, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x43, 0x4f, 0x53, 0x54, 0x5f, 0x4d,
+0x41, 0x58, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x78, 0x20, 0x3d, 0x20,
+0x67, 0x69, 0x64, 0x78, 0x20, 0x3c, 0x3c, 0x20, 0x38, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x62,
+0x61, 0x73, 0x65, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x67, 0x69, 0x64, 0x79, 0x20, 0x3c, 0x3c, 0x20,
+0x33, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x3b, 0x0a, 0x2f, 0x2a, 0x20, 0x4c, 0x6f, 0x61, 0x64, 0x20,
+0x33, 0x33, 0x20, 0x38, 0x78, 0x38, 0x20, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x62, 0x6c, 0x6f, 0x63,
+0x6b, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c,
+0x73, 0x20, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x20, 0x69, 0x6e, 0x74,
+0x6f, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x20, 0x2a, 0x2f,
+0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x3b,
+0x20, 0x79, 0x20, 0x3c, 0x20, 0x39, 0x20, 0x26, 0x26, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72,
+0x5f, 0x69, 0x64, 0x20, 0x3c, 0x20, 0x28, 0x33, 0x33, 0x3c, 0x3c, 0x33, 0x29, 0x3e, 0x3e, 0x32,
+0x3b, 0x20, 0x79, 0x2b, 0x2b, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x20,
+0x3d, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x5f, 0x69, 0x64, 0x20, 0x3c, 0x3c, 0x20, 0x32,
+0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x3d, 0x20, 0x72,
+0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x65, 0x6e,
+0x63, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x28, 0x69, 0x6e, 0x74,
+0x32, 0x29, 0x28, 0x78, 0x20, 0x2b, 0x20, 0x62, 0x61, 0x73, 0x65, 0x78, 0x2c, 0x20, 0x79, 0x20,
+0x2b, 0x20, 0x62, 0x61, 0x73, 0x65, 0x79, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x63, 0x61, 0x63, 0x68,
+0x65, 0x5b, 0x79, 0x20, 0x2a, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49,
+0x44, 0x45, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2b, 0x20, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x64, 0x61,
+0x74, 0x61, 0x2e, 0x73, 0x30, 0x3b, 0x0a, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5b, 0x79, 0x20, 0x2a,
+0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x20, 0x2b, 0x20,
+0x31, 0x20, 0x2b, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x64, 0x61, 0x74,
+0x61, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5b, 0x79, 0x20, 0x2a, 0x20,
+0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x20, 0x2b, 0x20, 0x31,
+0x20, 0x2b, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x64, 0x61, 0x74, 0x61,
+0x2e, 0x73, 0x32, 0x3b, 0x0a, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5b, 0x79, 0x20, 0x2a, 0x20, 0x43,
+0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x20, 0x2b, 0x20, 0x31, 0x20,
+0x2b, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e,
+0x73, 0x33, 0x3b, 0x0a, 0x7d, 0x0a, 0x2f, 0x2a, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x70, 0x69,
+0x78, 0x65, 0x6c, 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x65, 0x64, 0x67,
+0x65, 0x20, 0x2a, 0x2f, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x5f,
+0x69, 0x64, 0x20, 0x3c, 0x20, 0x39, 0x20, 0x29, 0x0a, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5b, 0x6c,
+0x69, 0x6e, 0x65, 0x61, 0x72, 0x5f, 0x69, 0x64, 0x20, 0x2a, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45,
+0x5f, 0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x5d, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f,
+0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x73,
+0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x20,
+0x62, 0x61, 0x73, 0x65, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x2c, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x61,
+0x72, 0x5f, 0x69, 0x64, 0x20, 0x2b, 0x20, 0x62, 0x61, 0x73, 0x65, 0x79, 0x29, 0x20, 0x29, 0x2e,
+0x73, 0x30, 0x3b, 0x0a, 0x62, 0x61, 0x72, 0x72, 0x69, 0x65, 0x72, 0x28, 0x20, 0x43, 0x4c, 0x4b,
+0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x4d, 0x45, 0x4d, 0x5f, 0x46, 0x45, 0x4e, 0x43, 0x45,
+0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x6c, 0x79, 0x3b, 0x0a,
+0x74, 0x6f, 0x70, 0x5b, 0x6c, 0x78, 0x2a, 0x31, 0x36, 0x20, 0x2b, 0x20, 0x6a, 0x5d, 0x20, 0x3d,
+0x20, 0x28, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f,
+0x46, 0x46, 0x53, 0x45, 0x54, 0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x20, 0x2d, 0x20, 0x43,
+0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x20, 0x2b, 0x20, 0x63, 0x6c,
+0x61, 0x6d, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x28, 0x20, 0x6a, 0x20, 0x2d, 0x20, 0x31, 0x2c, 0x20,
+0x2d, 0x31, 0x2c, 0x20, 0x31, 0x35, 0x20, 0x29, 0x5d, 0x20, 0x2b, 0x0a, 0x32, 0x2a, 0x63, 0x61,
+0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54,
+0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x20, 0x2d, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f,
+0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x20, 0x2b, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x5f, 0x69,
+0x6e, 0x74, 0x28, 0x20, 0x6a, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x35, 0x20, 0x29, 0x5d, 0x20,
+0x2b, 0x0a, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f, 0x46,
+0x46, 0x53, 0x45, 0x54, 0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x20, 0x2d, 0x20, 0x43, 0x41,
+0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x20, 0x2b, 0x20, 0x63, 0x6c, 0x61,
+0x6d, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x28, 0x20, 0x6a, 0x20, 0x2b, 0x20, 0x31, 0x2c, 0x20, 0x30,
+0x2c, 0x20, 0x31, 0x35, 0x20, 0x29, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3e, 0x3e,
+0x20, 0x32, 0x3b, 0x0a, 0x6a, 0x20, 0x2b, 0x3d, 0x20, 0x38, 0x3b, 0x0a, 0x74, 0x6f, 0x70, 0x5b,
+0x6c, 0x78, 0x2a, 0x31, 0x36, 0x20, 0x2b, 0x20, 0x6a, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x20, 0x63,
+0x61, 0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45,
+0x54, 0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x20, 0x2d, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45,
+0x5f, 0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x20, 0x2b, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x5f,
+0x69, 0x6e, 0x74, 0x28, 0x20, 0x6a, 0x20, 0x2d, 0x20, 0x31, 0x2c, 0x20, 0x2d, 0x31, 0x2c, 0x20,
+0x31, 0x35, 0x20, 0x29, 0x5d, 0x20, 0x2b, 0x0a, 0x32, 0x2a, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5b,
+0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x20, 0x2b, 0x20, 0x38,
+0x2a, 0x6c, 0x78, 0x20, 0x2d, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49,
+0x44, 0x45, 0x20, 0x2b, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x28, 0x20,
+0x6a, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x35, 0x20, 0x29, 0x5d, 0x20, 0x2b, 0x0a, 0x63, 0x61,
+0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54,
+0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x20, 0x2d, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f,
+0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x20, 0x2b, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x5f, 0x69,
+0x6e, 0x74, 0x28, 0x20, 0x6a, 0x20, 0x2b, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x35,
+0x20, 0x29, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a,
+0x6c, 0x65, 0x66, 0x74, 0x5b, 0x6c, 0x78, 0x2a, 0x38, 0x20, 0x2b, 0x20, 0x6c, 0x79, 0x5d, 0x20,
+0x3d, 0x20, 0x28, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f,
+0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x20, 0x2d, 0x20,
+0x31, 0x20, 0x2b, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x44, 0x45,
+0x2a, 0x28, 0x6c, 0x79, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x5d, 0x20, 0x2b, 0x0a, 0x32, 0x2a, 0x63,
+0x61, 0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45,
+0x54, 0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x20, 0x2b, 0x20, 0x43,
+0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x2a, 0x6c, 0x79, 0x5d, 0x20,
+0x2b, 0x0a, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f, 0x46,
+0x46, 0x53, 0x45, 0x54, 0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x20,
+0x2b, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x2a, 0x63,
+0x6c, 0x61, 0x6d, 0x70, 0x28, 0x28, 0x6c, 0x79, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x2c, 0x20, 0x30,
+0x2c, 0x20, 0x37, 0x20, 0x29, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20,
+0x32, 0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x30, 0x20, 0x3d, 0x3d, 0x20, 0x6c, 0x79, 0x20, 0x29,
+0x0a, 0x7b, 0x0a, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x5b, 0x6c, 0x78, 0x5d, 0x20,
+0x3d, 0x20, 0x28, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f,
+0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x20, 0x2d, 0x20,
+0x31, 0x5d, 0x20, 0x2b, 0x20, 0x32, 0x2a, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f,
+0x43, 0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78,
+0x20, 0x2d, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52,
+0x49, 0x44, 0x45, 0x5d, 0x20, 0x2b, 0x0a, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f,
+0x43, 0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78,
+0x20, 0x2d, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x5d,
+0x20, 0x2b, 0x20, 0x32, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x63, 0x6f, 0x73,
+0x74, 0x5f, 0x62, 0x75, 0x66, 0x5b, 0x6c, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x43, 0x4f, 0x53, 0x54,
+0x5f, 0x4d, 0x41, 0x58, 0x3b, 0x0a, 0x7d, 0x0a, 0x62, 0x61, 0x72, 0x72, 0x69, 0x65, 0x72, 0x28,
+0x20, 0x43, 0x4c, 0x4b, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x4d, 0x45, 0x4d, 0x5f, 0x46,
+0x45, 0x4e, 0x43, 0x45, 0x20, 0x29, 0x3b, 0x0a, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x28, 0x20,
+0x6c, 0x79, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x63, 0x61, 0x73, 0x65, 0x20, 0x30, 0x3a, 0x0a, 0x73,
+0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69,
+0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x63, 0x5f, 0x68, 0x28, 0x20, 0x26, 0x63, 0x61, 0x63, 0x68,
+0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x20, 0x2b,
+0x20, 0x38, 0x2a, 0x6c, 0x78, 0x5d, 0x2c, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54,
+0x52, 0x49, 0x44, 0x45, 0x20, 0x29, 0x3b, 0x0a, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x63,
+0x61, 0x73, 0x65, 0x20, 0x31, 0x3a, 0x0a, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x78, 0x32,
+0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x63, 0x5f,
+0x76, 0x28, 0x20, 0x26, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f,
+0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x5d, 0x2c, 0x20,
+0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x20, 0x29, 0x3b, 0x0a,
+0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x63, 0x61, 0x73, 0x65, 0x20, 0x32, 0x3a, 0x0a, 0x73,
+0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69,
+0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x63, 0x5f, 0x64, 0x63, 0x28, 0x20, 0x26, 0x63, 0x61, 0x63,
+0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x20,
+0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x5d, 0x2c, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x53,
+0x54, 0x52, 0x49, 0x44, 0x45, 0x20, 0x29, 0x3b, 0x0a, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a,
+0x63, 0x61, 0x73, 0x65, 0x20, 0x33, 0x3a, 0x0a, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x78,
+0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x63,
+0x5f, 0x70, 0x28, 0x20, 0x26, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b,
+0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x5d, 0x2c,
+0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x20, 0x29, 0x3b,
+0x0a, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x63, 0x61, 0x73, 0x65, 0x20, 0x34, 0x3a, 0x0a,
+0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64,
+0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x64, 0x64, 0x72, 0x28, 0x20, 0x26, 0x63, 0x61,
+0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54,
+0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x5d, 0x2c, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f,
+0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x2c, 0x20, 0x26, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x36, 0x2a,
+0x6c, 0x78, 0x5d, 0x2c, 0x20, 0x26, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x38, 0x2a, 0x6c, 0x78, 0x5d,
+0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x5b, 0x6c, 0x78, 0x5d, 0x20, 0x29,
+0x3b, 0x0a, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x63, 0x61, 0x73, 0x65, 0x20, 0x35, 0x3a,
+0x0a, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65,
+0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x76, 0x72, 0x28, 0x20, 0x26, 0x63, 0x61,
+0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54,
+0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x5d, 0x2c, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f,
+0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x2c, 0x20, 0x26, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x36, 0x2a,
+0x6c, 0x78, 0x5d, 0x2c, 0x20, 0x26, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x38, 0x2a, 0x6c, 0x78, 0x5d,
+0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x5b, 0x6c, 0x78, 0x5d, 0x20, 0x29,
+0x3b, 0x0a, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x63, 0x61, 0x73, 0x65, 0x20, 0x36, 0x3a,
+0x0a, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65,
+0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x68, 0x64, 0x28, 0x20, 0x26, 0x63, 0x61,
+0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54,
+0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x5d, 0x2c, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f,
+0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x2c, 0x20, 0x26, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x36, 0x2a,
+0x6c, 0x78, 0x5d, 0x2c, 0x20, 0x26, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x38, 0x2a, 0x6c, 0x78, 0x5d,
+0x2c, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x5b, 0x6c, 0x78, 0x5d, 0x20, 0x29,
+0x3b, 0x0a, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x63, 0x61, 0x73, 0x65, 0x20, 0x37, 0x3a,
+0x0a, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65,
+0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x68, 0x75, 0x28, 0x20, 0x26, 0x63, 0x61,
+0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54,
+0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x5d, 0x2c, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f,
+0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x2c, 0x20, 0x26, 0x6c, 0x65, 0x66, 0x74, 0x5b, 0x38, 0x2a,
+0x6c, 0x78, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x64, 0x65,
+0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x0a, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x7d, 0x0a,
+0x61, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x20, 0x26, 0x63, 0x6f, 0x73, 0x74, 0x5f,
+0x62, 0x75, 0x66, 0x5b, 0x6c, 0x78, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x74, 0x64, 0x20, 0x29, 0x3b,
+0x0a, 0x69, 0x66, 0x28, 0x20, 0x73, 0x6c, 0x6f, 0x77, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x73, 0x77,
+0x69, 0x74, 0x63, 0x68, 0x28, 0x20, 0x6c, 0x79, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x63, 0x61, 0x73,
+0x65, 0x20, 0x30, 0x3a, 0x20, 0x2f, 0x2f, 0x20, 0x44, 0x44, 0x4c, 0x0a, 0x73, 0x61, 0x74, 0x64,
+0x20, 0x3d, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f,
+0x38, 0x78, 0x38, 0x5f, 0x64, 0x64, 0x6c, 0x28, 0x20, 0x26, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5b,
+0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x20, 0x2b, 0x20, 0x38,
+0x2a, 0x6c, 0x78, 0x5d, 0x2c, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49,
+0x44, 0x45, 0x2c, 0x20, 0x26, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x36, 0x2a, 0x6c, 0x78, 0x5d, 0x20,
+0x29, 0x3b, 0x0a, 0x61, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x20, 0x26, 0x63, 0x6f,
+0x73, 0x74, 0x5f, 0x62, 0x75, 0x66, 0x5b, 0x6c, 0x78, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x74, 0x64,
+0x20, 0x29, 0x3b, 0x0a, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x63, 0x61, 0x73, 0x65, 0x20,
+0x31, 0x3a, 0x20, 0x2f, 0x2f, 0x20, 0x56, 0x4c, 0x0a, 0x73, 0x61, 0x74, 0x64, 0x20, 0x3d, 0x20,
+0x78, 0x32, 0x36, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x38, 0x78, 0x38,
+0x5f, 0x76, 0x6c, 0x28, 0x20, 0x26, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5b, 0x42, 0x4c, 0x4f, 0x43,
+0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x20, 0x2b, 0x20, 0x38, 0x2a, 0x6c, 0x78, 0x5d,
+0x2c, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x2c, 0x20,
+0x26, 0x74, 0x6f, 0x70, 0x5b, 0x31, 0x36, 0x2a, 0x6c, 0x78, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x61,
+0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x20, 0x26, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x62,
+0x75, 0x66, 0x5b, 0x6c, 0x78, 0x5d, 0x2c, 0x20, 0x73, 0x61, 0x74, 0x64, 0x20, 0x29, 0x3b, 0x0a,
+0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x0a,
+0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x7d, 0x0a, 0x7d, 0x0a, 0x62, 0x61, 0x72, 0x72, 0x69,
+0x65, 0x72, 0x28, 0x20, 0x43, 0x4c, 0x4b, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x4d, 0x45,
+0x4d, 0x5f, 0x46, 0x45, 0x4e, 0x43, 0x45, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x28,
+0x30, 0x20, 0x3d, 0x3d, 0x20, 0x6c, 0x79, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x67, 0x78, 0x20,
+0x3c, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x29, 0x20, 0x29, 0x0a, 0x66, 0x65,
+0x6e, 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5b, 0x67, 0x69,
+0x64, 0x79, 0x20, 0x2a, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x2b, 0x20,
+0x67, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x66, 0x5b, 0x6c,
+0x78, 0x5d, 0x2b, 0x20, 0x35, 0x2a, 0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x3b, 0x0a, 0x69, 0x66,
+0x28, 0x20, 0x67, 0x78, 0x20, 0x3c, 0x20, 0x32, 0x20, 0x26, 0x26, 0x20, 0x67, 0x79, 0x20, 0x3d,
+0x3d, 0x20, 0x30, 0x20, 0x29, 0x0a, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74,
+0x73, 0x5b, 0x67, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x23, 0x75, 0x6e, 0x64, 0x65,
+0x66, 0x20, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x44, 0x45, 0x0a, 0x23,
+0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4f, 0x46, 0x46, 0x53,
+0x45, 0x54, 0x0a, 0x7d, 0x0a, 0x2f, 0x2a, 0x0a, 0x2a, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c,
+0x65, 0x6c, 0x20, 0x73, 0x75, 0x6d, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x20, 0x63, 0x6f, 0x73,
+0x74, 0x73, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x6c, 0x61,
+0x75, 0x6e, 0x63, 0x68, 0x20, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3a,
+0x20, 0x5b, 0x32, 0x35, 0x36, 0x2c, 0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
+0x5d, 0x0a, 0x2a, 0x2f, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64,
+0x20, 0x73, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x28,
+0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x75, 0x69,
+0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x2a, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x69, 0x6e, 0x74,
+0x72, 0x61, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x2c, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67,
+0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x2a,
+0x69, 0x6e, 0x76, 0x5f, 0x71, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f,
+0x72, 0x2c, 0x0a, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x72, 0x6f,
+0x77, 0x5f, 0x73, 0x61, 0x74, 0x64, 0x73, 0x2c, 0x0a, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20,
+0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x66,
+0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69,
+0x6e, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61,
+0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d,
+0x62, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67,
+0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x31, 0x20, 0x29, 0x3b,
+0x0a, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x6f, 0x77, 0x5f, 0x73, 0x61, 0x74, 0x64, 0x73, 0x20, 0x3d,
+0x20, 0x30, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x73, 0x74,
+0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65,
+0x73, 0x74, 0x5f, 0x61, 0x71, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20,
+0x69, 0x6e, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62,
+0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x20, 0x78, 0x20, 0x3c, 0x20,
+0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x20, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x67,
+0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x20,
+0x30, 0x20, 0x29, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x79,
+0x20, 0x3d, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69,
+0x64, 0x74, 0x68, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d, 0x20,
+0x66, 0x65, 0x6e, 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x61, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5b,
+0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x73, 0x74,
+0x5f, 0x61, 0x71, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x2a, 0x20, 0x69, 0x6e,
+0x76, 0x5f, 0x71, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5b,
+0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x20, 0x2b, 0x20, 0x31, 0x32, 0x38, 0x29, 0x20, 0x3e, 0x3e,
+0x20, 0x38, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f,
+0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6d, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x78, 0x20, 0x3e, 0x20,
+0x30, 0x20, 0x26, 0x26, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74,
+0x68, 0x20, 0x2d, 0x20, 0x31, 0x20, 0x26, 0x26, 0x20, 0x79, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x26,
+0x26, 0x20, 0x79, 0x20, 0x3c, 0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20,
+0x2d, 0x20, 0x31, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68,
+0x20, 0x3c, 0x3d, 0x20, 0x32, 0x20, 0x7c, 0x7c, 0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67,
+0x68, 0x74, 0x20, 0x3c, 0x3d, 0x20, 0x32, 0x3b, 0x0a, 0x72, 0x6f, 0x77, 0x5f, 0x73, 0x61, 0x74,
+0x64, 0x73, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x61, 0x71, 0x3b, 0x0a, 0x69,
+0x66, 0x28, 0x20, 0x62, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65,
+0x5f, 0x6d, 0x62, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x73, 0x74,
+0x20, 0x2b, 0x3d, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x3b, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65,
+0x73, 0x74, 0x5f, 0x61, 0x71, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x61, 0x71,
+0x3b, 0x0a, 0x7d, 0x0a, 0x7d, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74, 0x20,
+0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5b, 0x32, 0x35, 0x36, 0x5d, 0x3b, 0x0a, 0x69, 0x6e, 0x74,
+0x20, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f,
+0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x6f, 0x77, 0x5f, 0x73, 0x61, 0x74,
+0x64, 0x73, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f,
+0x73, 0x75, 0x6d, 0x28, 0x20, 0x72, 0x6f, 0x77, 0x5f, 0x73, 0x61, 0x74, 0x64, 0x73, 0x2c, 0x20,
+0x78, 0x2c, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x29, 0x3b, 0x0a, 0x63, 0x6f, 0x73,
+0x74, 0x5f, 0x65, 0x73, 0x74, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c,
+0x6c, 0x65, 0x6c, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x73,
+0x74, 0x2c, 0x20, 0x78, 0x2c, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x29, 0x3b, 0x0a,
+0x63, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x71, 0x20, 0x3d, 0x20, 0x70, 0x61,
+0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x20, 0x63, 0x6f, 0x73, 0x74,
+0x5f, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x71, 0x2c, 0x20, 0x78, 0x2c, 0x20, 0x62, 0x75, 0x66, 0x66,
+0x65, 0x72, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c,
+0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3d, 0x3d, 0x20,
+0x30, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x72, 0x6f, 0x77, 0x5f, 0x73,
+0x61, 0x74, 0x64, 0x73, 0x5b, 0x79, 0x5d, 0x20, 0x3d, 0x20, 0x72, 0x6f, 0x77, 0x5f, 0x73, 0x61,
+0x74, 0x64, 0x73, 0x3b, 0x0a, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28,
+0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2b, 0x20, 0x43,
+0x4f, 0x53, 0x54, 0x5f, 0x45, 0x53, 0x54, 0x2c, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x73, 0x74,
+0x5f, 0x65, 0x73, 0x74, 0x20, 0x29, 0x3b, 0x0a, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61,
+0x64, 0x64, 0x28, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20,
+0x2b, 0x20, 0x43, 0x4f, 0x53, 0x54, 0x5f, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x51, 0x2c, 0x20, 0x63,
+0x6f, 0x73, 0x74, 0x5f, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x71, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a,
+0x7d, 0x0a, 0x2f, 0x2a, 0x20, 0x48, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x69, 0x63, 0x61,
+0x6c, 0x20, 0x28, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x29, 0x20, 0x4f, 0x70,
+0x65, 0x6e, 0x43, 0x4c, 0x20, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x20, 0x6d, 0x6f, 0x74, 0x69,
+0x6f, 0x6e, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x2a, 0x2f, 0x0a, 0x69, 0x6e, 0x6c,
+0x69, 0x6e, 0x65, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x66, 0x69, 0x6e, 0x64, 0x5f, 0x64, 0x6f, 0x77,
+0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x28, 0x20, 0x69, 0x6e,
+0x74, 0x20, 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x79, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20,
+0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62,
+0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x2f, 0x2a, 0x20, 0x65,
+0x64, 0x67, 0x65, 0x20, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x20,
+0x6d, 0x69, 0x67, 0x68, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61,
+0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x20, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61,
+0x6e, 0x74, 0x2c, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6e, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x20,
+0x2a, 0x2f, 0x0a, 0x78, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x20, 0x78,
+0x20, 0x3e, 0x3e, 0x20, 0x31, 0x2c, 0x20, 0x28, 0x78, 0x20, 0x2d, 0x20, 0x28, 0x6d, 0x62, 0x5f,
+0x77, 0x69, 0x64, 0x74, 0x68, 0x26, 0x31, 0x29, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x2c, 0x20,
+0x78, 0x20, 0x3d, 0x3d, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2d, 0x31, 0x20,
+0x29, 0x3b, 0x0a, 0x79, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x20, 0x79,
+0x20, 0x3e, 0x3e, 0x20, 0x31, 0x2c, 0x20, 0x28, 0x79, 0x20, 0x2d, 0x20, 0x28, 0x6d, 0x62, 0x5f,
+0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x26, 0x31, 0x29, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x2c,
+0x20, 0x79, 0x20, 0x3d, 0x3d, 0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x2d,
+0x31, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x6d, 0x62, 0x5f,
+0x77, 0x69, 0x64, 0x74, 0x68, 0x3e, 0x3e, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x79, 0x20, 0x2b, 0x20,
+0x78, 0x3b, 0x0a, 0x7d, 0x0a, 0x2f, 0x2a, 0x20, 0x46, 0x6f, 0x75, 0x72, 0x20, 0x74, 0x68, 0x72,
+0x65, 0x61, 0x64, 0x73, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x61,
+0x6e, 0x20, 0x38, 0x78, 0x38, 0x20, 0x53, 0x41, 0x44, 0x2e, 0x20, 0x20, 0x45, 0x61, 0x63, 0x68,
+0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x74, 0x77, 0x6f, 0x20, 0x72, 0x6f, 0x77, 0x73, 0x20, 0x2a,
+0x2f, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x64, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x69, 0x69,
+0x5f, 0x63, 0x6f, 0x6f, 0x70, 0x34, 0x28, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c,
+0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x66, 0x65, 0x6e, 0x63,
+0x2c, 0x20, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73, 0x2c, 0x20,
+0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32,
+0x64, 0x5f, 0x74, 0x20, 0x66, 0x72, 0x65, 0x66, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x66,
+0x72, 0x65, 0x66, 0x70, 0x6f, 0x73, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x64, 0x78, 0x2c,
+0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x2a,
+0x63, 0x6f, 0x73, 0x74, 0x73, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f,
+0x73, 0x2e, 0x79, 0x20, 0x2b, 0x3d, 0x20, 0x69, 0x64, 0x78, 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x3b,
+0x0a, 0x66, 0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73, 0x2e, 0x79, 0x20, 0x2b, 0x3d, 0x20, 0x69, 0x64,
+0x78, 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x73, 0x74,
+0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f,
+0x73, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x2f, 0x2a, 0x20, 0x73,
+0x6c, 0x6f, 0x77, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x4d, 0x56,
+0x20, 0x67, 0x6f, 0x65, 0x73, 0x20, 0x70, 0x61, 0x73, 0x74, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20,
+0x65, 0x64, 0x67, 0x65, 0x2e, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x47, 0x50, 0x55, 0x20, 0x63,
+0x6c, 0x61, 0x6d, 0x70, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d,
+0x0a, 0x2a, 0x20, 0x28, 0x2d, 0x31, 0x2c, 0x20, 0x30, 0x29, 0x20, 0x74, 0x6f, 0x20, 0x28, 0x30,
+0x2c, 0x30, 0x29, 0x2c, 0x20, 0x73, 0x6f, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x67, 0x65, 0x74, 0x20,
+0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x20, 0x5b, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x2c,
+0x20, 0x33, 0x5d, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x77, 0x68, 0x61, 0x74, 0x20, 0x79, 0x6f,
+0x75, 0x20, 0x72, 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x0a, 0x2a, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20,
+0x61, 0x72, 0x65, 0x20, 0x5b, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x5d,
+0x0a, 0x2a, 0x2f, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x79, 0x20, 0x3d,
+0x20, 0x30, 0x3b, 0x20, 0x79, 0x20, 0x3c, 0x20, 0x32, 0x3b, 0x20, 0x79, 0x2b, 0x2b, 0x20, 0x29,
+0x0a, 0x7b, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20,
+0x30, 0x3b, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x38, 0x3b, 0x20, 0x78, 0x2b, 0x2b, 0x20, 0x29, 0x0a,
+0x7b, 0x0a, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x65, 0x6e, 0x63, 0x20, 0x3d, 0x20, 0x72, 0x65,
+0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63,
+0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x70,
+0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x78, 0x2c, 0x20, 0x79,
+0x29, 0x20, 0x29, 0x2e, 0x73, 0x30, 0x3b, 0x0a, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x72, 0x65,
+0x66, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69,
+0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c,
+0x20, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32,
+0x29, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x20, 0x29, 0x2e, 0x73, 0x30, 0x3b, 0x0a, 0x63, 0x6f,
+0x73, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x28, 0x20,
+0x65, 0x6e, 0x63, 0x2c, 0x20, 0x72, 0x65, 0x66, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x7d, 0x0a,
+0x7d, 0x0a, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x7b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x20, 0x65,
+0x6e, 0x63, 0x2c, 0x20, 0x72, 0x65, 0x66, 0x2c, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x20, 0x3d,
+0x20, 0x30, 0x3b, 0x0a, 0x65, 0x6e, 0x63, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69,
+0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x73, 0x61,
+0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73, 0x20, 0x29,
+0x3b, 0x0a, 0x72, 0x65, 0x66, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61,
+0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70,
+0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f, 0x73, 0x20, 0x29, 0x3b, 0x0a,
+0x63, 0x6f, 0x73, 0x74, 0x73, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x5f, 0x64, 0x69, 0x66,
+0x66, 0x28, 0x20, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x72, 0x65, 0x66, 0x20, 0x29, 0x3b, 0x0a, 0x65,
+0x6e, 0x63, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75,
+0x69, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72,
+0x2c, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74,
+0x32, 0x29, 0x28, 0x34, 0x2c, 0x20, 0x30, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x66, 0x20,
+0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20,
+0x66, 0x72, 0x65, 0x66, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66,
+0x72, 0x65, 0x66, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28,
+0x34, 0x2c, 0x20, 0x30, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x20, 0x2b,
+0x3d, 0x20, 0x61, 0x62, 0x73, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x28, 0x20, 0x65, 0x6e, 0x63, 0x2c,
+0x20, 0x72, 0x65, 0x66, 0x20, 0x29, 0x3b, 0x0a, 0x65, 0x6e, 0x63, 0x20, 0x3d, 0x20, 0x72, 0x65,
+0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63,
+0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x70,
+0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x30, 0x2c, 0x20, 0x31,
+0x29, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x65, 0x66, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f,
+0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x2c, 0x20, 0x73,
+0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f, 0x73, 0x20,
+0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x30, 0x2c, 0x20, 0x31, 0x29, 0x20, 0x29,
+0x3b, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x5f, 0x64,
+0x69, 0x66, 0x66, 0x28, 0x20, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x72, 0x65, 0x66, 0x20, 0x29, 0x3b,
+0x0a, 0x65, 0x6e, 0x63, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67,
+0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c,
+0x65, 0x72, 0x2c, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69,
+0x6e, 0x74, 0x32, 0x29, 0x28, 0x34, 0x2c, 0x20, 0x31, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x72, 0x65,
+0x66, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69,
+0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c,
+0x20, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32,
+0x29, 0x28, 0x34, 0x2c, 0x20, 0x31, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x73,
+0x20, 0x2b, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x28, 0x20, 0x65, 0x6e,
+0x63, 0x2c, 0x20, 0x72, 0x65, 0x66, 0x20, 0x29, 0x3b, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d,
+0x20, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x63, 0x6f, 0x73, 0x74,
+0x73, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x73, 0x32, 0x20,
+0x2b, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x73, 0x33, 0x3b, 0x0a, 0x7d, 0x0a, 0x63, 0x6f,
+0x73, 0x74, 0x73, 0x5b, 0x69, 0x64, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x3b,
+0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x5b, 0x30, 0x5d,
+0x20, 0x2b, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x63, 0x6f,
+0x73, 0x74, 0x73, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x5b, 0x33,
+0x5d, 0x3b, 0x0a, 0x7d, 0x0a, 0x2f, 0x2a, 0x20, 0x4f, 0x6e, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65,
+0x61, 0x64, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x38, 0x78, 0x38, 0x20,
+0x53, 0x41, 0x44, 0x20, 0x2a, 0x2f, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x64, 0x5f, 0x38,
+0x78, 0x38, 0x5f, 0x69, 0x69, 0x28, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79,
+0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x2c,
+0x20, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73, 0x2c, 0x20, 0x72,
+0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64,
+0x5f, 0x74, 0x20, 0x66, 0x72, 0x65, 0x66, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x66, 0x72,
+0x65, 0x66, 0x70, 0x6f, 0x73, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x66, 0x72,
+0x65, 0x66, 0x70, 0x6f, 0x73, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x20, 0x29, 0x0a, 0x7b, 0x0a,
+0x2f, 0x2a, 0x20, 0x73, 0x6c, 0x6f, 0x77, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x77, 0x68, 0x65,
+0x6e, 0x20, 0x4d, 0x56, 0x20, 0x67, 0x6f, 0x65, 0x73, 0x20, 0x70, 0x61, 0x73, 0x74, 0x20, 0x6c,
+0x65, 0x66, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x20, 0x2a, 0x2f, 0x0a, 0x69, 0x6e, 0x74, 0x20,
+0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69,
+0x6e, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x79, 0x20, 0x3c, 0x20, 0x38, 0x3b,
+0x20, 0x79, 0x2b, 0x2b, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e,
+0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x38, 0x3b, 0x20,
+0x78, 0x2b, 0x2b, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x65, 0x6e, 0x63,
+0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28,
+0x20, 0x66, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20,
+0x66, 0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29,
+0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x20, 0x29, 0x2e, 0x73, 0x30, 0x3b, 0x0a, 0x75, 0x69, 0x6e,
+0x74, 0x20, 0x72, 0x65, 0x66, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61,
+0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70,
+0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28,
+0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x20, 0x29, 0x2e, 0x73, 0x30,
+0x3b, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x5f, 0x64, 0x69,
+0x66, 0x66, 0x28, 0x20, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x72, 0x65, 0x66, 0x20, 0x29, 0x3b, 0x0a,
+0x7d, 0x0a, 0x7d, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x3b,
+0x0a, 0x7d, 0x0a, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x7b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x20,
+0x65, 0x6e, 0x63, 0x2c, 0x20, 0x72, 0x65, 0x66, 0x2c, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d,
+0x20, 0x30, 0x3b, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x79, 0x20, 0x3d,
+0x20, 0x30, 0x3b, 0x20, 0x79, 0x20, 0x3c, 0x20, 0x38, 0x3b, 0x20, 0x79, 0x2b, 0x2b, 0x20, 0x29,
+0x0a, 0x7b, 0x0a, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20,
+0x30, 0x3b, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x38, 0x3b, 0x20, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x34,
+0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x65, 0x6e, 0x63, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f,
+0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x73,
+0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73, 0x20,
+0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x20, 0x29,
+0x3b, 0x0a, 0x72, 0x65, 0x66, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61,
+0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70,
+0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28,
+0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x63,
+0x6f, 0x73, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x28,
+0x20, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x72, 0x65, 0x66, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x7d,
+0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x2e, 0x73, 0x30, 0x20,
+0x2b, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x63, 0x6f, 0x73, 0x74,
+0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x2e, 0x73, 0x33, 0x3b, 0x0a, 0x7d,
+0x0a, 0x7d, 0x0a, 0x2f, 0x2a, 0x0a, 0x2a, 0x20, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68,
+0x69, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x73, 0x74, 0x69,
+0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20,
+0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x69, 0x73,
+0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74,
+0x69, 0x6f, 0x6e, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x4d, 0x42, 0x20, 0x70, 0x65, 0x72, 0x20, 0x77,
+0x6f, 0x72, 0x6b, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x69, 0x73, 0x20, 0x64, 0x65, 0x74,
+0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x6c, 0x63, 0x6c, 0x78, 0x20,
+0x2f, 0x20, 0x34, 0x20, 0x2a, 0x20, 0x6c, 0x63, 0x6c, 0x79, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x67,
+0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x64, 0x69, 0x6d,
+0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x20, 0x20, 0x5b, 0x6d, 0x62, 0x5f, 0x77, 0x69,
+0x64, 0x74, 0x68, 0x20, 0x2a, 0x20, 0x34, 0x2c, 0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67,
+0x68, 0x74, 0x5d, 0x0a, 0x2a, 0x2f, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f,
+0x69, 0x64, 0x20, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x69, 0x63, 0x61, 0x6c, 0x5f,
+0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c,
+0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x20, 0x66, 0x65, 0x6e,
+0x63, 0x2c, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61,
+0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x20, 0x66, 0x72, 0x65, 0x66, 0x2c, 0x0a, 0x63, 0x6f,
+0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74,
+0x32, 0x20, 0x2a, 0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x73, 0x2c, 0x0a, 0x67, 0x6c, 0x6f, 0x62, 0x61,
+0x6c, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x32, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2a,
+0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x76, 0x73, 0x2c, 0x0a, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20,
+0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x6f, 0x75,
+0x74, 0x5f, 0x6d, 0x76, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x2c, 0x0a, 0x67, 0x6c, 0x6f, 0x62,
+0x61, 0x6c, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x32, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x2a, 0x6d, 0x76, 0x70, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2c, 0x0a, 0x6c, 0x6f, 0x63,
+0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x2a, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2c, 0x0a, 0x6c, 0x6f,
+0x63, 0x61, 0x6c, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x32, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x2a, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2c, 0x0a, 0x69, 0x6e,
+0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x0a, 0x69, 0x6e, 0x74,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6d,
+0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x63,
+0x61, 0x6c, 0x65, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x5f, 0x73, 0x68, 0x69, 0x66,
+0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x5f,
+0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c,
+0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x5f,
+0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69,
+0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c,
+0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20,
+0x32, 0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x6d,
+0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x29, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
+0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20,
+0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a,
+0x65, 0x28, 0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f, 0x69,
+0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64,
+0x28, 0x20, 0x30, 0x20, 0x29, 0x20, 0x26, 0x20, 0x33, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d,
+0x62, 0x5f, 0x79, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
+0x5f, 0x69, 0x64, 0x28, 0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62,
+0x5f, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x6d, 0x62, 0x5f, 0x79, 0x20, 0x2a, 0x20, 0x6d, 0x62, 0x5f,
+0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x2b, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x3b, 0x0a, 0x63, 0x6f,
+0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x20,
+0x3d, 0x20, 0x38, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x20,
+0x3d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x6d, 0x62, 0x5f, 0x78, 0x2c, 0x20, 0x6d,
+0x62, 0x5f, 0x79, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x62, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x3b, 0x0a,
+0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f, 0x69, 0x6e, 0x5f,
+0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61,
+0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x31, 0x20, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x67, 0x65, 0x74,
+0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x30, 0x20, 0x29,
+0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x67, 0x65, 0x74, 0x5f, 0x6c, 0x6f,
+0x63, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32,
+0x29, 0x3b, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x2b, 0x3d,
+0x20, 0x34, 0x20, 0x2a, 0x20, 0x6d, 0x62, 0x5f, 0x69, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70,
+0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x5f, 0x6d, 0x76, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b,
+0x0a, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x2b, 0x3d, 0x20, 0x34, 0x20,
+0x2a, 0x20, 0x6d, 0x62, 0x5f, 0x69, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3b, 0x0a, 0x6d,
+0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x6d, 0x62, 0x5f, 0x69, 0x5d, 0x20, 0x3d,
+0x20, 0x30, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x6d, 0x76, 0x70, 0x20, 0x3d, 0x30, 0x3b,
+0x0a, 0x69, 0x66, 0x28, 0x20, 0x21, 0x62, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x69, 0x74,
+0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x23, 0x64, 0x65, 0x66,
+0x69, 0x6e, 0x65, 0x20, 0x4d, 0x56, 0x43, 0x28, 0x20, 0x44, 0x58, 0x2c, 0x20, 0x44, 0x59, 0x20,
+0x29, 0x5c, 0x0a, 0x7b, 0x5c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x78, 0x20, 0x3d, 0x20, 0x6d,
+0x62, 0x5f, 0x78, 0x20, 0x2b, 0x20, 0x44, 0x58, 0x3b, 0x5c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x70,
+0x79, 0x20, 0x3d, 0x20, 0x6d, 0x62, 0x5f, 0x79, 0x20, 0x2b, 0x20, 0x44, 0x59, 0x3b, 0x5c, 0x0a,
+0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x69, 0x5f, 0x6d, 0x76, 0x63, 0x5d,
+0x20, 0x3d, 0x20, 0x62, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78,
+0x20, 0x3f, 0x20, 0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x73, 0x5b, 0x66, 0x69, 0x6e, 0x64, 0x5f, 0x64,
+0x6f, 0x77, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x28, 0x20,
+0x70, 0x78, 0x2c, 0x20, 0x70, 0x79, 0x2c, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68,
+0x2c, 0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x29, 0x5d, 0x20, 0x3a,
+0x20, 0x5c, 0x0a, 0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x73, 0x5b, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64,
+0x74, 0x68, 0x20, 0x2a, 0x20, 0x70, 0x79, 0x20, 0x2b, 0x20, 0x70, 0x78, 0x5d, 0x3b, 0x5c, 0x0a,
+0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x69, 0x5f, 0x6d, 0x76, 0x63, 0x5d,
+0x20, 0x3e, 0x3e, 0x3d, 0x20, 0x28, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x29, 0x20, 0x73, 0x63, 0x61,
+0x6c, 0x65, 0x3b, 0x5c, 0x0a, 0x69, 0x5f, 0x6d, 0x76, 0x63, 0x2b, 0x2b, 0x3b, 0x5c, 0x0a, 0x7d,
+0x0a, 0x2f, 0x2a, 0x20, 0x46, 0x69, 0x6e, 0x64, 0x20, 0x4d, 0x56, 0x50, 0x20, 0x66, 0x72, 0x6f,
+0x6d, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x4d, 0x56, 0x43, 0x73,
+0x20, 0x2a, 0x2f, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x62, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73,
+0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x20, 0x29, 0x0a, 0x7b,
+0x0a, 0x2f, 0x2a, 0x20, 0x6f, 0x64, 0x64, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
+0x6e, 0x73, 0x3a, 0x20, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x20, 0x4d, 0x56, 0x50, 0x20, 0x66,
+0x72, 0x6f, 0x6d, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x69, 0x67,
+0x68, 0x74, 0x20, 0x2a, 0x2f, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x20, 0x3c,
+0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x2d, 0x20, 0x31, 0x20, 0x29, 0x0a,
+0x4d, 0x56, 0x43, 0x28, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x66, 0x28,
+0x20, 0x6d, 0x62, 0x5f, 0x79, 0x20, 0x3c, 0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68,
+0x74, 0x20, 0x2d, 0x20, 0x31, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x4d, 0x56, 0x43, 0x28, 0x20, 0x30,
+0x2c, 0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x20,
+0x3e, 0x20, 0x62, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20,
+0x29, 0x0a, 0x4d, 0x56, 0x43, 0x28, 0x20, 0x2d, 0x31, 0x2c, 0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a,
+0x69, 0x66, 0x28, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x20, 0x3c, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69,
+0x64, 0x74, 0x68, 0x20, 0x2d, 0x20, 0x31, 0x20, 0x29, 0x0a, 0x4d, 0x56, 0x43, 0x28, 0x20, 0x31,
+0x2c, 0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x7d, 0x0a, 0x65, 0x6c, 0x73, 0x65, 0x0a,
+0x7b, 0x0a, 0x2f, 0x2a, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74,
+0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x20, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x20, 0x4d, 0x56, 0x50,
+0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x75, 0x70, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x65, 0x66,
+0x74, 0x20, 0x2a, 0x2f, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x20, 0x3e, 0x20,
+0x30, 0x20, 0x29, 0x0a, 0x4d, 0x56, 0x43, 0x28, 0x20, 0x2d, 0x31, 0x2c, 0x20, 0x30, 0x20, 0x29,
+0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x6d, 0x62, 0x5f, 0x79, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x29,
+0x0a, 0x7b, 0x0a, 0x4d, 0x56, 0x43, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x2d, 0x31, 0x20, 0x29, 0x3b,
+0x0a, 0x69, 0x66, 0x28, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x20, 0x3c, 0x20, 0x6d, 0x62, 0x5f, 0x77,
+0x69, 0x64, 0x74, 0x68, 0x20, 0x2d, 0x20, 0x31, 0x20, 0x29, 0x0a, 0x4d, 0x56, 0x43, 0x28, 0x20,
+0x31, 0x2c, 0x20, 0x2d, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x6d, 0x62, 0x5f,
+0x78, 0x20, 0x3e, 0x20, 0x62, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65,
+0x78, 0x20, 0x29, 0x0a, 0x4d, 0x56, 0x43, 0x28, 0x20, 0x2d, 0x31, 0x2c, 0x20, 0x2d, 0x31, 0x20,
+0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x7d, 0x0a, 0x23, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x4d, 0x56,
+0x43, 0x0a, 0x6d, 0x76, 0x70, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x5f, 0x6d, 0x76, 0x63, 0x20, 0x3c,
+0x3d, 0x20, 0x31, 0x29, 0x20, 0x3f, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x69,
+0x6e, 0x74, 0x32, 0x5f, 0x73, 0x61, 0x74, 0x28, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61,
+0x6c, 0x5b, 0x30, 0x5d, 0x29, 0x20, 0x3a, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x6d, 0x65, 0x64,
+0x69, 0x61, 0x6e, 0x5f, 0x6d, 0x76, 0x28, 0x20, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61,
+0x6c, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b,
+0x31, 0x5d, 0x2c, 0x20, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x32, 0x5d,
+0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x2f, 0x2a, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
+0x20, 0x6d, 0x76, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65,
+0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x6d, 0x76, 0x70, 0x20, 0x61, 0x6e,
+0x64, 0x20, 0x77, 0x65, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x68,
+0x61, 0x6e, 0x67, 0x65, 0x64, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2e, 0x20, 0x20, 0x57, 0x65,
+0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x0a, 0x2a, 0x20, 0x77, 0x65, 0x27, 0x72, 0x65, 0x20, 0x67, 0x6f,
+0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x72, 0x72, 0x69, 0x76, 0x65, 0x20, 0x61, 0x74,
+0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x4d, 0x56, 0x20, 0x61, 0x67, 0x61,
+0x69, 0x6e, 0x2c, 0x20, 0x73, 0x6f, 0x20, 0x6a, 0x75, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x70, 0x79,
+0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x0a, 0x2a, 0x20,
+0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x6f, 0x75, 0x72, 0x20, 0x6f, 0x75,
+0x74, 0x70, 0x75, 0x74, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x21, 0x62, 0x5f,
+0x73, 0x68, 0x69, 0x66, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x26, 0x26, 0x20, 0x6d,
+0x76, 0x70, 0x2e, 0x78, 0x20, 0x3d, 0x3d, 0x20, 0x6d, 0x76, 0x70, 0x5f, 0x62, 0x75, 0x66, 0x66,
+0x65, 0x72, 0x5b, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x2e, 0x78, 0x20, 0x26, 0x26, 0x20, 0x6d,
+0x76, 0x70, 0x2e, 0x79, 0x20, 0x3d, 0x3d, 0x20, 0x6d, 0x76, 0x70, 0x5f, 0x62, 0x75, 0x66, 0x66,
+0x65, 0x72, 0x5b, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x2e, 0x79, 0x20, 0x29, 0x0a, 0x7b, 0x0a,
+0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x76, 0x73, 0x5b, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x20, 0x3d,
+0x20, 0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x73, 0x5b, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x3b, 0x0a,
+0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x7d, 0x0a, 0x6d, 0x76, 0x70, 0x5f, 0x62, 0x75,
+0x66, 0x66, 0x65, 0x72, 0x5b, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x20, 0x3d, 0x20, 0x63, 0x6f,
+0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x32, 0x5f, 0x73, 0x61, 0x74,
+0x28, 0x6d, 0x76, 0x70, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x6d, 0x76, 0x5f, 0x6d,
+0x69, 0x6e, 0x20, 0x3d, 0x20, 0x2d, 0x6d, 0x62, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x2a, 0x20,
+0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x6d, 0x62, 0x5f, 0x78, 0x2c, 0x20, 0x6d, 0x62, 0x5f,
+0x79, 0x29, 0x20, 0x2d, 0x20, 0x34, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x6d, 0x76, 0x5f,
+0x6d, 0x61, 0x78, 0x20, 0x3d, 0x20, 0x6d, 0x62, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x2a, 0x20,
+0x28, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68,
+0x2c, 0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x29, 0x20, 0x2d, 0x20, 0x28,
+0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x6d, 0x62, 0x5f, 0x78, 0x2c, 0x20, 0x6d, 0x62, 0x5f, 0x79,
+0x29, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x34, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32,
+0x20, 0x62, 0x65, 0x73, 0x74, 0x6d, 0x76, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28,
+0x6d, 0x76, 0x70, 0x2c, 0x20, 0x6d, 0x76, 0x5f, 0x6d, 0x69, 0x6e, 0x2c, 0x20, 0x6d, 0x76, 0x5f,
+0x6d, 0x61, 0x78, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x72, 0x65, 0x66, 0x63, 0x72,
+0x64, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x20, 0x2b, 0x20, 0x62, 0x65, 0x73, 0x74,
+0x6d, 0x76, 0x3b, 0x0a, 0x2f, 0x2a, 0x20, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x20, 0x63,
+0x6f, 0x73, 0x74, 0x20, 0x61, 0x74, 0x20, 0x62, 0x65, 0x73, 0x74, 0x6d, 0x76, 0x20, 0x2a, 0x2f,
+0x0a, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x64,
+0x5f, 0x38, 0x78, 0x38, 0x5f, 0x69, 0x69, 0x5f, 0x63, 0x6f, 0x6f, 0x70, 0x34, 0x28, 0x20, 0x66,
+0x65, 0x6e, 0x63, 0x2c, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66,
+0x2c, 0x20, 0x72, 0x65, 0x66, 0x63, 0x72, 0x64, 0x2c, 0x20, 0x6d, 0x62, 0x5f, 0x69, 0x2c, 0x20,
+0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x29, 0x20, 0x2b, 0x0a, 0x6c,
+0x61, 0x6d, 0x62, 0x64, 0x61, 0x20, 0x2a, 0x20, 0x6d, 0x76, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x28,
+0x20, 0x61, 0x62, 0x73, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x28, 0x20, 0x62, 0x65, 0x73, 0x74, 0x6d,
+0x76, 0x2c, 0x20, 0x6d, 0x76, 0x70, 0x20, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x28, 0x32, 0x20, 0x2b,
+0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x64, 0x6f, 0x0a, 0x7b, 0x0a,
+0x2f, 0x2a, 0x20, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x73,
+0x20, 0x61, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d,
+0x20, 0x62, 0x65, 0x73, 0x74, 0x6d, 0x76, 0x20, 0x2a, 0x2f, 0x0a, 0x72, 0x65, 0x66, 0x63, 0x72,
+0x64, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x20, 0x2b, 0x20, 0x62, 0x65, 0x73, 0x74,
+0x6d, 0x76, 0x20, 0x2b, 0x20, 0x64, 0x69, 0x61, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x5b, 0x6d, 0x62,
+0x5f, 0x69, 0x5d, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x74, 0x72, 0x79, 0x6d, 0x76, 0x20,
+0x3d, 0x20, 0x62, 0x65, 0x73, 0x74, 0x6d, 0x76, 0x20, 0x2b, 0x20, 0x64, 0x69, 0x61, 0x5f, 0x6f,
+0x66, 0x66, 0x73, 0x5b, 0x6d, 0x62, 0x5f, 0x69, 0x5d, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x63,
+0x6f, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x64, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x69, 0x69,
+0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x2c, 0x20, 0x66,
+0x72, 0x65, 0x66, 0x2c, 0x20, 0x72, 0x65, 0x66, 0x63, 0x72, 0x64, 0x20, 0x29, 0x20, 0x2b, 0x0a,
+0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x20, 0x2a, 0x20, 0x6d, 0x76, 0x5f, 0x63, 0x6f, 0x73, 0x74,
+0x28, 0x20, 0x61, 0x62, 0x73, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x28, 0x20, 0x74, 0x72, 0x79, 0x6d,
+0x76, 0x2c, 0x20, 0x6d, 0x76, 0x70, 0x20, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x28, 0x32, 0x20, 0x2b,
+0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x5f,
+0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x6d, 0x62, 0x5f, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x63,
+0x6f, 0x73, 0x74, 0x3c, 0x3c, 0x32, 0x29, 0x20, 0x7c, 0x20, 0x6d, 0x62, 0x5f, 0x69, 0x3b, 0x0a,
+0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x20, 0x63, 0x6f, 0x73, 0x74,
+0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x20,
+0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6d,
+0x69, 0x6e, 0x28, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x32,
+0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x33, 0x5d,
+0x20, 0x29, 0x20, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x28, 0x63, 0x6f, 0x73,
+0x74, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3d, 0x20, 0x62, 0x63, 0x6f, 0x73, 0x74,
+0x20, 0x29, 0x0a, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x62, 0x65, 0x73, 0x74, 0x6d, 0x76,
+0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x61, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x5b, 0x63, 0x6f, 0x73,
+0x74, 0x26, 0x33, 0x5d, 0x3b, 0x0a, 0x62, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x6f,
+0x73, 0x74, 0x3e, 0x3e, 0x32, 0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x62, 0x65, 0x73, 0x74, 0x6d,
+0x76, 0x2e, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x76, 0x5f, 0x6d, 0x61, 0x78, 0x2e, 0x78, 0x20,
+0x7c, 0x7c, 0x20, 0x62, 0x65, 0x73, 0x74, 0x6d, 0x76, 0x2e, 0x78, 0x20, 0x3c, 0x3d, 0x20, 0x6d,
+0x76, 0x5f, 0x6d, 0x69, 0x6e, 0x2e, 0x78, 0x20, 0x7c, 0x7c, 0x20, 0x62, 0x65, 0x73, 0x74, 0x6d,
+0x76, 0x2e, 0x79, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x76, 0x5f, 0x6d, 0x61, 0x78, 0x2e, 0x79, 0x20,
+0x7c, 0x7c, 0x20, 0x62, 0x65, 0x73, 0x74, 0x6d, 0x76, 0x2e, 0x79, 0x20, 0x3c, 0x3d, 0x20, 0x6d,
+0x76, 0x5f, 0x6d, 0x69, 0x6e, 0x2e, 0x79, 0x20, 0x29, 0x0a, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b,
+0x0a, 0x7d, 0x0a, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x20, 0x2d, 0x2d, 0x6d, 0x65, 0x5f, 0x72,
+0x61, 0x6e, 0x67, 0x65, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32,
+0x20, 0x74, 0x72, 0x79, 0x6d, 0x76, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x64, 0x69, 0x66, 0x66,
+0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x43, 0x4f,
+0x53, 0x54, 0x5f, 0x4d, 0x56, 0x5f, 0x4e, 0x4f, 0x5f, 0x50, 0x41, 0x44, 0x28, 0x20, 0x4c, 0x20,
+0x29, 0x5c, 0x0a, 0x74, 0x72, 0x79, 0x6d, 0x76, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70,
+0x28, 0x20, 0x74, 0x72, 0x79, 0x6d, 0x76, 0x2c, 0x20, 0x6d, 0x76, 0x5f, 0x6d, 0x69, 0x6e, 0x2c,
+0x20, 0x6d, 0x76, 0x5f, 0x6d, 0x61, 0x78, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x64, 0x69, 0x66, 0x66,
+0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x32, 0x5f,
+0x73, 0x61, 0x74, 0x28, 0x61, 0x62, 0x73, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x28, 0x20, 0x6d, 0x76,
+0x70, 0x2c, 0x20, 0x74, 0x72, 0x79, 0x6d, 0x76, 0x20, 0x29, 0x29, 0x3b, 0x5c, 0x0a, 0x69, 0x66,
+0x28, 0x20, 0x64, 0x69, 0x66, 0x66, 0x2e, 0x78, 0x20, 0x3e, 0x20, 0x31, 0x20, 0x7c, 0x7c, 0x20,
+0x64, 0x69, 0x66, 0x66, 0x2e, 0x79, 0x20, 0x3e, 0x20, 0x31, 0x20, 0x29, 0x20, 0x7b, 0x5c, 0x0a,
+0x69, 0x6e, 0x74, 0x32, 0x20, 0x72, 0x65, 0x66, 0x63, 0x72, 0x64, 0x20, 0x3d, 0x20, 0x63, 0x6f,
+0x6f, 0x72, 0x64, 0x20, 0x2b, 0x20, 0x74, 0x72, 0x79, 0x6d, 0x76, 0x3b, 0x5c, 0x0a, 0x69, 0x6e,
+0x74, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x64, 0x5f, 0x38, 0x78, 0x38,
+0x5f, 0x69, 0x69, 0x5f, 0x63, 0x6f, 0x6f, 0x70, 0x34, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x2c,
+0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x2c, 0x20, 0x72, 0x65,
+0x66, 0x63, 0x72, 0x64, 0x2c, 0x20, 0x6d, 0x62, 0x5f, 0x69, 0x2c, 0x20, 0x63, 0x6f, 0x73, 0x74,
+0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x29, 0x20, 0x2b, 0x5c, 0x0a, 0x4c, 0x20, 0x2a, 0x20,
+0x6d, 0x76, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x61, 0x62, 0x73, 0x5f, 0x64, 0x69, 0x66,
+0x66, 0x28, 0x20, 0x74, 0x72, 0x79, 0x6d, 0x76, 0x2c, 0x20, 0x6d, 0x76, 0x70, 0x20, 0x29, 0x20,
+0x3c, 0x3c, 0x20, 0x28, 0x32, 0x20, 0x2b, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x29, 0x20, 0x29,
+0x3b, 0x5c, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3c, 0x20, 0x62, 0x63,
+0x6f, 0x73, 0x74, 0x20, 0x29, 0x20, 0x7b, 0x20, 0x62, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d, 0x20,
+0x63, 0x6f, 0x73, 0x74, 0x3b, 0x20, 0x62, 0x65, 0x73, 0x74, 0x6d, 0x76, 0x20, 0x3d, 0x20, 0x74,
+0x72, 0x79, 0x6d, 0x76, 0x3b, 0x20, 0x7d, 0x20, 0x7d, 0x0a, 0x43, 0x4f, 0x53, 0x54, 0x5f, 0x4d,
+0x56, 0x5f, 0x4e, 0x4f, 0x5f, 0x50, 0x41, 0x44, 0x28, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x69,
+0x66, 0x28, 0x20, 0x21, 0x62, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x69, 0x74, 0x65, 0x72,
+0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x2f, 0x2a, 0x20, 0x74, 0x72, 0x79,
+0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x61, 0x74, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75,
+0x73, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x27, 0x73, 0x20, 0x4d, 0x56,
+0x2c, 0x20, 0x69, 0x66, 0x20, 0x4d, 0x56, 0x50, 0x20, 0x77, 0x61, 0x73, 0x20, 0x74, 0x6f, 0x6f,
+0x20, 0x66, 0x61, 0x72, 0x20, 0x61, 0x77, 0x61, 0x79, 0x20, 0x2a, 0x2f, 0x0a, 0x69, 0x6e, 0x74,
+0x32, 0x20, 0x70, 0x72, 0x65, 0x76, 0x6d, 0x76, 0x20, 0x3d, 0x20, 0x62, 0x5f, 0x73, 0x68, 0x69,
+0x66, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3f, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65,
+0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x32, 0x5f, 0x73, 0x61, 0x74, 0x28, 0x69, 0x6e, 0x5f, 0x6d,
+0x76, 0x73, 0x5b, 0x66, 0x69, 0x6e, 0x64, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x63, 0x61, 0x6c,
+0x65, 0x5f, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x28, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x2c, 0x20, 0x6d,
+0x62, 0x5f, 0x79, 0x2c, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x20, 0x6d,
+0x62, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x29, 0x5d, 0x29, 0x20, 0x3a, 0x20, 0x63,
+0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x32, 0x5f, 0x73, 0x61, 0x74, 0x28,
+0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x73, 0x5b, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x29, 0x3b, 0x0a,
+0x70, 0x72, 0x65, 0x76, 0x6d, 0x76, 0x20, 0x3e, 0x3e, 0x3d, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65,
+0x3b, 0x0a, 0x74, 0x72, 0x79, 0x6d, 0x76, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x65, 0x76, 0x6d, 0x76,
+0x3b, 0x0a, 0x43, 0x4f, 0x53, 0x54, 0x5f, 0x4d, 0x56, 0x5f, 0x4e, 0x4f, 0x5f, 0x50, 0x41, 0x44,
+0x28, 0x20, 0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x66, 0x6f,
+0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20,
+0x3c, 0x20, 0x69, 0x5f, 0x6d, 0x76, 0x63, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x20, 0x29, 0x0a, 0x7b,
+0x0a, 0x2f, 0x2a, 0x20, 0x74, 0x72, 0x79, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x61, 0x74, 0x20,
+0x65, 0x61, 0x63, 0x68, 0x20, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x20, 0x4d,
+0x56, 0x2c, 0x20, 0x69, 0x66, 0x20, 0x4d, 0x56, 0x50, 0x20, 0x77, 0x61, 0x73, 0x20, 0x74, 0x6f,
+0x6f, 0x20, 0x66, 0x61, 0x72, 0x20, 0x61, 0x77, 0x61, 0x79, 0x20, 0x2a, 0x2f, 0x0a, 0x74, 0x72,
+0x79, 0x6d, 0x76, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x69, 0x6e,
+0x74, 0x32, 0x5f, 0x73, 0x61, 0x74, 0x28, 0x20, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61,
+0x6c, 0x5b, 0x69, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x43, 0x4f, 0x53, 0x54, 0x5f, 0x4d, 0x56, 0x5f,
+0x4e, 0x4f, 0x5f, 0x50, 0x41, 0x44, 0x28, 0x20, 0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x20, 0x29,
+0x3b, 0x0a, 0x7d, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x6d, 0x62, 0x5f, 0x69, 0x20, 0x3d, 0x3d, 0x20,
+0x30, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x62, 0x65, 0x73, 0x74, 0x6d, 0x76, 0x20, 0x3c, 0x3c, 0x3d,
+0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x0a, 0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x76, 0x73, 0x5b,
+0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74,
+0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x32, 0x5f, 0x73, 0x61, 0x74, 0x28, 0x62, 0x65, 0x73, 0x74,
+0x6d, 0x76, 0x29, 0x3b, 0x0a, 0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x76, 0x5f, 0x63, 0x6f, 0x73, 0x74,
+0x73, 0x5b, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x20,
+0x62, 0x63, 0x6f, 0x73, 0x74, 0x2c, 0x20, 0x4c, 0x4f, 0x57, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f,
+0x53, 0x54, 0x5f, 0x4d, 0x41, 0x53, 0x4b, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x7d, 0x0a, 0x2f,
+0x2a, 0x20, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x4c, 0x20, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x20,
+0x73, 0x75, 0x62, 0x70, 0x65, 0x6c, 0x20, 0x52, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x2a, 0x2f,
+0x0a, 0x2f, 0x2a, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20,
+0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x38, 0x78, 0x38, 0x20, 0x53, 0x41, 0x44,
+0x2e, 0x20, 0x20, 0x34, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x70, 0x65, 0x72,
+0x20, 0x4d, 0x42, 0x2c, 0x20, 0x73, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x34, 0x20, 0x44, 0x49,
+0x41, 0x20, 0x48, 0x50, 0x45, 0x4c, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x20, 0x61,
+0x72, 0x65, 0x0a, 0x2a, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20,
+0x73, 0x69, 0x6d, 0x75, 0x6c, 0x74, 0x61, 0x6e, 0x65, 0x6f, 0x75, 0x73, 0x6c, 0x79, 0x20, 0x2a,
+0x2f, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x64, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x69, 0x69,
+0x5f, 0x68, 0x70, 0x65, 0x6c, 0x28, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79,
+0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x2c,
+0x20, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73, 0x2c, 0x20, 0x72,
+0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64,
+0x5f, 0x74, 0x20, 0x66, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20,
+0x69, 0x6e, 0x74, 0x32, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e,
+0x74, 0x32, 0x20, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f, 0x73, 0x20, 0x3d, 0x20, 0x71, 0x70, 0x6f,
+0x73, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x68, 0x70, 0x65, 0x6c,
+0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x2e, 0x78, 0x20,
+0x26, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x71, 0x70,
+0x6f, 0x73, 0x2e, 0x79, 0x20, 0x26, 0x20, 0x32, 0x29, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20,
+0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x3d, 0x20, 0x38, 0x20, 0x2a,
+0x20, 0x68, 0x70, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x78, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x34,
+0x20, 0x63, 0x6f, 0x73, 0x74, 0x34, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x66, 0x6f, 0x72, 0x28,
+0x20, 0x69, 0x6e, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x79, 0x20, 0x3c, 0x20,
+0x38, 0x3b, 0x20, 0x79, 0x2b, 0x2b, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x34,
+0x20, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x34, 0x3b, 0x0a, 0x65, 0x6e, 0x63, 0x20,
+0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20,
+0x66, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66,
+0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28,
+0x30, 0x2c, 0x20, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x34, 0x2e, 0x73, 0x30, 0x20,
+0x3d, 0x20, 0x28, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28,
+0x20, 0x66, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20, 0x73, 0x61,
+0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f, 0x73, 0x20, 0x2b,
+0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x30, 0x2c, 0x20, 0x79, 0x29, 0x29, 0x2e, 0x73,
+0x30, 0x20, 0x3e, 0x3e, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x29,
+0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x34, 0x2e, 0x73, 0x31,
+0x20, 0x3d, 0x20, 0x28, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69,
+0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20, 0x73,
+0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f, 0x73, 0x20,
+0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x31, 0x2c, 0x20, 0x79, 0x29, 0x29, 0x2e,
+0x73, 0x30, 0x20, 0x3e, 0x3e, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74,
+0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x34, 0x2e, 0x73,
+0x32, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75,
+0x69, 0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20,
+0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f, 0x73,
+0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x32, 0x2c, 0x20, 0x79, 0x29, 0x29,
+0x2e, 0x73, 0x30, 0x20, 0x3e, 0x3e, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66,
+0x74, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x34, 0x2e,
+0x73, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65,
+0x75, 0x69, 0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c,
+0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f,
+0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x33, 0x2c, 0x20, 0x79, 0x29,
+0x29, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x3e, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69,
+0x66, 0x74, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x3b, 0x0a, 0x63, 0x6f, 0x73, 0x74,
+0x34, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x28, 0x20, 0x65,
+0x6e, 0x63, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x34, 0x20, 0x29, 0x3b, 0x0a, 0x65, 0x6e, 0x63, 0x20,
+0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20,
+0x66, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66,
+0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28,
+0x34, 0x2c, 0x20, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x34, 0x2e, 0x73, 0x30, 0x20,
+0x3d, 0x20, 0x28, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28,
+0x20, 0x66, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20, 0x73, 0x61,
+0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f, 0x73, 0x20, 0x2b,
+0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x34, 0x2c, 0x20, 0x79, 0x29, 0x29, 0x2e, 0x73,
+0x30, 0x20, 0x3e, 0x3e, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x29,
+0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x34, 0x2e, 0x73, 0x31,
+0x20, 0x3d, 0x20, 0x28, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69,
+0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20, 0x73,
+0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f, 0x73, 0x20,
+0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x35, 0x2c, 0x20, 0x79, 0x29, 0x29, 0x2e,
+0x73, 0x30, 0x20, 0x3e, 0x3e, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74,
+0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x34, 0x2e, 0x73,
+0x32, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75,
+0x69, 0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20,
+0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f, 0x73,
+0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x36, 0x2c, 0x20, 0x79, 0x29, 0x29,
+0x2e, 0x73, 0x30, 0x20, 0x3e, 0x3e, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66,
+0x74, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x3b, 0x0a, 0x76, 0x61, 0x6c, 0x34, 0x2e,
+0x73, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65,
+0x75, 0x69, 0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c,
+0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x70, 0x6f,
+0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x37, 0x2c, 0x20, 0x79, 0x29,
+0x29, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x3e, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69,
+0x66, 0x74, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x3b, 0x0a, 0x63, 0x6f, 0x73, 0x74,
+0x34, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x28, 0x20, 0x65,
+0x6e, 0x63, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x34, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x72, 0x65,
+0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x34, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20,
+0x63, 0x6f, 0x73, 0x74, 0x34, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x34,
+0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x34, 0x2e, 0x73, 0x33, 0x3b, 0x0a,
+0x7d, 0x0a, 0x2f, 0x2a, 0x20, 0x4f, 0x6e, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20,
+0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x20, 0x38, 0x78, 0x38, 0x20, 0x53, 0x41, 0x44,
+0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x61, 0x74, 0x20, 0x61, 0x20, 0x51, 0x50, 0x45, 0x4c, 0x20,
+0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x61, 0x6e, 0x20, 0x48,
+0x50, 0x45, 0x4c, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x20, 0x2a, 0x2f, 0x0a, 0x69, 0x6e, 0x74,
+0x20, 0x73, 0x61, 0x64, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x69, 0x69, 0x5f, 0x71, 0x70, 0x65, 0x6c,
+0x28, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67,
+0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x32,
+0x20, 0x66, 0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73, 0x2c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f,
+0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x66, 0x72,
+0x65, 0x66, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x32, 0x20,
+0x71, 0x70, 0x6f, 0x73, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x66, 0x72,
+0x65, 0x66, 0x41, 0x70, 0x6f, 0x73, 0x20, 0x3d, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x20, 0x3e, 0x3e,
+0x20, 0x32, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x68, 0x70, 0x65, 0x6c, 0x41, 0x20, 0x3d, 0x20,
+0x28, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x2e, 0x78, 0x20, 0x26, 0x20, 0x32, 0x29, 0x20, 0x3e, 0x3e,
+0x20, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x2e, 0x79, 0x20, 0x26, 0x20,
+0x32, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x42, 0x20, 0x3d,
+0x20, 0x71, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x20, 0x26,
+0x20, 0x31, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20,
+0x66, 0x72, 0x65, 0x66, 0x42, 0x70, 0x6f, 0x73, 0x20, 0x3d, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x42,
+0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x68, 0x70, 0x65, 0x6c, 0x42,
+0x20, 0x3d, 0x20, 0x28, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x42, 0x2e, 0x78, 0x20, 0x26, 0x20, 0x32,
+0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x42,
+0x2e, 0x79, 0x20, 0x26, 0x20, 0x32, 0x29, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61,
+0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x30, 0x20, 0x3d, 0x20, 0x38, 0x20, 0x2a, 0x20,
+0x68, 0x70, 0x65, 0x6c, 0x41, 0x2c, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66,
+0x74, 0x31, 0x20, 0x3d, 0x20, 0x38, 0x20, 0x2a, 0x20, 0x68, 0x70, 0x65, 0x6c, 0x42, 0x3b, 0x0a,
+0x69, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x66, 0x6f,
+0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x79, 0x20,
+0x3c, 0x20, 0x38, 0x3b, 0x20, 0x79, 0x2b, 0x2b, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x66, 0x6f, 0x72,
+0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x78, 0x20, 0x3c,
+0x20, 0x38, 0x3b, 0x20, 0x78, 0x2b, 0x2b, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x75, 0x69, 0x6e, 0x74,
+0x20, 0x65, 0x6e, 0x63, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67,
+0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c,
+0x65, 0x72, 0x2c, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69,
+0x6e, 0x74, 0x32, 0x29, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x29, 0x2e, 0x73, 0x30, 0x3b, 0x0a,
+0x75, 0x69, 0x6e, 0x74, 0x20, 0x76, 0x41, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x65, 0x61, 0x64, 0x5f,
+0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x6c,
+0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66,
+0x72, 0x65, 0x66, 0x41, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29,
+0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x29, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x3e, 0x20, 0x6d, 0x61,
+0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x30, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46,
+0x46, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x76, 0x42, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x65,
+0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x72, 0x65, 0x66,
+0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72,
+0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x42, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e,
+0x74, 0x32, 0x29, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x29, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x3e,
+0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x31, 0x29, 0x20, 0x26, 0x20,
+0x30, 0x78, 0x46, 0x46, 0x3b, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x62,
+0x73, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x28, 0x20, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x72, 0x68, 0x61,
+0x64, 0x64, 0x28, 0x20, 0x76, 0x41, 0x2c, 0x20, 0x76, 0x42, 0x20, 0x29, 0x20, 0x29, 0x3b, 0x0a,
+0x7d, 0x0a, 0x7d, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x3b,
+0x0a, 0x7d, 0x0a, 0x2f, 0x2a, 0x20, 0x46, 0x6f, 0x75, 0x72, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61,
+0x64, 0x73, 0x20, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x20, 0x38, 0x78, 0x38, 0x20, 0x53,
+0x41, 0x54, 0x44, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x61, 0x74, 0x20, 0x61, 0x20, 0x51, 0x50,
+0x45, 0x4c, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x61,
+0x6e, 0x20, 0x48, 0x50, 0x45, 0x4c, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x0a, 0x2a, 0x0a, 0x2a,
+0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x63, 0x6f, 0x6c,
+0x6c, 0x65, 0x63, 0x74, 0x73, 0x20, 0x31, 0x2f, 0x34, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
+0x20, 0x72, 0x6f, 0x77, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x64, 0x69, 0x66, 0x66, 0x73, 0x20, 0x61,
+0x6e, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x20, 0x6f, 0x6e, 0x65,
+0x20, 0x71, 0x75, 0x61, 0x72, 0x74, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x0a, 0x2a, 0x20, 0x74, 0x68,
+0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x0a, 0x2a, 0x2f, 0x0a,
+0x69, 0x6e, 0x74, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x69, 0x69, 0x5f,
+0x71, 0x70, 0x65, 0x6c, 0x5f, 0x63, 0x6f, 0x6f, 0x70, 0x34, 0x28, 0x20, 0x72, 0x65, 0x61, 0x64,
+0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20,
+0x66, 0x65, 0x6e, 0x63, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x70,
+0x6f, 0x73, 0x2c, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d,
+0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x66, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x6c, 0x61,
+0x6e, 0x65, 0x73, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x2c, 0x0a,
+0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x20, 0x2a, 0x74, 0x6d,
+0x70, 0x70, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x64, 0x78, 0x20, 0x29, 0x0a, 0x7b, 0x0a,
+0x76, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6c, 0x65, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73,
+0x75, 0x6d, 0x32, 0x5f, 0x74, 0x28, 0x20, 0x2a, 0x74, 0x6d, 0x70, 0x20, 0x29, 0x5b, 0x34, 0x5d,
+0x20, 0x3d, 0x20, 0x28, 0x76, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6c, 0x65, 0x20, 0x6c, 0x6f, 0x63,
+0x61, 0x6c, 0x20, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x28, 0x20, 0x2a, 0x20, 0x29, 0x5b, 0x34,
+0x5d, 0x29, 0x74, 0x6d, 0x70, 0x70, 0x3b, 0x0a, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x20, 0x62,
+0x30, 0x2c, 0x20, 0x62, 0x31, 0x2c, 0x20, 0x62, 0x32, 0x2c, 0x20, 0x62, 0x33, 0x3b, 0x0a, 0x69,
+0x6e, 0x74, 0x32, 0x20, 0x66, 0x72, 0x65, 0x66, 0x41, 0x70, 0x6f, 0x73, 0x20, 0x3d, 0x20, 0x71,
+0x70, 0x6f, 0x73, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x68, 0x70,
+0x65, 0x6c, 0x41, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x2e, 0x78, 0x26, 0x32,
+0x29, 0x3e, 0x3e, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x2e, 0x79, 0x26,
+0x32, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x42, 0x20, 0x3d,
+0x20, 0x71, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x28,
+0x28, 0x71, 0x70, 0x6f, 0x73, 0x2e, 0x78, 0x26, 0x31, 0x29, 0x3c, 0x3c, 0x31, 0x29, 0x2c, 0x20,
+0x28, 0x28, 0x71, 0x70, 0x6f, 0x73, 0x2e, 0x79, 0x26, 0x31, 0x29, 0x3c, 0x3c, 0x31, 0x29, 0x29,
+0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x66, 0x72, 0x65, 0x66, 0x42, 0x70, 0x6f, 0x73, 0x20,
+0x3d, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x42, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x69, 0x6e,
+0x74, 0x20, 0x68, 0x70, 0x65, 0x6c, 0x42, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x71, 0x70, 0x6f, 0x73,
+0x42, 0x2e, 0x78, 0x26, 0x32, 0x29, 0x3e, 0x3e, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x71, 0x70,
+0x6f, 0x73, 0x42, 0x2e, 0x79, 0x26, 0x32, 0x29, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x6d,
+0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x30, 0x20, 0x3d, 0x20, 0x38, 0x20, 0x2a,
+0x20, 0x68, 0x70, 0x65, 0x6c, 0x41, 0x2c, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69,
+0x66, 0x74, 0x31, 0x20, 0x3d, 0x20, 0x38, 0x20, 0x2a, 0x20, 0x68, 0x70, 0x65, 0x6c, 0x42, 0x3b,
+0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x76, 0x41, 0x2c, 0x20, 0x76, 0x42, 0x3b, 0x0a, 0x75, 0x69,
+0x6e, 0x74, 0x20, 0x61, 0x30, 0x2c, 0x20, 0x61, 0x31, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20,
+0x65, 0x6e, 0x63, 0x3b, 0x0a, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x75, 0x6d, 0x20,
+0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x41,
+0x44, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x28, 0x20, 0x4f, 0x55, 0x54, 0x2c, 0x20, 0x58, 0x20, 0x29,
+0x5c, 0x0a, 0x65, 0x6e, 0x63, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61,
+0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70,
+0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28,
+0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x58, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x29, 0x20, 0x29, 0x2e,
+0x73, 0x30, 0x3b, 0x5c, 0x0a, 0x76, 0x41, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x65, 0x61, 0x64, 0x5f,
+0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x6c,
+0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x66,
+0x72, 0x65, 0x66, 0x41, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29,
+0x28, 0x58, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x29, 0x20, 0x29, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x3e,
+0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x30, 0x29, 0x20, 0x26, 0x20,
+0x30, 0x78, 0x46, 0x46, 0x3b, 0x5c, 0x0a, 0x76, 0x42, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x65, 0x61,
+0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x66, 0x72, 0x65, 0x66, 0x5f,
+0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c,
+0x20, 0x66, 0x72, 0x65, 0x66, 0x42, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x74,
+0x32, 0x29, 0x28, 0x58, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x29, 0x20, 0x29, 0x2e, 0x73, 0x30, 0x20,
+0x3e, 0x3e, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x68, 0x69, 0x66, 0x74, 0x31, 0x29, 0x20,
+0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x3b, 0x5c, 0x0a, 0x4f, 0x55, 0x54, 0x20, 0x3d, 0x20, 0x65,
+0x6e, 0x63, 0x20, 0x2d, 0x20, 0x72, 0x68, 0x61, 0x64, 0x64, 0x28, 0x20, 0x76, 0x41, 0x2c, 0x20,
+0x76, 0x42, 0x20, 0x29, 0x3b, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45,
+0x41, 0x44, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x5f, 0x45, 0x58, 0x28, 0x20, 0x4f, 0x55, 0x54, 0x2c,
+0x20, 0x61, 0x2c, 0x20, 0x62, 0x20, 0x29, 0x5c, 0x0a, 0x7b, 0x5c, 0x0a, 0x52, 0x45, 0x41, 0x44,
+0x5f, 0x44, 0x49, 0x46, 0x46, 0x28, 0x20, 0x61, 0x30, 0x2c, 0x20, 0x61, 0x20, 0x29, 0x3b, 0x5c,
+0x0a, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x28, 0x20, 0x61, 0x31, 0x2c, 0x20,
+0x62, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x4f, 0x55, 0x54, 0x20, 0x3d, 0x20, 0x61, 0x30, 0x20, 0x2b,
+0x20, 0x28, 0x61, 0x31, 0x3c, 0x3c, 0x42, 0x49, 0x54, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x53,
+0x55, 0x4d, 0x29, 0x3b, 0x5c, 0x0a, 0x7d, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20,
+0x52, 0x4f, 0x57, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x53, 0x41, 0x54, 0x44, 0x28, 0x20, 0x61, 0x2c,
+0x20, 0x62, 0x20, 0x29, 0x5c, 0x0a, 0x7b, 0x5c, 0x0a, 0x66, 0x65, 0x6e, 0x63, 0x70, 0x6f, 0x73,
+0x2e, 0x79, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x3b, 0x5c, 0x0a, 0x66, 0x72, 0x65, 0x66, 0x41, 0x70,
+0x6f, 0x73, 0x2e, 0x79, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x5c, 0x0a, 0x66, 0x72, 0x65, 0x66,
+0x42, 0x70, 0x6f, 0x73, 0x2e, 0x79, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x3b, 0x5c, 0x0a, 0x52, 0x45,
+0x41, 0x44, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x5f, 0x45, 0x58, 0x28, 0x20, 0x62, 0x30, 0x2c, 0x20,
+0x30, 0x2c, 0x20, 0x34, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x44, 0x49,
+0x46, 0x46, 0x5f, 0x45, 0x58, 0x28, 0x20, 0x62, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x35, 0x20,
+0x29, 0x3b, 0x5c, 0x0a, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x5f, 0x45, 0x58,
+0x28, 0x20, 0x62, 0x32, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x36, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x52,
+0x45, 0x41, 0x44, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x5f, 0x45, 0x58, 0x28, 0x20, 0x62, 0x33, 0x2c,
+0x20, 0x33, 0x2c, 0x20, 0x37, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x48, 0x41, 0x44, 0x41, 0x4d, 0x41,
+0x52, 0x44, 0x34, 0x28, 0x20, 0x74, 0x6d, 0x70, 0x5b, 0x69, 0x64, 0x78, 0x5d, 0x5b, 0x30, 0x5d,
+0x2c, 0x20, 0x74, 0x6d, 0x70, 0x5b, 0x69, 0x64, 0x78, 0x5d, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x74,
+0x6d, 0x70, 0x5b, 0x69, 0x64, 0x78, 0x5d, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x5b,
+0x69, 0x64, 0x78, 0x5d, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x62, 0x30, 0x2c, 0x20, 0x62, 0x31, 0x2c,
+0x20, 0x62, 0x32, 0x2c, 0x20, 0x62, 0x33, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x48, 0x41, 0x44, 0x41,
+0x4d, 0x41, 0x52, 0x44, 0x34, 0x28, 0x20, 0x62, 0x30, 0x2c, 0x20, 0x62, 0x31, 0x2c, 0x20, 0x62,
+0x32, 0x2c, 0x20, 0x62, 0x33, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x5b, 0x30, 0x5d, 0x5b, 0x69, 0x64,
+0x78, 0x5d, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x5b, 0x31, 0x5d, 0x5b, 0x69, 0x64, 0x78, 0x5d, 0x2c,
+0x20, 0x74, 0x6d, 0x70, 0x5b, 0x32, 0x5d, 0x5b, 0x69, 0x64, 0x78, 0x5d, 0x2c, 0x20, 0x74, 0x6d,
+0x70, 0x5b, 0x33, 0x5d, 0x5b, 0x69, 0x64, 0x78, 0x5d, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x73, 0x75,
+0x6d, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x32, 0x28, 0x20, 0x62, 0x30, 0x20, 0x29, 0x20,
+0x2b, 0x20, 0x61, 0x62, 0x73, 0x32, 0x28, 0x20, 0x62, 0x31, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x61,
+0x62, 0x73, 0x32, 0x28, 0x20, 0x62, 0x32, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x73, 0x32,
+0x28, 0x20, 0x62, 0x33, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x7d, 0x0a, 0x52, 0x4f, 0x57, 0x5f, 0x38,
+0x78, 0x34, 0x5f, 0x53, 0x41, 0x54, 0x44, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x3b,
+0x0a, 0x52, 0x4f, 0x57, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x53, 0x41, 0x54, 0x44, 0x28, 0x20, 0x34,
+0x2c, 0x20, 0x34, 0x20, 0x29, 0x3b, 0x0a, 0x23, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x52, 0x45,
+0x41, 0x44, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x0a, 0x23, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x52,
+0x45, 0x41, 0x44, 0x5f, 0x44, 0x49, 0x46, 0x46, 0x5f, 0x45, 0x58, 0x0a, 0x23, 0x75, 0x6e, 0x64,
+0x65, 0x66, 0x20, 0x52, 0x4f, 0x57, 0x5f, 0x38, 0x78, 0x34, 0x5f, 0x53, 0x41, 0x54, 0x44, 0x0a,
+0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x28, 0x28, 0x73, 0x75, 0x6d, 0x5f, 0x74, 0x29,
+0x73, 0x75, 0x6d, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x73, 0x75, 0x6d, 0x3e, 0x3e, 0x42, 0x49, 0x54,
+0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x4d, 0x29, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31,
+0x3b, 0x0a, 0x7d, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74,
+0x32, 0x20, 0x68, 0x70, 0x6f, 0x66, 0x66, 0x73, 0x5b, 0x34, 0x5d, 0x20, 0x3d, 0x0a, 0x7b, 0x0a,
+0x7b, 0x30, 0x2c, 0x20, 0x2d, 0x32, 0x7d, 0x2c, 0x20, 0x7b, 0x2d, 0x32, 0x2c, 0x20, 0x30, 0x7d,
+0x2c, 0x20, 0x7b, 0x32, 0x2c, 0x20, 0x30, 0x7d, 0x2c, 0x20, 0x7b, 0x30, 0x2c, 0x20, 0x32, 0x7d,
+0x0a, 0x7d, 0x3b, 0x0a, 0x2f, 0x2a, 0x20, 0x73, 0x75, 0x62, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c,
+0x20, 0x72, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d,
+0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x20, 0x6f,
+0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x4d, 0x56, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x6f,
+0x73, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72,
+0x6f, 0x6d, 0x0a, 0x2a, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x20, 0x62,
+0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x66, 0x69, 0x6e, 0x61,
+0x6c, 0x20, 0x70, 0x65, 0x72, 0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66,
+0x65, 0x72, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x6c, 0x61,
+0x75, 0x6e, 0x63, 0x68, 0x20, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3a,
+0x20, 0x20, 0x5b, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x2a, 0x20, 0x34, 0x2c,
+0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5d, 0x0a, 0x2a, 0x0a, 0x2a, 0x20,
+0x57, 0x69, 0x74, 0x68, 0x20, 0x58, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65,
+0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x31, 0x36, 0x78, 0x31, 0x36, 0x20, 0x70, 0x69,
+0x78, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x46, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c,
+0x6f, 0x77, 0x72, 0x65, 0x73, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x75, 0x73, 0x65, 0x64,
+0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x2a, 0x20, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e,
+0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x20, 0x20, 0x57, 0x65, 0x20, 0x77, 0x69, 0x6c,
+0x6c, 0x20, 0x6e, 0x6f, 0x77, 0x20, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x65, 0x20, 0x74, 0x68,
+0x65, 0x20, 0x48, 0x20, 0x56, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x43, 0x20, 0x70, 0x69, 0x78, 0x65,
+0x6c, 0x73, 0x20, 0x28, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x73, 0x65,
+0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x0a, 0x2a, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x29,
+0x20, 0x74, 0x6f, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x61, 0x74, 0x20, 0x68, 0x61,
+0x6c, 0x66, 0x2d, 0x70, 0x65, 0x6c, 0x20, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+0x73, 0x2e, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x58, 0x20, 0x58, 0x20, 0x58, 0x20, 0x58, 0x20, 0x58,
+0x20, 0x58, 0x0a, 0x2a, 0x20, 0x20, 0x46, 0x20, 0x48, 0x20, 0x46, 0x20, 0x48, 0x20, 0x46, 0x0a,
+0x2a, 0x20, 0x58, 0x20, 0x58, 0x20, 0x58, 0x20, 0x58, 0x20, 0x58, 0x20, 0x58, 0x0a, 0x2a, 0x20,
+0x20, 0x56, 0x20, 0x43, 0x20, 0x56, 0x20, 0x43, 0x20, 0x56, 0x0a, 0x2a, 0x20, 0x58, 0x20, 0x58,
+0x20, 0x58, 0x20, 0x58, 0x20, 0x58, 0x20, 0x58, 0x0a, 0x2a, 0x20, 0x20, 0x46, 0x20, 0x48, 0x20,
+0x46, 0x20, 0x48, 0x20, 0x46, 0x0a, 0x2a, 0x20, 0x58, 0x20, 0x58, 0x20, 0x58, 0x20, 0x58, 0x20,
+0x58, 0x20, 0x58, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x59, 0x58, 0x20, 0x48,
+0x50, 0x45, 0x4c, 0x20, 0x62, 0x69, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20,
+0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x73, 0x65,
+0x6c, 0x65, 0x63, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x20,
+0x77, 0x65, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x2e, 0x20, 0x20, 0x54,
+0x68, 0x65, 0x0a, 0x2a, 0x20, 0x66, 0x6f, 0x75, 0x72, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73,
+0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74,
+0x68, 0x65, 0x20, 0x66, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x20, 0x32,
+0x44, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2e, 0x20,
+0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x0a, 0x2a, 0x20, 0x72,
+0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x3a, 0x20, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x46, 0x2c,
+0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x48, 0x2c, 0x20, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x56, 0x2c,
+0x20, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x43, 0x20, 0x2a, 0x2f, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65,
+0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x73, 0x75, 0x62, 0x70, 0x65, 0x6c, 0x5f, 0x72, 0x65,
+0x66, 0x69, 0x6e, 0x65, 0x28, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20,
+0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x20, 0x20, 0x66, 0x65, 0x6e, 0x63,
+0x2c, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67,
+0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x20, 0x20, 0x66, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x6c, 0x61,
+0x6e, 0x65, 0x73, 0x2c, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61,
+0x6c, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x32, 0x20, 0x20, 0x2a, 0x69, 0x6e, 0x5f, 0x6d, 0x76,
+0x73, 0x2c, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20,
+0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x2a, 0x69, 0x6e, 0x5f, 0x73, 0x61, 0x64, 0x5f,
+0x6d, 0x76, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x2c, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20,
+0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2a,
+0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2c, 0x0a, 0x6c, 0x6f, 0x63, 0x61,
+0x6c, 0x20, 0x73, 0x75, 0x6d, 0x32, 0x5f, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x2a, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2c, 0x0a, 0x6c, 0x6f,
+0x63, 0x61, 0x6c, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x32, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x2a, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2c, 0x0a, 0x67,
+0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x32, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x2a, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73,
+0x5f, 0x6d, 0x76, 0x2c, 0x0a, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74, 0x31,
+0x36, 0x5f, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x66, 0x65, 0x6e, 0x63, 0x5f,
+0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x2c,
+0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c,
+0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x2c, 0x0a, 0x69,
+0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
+0x66, 0x2c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x5f, 0x69, 0x73, 0x6c, 0x69, 0x73,
+0x74, 0x31, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x20,
+0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28,
+0x20, 0x30, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x6d,
+0x62, 0x5f, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20,
+0x29, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62,
+0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c,
+0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a,
+0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f, 0x69, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67,
+0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29, 0x20, 0x26, 0x20,
+0x33, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f, 0x79, 0x20, 0x3d, 0x20, 0x67, 0x65,
+0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x31, 0x20, 0x29,
+0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x6d, 0x62,
+0x5f, 0x79, 0x20, 0x2a, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x2b, 0x20,
+0x6d, 0x62, 0x5f, 0x78, 0x3b, 0x0a, 0x2f, 0x2a, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f,
+0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x65, 0x6e, 0x63,
+0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x73,
+0x20, 0x61, 0x72, 0x65, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65,
+0x72, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x0a, 0x2a, 0x20, 0x68, 0x6f, 0x6c, 0x64, 0x20, 0x6d,
+0x61, 0x6e, 0x79, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x77, 0x6f, 0x72, 0x74, 0x68,
+0x20, 0x6f, 0x66, 0x20, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x74, 0x6f,
+0x72, 0x73, 0x2e, 0x20, 0x20, 0x57, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x66,
+0x73, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x72,
+0x72, 0x65, 0x63, 0x74, 0x0a, 0x2a, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x27, 0x73,
+0x20, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6b,
+0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61,
+0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74,
+0x0a, 0x2a, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x62,
+0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69,
+0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73,
+0x65, 0x61, 0x72, 0x63, 0x68, 0x3a, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x31, 0x20, 0x6f, 0x72, 0x20,
+0x6c, 0x69, 0x73, 0x74, 0x30, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x20, 0x20, 0x43, 0x50, 0x55, 0x20,
+0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x66, 0x65, 0x6e, 0x63,
+0x2d, 0x3e, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x73, 0x5b, 0x30, 0x5d, 0x5b,
+0x62, 0x20, 0x2d, 0x20, 0x70, 0x30, 0x20, 0x2d, 0x20, 0x31, 0x5d, 0x0a, 0x2a, 0x20, 0x20, 0x20,
+0x47, 0x50, 0x55, 0x20, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x3a, 0x20,
+0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x73, 0x5b,
+0x28, 0x62, 0x20, 0x2d, 0x20, 0x70, 0x30, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x6d,
+0x62, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5d, 0x20, 0x2a, 0x2f, 0x0a, 0x66, 0x65, 0x6e, 0x63,
+0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x20, 0x2b, 0x3d, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x20, 0x20, 0x28, 0x62, 0x5f, 0x69, 0x73, 0x6c, 0x69, 0x73, 0x74, 0x31, 0x20, 0x3f,
+0x20, 0x28, 0x72, 0x65, 0x66, 0x2d, 0x62, 0x2d, 0x31, 0x29, 0x20, 0x3a, 0x20, 0x28, 0x62, 0x2d,
+0x72, 0x65, 0x66, 0x2d, 0x31, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64,
+0x74, 0x68, 0x20, 0x2a, 0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3b, 0x0a,
+0x66, 0x65, 0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x5f, 0x63,
+0x6f, 0x73, 0x74, 0x73, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x62, 0x5f, 0x69, 0x73, 0x6c, 0x69, 0x73,
+0x74, 0x31, 0x20, 0x3f, 0x20, 0x28, 0x72, 0x65, 0x66, 0x2d, 0x62, 0x2d, 0x31, 0x29, 0x20, 0x3a,
+0x20, 0x28, 0x62, 0x2d, 0x72, 0x65, 0x66, 0x2d, 0x31, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x62,
+0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x2a, 0x20, 0x6d, 0x62, 0x5f, 0x68, 0x65, 0x69, 0x67,
+0x68, 0x74, 0x3b, 0x0a, 0x2f, 0x2a, 0x20, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x20, 0x70, 0x6f,
+0x69, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x63, 0x61,
+0x6c, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73,
+0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64,
+0x27, 0x73, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x2a, 0x2f, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x6d,
+0x62, 0x5f, 0x69, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74,
+0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x31, 0x20, 0x29, 0x20, 0x2a,
+0x20, 0x28, 0x67, 0x65, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65,
+0x28, 0x20, 0x30, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x67,
+0x65, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29,
+0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x3b, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63,
+0x61, 0x6c, 0x20, 0x2b, 0x3d, 0x20, 0x6d, 0x62, 0x5f, 0x69, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75,
+0x70, 0x20, 0x2a, 0x20, 0x34, 0x3b, 0x0a, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61,
+0x6c, 0x20, 0x2b, 0x3d, 0x20, 0x6d, 0x62, 0x5f, 0x69, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70,
+0x20, 0x2a, 0x20, 0x31, 0x36, 0x3b, 0x0a, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
+0x20, 0x2b, 0x3d, 0x20, 0x6d, 0x62, 0x5f, 0x69, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20,
+0x2a, 0x20, 0x34, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x5f, 0x6d, 0x76, 0x63, 0x20, 0x3d,
+0x20, 0x30, 0x3b, 0x0a, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x30, 0x5d,
+0x20, 0x3d, 0x20, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x31, 0x5d, 0x20,
+0x3d, 0x20, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x32, 0x5d, 0x20, 0x3d,
+0x20, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20,
+0x30, 0x3b, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x4d, 0x56, 0x43, 0x28, 0x20,
+0x44, 0x58, 0x2c, 0x20, 0x44, 0x59, 0x20, 0x29, 0x20, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63,
+0x61, 0x6c, 0x5b, 0x69, 0x5f, 0x6d, 0x76, 0x63, 0x2b, 0x2b, 0x5d, 0x20, 0x3d, 0x20, 0x69, 0x6e,
+0x5f, 0x6d, 0x76, 0x73, 0x5b, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x2a, 0x20,
+0x28, 0x6d, 0x62, 0x5f, 0x79, 0x20, 0x2b, 0x20, 0x44, 0x59, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x6d,
+0x62, 0x5f, 0x78, 0x20, 0x2b, 0x20, 0x44, 0x58, 0x29, 0x5d, 0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20,
+0x6d, 0x62, 0x5f, 0x78, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x29, 0x0a, 0x4d, 0x56, 0x43, 0x28, 0x20,
+0x2d, 0x31, 0x2c, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x6d, 0x62, 0x5f,
+0x79, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x4d, 0x56, 0x43, 0x28, 0x20, 0x30,
+0x2c, 0x20, 0x2d, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x6d, 0x62, 0x5f, 0x78,
+0x20, 0x3c, 0x20, 0x6d, 0x62, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x2d, 0x20, 0x31, 0x20,
+0x29, 0x0a, 0x4d, 0x56, 0x43, 0x28, 0x20, 0x31, 0x2c, 0x20, 0x2d, 0x31, 0x20, 0x29, 0x3b, 0x0a,
+0x69, 0x66, 0x28, 0x20, 0x6d, 0x62, 0x5f, 0x78, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x29, 0x0a, 0x4d,
+0x56, 0x43, 0x28, 0x20, 0x2d, 0x31, 0x2c, 0x20, 0x2d, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a,
+0x23, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x4d, 0x56, 0x43, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20,
+0x6d, 0x76, 0x70, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x5f, 0x6d, 0x76, 0x63, 0x20, 0x3c, 0x3d, 0x20,
+0x31, 0x29, 0x20, 0x3f, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74,
+0x32, 0x5f, 0x73, 0x61, 0x74, 0x28, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b,
+0x30, 0x5d, 0x29, 0x20, 0x3a, 0x20, 0x78, 0x32, 0x36, 0x34, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61,
+0x6e, 0x5f, 0x6d, 0x76, 0x28, 0x20, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b,
+0x30, 0x5d, 0x2c, 0x20, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x31, 0x5d,
+0x2c, 0x20, 0x6d, 0x76, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x32, 0x5d, 0x20, 0x29,
+0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x20, 0x69,
+0x6e, 0x5f, 0x73, 0x61, 0x64, 0x5f, 0x6d, 0x76, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x5b, 0x6d,
+0x62, 0x5f, 0x78, 0x79, 0x5d, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x63, 0x6f, 0x6f, 0x72,
+0x64, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x6d, 0x62, 0x5f, 0x78, 0x2c,
+0x20, 0x6d, 0x62, 0x5f, 0x79, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x33, 0x3b, 0x0a, 0x69, 0x6e, 0x74,
+0x32, 0x20, 0x62, 0x6d, 0x76, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f,
+0x69, 0x6e, 0x74, 0x32, 0x5f, 0x73, 0x61, 0x74, 0x28, 0x20, 0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x73,
+0x5b, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x2f, 0x2a, 0x20, 0x4d, 0x61,
+0x6b, 0x65, 0x20, 0x6d, 0x76, 0x70, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x62, 0x6d, 0x76, 0x20, 0x51,
+0x50, 0x45, 0x4c, 0x20, 0x4d, 0x56, 0x20, 0x2a, 0x2f, 0x0a, 0x6d, 0x76, 0x70, 0x20, 0x3c, 0x3c,
+0x3d, 0x20, 0x32, 0x3b, 0x20, 0x62, 0x6d, 0x76, 0x20, 0x3c, 0x3c, 0x3d, 0x20, 0x32, 0x3b, 0x0a,
+0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x48, 0x50, 0x45, 0x4c, 0x5f, 0x51, 0x50, 0x45,
+0x4c, 0x28, 0x20, 0x41, 0x52, 0x52, 0x2c, 0x20, 0x46, 0x55, 0x4e, 0x43, 0x20, 0x29, 0x5c, 0x0a,
+0x7b, 0x5c, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x74, 0x72, 0x79, 0x6d, 0x76, 0x20, 0x3d, 0x20,
+0x62, 0x6d, 0x76, 0x20, 0x2b, 0x20, 0x41, 0x52, 0x52, 0x5b, 0x6d, 0x62, 0x5f, 0x69, 0x5d, 0x3b,
+0x5c, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x20, 0x3d, 0x20, 0x28, 0x63,
+0x6f, 0x6f, 0x72, 0x64, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x29, 0x20, 0x2b, 0x20, 0x74, 0x72, 0x79,
+0x6d, 0x76, 0x3b, 0x5c, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d, 0x20,
+0x46, 0x55, 0x4e, 0x43, 0x28, 0x20, 0x66, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x63, 0x6f, 0x6f, 0x72,
+0x64, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20,
+0x71, 0x70, 0x6f, 0x73, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x20,
+0x2a, 0x20, 0x6d, 0x76, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x61, 0x62, 0x73, 0x5f, 0x64,
+0x69, 0x66, 0x66, 0x28, 0x20, 0x74, 0x72, 0x79, 0x6d, 0x76, 0x2c, 0x20, 0x6d, 0x76, 0x70, 0x20,
+0x29, 0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
+0x5b, 0x6d, 0x62, 0x5f, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x73, 0x74, 0x3c, 0x3c,
+0x32, 0x29, 0x20, 0x2b, 0x20, 0x6d, 0x62, 0x5f, 0x69, 0x3b, 0x5c, 0x0a, 0x63, 0x6f, 0x73, 0x74,
+0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63,
+0x61, 0x6c, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x20, 0x63, 0x6f, 0x73, 0x74,
+0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x20,
+0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x63,
+0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x33, 0x5d, 0x20, 0x29, 0x20, 0x29,
+0x20, 0x29, 0x3b, 0x5c, 0x0a, 0x69, 0x66, 0x28, 0x20, 0x28, 0x63, 0x6f, 0x73, 0x74, 0x3e, 0x3e,
+0x32, 0x29, 0x20, 0x3c, 0x20, 0x62, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x29, 0x5c, 0x0a, 0x7b, 0x5c,
+0x0a, 0x62, 0x6d, 0x76, 0x20, 0x2b, 0x3d, 0x20, 0x41, 0x52, 0x52, 0x5b, 0x63, 0x6f, 0x73, 0x74,
+0x26, 0x33, 0x5d, 0x3b, 0x5c, 0x0a, 0x62, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x6f,
+0x73, 0x74, 0x3e, 0x3e, 0x32, 0x3b, 0x5c, 0x0a, 0x7d, 0x5c, 0x0a, 0x7d, 0x0a, 0x48, 0x50, 0x45,
+0x4c, 0x5f, 0x51, 0x50, 0x45, 0x4c, 0x28, 0x20, 0x68, 0x70, 0x6f, 0x66, 0x66, 0x73, 0x2c, 0x20,
+0x73, 0x61, 0x64, 0x5f, 0x38, 0x78, 0x38, 0x5f, 0x69, 0x69, 0x5f, 0x68, 0x70, 0x65, 0x6c, 0x20,
+0x29, 0x3b, 0x0a, 0x48, 0x50, 0x45, 0x4c, 0x5f, 0x51, 0x50, 0x45, 0x4c, 0x28, 0x20, 0x64, 0x69,
+0x61, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x2c, 0x20, 0x73, 0x61, 0x64, 0x5f, 0x38, 0x78, 0x38, 0x5f,
+0x69, 0x69, 0x5f, 0x71, 0x70, 0x65, 0x6c, 0x20, 0x29, 0x3b, 0x0a, 0x66, 0x65, 0x6e, 0x63, 0x5f,
+0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x5b, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d,
+0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74,
+0x32, 0x5f, 0x73, 0x61, 0x74, 0x28, 0x20, 0x62, 0x6d, 0x76, 0x20, 0x29, 0x3b, 0x0a, 0x2f, 0x2a,
+0x20, 0x72, 0x65, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x20,
+0x6f, 0x66, 0x20, 0x62, 0x6d, 0x76, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x53, 0x41, 0x54,
+0x44, 0x20, 0x2a, 0x2f, 0x0a, 0x69, 0x6e, 0x74, 0x32, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x20, 0x3d,
+0x20, 0x28, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x29, 0x20, 0x2b, 0x20,
+0x62, 0x6d, 0x76, 0x3b, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b,
+0x6d, 0x62, 0x5f, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x74, 0x64, 0x5f, 0x38, 0x78, 0x38,
+0x5f, 0x69, 0x69, 0x5f, 0x71, 0x70, 0x65, 0x6c, 0x5f, 0x63, 0x6f, 0x6f, 0x70, 0x34, 0x28, 0x20,
+0x66, 0x65, 0x6e, 0x63, 0x2c, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x2c, 0x20, 0x66, 0x72, 0x65,
+0x66, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x2c, 0x20, 0x71, 0x70, 0x6f, 0x73, 0x2c, 0x20,
+0x73, 0x61, 0x74, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2c, 0x20, 0x6d, 0x62, 0x5f, 0x69,
+0x20, 0x29, 0x3b, 0x0a, 0x62, 0x63, 0x6f, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x73, 0x74,
+0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x63, 0x6f, 0x73, 0x74,
+0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x63, 0x6f, 0x73, 0x74,
+0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x20, 0x63, 0x6f, 0x73, 0x74,
+0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5b, 0x33, 0x5d, 0x3b, 0x0a, 0x62, 0x63, 0x6f, 0x73, 0x74,
+0x20, 0x2b, 0x3d, 0x20, 0x6c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x20, 0x2a, 0x20, 0x6d, 0x76, 0x5f,
+0x63, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x61, 0x62, 0x73, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x28, 0x20,
+0x62, 0x6d, 0x76, 0x2c, 0x20, 0x6d, 0x76, 0x70, 0x20, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x66, 0x65,
+0x6e, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x76, 0x5f, 0x63, 0x6f, 0x73,
+0x74, 0x73, 0x5b, 0x6d, 0x62, 0x5f, 0x78, 0x79, 0x5d, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28,
+0x20, 0x62, 0x63, 0x6f, 0x73, 0x74, 0x2c, 0x20, 0x4c, 0x4f, 0x57, 0x52, 0x45, 0x53, 0x5f, 0x43,
+0x4f, 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x53, 0x4b, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x2f, 0x2a,
+0x20, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x70, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20,
+0x61, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6d, 0x61,
+0x67, 0x65, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72,
+0x61, 0x72, 0x79, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65,
+0x72, 0x2e, 0x0a, 0x2a, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c,
+0x20, 0x69, 0x73, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x63,
+0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65,
+0x2e, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x64, 0x69, 0x6d,
+0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x78,
+0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x69, 0x6e, 0x20, 0x70, 0x69, 0x78, 0x65,
+0x6c, 0x73, 0x29, 0x0a, 0x2a, 0x2f, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f,
+0x69, 0x64, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x70, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65,
+0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x28, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f,
+0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x69, 0x6e,
+0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2c, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x6e,
+0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x6f, 0x75, 0x74,
+0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2c, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x66,
+0x73, 0x65, 0x74, 0x2c, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2c,
+0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x20, 0x29, 0x0a, 0x7b, 0x0a,
+0x69, 0x6e, 0x74, 0x20, 0x67, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f,
+0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74,
+0x20, 0x67, 0x79, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
+0x5f, 0x69, 0x64, 0x28, 0x20, 0x31, 0x20, 0x29, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x20,
+0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x34,
+0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x3b, 0x0a, 0x69, 0x6e, 0x70,
+0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d,
+0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2c,
+0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29,
+0x28, 0x67, 0x78, 0x2c, 0x20, 0x67, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75,
+0x74, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x29, 0x28,
+0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x28, 0x20, 0x28, 0x28,
+0x75, 0x69, 0x6e, 0x74, 0x34, 0x29, 0x28, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x29, 0x29, 0x20, 0x2a,
+0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20,
+0x28, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x29, 0x28, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x29, 0x29,
+0x20, 0x29, 0x3b, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75,
+0x69, 0x28, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2c, 0x20, 0x28, 0x69,
+0x6e, 0x74, 0x32, 0x29, 0x28, 0x67, 0x78, 0x2c, 0x20, 0x67, 0x79, 0x29, 0x2c, 0x20, 0x6f, 0x75,
+0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x2f, 0x2a,
+0x20, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x70, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20,
+0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x2d, 0x70, 0x65, 0x6c,
+0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6d,
+0x61, 0x67, 0x65, 0x0a, 0x2a, 0x0a, 0x2a, 0x20, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x64,
+0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68,
+0x20, 0x78, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x69, 0x6e, 0x20, 0x70, 0x69,
+0x78, 0x65, 0x6c, 0x73, 0x29, 0x0a, 0x2a, 0x2f, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20,
+0x76, 0x6f, 0x69, 0x64, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x70, 0x5f, 0x68, 0x70, 0x65,
+0x6c, 0x28, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61,
+0x67, 0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2c,
+0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67,
+0x65, 0x32, 0x64, 0x5f, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2c,
+0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x0a, 0x75, 0x69,
+0x6e, 0x74, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2c, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x64,
+0x65, 0x6e, 0x6f, 0x6d, 0x20, 0x29, 0x0a, 0x7b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x67, 0x78, 0x20,
+0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28,
+0x20, 0x30, 0x20, 0x29, 0x3b, 0x0a, 0x69, 0x6e, 0x74, 0x20, 0x67, 0x79, 0x20, 0x3d, 0x20, 0x67,
+0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x20, 0x31, 0x20,
+0x29, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61,
+0x6c, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76,
+0x61, 0x6c, 0x3b, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20,
+0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x69, 0x6e,
+0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2c, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x2c,
+0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x67, 0x78, 0x2c, 0x20, 0x67, 0x79, 0x29, 0x29,
+0x2e, 0x73, 0x30, 0x3b, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x3b,
+0x0a, 0x74, 0x65, 0x6d, 0x70, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74,
+0x5f, 0x76, 0x61, 0x6c, 0x20, 0x26, 0x20, 0x30, 0x78, 0x30, 0x30, 0x66, 0x66, 0x3b, 0x20, 0x74,
+0x65, 0x6d, 0x70, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f,
+0x76, 0x61, 0x6c, 0x20, 0x3e, 0x3e, 0x20, 0x38, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x30, 0x30,
+0x66, 0x66, 0x3b, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x2e, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x69,
+0x6e, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x20,
+0x26, 0x20, 0x30, 0x78, 0x30, 0x30, 0x66, 0x66, 0x3b, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x2e, 0x73,
+0x33, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x3e,
+0x3e, 0x20, 0x32, 0x34, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x30, 0x30, 0x66, 0x66, 0x3b, 0x0a,
+0x74, 0x65, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x29, 0x28, 0x6f,
+0x66, 0x66, 0x73, 0x65, 0x74, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x20, 0x28, 0x20, 0x28, 0x28, 0x75,
+0x69, 0x6e, 0x74, 0x34, 0x29, 0x28, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x29, 0x29, 0x20, 0x2a, 0x20,
+0x74, 0x65, 0x6d, 0x70, 0x20, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x28, 0x28, 0x75, 0x69, 0x6e, 0x74,
+0x34, 0x29, 0x28, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x29, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x6f, 0x75,
+0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x2e,
+0x73, 0x30, 0x20, 0x7c, 0x20, 0x28, 0x74, 0x65, 0x6d, 0x70, 0x2e, 0x73, 0x31, 0x20, 0x3c, 0x3c,
+0x20, 0x38, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x74, 0x65, 0x6d, 0x70, 0x2e, 0x73, 0x32, 0x20, 0x3c,
+0x3c, 0x20, 0x31, 0x36, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x74, 0x65, 0x6d, 0x70, 0x2e, 0x73, 0x33,
+0x20, 0x3c, 0x3c, 0x20, 0x32, 0x34, 0x29, 0x3b, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x69,
+0x6d, 0x61, 0x67, 0x65, 0x75, 0x69, 0x28, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x6e,
+0x65, 0x2c, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x29, 0x28, 0x67, 0x78, 0x2c, 0x20, 0x67, 0x79,
+0x29, 0x2c, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x29, 0x3b,
+0x0a, 0x7d, 0x0a,
+0x00 };
+static const char x264_opencl_source_hash[] = {
+0x66, 0x34, 0x62, 0x36, 0x63, 0x32, 0x39, 0x63, 0x61, 0x32, 0x34, 0x38, 0x38, 0x35, 0x38, 0x62,
+0x62, 0x37, 0x31, 0x37, 0x37, 0x65, 0x36, 0x34, 0x36, 0x39, 0x34, 0x65, 0x34, 0x32, 0x61, 0x38,
+0x00 };
diff --git a/repo/apps/arandr.xibuild b/repo/apps/arandr.xibuild
new file mode 100644
index 0000000..7b926ff
--- /dev/null
+++ b/repo/apps/arandr.xibuild
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+NAME="arandr"
+DESC="ARandR provides a simple visual front end for XRandR"
+
+MAKEDEPS="python python-setuptools "
+DEPS="xrandr cairo python-gobject python "
+
+PKG_VER=0.1.10
+SOURCE="http://christian.amsuess.com/tools/arandr/files/arandr-$PKG_VER.tar.gz"
+
+
+package () {
+ python3 setup.py install --prefix=/usr --root=$PKG_DEST
+}
diff --git a/repo/apps/chromium.xibuild b/repo/apps/chromium.xibuild
new file mode 100644
index 0000000..2edfbd3
--- /dev/null
+++ b/repo/apps/chromium.xibuild
@@ -0,0 +1,287 @@
+#!/bin/sh
+
+NAME="chromium"
+DESC="Chromium webbrowser (ungoogled)"
+
+MAKEDEPS="meson ninja hwids compiler-rt lld pciutils"
+DEPS="alsa-lib at-spi2-atk at-spi2-core atk cairo dbus eudev expat ffmpeg4 flac font-opensans fontconfig freetype2 glib gtk3 harfbuzz lcms2 libdrm libevent libjpeg-turbo libpng pulseaudio libwebp libx11 libxcb libxcomposite libxdamage libxext libxfixes libxkbcommon libxml2 libxrandr libxslt mesa musl nspr nss opus pango re2 snappy wayland xdg-utils nodejs"
+
+PKG_VER=100.0.4896.127
+
+SOURCE="https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$PKG_VER.tar.xz"
+
+fonts_package=cd96fc55dc243f6c6f4cb63ad117cad6cd48dceb
+_launcher_ver=8
+ADDITIONAL="
+https://github.com/Eloston/ungoogled-chromium/archive/$PKG_VER-1.tar.gz
+https://chromium-fonts.storage.googleapis.com/$fonts_package
+
+chromium-VirtualCursor-standard-layout.patch
+chromium-revert-drop-of-system-java.patch
+chromium-use-alpine-target.patch
+chromium.conf
+chromium-launcher.sh
+chromium.desktop
+credentials-header.patch
+default-pthread-stacksize.patch
+elf-arm.patch
+fix-narrowing-cast.patch
+fix-unittests-sandbox.patch
+gcc-arm.patch
+gdbinit.patch
+google-api.keys
+media-base.patch
+memory-tagging-arm64.patch
+musl-crashpad.patch
+musl-fixes.patch
+musl-hacks.patch
+musl-libc++.patch
+musl-sandbox.patch
+musl-stat.patch
+musl-tid-caching.patch
+musl-v8-monotonic-pthread-cont_timedwait.patch
+nasm.patch
+no-execinfo.patch
+no-getcontext.patch
+no-mallinfo.patch
+quiche-arena-size.patch
+resolver.patch
+revert-use-ffile-compilation-dir.patch
+scoped-file.patch
+system-opus.patch
+use-deprecated-ffmpeg-api.patch
+unbundle-ffmpeg-av_stream_get_first_dts.patch
+use-oauth2-client-switches-as-default.patch
+wayland-egl.patch
+webcodecs-stop-using-AudioOpusEncoder.patch
+"
+
+prepare () {
+ apply_patches
+
+ # Congratulations, you have found a bug! The bug is in the application that uses this internal glibc header
+ files="third_party/libsync/src/include/sync/sync.h
+ third_party/crashpad/crashpad/compat/linux/sys/ptrace.h
+ base/allocator/allocator_shim_internals.h"
+ for f in $files; do
+ sed -i "s/__BEGIN_DECLS/#ifdef __cplusplus\nextern \"C\" {\n#endif/g" $f
+ sed -i "s/__END_DECLS/#ifdef __cplusplus\n}\n#endif/g" $f
+ sed -i "s,#include <sys/cdefs.h>,," $f
+ done
+
+ # prevent annoying errors when regenerating gni
+ sed -i 's,^update_readme$,#update_readme,' \
+ third_party/libvpx/generate_gni.sh
+
+ # allow system dependencies in "official builds"
+ sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
+ tools/generate_shim_headers/generate_shim_headers.py
+
+
+ tar xf chromium-launcher-$_launcher_ver.tar.gz
+ tar xf $fonts_package
+ tar xf $PKG_VER-1.tar.gz
+ ungoogled_repo="ungoogled-chromium-$PKG_VER-1"
+ utils="${ungoogled_repo}/utils"
+
+ python "$utils/prune_binaries.py" ./ "$ungoogled_repo/pruning.list"
+ python "$utils/patches.py" apply ./ "$ungoogled_repo/patches"
+ python "$utils/domain_substitution.py" apply -r "$ungoogled_repo/domain_regex.list" \
+ -f "$ungoogled_repo/domain_substitution.list" -c domainsubcache.tar.gz ./
+
+ mv test_fonts ./third_party/test_fonts
+
+ sed 's|//third_party/usb_ids/usb.ids|/usr/share/hwdata/usb.ids|g' \
+ -i services/device/public/cpp/usb/BUILD.gn
+
+ mkdir -p third_party/node/linux/node-linux-x64/bin
+ ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/
+
+ # Remove bundled libraries for which we will use the system copies; this
+ # *should* do what the remove_bundled_libraries.py script does, with the
+ # added benefit of not having to list all the remaining libraries
+
+ local use_system="
+ ffmpeg
+ flac
+ fontconfig
+ freetype
+ harfbuzz-ng
+ libdrm
+ libevent
+ libjpeg
+ libwebp
+ libxml
+ libxslt
+ opus
+ re2
+ snappy
+ "
+
+ local _lib
+ for _lib in ${use_system}; do
+ for f in $(find "third_party/$_lib/chromium" "third_party/$_lib/google" -type f \( -name "*.gn" -or -name "*.gni" -or -name "*.isolate" \)); do
+ echo "removing $f to use system $_lib"
+ rm $f
+ done
+ done
+
+ python build/linux/unbundle/replace_gn_files.py \
+ --system-libraries ${use_system}
+ python third_party/libaddressinput/chromium/tools/update-strings.py
+}
+
+build () {
+ export CC=clang
+ export CXX=clang++
+ export LD=clang++
+ export AR=ar
+ export NM=nm
+
+ flags="
+custom_toolchain=\"//build/toolchain/linux/unbundle:default\"
+host_toolchain=\"//build/toolchain/linux/unbundle:default\"
+enable_nacl=false
+use_sysroot=false
+clang_use_chrome_plugins=false
+is_clang=true
+use_lld=false
+gold_path=\"/usr/bin/ld.gold\"
+use_custom_libcxx=false
+use_gold=false
+is_debug=false
+blink_symbol_level=0
+symbol_level=0
+icu_use_data_file=true
+use_allocator=\"none\"
+use_allocator_shim=false
+enable_widevine=true
+use_system_harfbuzz=false
+use_system_wayland_scanner=true
+use_cups=false
+use_gnome_keyring=false
+use_vaapi=true
+enable_js_type_check=true
+use_pulseaudio=true
+link_pulseaudio=true
+rtc_use_pipewire=true
+proprietary_codecs=false
+ffmpeg_branding=\"Chrome\"
+fatal_linker_warnings=false
+disable_fieldtrial_testing_config=true
+is_official_build=true
+is_cfi=false
+use_thin_lto=false
+use_cfi_icall=false
+chrome_pgo_phase=0
+ "
+
+ # Append ungoogled chromium flags to _flags array
+ flags="$flags
+ $(cat "ungoogled-chromium-$PKG_VER-1/flags.gn")
+ "
+
+ # Facilitate deterministic builds (taken from build/config/compiler/BUILD.gn)
+ CFLAGS="$CFLAGS -Wno-builtin-macro-redefined"
+ CXXFLAGS="$CXXFLAGS -Wno-builtin-macro-redefined"
+ CPPFLAGS="$CPPFLAGS -D__DATE__= -D__TIME__= -D__TIMESTAMP__="
+
+ # Do not warn about unknown warning options
+ CFLAGS="$CFLAGS -Wno-unknown-warning-option"
+ CXXFLAGS="$CXXFLAGS -Wno-unknown-warning-option"
+
+ python3 tools/gn/bootstrap/bootstrap.py -s -v --skip-generate-buildfiles
+
+ ./out/Release/gn gen out/Release --args="$flags"
+
+ ninja -C out/Release mksnapshot
+ ninja -C out/Release v8_context_snapshot_generator
+
+ ulimit -n 2048
+ ninja -C out/Release chrome chrome_sandbox chromedriver
+}
+
+package () {
+ install -Dm755 chromium-launcher.sh \
+ "$PKG_DEST"/usr/lib/chromium/chromium-launcher.sh
+
+ install -D out/Release/chrome "$PKG_DEST/usr/lib/chromium/chromium"
+ install -D out/Release/chromedriver "$PKG_DEST/usr/bin/chromedriver"
+ install -Dm4755 out/Release/chrome_sandbox "$PKG_DEST/usr/lib/chromium/chrome-sandbox"
+
+ install -Dm644 ../chromium-drirc-disable-10bpc-color-configs.conf \
+ "$PKG_DEST/usr/share/drirc.d/10-chromium.conf"
+
+ install -Dm644 chrome/installer/linux/common/desktop.template \
+ "$PKG_DEST/usr/share/applications/chromium.desktop"
+ install -Dm644 chrome/app/resources/manpage.1.in \
+ "$PKG_DEST/usr/share/man/man1/chromium.1"
+ sed -i \
+ -e 's/@@MENUNAME@@/Chromium/g' \
+ -e 's/@@PACKAGE@@/chromium/g' \
+ -e 's/@@USR_BIN_SYMLINK_NAME@@/chromium/g' \
+ "$PKG_DEST/usr/share/applications/chromium.desktop" \
+ "$PKG_DEST/usr/share/man/man1/chromium.1"
+
+ install -Dm644 chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml \
+ "$PKG_DEST/usr/share/metainfo/chromium.appdata.xml"
+ sed -ni \
+ -e 's/chromium-browser\.desktop/chromium.desktop/' \
+ -e '/<update_contact>/d' \
+ -e '/<p>/N;/<p>\n.*\(We invite\|Chromium supports Vorbis\)/,/<\/p>/d' \
+ -e '/^<?xml/,$p' \
+ "$PKG_DEST/usr/share/metainfo/chromium.appdata.xml"
+
+ local toplevel_files="
+chrome_100_percent.pak
+chrome_200_percent.pak
+chrome_crashpad_handler
+resources.pak
+v8_context_snapshot.bin
+snapshot_blob.bin
+xdg-mime
+xdg-settings
+libEGL.so
+libGLESv2.so
+libvk_swiftshader.so
+vk_swiftshader_icd.json
+icudtl.dat
+libvulkan.so.1
+ "
+
+ mkdir -p "$PKG_DEST/usr/lib/chromium"
+ mkdir -p "$PKG_DEST/usr/lib/chromium/locales"
+ mkdir -p "$PKG_DEST/usr/lib/chromium/swiftshader"
+
+ for file in $toplevel_files; do
+ cp out/Release/$file "$PKG_DEST/usr/lib/chromium/"
+ done
+
+ for locale in out/Release/locales/* ; do
+ install -Dm644 $locale "$PKG_DEST/usr/lib/chromium/locales"
+ done
+ for shader in out/Release/swiftshader/*.so; do
+ install -Dm755 $shader "$PKG_DEST/usr/lib/chromium/swiftshader"
+ done
+
+ for size in 24 48 64 128 256; do
+ install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \
+ "$PKG_DEST/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
+ done
+
+ for size in 16 32; do
+ install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \
+ "$PKG_DEST/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
+ done
+
+ install -Dm644 LICENSE "$PKG_DEST/usr/share/licenses/chromium/LICENSE"
+
+ mkdir -p "$PKG_DEST"/usr/bin
+ ln -sf /usr/lib/chromium/chromium-launcher.sh "$PKG_DEST"/usr/bin/chromium-browser
+ install -Dm644 chromium.conf \
+ "$PKG_DEST"/etc/chromium/chromium.conf
+
+ install -Dm644 chromium.desktop \
+ "$PKG_DEST"/usr/share/applications/chromium.desktop
+
+}
diff --git a/repo/apps/mpv.xibuild b/repo/apps/mpv.xibuild
new file mode 100644
index 0000000..6770c54
--- /dev/null
+++ b/repo/apps/mpv.xibuild
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+NAME="mpv"
+DESC="Video player based on MPlayer/mplayer2"
+
+MAKEDEPS="make waf"
+DEPS="alsa-lib faac ffmpeg4 freetype2 lame aom libass libtheora libva libvdpau libxext libxinerama libxkbcommon libxrandr libxscrnsaver libxv libxvmc libxxf86dga lua mesa perl pulseaudio python-docutils python xvidcore zlib "
+
+PKG_VER=0.34.1
+SOURCE="https://github.com/mpv-player/mpv/archive/v$PKG_VER/mpv-$PKG_VER.tar.gz"
+
+prepare () {
+ ln -s /usr/bin/waf waf
+}
+
+build () {
+ python3 waf configure \
+ --prefix=/usr \
+ --bindir=/usr/bin \
+ --sysconfdir=/etc \
+ --disable-static \
+ --enable-alsa \
+ --enable-pulse \
+ --enable-libmpv-shared \
+ --enable-wayland \
+ --enable-lua \
+ --enable-test
+ python3 waf build
+}
+
+package () {
+ python3 waf install --destdir=$PKG_DEST
+}
diff --git a/repo/apps/pcmanfm.xibuild b/repo/apps/pcmanfm.xibuild
new file mode 100644
index 0000000..35c3d52
--- /dev/null
+++ b/repo/apps/pcmanfm.xibuild
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+NAME="pcmanfm"
+DESC="Extremely fast and lightweight file manager"
+
+MAKEDEPS="make "
+DEPS="gtk3 libfm "
+
+PKG_VER=1.3.2
+SOURCE="https://downloads.sourceforge.net/pcmanfm/pcmanfm-$PKG_VER.tar.xz"
+
+prepare () {
+ # avoid errors building .po files with gettext-tiny
+ sed -e "s/^\(SUBDIRS =.*\)po\(.*\)$/\1\2/" -i Makefile.in
+ echo "SUBDIRS=src data" > Makefile.am
+ aclocal
+ autoreconf
+ automake --add-missing
+}
+
+build () {
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --with-gtk=3
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+ sed -i 's|x-directory/normal|inode/directory|' \
+ "$PKG_DEST"/usr/share/applications/pcmanfm.desktop
+}
diff --git a/repo/apps/polybar.xibuild b/repo/apps/polybar.xibuild
new file mode 100644
index 0000000..16e07af
--- /dev/null
+++ b/repo/apps/polybar.xibuild
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+NAME="polybar"
+DESC="fast and easy-to-use tool for creating status bars"
+
+MAKEDEPS="cmake "
+DEPS="alsa-lib sbase cairo fontconfig freetype2 jsoncpp curl libmpdclient pulseaudio libuv musl libxcb xcb-util-cursor xcb-util-wm "
+
+PKG_VER=3.6.1
+SOURCE="https://github.com/polybar/polybar/archive/$PKG_VER.tar.gz"
+
+xppver="044e69d05db7f89339bda1ccd1efe0263b01c8f6"
+i3ipcppver="86ddf7102c6903ae0cc543071e2d375403fc0727"
+
+ADDITIONAL="fix-version.patch
+https://github.com/polybar/xpp/archive/$xppver.tar.gz
+https://github.com/polybar/i3ipcpp/archive/$i3ipcppver.tar.gz
+"
+
+prepare () {
+ tar -xf $xppver.tar.gz
+ tar -xf $i3ipcppver.tar.gz
+
+ mkdir build
+ rm -rf lib/xpp
+ mv xpp-$xppver lib/xpp
+ rm -rf lib/i3ipcpp
+ mv i3ipcpp-$i3ipcpp lib/i3ipcpp
+
+ apply_patches
+}
+
+build () {
+ cmake -B build \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DBUILD_STATIC_LIBS=OFF
+ cmake --build build
+}
+
+package () {
+ DESTDIR="$PKG_DEST" cmake --install build
+}
diff --git a/repo/devel/clang.xibuild b/repo/devel/clang.xibuild
index 8ee7c38..3b93ba3 100644
--- a/repo/devel/clang.xibuild
+++ b/repo/devel/clang.xibuild
@@ -3,14 +3,14 @@
MAKEDEPS="cmake llvm libxml2 ninja python python-markupsafe python-pygments"
DEPS="curl gcc libssh2 openssl"
-PKG_VER=13.0.1
+PKG_VER=13.0.0
SOURCE=https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKG_VER/clang-$PKG_VER.src.tar.xz
DESC="Systems programming language focused on safety, speed and concurrency"
ADDITIONAL="
patches/30-Enable-stack-protector-by-default-for-Alpine-Linux.patch
patches/10-add-musl-triples.patch
- "
+"
prepare () {
apply_patches
diff --git a/repo/devel/compiler-rt.xibuild b/repo/devel/compiler-rt.xibuild
new file mode 100644
index 0000000..abff3dc
--- /dev/null
+++ b/repo/devel/compiler-rt.xibuild
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+NAME="compiler-rt"
+DESC="LLVM compiler-rt runtime libraries"
+
+MAKEDEPS="cmake libexecinfo"
+DEPS="musl "
+
+PKG_VER=13.0.0
+SOURCE="https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKG_VER/compiler-rt-$PKG_VER.src.tar.xz"
+ADDITIONAL="link-execinfo.patch "
+
+prepare () {
+ apply_patches
+}
+
+build () {
+ cmake -B build \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DBUILD_STATIC_LIBS=OFF \
+ -DCMAKE_C_COMPILER=clang \
+ -DCMAKE_CXX_COMPILER=clang++ \
+ -DCMAKE_BUILD_TYPE=MinSizeRel \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCOMPILER_RT_INCLUDE_TESTS=OFF \
+ -DCOMPILER_RT_BUILD_SANITIZERS=ON \
+ -DCOMPILER_RT_BUILD_XRAY=ON \
+ -DCOMPILER_RT_INSTALL_PATH="/usr/lib/clang/$PKG_VER" \
+ -DLLVM_EXTERNAL_LIT="/usr/bin/lit" \
+
+ cmake --build build
+}
+
+package () {
+ DESTDIR="$PKG_DEST" cmake --install build
+}
diff --git a/repo/devel/libexecinfo.xibuild b/repo/devel/libexecinfo.xibuild
new file mode 100644
index 0000000..67e1002
--- /dev/null
+++ b/repo/devel/libexecinfo.xibuild
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+NAME="libexecinfo"
+DESC="A quick-n-dirty BSD licensed clone of the GNU libc backtrace facility."
+
+MAKEDEPS="make "
+DEPS="musl "
+
+PKG_VER=1.1
+SOURCE="http://distcache.freebsd.org/local-distfiles/itetcu/libexecinfo-$PKG_VER.tar.bz2"
+ADDITIONAL="30-linux-makefile.patch 20-define-gnu-source.patch 10-execinfo.patch "
+
+prepare () {
+ apply_patches
+}
+
+build () {
+ export CFLAGS="${CFLAGS} -fno-omit-frame-pointer"
+ make PREFIX=/usr
+}
+
+package () {
+ install -D -m755 execinfo.h \
+ "$PKG_DEST"/usr/include/execinfo.h
+ install -D -m755 stacktraverse.h \
+ "$PKG_DEST"/usr/include/stacktraverse.h
+ install -D -m755 libexecinfo.so.1 \
+ "$PKG_DEST"/usr/lib/libexecinfo.so.1
+ ln -s /usr/lib/libexecinfo.so.1 \
+ "$PKG_DEST"/usr/lib/libexecinfo.so
+
+}
diff --git a/repo/devel/lld.xibuild b/repo/devel/lld.xibuild
new file mode 100644
index 0000000..c2dff7f
--- /dev/null
+++ b/repo/devel/lld.xibuild
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+NAME="lld"
+DESC="The LLVM Linker"
+
+MAKEDEPS="cmake llvm-libunwind"
+DEPS="musl llvm "
+
+PKG_VER=13.0.0
+SOURCE="https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKG_VER/lld-$PKG_VER.src.tar.xz"
+
+build () {
+ cmake -B build \
+ -DCMAKE_BUILD_TYPE=MinSizeRel \
+ -DCMAKE_VERBOSE_MAKEFILE=OFF \
+ -DCMAKE_C_FLAGS_MINSIZEREL_INIT="$CFLAGS" \
+ -DCMAKE_CXX_FLAGS_MINSIZEREL_INIT="$CXXFLAGS" \
+ -DCMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT="$LDFLAGS -Wl,-z,stack-size=2097152" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_SKIP_INSTALL_RPATH=ON \
+ -DLLVM_INCLUDE_TESTS=ON \
+ -DLLVM_EXTERNAL_LIT=/usr/bin/lit
+ cmake --build build
+}
+
+package () {
+ DESTDIR="$PKG_DEST" cmake --install build
+ install -Dm 644 docs/ld.lld.1 $PKG_DEST/usr/share/man/man1/
+}
diff --git a/repo/devel/llvm-libunwind.xibuild b/repo/devel/llvm-libunwind.xibuild
new file mode 100644
index 0000000..9c61c31
--- /dev/null
+++ b/repo/devel/llvm-libunwind.xibuild
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+NAME="llvm-libunwind"
+DESC="LLVM version of libunwind library"
+
+MAKEDEPS="cmake "
+DEPS="musl "
+
+PKG_VER=13.0.0
+SOURCE="https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKG_VER/libunwind-$PKG_VER.src.tar.xz"
+
+ADDITIONAL="
+ https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKG_VER/llvm-$PKG_VER.src.tar.xz
+ https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKG_VER/libcxx-$PKG_VER.src.tar.xz
+ libunwind-link-libssp.patch
+ libcxx-musl.patch
+"
+
+prepare () {
+ tar xvf libunwind-$PKG_VER.src.tar.xz
+ tar xvf llvm-$PKG_VER.src.tar.xz
+ tar xvf libcxx-$PKG_VER.src.tar.xz
+ mv libunwind-$PKG_VER.src libunwind
+ mv llvm-$PKG_VER.src llvm
+ mv libcxx-$PKG_VER.src libcxx
+
+ apply_patches
+}
+
+build () {
+ cmake -B build -G Ninja -S libunwind \
+ -DCMAKE_BUILD_TYPE=MinSizeRel \
+ -DCMAKE_C_FLAGS_MINSIZEREL_INIT="$CFLAGS" \
+ -DCMAKE_CXX_FLAGS_MINSIZEREL_INIT="$CXXFLAGS" \
+ -DCMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT="$LDFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DLIBUNWIND_HAS_NODEFAULTLIBS_FLAG=OFF \
+ -DLIBUNWIND_STANDALONE_BUILD=ON
+ cmake --build build
+}
+
+package () {
+ DESTDIR="$PKG_DEST" cmake --install build
+ mkdir -p "$PKG_DEST"/usr/include/mach-o
+ cp libunwind/include/*.h "$PKG_DEST"/usr/include/
+ cp libunwind/include/mach-o/*.h "$PKG_DEST"/usr/include/mach-o/
+
+}
diff --git a/repo/devel/waf.xibuild b/repo/devel/waf.xibuild
new file mode 100644
index 0000000..a479282
--- /dev/null
+++ b/repo/devel/waf.xibuild
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+NAME="waf"
+DESC="The meta build system"
+
+MAKEDEPS=""
+DEPS="python "
+
+PKG_VER=2.0.22
+SOURCE="https://waf.io/waf-$PKG_VER"
+
+package () {
+ install -Dm755 waf-$PKG_VER "$PKG_DEST"/usr/bin/waf
+}
diff --git a/repo/media/aom.xibuild b/repo/media/aom.xibuild
new file mode 100644
index 0000000..66aaa4b
--- /dev/null
+++ b/repo/media/aom.xibuild
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+NAME="aom"
+DESC="Alliance for Open Media (AOM) AV1 codec SDK"
+
+MAKEDEPS="cmake "
+DEPS="musl "
+
+PKG_VER=3.3.0
+SOURCE="https://aomedia.googlesource.com/aom/+archive/v$PKG_VER.tar.gz"
+ADDITIONAL="fix-stack-size-e53da0b.patch "
+
+build () {
+ cmake -B build -G Ninja \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DBUILD_STATIC_LIBS=OFF
+ cmake --build build
+}
+
+package () {
+ DESTDIR="$PKG_DEST" cmake --install build
+}
diff --git a/repo/media/dav1d.xibuild b/repo/media/dav1d.xibuild
new file mode 100644
index 0000000..a25471b
--- /dev/null
+++ b/repo/media/dav1d.xibuild
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+NAME="dav1d"
+DESC="small and fast AV1 Decoder"
+
+MAKEDEPS="meson ninja nasm"
+DEPS="musl "
+
+PKG_VER=1.0.0
+SOURCE="https://code.videolan.org/videolan/dav1d/-/archive/$PKG_VER/dav1d-$PKG_VER.tar.bz2"
+ADDITIONAL="fix-asmcheck.patch "
+
+prepare () {
+ apply_patches
+}
+
+build () {
+ mkdir build &&
+ cd build &&
+ meson --prefix=/usr \
+ -Denable_asm=true \
+ -Dfuzzing_engine=none \
+ .. &&
+ ninja
+}
+
+package () {
+ DESTDIR=$PKG_DEST ninja install
+ mv $PKG_DEST/usr/lib64 $PKG_DEST/usr/lib
+}
diff --git a/repo/media/ffmpeg.xibuild b/repo/media/ffmpeg.xibuild
new file mode 100644
index 0000000..6d7f960
--- /dev/null
+++ b/repo/media/ffmpeg.xibuild
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+NAME="ffmpeg"
+DESC="Complete and free Internet live audio and video broadcasting solution for Linux/Unix"
+
+MAKEDEPS="make "
+DEPS="alsa-lib aom gnutls libass bzip2 dav1d libdrm pulseaudio librist libsrt libtheora libva libvorbis libvpx libwebp libx11 libxcb musl opus sdl2 v4l-utils vidstab x264 x265 xvidcore zlib lame soxr"
+
+PKG_VER=5.0.1
+SOURCE="https://ffmpeg.org/releases/ffmpeg-$PKG_VER.tar.xz"
+ADDITIONAL="
+0001-ffbuild-libversion.sh-add-shebang.patch
+0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
+"
+
+prepare () {
+ apply_patches
+}
+
+build () {
+ ./configure \
+ --prefix=/usr \
+ --enable-avfilter \
+ --enable-gnutls \
+ --enable-gpl \
+ --enable-libass \
+ --enable-libmp3lame \
+ --enable-libpulse \
+ --enable-libvorbis \
+ --enable-libvpx \
+ --enable-libxvid \
+ --enable-libx264 \
+ --enable-libx265 \
+ --enable-libtheora \
+ --enable-libv4l2 \
+ --enable-libdav1d \
+ --enable-lto \
+ --enable-postproc \
+ --enable-pic \
+ --enable-pthreads \
+ --enable-shared \
+ --enable-libxcb \
+ --enable-librist \
+ --enable-libsrt \
+ --enable-libvidstab \
+ --disable-stripping \
+ --disable-static \
+ --disable-librtmp \
+ --enable-libaom \
+ --enable-libopus \
+ --enable-libsoxr \
+ --enable-libwebp \
+ --enable-vaapi \
+ --enable-vdpau \
+ --enable-libdrm
+
+
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+}
diff --git a/repo/media/ffmpeg4.xibuild b/repo/media/ffmpeg4.xibuild
new file mode 100644
index 0000000..f17b0ef
--- /dev/null
+++ b/repo/media/ffmpeg4.xibuild
@@ -0,0 +1,64 @@
+#!/bin/sh
+
+NAME="ffmpeg4"
+DESC="Complete and free Internet live audio and video broadcasting solution for Linux/Unix"
+
+MAKEDEPS="make "
+DEPS="alsa-lib aom gnutls libass bzip2 dav1d libdrm pulseaudio librist libsrt libtheora libva libvorbis libvpx libwebp libx11 libxcb musl opus sdl2 v4l-utils vidstab x264 x265 xvidcore zlib lame soxr"
+
+PKG_VER=4.4.1
+SOURCE="https://ffmpeg.org/releases/ffmpeg-$PKG_VER.tar.xz"
+ADDITIONAL="
+0001-ffbuild-libversion.sh-add-shebang.patch
+0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
+"
+
+prepare () {
+ apply_patches
+}
+
+build () {
+ ./configure \
+ --prefix=/usr \
+ --enable-avresample \
+ --enable-avfilter \
+ --enable-gnutls \
+ --enable-gpl \
+ --enable-libass \
+ --enable-libmp3lame \
+ --enable-libpulse \
+ --enable-libvorbis \
+ --enable-libvpx \
+ --enable-libxvid \
+ --enable-libx264 \
+ --enable-libx265 \
+ --enable-libtheora \
+ --enable-libv4l2 \
+ --enable-libdav1d \
+ --enable-lto \
+ --enable-postproc \
+ --enable-pic \
+ --enable-pthreads \
+ --enable-shared \
+ --enable-libxcb \
+ --enable-libsrt \
+ --enable-libvidstab \
+ --disable-stripping \
+ --disable-static \
+ --disable-librtmp \
+ --enable-libaom \
+ --enable-libopus \
+ --enable-libsoxr \
+ --enable-libwebp \
+ --enable-vaapi \
+ --enable-vdpau \
+ --enable-libdrm
+
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+ rm -rf $PKG_DEST/usr/bin
+ rm -rf $PKG_DEST/usr/share
+}
diff --git a/repo/media/lame.xibuild b/repo/media/lame.xibuild
new file mode 100644
index 0000000..6c2e2dc
--- /dev/null
+++ b/repo/media/lame.xibuild
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+NAME="lame"
+DESC="An MP3 encoder and graphical frame analyzer"
+
+MAKEDEPS="make nasm"
+DEPS="musl "
+
+PKG_VER=3.100
+SOURCE="https://downloads.sourceforge.net/project/lame/lame/$PKG_VER/lame-$PKG_VER.tar.gz"
+
+build () {
+ ./configure \
+ --prefix=/usr
+ --bindir=/usr/bin \
+ --sysconfdir=/etc \
+ --disable-static \
+ --disable-mp3x \
+ --enable-nasm \
+ --with-pic
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+}
diff --git a/repo/media/libass.xibuild b/repo/media/libass.xibuild
new file mode 100644
index 0000000..60e3e04
--- /dev/null
+++ b/repo/media/libass.xibuild
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+NAME="libass"
+DESC="Portable library for SSA/ASS subtitle rendering"
+
+MAKEDEPS="make "
+DEPS="fontconfig fribidi freetype2 harfbuzz "
+
+PKG_VER=0.15.2
+SOURCE="https://github.com/libass/libass/releases/download/$PKG_VER/libass-$PKG_VER.tar.xz"
+
+build () {
+ ./configure \
+ --prefix=/usr
+ --bindir=/usr/bin \
+ --sysconfdir=/etc \
+ --disable-static
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+}
diff --git a/repo/media/librist.xibuild b/repo/media/librist.xibuild
new file mode 100644
index 0000000..a51c3fa
--- /dev/null
+++ b/repo/media/librist.xibuild
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+NAME="librist"
+DESC="Reliable Internet Stream Transport (RIST)"
+
+MAKEDEPS="meson ninja "
+DEPS="linux-headers jsoncpp musl "
+
+PKG_VER=0.2.6
+SOURCE="https://code.videolan.org/rist/librist/-/archive/v$PKG_VER/librist-v$PKG_VER.tar.gz"
+
+build () {
+ mkdir build &&
+ cd build &&
+ meson --prefix=/usr \
+ .. &&
+ ninja
+}
+
+package () {
+ DESTDIR=$PKG_DEST ninja install
+}
diff --git a/repo/media/libsrt.xibuild b/repo/media/libsrt.xibuild
new file mode 100644
index 0000000..3d79326
--- /dev/null
+++ b/repo/media/libsrt.xibuild
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+NAME="libsrt"
+DESC="Secure Reliable Transport (SRT)"
+
+MAKEDEPS="cmake "
+DEPS="openssl musl"
+
+PKG_VER=1.4.4
+SOURCE="https://github.com/Haivision/srt/archive/v$PKG_VER.tar.gz"
+ADDITIONAL="fix-cmake.patch "
+
+prepare () {
+ apply_patches
+}
+
+build () {
+ cmake -B build \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DBUILD_STATIC_LIBS=OFF
+ cmake --build build
+}
+
+package () {
+ DESTDIR="$PKG_DEST" cmake --install build
+}
diff --git a/repo/media/mpc-mpd.xibuild b/repo/media/mpc-mpd.xibuild
new file mode 100644
index 0000000..2d6d5f3
--- /dev/null
+++ b/repo/media/mpc-mpd.xibuild
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+NAME="mpc-mpd"
+DESC="Minimalist command line interface to MPD"
+
+MAKEDEPS="meson ninja rsync"
+DEPS="musl libmpdclient mpd"
+
+PKG_VER=0.34
+SOURCE="https://www.musicpd.org/download/mpc/${PKG_VER%.*}/mpc-$PKG_VER.tar.xz"
+
+build () {
+ cd build
+ meson --prefix=/usr \
+ .. &&
+ ninja
+}
+
+package () {
+ DESTDIR=$PKG_DEST ninja install
+}
diff --git a/repo/media/mpd.xibuild b/repo/media/mpd.xibuild
index 0907e1e..afedb54 100644
--- a/repo/media/mpd.xibuild
+++ b/repo/media/mpd.xibuild
@@ -1,22 +1,48 @@
#!/bin/sh
NAME="mpd"
-DESC="Minimalist command line interface to MPD"
+DESC="Music daemon that plays MP3, FLAC, Ogg Vorbis files and Audio CDs"
-MAKEDEPS="meson ninja "
-DEPS="musl libmpdclient "
+MAKEDEPS="meson ninja boost"
+DEPS="alsa-lib sbase expat faad2 flac fmt icu lame libao bzip2 libid3tag libmad libogg pulseaudio libsamplerate libmpdclient libvorbis musl opus pipewire soxr wavpack zlib sqlite3 ffmpeg4"
-PKG_VER=0.34
-SOURCE="https://www.musicpd.org/download/mpc/${PKG_VER%.*}/mpc-$PKG_VER.tar.xz"
+PKG_VER=0.23.6
+SOURCE="https://www.musicpd.org/download/mpd/${PKG_VER%.*}/mpd-$PKG_VER.tar.xz"
+ADDITIONAL="libcdio-paa-version.patch libcdio-paranoia-version.patch mpd.confd mpd.initd"
+
+prepare () {
+ apply_patches
+}
build () {
- mkdir build &&
- cd build &&
+ cd build
meson --prefix=/usr \
- .. &&
+ -Dopus=enabled \
+ -Ddocumentation=enabled \
+ -Dlibmpdclient=enabled \
+ -Dpipewire=enabled \
+ -Dwavpack=enabled \
+ -Dffmpeg=enabled \
+ .. &&
+
ninja
}
package () {
DESTDIR=$PKG_DEST ninja install
+ cd ..
+ install -d $PKG_DEST/etc
+ sed -e 's:\#user.*:user\t\t"mpd":' \
+ -e 's:\#log_file.*:log_file\t\t"syslog":' \
+ doc/mpdconf.example > $PKG_DEST/etc/mpd.conf
+ install -m755 -D mpd.initd \
+ "$PKG_DEST"/etc/init.d/mpd
+ install -m644 -D mpd.confd \
+ "$PKG_DEST"/etc/conf.d/mpd
+ install -d -m775 \
+ "$PKG_DEST"/var/run/mpd \
+ "$PKG_DEST"/var/log/mpd \
+ "$PKG_DEST"/var/lib/mpd \
+ "$PKG_DEST"/var/lib/mpd/playlists \
+ "$PKG_DEST"/var/lib/mpd/music
}
diff --git a/repo/media/soxr.xibuild b/repo/media/soxr.xibuild
new file mode 100644
index 0000000..48b1e3b
--- /dev/null
+++ b/repo/media/soxr.xibuild
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+NAME="soxr"
+DESC="High quality, one-dimensional sample-rate conversion library"
+
+MAKEDEPS="cmake "
+DEPS="musl "
+
+PKG_VER=0.1.3
+SOURCE="https://sourceforge.net/projects/soxr/files/soxr-$PKG_VER-Source.tar.xz/download"
+
+build () {
+ cmake -B build -G Ninja \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DBUILD_STATIC_LIBS=OFF
+ cmake --build build
+}
+
+package () {
+ DESTDIR="$PKG_DEST" cmake --install build
+}
diff --git a/repo/media/v4l-utils.xibuild b/repo/media/v4l-utils.xibuild
new file mode 100644
index 0000000..bd40b23
--- /dev/null
+++ b/repo/media/v4l-utils.xibuild
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+NAME="v4l-utils"
+DESC="Userspace tools and conversion library for Video 4 Linux"
+
+MAKEDEPS="make "
+DEPS="alsa-lib libjpeg-turbo argp-standalone eudev "
+
+PKG_VER=1.22.1
+SOURCE="https://linuxtv.org/downloads/v4l-utils/v4l-utils-$PKG_VER.tar.bz2"
+ADDITIONAL="fix_parse_next_subopt.patch types.patch "
+
+prepare () {
+ apply_patches
+}
+
+build () {
+ ./configure \
+ --prefix=/usr
+ --bindir=/usr/bin \
+ --sysconfdir=/etc \
+ --disable-static \
+ --enable-libdvbv5
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+}
diff --git a/repo/media/vidstab.xibuild b/repo/media/vidstab.xibuild
new file mode 100644
index 0000000..cd0e5cf
--- /dev/null
+++ b/repo/media/vidstab.xibuild
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+NAME="vidstab"
+DESC="Video stabilization library"
+
+MAKEDEPS="cmake "
+DEPS="musl "
+
+PKG_VER=1.1.0
+SOURCE="https://github.com/georgmartius/vid.stab/archive/v$PKG_VER/vid.stab-v$PKG_VER.tar.gz"
+
+build () {
+ cmake -B build \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DBUILD_STATIC_LIBS=OFF
+ cmake --build build
+}
+
+package () {
+ DESTDIR="$PKG_DEST" cmake --install build
+}
diff --git a/repo/media/x264.xibuild b/repo/media/x264.xibuild
new file mode 100644
index 0000000..5c1d375
--- /dev/null
+++ b/repo/media/x264.xibuild
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+NAME="x264"
+DESC="Free library for encoding H264/AVC video streams"
+
+MAKEDEPS="make libx11 perl nasm sbase bash"
+DEPS="musl "
+
+PKG_VER=0.164.r3081.19856cc
+gitrev=master
+SOURCE="https://code.videolan.org/videolan/x264.git"
+BRANCH=19856cc41ad11e434549fb3cc6a019e645ce1efe
+
+ADDITIONAL="
+ oclobj.h
+"
+
+prepare () {
+ echo '' > ./tools/cltostr.sh
+ mv oclobj.h common/oclobj.h
+}
+
+build () {
+ ./configure \
+ --prefix=/usr \
+ --enable-shared \
+ --enable-pic \
+ --enable-lto \
+ --disable-avs
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST bindir=/usr/bin libdir=/usr/lib includedir=/usr/include install-lib-shared install-cli
+}
diff --git a/repo/media/x265.xibuild b/repo/media/x265.xibuild
new file mode 100644
index 0000000..69bd3e2
--- /dev/null
+++ b/repo/media/x265.xibuild
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+NAME="x265"
+DESC="Open Source H265/HEVC video encoder"
+
+MAKEDEPS="cmake "
+DEPS="musl "
+
+PKG_VER=3.5
+SOURCE="https://bitbucket.org/multicoreware/x265_git/downloads/x265_$PKG_VER.tar.gz"
+
+build () {
+ # CMAKE_BUILD_TYPE - Don't change to None! This is a video encoder,
+ # performance is the most important.
+ cmake -B build-12 -S source -G Ninja \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_VERBOSE_MAKEFILE=ON \
+ -DHIGH_BIT_DEPTH=TRUE \
+ -DMAIN12=TRUE \
+ -DEXPORT_C_API=FALSE \
+ -DENABLE_CLI=FALSE \
+ -DENABLE_SHARED=FALSE
+ cmake --build build-12
+
+ cmake -B build-10 -S source -G Ninja \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_VERBOSE_MAKEFILE=ON \
+ -DHIGH_BIT_DEPTH=TRUE \
+ -DEXPORT_C_API=FALSE \
+ -DENABLE_CLI=FALSE \
+ -DENABLE_SHARED=FALSE
+ cmake --build build-10
+
+ cmake -B build -S source -G Ninja \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_VERBOSE_MAKEFILE=ON \
+ -DEXTRA_LIB='x265_main10.a;x265_main12.a' \
+ -DEXTRA_LINK_FLAGS='-L.' \
+ -DLINKED_10BIT=TRUE \
+ -DLINKED_12BIT=TRUE
+ ln -s ../build-10/libx265.a build/libx265_main10.a
+ ln -s ../build-12/libx265.a build/libx265_main12.a
+ cmake --build build
+
+}
+
+package () {
+ DESTDIR="$PKG_DEST" cmake --install build
+}
+
diff --git a/repo/media/xvidcore.xibuild b/repo/media/xvidcore.xibuild
new file mode 100644
index 0000000..6ffce5a
--- /dev/null
+++ b/repo/media/xvidcore.xibuild
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+NAME="xvidcore"
+DESC="XviD is an open source MPEG-4 video codec"
+
+MAKEDEPS="make "
+DEPS="musl "
+
+PKG_VER=1.3.7
+SOURCE="https://downloads.xvid.com/downloads/xvidcore-$PKG_VER.tar.bz2"
+
+build () {
+ cd build/generic
+ ./configure \
+ --prefix=/usr \
+ --bindir=/usr/bin \
+ --sysconfdir=/etc \
+ --disable-assembly
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+}
diff --git a/repo/meta/base.xibuild b/repo/meta/base.xibuild
index 7b2b6c2..a9714a0 100644
--- a/repo/meta/base.xibuild
+++ b/repo/meta/base.xibuild
@@ -1,5 +1,5 @@
#!/bin/sh
-DEPS="bash bzip2 sbase findutils iana-etc file gawk gettext musl grep gzip iproute2 iputils xipkg pciutils procps-ng psmisc sed shadow tar util-linux xz linux-headers sysconfigs inetutils mkinitramfs genfstab eudev openrc kbd sysklogd"
+DEPS="bash bzip2 sbase findutils iana-etc file gawk gettext musl grep gzip iproute2 iputils xipkg pciutils procps-ng psmisc sed shadow tar util-linux xz linux-headers sysconfigs inetutils mkinitramfs genfstab eudev openrc kbd sysklogd openntpd tzdata"
MAKEDEPS="grep python"
DESC="The base system to be installed"
diff --git a/repo/system/c-ares.xibuild b/repo/system/c-ares.xibuild
new file mode 100644
index 0000000..6cf3e3f
--- /dev/null
+++ b/repo/system/c-ares.xibuild
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+NAME="c-ares"
+DESC="An asynchronously DNS/names resolver library"
+
+MAKEDEPS="make "
+DEPS="musl "
+
+PKG_VER=1.18.1
+SOURCE="https://c-ares.haxx.se/download/c-ares-$PKG_VER.tar.gz"
+
+build () {
+ ./configure \
+ --prefix=/usr \
+ --bindir=/usr/bin \
+ --sysconfdir=/etc \
+ --disable-static
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+}
diff --git a/repo/system/glew.xibuild b/repo/system/glew.xibuild
new file mode 100644
index 0000000..7ad27fe
--- /dev/null
+++ b/repo/system/glew.xibuild
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+NAME="glew"
+DESC="A cross-platform C/C++ extension loading library"
+
+MAKEDEPS="make "
+DEPS="libxmu libxi mesa glu"
+
+PKG_VER=2.2.0
+SOURCE="https://downloads.sourceforge.net/glew/glew-$PKG_VER.tgz"
+ADDITIONAL="glew.patch "
+
+build () {
+ make PREFIX=/usr
+}
+
+package () {
+ mkdir -p $PKG_DEST/usr/lib64
+ make PREFIX=/usr DESTDIR=$PKG_DEST install
+}
diff --git a/repo/system/glib.xibuild b/repo/system/glib.xibuild
index 3b7a4c4..870e600 100644
--- a/repo/system/glib.xibuild
+++ b/repo/system/glib.xibuild
@@ -3,9 +3,17 @@
MAKEDEPS="meson ninja docbook-xsl docbook-dtd"
DEPS="pcre libffi zlib musl libxslt gdbm"
-PKG_VER=2.70.3
+PKG_VER=2.72.1
SOURCE=https://download.gnome.org/sources/glib/$(echo $PKG_VER | cut -d. -f-2)/glib-$PKG_VER.tar.xz
DESC="Low level core library"
+ADDITIONAL="
+0001-gquark-fix-initialization-with-c-constructors.patch
+deprecated-no-warn.patch
+musl-libintl.patch"
+
+prepare () {
+ apply_patches
+}
build () {
mkdir build &&
diff --git a/repo/system/glm.xibuild b/repo/system/glm.xibuild
new file mode 100644
index 0000000..cd918c3
--- /dev/null
+++ b/repo/system/glm.xibuild
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+NAME="glm"
+DESC="C++ mathematics library for graphics programming"
+
+MAKEDEPS="cmake "
+DEPS="musl "
+
+PKG_VER=0.9.9.8
+SOURCE="https://github.com/g-truc/glm/archive/refs/tags/$PKG_VER/glm-$PKG_VER.tar.gz"
+ADDITIONAL="
+fix-endian-test.patch
+glm.pc
+"
+
+build () {
+ cmake -B build -G Ninja \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DBUILD_STATIC_LIBS=OFF
+ cmake --build build
+}
+
+package () {
+
+ mkdir -p $PKG_DEST/usr/include/
+ cp -r glm $PKG_DEST/usr/include/
+
+ mkdir -p $PKG_DEST/usr/share/doc/
+ cp -r doc $PKG_DEST/usr/share/doc/glm
+
+ mkdir -p $PKG_DEST/usr/lib/pkgconfig
+ cp glm.pc $PKG_DEST/usr/lib/pkgconfig/
+}
diff --git a/repo/system/glu.xibuild b/repo/system/glu.xibuild
new file mode 100644
index 0000000..54249a7
--- /dev/null
+++ b/repo/system/glu.xibuild
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+NAME="glu"
+DESC="Mesa OpenGL Utility library"
+
+MAKEDEPS="meson ninja "
+DEPS="mesa opengl"
+
+PKG_VER=9.0.2
+SOURCE="https://mesa.freedesktop.org/archive/glu/glu-$PKG_VER.tar.xz"
+
+build () {
+ mkdir build &&
+ cd build &&
+ meson --prefix=/usr \
+ -D default_library=shared \
+ -D gl_provider=osmesa \
+ .. &&
+ ninja
+}
+
+package () {
+ DESTDIR=$PKG_DEST ninja install
+}
diff --git a/repo/system/gobject-introspection.xibuild b/repo/system/gobject-introspection.xibuild
index 4202c8c..5d5a117 100644
--- a/repo/system/gobject-introspection.xibuild
+++ b/repo/system/gobject-introspection.xibuild
@@ -6,11 +6,16 @@ DEPS="python-mako python-markdown glib"
PKG_VER=1.72.0
SOURCE=https://download.gnome.org/sources/gobject-introspection/$(echo $PKG_VER | cut -d. -f-2)/gobject-introspection-$PKG_VER.tar.xz
+ADDITIONAL="musl-time64.patch"
DESC="Introspection system for GObject-based libraries"
+prepare () {
+ apply_patches
+}
+
build () {
mkdir build &&
- cd build &&
+ cd build
meson --prefix=/usr --buildtype=release .. &&
ninja
diff --git a/repo/system/imlib2.xibuild b/repo/system/imlib2.xibuild
index 5e734a5..9ed5b15 100644
--- a/repo/system/imlib2.xibuild
+++ b/repo/system/imlib2.xibuild
@@ -1,7 +1,7 @@
#!/bin/sh
MAKEDEPS="make"
-DEPS="libtiff giflib bzip2 freetype2 libxext libpng libid3tag libjpeg-turbo libwebp libheif librsvg xz"
+DEPS="tiff giflib bzip2 freetype2 libxext libpng libid3tag libjpeg-turbo libwebp libheif librsvg xz"
PKG_VER=1.8.0
SOURCE=https://downloads.sourceforge.net/enlightenment/imlib2-$PKG_VER.tar.xz
diff --git a/repo/system/libexif.xibuild b/repo/system/libexif.xibuild
new file mode 100644
index 0000000..129c73a
--- /dev/null
+++ b/repo/system/libexif.xibuild
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+NAME="libexif"
+DESC="library to parse an EXIF file and read the data from those tags"
+
+MAKEDEPS="make "
+DEPS="musl "
+
+PKG_VER=0.6.24
+SOURCE="https://github.com/libexif/libexif/releases/download/v$PKG_VER/libexif-$PKG_VER.tar.bz2"
+
+build () {
+ ./configure \
+ --prefix=/usr \
+ --bindir=/usr/bin \
+ --sysconfdir=/etc \
+ --disable-static
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+}
diff --git a/repo/system/libfm-extra.xibuild b/repo/system/libfm-extra.xibuild
new file mode 100644
index 0000000..7cb00fa
--- /dev/null
+++ b/repo/system/libfm-extra.xibuild
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+NAME="libfm-extra"
+DESC="Library for file management (Extra)"
+
+MAKEDEPS="make libtool intltool autoconf automake gtk3"
+DEPS="libexif"
+
+PKG_VER=1.3.2
+SOURCE="https://github.com/lxde/libfm/archive/$PKG_VER.tar.gz"
+
+prepare () {
+ ./autogen.sh
+}
+
+build () {
+ ./configure \
+ --prefix=/usr \
+ --bindir=/usr/bin \
+ --sysconfdir=/etc \
+ --disable-static \
+ --with-gtk=3 \
+ --with-extra-only \
+ --with-gnu-ld
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+}
diff --git a/repo/system/libfm.xibuild b/repo/system/libfm.xibuild
new file mode 100644
index 0000000..21661e5
--- /dev/null
+++ b/repo/system/libfm.xibuild
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+NAME="libfm"
+DESC="Library for file management"
+
+MAKEDEPS="make libtool intltool autoconf automake gtk3"
+DEPS="libexif menu-cache"
+
+PKG_VER=1.3.2
+SOURCE="https://github.com/lxde/libfm/archive/$PKG_VER.tar.gz"
+
+prepare () {
+ ./autogen.sh
+}
+
+build () {
+ ./configure \
+ --prefix=/usr \
+ --bindir=/usr/bin \
+ --sysconfdir=/etc \
+ --disable-static \
+ --with-gtk=3 \
+ --with-extra \
+ --with-gnu-ld
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+}
diff --git a/repo/system/libpng.xibuild b/repo/system/libpng.xibuild
index bd39b4c..e40077d 100644
--- a/repo/system/libpng.xibuild
+++ b/repo/system/libpng.xibuild
@@ -6,7 +6,11 @@ DEPS=""
PKG_VER=1.6.37
SOURCE=https://downloads.sourceforge.net/libpng/libpng-$PKG_VER.tar.xz
DESC="A collection of routines used to create PNG images"
+ADDITIONAL="libpng-1.6.37-apng.patch"
+prepare () {
+ apply_patches
+}
build () {
./configure --prefix=/usr --disable-static &&
@@ -15,7 +19,7 @@ build () {
package () {
make DESTDIR=$PKG_DEST install
- mkdir /usr/share/doc/libpng-$PKG_VER &&
- cp README libpng-manual.txt /usr/share/doc/libpng-$PKG_VER
+ mkdir -p $PKG_DEST/usr/share/doc/libpng-$PKG_VER &&
+ cp README libpng-manual.txt $PKG_DEST/usr/share/doc/libpng-$PKG_VER
}
diff --git a/repo/system/libretls.xibuild b/repo/system/libretls.xibuild
new file mode 100644
index 0000000..97b31af
--- /dev/null
+++ b/repo/system/libretls.xibuild
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+NAME="libretls"
+DESC="port of libtls from libressl to openssl"
+
+MAKEDEPS="make "
+DEPS="openssl cacerts "
+
+PKG_VER=3.5.1
+SOURCE="https://causal.agency/libretls/libretls-$PKG_VER.tar.gz"
+
+prepare () {
+ local _current _rev _age
+ IFS=: read _current _rev _age < LIBTLS_VERSION
+ printf "%d:%d:%d\n" $(( $_current - 18 )) $_rev $_age > LIBTLS_VERSION
+
+ autoreconf
+}
+
+build () {
+ ./configure \
+ --prefix=/usr \
+ --bindir=/usr/bin \
+ --sysconfdir=/etc \
+ --disable-static
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+}
diff --git a/repo/system/menu-cache.xibuild b/repo/system/menu-cache.xibuild
new file mode 100644
index 0000000..6183364
--- /dev/null
+++ b/repo/system/menu-cache.xibuild
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+NAME="menu-cache"
+DESC="Caching mechanism for freedesktop.org compliant menus"
+
+MAKEDEPS="make libfm-extra"
+DEPS="glib "
+
+PKG_VER=1.1.0
+SOURCE="https://downloads.sourceforge.net/lxde/menu-cache-$PKG_VER.tar.xz"
+ADDITIONAL="menu-cache-1.1.0-0001-Support-gcc10-compilation.patch "
+
+prepare () {
+ apply_patches
+}
+
+build () {
+ ./configure \
+ --prefix=/usr \
+ --bindir=/usr/bin \
+ --sysconfdir=/etc \
+ --disable-static
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+}
diff --git a/repo/system/nodejs.xibuild b/repo/system/nodejs.xibuild
new file mode 100644
index 0000000..b4918c8
--- /dev/null
+++ b/repo/system/nodejs.xibuild
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+NAME="nodejs"
+DESC="JavaScript runtime built on V8 engine - LTS version"
+
+MAKEDEPS="make "
+DEPS="brotli sbase sort c-ares cacerts openssl musl libnghttp zlib "
+
+PKG_VER=16.14.2
+SOURCE="https://nodejs.org/dist/v$PKG_VER/node-v$PKG_VER.tar.gz"
+ADDITIONAL="fix-build-with-system-c-ares.patch disable-running-gyp-on-shared-deps.patch "
+
+prepare () {
+ apply_patches
+}
+
+build () {
+
+ python3 configure.py --prefix=/usr \
+ --shared-brotli \
+ --shared-zlib \
+ --shared-openssl \
+ --shared-cares \
+ --shared-nghttp2 \
+ --ninja \
+ --openssl-use-def-ca-store \
+ --with-icu-default-data-dir=$(icu-config --icudatadir) \
+ --with-intl=small-icu \
+ --without-corepack \
+ --without-npm
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+}
diff --git a/repo/system/openntpd.xibuild b/repo/system/openntpd.xibuild
new file mode 100644
index 0000000..5dfd7e9
--- /dev/null
+++ b/repo/system/openntpd.xibuild
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+NAME="openntpd"
+DESC="Lightweight NTP server ported from OpenBSD"
+
+MAKEDEPS="make "
+DEPS="libretls "
+
+PKG_VER=6.8p1
+SOURCE="https://ftp.openbsd.org/pub/OpenBSD/OpenNTPD/openntpd-$PKG_VER.tar.gz"
+ADDITIONAL="libtls-standalone.patch ntp-user.patch
+openntpd.confd
+openntpd.initd
+"
+
+prepare () {
+ apply_patches
+ autoreconf -vif
+}
+
+build () {
+ ./configure \
+ --prefix=/usr \
+ --bindir=/usr/bin \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/share/man \
+ --disable-static \
+ --enable-https-constraint \
+ --with-privsep-user=ntp
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+
+ mkdir -p "$PKG_DEST/var/empty"
+ install -Dm755 "openntpd.initd" $PKG_DEST/etc/init.d/openntpd
+ install -Dm755 "openntpd.confd" $PKG_DEST/etc/conf.d/openntpd
+}
+
+postinstall () {
+
+ /usr/sbin/groupadd -fg 129 ntp &&
+ /usr/sbin/useradd -c "ntp daemon owner" -d /var/lib/ntp -u 117 \
+ -g ntp -s /bin/false ntp
+
+ rc-update add openntpd
+}
diff --git a/repo/system/shared-mime-info.xibuild b/repo/system/shared-mime-info.xibuild
index e5d804d..cb6b887 100644
--- a/repo/system/shared-mime-info.xibuild
+++ b/repo/system/shared-mime-info.xibuild
@@ -9,7 +9,7 @@ DEPS="sbase glib libxml2 musl pkg-config "
PKG_VER=2.2
SOURCE="https://gitlab.freedesktop.org/xdg/shared-mime-info/-/archive/$PKG_VER/shared-mime-info-$PKG_VER.tar.gz"
ADDITIONAL="
-https://raw.githubusercontent.com/archlinux/svntogit-packages/packages/shared-mime-info/trunk/MR_162.patch
+ https://raw.githubusercontent.com/archlinux/svntogit-packages/packages/shared-mime-info/trunk/MR_162.patch
"
prepare () {
@@ -22,7 +22,6 @@ build () {
meson --prefix=/usr \
-Dupdate-mimedb=false \
.. &&
- sed -i "s/xmlto /xmlto --skip-validation /g" build.ninja
ninja
}
@@ -30,3 +29,6 @@ package () {
DESTDIR=$PKG_DEST ninja install
}
+postinstall () {
+ update-mime-database /usr/share/mime
+}
diff --git a/repo/system/tzdata.xibuild b/repo/system/tzdata.xibuild
new file mode 100644
index 0000000..0813733
--- /dev/null
+++ b/repo/system/tzdata.xibuild
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+NAME="tzdata"
+DESC="Timezone data"
+
+MAKEDEPS="cmake "
+DEPS="musl "
+
+PKG_VER=2022a
+SOURCE="https://www.iana.org/time-zones/repository/releases/tzdata$PKG_VER.tar.gz"
+tzcodever=2022a
+ptzver=0.5
+
+ADDITIONAL="
+https://www.iana.org/time-zones/repository/releases/tzcode$tzcodever.tar.gz
+https://dev.alpinelinux.org/archive/posixtz/posixtz-$ptzver.tar.xz
+0002-fix-implicit-declaration-warnings-by-including-strin.patch 0001-posixtz-ensure-the-file-offset-we-pass-to-lseek-is-o.patch
+"
+
+timezones="africa antarctica asia australasia europe northamerica \
+ southamerica etcetera backward factory"
+
+prepare () {
+ tar xf tzcode$tzcodever.tar.gz
+ tar xf posixtz-$ptzver.tar.xz
+ apply_patches
+}
+
+
+build() {
+ make cc="${CC:-gcc}" CFLAGS="$CFLAGS -DHAVE_STDINT_H=1"
+ TZDIR="/usr/share/zoneinfo"
+
+ cd posixtz-$ptzver
+ make posixtz
+ cd ..
+}
+
+package () {
+ ./zic -b fat -y ./yearistype -d "$PKG_DEST"/usr/share/zoneinfo $timezones
+ ./zic -b fat -y ./yearistype -d "$PKG_DEST"/usr/share/zoneinfo/right -L leapseconds $timezones
+
+ ./zic -b fat -y ./yearistype -d "$PKG_DEST"/usr/share/zoneinfo -p America/New_York
+ install -m444 -t "$PKG_DEST"/usr/share/zoneinfo iso3166.tab zone1970.tab zone.tab
+
+ mkdir -p "$PKG_DEST"/usr/sbin
+ install -m755 zic zdump "$PKG_DEST"/usr/sbin
+
+ mkdir -p "$PKG_DEST"/usr/share/man/man8
+ install -m644 zic.8 zdump.8 "$PKG_DEST"/usr/share/man/man8
+
+ rm -f "$PKG_DEST"/usr/share/zoneinfo/localtime
+ install -Dm755 posixtz-$ptzver/posixtz \
+ "$PKG_DEST"/usr/bin/posixtz
+
+}
diff --git a/repo/util/fzf.xibuild b/repo/util/fzf.xibuild
index a144f28..6926f2f 100644
--- a/repo/util/fzf.xibuild
+++ b/repo/util/fzf.xibuild
@@ -10,6 +10,7 @@ DESC="Command-line fuzzy finder"
prepare () {
sed -i 's/-w /-w -linkmode external /' Makefile
+ sed -i '61s,.*, defaultCommand = `command find -L . -mindepth 1 -path "*/\.*" -prune -o -type f -print -o -type l -print 2> /dev/null | cut -b3-`,' src/constants.go
}
build () {
diff --git a/repo/util/gawk.xibuild b/repo/util/gawk.xibuild
index 76abe77..c2f3d05 100644
--- a/repo/util/gawk.xibuild
+++ b/repo/util/gawk.xibuild
@@ -14,4 +14,5 @@ build () {
package () {
make DESTDIR=$PKG_DEST install
+
}
diff --git a/repo/util/inetutils.xibuild b/repo/util/inetutils.xibuild
index 485f7c7..6e7ed88 100644
--- a/repo/util/inetutils.xibuild
+++ b/repo/util/inetutils.xibuild
@@ -25,4 +25,5 @@ build () {
package () {
make DESTDIR=$PKG_DEST install
rm $PKG_DEST/usr/bin/hostname
+ chmod u+s $PKG_DEST/usr/bin/ping
}
diff --git a/repo/util/openssh.xibuild b/repo/util/openssh.xibuild
index c60a2ed..1430347 100644
--- a/repo/util/openssh.xibuild
+++ b/repo/util/openssh.xibuild
@@ -1,12 +1,14 @@
#!/bin/sh
MAKEDEPS="make "
-DEPS="musl krb5 openssl libedit ldns libxcrypt zlib pam"
+DEPS="musl krb5 openssl libedit ldns libxcrypt zlib pam argp-standalone"
PKG_VER=8.8p1
SOURCE=https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-$PKG_VER.tar.gz
DESC="Premier connectivity tool for remote login with the SSH protocol"
+ADDITIONAL="sshd.initd sshd.confd"
+
build () {
./configure --prefix=/usr \
--sysconfdir=/etc/ssh \
@@ -21,12 +23,14 @@ build () {
package () {
make DESTDIR=$PKG_DEST install
- install -m755 contrib/ssh-copy-id $PKG_DEST/usr/bin
+ install -Dm755 contrib/ssh-copy-id $PKG_DEST/usr/bin
- install -m644 contrib/ssh-copy-id.1 \
+ install -Dm644 contrib/ssh-copy-id.1 \
$PKG_DEST/usr/share/man/man1
- install -m755 -d $PKG_DEST/usr/share/doc/openssh-$PKG_VER
- install -m644 INSTALL LICENCE OVERVIEW README* \
+ install -Dm755 -d $PKG_DEST/usr/share/doc/openssh-$PKG_VER
+ install -Dm644 INSTALL LICENCE OVERVIEW README* \
$PKG_DEST/usr/share/doc/openssh-$PKG_VER
+ install -Dm755 sshd.initd $PKG_DEST/etc/init.d/sshd
+ install -Dm755 sshd.confd $PKG_DEST/etc/conf.d/sshd
}
diff --git a/repo/x11/adwaita-icon-theme.xibuild b/repo/x11/adwaita-icon-theme.xibuild
new file mode 100644
index 0000000..c87bd79
--- /dev/null
+++ b/repo/x11/adwaita-icon-theme.xibuild
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+NAME="adwaita-icon-theme"
+DESC="Adwaita icon theme"
+
+MAKEDEPS="make "
+DEPS="hicolor-icon-theme "
+
+PKG_VER=42.0
+SOURCE="https://download.gnome.org/sources/adwaita-icon-theme/${PKG_VER%.*}/adwaita-icon-theme-$PKG_VER.tar.xz"
+
+build () {
+ ./configure \
+ --prefix=/usr \
+ --bindir=/usr/bin \
+ --sysconfdir=/etc \
+ --disable-static
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+}
+
+postinstall () {
+ gtk-update-icon-cache /usr/share/icons/Adwaita/
+}
diff --git a/repo/x11/gdk-pixbuf.xibuild b/repo/x11/gdk-pixbuf.xibuild
index 66d5a0f..fe704e9 100644
--- a/repo/x11/gdk-pixbuf.xibuild
+++ b/repo/x11/gdk-pixbuf.xibuild
@@ -3,22 +3,35 @@
NAME="gdk-pixbuf"
DESC="GTK+ image loading library"
-MAKEDEPS="meson ninja "
+MAKEDEPS="meson ninja gobject-introspection"
DEPS="sbase glib shared-mime-info intltool libpng libjpeg-turbo tiff musl"
PKG_VER=2.42.8
SOURCE="https://download.gnome.org/sources/gdk-pixbuf/${PKG_VER%.*}/gdk-pixbuf-$PKG_VER.tar.xz"
+ADDITIONAL="disable-tests.patch"
+
+prepare () {
+ touch gdk-pixbuf/loaders.cache
+}
+
build () {
mkdir build &&
cd build &&
meson --prefix=/usr \
-Dinstalled_tests=false \
- -Dpng=disabled \
.. &&
ninja
}
+check () {
+ meson test -t 10
+}
+
package () {
DESTDIR=$PKG_DEST ninja install
}
+
+postinstall () {
+ gdk-pixbuf-query-loaders --update-cache
+}
diff --git a/repo/x11/gsettings-desktop-schemas.xibuild b/repo/x11/gsettings-desktop-schemas.xibuild
new file mode 100644
index 0000000..72092d1
--- /dev/null
+++ b/repo/x11/gsettings-desktop-schemas.xibuild
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+NAME="gsettings-desktop-schemas"
+DESC="A collection of GSettings schemas"
+
+MAKEDEPS="meson ninja "
+DEPS="glib base-fonts "
+
+PKG_VER=42.0
+SOURCE="https://download.gnome.org/sources/gsettings-desktop-schemas/${PKG_VER%.*}/gsettings-desktop-schemas-$PKG_VER.tar.xz"
+
+build () {
+ mkdir build &&
+ cd build &&
+ meson --prefix=/usr \
+ .. &&
+ ninja
+}
+
+package () {
+ DESTDIR=$PKG_DEST ninja install
+}
+
+postinstall() {
+ glib-compile-schemas /usr/share/glib-2.0/schemas
+}
diff --git a/repo/x11/gtk2.xibuild b/repo/x11/gtk2.xibuild
new file mode 100644
index 0000000..1798730
--- /dev/null
+++ b/repo/x11/gtk2.xibuild
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+NAME="gtk2"
+DESC="The GTK+ Toolkit (v2)"
+
+MAKEDEPS="meson ninja iso-codes libpng shared-mime-info"
+DEPS="atk at-spi2-atk sbase cairo gobject-introspection fontconfig fribidi gdk-pixbuf glib harfbuzz libepoxy intltool libx11 libxcomposite libxcursor libxdamage libxext libxfixes libxi libxinerama libxkbcommon libxrandr musl pango shared-mime-info wayland "
+
+PKG_VER=2.24.33
+SOURCE="https://download.gnome.org/sources/gtk+/${PKG_VER%.*}/gtk+-$PKG_VER.tar.xz"
+
+prepare () {
+ # don't build demos
+ sed -e "s/^\(SRC_SUBDIRS =.*\)demos\(.*\)$/\1\2/" -i Makefile.am Makefile.in
+ aclocal -I m4
+ autoreconf
+ automake --add-missing
+}
+
+build () {
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --with-xinput=yes \
+ --without-libjasper \
+ --with-included-loaders=png \
+ --with-gdktarget=x11 \
+ --enable-man
+
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+}
+
+postinstall () {
+ /usr/bin/gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules
+ /usr/bin/gdk-pixbuf-query-loaders > /etc/gtk-2.0/gdk-pixbuf.loaders
+}
diff --git a/repo/x11/gtk3.xibuild b/repo/x11/gtk3.xibuild
new file mode 100644
index 0000000..14e4989
--- /dev/null
+++ b/repo/x11/gtk3.xibuild
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+NAME="gtk3"
+DESC="The GTK+ Toolkit (v3)"
+
+MAKEDEPS="meson ninja iso-codes gtk2"
+DEPS="atk at-spi2-atk sbase cairo gobject-introspection fontconfig fribidi gdk-pixbuf glib harfbuzz libepoxy intltool libx11 libxcomposite libxcursor libxdamage libxext libxfixes libxi libxinerama libxkbcommon libxrandr musl pango shared-mime-info wayland adwaita-icon-theme gsettings-desktop-schemas"
+
+PKG_VER=3.24.33
+SOURCE="https://download.gnome.org/sources/gtk+/${PKG_VER%.*}/gtk+-$PKG_VER.tar.xz"
+
+
+prepare () {
+ # don't build demos
+ sed -e "s/^\(SRC_SUBDIRS =.*\)demos\(.*\)$/\1\2/" -i Makefile.am Makefile.in
+ aclocal -I m4
+ autoreconf
+ automake --add-missing
+}
+
+build () {
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --with-xinput=yes \
+ --without-libjasper \
+ --with-included-loaders=png \
+ --with-gdktarget=x11 \
+ --enable-man
+
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+}
+
+postinstall () {
+ [ -d /etc/gtk-3.0 ] || mkdir - /etc/gtk-3.0
+ /usr/bin/gtk-query-immodules-3.0 > /etc/gtk-3.0/gtk.immodules
+ /usr/bin/gdk-pixbuf-query-loaders > /etc/gtk-3.0/gdk-pixbuf.loaders
+}
diff --git a/repo/x11/harfbuzz.xibuild b/repo/x11/harfbuzz.xibuild
index aa876b3..d86a83e 100644
--- a/repo/x11/harfbuzz.xibuild
+++ b/repo/x11/harfbuzz.xibuild
@@ -3,8 +3,8 @@
NAME="harfbuzz"
DESC="Text shaping library"
-MAKEDEPS="meson ninja gtk-doc python-pygments"
-DEPS="freetype2 glib graphite musl"
+MAKEDEPS="meson ninja gtk-doc python-pygments gobject-introspection"
+DEPS="freetype2 glib graphite musl "
PKG_VER=4.2.0
SOURCE="https://github.com/harfbuzz/harfbuzz/archive/$PKG_VER.tar.gz"
@@ -13,6 +13,7 @@ build () {
mkdir build &&
cd build &&
meson --prefix=/usr \
+ -Ddefault_library=shared \
-Dglib=enabled \
-Dgobject=enabled \
-Dgraphite=enabled \
diff --git a/repo/x11/hicolor-icon-theme.xibuild b/repo/x11/hicolor-icon-theme.xibuild
new file mode 100644
index 0000000..3d51994
--- /dev/null
+++ b/repo/x11/hicolor-icon-theme.xibuild
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+NAME="hicolor-icon-theme"
+DESC="Freedesktop.org Hicolor icon theme"
+
+MAKEDEPS="make "
+DEPS="musl "
+
+PKG_VER=0.17
+SOURCE="https://icon-theme.freedesktop.org/releases/hicolor-icon-theme-$PKG_VER.tar.xz"
+
+build () {
+ ./configure \
+ --prefix=/usr
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST install
+}
+
+postinstall () {
+ gtk-update-icon-cache /usr/share/icons/hicolor/
+}
diff --git a/repo/x11/libva.xibuild b/repo/x11/libva.xibuild
index 249fd3f..7d6c66b 100644
--- a/repo/x11/libva.xibuild
+++ b/repo/x11/libva.xibuild
@@ -9,10 +9,14 @@ PKG_VER=2.13.0
SOURCE=https://github.com/intel/libva/releases/download/$PKG_VER/libva-$PKG_VER.tar.bz2
build () {
- ./configure $XORG_CONFIG
- make
+ mkdir build &&
+ cd build
+ meson --prefix=/usr \
+ -Dwith_glx=yes \
+ -Dwith_wayland=yes
+ ninja
}
package () {
- make DESTDIR=$PKG_DEST install
+ DESTDIR=$PKG_DEST ninja install
}
diff --git a/repo/x11/maim.xibuild b/repo/x11/maim.xibuild
new file mode 100644
index 0000000..4f93af0
--- /dev/null
+++ b/repo/x11/maim.xibuild
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+NAME="maim"
+DESC="Utility that takes screenshots of your desktop"
+
+MAKEDEPS="cmake "
+DEPS="mesa icu libxrender libxrandr libxcomposite libjpeg-turbo libpng libwebp slop glm"
+
+PKG_VER=5.7.4
+SOURCE="https://github.com/naelstrof/maim/archive/v$PKG_VER.tar.gz"
+
+build () {
+ cmake -B build -G Ninja \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DBUILD_STATIC_LIBS=OFF
+ cmake --build build
+}
+
+package () {
+ DESTDIR="$PKG_DEST" cmake --install build
+}
diff --git a/repo/x11/mesa.xibuild b/repo/x11/mesa.xibuild
index 3a5bcbf..1177345 100644
--- a/repo/x11/mesa.xibuild
+++ b/repo/x11/mesa.xibuild
@@ -31,8 +31,15 @@ build () {
--buildtype=release \
-Ddri-drivers=$DRI_DRIVERS \
-Dgallium-drivers=$GALLIUM_DRV \
+ -Dplatforms=x11,wayland \
-Dgallium-nine=false \
-Dglx=dri \
+ -Dopengl=true \
+ -Dosmesa=true \
+ -Dshared-glapi=enabled \
+ -Degl=enabled \
+ -Dgles1=disabled \
+ -Dgles2=disabled \
-Dvalgrind=disabled \
-Dlibunwind=disabled \
.. &&
diff --git a/repo/x11/pango.xibuild b/repo/x11/pango.xibuild
index 03458aa..8b507dc 100644
--- a/repo/x11/pango.xibuild
+++ b/repo/x11/pango.xibuild
@@ -3,7 +3,7 @@
NAME="pango"
DESC="library for layout and rendering of text"
-MAKEDEPS="meson ninja"
+MAKEDEPS="meson ninja python-pygments git"
DEPS="sbase cairo fontconfig freetype2 glib libx11 libxft libxrender musl fribidi harfbuzz"
PKG_VER=1.50.5
@@ -17,7 +17,11 @@ prepare () {
build () {
mkdir build &&
cd build &&
- meson --prefix=/usr .. &&
+ meson --prefix=/usr \
+ -Dintrospection=enabled \
+ -Dgtk_doc=false \
+ ..
+
ninja
}
diff --git a/repo/x11/sdl2.xibuild b/repo/x11/sdl2.xibuild
new file mode 100644
index 0000000..0f0778f
--- /dev/null
+++ b/repo/x11/sdl2.xibuild
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+NAME="sdl2"
+DESC="development library designed to provide low level access to audio, keyboard, mouse, joystick and graphics"
+
+MAKEDEPS="cmake "
+DEPS="alsa-lib eudev libx11 libxext libxcursor libxi libxkbcommon libxrender libxscrnsaver libusb pulseaudio wayland "
+
+PKG_VER=2.0.20
+SOURCE="https://www.libsdl.org/release/SDL2-$PKG_VER.tar.gz"
+ADDITIONAL="directfb-cflags.patch "
+
+build () {
+ cmake -B build -G Ninja \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DBUILD_STATIC_LIBS=OFF \
+ -DSDL_TEST=OFF \
+ -DSDL_ALSA=ON \
+ -DSDL_CLOCK_GETTIME=ON \
+ -DSDL_ARTS=OFF \
+ -DSDL_ESD=OFF \
+ -DSDL_NAS=OFF \
+ -DSDL_RPATH=OFF \
+ -DSDL_X11=ON \
+ -DSDL_DIRECTFB=ON \
+ -DSDL_WAYLAND=ON \
+ -DSDL_STATIC=OFF \
+ -DSDL_SHARED=ON \
+ -DSDL_PIPEWIRE_SHARED=ON \
+ -DSDL_PULSEAUDIO_SHARED=ON
+ cmake --build build
+}
+
+package () {
+ DESTDIR="$PKG_DEST" cmake --install build
+}
diff --git a/repo/x11/slop.xibuild b/repo/x11/slop.xibuild
new file mode 100644
index 0000000..263118b
--- /dev/null
+++ b/repo/x11/slop.xibuild
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+NAME="slop"
+DESC="Application that queries for a selection from the user and prints the region to stdout"
+
+MAKEDEPS="cmake "
+DEPS="icu libice libsm libx11 libxext libxrender glm glew"
+
+PKG_VER=7.6
+SOURCE="https://github.com/naelstrof/slop/archive/v$PKG_VER.tar.gz"
+
+build () {
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DBUILD_STATIC_LIBS=OFF .
+ make
+}
+
+package () {
+ make DESTDIR="$PKG_DEST" install
+}
diff --git a/repo/x11/xf86-video-intel.xibuild b/repo/x11/xf86-video-intel.xibuild
index 2b46e0c..ac5fce2 100644
--- a/repo/x11/xf86-video-intel.xibuild
+++ b/repo/x11/xf86-video-intel.xibuild
@@ -6,17 +6,23 @@ DEPS="xorg-server mesa libxvmc pixman xcb-util"
DESC="X.org intel video driver"
PKG_VER=2.99.917
-# TODO switch to official source not blfs
-SOURCE=https://anduin.linuxfromscratch.org/BLFS/xf86-video-intel/xf86-video-intel-20210222.tar.xz
-#BRANCH=$PKG_VER
+_pkgver=31486f40f8e8f8923ca0799aea84b58799754564
+SOURCE=https://github.com/freedesktop/xorg-xf86-video-intel/archive/$_pkgver.zip
+
+prepare () {
+ autoreconf -vif
+}
build () {
- ./autogen.sh
- ./configure $XORG_CONFIG \
- --enable-kms-only \
- --enable-uxa \
- --mandir=/usr/share/man &&
- make
+ export LDFLAGS="$LDFLAGS -Wl,-z,lazy"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --enable-xvmc \
+ --disable-selective-werror \
+ --with-default-dri=3
+ make
}
package () {
@@ -26,12 +32,13 @@ package () {
$PKG_DEST/usr/share/man/man1/intel-virtual-output.1 &&
sed -i '/\.TH/s/4/1/' $PKG_DEST/usr/share/man/man1/intel-virtual-output.1
+
mkdir -p $PKG_DEST/etc/X11/xorg.conf.d
cat >> $PKG_DEST/etc/X11/xorg.conf.d/20-intel.conf << "EOF"
Section "Device"
Identifier "Intel Graphics"
Driver "intel"
- #Option "DRI" "2" # DRI3 is default
+ #Option "DRI" "3" # DRI3 is default
#Option "AccelMethod" "sna" # default
#Option "AccelMethod" "uxa" # fallback
EndSection
diff --git a/repo/x11/xorg-server.xibuild b/repo/x11/xorg-server.xibuild
index c65f6fe..11553aa 100644
--- a/repo/x11/xorg-server.xibuild
+++ b/repo/x11/xorg-server.xibuild
@@ -11,8 +11,33 @@ build () {
cd build &&
meson --prefix=$XORG_PREFIX \
- -Dsuid_wrapper=true \
- -Dxkb_output_dir=/var/lib/xkb &&
+ -Dxorg=true \
+ -Dxephyr=true \
+ -Dglamor=true \
+ -Dxnest=true \
+ -Dxvfb=true \
+ -Dxwin=false \
+ -Dglx=true \
+ -Dxdmcp=true \
+ -Dxdm-auth-1=true \
+ -Dxcsecurity=true \
+ -Dsecure-rpc=false \
+ -Dipv6=true \
+ -Dxkb_dir=/usr/share/X11/xkb \
+ -Dxkb_output_dir=/var/lib/xkb \
+ -Dlisten_tcp=false \
+ -Dlisten_unix=true \
+ -Dlisten_local=true \
+ -Dsuid_wrapper=true \
+ -Dpciaccess=true \
+ -Dudev=true \
+ -Dhal=false \
+ -Dsystemd_logind=false \
+ -Ddpms=true \
+ -Ddri1=true \
+ -Ddri2=true \
+ -Ddri3=true \
+ ..
ninja
}
diff --git a/repo/xi/xipkg.xibuild b/repo/xi/xipkg.xibuild
index 6165734..be1e45f 100644
--- a/repo/xi/xipkg.xibuild
+++ b/repo/xi/xipkg.xibuild
@@ -1,9 +1,9 @@
#!/bin/sh
MAKEDEPS="make"
-DEPS="openssl curl dash xiutils findutils diffutils sed xichroot grep base64"
+DEPS="openssl curl dash xiutils findutils diffutils sed xichroot grep base64 sort"
-PKG_VER=1.2.2
+PKG_VER=1.3.1
SOURCE=https://git.davidovski.xyz/xilinux/xipkg.git
BRANCH="v$PKG_VER"
diff --git a/repo/xi/xiutils.xibuild b/repo/xi/xiutils.xibuild
index 0c8ae25..3d69986 100644
--- a/repo/xi/xiutils.xibuild
+++ b/repo/xi/xiutils.xibuild
@@ -3,7 +3,7 @@
MAKEDEPS="make gcc"
DEPS="musl sh"
-PKG_VER=1.2.4
+PKG_VER=1.3.1
SOURCE=https://git.davidovski.xyz/xilinux/xiutils.git
BRANCH="v$PKG_VER"
diff --git a/skip/libssh.xibuild b/skip/libssh.xibuild
new file mode 100644
index 0000000..0c35d14
--- /dev/null
+++ b/skip/libssh.xibuild
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+NAME="libssh"
+DESC="Library for accessing ssh client services through C libraries"
+
+MAKEDEPS="cmake argp-standalone"
+DEPS="openssl "
+
+PKG_VER=0.9.6
+SOURCE="https://www.libssh.org/files/${PKG_VER%.*}/libssh-$PKG_VER.tar.xz"
+
+build () {
+ cmake -B build \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DBUILD_STATIC_LIBS=OFF
+ -DWITH_GSSAPI=OFF
+ -DUNIT_TESTING=OFF
+ cmake --build build
+}
+
+package () {
+ DESTDIR="$PKG_DEST" cmake --install build
+}
diff --git a/skip/x264.xibuild b/skip/x264.xibuild
new file mode 100644
index 0000000..4fdd0f6
--- /dev/null
+++ b/skip/x264.xibuild
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+NAME="x264"
+DESC="Free library for encoding H264/AVC video streams"
+
+MAKEDEPS="make libx11 perl nasm sbase bash"
+DEPS="musl "
+
+PKG_VER=0.163_git20210613
+gitrev=master
+SOURCE="https://code.videolan.org/videolan/x264/-/archive/$gitrev/x264-$gitrev.tar.gz"
+
+build () {
+ ./configure \
+ --prefix=/usr
+ --bindir=/usr/bin \
+ --sysconfdir=/etc \
+ --disable-static \
+ --enable-shared \
+ --enable-pic \
+ --extra-cflags=-fno-agressive-loop-optimizations
+ make
+}
+
+package () {
+ make DESTDIR=$PKG_DEST bindir=/usr/bin libdir=/usr/lib includedir=/usr/include install
+}
diff --git a/templates/cmake.xibuild b/templates/cmake.xibuild
index 1591035..15c7133 100644
--- a/templates/cmake.xibuild
+++ b/templates/cmake.xibuild
@@ -1,5 +1,5 @@
build () {
- cmake -B build -G Ninja \
+ cmake -B build \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=/usr/lib \
-DBUILD_SHARED_LIBS=True \
diff --git a/templates/configure.xibuild b/templates/configure.xibuild
index d6278ad..1951f3f 100644
--- a/templates/configure.xibuild
+++ b/templates/configure.xibuild
@@ -1,6 +1,6 @@
build () {
./configure \
- --prefix=/usr
+ --prefix=/usr \
--bindir=/usr/bin \
--sysconfdir=/etc \
--disable-static
diff --git a/templates/make.xibuild b/templates/make.xibuild
index 82cdeb9..03b5981 100644
--- a/templates/make.xibuild
+++ b/templates/make.xibuild
@@ -3,5 +3,5 @@ build () {
}
package () {
- make PREFIX=/usr DESTDIR=$PKGDEST install
+ make PREFIX=/usr DESTDIR=$PKG_DEST install
}
diff --git a/wishlist.md b/wishlist.md
index e1217de..6da19db 100644
--- a/wishlist.md
+++ b/wishlist.md
@@ -9,10 +9,10 @@
[ ] pavucontrol
[ ] chromium
[ ] firefox
-[ ] ffmpeg
-[?] dmenu
-[?] rofi
-[ ] mpv
+[x] ffmpeg
+[x] dmenu
+[x] rofi
+[x] mpv
[ ] sxiv
[?] feh
[ ] gimp
@@ -29,9 +29,9 @@
[ ] ImageMagick
[x] nmap
[ ] exiftool
-[?] mpc
+[x] mpc
-[ ] nvidia drivers (LLLLL)
+[-] nvidia drivers (LLLLL)
[x] working xorg
[x] sshd (openssh)
[ ] broadcom wl drivers
@@ -39,5 +39,9 @@
!!
-[ ] lame
-[ ] mpd-mpc
+[x] lame
+
+[ ] the one true awk
+[ ] mksh by default
+[ ] full build using clang
+