Binary release v8.0.0
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..a1492fd7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+limine
+limine.exe
diff --git a/BOOTAA64.EFI b/BOOTAA64.EFI
new file mode 100644
index 00000000..bc5677af
Binary files /dev/null and b/BOOTAA64.EFI differ
diff --git a/BOOTIA32.EFI b/BOOTIA32.EFI
new file mode 100644
index 00000000..8bea4b56
Binary files /dev/null and b/BOOTIA32.EFI differ
diff --git a/BOOTLOONGARCH64.EFI b/BOOTLOONGARCH64.EFI
new file mode 100644
index 00000000..c56547a4
Binary files /dev/null and b/BOOTLOONGARCH64.EFI differ
diff --git a/BOOTRISCV64.EFI b/BOOTRISCV64.EFI
new file mode 100644
index 00000000..33fc4845
Binary files /dev/null and b/BOOTRISCV64.EFI differ
diff --git a/BOOTX64.EFI b/BOOTX64.EFI
new file mode 100644
index 00000000..4a69fe3b
Binary files /dev/null and b/BOOTX64.EFI differ
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..fad56e13
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,22 @@
+Copyright (C) 2019-2024 mintsuki and contributors.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000..26e60279
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,39 @@
+CC ?= cc
+STRIP ?= strip
+INSTALL ?= ./install-sh
+
+PREFIX ?= /usr/local
+
+CFLAGS ?= -g -O2 -pipe
+
+.PHONY: all
+all: limine
+
+.PHONY: install
+install: all
+ $(INSTALL) -d '$(DESTDIR)$(PREFIX)/share'
+ $(INSTALL) -d '$(DESTDIR)$(PREFIX)/share/limine'
+ $(INSTALL) -m 644 limine-bios.sys '$(DESTDIR)$(PREFIX)/share/limine/'
+ $(INSTALL) -m 644 limine-bios-cd.bin '$(DESTDIR)$(PREFIX)/share/limine/'
+ $(INSTALL) -m 644 limine-uefi-cd.bin '$(DESTDIR)$(PREFIX)/share/limine/'
+ $(INSTALL) -m 644 limine-bios-pxe.bin '$(DESTDIR)$(PREFIX)/share/limine/'
+ $(INSTALL) -m 644 BOOTX64.EFI '$(DESTDIR)$(PREFIX)/share/limine/'
+ $(INSTALL) -m 644 BOOTIA32.EFI '$(DESTDIR)$(PREFIX)/share/limine/'
+ $(INSTALL) -m 644 BOOTAA64.EFI '$(DESTDIR)$(PREFIX)/share/limine/'
+ $(INSTALL) -m 644 BOOTRISCV64.EFI '$(DESTDIR)$(PREFIX)/share/limine/'
+ $(INSTALL) -m 644 BOOTLOONGARCH64.EFI '$(DESTDIR)$(PREFIX)/share/limine/'
+ $(INSTALL) -d '$(DESTDIR)$(PREFIX)/include'
+ $(INSTALL) -m 644 limine.h '$(DESTDIR)$(PREFIX)/include/'
+ $(INSTALL) -d '$(DESTDIR)$(PREFIX)/bin'
+ $(INSTALL) limine '$(DESTDIR)$(PREFIX)/bin/'
+
+.PHONY: install-strip
+install-strip: install
+ $(STRIP) '$(DESTDIR)$(PREFIX)/bin/limine'
+
+.PHONY: clean
+clean:
+ rm -f limine limine.exe
+
+limine: limine.c
+ $(CC) $(CFLAGS) -Wall -Wextra $(WERROR_FLAG) $(CPPFLAGS) $(LDFLAGS) -std=c99 limine.c $(LIBS) -o $@
diff --git a/install-sh b/install-sh
new file mode 100755
index 00000000..7c56c9c0
--- /dev/null
+++ b/install-sh
@@ -0,0 +1,541 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2023-11-23.18; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# 'make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+tab=' '
+nl='
+'
+IFS=" $tab$nl"
+
+# Set DOITPROG to "echo" to test this script.
+
+doit=${DOITPROG-}
+doit_exec=${doit:-exec}
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+# Create dirs (including intermediate dirs) using mode 755.
+# This is like GNU 'install' as of coreutils 8.32 (2020).
+mkdir_umask=22
+
+backupsuffix=
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+is_target_a_directory=possibly
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -p pass -p to $cpprog.
+ -s $stripprog installed files.
+ -S SUFFIX attempt to back up existing files, with suffix SUFFIX.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+
+By default, rm is invoked with -f; when overridden with RMPROG,
+it's up to you to specify -f if you want it.
+
+If -S is not specified, no backups are attempted.
+
+Report bugs to <bug-automake@gnu.org>.
+GNU Automake home page: <https://www.gnu.org/software/automake/>.
+General help using GNU software: <https://www.gnu.org/gethelp/>."
+
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
+
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ case $mode in
+ *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
+
+ -o) chowncmd="$chownprog $2"
+ shift;;
+
+ -p) cpprog="$cpprog -p";;
+
+ -s) stripcmd=$stripprog;;
+
+ -S) backupsuffix="$2"
+ shift;;
+
+ -t)
+ is_target_a_directory=always
+ dst_arg=$2
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ shift;;
+
+ -T) is_target_a_directory=never;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+ shift
+done
+
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+ if test -n "$dst_arg"; then
+ echo "$0: target directory not allowed when installing a directory." >&2
+ exit 1
+ fi
+fi
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ done
+fi
+
+if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call 'install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+if test -z "$dir_arg"; then
+ if test $# -gt 1 || test "$is_target_a_directory" = always; then
+ if test ! -d "$dst_arg"; then
+ echo "$0: $dst_arg: Is not a directory." >&2
+ exit 1
+ fi
+ fi
+fi
+
+if test -z "$dir_arg"; then
+ do_exit='(exit $ret); exit $ret'
+ trap "ret=129; $do_exit" 1
+ trap "ret=130; $do_exit" 2
+ trap "ret=141; $do_exit" 13
+ trap "ret=143; $do_exit" 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names problematic for 'test' and other utilities.
+ case $src in
+ -* | [=\(\)!]) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ # Don't chown directories that already exist.
+ if test $dstdir_status = 0; then
+ chowncmd=""
+ fi
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+ dst=$dst_arg
+
+ # If destination is a directory, append the input filename.
+ if test -d "$dst"; then
+ if test "$is_target_a_directory" = never; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dstbase=`basename "$src"`
+ case $dst in
+ */) dst=$dst$dstbase;;
+ *) dst=$dst/$dstbase;;
+ esac
+ dstdir_status=0
+ else
+ dstdir=`dirname "$dst"`
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ case $dstdir in
+ */) dstdirslash=$dstdir;;
+ *) dstdirslash=$dstdir/;;
+ esac
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ # The $RANDOM variable is not portable (e.g., dash). Use it
+ # here however when possible just to lower collision chance.
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+
+ trap '
+ ret=$?
+ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
+ exit $ret
+ ' 0
+
+ # Because "mkdir -p" follows existing symlinks and we likely work
+ # directly in world-writeable /tmp, make sure that the '$tmpdir'
+ # directory is successfully created first before we actually test
+ # 'mkdir -p'.
+ if (umask $mkdir_umask &&
+ $mkdirprog $mkdir_mode "$tmpdir" &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ test_tmpdir="$tmpdir/a"
+ ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
+ fi
+ trap '' 0;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ [-=\(\)!]*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ oIFS=$IFS
+ IFS=/
+ set -f
+ set fnord $dstdir
+ shift
+ set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test X"$d" = X && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=${dstdirslash}_inst.$$_
+ rmtmp=${dstdirslash}_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask &&
+ { test -z "$stripcmd" || {
+ # Create $dsttmp read-write so that cp doesn't create it read-only,
+ # which would cause strip to fail.
+ if test -z "$doit"; then
+ : >"$dsttmp" # No need to fork-exec 'touch'.
+ else
+ $doit touch "$dsttmp"
+ fi
+ }
+ } &&
+ $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+ set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ set +f &&
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # If $backupsuffix is set, and the file being installed
+ # already exists, attempt a backup. Don't worry if it fails,
+ # e.g., if mv doesn't support -f.
+ if test -n "$backupsuffix" && test -f "$dst"; then
+ $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
+ fi
+
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC0"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/limine-bios-cd.bin b/limine-bios-cd.bin
new file mode 100644
index 00000000..3404f195
Binary files /dev/null and b/limine-bios-cd.bin differ
diff --git a/limine-bios-hdd.h b/limine-bios-hdd.h
new file mode 100644
index 00000000..9c525fe6
--- /dev/null
+++ b/limine-bios-hdd.h
@@ -0,0 +1,1346 @@
+const uint8_t binary_limine_hdd_bin_data[] = {
+ 0xeb, 0x3c, 0x90, 0x4c, 0x49, 0x4d, 0x49, 0x4e, 0x45, 0x20, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x49, 0x4d, 0x49, 0x4e,
+ 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xfc,
+ 0xea, 0x45, 0x7c, 0x00, 0x00, 0x31, 0xf6, 0x8e, 0xde, 0x8e, 0xc6, 0x8e, 0xd6, 0xbc, 0x00, 0x7c,
+ 0xfb, 0x80, 0xfa, 0x80, 0x0f, 0x82, 0x10, 0x01, 0x80, 0xfa, 0x8f, 0x0f, 0x87, 0x08, 0x01, 0xb4,
+ 0x41, 0xbb, 0xaa, 0x55, 0xcd, 0x13, 0x0f, 0x82, 0xfc, 0x00, 0x81, 0xfb, 0x55, 0xaa, 0x0f, 0x85,
+ 0xf3, 0x00, 0x68, 0x00, 0x70, 0x07, 0xbf, 0xa8, 0x7d, 0x66, 0x8b, 0x05, 0x66, 0x8b, 0x6d, 0x04,
+ 0x31, 0xdb, 0x66, 0x31, 0xc9, 0x8b, 0x4d, 0xfc, 0xe8, 0x55, 0x00, 0x0f, 0x82, 0xd5, 0x00, 0x66,
+ 0x8b, 0x45, 0x08, 0x66, 0x8b, 0x6d, 0x0c, 0x01, 0xcb, 0x8b, 0x4d, 0xfe, 0xe8, 0x41, 0x00, 0x0f,
+ 0x82, 0xc0, 0x00, 0x0f, 0x01, 0x16, 0x4d, 0x7d, 0xfa, 0x0f, 0x20, 0xc0, 0x0f, 0xba, 0xe8, 0x00,
+ 0x0f, 0x22, 0xc0, 0xea, 0x79, 0x7d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x60, 0xbe, 0x00, 0x80, 0xc7, 0x04, 0x10, 0x00, 0xc7, 0x44, 0x02, 0x01, 0x00, 0x89, 0x5c, 0x04,
+ 0x8c, 0x44, 0x06, 0x52, 0x56, 0x66, 0x50, 0x66, 0x55, 0xb4, 0x48, 0xbe, 0x10, 0x80, 0xc7, 0x04,
+ 0x1e, 0x00, 0xcd, 0x13, 0x72, 0x45, 0x8b, 0x6c, 0x18, 0x89, 0xc8, 0x66, 0xc1, 0xe9, 0x10, 0x89,
+ 0xca, 0x31, 0xc9, 0xf7, 0xf5, 0x85, 0xd2, 0x0f, 0x95, 0xc1, 0x01, 0xc1, 0x66, 0x5a, 0x66, 0x58,
+ 0x5e, 0x66, 0xf7, 0xf5, 0x66, 0x89, 0x44, 0x08, 0x66, 0xc7, 0x44, 0x0c, 0x00, 0x00, 0x00, 0x00,
+ 0x5a, 0xb4, 0x42, 0xf8, 0xcd, 0x13, 0x72, 0x13, 0x01, 0x6c, 0x04, 0x66, 0x31, 0xdb, 0x66, 0xff,
+ 0x44, 0x08, 0x0f, 0x90, 0xc3, 0x66, 0x01, 0x5c, 0x0c, 0xe2, 0xe6, 0x61, 0xc3, 0x17, 0x00, 0x4b,
+ 0x7d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0xcf, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
+ 0x93, 0xcf, 0x00, 0x46, 0x46, 0x46, 0x46, 0x46, 0x81, 0xc6, 0x30, 0x4f, 0x68, 0x00, 0xb8, 0x07,
+ 0x26, 0x89, 0x36, 0x00, 0x00, 0xfb, 0xf4, 0xeb, 0xfd, 0xb8, 0x10, 0x00, 0x00, 0x00, 0x8e, 0xd8,
+ 0x8e, 0xc0, 0x8e, 0xe0, 0x8e, 0xe8, 0x8e, 0xd0, 0x81, 0xe2, 0xff, 0x00, 0x00, 0x00, 0x6a, 0x00,
+ 0x52, 0x68, 0x52, 0x47, 0x00, 0x00, 0x68, 0xa0, 0x0a, 0x07, 0x00, 0xe8, 0x60, 0x82, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaa,
+ 0xfc, 0x30, 0xc0, 0xbf, 0x91, 0x0a, 0x07, 0x00, 0xb9, 0x91, 0x0a, 0x07, 0x00, 0x81, 0xe9, 0x91,
+ 0x0a, 0x07, 0x00, 0xf3, 0xaa, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x57, 0x56, 0x0f, 0xb6, 0x74, 0x24,
+ 0x14, 0x8b, 0x7c, 0x24, 0x18, 0xff, 0x74, 0x24, 0x10, 0xff, 0x74, 0x24, 0x10, 0x68, 0x00, 0xf0,
+ 0x00, 0x00, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x83, 0xc4, 0x0c, 0xbc, 0x00, 0xf0, 0x00, 0x00, 0x31,
+ 0xed, 0x57, 0x56, 0x6a, 0x00, 0x68, 0x00, 0xf0, 0x00, 0x00, 0xc3, 0x55, 0x53, 0x57, 0x56, 0x8b,
+ 0x54, 0x24, 0x1c, 0xb8, 0xfd, 0xff, 0xff, 0xff, 0x83, 0xfa, 0x12, 0x0f, 0x82, 0xa2, 0x00, 0x00,
+ 0x00, 0x8b, 0x4c, 0x24, 0x18, 0x80, 0x39, 0x1f, 0x0f, 0x85, 0x95, 0x00, 0x00, 0x00, 0x80, 0x79,
+ 0x01, 0x8b, 0x0f, 0x85, 0x8b, 0x00, 0x00, 0x00, 0x80, 0x79, 0x02, 0x08, 0x0f, 0x85, 0x81, 0x00,
+ 0x00, 0x00, 0x0f, 0xb6, 0x59, 0x03, 0x83, 0xfb, 0x1f, 0x77, 0x78, 0x8d, 0x71, 0x0a, 0xf6, 0xc3,
+ 0x04, 0x74, 0x0e, 0x0f, 0xb7, 0x3e, 0x8d, 0x6a, 0xf4, 0x39, 0xfd, 0x72, 0x66, 0x8d, 0x74, 0x3e,
+ 0x02, 0xf6, 0xc3, 0x08, 0x75, 0x04, 0x89, 0xf7, 0xeb, 0x13, 0x89, 0xf5, 0x29, 0xcd, 0x39, 0xd5,
+ 0x73, 0x51, 0x8d, 0x7e, 0x01, 0x45, 0x80, 0x3e, 0x00, 0x89, 0xfe, 0x75, 0xf1, 0x80, 0xfb, 0x10,
+ 0x73, 0x04, 0x89, 0xfd, 0xeb, 0x13, 0x89, 0xfe, 0x29, 0xce, 0x39, 0xd6, 0x73, 0x35, 0x8d, 0x6f,
+ 0x01, 0x46, 0x80, 0x3f, 0x00, 0x89, 0xef, 0x75, 0xf1, 0x83, 0xe3, 0x02, 0x01, 0xeb, 0x01, 0xd1,
+ 0x29, 0xd9, 0x83, 0xf9, 0x08, 0x7c, 0x1c, 0x83, 0xc1, 0xf8, 0x51, 0x53, 0xff, 0x74, 0x24, 0x1c,
+ 0xe8, 0x13, 0x00, 0x00, 0x00, 0x83, 0xc4, 0x0c, 0x31, 0xc9, 0x85, 0xc0, 0x0f, 0x94, 0xc1, 0x8d,
+ 0x44, 0x49, 0xfd, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, 0x55, 0x53, 0x57, 0x56, 0x81, 0xec, 0x44, 0x06,
+ 0x00, 0x00, 0x8b, 0x84, 0x24, 0x58, 0x06, 0x00, 0x00, 0x8b, 0x8c, 0x24, 0x5c, 0x06, 0x00, 0x00,
+ 0x8d, 0x54, 0x24, 0x3c, 0x89, 0x4a, 0xe4, 0x03, 0x8c, 0x24, 0x60, 0x06, 0x00, 0x00, 0x89, 0x4a,
+ 0xe8, 0x31, 0xc9, 0x89, 0x4a, 0xec, 0x89, 0x4a, 0xf0, 0x89, 0x4a, 0xf4, 0x89, 0x42, 0xfc, 0x89,
+ 0x42, 0xf8, 0x8b, 0x54, 0x24, 0x2c, 0x85, 0xd2, 0x7e, 0x0a, 0x8b, 0x44, 0x24, 0x28, 0x89, 0x44,
+ 0x24, 0x0c, 0xeb, 0x4c, 0x8b, 0x74, 0x24, 0x20, 0x8b, 0x44, 0x24, 0x24, 0x8b, 0x4c, 0x24, 0x28,
+ 0x89, 0x4c, 0x24, 0x0c, 0x89, 0xd1, 0x39, 0xc6, 0x74, 0x1e, 0x8d, 0x56, 0x01, 0x89, 0x54, 0x24,
+ 0x20, 0x0f, 0xb6, 0x36, 0xd3, 0xe6, 0x8b, 0x7c, 0x24, 0x0c, 0x09, 0xf7, 0x89, 0x7c, 0x24, 0x0c,
+ 0x89, 0x7c, 0x24, 0x28, 0x89, 0xd6, 0xeb, 0x0a, 0xc7, 0x44, 0x24, 0x30, 0x01, 0x00, 0x00, 0x00,
+ 0x89, 0xc6, 0x8d, 0x51, 0x08, 0x89, 0x54, 0x24, 0x2c, 0x83, 0xf9, 0xf9, 0x89, 0xd1, 0x7c, 0xc6,
+ 0x8b, 0x74, 0x24, 0x0c, 0xd1, 0xee, 0x89, 0x74, 0x24, 0x28, 0x8d, 0x5a, 0xff, 0x89, 0x5c, 0x24,
+ 0x2c, 0x83, 0xfb, 0x01, 0x77, 0x45, 0x8b, 0x4c, 0x24, 0x20, 0x8b, 0x7c, 0x24, 0x24, 0x83, 0xc2,
+ 0xf7, 0x8d, 0x5a, 0x08, 0x39, 0xf9, 0x74, 0x18, 0x8d, 0x41, 0x01, 0x89, 0x44, 0x24, 0x20, 0x0f,
+ 0xb6, 0x29, 0x89, 0xd9, 0xd3, 0xe5, 0x09, 0xee, 0x89, 0x74, 0x24, 0x28, 0x89, 0xc1, 0xeb, 0x0a,
+ 0xc7, 0x44, 0x24, 0x30, 0x01, 0x00, 0x00, 0x00, 0x89, 0xf9, 0x83, 0xc2, 0x10, 0x89, 0x54, 0x24,
+ 0x2c, 0x83, 0xfb, 0xfa, 0x89, 0xda, 0x7c, 0xc9, 0x83, 0xc3, 0x08, 0x89, 0xf1, 0xc1, 0xe9, 0x02,
+ 0x89, 0x4c, 0x24, 0x04, 0x89, 0x4c, 0x24, 0x28, 0x8d, 0x53, 0xfe, 0x89, 0x54, 0x24, 0x2c, 0xb8,
+ 0xfd, 0xff, 0xff, 0xff, 0x83, 0xe6, 0x03, 0x0f, 0x84, 0x7a, 0x04, 0x00, 0x00, 0x83, 0xfe, 0x02,
+ 0x0f, 0x84, 0xe6, 0x00, 0x00, 0x00, 0x83, 0xfe, 0x01, 0x8d, 0xb4, 0x24, 0xa0, 0x02, 0x00, 0x00,
+ 0x0f, 0x85, 0xdf, 0x04, 0x00, 0x00, 0xb8, 0xe0, 0xff, 0xff, 0xff, 0x66, 0xc7, 0x44, 0x04, 0x5c,
+ 0x00, 0x00, 0x83, 0xc0, 0x02, 0x75, 0xf4, 0xc7, 0x44, 0x24, 0x4a, 0x18, 0x00, 0x98, 0x00, 0x66,
+ 0xc7, 0x44, 0x24, 0x4e, 0x70, 0x00, 0xb8, 0xe8, 0xff, 0xff, 0xff, 0x8d, 0x88, 0x18, 0x01, 0x00,
+ 0x00, 0x66, 0x89, 0x8c, 0x44, 0x8c, 0x00, 0x00, 0x00, 0x40, 0x75, 0xef, 0x31, 0xc0, 0x66, 0x89,
+ 0x84, 0x44, 0x8c, 0x00, 0x00, 0x00, 0x40, 0x3d, 0x90, 0x00, 0x00, 0x00, 0x75, 0xf0, 0xb8, 0xf8,
+ 0xff, 0xff, 0xff, 0x8d, 0x88, 0x20, 0x01, 0x00, 0x00, 0x66, 0x89, 0x8c, 0x44, 0xbc, 0x01, 0x00,
+ 0x00, 0x40, 0x75, 0xef, 0xb8, 0x90, 0xff, 0xff, 0xff, 0x8d, 0x88, 0x00, 0x01, 0x00, 0x00, 0x66,
+ 0x89, 0x8c, 0x44, 0x9c, 0x02, 0x00, 0x00, 0x40, 0x75, 0xef, 0xc7, 0x84, 0x24, 0x9c, 0x02, 0x00,
+ 0x00, 0x1d, 0x01, 0x00, 0x00, 0xb8, 0xe0, 0xff, 0xff, 0xff, 0x66, 0xc7, 0x84, 0x04, 0xc0, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x83, 0xc0, 0x02, 0x75, 0xf1, 0x66, 0xc7, 0x84, 0x24, 0xaa, 0x02, 0x00,
+ 0x00, 0x20, 0x00, 0x31, 0xc0, 0x66, 0x89, 0x84, 0x44, 0xc0, 0x02, 0x00, 0x00, 0x40, 0x83, 0xf8,
+ 0x20, 0x75, 0xf2, 0xc7, 0x84, 0x24, 0x00, 0x05, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x8d, 0x4c,
+ 0x24, 0x20, 0x8d, 0x54, 0x24, 0x3c, 0x56, 0xe8, 0x7d, 0x04, 0x00, 0x00, 0x83, 0xc4, 0x04, 0x85,
+ 0xc0, 0x0f, 0x84, 0xe1, 0x03, 0x00, 0x00, 0xe9, 0x09, 0x04, 0x00, 0x00, 0x83, 0xfa, 0x04, 0x77,
+ 0x4d, 0x8b, 0x4c, 0x24, 0x20, 0x8b, 0x74, 0x24, 0x24, 0x83, 0xc3, 0xf6, 0x8d, 0x53, 0x08, 0x39,
+ 0xf1, 0x74, 0x20, 0x8d, 0x79, 0x01, 0x89, 0x7c, 0x24, 0x20, 0x0f, 0xb6, 0x01, 0x89, 0xd1, 0xd3,
+ 0xe0, 0x8b, 0x4c, 0x24, 0x04, 0x09, 0xc1, 0x89, 0x4c, 0x24, 0x04, 0x89, 0x4c, 0x24, 0x28, 0x89,
+ 0xf9, 0xeb, 0x0a, 0xc7, 0x44, 0x24, 0x30, 0x01, 0x00, 0x00, 0x00, 0x89, 0xf1, 0x83, 0xc3, 0x10,
+ 0x89, 0x5c, 0x24, 0x2c, 0x83, 0xfa, 0xfd, 0x89, 0xd3, 0x7c, 0xc1, 0x83, 0xc2, 0x08, 0x8b, 0x74,
+ 0x24, 0x04, 0x89, 0xf3, 0xc1, 0xeb, 0x05, 0x89, 0x5c, 0x24, 0x28, 0x8d, 0x42, 0xfb, 0x89, 0x44,
+ 0x24, 0x2c, 0x83, 0xf8, 0x04, 0x77, 0x4d, 0x8b, 0x4c, 0x24, 0x20, 0x8b, 0x74, 0x24, 0x24, 0x83,
+ 0xc2, 0xf3, 0x8d, 0x42, 0x08, 0x39, 0xf1, 0x74, 0x1c, 0x8d, 0x79, 0x01, 0x89, 0x7c, 0x24, 0x20,
+ 0x89, 0xdd, 0x0f, 0xb6, 0x19, 0x89, 0xc1, 0xd3, 0xe3, 0x09, 0xdd, 0x89, 0xeb, 0x89, 0x6c, 0x24,
+ 0x28, 0x89, 0xf9, 0xeb, 0x0a, 0xc7, 0x44, 0x24, 0x30, 0x01, 0x00, 0x00, 0x00, 0x89, 0xf1, 0x83,
+ 0xc2, 0x10, 0x89, 0x54, 0x24, 0x2c, 0x83, 0xf8, 0xfd, 0x89, 0xc2, 0x7c, 0xc5, 0x83, 0xc0, 0x08,
+ 0x8b, 0x74, 0x24, 0x04, 0x89, 0xd9, 0xc1, 0xe9, 0x05, 0x89, 0x0c, 0x24, 0x89, 0x4c, 0x24, 0x28,
+ 0x8d, 0x48, 0xfb, 0x89, 0x4c, 0x24, 0x2c, 0x83, 0xf9, 0x03, 0x77, 0x4d, 0x8b, 0x7c, 0x24, 0x20,
+ 0x8b, 0x74, 0x24, 0x24, 0x83, 0xc0, 0xf3, 0x8d, 0x48, 0x08, 0x39, 0xf7, 0x74, 0x1c, 0x8d, 0x57,
+ 0x01, 0x89, 0x54, 0x24, 0x20, 0x0f, 0xb6, 0x3f, 0xd3, 0xe7, 0x8b, 0x2c, 0x24, 0x09, 0xfd, 0x89,
+ 0x2c, 0x24, 0x89, 0x6c, 0x24, 0x28, 0x89, 0xd7, 0xeb, 0x0a, 0xc7, 0x44, 0x24, 0x30, 0x01, 0x00,
+ 0x00, 0x00, 0x89, 0xf7, 0x83, 0xc0, 0x10, 0x89, 0x44, 0x24, 0x2c, 0x83, 0xf9, 0xfc, 0x89, 0xc8,
+ 0x7c, 0xc5, 0x83, 0xc1, 0x08, 0x8b, 0x74, 0x24, 0x04, 0x83, 0xe6, 0x1f, 0x8b, 0x04, 0x24, 0xc1,
+ 0xe8, 0x04, 0x89, 0x44, 0x24, 0x28, 0x83, 0xc1, 0xfc, 0x89, 0x4c, 0x24, 0x2c, 0x83, 0xfe, 0x1d,
+ 0x0f, 0x87, 0xc3, 0x02, 0x00, 0x00, 0x83, 0xe3, 0x1f, 0x83, 0xfb, 0x1d, 0x0f, 0x87, 0xb7, 0x02,
+ 0x00, 0x00, 0xc7, 0x44, 0x24, 0x08, 0xfd, 0xff, 0xff, 0xff, 0x81, 0xc6, 0x01, 0x01, 0x00, 0x00,
+ 0x89, 0x74, 0x24, 0x04, 0x43, 0x89, 0x5c, 0x24, 0x10, 0x83, 0x24, 0x24, 0x0f, 0xba, 0xed, 0xff,
+ 0xff, 0xff, 0xc6, 0x84, 0x14, 0x17, 0x05, 0x00, 0x00, 0x00, 0x42, 0x75, 0xf5, 0x83, 0x04, 0x24,
+ 0x03, 0x8b, 0x54, 0x24, 0x20, 0x8b, 0x74, 0x24, 0x24, 0x31, 0xdb, 0x83, 0xf9, 0x02, 0x7f, 0x36,
+ 0x89, 0xd7, 0x39, 0xf7, 0x74, 0x16, 0x8d, 0x57, 0x01, 0x89, 0x54, 0x24, 0x20, 0x0f, 0xb6, 0x3f,
+ 0xd3, 0xe7, 0x09, 0xf8, 0x89, 0x44, 0x24, 0x28, 0x89, 0xd7, 0xeb, 0x0a, 0xc7, 0x44, 0x24, 0x30,
+ 0x01, 0x00, 0x00, 0x00, 0x89, 0xf7, 0x8d, 0x69, 0x08, 0x89, 0x6c, 0x24, 0x2c, 0x83, 0xf9, 0xfb,
+ 0x89, 0xe9, 0x7c, 0xce, 0xeb, 0x02, 0x89, 0xcd, 0x89, 0xc1, 0xc1, 0xe9, 0x03, 0x89, 0x4c, 0x24,
+ 0x28, 0x83, 0xc5, 0xfd, 0x89, 0x6c, 0x24, 0x2c, 0x24, 0x07, 0x0f, 0xb6, 0xbb, 0x7e, 0x0a, 0x07,
+ 0x00, 0x88, 0x84, 0x3c, 0x04, 0x05, 0x00, 0x00, 0x3b, 0x1c, 0x24, 0x8d, 0x5b, 0x01, 0x89, 0xc8,
+ 0x89, 0xe9, 0x75, 0x97, 0x8d, 0x4c, 0x24, 0x3c, 0x8d, 0x94, 0x24, 0x04, 0x05, 0x00, 0x00, 0x6a,
+ 0x13, 0xe8, 0xf8, 0x03, 0x00, 0x00, 0x83, 0xc4, 0x04, 0x85, 0xc0, 0x0f, 0x85, 0xf2, 0x01, 0x00,
+ 0x00, 0x83, 0xbc, 0x24, 0x9c, 0x02, 0x00, 0x00, 0xff, 0x0f, 0x84, 0xf2, 0x01, 0x00, 0x00, 0x8b,
+ 0x44, 0x24, 0x04, 0x8b, 0x7c, 0x24, 0x10, 0x8d, 0x1c, 0x07, 0x31, 0xf6, 0x89, 0x5c, 0x24, 0x14,
+ 0x8d, 0x4c, 0x24, 0x20, 0x8d, 0x54, 0x24, 0x3c, 0xe8, 0x6e, 0x03, 0x00, 0x00, 0x3b, 0x84, 0x24,
+ 0x9c, 0x02, 0x00, 0x00, 0x0f, 0x8f, 0xc7, 0x01, 0x00, 0x00, 0x66, 0x83, 0xf8, 0x12, 0x74, 0x38,
+ 0x0f, 0xb7, 0xc8, 0xba, 0x03, 0x00, 0x00, 0x00, 0x83, 0xf9, 0x11, 0x74, 0x24, 0x83, 0xf9, 0x10,
+ 0x0f, 0x85, 0xc0, 0x00, 0x00, 0x00, 0x85, 0xf6, 0x0f, 0x84, 0xa3, 0x01, 0x00, 0x00, 0x8d, 0x84,
+ 0x24, 0x04, 0x05, 0x00, 0x00, 0x0f, 0xb6, 0x44, 0x06, 0xff, 0xb9, 0x02, 0x00, 0x00, 0x00, 0xeb,
+ 0x13, 0xb9, 0x03, 0x00, 0x00, 0x00, 0xeb, 0x0a, 0xba, 0x0b, 0x00, 0x00, 0x00, 0xb9, 0x07, 0x00,
+ 0x00, 0x00, 0x31, 0xc0, 0x89, 0x44, 0x24, 0x1c, 0x8b, 0x5c, 0x24, 0x2c, 0x89, 0x0c, 0x24, 0x39,
+ 0xcb, 0x89, 0x54, 0x24, 0x18, 0x7d, 0x46, 0x8b, 0x6c, 0x24, 0x20, 0x8b, 0x44, 0x24, 0x24, 0x8b,
+ 0x7c, 0x24, 0x28, 0x8b, 0x0c, 0x24, 0x39, 0xc5, 0x74, 0x1c, 0x8d, 0x55, 0x01, 0x89, 0x54, 0x24,
+ 0x20, 0x0f, 0xb6, 0x6d, 0x00, 0x89, 0xd9, 0xd3, 0xe5, 0x09, 0xef, 0x89, 0x7c, 0x24, 0x28, 0x89,
+ 0xd5, 0x8b, 0x0c, 0x24, 0xeb, 0x0a, 0xc7, 0x44, 0x24, 0x30, 0x01, 0x00, 0x00, 0x00, 0x89, 0xc5,
+ 0x83, 0xc3, 0x08, 0x89, 0x5c, 0x24, 0x2c, 0x39, 0xcb, 0x7c, 0xcb, 0xeb, 0x07, 0x8b, 0x7c, 0x24,
+ 0x28, 0x8b, 0x0c, 0x24, 0x31, 0xed, 0x4d, 0xd3, 0xe5, 0xf7, 0xd5, 0x21, 0xfd, 0x03, 0x6c, 0x24,
+ 0x18, 0xd3, 0xef, 0x89, 0x7c, 0x24, 0x28, 0x29, 0xcb, 0x89, 0x5c, 0x24, 0x2c, 0x8b, 0x5c, 0x24,
+ 0x14, 0x89, 0xd8, 0x29, 0xf0, 0x39, 0xc5, 0x8b, 0x7c, 0x24, 0x10, 0x8b, 0x44, 0x24, 0x1c, 0x76,
+ 0x12, 0xe9, 0xeb, 0x00, 0x00, 0x00, 0x39, 0xf3, 0xbd, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x84, 0xde,
+ 0x00, 0x00, 0x00, 0x88, 0x84, 0x34, 0x04, 0x05, 0x00, 0x00, 0x46, 0x4d, 0x75, 0xf5, 0x39, 0xde,
+ 0x0f, 0x82, 0xea, 0xfe, 0xff, 0xff, 0x80, 0xbc, 0x24, 0x04, 0x06, 0x00, 0x00, 0x00, 0x0f, 0x84,
+ 0xbd, 0x00, 0x00, 0x00, 0x8d, 0x4c, 0x24, 0x3c, 0x8d, 0x94, 0x24, 0x04, 0x05, 0x00, 0x00, 0x8b,
+ 0x74, 0x24, 0x04, 0x56, 0xe8, 0x95, 0x02, 0x00, 0x00, 0x83, 0xc4, 0x04, 0x85, 0xc0, 0x0f, 0x85,
+ 0x8f, 0x00, 0x00, 0x00, 0x8d, 0x94, 0x34, 0x04, 0x05, 0x00, 0x00, 0x8d, 0xb4, 0x24, 0xa0, 0x02,
+ 0x00, 0x00, 0x89, 0xf1, 0x57, 0xe8, 0x74, 0x02, 0x00, 0x00, 0x83, 0xc4, 0x04, 0x85, 0xc0, 0x0f,
+ 0x84, 0x59, 0xfc, 0xff, 0xff, 0xeb, 0x7e, 0x8b, 0x4c, 0x24, 0x20, 0x8b, 0x54, 0x24, 0x24, 0x29,
+ 0xca, 0x83, 0xfa, 0x04, 0x7c, 0x6f, 0x0f, 0xb7, 0x19, 0x0f, 0xb7, 0x51, 0x02, 0x66, 0x31, 0xda,
+ 0x66, 0x83, 0xfa, 0xff, 0x75, 0x5f, 0x83, 0xc1, 0x04, 0x89, 0x4c, 0x24, 0x20, 0x85, 0xdb, 0x74,
+ 0x1d, 0x8b, 0x4c, 0x24, 0x20, 0x8b, 0x54, 0x24, 0x38, 0x8d, 0x71, 0x01, 0x8d, 0x7a, 0x01, 0x4b,
+ 0x89, 0x74, 0x24, 0x20, 0x8a, 0x09, 0x89, 0x7c, 0x24, 0x38, 0x88, 0x0a, 0x75, 0xe3, 0x31, 0xc0,
+ 0x89, 0x44, 0x24, 0x28, 0x89, 0x44, 0x24, 0x2c, 0xf6, 0x44, 0x24, 0x0c, 0x01, 0x0f, 0x84, 0x4f,
+ 0xfa, 0xff, 0xff, 0x31, 0xc0, 0x83, 0x7c, 0x24, 0x30, 0x00, 0x0f, 0x94, 0xc0, 0x8d, 0x44, 0x40,
+ 0xfd, 0xeb, 0x12, 0x89, 0x44, 0x24, 0x08, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x08, 0xfd, 0xff, 0xff,
+ 0xff, 0x8b, 0x44, 0x24, 0x08, 0x81, 0xc4, 0x44, 0x06, 0x00, 0x00, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3,
+ 0x55, 0x53, 0x57, 0x56, 0x89, 0xce, 0x8b, 0x59, 0x0c, 0x39, 0xd3, 0x7d, 0x2f, 0x8b, 0x0e, 0x8b,
+ 0x46, 0x04, 0x39, 0xc1, 0x74, 0x13, 0x8d, 0x79, 0x01, 0x89, 0x3e, 0x0f, 0xb6, 0x29, 0x89, 0xd9,
+ 0xd3, 0xe5, 0x09, 0x6e, 0x08, 0x89, 0xf9, 0xeb, 0x09, 0xc7, 0x46, 0x10, 0x01, 0x00, 0x00, 0x00,
+ 0x89, 0xc1, 0x83, 0xc3, 0x08, 0x89, 0x5e, 0x0c, 0x39, 0xd3, 0x7c, 0xd6, 0x8b, 0x7e, 0x08, 0x31,
+ 0xc0, 0x48, 0x89, 0xd1, 0xd3, 0xe0, 0xf7, 0xd0, 0x21, 0xf8, 0xd3, 0xef, 0x89, 0x7e, 0x08, 0x29,
+ 0xd3, 0x89, 0x5e, 0x0c, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, 0x55, 0x53, 0x57, 0x56, 0x83, 0xec, 0x08,
+ 0x89, 0xd5, 0x89, 0xcf, 0xe8, 0x22, 0x01, 0x00, 0x00, 0xb9, 0xfd, 0xff, 0xff, 0xff, 0x83, 0x7f,
+ 0x10, 0x00, 0x0f, 0x85, 0x05, 0x01, 0x00, 0x00, 0x8b, 0x74, 0x24, 0x1c, 0x89, 0x2c, 0x24, 0x3d,
+ 0xff, 0x00, 0x00, 0x00, 0x77, 0x10, 0x8b, 0x4f, 0x18, 0x8d, 0x51, 0x01, 0x89, 0x57, 0x18, 0x88,
+ 0x01, 0xe9, 0xcf, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x01, 0x00, 0x00, 0x0f, 0x84, 0xe6, 0x00, 0x00,
+ 0x00, 0x3b, 0x85, 0x60, 0x02, 0x00, 0x00, 0x0f, 0x8f, 0xcb, 0x00, 0x00, 0x00, 0x3d, 0x1d, 0x01,
+ 0x00, 0x00, 0x0f, 0x87, 0xc0, 0x00, 0x00, 0x00, 0x83, 0xbe, 0x60, 0x02, 0x00, 0x00, 0xff, 0x0f,
+ 0x84, 0xb3, 0x00, 0x00, 0x00, 0x0f, 0xb7, 0x8c, 0x00, 0xe6, 0x07, 0x07, 0x00, 0x89, 0x4c, 0x24,
+ 0x04, 0x05, 0xff, 0xfe, 0xff, 0xff, 0x31, 0xf6, 0xb9, 0xff, 0x00, 0x00, 0x10, 0x0f, 0xa3, 0xc1,
+ 0x72, 0x10, 0x0f, 0xb6, 0x90, 0xca, 0x09, 0x07, 0x00, 0x89, 0xf9, 0xe8, 0x10, 0xff, 0xff, 0xff,
+ 0x89, 0xc6, 0x89, 0xf9, 0x8b, 0x5c, 0x24, 0x1c, 0x89, 0xda, 0xe8, 0x8c, 0x00, 0x00, 0x00, 0x83,
+ 0xf8, 0x1d, 0x77, 0x74, 0x89, 0xc1, 0x3b, 0x83, 0x60, 0x02, 0x00, 0x00, 0x7f, 0x6a, 0x0f, 0xb7,
+ 0xac, 0x09, 0x42, 0x0a, 0x07, 0x00, 0x31, 0xc0, 0x83, 0xf9, 0x04, 0x72, 0x0e, 0x0f, 0xb6, 0x91,
+ 0x24, 0x0a, 0x07, 0x00, 0x89, 0xf9, 0xe8, 0xd5, 0xfe, 0xff, 0xff, 0x01, 0xe8, 0x8b, 0x4f, 0x18,
+ 0x89, 0xca, 0x2b, 0x57, 0x14, 0x39, 0xd0, 0x7f, 0x3f, 0x03, 0x74, 0x24, 0x04, 0x85, 0xf6, 0x7e,
+ 0x18, 0xf7, 0xd8, 0x31, 0xc9, 0x8b, 0x57, 0x18, 0x8d, 0x2c, 0x0a, 0x8a, 0x1c, 0x28, 0x88, 0x1c,
+ 0x0a, 0x41, 0x39, 0xce, 0x75, 0xef, 0x8b, 0x4f, 0x18, 0x01, 0xf1, 0x89, 0x4f, 0x18, 0x8b, 0x2c,
+ 0x24, 0x8b, 0x74, 0x24, 0x1c, 0x89, 0xf9, 0x89, 0xea, 0xe8, 0x1d, 0x00, 0x00, 0x00, 0x83, 0x7f,
+ 0x10, 0x00, 0x0f, 0x84, 0x07, 0xff, 0xff, 0xff, 0xb9, 0xfd, 0xff, 0xff, 0xff, 0x89, 0xc8, 0x83,
+ 0xc4, 0x08, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, 0x31, 0xc9, 0xeb, 0xf2, 0x55, 0x53, 0x57, 0x56, 0x50,
+ 0x89, 0xd5, 0x89, 0xcb, 0x31, 0xd2, 0x42, 0xe8, 0x64, 0xfe, 0xff, 0xff, 0x89, 0xc7, 0x0f, 0xb7,
+ 0x45, 0x02, 0x31, 0xf6, 0x39, 0xc7, 0x89, 0x2c, 0x24, 0x7c, 0x21, 0x83, 0xc5, 0x04, 0x31, 0xf6,
+ 0x01, 0xc6, 0x29, 0xc7, 0x89, 0xd9, 0x31, 0xd2, 0x42, 0xe8, 0x42, 0xfe, 0xff, 0xff, 0x8d, 0x3c,
+ 0x78, 0x0f, 0xb7, 0x45, 0x00, 0x83, 0xc5, 0x02, 0x39, 0xc7, 0x7d, 0xe4, 0x01, 0xfe, 0x8b, 0x04,
+ 0x24, 0x0f, 0xb7, 0x44, 0x70, 0x20, 0x83, 0xc4, 0x04, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, 0x55, 0x53,
+ 0x57, 0x56, 0x83, 0xec, 0x20, 0x8b, 0x7c, 0x24, 0x34, 0xb8, 0xe0, 0xff, 0xff, 0xff, 0x66, 0xc7,
+ 0x44, 0x01, 0x20, 0x00, 0x00, 0x83, 0xc0, 0x02, 0x75, 0xf4, 0xc7, 0x81, 0x60, 0x02, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0x85, 0xff, 0x74, 0x1b, 0x31, 0xc0, 0x80, 0x3c, 0x02, 0x00, 0x74, 0x0e,
+ 0x89, 0x81, 0x60, 0x02, 0x00, 0x00, 0x0f, 0xb6, 0x34, 0x02, 0x66, 0xff, 0x04, 0x71, 0x40, 0x39,
+ 0xc7, 0x75, 0xe7, 0x31, 0xff, 0x31, 0xdb, 0x43, 0xbd, 0xe0, 0xff, 0xff, 0xff, 0xb8, 0xfd, 0xff,
+ 0xff, 0xff, 0x0f, 0xb7, 0x74, 0x29, 0x20, 0x29, 0xf3, 0x72, 0x66, 0x01, 0xdb, 0x66, 0x89, 0x7c,
+ 0x2c, 0x20, 0x01, 0xf7, 0x83, 0xc5, 0x02, 0x75, 0xe9, 0x83, 0xff, 0x02, 0x72, 0x04, 0x85, 0xdb,
+ 0x75, 0x4f, 0x83, 0xff, 0x01, 0x75, 0x07, 0x66, 0x83, 0x79, 0x02, 0x01, 0x75, 0x43, 0x8b, 0x5c,
+ 0x24, 0x34, 0x85, 0xdb, 0x74, 0x23, 0x31, 0xc0, 0x0f, 0xb6, 0x34, 0x02, 0x85, 0xf6, 0x74, 0x14,
+ 0x0f, 0xb7, 0x1c, 0x74, 0x8d, 0x6b, 0x01, 0x66, 0x89, 0x2c, 0x74, 0x66, 0x89, 0x44, 0x59, 0x20,
+ 0x8b, 0x5c, 0x24, 0x34, 0x40, 0x39, 0xc3, 0x75, 0xdf, 0x31, 0xc0, 0x83, 0xff, 0x01, 0x75, 0x11,
+ 0x66, 0xc7, 0x41, 0x02, 0x02, 0x00, 0x8b, 0x91, 0x60, 0x02, 0x00, 0x00, 0x42, 0x66, 0x89, 0x51,
+ 0x22, 0x83, 0xc4, 0x20, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04,
+ 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x00, 0x7f, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00,
+ 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x11, 0x00,
+ 0x13, 0x00, 0x17, 0x00, 0x1b, 0x00, 0x1f, 0x00, 0x23, 0x00, 0x2b, 0x00, 0x33, 0x00, 0x3b, 0x00,
+ 0x43, 0x00, 0x53, 0x00, 0x63, 0x00, 0x73, 0x00, 0x83, 0x00, 0xa3, 0x00, 0xc3, 0x00, 0xe3, 0x00,
+ 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04,
+ 0x05, 0x05, 0x06, 0x06, 0x07, 0x07, 0x08, 0x08, 0x09, 0x09, 0x0a, 0x0a, 0x0b, 0x0b, 0x0c, 0x0c,
+ 0x0d, 0x0d, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x07, 0x00, 0x09, 0x00,
+ 0x0d, 0x00, 0x11, 0x00, 0x19, 0x00, 0x21, 0x00, 0x31, 0x00, 0x41, 0x00, 0x61, 0x00, 0x81, 0x00,
+ 0xc1, 0x00, 0x01, 0x01, 0x81, 0x01, 0x01, 0x02, 0x01, 0x03, 0x01, 0x04, 0x01, 0x06, 0x01, 0x08,
+ 0x01, 0x0c, 0x01, 0x10, 0x01, 0x18, 0x01, 0x20, 0x01, 0x30, 0x01, 0x40, 0x01, 0x60, 0x10, 0x11,
+ 0x12, 0x00, 0x08, 0x07, 0x09, 0x06, 0x0a, 0x05, 0x0b, 0x04, 0x0c, 0x03, 0x0d, 0x02, 0x0e, 0x01,
+ 0x0f, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x95, 0x7d, 0x0b, 0x5c, 0x54, 0x65,
+ 0xda, 0xf8, 0x39, 0x30, 0xe0, 0x80, 0xa3, 0x67, 0x50, 0x32, 0x50, 0xd4, 0xd1, 0xb0, 0x64, 0x73,
+ 0x95, 0x31, 0x6f, 0x78, 0x29, 0x6e, 0x07, 0xb0, 0x1c, 0x1d, 0x18, 0x67, 0x70, 0x2b, 0x24, 0x12,
+ 0x68, 0x20, 0x15, 0x1a, 0xe6, 0x78, 0x4b, 0x0c, 0x3c, 0x4c, 0xf1, 0x72, 0x3a, 0x6d, 0xdb, 0x65,
+ 0xff, 0xed, 0xb7, 0xf5, 0x6d, 0x7d, 0xd5, 0x6e, 0xbb, 0x5f, 0xad, 0xee, 0xb7, 0x9b, 0x62, 0x79,
+ 0x99, 0x01, 0x3f, 0xc0, 0xcb, 0xa7, 0xa0, 0xae, 0xa2, 0xb2, 0x86, 0xe5, 0xd6, 0xa1, 0x61, 0xb7,
+ 0x01, 0x5c, 0x6e, 0x16, 0xf3, 0x7f, 0x9e, 0xf7, 0xcc, 0x28, 0xd4, 0xee, 0xf7, 0xff, 0xfd, 0xfd,
+ 0x75, 0x98, 0xf3, 0xde, 0x9e, 0xf7, 0x79, 0x9f, 0xdb, 0xfb, 0x3c, 0xef, 0xe5, 0xf4, 0x6d, 0xa2,
+ 0xfb, 0x58, 0xed, 0x64, 0x0d, 0x73, 0x68, 0x59, 0xb9, 0x86, 0xa9, 0xee, 0xc2, 0xd7, 0xbe, 0xdf,
+ 0x71, 0xec, 0x5d, 0xff, 0xe9, 0x63, 0x98, 0xaf, 0xef, 0x81, 0x3f, 0x31, 0x4c, 0xbd, 0x81, 0x61,
+ 0x98, 0x97, 0xda, 0x5f, 0x72, 0xbf, 0xd4, 0xf9, 0x92, 0xf2, 0x52, 0x6b, 0xd7, 0x42, 0x3d, 0xc3,
+ 0x9c, 0x0e, 0xfe, 0xb3, 0x92, 0xbf, 0xda, 0xc4, 0xee, 0x70, 0x72, 0xb1, 0xb8, 0x99, 0xef, 0xf7,
+ 0x87, 0x36, 0xf3, 0x83, 0x50, 0x99, 0x91, 0xf9, 0x7e, 0x72, 0x72, 0xf8, 0xdb, 0xc3, 0xcc, 0x6e,
+ 0x86, 0x39, 0x86, 0x7f, 0x0e, 0x31, 0x21, 0x0c, 0xd3, 0xf7, 0x1e, 0xc7, 0xc6, 0x94, 0x6a, 0xed,
+ 0x3b, 0x01, 0xec, 0xa9, 0x7a, 0xfd, 0x28, 0x98, 0x9c, 0xc1, 0x1d, 0x3f, 0xc2, 0xcd, 0x76, 0x17,
+ 0xd7, 0xbf, 0x01, 0x65, 0xa5, 0x8c, 0xf9, 0x94, 0xd1, 0x7d, 0xa7, 0xf4, 0x56, 0x29, 0x63, 0x67,
+ 0x76, 0x9f, 0x5a, 0xca, 0x94, 0x3f, 0xce, 0x22, 0x74, 0xc6, 0xcf, 0x18, 0xca, 0x34, 0x2a, 0x0e,
+ 0x1c, 0x3b, 0x7d, 0x18, 0x51, 0x3d, 0x03, 0x7f, 0xb4, 0xcc, 0xf7, 0x81, 0x72, 0x9f, 0xf8, 0x18,
+ 0x00, 0xfb, 0xf5, 0xd7, 0x50, 0x3a, 0x06, 0xe2, 0x4d, 0xef, 0x77, 0xfe, 0x50, 0x04, 0x55, 0x97,
+ 0x1e, 0xaf, 0xf9, 0x0f, 0xb1, 0x87, 0x61, 0xa4, 0xf4, 0x78, 0xed, 0xbb, 0x37, 0xd5, 0x17, 0xdd,
+ 0xbb, 0x83, 0xf0, 0xc2, 0xb1, 0x61, 0xdf, 0xd2, 0x9f, 0x09, 0x9a, 0x5e, 0xfc, 0x99, 0xae, 0x83,
+ 0x1f, 0x8b, 0x2d, 0xd7, 0xfa, 0xf5, 0x8a, 0x9e, 0x7f, 0xd6, 0x19, 0x1d, 0xc1, 0xd7, 0xd6, 0x1e,
+ 0xda, 0x55, 0xeb, 0x92, 0x62, 0x72, 0xaf, 0xaf, 0x67, 0x49, 0xb1, 0x74, 0xef, 0x60, 0x0f, 0xf7,
+ 0x5b, 0xee, 0x9d, 0x71, 0x33, 0x8b, 0xdf, 0x2a, 0xce, 0x2b, 0xce, 0x2f, 0xde, 0x58, 0xfc, 0x68,
+ 0xf1, 0x4f, 0x8a, 0x1f, 0x2b, 0xde, 0x80, 0x65, 0xbe, 0x9e, 0x5b, 0xff, 0xc3, 0x0c, 0xdf, 0xa9,
+ 0x7b, 0xb3, 0xa7, 0xf8, 0x29, 0xb9, 0x30, 0x7e, 0x6e, 0xb1, 0xb9, 0xd8, 0x52, 0x9c, 0x5d, 0x9c,
+ 0x53, 0x6c, 0x2b, 0xce, 0x2d, 0xb6, 0x16, 0xbf, 0x39, 0x23, 0x9c, 0x7b, 0x9b, 0xfb, 0x40, 0x6d,
+ 0xb1, 0xa4, 0x98, 0x63, 0xa7, 0x7c, 0x4b, 0x7f, 0x66, 0x68, 0x7a, 0xa1, 0x63, 0x1d, 0x8b, 0x1d,
+ 0x9f, 0xe9, 0x89, 0x61, 0x8a, 0x81, 0x57, 0x77, 0x70, 0xca, 0xcb, 0xdf, 0xf8, 0x58, 0xe3, 0xcb,
+ 0x63, 0xff, 0x31, 0xff, 0xcb, 0x3f, 0x95, 0x22, 0xc1, 0x7f, 0x6f, 0xce, 0x2f, 0xf6, 0x87, 0x4f,
+ 0xea, 0x7d, 0x6b, 0xbe, 0x7f, 0xfe, 0x94, 0x5e, 0xe9, 0x2e, 0x14, 0x02, 0x72, 0xd7, 0x14, 0x20,
+ 0x41, 0x73, 0x18, 0xbe, 0x4f, 0x85, 0x37, 0x69, 0x7d, 0xbc, 0xa6, 0x39, 0x6c, 0x52, 0xaf, 0xda,
+ 0x00, 0xe8, 0xb5, 0xac, 0x8f, 0xd2, 0x2b, 0x99, 0xfe, 0x4c, 0xcf, 0xea, 0x0b, 0xd0, 0xeb, 0xe9,
+ 0xde, 0x7f, 0x4d, 0x2f, 0x57, 0xef, 0xf7, 0x58, 0xd3, 0x14, 0xbe, 0xb6, 0x8f, 0x69, 0x0a, 0xcf,
+ 0xc1, 0x3f, 0xb6, 0x3e, 0xa6, 0x38, 0x69, 0xca, 0xa4, 0x5e, 0xe7, 0x7c, 0x24, 0xc6, 0x9f, 0xd8,
+ 0x44, 0xf7, 0xff, 0x4c, 0x41, 0xf2, 0x39, 0xbb, 0x8c, 0xf0, 0xf6, 0x1f, 0x39, 0x7d, 0xb5, 0xf7,
+ 0xda, 0xfa, 0xea, 0x99, 0x90, 0xff, 0x99, 0xf2, 0x81, 0xc6, 0x19, 0x89, 0x2d, 0x35, 0x55, 0xd0,
+ 0xf2, 0x89, 0x61, 0x4a, 0xa3, 0x65, 0x7d, 0x94, 0x46, 0xc9, 0x7d, 0x9c, 0xa1, 0xb1, 0xea, 0x14,
+ 0x10, 0xa9, 0xf1, 0xeb, 0xbe, 0x5e, 0x20, 0xd2, 0xa7, 0x40, 0xa4, 0xab, 0x2f, 0x35, 0xbe, 0xf4,
+ 0xc5, 0x4b, 0xde, 0x97, 0xce, 0x23, 0x91, 0x24, 0x3a, 0x2e, 0x42, 0xc7, 0x58, 0xb5, 0x0a, 0x3a,
+ 0x65, 0x18, 0xe7, 0x34, 0xff, 0x62, 0xc0, 0x83, 0xf1, 0x2f, 0xce, 0xa1, 0x7f, 0x31, 0x53, 0x29,
+ 0x4b, 0x64, 0x19, 0xf1, 0xb8, 0xae, 0xd1, 0xe8, 0x6e, 0xfc, 0xdf, 0x69, 0x87, 0xff, 0x54, 0xfd,
+ 0x00, 0x69, 0xd2, 0xbc, 0xcb, 0xdc, 0x64, 0x98, 0x46, 0x20, 0x8f, 0xe6, 0x26, 0x25, 0x8f, 0x8e,
+ 0xfe, 0x4c, 0x8f, 0xbe, 0xa9, 0x92, 0x47, 0xde, 0x1c, 0x1f, 0xfd, 0xf5, 0x4b, 0x7d, 0xff, 0x9a,
+ 0x44, 0x1f, 0xf4, 0xa9, 0x22, 0x15, 0x2c, 0xba, 0xe5, 0xdf, 0xa6, 0xf1, 0x6f, 0xd3, 0xfa, 0xb7,
+ 0x31, 0xfe, 0x19, 0xcc, 0x4d, 0xf1, 0x78, 0xf8, 0xf0, 0x7c, 0x1c, 0xae, 0xe6, 0x26, 0xfe, 0xcc,
+ 0xd0, 0xdd, 0xbc, 0x33, 0xdc, 0xcf, 0xfb, 0xbe, 0x3f, 0xdc, 0x39, 0x7e, 0x3f, 0xc3, 0x8c, 0x12,
+ 0x8c, 0x7f, 0x2d, 0x07, 0xa0, 0xd9, 0x96, 0x5c, 0x9b, 0x78, 0x63, 0x50, 0xec, 0x8e, 0x91, 0x78,
+ 0x9d, 0x64, 0x8a, 0x26, 0x67, 0x3c, 0x7f, 0x9f, 0x49, 0x4e, 0x7a, 0x86, 0x67, 0x1a, 0xdb, 0x1e,
+ 0xb0, 0xea, 0xd9, 0x5e, 0xb1, 0x8d, 0x21, 0x4d, 0x98, 0x37, 0x40, 0x9c, 0xf1, 0x1a, 0x78, 0x1d,
+ 0x99, 0x69, 0xf4, 0x49, 0x79, 0x5a, 0x63, 0x1f, 0x7b, 0x4b, 0x6c, 0x65, 0xe4, 0xdd, 0xf1, 0xda,
+ 0xdc, 0xec, 0x1c, 0xb3, 0x45, 0x59, 0x0e, 0x7a, 0x2b, 0x1e, 0x8f, 0x96, 0x41, 0xc7, 0x24, 0xb3,
+ 0xc6, 0xd8, 0xfb, 0x40, 0x62, 0x28, 0x34, 0x10, 0xcf, 0x31, 0xc4, 0x27, 0x17, 0xdd, 0xdc, 0x98,
+ 0xff, 0x58, 0x5e, 0x63, 0xa0, 0xbb, 0x6e, 0x9d, 0x64, 0x8d, 0xe6, 0x8e, 0x98, 0xf4, 0xf5, 0x0f,
+ 0xa1, 0x48, 0xa5, 0xb7, 0x88, 0x3d, 0x33, 0x45, 0x8f, 0x81, 0x3b, 0x72, 0x45, 0xec, 0x9b, 0xe9,
+ 0x3a, 0xc7, 0xa5, 0x5f, 0x86, 0x42, 0xed, 0xed, 0x7c, 0x40, 0x8c, 0x3b, 0xd2, 0x2a, 0xf6, 0xce,
+ 0x74, 0xb9, 0xb9, 0xf4, 0x36, 0x72, 0x2d, 0xe1, 0xa2, 0xf1, 0x04, 0x19, 0x10, 0x47, 0x1e, 0x3a,
+ 0x4a, 0x25, 0xf2, 0x85, 0x8f, 0xe1, 0xaf, 0xa0, 0x95, 0x4c, 0xda, 0xae, 0xdf, 0xa2, 0xfc, 0x56,
+ 0xfa, 0x24, 0x93, 0x6f, 0xc4, 0x23, 0x55, 0x6a, 0xc9, 0x08, 0xf7, 0x51, 0x13, 0xb1, 0x76, 0x93,
+ 0x86, 0xf3, 0x5f, 0xf7, 0x03, 0x7c, 0xbe, 0xf7, 0x10, 0x6d, 0xc1, 0xb7, 0x41, 0x8d, 0xaa, 0x9e,
+ 0x87, 0x88, 0x09, 0xab, 0x72, 0xef, 0x0f, 0xc2, 0xdf, 0xf3, 0x5f, 0x91, 0xa1, 0x7e, 0xde, 0x07,
+ 0x95, 0x9a, 0x9b, 0x79, 0x05, 0xab, 0x1d, 0x53, 0xeb, 0x9e, 0x1d, 0x38, 0x1f, 0x9a, 0xd7, 0x4d,
+ 0x3e, 0x33, 0x5e, 0x25, 0x95, 0xdd, 0xdc, 0x7b, 0xbd, 0x2c, 0xf7, 0x5e, 0x13, 0x3c, 0x2d, 0xec,
+ 0x78, 0x5e, 0x61, 0x4f, 0x44, 0x5c, 0x06, 0x20, 0xa4, 0x6d, 0xa0, 0x8d, 0xf4, 0x0d, 0x9c, 0x97,
+ 0x2a, 0xf5, 0xec, 0x2d, 0xa9, 0x32, 0x3a, 0x6a, 0x88, 0x9c, 0xf2, 0x78, 0x67, 0x7a, 0x86, 0x66,
+ 0x92, 0xb3, 0xf7, 0x54, 0x46, 0xdf, 0x63, 0xd2, 0x27, 0x9c, 0x81, 0x2e, 0x62, 0x87, 0xa5, 0xca,
+ 0xee, 0x4c, 0xa1, 0x1e, 0x1b, 0xcb, 0xba, 0x47, 0x48, 0x13, 0x69, 0x21, 0xbd, 0x20, 0x6a, 0x63,
+ 0x48, 0xa3, 0x95, 0xf8, 0x68, 0x80, 0x23, 0x59, 0x75, 0x40, 0x63, 0x49, 0x88, 0x71, 0x9d, 0x73,
+ 0xfe, 0xc8, 0xe5, 0x77, 0x26, 0xbb, 0xdc, 0xce, 0xa7, 0xb9, 0x23, 0x6e, 0xd1, 0x37, 0x93, 0x3b,
+ 0x72, 0x12, 0xe8, 0x92, 0xd0, 0x22, 0x0e, 0x1a, 0xb8, 0xbd, 0x1f, 0x00, 0x8e, 0xae, 0x7e, 0x67,
+ 0x0c, 0x99, 0x41, 0x6c, 0x1a, 0x6f, 0x14, 0xd4, 0xda, 0x0e, 0xc9, 0x08, 0x32, 0xa3, 0x39, 0x43,
+ 0x83, 0xf8, 0x1b, 0xaf, 0x1a, 0xcf, 0x75, 0x7d, 0x0c, 0x9c, 0x01, 0xda, 0xd5, 0xec, 0xc7, 0xca,
+ 0x57, 0xb9, 0x9a, 0xcb, 0x68, 0xbd, 0xb3, 0xfc, 0xae, 0x16, 0xce, 0xf5, 0x77, 0xb5, 0xfd, 0xb8,
+ 0x59, 0x6d, 0x00, 0x61, 0xad, 0x86, 0x3b, 0xdc, 0x72, 0xfe, 0x6b, 0x72, 0xde, 0x7b, 0x52, 0x5e,
+ 0xe7, 0x77, 0x9d, 0xe5, 0x5c, 0xa2, 0x5a, 0x3c, 0x7e, 0xd6, 0x65, 0x32, 0x31, 0x00, 0x51, 0xf4,
+ 0xb3, 0x5c, 0xcd, 0x26, 0x80, 0xc8, 0x1d, 0x3e, 0x4b, 0x2e, 0x9e, 0xff, 0x9a, 0xfb, 0xa8, 0xaf,
+ 0x6b, 0x3d, 0x24, 0x49, 0xbb, 0xf1, 0xdc, 0xc0, 0x00, 0x69, 0x33, 0x9e, 0x73, 0xf5, 0x93, 0x46,
+ 0xae, 0x26, 0x19, 0xf3, 0x82, 0x8d, 0xba, 0x16, 0x62, 0xca, 0x93, 0xdc, 0xcc, 0x77, 0x53, 0x18,
+ 0x83, 0x06, 0xe7, 0x9a, 0xaa, 0x9e, 0x99, 0x48, 0xbb, 0x6b, 0x48, 0xfc, 0x2f, 0xc9, 0x25, 0xe2,
+ 0x39, 0xff, 0x0d, 0xbe, 0x7e, 0x4e, 0x78, 0x1f, 0xbc, 0x7b, 0x23, 0xae, 0x74, 0xfd, 0x14, 0x5b,
+ 0xe2, 0x5c, 0xc3, 0x1d, 0x69, 0x1e, 0x3d, 0x70, 0xf7, 0xac, 0x3b, 0x70, 0x38, 0xd7, 0x75, 0x78,
+ 0x69, 0x06, 0xce, 0xe1, 0x68, 0xfd, 0xde, 0x27, 0x88, 0x87, 0xb4, 0x02, 0x26, 0x3d, 0xa4, 0xd1,
+ 0xd5, 0xcf, 0xd5, 0x8c, 0x8c, 0xf8, 0xfd, 0x40, 0x99, 0xe6, 0x70, 0x8a, 0x85, 0x0f, 0x52, 0xdf,
+ 0x27, 0xe2, 0x4c, 0x4e, 0xfc, 0x14, 0xb2, 0xe5, 0x2c, 0x16, 0xb0, 0x59, 0x34, 0x93, 0x5c, 0x83,
+ 0xce, 0x01, 0x1d, 0x44, 0xe5, 0x1b, 0x78, 0xfd, 0x1c, 0x5f, 0x00, 0x99, 0x40, 0x8f, 0xa4, 0xcf,
+ 0x78, 0x42, 0x12, 0x7c, 0x12, 0xdf, 0x4d, 0x04, 0x1f, 0xf7, 0xde, 0x25, 0x90, 0x84, 0x2b, 0xf0,
+ 0x34, 0xb2, 0x24, 0xaf, 0x9b, 0x75, 0x47, 0xb4, 0x90, 0x8b, 0x64, 0x78, 0xe0, 0x1c, 0xe9, 0x19,
+ 0x68, 0x93, 0xf2, 0xf4, 0xec, 0x65, 0x50, 0xa8, 0xa8, 0x93, 0xa4, 0xcd, 0xd3, 0x35, 0x13, 0x14,
+ 0x8a, 0x9c, 0xbf, 0x27, 0x2f, 0xfa, 0x1e, 0xab, 0x3e, 0xe1, 0x22, 0xe9, 0x05, 0x18, 0xb1, 0x9f,
+ 0x49, 0x79, 0xdd, 0x6b, 0x85, 0x83, 0xd8, 0x9a, 0x75, 0x23, 0xab, 0xfb, 0x9d, 0x61, 0x64, 0x0a,
+ 0xd9, 0xa3, 0x11, 0x3b, 0x47, 0x22, 0x3c, 0xe4, 0x0a, 0x39, 0x45, 0xda, 0xc5, 0xe3, 0x5a, 0x2a,
+ 0x1e, 0x94, 0x28, 0x15, 0x71, 0xfd, 0x97, 0xa1, 0x83, 0x2b, 0x40, 0xa3, 0x01, 0x24, 0x17, 0x90,
+ 0x9e, 0x5c, 0x26, 0xe7, 0xc9, 0xc9, 0xae, 0xa7, 0xfc, 0x30, 0xcc, 0x26, 0x28, 0x6d, 0x3f, 0xdf,
+ 0x49, 0x00, 0x37, 0xa8, 0x5c, 0xe5, 0xe9, 0xe4, 0x3e, 0x3a, 0x0f, 0xd5, 0xbe, 0xee, 0xfa, 0x2b,
+ 0x8c, 0x2f, 0x28, 0x5f, 0xfa, 0xff, 0x3f, 0xd5, 0x13, 0x40, 0xf5, 0x46, 0xc4, 0x81, 0x99, 0x40,
+ 0xcb, 0xf4, 0x21, 0x72, 0x39, 0x61, 0x48, 0x1c, 0x7a, 0x68, 0x5b, 0xa4, 0xc4, 0x6b, 0x49, 0x6f,
+ 0x17, 0xca, 0x9e, 0xd1, 0x0d, 0x19, 0x9f, 0x50, 0x4d, 0xa9, 0x79, 0x03, 0xe9, 0x93, 0xe7, 0x23,
+ 0xa7, 0x46, 0x3c, 0xa4, 0x52, 0x41, 0xfd, 0x1b, 0xe4, 0x3e, 0xf2, 0x91, 0xde, 0x80, 0xf2, 0x35,
+ 0x04, 0x95, 0xaf, 0xaa, 0xef, 0x21, 0x72, 0x99, 0x7b, 0x7f, 0xe4, 0xfc, 0x57, 0x40, 0xdb, 0xfe,
+ 0x46, 0x28, 0x1a, 0x68, 0xe6, 0x6f, 0x60, 0xe1, 0xa7, 0x6a, 0x8d, 0x5b, 0xa0, 0x69, 0x03, 0x6d,
+ 0xa1, 0x26, 0x05, 0x74, 0x0e, 0xf4, 0xf3, 0xbd, 0x06, 0xa0, 0xb0, 0x8f, 0x95, 0x4c, 0xa0, 0x7e,
+ 0x67, 0xd8, 0xf1, 0xc2, 0x0d, 0x55, 0xed, 0xba, 0xa9, 0xda, 0x35, 0xfe, 0xaf, 0x6a, 0xd7, 0x42,
+ 0xd5, 0x2e, 0x45, 0xa8, 0x17, 0x8f, 0xeb, 0xc7, 0xa8, 0xd9, 0x32, 0xa9, 0x12, 0x0c, 0x9e, 0x56,
+ 0x4a, 0x8e, 0xe6, 0xf6, 0x35, 0xaf, 0x62, 0xab, 0xa0, 0x5b, 0x11, 0xf1, 0x03, 0xea, 0x48, 0x82,
+ 0xfe, 0x1d, 0x74, 0x91, 0x5c, 0x6e, 0x61, 0x8a, 0x9d, 0x81, 0x12, 0x72, 0x5e, 0xf1, 0xad, 0x82,
+ 0x9f, 0x2b, 0xe2, 0x71, 0xcd, 0xbb, 0x58, 0x22, 0xe7, 0xdd, 0x28, 0x6e, 0x0e, 0xd5, 0x33, 0xc5,
+ 0xe4, 0xd9, 0x10, 0xe2, 0xf1, 0x74, 0x69, 0x8a, 0xc9, 0x23, 0xe1, 0x62, 0x27, 0x57, 0x4c, 0xd2,
+ 0x34, 0xa4, 0x42, 0x4b, 0x2c, 0x3a, 0xb9, 0xf2, 0x70, 0x69, 0x7c, 0x29, 0x93, 0xab, 0xfc, 0xda,
+ 0x8c, 0x46, 0x51, 0xd7, 0x9c, 0x19, 0xcf, 0xa4, 0x02, 0x74, 0xe8, 0x91, 0x21, 0x99, 0x31, 0xc0,
+ 0xd7, 0x4e, 0x1d, 0xc9, 0x8c, 0xf6, 0x78, 0xa1, 0x69, 0x7e, 0x78, 0x6e, 0x6e, 0xe9, 0x64, 0x25,
+ 0x77, 0xc0, 0xef, 0x87, 0x9a, 0x47, 0xc1, 0x87, 0x62, 0xfa, 0x33, 0xb5, 0xac, 0x70, 0x0f, 0xd8,
+ 0x3d, 0x63, 0x3f, 0x68, 0xf4, 0x54, 0xc9, 0x14, 0x23, 0x59, 0xb5, 0xdc, 0xbe, 0x87, 0xa3, 0xb3,
+ 0xfd, 0x8b, 0x11, 0x01, 0xb3, 0x92, 0xa4, 0xc2, 0x25, 0x3e, 0xf1, 0xf8, 0x32, 0x3a, 0x30, 0x7b,
+ 0x1f, 0x28, 0x61, 0x29, 0xa3, 0xdc, 0x4c, 0x08, 0x5a, 0xf5, 0xea, 0x6e, 0x06, 0x94, 0xce, 0xce,
+ 0xc4, 0xc1, 0xa4, 0x76, 0x3a, 0x1d, 0xab, 0x6b, 0xde, 0x4d, 0xbf, 0x4b, 0xc3, 0xd4, 0x0b, 0xa0,
+ 0x92, 0x75, 0x8c, 0x2c, 0xcf, 0x40, 0xa1, 0x39, 0xe9, 0xf9, 0x5a, 0x43, 0x5e, 0xdf, 0x01, 0xaf,
+ 0xe2, 0xf5, 0x89, 0x44, 0x76, 0xc2, 0x8b, 0x6c, 0x3a, 0x4d, 0x4e, 0x8a, 0x9f, 0xeb, 0x88, 0xb5,
+ 0x0a, 0xc6, 0x46, 0xe4, 0xdd, 0x98, 0x27, 0xaf, 0xa4, 0xb5, 0x69, 0xf6, 0x71, 0xcc, 0x36, 0xb5,
+ 0x70, 0x07, 0xdc, 0x84, 0x7f, 0xc3, 0xe8, 0x4e, 0xfe, 0xb4, 0x0a, 0x39, 0xcf, 0x77, 0x10, 0xbe,
+ 0x33, 0xc0, 0x48, 0x1c, 0xbc, 0x7c, 0xa4, 0x1f, 0xe4, 0x2e, 0x57, 0x79, 0x77, 0x9d, 0x4a, 0x02,
+ 0xd7, 0x54, 0x80, 0xc0, 0x64, 0x41, 0xcd, 0xb7, 0x26, 0xc2, 0x9b, 0xe4, 0xc2, 0x4e, 0x8b, 0x89,
+ 0xeb, 0xdb, 0x11, 0x4c, 0x60, 0xc7, 0xc4, 0x15, 0x89, 0x59, 0xcd, 0x2e, 0xc4, 0x6c, 0x06, 0x43,
+ 0xc9, 0x92, 0xdc, 0x4f, 0xc9, 0xd2, 0xef, 0x42, 0x4d, 0x66, 0x39, 0x57, 0x13, 0xd0, 0x87, 0x3b,
+ 0xe8, 0x32, 0x20, 0xc2, 0x9d, 0x1a, 0xa4, 0x7e, 0x08, 0x88, 0x42, 0xb1, 0x78, 0x84, 0xb6, 0x71,
+ 0xfc, 0x88, 0x3b, 0x28, 0x2f, 0x87, 0x37, 0xee, 0xe0, 0xeb, 0xcb, 0x10, 0xe2, 0x99, 0x88, 0x8b,
+ 0xce, 0x29, 0xd5, 0x43, 0x38, 0x21, 0x72, 0xae, 0x37, 0xa1, 0x6d, 0xb1, 0x38, 0xec, 0xe7, 0x5c,
+ 0xaf, 0x84, 0xa0, 0xb1, 0x28, 0x2d, 0x57, 0xfe, 0x98, 0x46, 0x09, 0x03, 0xb6, 0x38, 0x4f, 0x21,
+ 0x31, 0x64, 0x87, 0x9e, 0xec, 0x58, 0x44, 0x76, 0x24, 0x4a, 0xae, 0xf9, 0x88, 0xa2, 0xbc, 0x10,
+ 0x61, 0x64, 0x2c, 0x23, 0x6b, 0x57, 0x36, 0x67, 0xc4, 0xf9, 0x31, 0x6b, 0x15, 0x15, 0x0d, 0x3f,
+ 0x95, 0x54, 0x21, 0x9a, 0xca, 0x87, 0x72, 0x6e, 0x85, 0x0a, 0xa4, 0x99, 0x4a, 0x47, 0x33, 0x7f,
+ 0x5a, 0x0f, 0x94, 0x27, 0x83, 0x1e, 0x05, 0xb8, 0xcb, 0x9f, 0x23, 0x83, 0x54, 0x34, 0xf8, 0x56,
+ 0x92, 0xd7, 0x4e, 0xf2, 0x2e, 0x94, 0xc6, 0x5b, 0xe4, 0xbc, 0x37, 0x2d, 0xca, 0x8b, 0x6b, 0x55,
+ 0xb2, 0xf0, 0x6e, 0x94, 0x0c, 0xb0, 0x26, 0x52, 0x38, 0xe1, 0xff, 0x24, 0xf1, 0x55, 0x84, 0xdf,
+ 0x2f, 0xb9, 0x76, 0x53, 0xda, 0xf0, 0xff, 0x51, 0x3a, 0xd7, 0x22, 0xbb, 0x90, 0xf4, 0x66, 0x25,
+ 0x43, 0x6d, 0x20, 0xf1, 0xed, 0xc4, 0x55, 0x8e, 0xa8, 0xf0, 0x17, 0x88, 0x6b, 0x33, 0x7d, 0x39,
+ 0x2d, 0x99, 0x5a, 0x89, 0x6c, 0xa7, 0x24, 0x2c, 0x84, 0xbf, 0x14, 0x2d, 0xa3, 0xdb, 0x9c, 0xab,
+ 0xdc, 0xab, 0x36, 0xb2, 0x58, 0x80, 0x94, 0xff, 0xb8, 0xa9, 0x92, 0x92, 0x7f, 0x0f, 0xe8, 0xf8,
+ 0x2c, 0x8b, 0x33, 0x1c, 0x54, 0x93, 0xa8, 0x44, 0x55, 0xed, 0x7e, 0xd0, 0xcf, 0x08, 0x61, 0xeb,
+ 0x84, 0x7e, 0x20, 0xcb, 0xdc, 0x40, 0x97, 0x14, 0xcf, 0xb3, 0x26, 0xb5, 0x5b, 0x0a, 0x58, 0x52,
+ 0x3b, 0xe1, 0x4f, 0x13, 0x53, 0xab, 0x44, 0x3b, 0x27, 0xfc, 0x05, 0x89, 0xa2, 0x43, 0xf8, 0x76,
+ 0xda, 0xad, 0x1d, 0x48, 0xcd, 0xd8, 0x94, 0x8f, 0x4c, 0x77, 0x3a, 0xde, 0x3d, 0xba, 0xe3, 0x10,
+ 0x16, 0x23, 0x05, 0xa8, 0x48, 0x95, 0x4c, 0xca, 0x53, 0xaa, 0x76, 0x6b, 0xfd, 0x7e, 0x21, 0x6c,
+ 0x35, 0x74, 0x7d, 0x22, 0xe9, 0x2c, 0x97, 0x79, 0x16, 0x6c, 0x23, 0x59, 0x1b, 0xed, 0x3a, 0xa1,
+ 0x4e, 0x54, 0xa5, 0xac, 0xf1, 0x44, 0x76, 0xb6, 0xd9, 0xa6, 0xa4, 0x7c, 0x8b, 0x50, 0xa2, 0x61,
+ 0x22, 0x73, 0x79, 0x20, 0xbf, 0x7a, 0x4f, 0xb4, 0xaa, 0xb6, 0xcf, 0x86, 0x06, 0x07, 0x01, 0x13,
+ 0xcf, 0x40, 0x90, 0x27, 0x0f, 0x2e, 0x1f, 0xc3, 0x13, 0x3a, 0xa0, 0x51, 0x6c, 0x71, 0xa5, 0x22,
+ 0xca, 0x2a, 0x67, 0x5c, 0xc9, 0xf0, 0x6e, 0x74, 0x13, 0x57, 0x16, 0x25, 0x60, 0x3a, 0xfc, 0x2d,
+ 0x8d, 0x37, 0xcb, 0xfc, 0x9b, 0x66, 0xe5, 0xab, 0x35, 0x74, 0x14, 0xae, 0x7e, 0x60, 0x13, 0x0b,
+ 0xa2, 0x02, 0xe6, 0x44, 0x62, 0x29, 0x9b, 0x8e, 0x23, 0x9b, 0xf8, 0x16, 0xe4, 0x91, 0x73, 0x82,
+ 0xff, 0x99, 0x68, 0x5b, 0xae, 0xf2, 0xbe, 0x5a, 0x19, 0x1b, 0x9a, 0x61, 0xd4, 0xcf, 0xf7, 0xdd,
+ 0x1e, 0xb5, 0xb0, 0xd9, 0x78, 0x4e, 0xaa, 0xec, 0x90, 0xf8, 0x4e, 0xc9, 0x74, 0x03, 0x86, 0xe7,
+ 0x75, 0xc0, 0xb8, 0xd3, 0xaa, 0x6f, 0xa1, 0x82, 0x72, 0xae, 0xb3, 0x30, 0xb0, 0xae, 0xdf, 0x81,
+ 0x44, 0x7a, 0xae, 0x6b, 0xb8, 0x03, 0xce, 0xa8, 0x50, 0xcf, 0x97, 0xda, 0xea, 0x11, 0xe6, 0xed,
+ 0xa0, 0x0b, 0x52, 0xb3, 0xfe, 0x3b, 0xc0, 0xeb, 0xe2, 0x7f, 0xb1, 0xe0, 0xca, 0x14, 0xe3, 0xf0,
+ 0x53, 0xbf, 0x43, 0x01, 0x4f, 0x37, 0x46, 0x7e, 0x00, 0xd3, 0xdf, 0xe2, 0xef, 0x50, 0x13, 0x92,
+ 0x3d, 0x0a, 0x88, 0x4f, 0x77, 0xd7, 0x7d, 0x90, 0x82, 0x0e, 0x80, 0x38, 0xe0, 0x69, 0x32, 0xdc,
+ 0x6b, 0x0d, 0xb7, 0xbb, 0xad, 0xb5, 0xe9, 0xaa, 0x2a, 0xbb, 0x19, 0x61, 0x66, 0xcd, 0x39, 0x61,
+ 0xda, 0x0a, 0xd3, 0x1b, 0xc2, 0xa4, 0xd2, 0x72, 0xbf, 0xe0, 0x53, 0xec, 0xc9, 0x88, 0xb5, 0xb6,
+ 0x6b, 0x0b, 0x0c, 0x3b, 0x85, 0x98, 0x6e, 0xd4, 0x9c, 0x23, 0x4d, 0xe0, 0x04, 0xc1, 0x48, 0x49,
+ 0x8a, 0x56, 0xa4, 0xe2, 0xce, 0x08, 0x31, 0xaa, 0x21, 0xb4, 0x76, 0x2b, 0x5f, 0x2e, 0x43, 0x23,
+ 0xd9, 0x1d, 0x34, 0x85, 0xdc, 0x81, 0x86, 0x2a, 0x70, 0x89, 0x0e, 0x9c, 0x64, 0xcf, 0x10, 0xa1,
+ 0x93, 0x6d, 0x26, 0x95, 0x1d, 0xc6, 0x73, 0xc6, 0x13, 0x29, 0x46, 0x77, 0x16, 0xe8, 0x14, 0xdf,
+ 0x2d, 0xad, 0x7c, 0xfd, 0xe5, 0x35, 0x2c, 0x18, 0x3e, 0x5f, 0xc0, 0xd4, 0x22, 0x1c, 0xee, 0x85,
+ 0x5b, 0x68, 0x30, 0x84, 0x17, 0x89, 0xb5, 0x96, 0x98, 0x6a, 0x8a, 0x83, 0xdc, 0x29, 0x26, 0x47,
+ 0x1e, 0x84, 0x17, 0x2a, 0x18, 0x01, 0xbb, 0x2a, 0xa7, 0x52, 0x45, 0xbf, 0xcd, 0xa5, 0x7e, 0xf2,
+ 0x31, 0xe5, 0xd2, 0xc7, 0xc8, 0x25, 0xce, 0x48, 0xf8, 0x97, 0x07, 0xae, 0x10, 0xeb, 0x6b, 0xd4,
+ 0xde, 0xa0, 0xb4, 0x2e, 0x79, 0x64, 0xb4, 0x56, 0x61, 0xb7, 0xcc, 0xf7, 0xd9, 0x45, 0x45, 0xb2,
+ 0xab, 0xe7, 0x0e, 0x73, 0x72, 0xd8, 0x23, 0x08, 0x4d, 0x7c, 0x1d, 0x21, 0x33, 0xec, 0x88, 0x38,
+ 0x92, 0xec, 0xf8, 0x3d, 0x67, 0x94, 0xf2, 0x5e, 0x1e, 0xb8, 0x2a, 0x99, 0x5e, 0x13, 0x2f, 0x33,
+ 0x6c, 0x63, 0x54, 0x9b, 0x24, 0xbc, 0x98, 0xd4, 0x47, 0x5a, 0x60, 0xec, 0xb1, 0xad, 0x5c, 0x6a,
+ 0x1b, 0xd0, 0x82, 0x4b, 0xed, 0x93, 0x4c, 0x35, 0x5c, 0xea, 0x59, 0xc9, 0x5a, 0x9b, 0x2a, 0x0e,
+ 0x47, 0x00, 0x4f, 0x39, 0xd7, 0x78, 0x80, 0xe1, 0x9d, 0xc9, 0x1d, 0xe0, 0x3d, 0x40, 0x41, 0xbf,
+ 0xd1, 0x6c, 0x9f, 0xb4, 0x96, 0x65, 0x94, 0xd5, 0x89, 0x14, 0xad, 0x43, 0x5a, 0x9c, 0x62, 0xf2,
+ 0x14, 0x2a, 0xe1, 0x1a, 0x30, 0xde, 0xee, 0x74, 0x9b, 0x59, 0xe9, 0xbd, 0x97, 0x72, 0xa0, 0xc6,
+ 0xed, 0xd4, 0x34, 0x65, 0x24, 0xb3, 0xef, 0x64, 0x81, 0x91, 0x16, 0x07, 0x93, 0xb9, 0x1a, 0x82,
+ 0xb5, 0x27, 0xa0, 0xcd, 0x96, 0xcd, 0x2c, 0xb9, 0x0b, 0xf3, 0xc9, 0xa2, 0x6a, 0xb0, 0x5a, 0xdf,
+ 0x3d, 0x18, 0x10, 0xee, 0x52, 0x06, 0xda, 0x2f, 0x4e, 0x50, 0xe5, 0x2e, 0x2b, 0x54, 0x1c, 0x0a,
+ 0xe1, 0xf6, 0xbe, 0xf7, 0x1d, 0xd2, 0x29, 0x43, 0x1c, 0xf4, 0x3b, 0x67, 0x07, 0x61, 0x39, 0x53,
+ 0xbe, 0x0f, 0x67, 0x65, 0x35, 0x10, 0xc7, 0x9f, 0x1c, 0x07, 0xd0, 0xf6, 0x05, 0xa1, 0xd9, 0x40,
+ 0x1e, 0xcc, 0xca, 0x97, 0x73, 0xd5, 0xa9, 0xc5, 0x23, 0x7a, 0x42, 0x33, 0x00, 0x62, 0xc5, 0xc7,
+ 0x5d, 0xd9, 0x00, 0xd2, 0xde, 0xba, 0x0e, 0x06, 0x52, 0xb5, 0x80, 0xd6, 0xad, 0x3e, 0x8e, 0xa2,
+ 0x3b, 0x66, 0xe2, 0x79, 0xf6, 0x9e, 0xe0, 0xc4, 0xa3, 0x84, 0x83, 0x91, 0x87, 0xd1, 0xcc, 0x07,
+ 0xef, 0x41, 0xf9, 0x0d, 0xbc, 0x2b, 0x7f, 0x06, 0x03, 0xa9, 0xac, 0x59, 0x0d, 0x7f, 0x0a, 0xc0,
+ 0x14, 0x0f, 0x34, 0x01, 0x38, 0xbf, 0x10, 0x0b, 0x44, 0xd2, 0x9a, 0x95, 0x50, 0x15, 0xa2, 0x37,
+ 0xd6, 0xfe, 0x96, 0x89, 0x65, 0xba, 0x5e, 0x43, 0xb7, 0x6e, 0x84, 0x15, 0xa2, 0x94, 0xe5, 0xa0,
+ 0x6f, 0xca, 0x6c, 0xf8, 0xf3, 0xee, 0x9b, 0x20, 0x0f, 0xde, 0xb0, 0x77, 0xde, 0x54, 0x27, 0xe5,
+ 0x71, 0x76, 0x2f, 0x60, 0xe2, 0xdd, 0x5a, 0xb5, 0x63, 0x02, 0x23, 0xac, 0x22, 0x4d, 0x52, 0x72,
+ 0x0c, 0xe4, 0x0e, 0x88, 0x7b, 0xe2, 0xfc, 0xbb, 0x17, 0x1b, 0xfd, 0xeb, 0x8c, 0x57, 0xb9, 0x03,
+ 0x19, 0x3a, 0x0b, 0x04, 0x4f, 0x66, 0xa5, 0x78, 0xbe, 0xaa, 0xbf, 0x6e, 0x27, 0x8c, 0x47, 0x01,
+ 0x04, 0x00, 0x2f, 0x41, 0x9f, 0x99, 0xb6, 0x62, 0x4f, 0xdc, 0x9e, 0xcb, 0xde, 0x71, 0x90, 0xb7,
+ 0x98, 0x86, 0x83, 0x6f, 0x53, 0x29, 0x9f, 0x60, 0x57, 0xb2, 0x61, 0x8c, 0x6f, 0xd2, 0x46, 0x9a,
+ 0xaa, 0x55, 0x6f, 0xd0, 0x5c, 0x9d, 0x7d, 0xc1, 0x3a, 0x3a, 0xc2, 0x5f, 0xcc, 0x06, 0x84, 0xaa,
+ 0x3a, 0xa0, 0xc6, 0xd5, 0x03, 0xc1, 0xb1, 0x92, 0xb3, 0x75, 0xd3, 0xdf, 0x89, 0xd6, 0x30, 0x4d,
+ 0x61, 0xf8, 0x97, 0xb5, 0xbf, 0x92, 0xc3, 0x32, 0xd9, 0xca, 0x9f, 0xef, 0xa6, 0x1c, 0x25, 0x4d,
+ 0x80, 0x58, 0xb2, 0xbd, 0x0f, 0xf2, 0x72, 0x15, 0xcf, 0xa8, 0xbc, 0x79, 0xf6, 0xcc, 0x75, 0x98,
+ 0xf7, 0xd1, 0xa8, 0xbc, 0x18, 0x7b, 0x9e, 0x05, 0xf3, 0x7e, 0x71, 0x27, 0x8f, 0xab, 0xa9, 0x01,
+ 0xec, 0x6a, 0x03, 0x1d, 0x20, 0x8e, 0xac, 0x94, 0x11, 0x27, 0xad, 0x35, 0x7c, 0x52, 0x73, 0x4f,
+ 0x28, 0x63, 0x6c, 0x88, 0x38, 0x29, 0x64, 0xca, 0x77, 0xed, 0xdf, 0xcc, 0x30, 0x09, 0xad, 0x20,
+ 0xa5, 0xc7, 0xf6, 0x3f, 0x0e, 0x9d, 0x9b, 0x4b, 0x99, 0x1c, 0xe0, 0xc1, 0x9c, 0x18, 0x04, 0x13,
+ 0x63, 0x53, 0x2e, 0x51, 0x78, 0x9a, 0xd2, 0x68, 0xbb, 0xd3, 0x1b, 0xca, 0xd8, 0x77, 0xd8, 0x00,
+ 0xff, 0x35, 0x59, 0x41, 0xb2, 0x4c, 0xb3, 0xef, 0x82, 0x5e, 0xbd, 0x61, 0xf6, 0x3c, 0xe4, 0xee,
+ 0x7f, 0xfc, 0x98, 0xd6, 0x35, 0xba, 0x29, 0x67, 0x9b, 0xc2, 0x90, 0x00, 0xec, 0x7e, 0xd6, 0xeb,
+ 0x53, 0x71, 0xf0, 0x7e, 0x79, 0x27, 0x80, 0xcb, 0xd3, 0xda, 0x0b, 0xc1, 0x64, 0x29, 0x8e, 0x95,
+ 0xc1, 0x09, 0x34, 0x46, 0x74, 0x6b, 0x8c, 0xfe, 0x5c, 0xbb, 0x19, 0x24, 0x23, 0xd7, 0xce, 0x00,
+ 0xe9, 0x20, 0x28, 0x5c, 0x38, 0x9b, 0xa2, 0xc1, 0x1d, 0xcc, 0x58, 0xb9, 0xca, 0xf2, 0x0d, 0x50,
+ 0x33, 0x53, 0xdc, 0x63, 0x66, 0x9c, 0x3f, 0x96, 0x32, 0x0a, 0x7f, 0x1b, 0x05, 0xa6, 0xc0, 0xa9,
+ 0x37, 0xdb, 0xed, 0x48, 0xf4, 0xfb, 0x68, 0xd7, 0x5a, 0xef, 0x7d, 0xdc, 0x27, 0x9d, 0xfa, 0x8a,
+ 0x09, 0xf6, 0x1f, 0xa1, 0xda, 0x4c, 0x52, 0xf1, 0x29, 0x16, 0xf7, 0x3c, 0x18, 0x2a, 0xcc, 0xb1,
+ 0xdf, 0x05, 0xa0, 0x95, 0x91, 0x79, 0x34, 0x8f, 0xf6, 0x6e, 0x53, 0x7e, 0xb7, 0x42, 0xa5, 0xd6,
+ 0x60, 0x30, 0x8e, 0xaa, 0x5b, 0x1b, 0x57, 0x8f, 0x7d, 0x1b, 0xfd, 0xc6, 0x73, 0xdc, 0xfb, 0x0d,
+ 0xe7, 0x3b, 0xa9, 0xef, 0xd9, 0x4a, 0x7e, 0xfe, 0x78, 0x08, 0xaa, 0x9e, 0x0e, 0x4c, 0x1b, 0x79,
+ 0x7e, 0x03, 0xbc, 0xcb, 0x2f, 0x6d, 0xc0, 0x98, 0xa4, 0xb7, 0x94, 0x29, 0x0d, 0x51, 0xe6, 0xd3,
+ 0xd8, 0x55, 0x6b, 0x67, 0xf4, 0x30, 0xa4, 0x5f, 0x05, 0xa6, 0x73, 0xde, 0x67, 0x51, 0x06, 0xa7,
+ 0xd3, 0xf7, 0x2c, 0x97, 0x7b, 0x4f, 0x14, 0x77, 0x40, 0x17, 0x9a, 0x25, 0x0e, 0x2d, 0x70, 0x6a,
+ 0x5c, 0x27, 0x84, 0xbf, 0x27, 0x93, 0xe6, 0x5c, 0x0b, 0x1a, 0xd0, 0xdf, 0x67, 0xa8, 0xea, 0x67,
+ 0x52, 0x48, 0xaf, 0x45, 0x41, 0xcf, 0x02, 0x1a, 0xd4, 0x00, 0xf3, 0xfe, 0x44, 0xe3, 0x85, 0xea,
+ 0xc6, 0x76, 0xec, 0xe7, 0x32, 0xf6, 0xe4, 0x17, 0x14, 0x05, 0x57, 0x15, 0xa0, 0x2b, 0xee, 0x60,
+ 0xe8, 0x1c, 0xc6, 0xc7, 0x30, 0xab, 0xd0, 0xce, 0x0b, 0x53, 0xb0, 0x3c, 0x17, 0xa1, 0xfd, 0x59,
+ 0x13, 0x30, 0x06, 0xc2, 0x5f, 0xbc, 0xdb, 0xa8, 0xb5, 0x14, 0x9e, 0xa4, 0x68, 0x61, 0xe1, 0x61,
+ 0x3a, 0xa9, 0x69, 0xa5, 0xe7, 0x3b, 0x10, 0xe4, 0xf3, 0x34, 0xec, 0xea, 0x21, 0x57, 0x94, 0xfc,
+ 0x30, 0x4c, 0x3e, 0x01, 0x5d, 0x97, 0x26, 0x2a, 0x9d, 0xc1, 0x99, 0x8f, 0x94, 0xeb, 0x9b, 0x93,
+ 0xa3, 0x93, 0xc6, 0xb3, 0x4c, 0x73, 0x72, 0xcc, 0xd3, 0xf0, 0x23, 0xa9, 0x2d, 0x32, 0xe3, 0x3c,
+ 0x83, 0x33, 0x49, 0xa6, 0x01, 0xbd, 0xf8, 0x4c, 0x4d, 0x97, 0x1b, 0x1c, 0x2b, 0xfb, 0x2c, 0xe4,
+ 0xc1, 0xbb, 0xf7, 0xab, 0xa4, 0x0d, 0x76, 0x67, 0x52, 0xbb, 0x0b, 0x90, 0xfa, 0x21, 0x35, 0x65,
+ 0xf4, 0x77, 0xbd, 0x34, 0x2a, 0x9e, 0x78, 0x02, 0x68, 0x2a, 0x09, 0x5a, 0xe2, 0x8b, 0x68, 0xe7,
+ 0x6a, 0x64, 0x00, 0x2f, 0xa5, 0x9a, 0x81, 0x72, 0x2e, 0x37, 0x31, 0x5d, 0x70, 0x26, 0xf4, 0xa7,
+ 0x16, 0x56, 0x39, 0xef, 0xe1, 0x0e, 0xee, 0xc5, 0x59, 0x1f, 0xe6, 0x2e, 0xe7, 0xdd, 0x10, 0x77,
+ 0x16, 0x43, 0xe0, 0xf9, 0x9a, 0xa7, 0x58, 0x1c, 0x9c, 0xc5, 0xbd, 0xea, 0x36, 0xb4, 0xc0, 0x2c,
+ 0xe1, 0x1d, 0x17, 0x0c, 0xe8, 0x9a, 0xfc, 0xe2, 0x79, 0x3f, 0xb1, 0x2a, 0xd2, 0xae, 0x79, 0xe8,
+ 0xbf, 0x58, 0x6c, 0x4a, 0xcb, 0x37, 0x68, 0xa9, 0xf5, 0xc4, 0xda, 0x49, 0xda, 0xb8, 0x7d, 0x67,
+ 0x09, 0x7f, 0x63, 0xe0, 0x2b, 0xf6, 0x64, 0x42, 0x13, 0x11, 0x3a, 0x62, 0xcf, 0x83, 0x4b, 0x25,
+ 0xf1, 0x4a, 0x5d, 0x56, 0xdc, 0x31, 0xca, 0xf3, 0x7e, 0x1a, 0x55, 0xd4, 0xe3, 0xd4, 0x37, 0x9a,
+ 0xfb, 0x03, 0x81, 0xc8, 0x63, 0x08, 0x04, 0x81, 0xe3, 0x3d, 0xc6, 0xab, 0x87, 0xfc, 0xe3, 0x18,
+ 0x26, 0x69, 0x28, 0xb6, 0x8f, 0x4b, 0xbd, 0xc8, 0xa5, 0x36, 0x8b, 0x95, 0x3e, 0xc6, 0xa9, 0x93,
+ 0x4c, 0x0a, 0x77, 0xf0, 0x27, 0x8f, 0x43, 0x04, 0x83, 0xe8, 0xf8, 0xd0, 0xa7, 0xc5, 0x09, 0xd3,
+ 0x69, 0x93, 0xf2, 0x70, 0xfe, 0xe4, 0xde, 0x3b, 0x15, 0xee, 0xb9, 0x1e, 0xce, 0xb6, 0x44, 0x5d,
+ 0x91, 0x4d, 0xaf, 0x81, 0xd4, 0x24, 0xe7, 0x98, 0xb3, 0xc1, 0x96, 0xfb, 0x1f, 0x50, 0x4c, 0x33,
+ 0xa9, 0x90, 0xcb, 0xfc, 0x6b, 0x52, 0x32, 0xb8, 0xe9, 0xbe, 0x81, 0xaf, 0x88, 0x87, 0xed, 0x85,
+ 0x24, 0xb7, 0x6f, 0x47, 0x3c, 0x7b, 0x49, 0x12, 0xda, 0x25, 0xab, 0x8f, 0xdb, 0xd7, 0x2b, 0xf1,
+ 0x1d, 0x03, 0x9f, 0xb3, 0x17, 0x01, 0xc4, 0x88, 0x77, 0xdd, 0x6d, 0xa8, 0x61, 0x9e, 0xeb, 0x61,
+ 0x77, 0xa0, 0x1a, 0x6e, 0x43, 0x1d, 0x98, 0x71, 0x1b, 0x6a, 0x16, 0x40, 0xed, 0x21, 0x83, 0x03,
+ 0xd7, 0x81, 0xa9, 0x6d, 0x6c, 0xcf, 0x0f, 0x00, 0x0e, 0x46, 0x9d, 0x29, 0x65, 0xec, 0x88, 0xb1,
+ 0xcd, 0xec, 0x17, 0x2e, 0x40, 0xe3, 0x4f, 0xd4, 0xc6, 0xe2, 0xf1, 0x27, 0x46, 0x85, 0x3d, 0xd5,
+ 0xdd, 0x6f, 0x33, 0x34, 0x08, 0xa9, 0x5a, 0xb6, 0x80, 0x73, 0xe5, 0x03, 0x57, 0x21, 0xec, 0x3e,
+ 0x93, 0x4c, 0x78, 0x45, 0xde, 0x8b, 0xca, 0x20, 0xcb, 0xeb, 0xd1, 0x79, 0x44, 0x38, 0xe6, 0x6c,
+ 0xe5, 0x22, 0x75, 0x8d, 0x75, 0xe0, 0xdf, 0x83, 0x8f, 0x47, 0x1a, 0x9b, 0xf9, 0x0e, 0x1a, 0x00,
+ 0x57, 0x82, 0x9b, 0xc7, 0xe2, 0xfa, 0xad, 0xfd, 0x1d, 0xb0, 0x0e, 0xca, 0x7f, 0xab, 0xb5, 0x64,
+ 0x09, 0xdd, 0x3e, 0xf0, 0x72, 0x78, 0x85, 0x3b, 0xa0, 0xd1, 0x8b, 0x83, 0x0b, 0x9c, 0x06, 0x60,
+ 0x77, 0x5c, 0xed, 0x5e, 0xac, 0x95, 0x5a, 0x3d, 0x8c, 0xc5, 0xc2, 0x75, 0x18, 0x59, 0x9d, 0x66,
+ 0x32, 0x7b, 0x05, 0xc2, 0x3a, 0x2f, 0x12, 0x9c, 0x6d, 0x63, 0xcf, 0x63, 0xc8, 0x78, 0xd2, 0x78,
+ 0x02, 0x34, 0xe6, 0x75, 0x8f, 0x94, 0xd7, 0xc1, 0x1d, 0xb8, 0x5a, 0xcf, 0xd2, 0xd8, 0x14, 0xbc,
+ 0xe5, 0x0e, 0x29, 0xcf, 0xc7, 0x9e, 0x62, 0x4f, 0x82, 0x44, 0x90, 0x21, 0xf9, 0x75, 0x44, 0x4f,
+ 0x71, 0x20, 0xde, 0x7c, 0xa7, 0xf1, 0x1c, 0x34, 0x5c, 0xf1, 0xfa, 0x06, 0xf4, 0x03, 0x5e, 0x81,
+ 0x40, 0xa4, 0x9b, 0x13, 0x8b, 0x55, 0x7d, 0x38, 0xef, 0x17, 0x3a, 0x73, 0x65, 0x17, 0x56, 0x36,
+ 0x83, 0x10, 0x95, 0xc2, 0x3c, 0x50, 0x15, 0xa6, 0x9a, 0xa1, 0x03, 0x19, 0xe1, 0xc9, 0x66, 0xe5,
+ 0xe8, 0xd2, 0x80, 0x86, 0xa8, 0x69, 0xea, 0x28, 0x7f, 0x97, 0xaa, 0xce, 0x7a, 0x79, 0x37, 0x64,
+ 0x8b, 0x16, 0xf3, 0xc9, 0x10, 0x80, 0xf1, 0x0b, 0xed, 0xf2, 0x5b, 0x08, 0xc8, 0x62, 0xbc, 0x6a,
+ 0x01, 0x73, 0xb6, 0x4c, 0x85, 0x53, 0xb5, 0x0a, 0xcd, 0x21, 0x53, 0x3f, 0xc9, 0xc0, 0x32, 0x87,
+ 0x3a, 0x66, 0xb2, 0x80, 0xac, 0x27, 0x97, 0xd2, 0xc3, 0xdf, 0x8a, 0xd6, 0xa8, 0x51, 0x05, 0x9c,
+ 0xab, 0x8c, 0x5f, 0x8a, 0xaa, 0x0f, 0x59, 0xae, 0xab, 0xce, 0x29, 0x60, 0x04, 0x35, 0x92, 0xf5,
+ 0x06, 0xdb, 0x60, 0x74, 0x4b, 0x95, 0xed, 0x30, 0xb2, 0x2e, 0x8c, 0x98, 0xfb, 0xf9, 0x0e, 0x16,
+ 0xac, 0x29, 0xe7, 0xc2, 0x70, 0x1a, 0x42, 0x19, 0x95, 0x09, 0x50, 0x81, 0x0c, 0x83, 0xc1, 0x58,
+ 0xa2, 0xbc, 0x4a, 0xdd, 0x5e, 0xb0, 0x17, 0x74, 0x40, 0xa3, 0x6c, 0xc6, 0x54, 0xb5, 0x26, 0x19,
+ 0x06, 0x8e, 0x5b, 0x94, 0xb7, 0x98, 0xa0, 0xdd, 0xf8, 0xb3, 0x77, 0xc9, 0x2a, 0x06, 0x9c, 0x3a,
+ 0x61, 0xb6, 0xea, 0x98, 0x7b, 0x3a, 0x43, 0x40, 0x28, 0x3a, 0x95, 0xe7, 0x96, 0xd0, 0x1a, 0xf5,
+ 0x21, 0xd4, 0x07, 0xf1, 0x41, 0x28, 0xe2, 0xbd, 0xcb, 0x7e, 0x10, 0xe6, 0x5c, 0xe5, 0x3f, 0xef,
+ 0xa3, 0xf4, 0xa8, 0x57, 0xbd, 0x13, 0x1f, 0xe0, 0x08, 0xb1, 0x36, 0xf8, 0xdf, 0xae, 0xb7, 0x40,
+ 0xd1, 0xc5, 0xc1, 0x10, 0xae, 0x26, 0x82, 0xbe, 0x68, 0x85, 0x79, 0x01, 0x3d, 0x1d, 0x0b, 0x79,
+ 0x8e, 0x0a, 0x59, 0xe2, 0xbb, 0xe3, 0xd9, 0xea, 0xe3, 0x28, 0x63, 0x54, 0xe8, 0xbc, 0x3d, 0xf6,
+ 0x7f, 0x87, 0xc9, 0xa5, 0x94, 0x55, 0xf2, 0xa7, 0xdd, 0x5e, 0x6a, 0xec, 0x8e, 0x26, 0x56, 0x9f,
+ 0xb8, 0x53, 0xb3, 0x9c, 0x7b, 0x01, 0xd7, 0x25, 0xc9, 0x59, 0xb0, 0x1f, 0x72, 0xca, 0x5c, 0x90,
+ 0xc1, 0xa6, 0x94, 0x4d, 0x4c, 0x3d, 0x9a, 0x1e, 0xb3, 0x32, 0x7d, 0x49, 0x60, 0x52, 0x91, 0xd3,
+ 0xc0, 0xdb, 0xee, 0x36, 0x2b, 0xba, 0x40, 0x46, 0xa3, 0x5f, 0xd0, 0xf9, 0x05, 0x60, 0x68, 0x52,
+ 0x8a, 0x1a, 0x5e, 0x80, 0x45, 0xb5, 0x29, 0x1f, 0xc6, 0xd2, 0x84, 0x5f, 0xe8, 0xb6, 0x28, 0xbf,
+ 0x58, 0x4c, 0x71, 0x91, 0x4d, 0x9d, 0xa0, 0x22, 0x36, 0x25, 0x14, 0xbd, 0x63, 0x6c, 0xa8, 0x42,
+ 0xb6, 0x29, 0x3b, 0xd5, 0xf2, 0x9a, 0xab, 0xce, 0x7b, 0xc8, 0x10, 0x54, 0x41, 0xa3, 0xdc, 0xa9,
+ 0xcc, 0xbf, 0x45, 0x89, 0xec, 0xe5, 0xec, 0x47, 0x00, 0x63, 0xe5, 0xdf, 0xee, 0x55, 0xe7, 0xc1,
+ 0xab, 0xb8, 0x00, 0x13, 0x3d, 0x66, 0xe1, 0x60, 0x91, 0xb1, 0xbf, 0x3f, 0x75, 0x36, 0xb0, 0xeb,
+ 0x22, 0x0a, 0xdb, 0x25, 0xa9, 0x7a, 0x03, 0x15, 0xc7, 0x6e, 0x72, 0x46, 0xfa, 0x05, 0x9d, 0x62,
+ 0x52, 0xe3, 0x90, 0x2c, 0xca, 0xa3, 0x8b, 0x83, 0x93, 0x88, 0xf8, 0x5c, 0x1c, 0xf8, 0xf0, 0xef,
+ 0xa1, 0x69, 0x04, 0x21, 0x7d, 0xaf, 0x71, 0x86, 0x9c, 0x06, 0xc1, 0x52, 0x8b, 0x78, 0x8b, 0x05,
+ 0xe8, 0xad, 0xd0, 0xf6, 0x38, 0xc4, 0x1e, 0x02, 0xf5, 0x09, 0x2b, 0x3b, 0x48, 0x5e, 0xa7, 0x38,
+ 0x38, 0x7e, 0xbb, 0x9e, 0x78, 0xa4, 0xf4, 0x17, 0xe6, 0x12, 0xcd, 0x4b, 0xa4, 0xa5, 0x2b, 0x0f,
+ 0x55, 0x33, 0xeb, 0x26, 0x69, 0x20, 0x2d, 0x09, 0xed, 0xc4, 0x7a, 0x43, 0x8e, 0xfe, 0x39, 0xb1,
+ 0xb6, 0x57, 0xac, 0x92, 0x32, 0x37, 0xa0, 0x2f, 0xf9, 0x47, 0xec, 0x16, 0xad, 0xce, 0xbb, 0x1b,
+ 0x68, 0x0c, 0x11, 0xc2, 0x7a, 0xa2, 0x70, 0x7d, 0x09, 0x8c, 0x89, 0x26, 0x27, 0x1b, 0x24, 0x18,
+ 0xcc, 0xc1, 0x7f, 0x4e, 0xa5, 0x72, 0x8b, 0x36, 0x87, 0xbf, 0xd1, 0xa5, 0x63, 0x51, 0x55, 0x07,
+ 0xfa, 0x88, 0x27, 0xa9, 0xbd, 0xe2, 0x47, 0x52, 0xe6, 0xe3, 0x52, 0xa5, 0x22, 0x1d, 0x0c, 0x82,
+ 0xf9, 0xcd, 0x28, 0x30, 0x2a, 0x0c, 0x99, 0xbf, 0x60, 0xf6, 0x2f, 0xf5, 0x0a, 0x12, 0x60, 0x89,
+ 0x51, 0x86, 0x94, 0xf9, 0x84, 0x74, 0x54, 0xad, 0x3e, 0x38, 0xf0, 0x6b, 0x4a, 0x00, 0xeb, 0x69,
+ 0x0c, 0x70, 0x5b, 0x28, 0xd4, 0xf3, 0x40, 0x80, 0x50, 0xbe, 0x55, 0xb2, 0x9e, 0x8e, 0x1a, 0x06,
+ 0x87, 0xe0, 0x10, 0xae, 0x00, 0x66, 0xe7, 0x40, 0x40, 0xe5, 0x06, 0x69, 0xe9, 0x56, 0x66, 0x06,
+ 0x70, 0xe1, 0xdd, 0xd2, 0x4b, 0x2a, 0x90, 0x16, 0x15, 0x88, 0xe7, 0x8b, 0x10, 0x70, 0xb4, 0x4f,
+ 0xe6, 0xd6, 0x63, 0x03, 0x73, 0x8e, 0x85, 0x76, 0xbb, 0x44, 0xf9, 0x86, 0x72, 0x37, 0xc6, 0xd8,
+ 0x2f, 0xe5, 0x81, 0x5c, 0x1e, 0x07, 0x9b, 0xb7, 0x62, 0x43, 0x5c, 0x45, 0x2e, 0x84, 0xbf, 0x80,
+ 0x36, 0x28, 0x8c, 0xf4, 0xd3, 0x20, 0x14, 0x8a, 0x39, 0xeb, 0x8b, 0x3a, 0x29, 0x99, 0xda, 0xd9,
+ 0x1e, 0x8a, 0xbb, 0x39, 0xdb, 0xbf, 0x54, 0xf9, 0x28, 0x16, 0x23, 0xb7, 0x6e, 0xb4, 0x87, 0x4d,
+ 0x9a, 0xb4, 0xd5, 0xc2, 0x61, 0x20, 0x42, 0x28, 0xdf, 0x82, 0xa1, 0x11, 0x84, 0xdd, 0x79, 0x9d,
+ 0xc9, 0x2b, 0x32, 0xe3, 0xb8, 0xbd, 0x35, 0x20, 0xe3, 0xde, 0x50, 0x64, 0x83, 0x4f, 0x3c, 0xbe,
+ 0x28, 0xc8, 0x74, 0x9b, 0x64, 0xd2, 0x49, 0x56, 0x3d, 0x5d, 0x2b, 0xd2, 0xcb, 0xfb, 0x71, 0x2e,
+ 0xf7, 0xef, 0xc7, 0x99, 0xd6, 0x0c, 0xde, 0x72, 0x9c, 0x5f, 0x88, 0xf1, 0x0b, 0xd1, 0xca, 0x2c,
+ 0xea, 0x3e, 0xc4, 0x6c, 0x0c, 0xb4, 0x80, 0xba, 0xe5, 0x7a, 0x89, 0xce, 0xc7, 0x60, 0x03, 0x27,
+ 0x4b, 0x2f, 0xdd, 0x64, 0x29, 0x45, 0xb3, 0xcd, 0xca, 0xf0, 0xc2, 0xd1, 0x53, 0x6a, 0xb7, 0x9a,
+ 0x0a, 0xb4, 0xab, 0xee, 0x46, 0xd7, 0xc9, 0xe8, 0x96, 0x3f, 0xfe, 0x10, 0x50, 0x31, 0x53, 0x47,
+ 0xca, 0x4c, 0x1d, 0x29, 0xe8, 0x4a, 0xa7, 0x7c, 0x15, 0x13, 0x74, 0xa5, 0x96, 0xa9, 0xae, 0xd4,
+ 0xbd, 0x92, 0x49, 0x2b, 0xbd, 0x1e, 0x8d, 0xd6, 0xe2, 0xe3, 0x18, 0xb4, 0x04, 0xcf, 0x68, 0x48,
+ 0x94, 0xf4, 0x7a, 0x1c, 0xcd, 0x30, 0xd0, 0x0c, 0x1d, 0xc9, 0x06, 0xcb, 0xe1, 0xa6, 0xf5, 0xb9,
+ 0xd7, 0xdc, 0xd5, 0xc7, 0x11, 0xa6, 0xda, 0x5d, 0x6e, 0xb0, 0xbf, 0x7e, 0xf9, 0xc8, 0x07, 0xd0,
+ 0x9f, 0x8d, 0xf6, 0x67, 0xa3, 0xfd, 0x81, 0x27, 0xa2, 0x55, 0xb6, 0x07, 0xfb, 0xcb, 0x0c, 0xf4,
+ 0xb7, 0x50, 0x3c, 0x72, 0x13, 0x2a, 0x32, 0xce, 0x04, 0xf9, 0x08, 0x82, 0xcf, 0x55, 0xae, 0x44,
+ 0x53, 0x21, 0x87, 0x41, 0x4e, 0x01, 0xb3, 0xfa, 0xd4, 0xc2, 0x80, 0xd6, 0xe6, 0x9a, 0x95, 0xd4,
+ 0xc9, 0xaa, 0x5f, 0xe6, 0x0b, 0x74, 0x99, 0x7f, 0x47, 0x83, 0x56, 0x12, 0xeb, 0x71, 0x62, 0x02,
+ 0xea, 0xeb, 0xc8, 0xe0, 0x78, 0x5e, 0xcf, 0xd5, 0xcc, 0x45, 0xb5, 0x11, 0x40, 0x20, 0xa2, 0x45,
+ 0x37, 0x18, 0x82, 0xd3, 0xc6, 0x13, 0x60, 0xdb, 0xad, 0x20, 0x4d, 0xa1, 0x18, 0xb6, 0xdd, 0x20,
+ 0xad, 0x93, 0xc1, 0x51, 0x81, 0x18, 0xf6, 0xdf, 0xa9, 0xa4, 0xe5, 0x75, 0x4b, 0x07, 0x90, 0xe1,
+ 0xa0, 0x32, 0x36, 0x0b, 0x08, 0xd4, 0x0d, 0x72, 0x46, 0x79, 0xef, 0x2b, 0xd5, 0x47, 0x68, 0x24,
+ 0xd6, 0x0e, 0x22, 0x1c, 0x4e, 0x18, 0xc0, 0x4d, 0x00, 0x41, 0x3f, 0x4d, 0x68, 0x05, 0x1b, 0xbf,
+ 0x0f, 0x84, 0xdb, 0xd4, 0x0d, 0x73, 0x27, 0xdf, 0xce, 0x0e, 0x03, 0xcf, 0xb9, 0x7d, 0x43, 0x30,
+ 0x27, 0xf3, 0x37, 0xee, 0xe7, 0xdb, 0x25, 0x53, 0x67, 0x2c, 0x18, 0x81, 0x6e, 0xe8, 0x25, 0xa1,
+ 0x81, 0x4a, 0x53, 0x67, 0xec, 0x59, 0x88, 0xdb, 0x92, 0xda, 0x88, 0x2f, 0x76, 0x90, 0x4b, 0x1d,
+ 0x21, 0x95, 0x17, 0x68, 0xac, 0xe7, 0x06, 0xe4, 0xfa, 0x93, 0x67, 0x6b, 0x85, 0x28, 0x89, 0x8f,
+ 0x93, 0xe2, 0xde, 0x40, 0x4d, 0x80, 0x68, 0xfb, 0x1e, 0xaa, 0xd4, 0x31, 0x18, 0x63, 0xd6, 0x4b,
+ 0x95, 0xdd, 0xb9, 0x4a, 0xa1, 0x31, 0x48, 0x02, 0xbf, 0x70, 0xda, 0xac, 0xbc, 0x4a, 0x9d, 0x63,
+ 0x1d, 0x77, 0x30, 0x7c, 0x55, 0x24, 0x6e, 0x97, 0xb9, 0xd6, 0xa0, 0xd1, 0x18, 0x10, 0x9b, 0x75,
+ 0x80, 0x20, 0x11, 0xda, 0xc1, 0xb1, 0x0d, 0x67, 0x80, 0xa1, 0x21, 0xce, 0x12, 0xf4, 0xf6, 0xef,
+ 0x43, 0x76, 0x9c, 0x20, 0xc3, 0x49, 0x53, 0xb7, 0xeb, 0x52, 0xc4, 0x06, 0x5d, 0x52, 0x8b, 0x70,
+ 0x93, 0x78, 0xbc, 0x5a, 0x5c, 0x0a, 0x19, 0x8f, 0x46, 0x40, 0xb7, 0x5a, 0x4a, 0xff, 0xe9, 0x60,
+ 0x60, 0x4c, 0x42, 0xf7, 0xc0, 0x97, 0x38, 0x20, 0x1f, 0x77, 0x70, 0xcd, 0x4f, 0xbf, 0xe5, 0xf6,
+ 0x9d, 0x61, 0xdb, 0xd0, 0x1a, 0x82, 0x73, 0x90, 0x8d, 0xb2, 0x59, 0xaf, 0x1c, 0x98, 0x12, 0x60,
+ 0xa0, 0xda, 0xbb, 0xf3, 0x67, 0x5d, 0xff, 0xc3, 0xa8, 0x1b, 0x01, 0x6d, 0x8c, 0xda, 0xd1, 0x8a,
+ 0xa9, 0x40, 0x0f, 0xf1, 0x33, 0xc6, 0xc1, 0x05, 0xba, 0xfb, 0x3b, 0xd8, 0x9d, 0x4a, 0x9f, 0x77,
+ 0xbc, 0xeb, 0x04, 0xc2, 0xad, 0xc1, 0xfd, 0x14, 0x59, 0xb3, 0x5a, 0x5a, 0xf3, 0xc2, 0xcd, 0x84,
+ 0x53, 0x92, 0xb5, 0x43, 0xbc, 0x02, 0xd8, 0xae, 0x79, 0x61, 0x30, 0xe9, 0x14, 0xbe, 0x89, 0x3f,
+ 0xa3, 0xc5, 0x2f, 0x84, 0x6e, 0xf8, 0x56, 0xaa, 0x8c, 0xf1, 0x1f, 0xdc, 0x40, 0x65, 0x3a, 0x26,
+ 0x51, 0x9d, 0x0c, 0x5e, 0xc0, 0x64, 0xd0, 0xaa, 0xf4, 0x0d, 0x7c, 0xc1, 0x5e, 0x0c, 0xe5, 0x6f,
+ 0x4c, 0x16, 0xc0, 0xe9, 0x69, 0x91, 0xf2, 0x0e, 0xb3, 0x97, 0x61, 0xd6, 0x92, 0x2a, 0xdd, 0xb9,
+ 0x36, 0x70, 0x77, 0xf8, 0x18, 0x7f, 0xa2, 0xa2, 0x9d, 0xa2, 0x4e, 0x95, 0x31, 0x2c, 0x70, 0xa4,
+ 0x75, 0xb2, 0x15, 0x4a, 0x75, 0x49, 0x43, 0xa4, 0x15, 0xf8, 0x18, 0x0b, 0xcc, 0x8c, 0xe1, 0xf6,
+ 0x2a, 0xd4, 0x96, 0xaf, 0x54, 0xa3, 0xce, 0x9f, 0x67, 0xd3, 0xb0, 0x45, 0x97, 0x4d, 0x43, 0xb3,
+ 0x11, 0x10, 0x44, 0xfb, 0xe3, 0x30, 0x97, 0x79, 0x7b, 0xed, 0xcf, 0x80, 0xc0, 0x79, 0xbd, 0x20,
+ 0x6d, 0x60, 0xac, 0x25, 0x2b, 0xcc, 0x04, 0xa7, 0x15, 0x3d, 0xce, 0x34, 0x1e, 0xa3, 0x1b, 0xfc,
+ 0xf6, 0x50, 0xb0, 0x1b, 0xa0, 0xde, 0x77, 0x5c, 0xa2, 0x2c, 0x94, 0xa5, 0x33, 0x24, 0x0a, 0xf4,
+ 0x4e, 0xfe, 0xf0, 0x3b, 0xd4, 0x3b, 0xdc, 0xc6, 0x36, 0x9b, 0xb3, 0x73, 0x14, 0xe1, 0x2e, 0xd5,
+ 0x03, 0x73, 0x7d, 0x0e, 0xf9, 0xa5, 0xa1, 0xf6, 0x47, 0xa1, 0x33, 0xb3, 0xb2, 0x32, 0x2a, 0x18,
+ 0x3c, 0xad, 0x94, 0x5d, 0x23, 0xa3, 0x4b, 0x66, 0xdf, 0x2e, 0x99, 0x2d, 0xbb, 0xf6, 0x61, 0x49,
+ 0x98, 0x3d, 0x61, 0x1d, 0x96, 0x68, 0x6f, 0x97, 0x80, 0xff, 0x9c, 0xd9, 0xb5, 0x0b, 0x98, 0x59,
+ 0xf7, 0xd6, 0x21, 0x5c, 0xc6, 0x39, 0x70, 0xaa, 0x7e, 0x10, 0x17, 0x36, 0xfc, 0x99, 0xcb, 0xdf,
+ 0x48, 0xb4, 0xb2, 0x8c, 0x53, 0x9b, 0x2c, 0xfc, 0xa3, 0xeb, 0x27, 0x28, 0x27, 0x26, 0xe0, 0xac,
+ 0x7c, 0x90, 0xae, 0xf5, 0xb4, 0xd1, 0x4a, 0xc5, 0x2b, 0x6a, 0xe7, 0x62, 0x95, 0x48, 0xd1, 0x1d,
+ 0x22, 0xf4, 0x76, 0x2d, 0x62, 0xe9, 0x52, 0xe8, 0x91, 0xef, 0xe8, 0xe2, 0x9b, 0xa7, 0x33, 0x4c,
+ 0x4e, 0x0f, 0xc1, 0xf5, 0x38, 0x72, 0xe9, 0x17, 0xa4, 0xb2, 0x75, 0x00, 0x5e, 0x3b, 0xa0, 0xf8,
+ 0x18, 0x14, 0x43, 0x78, 0x19, 0x2e, 0xb9, 0x4e, 0x53, 0x50, 0x47, 0x3e, 0xa1, 0x3f, 0x97, 0x70,
+ 0x01, 0xe3, 0xe0, 0x91, 0x06, 0x2c, 0xf5, 0x4b, 0xaf, 0xb7, 0x22, 0x90, 0xca, 0x1b, 0xe0, 0x65,
+ 0x73, 0xe9, 0xc3, 0x75, 0x47, 0x0e, 0x53, 0xd4, 0xa0, 0x8e, 0xc2, 0xed, 0x1b, 0x0e, 0xad, 0xec,
+ 0x06, 0xde, 0xb3, 0xc3, 0x09, 0xb8, 0xaf, 0x22, 0xf8, 0x56, 0xdd, 0xe4, 0x18, 0x66, 0x7b, 0x44,
+ 0x73, 0x86, 0x46, 0x07, 0x64, 0xf5, 0x4e, 0x5c, 0x75, 0x13, 0x7c, 0xbb, 0xed, 0x7a, 0x48, 0xeb,
+ 0xd5, 0x9d, 0x18, 0x74, 0x10, 0xbc, 0x93, 0x20, 0x8d, 0x5b, 0x32, 0xfb, 0x61, 0x02, 0xf7, 0x49,
+ 0x7c, 0x27, 0xa8, 0x18, 0xce, 0x32, 0xd6, 0xee, 0x62, 0xb2, 0x56, 0x57, 0xbb, 0x71, 0x62, 0x31,
+ 0xb1, 0xe9, 0x6b, 0xf7, 0x4c, 0x92, 0x5c, 0x2d, 0xd8, 0x73, 0x46, 0x34, 0x18, 0x77, 0xb2, 0x31,
+ 0x46, 0x92, 0xdb, 0x31, 0xb9, 0x36, 0x9e, 0xd8, 0xe2, 0x24, 0xbe, 0xbd, 0x98, 0x64, 0xcc, 0xe5,
+ 0xf6, 0xdd, 0x62, 0x2f, 0x91, 0x3d, 0xf3, 0x8c, 0x57, 0x81, 0x73, 0x88, 0x40, 0x6b, 0x15, 0xb8,
+ 0xeb, 0x24, 0x23, 0xd1, 0xa9, 0x97, 0xf3, 0x3e, 0x2c, 0x26, 0x8f, 0x4c, 0xf5, 0x74, 0xe9, 0xe1,
+ 0x27, 0xda, 0x1b, 0xc2, 0x36, 0x93, 0x3d, 0x06, 0xa3, 0x5f, 0xe6, 0x4f, 0x63, 0x54, 0x04, 0x56,
+ 0xe8, 0xb2, 0x1a, 0xd6, 0xb9, 0xdc, 0xf5, 0x74, 0xb9, 0x16, 0x78, 0x7f, 0x9a, 0x64, 0x40, 0xb0,
+ 0x58, 0x7d, 0x1c, 0xb9, 0x3e, 0xc6, 0x33, 0xae, 0x41, 0x55, 0x46, 0x69, 0x79, 0x43, 0x41, 0x6e,
+ 0x1b, 0xaf, 0xe2, 0x42, 0x5b, 0x2d, 0x66, 0x9a, 0x74, 0x46, 0xff, 0xba, 0xaa, 0xdd, 0x49, 0xec,
+ 0x02, 0xf9, 0x39, 0xd6, 0xd9, 0x2f, 0xf1, 0x6f, 0x82, 0x79, 0x82, 0x69, 0x7d, 0xd0, 0x20, 0x44,
+ 0x4b, 0xfc, 0x61, 0xf9, 0x75, 0x75, 0x1d, 0x3b, 0x75, 0xaa, 0x47, 0x01, 0x3c, 0x52, 0xa3, 0x65,
+ 0x4d, 0x92, 0xb1, 0xff, 0xd3, 0x5b, 0xb8, 0xd5, 0x74, 0xe0, 0xc5, 0x98, 0x30, 0x44, 0x01, 0x62,
+ 0xc6, 0x48, 0xd7, 0x09, 0xe7, 0xa6, 0xb5, 0x69, 0x82, 0xd7, 0xbb, 0x9b, 0xf4, 0x0c, 0x5c, 0xce,
+ 0x36, 0xcb, 0xae, 0x0a, 0xb4, 0xf2, 0xb8, 0xa6, 0xb6, 0x79, 0x19, 0x95, 0x8e, 0xa6, 0x9a, 0xe9,
+ 0x08, 0x8a, 0x01, 0x1c, 0x80, 0x4e, 0x81, 0x72, 0x39, 0xef, 0xb4, 0x45, 0x89, 0x0a, 0x8e, 0x43,
+ 0x5d, 0x3e, 0x4d, 0x18, 0xc8, 0x2c, 0x35, 0x58, 0xe4, 0x8f, 0xb1, 0xb6, 0x4d, 0x99, 0xaf, 0xb6,
+ 0x26, 0xbd, 0x80, 0xa9, 0x77, 0xef, 0xc0, 0x35, 0xdb, 0x6d, 0xd0, 0x17, 0x95, 0x49, 0xcb, 0x30,
+ 0xc4, 0x1d, 0x0b, 0x3b, 0x08, 0x98, 0x07, 0x03, 0x55, 0xaf, 0x7a, 0x8d, 0xea, 0x68, 0xff, 0x8d,
+ 0xa1, 0xf1, 0xe3, 0xdb, 0xf3, 0x02, 0xbe, 0x56, 0x69, 0x96, 0xf2, 0x9a, 0xfa, 0x0e, 0x01, 0x92,
+ 0x41, 0x16, 0xde, 0x38, 0x34, 0x01, 0xf5, 0xa8, 0xb9, 0xef, 0x7d, 0xee, 0xa0, 0xf5, 0x4b, 0x62,
+ 0x5e, 0x24, 0x4c, 0xe6, 0x0e, 0x9a, 0x3a, 0x3d, 0xd7, 0xf5, 0x11, 0xe0, 0xa0, 0xfb, 0x20, 0x83,
+ 0x34, 0x7b, 0xc3, 0x20, 0x44, 0xb1, 0xfa, 0xc0, 0xb5, 0x97, 0xf9, 0x37, 0xb8, 0x83, 0xe5, 0x3a,
+ 0x39, 0x1d, 0x23, 0xf1, 0x81, 0x7e, 0x92, 0xb9, 0x92, 0xac, 0x5b, 0x06, 0x71, 0xba, 0x3b, 0x9d,
+ 0x8e, 0xcf, 0x67, 0x56, 0xae, 0x87, 0xaa, 0x1d, 0x65, 0x26, 0x93, 0x67, 0xf5, 0xcd, 0x69, 0xd1,
+ 0x3f, 0xba, 0x1b, 0x22, 0xd5, 0xb4, 0x98, 0x75, 0xf0, 0x23, 0x65, 0x2e, 0x23, 0x69, 0x71, 0xcd,
+ 0x69, 0x06, 0x46, 0x0d, 0x58, 0x70, 0x63, 0xa5, 0xbd, 0xfa, 0x78, 0x4d, 0x70, 0xd1, 0xc9, 0x78,
+ 0xd5, 0xfb, 0x4d, 0x90, 0x73, 0xcb, 0x50, 0x57, 0x2e, 0x92, 0x53, 0xdc, 0x81, 0x94, 0x89, 0xdc,
+ 0xc1, 0x9d, 0x3a, 0x70, 0x4a, 0x64, 0xd7, 0x61, 0x0c, 0x6a, 0xc3, 0x68, 0x9c, 0x62, 0x56, 0x66,
+ 0x2d, 0x0d, 0xac, 0xe2, 0x92, 0xca, 0x6e, 0x67, 0x29, 0x77, 0xd0, 0x36, 0x55, 0x7c, 0x56, 0x63,
+ 0x10, 0x22, 0xc0, 0xf2, 0x46, 0x7b, 0x3a, 0xf5, 0x11, 0x0d, 0xe0, 0x69, 0x90, 0xcb, 0x66, 0xc5,
+ 0x1c, 0x1a, 0x98, 0xce, 0xb8, 0x9a, 0x16, 0xb4, 0x0a, 0xcd, 0x92, 0x70, 0x01, 0xc2, 0x4c, 0x6e,
+ 0x9f, 0xd0, 0x6d, 0x53, 0x88, 0x1a, 0x1c, 0x43, 0xa0, 0x3e, 0x0c, 0xb1, 0x80, 0xcd, 0x62, 0x01,
+ 0x19, 0x30, 0x2b, 0x53, 0x69, 0xb8, 0x0e, 0x72, 0xd0, 0x21, 0x6b, 0x5c, 0x88, 0x2c, 0x38, 0xfd,
+ 0x53, 0xee, 0x57, 0x97, 0x32, 0x32, 0xb8, 0x83, 0x69, 0x73, 0xa9, 0x5a, 0x8e, 0xf3, 0xd3, 0xbd,
+ 0x51, 0xe8, 0x85, 0xef, 0x20, 0x4d, 0xdc, 0xbe, 0x01, 0x9b, 0xb2, 0x5c, 0x05, 0xc7, 0x1d, 0xb4,
+ 0x00, 0xc2, 0x96, 0x79, 0xdc, 0xc1, 0x47, 0xe6, 0x42, 0x1c, 0x08, 0xee, 0x52, 0x76, 0x6e, 0x0e,
+ 0x42, 0x06, 0xa7, 0xad, 0x5f, 0xaf, 0xc6, 0x70, 0x23, 0x86, 0x8a, 0x89, 0xc6, 0xfe, 0xb5, 0x12,
+ 0xcc, 0x7c, 0x26, 0x5f, 0xd7, 0x8c, 0x10, 0xba, 0x0c, 0x2d, 0x67, 0xb3, 0xf2, 0xce, 0x89, 0xe8,
+ 0x14, 0x75, 0x63, 0x70, 0x24, 0xdc, 0xf0, 0x7c, 0x19, 0x56, 0xa7, 0x31, 0xe2, 0xba, 0xc3, 0x10,
+ 0x4e, 0x15, 0xd1, 0x46, 0xf0, 0x11, 0xc5, 0x4a, 0x1d, 0x53, 0xb7, 0xc6, 0x38, 0x9e, 0xab, 0xf9,
+ 0x1d, 0xe4, 0x55, 0x0d, 0x71, 0x9c, 0x0b, 0x26, 0x72, 0xe6, 0x83, 0x64, 0xe7, 0x34, 0x95, 0x38,
+ 0x06, 0x95, 0x52, 0x66, 0x65, 0x64, 0x71, 0x70, 0x73, 0xa1, 0x8e, 0x89, 0x9f, 0xc9, 0x1d, 0x68,
+ 0x91, 0xa3, 0x57, 0xcb, 0xe9, 0x3f, 0xeb, 0x5b, 0x15, 0x8a, 0x46, 0xe6, 0x85, 0x3d, 0x48, 0xe3,
+ 0xca, 0x4e, 0xa0, 0x08, 0xef, 0x93, 0xd3, 0x13, 0xc7, 0x83, 0xb3, 0x27, 0x47, 0xff, 0x8c, 0x54,
+ 0x9e, 0x96, 0x5f, 0x5c, 0x85, 0x00, 0xe4, 0xd7, 0xee, 0xc2, 0x9f, 0x4f, 0x6f, 0xd1, 0xd0, 0x45,
+ 0xa9, 0x4b, 0xcf, 0x8f, 0xac, 0x4d, 0x9f, 0x3a, 0x98, 0x26, 0xfc, 0x03, 0x17, 0xbe, 0x3b, 0xeb,
+ 0x34, 0xb9, 0xb5, 0xe9, 0x51, 0x61, 0xa9, 0xe2, 0x70, 0xb8, 0xd0, 0x07, 0xce, 0x59, 0x5d, 0x4a,
+ 0x1c, 0x78, 0x87, 0xb5, 0x35, 0x77, 0x35, 0x43, 0xa3, 0xba, 0x94, 0x19, 0xf0, 0xd6, 0x02, 0x6f,
+ 0xae, 0x73, 0x30, 0x1a, 0xce, 0x85, 0xd2, 0x5e, 0x8f, 0xfd, 0x56, 0x1d, 0x0e, 0x43, 0xa8, 0x06,
+ 0x41, 0x2b, 0xba, 0xfd, 0x8e, 0x1e, 0xa3, 0x3b, 0x4b, 0x96, 0x31, 0xa3, 0x29, 0x5d, 0xcb, 0x32,
+ 0xa3, 0x63, 0xb0, 0x4f, 0xd4, 0x18, 0xac, 0x01, 0xdc, 0xa4, 0x6c, 0x1a, 0x81, 0x21, 0x0b, 0x0b,
+ 0xe9, 0xe4, 0xdc, 0x5a, 0xa7, 0xed, 0xf7, 0x68, 0x25, 0x2b, 0xcc, 0x97, 0x37, 0x38, 0xd7, 0xbf,
+ 0xc3, 0xe8, 0xeb, 0xff, 0xe1, 0x47, 0x10, 0x61, 0xa7, 0x0d, 0xc9, 0xc2, 0xa0, 0xc4, 0xeb, 0xea,
+ 0x70, 0xad, 0x32, 0xdf, 0x78, 0xf5, 0x0f, 0x2c, 0x4c, 0xff, 0xc6, 0xfe, 0x8c, 0x95, 0xf3, 0x9d,
+ 0x0b, 0xc5, 0x5b, 0x5a, 0xee, 0x55, 0x8f, 0x78, 0x2b, 0x92, 0x7b, 0x01, 0xa3, 0xe1, 0xd9, 0xa6,
+ 0x4e, 0xe1, 0x59, 0xee, 0xa8, 0xdb, 0xac, 0x64, 0x46, 0x52, 0xb6, 0xd5, 0xa6, 0x4f, 0xf7, 0xa4,
+ 0x61, 0x5b, 0x4d, 0x62, 0x06, 0x84, 0x5c, 0xa7, 0xbd, 0x33, 0xfb, 0xf9, 0x4e, 0x16, 0xd8, 0xe2,
+ 0xdc, 0xa5, 0xe6, 0x7e, 0xaa, 0xa5, 0xb6, 0xb0, 0x93, 0x51, 0x97, 0x1c, 0x7f, 0x57, 0x3a, 0x5e,
+ 0xe6, 0x3d, 0x66, 0x29, 0xaf, 0xdd, 0xa2, 0x7c, 0x1b, 0x19, 0x98, 0x0b, 0x02, 0x48, 0xd5, 0xfc,
+ 0x9a, 0xca, 0x38, 0xca, 0x86, 0xca, 0x62, 0x6f, 0x5c, 0xd5, 0x90, 0x16, 0x77, 0x1a, 0x68, 0xb9,
+ 0x30, 0xd1, 0x1b, 0x60, 0xbd, 0x9a, 0xce, 0x00, 0x59, 0xe3, 0xf6, 0x35, 0x7a, 0x94, 0x30, 0xb1,
+ 0xc1, 0x20, 0x36, 0x1b, 0x92, 0x9a, 0xb8, 0xbd, 0xc3, 0x60, 0xb1, 0xbc, 0x61, 0x50, 0xcb, 0x7b,
+ 0x15, 0x04, 0x85, 0xdb, 0x97, 0x77, 0xc1, 0x92, 0xad, 0xfc, 0x74, 0xae, 0x2a, 0x86, 0xa1, 0x90,
+ 0x85, 0x7e, 0xd8, 0xb2, 0xa0, 0xf2, 0x94, 0xea, 0x94, 0xc3, 0x73, 0x83, 0x0b, 0xc8, 0xe3, 0x21,
+ 0x40, 0x30, 0x2b, 0x5f, 0x3f, 0x40, 0x71, 0xaa, 0x1f, 0x8f, 0x8b, 0x1e, 0xbb, 0xc7, 0x21, 0xc9,
+ 0x9b, 0x40, 0x6a, 0x99, 0x2c, 0xa1, 0x07, 0xb5, 0x6f, 0x99, 0xb1, 0xbf, 0xab, 0x0a, 0xe7, 0x33,
+ 0x83, 0x05, 0x3d, 0xc3, 0xc3, 0x6a, 0x6d, 0xc8, 0xb4, 0xe3, 0x76, 0x43, 0x25, 0x88, 0xc4, 0x83,
+ 0x86, 0x52, 0x83, 0x19, 0xcb, 0xde, 0x86, 0x32, 0x32, 0xa4, 0x96, 0x56, 0xf8, 0x47, 0xed, 0x3b,
+ 0xa3, 0xa7, 0xbe, 0x53, 0x63, 0x74, 0x8b, 0x7e, 0xdd, 0xa1, 0x6f, 0x38, 0x5c, 0x8e, 0x69, 0x11,
+ 0xfd, 0xfa, 0xa3, 0xdf, 0xe0, 0xce, 0x1c, 0xef, 0x8b, 0x38, 0x23, 0xfa, 0x0d, 0x9f, 0x7e, 0x03,
+ 0x36, 0x93, 0xe3, 0xaf, 0x89, 0xc3, 0x21, 0x8e, 0x2d, 0x49, 0xe7, 0x1d, 0x25, 0x32, 0xef, 0x23,
+ 0x7a, 0x63, 0xbf, 0x91, 0xae, 0x08, 0x41, 0x68, 0x8c, 0x1a, 0xf7, 0x01, 0xb5, 0x85, 0x10, 0x48,
+ 0xfb, 0x32, 0xc1, 0x9b, 0xc7, 0xaa, 0x9a, 0xa4, 0x2b, 0xdb, 0xae, 0xdb, 0x14, 0x45, 0x8d, 0x62,
+ 0xc1, 0x83, 0xe1, 0x15, 0x5c, 0x81, 0xf2, 0xcb, 0x79, 0x3e, 0xe7, 0x4c, 0x63, 0x3f, 0x31, 0xdd,
+ 0x80, 0xca, 0x24, 0xfa, 0x0f, 0x00, 0xc1, 0xa2, 0x94, 0x50, 0x93, 0x7e, 0x03, 0x2a, 0x66, 0x24,
+ 0x0d, 0x08, 0x5f, 0xd2, 0xd1, 0x91, 0x96, 0x51, 0xdb, 0xc3, 0xe8, 0xbd, 0x67, 0xe9, 0xa5, 0xec,
+ 0xe4, 0xdb, 0xee, 0xbd, 0x5f, 0xd0, 0xa3, 0xff, 0xbd, 0x80, 0xda, 0xca, 0xe8, 0x31, 0x3e, 0x7e,
+ 0x46, 0x3a, 0x8d, 0x81, 0xb7, 0x25, 0x2b, 0xb3, 0x68, 0xef, 0xda, 0xd2, 0x2c, 0x9b, 0x32, 0xe5,
+ 0xbe, 0x51, 0x5e, 0x3d, 0x1d, 0xbc, 0x81, 0x58, 0x2f, 0xe0, 0x61, 0x13, 0x3e, 0x7a, 0x3c, 0x1f,
+ 0xc3, 0xd5, 0xfc, 0x85, 0xa1, 0x2a, 0xcc, 0x1d, 0x4c, 0xd1, 0x71, 0x07, 0x56, 0x4f, 0x84, 0xd0,
+ 0x85, 0x98, 0xda, 0x55, 0xaf, 0xb7, 0x03, 0xb0, 0x0d, 0x35, 0xe9, 0x88, 0x49, 0x99, 0x6c, 0xd5,
+ 0xc3, 0xdc, 0x60, 0x74, 0x9b, 0xc1, 0xa1, 0xb3, 0xe5, 0x64, 0x2b, 0xee, 0x0e, 0xd5, 0xc7, 0x85,
+ 0xa9, 0xf4, 0xbc, 0x54, 0x19, 0x7d, 0x7f, 0x25, 0x04, 0x43, 0x31, 0xd3, 0x4c, 0x20, 0x0b, 0xd7,
+ 0x60, 0x7a, 0x05, 0x57, 0xf0, 0x0a, 0x04, 0x83, 0x09, 0x8d, 0x24, 0x0f, 0x3d, 0xd3, 0xd8, 0x56,
+ 0x08, 0xd3, 0x12, 0xae, 0xd1, 0x5d, 0xca, 0xd8, 0xc6, 0xa4, 0x01, 0xd2, 0x12, 0xdb, 0xce, 0xa5,
+ 0x5e, 0xe6, 0x52, 0x07, 0x30, 0x6c, 0x82, 0xd8, 0x58, 0x57, 0x2b, 0x7a, 0x46, 0x70, 0x11, 0xe9,
+ 0x40, 0x2a, 0xf4, 0xef, 0x31, 0x9e, 0x08, 0x4d, 0x35, 0x70, 0xaf, 0x78, 0xb8, 0x83, 0x39, 0x60,
+ 0x8e, 0x4e, 0x0e, 0x7c, 0xce, 0xb6, 0x85, 0xf2, 0xca, 0x64, 0x60, 0x99, 0x55, 0x2b, 0x55, 0xde,
+ 0x60, 0x87, 0x2d, 0xb6, 0x6c, 0x73, 0x0e, 0xee, 0x18, 0x24, 0x42, 0xdf, 0xca, 0xe3, 0x3a, 0x9c,
+ 0x2c, 0x3b, 0x28, 0x1d, 0x63, 0x70, 0x3d, 0x2a, 0x26, 0xea, 0x0a, 0xfa, 0x6a, 0xb1, 0x3e, 0x6e,
+ 0x2f, 0x6e, 0xbb, 0x8a, 0xc7, 0x0d, 0xa3, 0x26, 0x57, 0xb3, 0x54, 0xa9, 0x95, 0x52, 0x34, 0x78,
+ 0xe8, 0xe3, 0x5e, 0x71, 0x50, 0x2f, 0xa4, 0x43, 0xbc, 0x3b, 0x8e, 0x3b, 0xf8, 0x0c, 0xf4, 0xf4,
+ 0x4c, 0x9c, 0x1c, 0x6d, 0x33, 0x97, 0x86, 0x98, 0x73, 0x72, 0xfd, 0x46, 0x25, 0x4c, 0x87, 0x84,
+ 0x8b, 0xf3, 0x3e, 0x43, 0x29, 0xb3, 0x2f, 0x25, 0x4e, 0xd6, 0xbc, 0x6c, 0x3c, 0x97, 0x83, 0x61,
+ 0x1c, 0x16, 0x7f, 0x39, 0x5e, 0x5d, 0x7c, 0x79, 0x2a, 0x94, 0xf3, 0x3e, 0x82, 0x30, 0x64, 0xa1,
+ 0xb7, 0x18, 0x4f, 0x76, 0x04, 0x61, 0x91, 0x4b, 0xe4, 0x7c, 0x9b, 0x97, 0x3d, 0xcf, 0xf6, 0x21,
+ 0x48, 0x0b, 0x14, 0xdb, 0xa0, 0xd9, 0xbe, 0xf1, 0x41, 0x37, 0x98, 0xee, 0x29, 0xcd, 0xf1, 0x83,
+ 0xf0, 0x91, 0xe1, 0xfe, 0x06, 0x96, 0xc3, 0x3d, 0x1a, 0x2d, 0x61, 0x41, 0x16, 0x82, 0xd8, 0xa2,
+ 0x04, 0x37, 0xfc, 0x83, 0x2e, 0x19, 0x80, 0xaf, 0x16, 0x92, 0xd7, 0x98, 0xd7, 0xd5, 0xd6, 0x4b,
+ 0x85, 0x38, 0xaf, 0xeb, 0x27, 0xbd, 0x41, 0x69, 0x96, 0xf2, 0x74, 0x16, 0xe5, 0xda, 0xb8, 0x80,
+ 0xab, 0x2f, 0x36, 0x85, 0xd8, 0x94, 0xa7, 0xe7, 0x04, 0x14, 0xaa, 0x6a, 0xc5, 0x02, 0x41, 0x63,
+ 0xc9, 0xf5, 0x6a, 0x9b, 0xc6, 0x2d, 0x20, 0x83, 0xc9, 0x16, 0xb3, 0xb2, 0x34, 0x5c, 0x75, 0x88,
+ 0xf3, 0xb4, 0x55, 0xcf, 0x4e, 0x60, 0x9c, 0x51, 0xb9, 0xf6, 0xbf, 0x81, 0xa3, 0x6a, 0x51, 0xe6,
+ 0xd0, 0x19, 0x40, 0xe7, 0x4d, 0xcc, 0xb5, 0x28, 0xef, 0x29, 0x74, 0xfd, 0x01, 0xfc, 0xb4, 0x38,
+ 0x48, 0xfd, 0x38, 0x24, 0x30, 0xdd, 0x0b, 0x13, 0x21, 0xf5, 0xe8, 0x40, 0xa0, 0xcc, 0x39, 0x9e,
+ 0xec, 0xd0, 0x92, 0x72, 0x75, 0x9d, 0xdb, 0xe8, 0xf6, 0x0e, 0x50, 0x41, 0x14, 0xb4, 0x55, 0x0f,
+ 0x32, 0xce, 0x29, 0x55, 0x60, 0xa2, 0x85, 0xbb, 0xfd, 0xdb, 0xe2, 0xfc, 0xdb, 0xf4, 0xca, 0x6b,
+ 0xf1, 0xaa, 0xea, 0x8f, 0xb3, 0xf9, 0x6d, 0x31, 0x80, 0x96, 0x7f, 0x9b, 0xce, 0xbf, 0x4d, 0xab,
+ 0x54, 0xaa, 0xd9, 0xa5, 0x89, 0x36, 0xc5, 0x11, 0x3f, 0x4a, 0x46, 0xe9, 0x8a, 0x20, 0xe3, 0xbc,
+ 0x5b, 0x32, 0xe9, 0x43, 0xb3, 0x40, 0xd6, 0x63, 0xb2, 0x51, 0xde, 0x2f, 0xd2, 0x8d, 0x19, 0x1d,
+ 0xd0, 0xc0, 0xff, 0x44, 0x34, 0xd4, 0x02, 0x51, 0x34, 0xab, 0xcb, 0x2f, 0x4a, 0x18, 0x55, 0x05,
+ 0xfd, 0xe8, 0x03, 0x5d, 0xbc, 0x0e, 0xb8, 0x2c, 0x56, 0x46, 0x33, 0xdc, 0xeb, 0x8d, 0xb3, 0xf3,
+ 0xf4, 0x55, 0x0f, 0x31, 0xce, 0xdc, 0xaa, 0xe7, 0x60, 0x26, 0xdf, 0xae, 0x17, 0x8c, 0xc6, 0x13,
+ 0x9f, 0x20, 0xd5, 0x43, 0x73, 0xe3, 0xa4, 0xe7, 0x0c, 0x51, 0x67, 0xab, 0x3f, 0x67, 0x7c, 0x7e,
+ 0x7f, 0x76, 0x76, 0x29, 0x9b, 0x6d, 0xce, 0xcd, 0xc9, 0xb6, 0x29, 0x55, 0x74, 0x95, 0x3d, 0x1e,
+ 0xf0, 0x68, 0x4a, 0x66, 0x59, 0x50, 0xac, 0x9a, 0xab, 0x5c, 0xcd, 0x74, 0x9c, 0x73, 0x16, 0x7f,
+ 0x00, 0x46, 0xbe, 0x39, 0xec, 0xc3, 0x68, 0x7a, 0x8c, 0x88, 0xe9, 0xa2, 0xd3, 0xd1, 0x81, 0x53,
+ 0xd9, 0x74, 0x8d, 0xda, 0xec, 0xdf, 0x1e, 0xa7, 0xcc, 0xa6, 0x23, 0xd1, 0x93, 0xa6, 0x9a, 0xab,
+ 0xce, 0x69, 0xd2, 0x83, 0x52, 0x86, 0xe6, 0x5d, 0xac, 0x4d, 0x56, 0x61, 0x4b, 0x20, 0xe1, 0xc2,
+ 0xa3, 0xf8, 0xe2, 0x0d, 0x21, 0x03, 0x46, 0x37, 0xf0, 0xc0, 0x5f, 0x61, 0xf0, 0x57, 0xc4, 0x99,
+ 0xcd, 0xb9, 0x16, 0xbf, 0x25, 0x1a, 0xc4, 0x02, 0x7e, 0x90, 0x42, 0xe0, 0x81, 0x14, 0x37, 0x87,
+ 0xb2, 0x6c, 0xd7, 0x6f, 0x18, 0x3c, 0x33, 0x01, 0xd0, 0x95, 0x37, 0xee, 0x09, 0xae, 0xe0, 0xa0,
+ 0x12, 0x3c, 0x1a, 0x27, 0xa5, 0x1a, 0xc8, 0xe5, 0x08, 0x8f, 0xb3, 0x22, 0x70, 0x3e, 0x8c, 0x2e,
+ 0x85, 0xe9, 0x21, 0x7e, 0x4e, 0xe8, 0x83, 0x29, 0x2f, 0x76, 0xf0, 0x10, 0xa6, 0x92, 0x4e, 0x71,
+ 0x69, 0x97, 0x61, 0xf6, 0xe1, 0x2f, 0xe7, 0x02, 0x61, 0xfc, 0x82, 0x0f, 0x94, 0x46, 0xeb, 0x37,
+ 0x63, 0x4f, 0xa1, 0x74, 0x2c, 0x64, 0x70, 0x32, 0x1d, 0x0d, 0x6e, 0x1d, 0x40, 0x98, 0x66, 0x85,
+ 0x12, 0xba, 0xb8, 0xb0, 0x21, 0x4e, 0x4a, 0x36, 0x80, 0xdb, 0x97, 0x74, 0x25, 0xb6, 0x99, 0x5c,
+ 0xa4, 0xb0, 0xe4, 0x95, 0x91, 0x04, 0x5d, 0x6f, 0xad, 0xe3, 0x2d, 0x8a, 0x11, 0x2e, 0xc9, 0x7f,
+ 0x42, 0xf7, 0x53, 0xb4, 0x74, 0x4c, 0xb8, 0x4e, 0xa1, 0x1b, 0xe3, 0xc4, 0xc6, 0x47, 0xe0, 0x02,
+ 0x1e, 0x84, 0x18, 0xb2, 0x70, 0x2e, 0xb7, 0x34, 0x2c, 0xd7, 0x8e, 0x3b, 0xe4, 0x36, 0x8b, 0xf2,
+ 0xa1, 0x96, 0xaa, 0x40, 0x53, 0x46, 0x18, 0x63, 0xff, 0x13, 0xc4, 0xa0, 0x36, 0xe5, 0xbf, 0x43,
+ 0x6f, 0x7b, 0x94, 0x6e, 0xdc, 0x36, 0xd0, 0x29, 0xbf, 0x9d, 0x1d, 0x1c, 0x2e, 0x69, 0x97, 0xa6,
+ 0xef, 0x47, 0xe2, 0x5d, 0x75, 0x4e, 0x48, 0x0a, 0xe5, 0x6a, 0xfe, 0x0f, 0x9a, 0xab, 0xc7, 0x74,
+ 0xde, 0x6f, 0x4a, 0xf5, 0x8a, 0x18, 0xa8, 0xd5, 0x88, 0x86, 0x33, 0xf4, 0x28, 0x3d, 0x67, 0xe0,
+ 0xcf, 0xb5, 0xe3, 0x8a, 0x7b, 0xae, 0x4d, 0x96, 0xcf, 0xf7, 0x03, 0x5f, 0x21, 0x44, 0xd2, 0x06,
+ 0x96, 0x5b, 0x5d, 0x98, 0x21, 0x0e, 0xb2, 0xce, 0x29, 0xab, 0xfc, 0x74, 0x2b, 0xfb, 0x2d, 0xe8,
+ 0xac, 0xba, 0x09, 0xab, 0x03, 0x00, 0x6f, 0x93, 0xe4, 0xda, 0x09, 0xd2, 0x4d, 0xd2, 0xb4, 0x66,
+ 0x25, 0x21, 0x00, 0x39, 0x4d, 0x23, 0xc9, 0xcf, 0x40, 0xa6, 0xe7, 0xfa, 0x78, 0xd0, 0x7d, 0x7f,
+ 0x85, 0x36, 0x27, 0x9b, 0x4e, 0x2c, 0x0a, 0xd5, 0xb7, 0x98, 0x77, 0x10, 0x33, 0x92, 0xa6, 0x23,
+ 0x14, 0x45, 0x88, 0x11, 0xc1, 0x28, 0x91, 0x98, 0x75, 0x20, 0x6a, 0xd4, 0x3d, 0x1f, 0x90, 0xc0,
+ 0x53, 0xe4, 0x15, 0x29, 0x4d, 0x0b, 0x06, 0x50, 0x76, 0x9d, 0x07, 0x6f, 0xa1, 0x99, 0x6f, 0x47,
+ 0x76, 0x65, 0x72, 0x07, 0xd6, 0xf9, 0xc1, 0x09, 0x8f, 0x44, 0x6f, 0x3c, 0xac, 0x56, 0x9b, 0xec,
+ 0xfd, 0x5b, 0x13, 0x5d, 0x16, 0x82, 0x69, 0x15, 0x03, 0xec, 0xdf, 0x51, 0xc9, 0x5a, 0x88, 0x87,
+ 0xc6, 0xf6, 0xd1, 0x95, 0xd8, 0x4e, 0xf9, 0xe1, 0x59, 0x60, 0x90, 0xc1, 0x42, 0x1a, 0x48, 0x83,
+ 0xf8, 0x39, 0x9b, 0xd0, 0x24, 0x3b, 0xa7, 0x5c, 0x13, 0x47, 0x34, 0xbb, 0x13, 0xe5, 0x38, 0x56,
+ 0xec, 0x65, 0xd9, 0x2b, 0x55, 0xbb, 0x42, 0x59, 0x67, 0x78, 0xd5, 0xae, 0x90, 0x10, 0x21, 0xae,
+ 0x6a, 0xf9, 0x5a, 0x21, 0xb2, 0x6a, 0x17, 0x6b, 0xe2, 0x6a, 0x70, 0x25, 0x97, 0x3b, 0xf0, 0x68,
+ 0x48, 0xc2, 0x35, 0xf6, 0x8a, 0x38, 0x12, 0xfa, 0x5c, 0xbb, 0xf1, 0x1c, 0x68, 0x6f, 0x02, 0x77,
+ 0x20, 0x2e, 0x4a, 0xbc, 0x35, 0xdf, 0x39, 0x4e, 0xbc, 0xb5, 0x42, 0x88, 0xf0, 0xc6, 0x56, 0xed,
+ 0x8e, 0x62, 0x57, 0x38, 0x27, 0xc9, 0x0e, 0xb6, 0xf6, 0xcd, 0xbb, 0x90, 0x50, 0x49, 0x4d, 0xa4,
+ 0x57, 0xb8, 0x4c, 0x1a, 0x9a, 0x6a, 0x68, 0x92, 0x51, 0xf1, 0xbf, 0x4d, 0xd5, 0xcc, 0xa0, 0x59,
+ 0x70, 0x3e, 0x20, 0x21, 0x5e, 0x21, 0x60, 0xc8, 0x13, 0x3c, 0xb8, 0x9c, 0xec, 0x9d, 0x5f, 0x3d,
+ 0xc4, 0xe2, 0x7e, 0xff, 0x5e, 0x3c, 0x7d, 0x43, 0x5a, 0xaa, 0xaf, 0x33, 0x10, 0x2f, 0xce, 0xc1,
+ 0x5d, 0x0e, 0xb6, 0x81, 0x2e, 0xf8, 0x7a, 0x71, 0x1d, 0x1f, 0x5a, 0x11, 0x5c, 0xdb, 0xed, 0x04,
+ 0x8e, 0x70, 0xae, 0x71, 0xb8, 0x53, 0xfd, 0x28, 0x77, 0xc0, 0x11, 0x22, 0x36, 0xdd, 0xe2, 0x6a,
+ 0x70, 0x21, 0xbd, 0x7a, 0x84, 0x9e, 0x48, 0x10, 0x51, 0xcb, 0xc4, 0x86, 0x30, 0x5b, 0x8e, 0x4c,
+ 0x19, 0x68, 0x56, 0x4e, 0xde, 0x1f, 0x88, 0x50, 0x16, 0x53, 0xc4, 0x02, 0xbe, 0x97, 0x8a, 0x1f,
+ 0xe7, 0x7a, 0xd4, 0x3f, 0x0a, 0xcb, 0xa7, 0xa1, 0x6d, 0x97, 0x15, 0x27, 0x81, 0xca, 0x1b, 0x60,
+ 0x03, 0x24, 0x88, 0xfb, 0x36, 0x84, 0x48, 0xe5, 0x91, 0x55, 0xcf, 0xf9, 0x19, 0x67, 0x61, 0x3f,
+ 0xdf, 0xce, 0x3a, 0x27, 0xfa, 0x85, 0x6e, 0xdc, 0x0a, 0xfb, 0x1b, 0xdd, 0x37, 0xd1, 0xda, 0x94,
+ 0x1f, 0x1b, 0x28, 0xef, 0x3d, 0x5f, 0x8c, 0x37, 0x9e, 0xc8, 0xb6, 0x65, 0x83, 0x6b, 0xad, 0x50,
+ 0x9e, 0xdf, 0x54, 0x97, 0xdb, 0x31, 0x86, 0x6c, 0x27, 0x42, 0x80, 0x9f, 0x5d, 0x0b, 0xe1, 0x4f,
+ 0xa9, 0x0e, 0xb5, 0xe1, 0xc3, 0x99, 0x81, 0x2d, 0x29, 0x0c, 0xe9, 0x50, 0xf8, 0xa9, 0x36, 0xa0,
+ 0x44, 0x6c, 0xd0, 0x90, 0x72, 0x2d, 0x69, 0x82, 0x70, 0xa6, 0x6d, 0xe6, 0x98, 0xed, 0xb0, 0x87,
+ 0x66, 0xd2, 0xed, 0xb0, 0x72, 0xf8, 0x91, 0x20, 0x14, 0xcc, 0x8c, 0x6b, 0xce, 0xbc, 0x1d, 0x64,
+ 0x64, 0x6a, 0xbc, 0x07, 0xec, 0xbf, 0x54, 0xb7, 0xb3, 0x3f, 0x84, 0xf1, 0xd9, 0x1f, 0x5d, 0x8f,
+ 0x2b, 0x0a, 0x68, 0x21, 0x4d, 0xd1, 0xa8, 0xa4, 0x66, 0xbd, 0x14, 0x22, 0xe5, 0x68, 0x3c, 0x9f,
+ 0x8f, 0x0f, 0xb5, 0xea, 0xc5, 0x36, 0x46, 0x75, 0x11, 0xb2, 0x73, 0xd0, 0x2c, 0x26, 0x2a, 0x19,
+ 0x2a, 0xb6, 0x41, 0x93, 0x0a, 0x28, 0x96, 0xeb, 0x95, 0x08, 0x15, 0xc5, 0x60, 0xa6, 0xe8, 0x06,
+ 0xe2, 0xe7, 0x73, 0xaf, 0xb8, 0xd5, 0x0c, 0x93, 0x56, 0xce, 0xfe, 0x95, 0x9c, 0xd2, 0x29, 0x0e,
+ 0x4f, 0xe5, 0xd2, 0x3c, 0xc1, 0x3c, 0xd2, 0x32, 0xd0, 0xce, 0x65, 0xa9, 0x49, 0x0b, 0xae, 0x3f,
+ 0xf2, 0xda, 0xba, 0x58, 0xe3, 0x39, 0x30, 0x70, 0x91, 0xb5, 0x71, 0xfa, 0xba, 0xc7, 0xa3, 0xd8,
+ 0x54, 0x6f, 0x6f, 0x13, 0x84, 0xdb, 0xa3, 0x97, 0x28, 0xb5, 0x75, 0x21, 0x75, 0xb3, 0x96, 0x75,
+ 0x0a, 0x93, 0xc0, 0x85, 0x05, 0x87, 0x36, 0xa6, 0x4e, 0xb3, 0xb0, 0x2e, 0xde, 0x98, 0xb1, 0xac,
+ 0xd3, 0xd9, 0x63, 0x3c, 0xb1, 0xac, 0x93, 0x7b, 0xcb, 0x23, 0xa7, 0x47, 0xf8, 0xbd, 0x21, 0x46,
+ 0xf7, 0x6d, 0xc7, 0x44, 0x05, 0xcd, 0x1d, 0x65, 0xe4, 0x1d, 0xc7, 0x60, 0x1e, 0x3b, 0x63, 0x10,
+ 0xfd, 0x53, 0xb9, 0xa3, 0x51, 0x5c, 0x9a, 0x8f, 0x5c, 0x12, 0xcf, 0x1a, 0xe4, 0x87, 0x8f, 0x89,
+ 0x43, 0x80, 0xd7, 0x70, 0xd2, 0x88, 0xb0, 0x44, 0x85, 0xba, 0x92, 0xd6, 0xd7, 0x24, 0x42, 0x4b,
+ 0xee, 0x68, 0xb4, 0x51, 0xce, 0x3a, 0x46, 0x9a, 0xa1, 0x26, 0xad, 0x36, 0x08, 0xf5, 0xc9, 0x79,
+ 0xf1, 0x94, 0x9a, 0xba, 0x92, 0x91, 0xf4, 0x99, 0xf3, 0x7f, 0xa0, 0xe7, 0xd6, 0xd1, 0x3d, 0xdf,
+ 0x31, 0x56, 0x30, 0xd7, 0x80, 0x32, 0x1a, 0xf0, 0x9c, 0xab, 0xa0, 0x5d, 0x0d, 0x31, 0xa2, 0xbb,
+ 0x2e, 0xee, 0xc1, 0xe5, 0x71, 0xcb, 0x85, 0x28, 0x18, 0xe6, 0xdd, 0x49, 0x43, 0xa0, 0xcc, 0xc2,
+ 0xdf, 0xbc, 0x13, 0x41, 0xb6, 0x23, 0xb9, 0xb7, 0xdc, 0xdc, 0x01, 0xb7, 0x9c, 0xce, 0xf8, 0xc7,
+ 0x38, 0x15, 0x82, 0xde, 0xd5, 0xef, 0x4c, 0x5f, 0x6b, 0xf4, 0x53, 0x9c, 0x74, 0xcb, 0xf0, 0x98,
+ 0xf0, 0xd1, 0xe8, 0x65, 0x72, 0xca, 0x31, 0x72, 0x0a, 0xb1, 0x18, 0x04, 0x2c, 0x2e, 0xcb, 0xa9,
+ 0xc7, 0xd0, 0xa2, 0xb5, 0x8a, 0x2d, 0x06, 0x08, 0x62, 0x21, 0xa7, 0x21, 0xa9, 0x51, 0x98, 0x6c,
+ 0x74, 0xd7, 0x9c, 0x70, 0xc6, 0x24, 0x8d, 0x60, 0x27, 0x1e, 0x2f, 0x07, 0x9d, 0x8c, 0x37, 0xba,
+ 0x97, 0xb5, 0x41, 0x47, 0xd8, 0xcb, 0x28, 0x7f, 0x00, 0x42, 0x0e, 0xe0, 0x47, 0xd5, 0x6e, 0x96,
+ 0x65, 0xe4, 0x64, 0x56, 0xe8, 0x1f, 0x7d, 0x4e, 0x57, 0xd0, 0x1e, 0xfb, 0x16, 0x8f, 0x0a, 0x45,
+ 0xa2, 0x5b, 0x6a, 0x53, 0x7e, 0xcd, 0xa8, 0x11, 0x94, 0xc9, 0x97, 0x74, 0xc6, 0xf9, 0x50, 0x55,
+ 0x12, 0xc3, 0xbd, 0xd6, 0x28, 0x82, 0x76, 0xbc, 0xde, 0x5c, 0xf3, 0x99, 0xb0, 0xe0, 0x28, 0x9a,
+ 0xbf, 0xa4, 0x26, 0x7a, 0x62, 0x39, 0xf6, 0xa2, 0x63, 0x66, 0x4a, 0x6d, 0xfa, 0x2a, 0x5f, 0x26,
+ 0x39, 0x23, 0xb8, 0x65, 0xbe, 0xbb, 0x54, 0x83, 0x13, 0xab, 0x52, 0x34, 0x37, 0xb0, 0xe1, 0x06,
+ 0x2e, 0xbb, 0x3b, 0x2b, 0x78, 0xf2, 0x13, 0x3a, 0xac, 0x03, 0xd9, 0xf4, 0x54, 0x5d, 0xe7, 0xdc,
+ 0x8a, 0x06, 0x08, 0xc1, 0xba, 0x65, 0x4d, 0x15, 0xd3, 0xa2, 0x96, 0x98, 0x60, 0xe8, 0x1e, 0x72,
+ 0xb2, 0xaa, 0xe1, 0x57, 0x55, 0xc3, 0x61, 0xdb, 0xc3, 0x44, 0xf7, 0x6f, 0xbd, 0x33, 0x30, 0x79,
+ 0x2c, 0x90, 0x3c, 0xe1, 0xe5, 0xaa, 0x3c, 0xad, 0xa2, 0xbb, 0xd5, 0x78, 0xee, 0xe1, 0xaa, 0xa1,
+ 0x48, 0x18, 0xff, 0xa8, 0x21, 0x40, 0xf4, 0xc8, 0xeb, 0x41, 0x72, 0x70, 0x3b, 0x98, 0xf7, 0x19,
+ 0x4f, 0x70, 0x47, 0xa7, 0x92, 0x76, 0xcd, 0xaf, 0x56, 0x62, 0xcb, 0xc6, 0xdf, 0x7a, 0x63, 0x20,
+ 0x71, 0x4c, 0x4d, 0x9c, 0xf0, 0x8e, 0x87, 0x44, 0xeb, 0xca, 0x88, 0xed, 0xf3, 0xc5, 0xc6, 0x56,
+ 0xf1, 0x96, 0xdf, 0x79, 0x2f, 0xf1, 0x81, 0x7b, 0x2a, 0x55, 0xea, 0x07, 0xbe, 0xe2, 0xf6, 0x9d,
+ 0x65, 0xdb, 0x20, 0x48, 0xf6, 0xb1, 0x3d, 0xe4, 0x8a, 0x67, 0x78, 0x26, 0xdb, 0x1e, 0xd5, 0x06,
+ 0x33, 0x59, 0x2a, 0x69, 0xf2, 0x7e, 0x04, 0x4c, 0x41, 0x47, 0x8a, 0xe8, 0xa1, 0xfa, 0xc9, 0x51,
+ 0x43, 0x42, 0x09, 0xa8, 0x44, 0xd6, 0x73, 0x07, 0x38, 0x34, 0xc8, 0x53, 0x00, 0x13, 0xd7, 0x09,
+ 0xe1, 0x6e, 0x20, 0xe4, 0x38, 0xba, 0xcc, 0xa7, 0xed, 0x9a, 0x03, 0x86, 0xa4, 0x29, 0x7c, 0x81,
+ 0xbc, 0x91, 0xf5, 0x1a, 0x21, 0xdb, 0xa7, 0xee, 0x83, 0xd9, 0x94, 0xa2, 0x91, 0xc0, 0x96, 0x0e,
+ 0xdb, 0xe7, 0x8d, 0xcd, 0xac, 0x1b, 0xb7, 0x72, 0x81, 0x33, 0x0a, 0x02, 0x56, 0xb4, 0xe1, 0x18,
+ 0x6e, 0xd5, 0x86, 0x66, 0xa6, 0x79, 0xbb, 0x32, 0xf7, 0x2f, 0xa8, 0x7a, 0x68, 0x81, 0xf3, 0x8b,
+ 0xd2, 0x10, 0xfb, 0x32, 0x2b, 0x1e, 0xab, 0x78, 0x9e, 0x42, 0xd5, 0x61, 0x60, 0x88, 0xc7, 0x55,
+ 0x4b, 0x43, 0xed, 0x0f, 0xd1, 0xfc, 0xad, 0x77, 0xf2, 0xff, 0x43, 0xcd, 0x5f, 0x41, 0xf3, 0x6d,
+ 0xc1, 0x7c, 0xe7, 0xb3, 0xa5, 0x1a, 0x7b, 0x1a, 0xcd, 0x4b, 0xbd, 0x9d, 0xf7, 0x14, 0xd4, 0x1b,
+ 0x4f, 0x8f, 0x6b, 0xcc, 0xbf, 0x9d, 0xb7, 0x08, 0xfa, 0xda, 0x98, 0x8d, 0x79, 0x53, 0xef, 0xc0,
+ 0x7c, 0x1c, 0x4d, 0x63, 0x9a, 0x3f, 0xc9, 0xc7, 0xd5, 0xe4, 0xc0, 0x2b, 0x6e, 0xbc, 0xd6, 0xac,
+ 0xc6, 0xf8, 0x33, 0x74, 0x01, 0x35, 0x92, 0x69, 0x55, 0xcf, 0xfa, 0x17, 0xc8, 0x8f, 0xf9, 0x05,
+ 0xf0, 0x4e, 0x92, 0xfa, 0xb8, 0xd7, 0xdc, 0x4d, 0x9a, 0x50, 0x86, 0x6d, 0x14, 0x9b, 0x43, 0xba,
+ 0x66, 0xff, 0xb3, 0x62, 0xb6, 0x51, 0x85, 0x96, 0xde, 0x88, 0x25, 0x1c, 0xdf, 0xd8, 0x74, 0x67,
+ 0x1d, 0x0b, 0x75, 0x42, 0x27, 0xf3, 0x10, 0x22, 0x0c, 0x36, 0x85, 0x3d, 0x78, 0x17, 0x18, 0xb0,
+ 0xb7, 0xf1, 0x00, 0x47, 0x8d, 0x5b, 0x9a, 0x50, 0x3e, 0x47, 0xc3, 0x38, 0xa3, 0x81, 0xc0, 0x7a,
+ 0xe5, 0xd8, 0x21, 0x56, 0xcd, 0x57, 0x73, 0xc5, 0xa1, 0xd0, 0x43, 0x7b, 0xd6, 0x41, 0x08, 0x1d,
+ 0x69, 0xc6, 0x10, 0xfa, 0x64, 0x8d, 0x1b, 0xfe, 0x64, 0x2b, 0x6f, 0x50, 0xa7, 0x59, 0xe3, 0x17,
+ 0x06, 0x6d, 0xca, 0xfb, 0xe3, 0xd5, 0x3d, 0x8b, 0x02, 0x3c, 0x23, 0xf0, 0x9c, 0x5a, 0x00, 0x16,
+ 0x72, 0xf9, 0xa4, 0xd1, 0xc7, 0x64, 0x9c, 0x49, 0x55, 0x95, 0x5a, 0xc6, 0xf9, 0x40, 0xd5, 0x2a,
+ 0x5d, 0x28, 0x86, 0xe5, 0xdf, 0x80, 0x9b, 0x71, 0xc8, 0x92, 0x8d, 0x30, 0x5b, 0xb2, 0xed, 0x4b,
+ 0xf1, 0xe4, 0x46, 0xba, 0x0a, 0x47, 0xa9, 0xfc, 0x8e, 0x61, 0x94, 0x96, 0x7a, 0x6a, 0x66, 0x59,
+ 0x73, 0x08, 0x63, 0x7f, 0x37, 0x07, 0x4a, 0xef, 0x55, 0x01, 0x2b, 0xdc, 0xe9, 0x3b, 0x41, 0x63,
+ 0x62, 0xc0, 0x69, 0xe6, 0x5c, 0x0d, 0x34, 0x6c, 0x83, 0x99, 0x60, 0xbc, 0x29, 0x8e, 0xab, 0xf9,
+ 0x90, 0x86, 0xf6, 0xd1, 0x60, 0x43, 0xa4, 0x8a, 0x68, 0x6e, 0x5f, 0x85, 0x06, 0xd7, 0x98, 0x88,
+ 0xa0, 0x90, 0x11, 0xf6, 0x0c, 0x48, 0x65, 0x54, 0x03, 0x3d, 0x6a, 0x41, 0xac, 0xed, 0x39, 0x44,
+ 0xb8, 0x60, 0x53, 0x5c, 0x67, 0xd5, 0xd0, 0xc9, 0x43, 0x2e, 0x8a, 0xcf, 0x1a, 0x58, 0x52, 0xe9,
+ 0x13, 0xa6, 0x48, 0x69, 0x73, 0x8d, 0x2d, 0xe4, 0xa4, 0xf4, 0xc8, 0x3c, 0x63, 0x4f, 0x84, 0x87,
+ 0xb4, 0xa9, 0xc2, 0x03, 0xd1, 0x57, 0x60, 0xd1, 0x49, 0x7c, 0x36, 0x9e, 0x91, 0xd2, 0xa2, 0x89,
+ 0xd0, 0x29, 0x4c, 0xe6, 0xf6, 0xa5, 0x69, 0xcc, 0x4a, 0x6d, 0x6c, 0xc0, 0x41, 0x89, 0x87, 0x7c,
+ 0xc9, 0x92, 0x48, 0xac, 0xa7, 0xa5, 0x47, 0x16, 0x11, 0x53, 0x8b, 0xbc, 0xdf, 0xaf, 0x1e, 0xb0,
+ 0x5f, 0xed, 0xf3, 0x8c, 0x44, 0x90, 0x01, 0x8f, 0x7f, 0x66, 0xae, 0x2d, 0x3b, 0x47, 0x99, 0x78,
+ 0xbb, 0x5b, 0x6b, 0xc7, 0xc0, 0x97, 0x84, 0x6f, 0x05, 0x1d, 0xe9, 0x60, 0x2f, 0x12, 0xd3, 0x71,
+ 0xdc, 0x82, 0x18, 0x91, 0x4c, 0xa7, 0xef, 0x37, 0xb5, 0x4a, 0x7c, 0x4b, 0xac, 0xcf, 0xd8, 0x1f,
+ 0xd1, 0xc2, 0xb9, 0x2e, 0xe0, 0x34, 0xf4, 0xac, 0x46, 0x7a, 0x44, 0x23, 0xe5, 0x75, 0x72, 0xfb,
+ 0x2e, 0xc3, 0xd4, 0x39, 0x70, 0x1d, 0xc3, 0x3a, 0x6d, 0x28, 0x7f, 0x7c, 0xb2, 0xb5, 0x23, 0x37,
+ 0xc7, 0xec, 0xaf, 0x88, 0xb7, 0x28, 0xcb, 0xce, 0x07, 0x0e, 0x42, 0x3a, 0xa7, 0xe2, 0x44, 0x5e,
+ 0xf3, 0x26, 0xa2, 0xdb, 0xec, 0x17, 0x2f, 0xc2, 0x34, 0x18, 0xe1, 0x13, 0x8e, 0x75, 0x49, 0xe8,
+ 0x9d, 0xa6, 0x19, 0x58, 0x1a, 0x66, 0xde, 0x20, 0x8f, 0xcc, 0x95, 0x84, 0x4e, 0x52, 0x31, 0x0f,
+ 0x02, 0x75, 0x89, 0x8f, 0x21, 0x27, 0x89, 0x27, 0x61, 0x48, 0xaa, 0x8c, 0x9b, 0x56, 0xd9, 0x4d,
+ 0x5a, 0x21, 0x66, 0x1c, 0xf8, 0x82, 0xdb, 0xd7, 0xc7, 0x5e, 0x94, 0xac, 0x17, 0x12, 0x1a, 0x24,
+ 0xbe, 0x3d, 0xd6, 0x97, 0x70, 0x5e, 0x35, 0x53, 0x4d, 0x49, 0x97, 0xc9, 0x20, 0x84, 0x74, 0x10,
+ 0x34, 0x56, 0xc2, 0x5f, 0xc0, 0x47, 0xc7, 0x0e, 0x82, 0x39, 0x0c, 0xcd, 0x8e, 0xb7, 0xe4, 0x98,
+ 0x95, 0x03, 0xf7, 0x04, 0x4e, 0x02, 0xea, 0xd8, 0xcf, 0x00, 0xc7, 0xa8, 0xde, 0x15, 0x95, 0x31,
+ 0xa4, 0x75, 0x1a, 0x1f, 0xa7, 0x72, 0x86, 0xdb, 0xbb, 0x15, 0x14, 0x75, 0x3f, 0x8b, 0x76, 0x5f,
+ 0x3c, 0x9e, 0xa8, 0xae, 0xda, 0x7f, 0xb2, 0x86, 0x72, 0x7d, 0xdd, 0x77, 0x77, 0x78, 0xfc, 0xb8,
+ 0x5c, 0xf9, 0x46, 0xe9, 0xe3, 0x78, 0x56, 0x7a, 0xd7, 0x3d, 0xaa, 0xfd, 0x3b, 0xf1, 0x47, 0x16,
+ 0x66, 0x1b, 0x49, 0x23, 0xe3, 0x7a, 0x38, 0xc4, 0x6c, 0x43, 0x33, 0x4b, 0x99, 0xd2, 0xc7, 0x21,
+ 0x54, 0x40, 0x23, 0x79, 0x9d, 0xea, 0x16, 0xde, 0x30, 0xdb, 0xb3, 0x16, 0x75, 0xed, 0xf7, 0x43,
+ 0x41, 0xfd, 0xd3, 0x1b, 0xdd, 0xfd, 0x8d, 0x2c, 0x0d, 0x79, 0x49, 0x8f, 0xe0, 0xf6, 0x26, 0x54,
+ 0x57, 0xbe, 0x0d, 0xfe, 0x0f, 0x23, 0xcc, 0x90, 0xf8, 0x0e, 0xb0, 0x72, 0x24, 0x95, 0x9e, 0x9d,
+ 0x4d, 0xd5, 0x4a, 0x7c, 0xab, 0x64, 0xba, 0x40, 0x1e, 0xd6, 0x90, 0x90, 0x20, 0x7a, 0x8f, 0x8f,
+ 0xd9, 0xe3, 0x4d, 0x07, 0xbb, 0x24, 0x57, 0x42, 0x6c, 0x39, 0x0e, 0x2f, 0x50, 0x58, 0x4a, 0x59,
+ 0x8b, 0xfd, 0x28, 0x1e, 0x6a, 0xb2, 0x29, 0x9b, 0xd4, 0xde, 0xb9, 0x03, 0xe3, 0x3e, 0x78, 0x8e,
+ 0x73, 0x6d, 0x87, 0x4c, 0x5a, 0x7a, 0x46, 0x2d, 0xe5, 0x83, 0xa5, 0x7c, 0x2f, 0x16, 0xe3, 0x91,
+ 0x8a, 0x40, 0xf3, 0x6b, 0x6a, 0x85, 0xf8, 0xb1, 0x15, 0x96, 0x06, 0xdb, 0xff, 0x5d, 0x2d, 0x0e,
+ 0x1b, 0x5b, 0x1c, 0x43, 0xdb, 0xd3, 0x33, 0x83, 0xc4, 0x27, 0x0b, 0xff, 0x65, 0xc9, 0xb6, 0x94,
+ 0x6a, 0x6c, 0x66, 0xe5, 0x1a, 0xb5, 0x84, 0x31, 0x74, 0xbb, 0xde, 0x6c, 0x17, 0xd6, 0xa2, 0x3f,
+ 0xbf, 0x6b, 0x76, 0x60, 0x51, 0x89, 0xab, 0xc1, 0xfb, 0x10, 0x74, 0x0b, 0xd5, 0x62, 0xb6, 0x94,
+ 0x86, 0xda, 0xd0, 0x8f, 0xfa, 0x30, 0xd0, 0x82, 0x6e, 0xac, 0xda, 0x37, 0x65, 0x63, 0x8b, 0xac,
+ 0x3b, 0x2d, 0xf6, 0xd1, 0x8b, 0x22, 0xf5, 0xa1, 0x81, 0x36, 0x4b, 0x68, 0x9b, 0x1d, 0x81, 0x36,
+ 0xa1, 0xb4, 0xcd, 0xa3, 0xb4, 0x4d, 0x74, 0xb0, 0x8d, 0xf3, 0x39, 0x8b, 0x5a, 0x60, 0x29, 0xcd,
+ 0xa1, 0xb5, 0x1f, 0xfe, 0x27, 0xb5, 0xbf, 0x9c, 0x15, 0xac, 0x9d, 0x0d, 0xd0, 0xc3, 0xc6, 0x60,
+ 0x34, 0x35, 0x50, 0x3f, 0x8c, 0xd6, 0xc7, 0x4d, 0x12, 0x9b, 0x72, 0xe0, 0x76, 0xfd, 0x59, 0x96,
+ 0xd2, 0x10, 0x8b, 0x7d, 0x59, 0x70, 0x27, 0xf2, 0x6f, 0xb7, 0x54, 0xba, 0x1c, 0xe4, 0x7b, 0xd5,
+ 0x9d, 0xcc, 0xd7, 0x1b, 0x71, 0x63, 0x3e, 0x3d, 0xc8, 0x34, 0x75, 0x89, 0xc1, 0xd8, 0x9f, 0xab,
+ 0x2c, 0x57, 0xe7, 0x06, 0xf0, 0x54, 0xa6, 0x1a, 0xdd, 0xb2, 0x70, 0xd3, 0x0c, 0x53, 0xab, 0x1d,
+ 0x8f, 0x93, 0xd8, 0x72, 0x95, 0xdf, 0xa8, 0x50, 0xa4, 0x25, 0x18, 0x37, 0x69, 0xee, 0xec, 0x48,
+ 0x56, 0x77, 0x47, 0xe3, 0x82, 0xa9, 0xab, 0x13, 0xdd, 0xca, 0xc7, 0x71, 0xbd, 0xb8, 0xc7, 0x10,
+ 0x98, 0x88, 0xff, 0xc8, 0x4a, 0x2b, 0x5d, 0x54, 0x0a, 0x47, 0x3c, 0x23, 0x54, 0x0a, 0x6d, 0xb9,
+ 0x6a, 0x45, 0x3a, 0x61, 0x5b, 0x6f, 0x8d, 0x96, 0xc5, 0x40, 0x81, 0x12, 0x37, 0x10, 0x94, 0xc8,
+ 0xe8, 0xa0, 0x3c, 0xd2, 0x03, 0x2d, 0xc2, 0x1f, 0xbb, 0xb6, 0xc0, 0x6f, 0xf5, 0x11, 0x05, 0x37,
+ 0x51, 0x41, 0x30, 0x39, 0x17, 0xee, 0xec, 0x93, 0x5b, 0xb8, 0x43, 0x03, 0x4e, 0x8c, 0x3e, 0xc9,
+ 0x95, 0x88, 0x87, 0x59, 0x9e, 0xff, 0x02, 0xc6, 0x7d, 0xa8, 0x8a, 0x1e, 0xa7, 0x51, 0x0f, 0x62,
+ 0x67, 0x83, 0xb6, 0xe5, 0x19, 0x02, 0xc7, 0xb0, 0xe7, 0x62, 0x9d, 0x7d, 0x3e, 0x02, 0x3a, 0x07,
+ 0x73, 0x2f, 0xdb, 0x2b, 0xc9, 0xf3, 0x68, 0xce, 0x59, 0x72, 0xcd, 0xf3, 0xe5, 0x38, 0xb6, 0x29,
+ 0xaa, 0x0d, 0x02, 0xf5, 0x7a, 0xf5, 0x0c, 0x8f, 0x2d, 0x70, 0x90, 0x1b, 0xe6, 0x05, 0x9b, 0xf2,
+ 0x9b, 0x61, 0x8a, 0xad, 0xcc, 0x1f, 0x36, 0x9e, 0x20, 0x59, 0x3a, 0x92, 0xa5, 0x25, 0x59, 0x1a,
+ 0xa2, 0x95, 0xe5, 0x35, 0xe8, 0xc5, 0xe8, 0xcd, 0xd9, 0xca, 0x62, 0xc3, 0x6d, 0x91, 0x98, 0x08,
+ 0x38, 0x48, 0xe1, 0x74, 0x79, 0x04, 0x22, 0x6a, 0x92, 0xa2, 0x41, 0x67, 0x39, 0x45, 0x5b, 0x97,
+ 0xa1, 0xab, 0x4d, 0xd1, 0xa5, 0x91, 0x9f, 0xe8, 0xa5, 0x8c, 0x68, 0x92, 0x12, 0x2d, 0xc9, 0x74,
+ 0x82, 0xfb, 0x15, 0x35, 0x80, 0x7e, 0x6e, 0xf5, 0x67, 0xe4, 0x33, 0x8f, 0x3f, 0xc2, 0x73, 0x6b,
+ 0x26, 0x39, 0x03, 0x46, 0x05, 0xfc, 0x58, 0x44, 0xf0, 0xe3, 0x27, 0x70, 0x2f, 0x5a, 0xe8, 0xe6,
+ 0xf6, 0x0d, 0xa0, 0x99, 0x01, 0x45, 0x4c, 0x24, 0x8e, 0x45, 0xe4, 0xa2, 0x7a, 0xa4, 0x3c, 0xa1,
+ 0x45, 0x3d, 0x54, 0x3e, 0xcd, 0xd4, 0x2d, 0xba, 0x59, 0x70, 0xaa, 0x61, 0x28, 0xdc, 0xbe, 0x76,
+ 0x68, 0x79, 0x85, 0x3d, 0x89, 0x67, 0xef, 0x6d, 0xe0, 0x74, 0xea, 0x48, 0x06, 0x20, 0xde, 0x01,
+ 0xc2, 0xff, 0xcc, 0xdf, 0xa9, 0x1b, 0x80, 0xeb, 0xdc, 0xbb, 0xf0, 0xe0, 0x37, 0xaf, 0x90, 0x0c,
+ 0x33, 0x58, 0x4a, 0x92, 0xb1, 0x06, 0xd5, 0xdc, 0xd4, 0x49, 0xd6, 0x66, 0x91, 0x8c, 0xf4, 0xfd,
+ 0x6c, 0x57, 0x1e, 0x14, 0x1f, 0x1b, 0x41, 0xd2, 0xe2, 0xe8, 0x0d, 0xdf, 0x06, 0x24, 0x83, 0xab,
+ 0x11, 0xb1, 0x5d, 0x9e, 0x5e, 0xbc, 0xa5, 0xe1, 0x5e, 0x7c, 0x0a, 0x4f, 0x02, 0xe2, 0x21, 0x93,
+ 0x56, 0xea, 0x9c, 0xa7, 0x43, 0xa0, 0x21, 0xa7, 0x7d, 0x4b, 0xf8, 0x0b, 0x18, 0x53, 0x78, 0x3a,
+ 0x35, 0x61, 0x47, 0xe9, 0x9e, 0x6c, 0x76, 0xa9, 0x3e, 0xdb, 0x0c, 0x08, 0x80, 0x1f, 0xf2, 0xc4,
+ 0x50, 0x50, 0x49, 0xc1, 0x93, 0xe7, 0x9c, 0x11, 0xe2, 0x60, 0x18, 0xe7, 0x1a, 0x46, 0x46, 0xf2,
+ 0xa7, 0x21, 0x5c, 0x97, 0x73, 0x59, 0xba, 0xd9, 0x74, 0x28, 0x16, 0x37, 0x47, 0x8f, 0xe0, 0x91,
+ 0xe2, 0xbe, 0xff, 0x94, 0xc2, 0x09, 0x65, 0x04, 0x92, 0x92, 0x9e, 0x63, 0x46, 0x6a, 0xd2, 0x83,
+ 0xe6, 0x48, 0x50, 0x7a, 0xee, 0xdc, 0xe8, 0x07, 0x7c, 0xc8, 0xeb, 0x6b, 0x68, 0x61, 0x34, 0x71,
+ 0x99, 0x91, 0x66, 0x47, 0xd4, 0x73, 0xfe, 0x37, 0x82, 0xe7, 0xfc, 0x15, 0x72, 0x64, 0x07, 0x3d,
+ 0xa3, 0x4e, 0x6f, 0x4b, 0x7c, 0x8c, 0xc7, 0x7f, 0xa8, 0xa9, 0x76, 0x6e, 0x04, 0x2f, 0x38, 0xef,
+ 0x82, 0xb1, 0x9f, 0xf8, 0xb8, 0xf7, 0x06, 0x23, 0xc8, 0x90, 0xe7, 0x7a, 0x44, 0xf5, 0x89, 0x33,
+ 0x74, 0xfb, 0x03, 0x39, 0x1b, 0x10, 0xcd, 0xe0, 0x4d, 0x82, 0xb7, 0x06, 0x03, 0x43, 0x70, 0xdd,
+ 0xa0, 0xe7, 0x7a, 0x38, 0x67, 0x18, 0x8c, 0x42, 0xd0, 0x4a, 0x54, 0x34, 0x8d, 0xfd, 0x77, 0xc6,
+ 0xc5, 0x01, 0x88, 0x47, 0x84, 0xdf, 0x8e, 0x01, 0x7b, 0xf4, 0x5f, 0x81, 0xcd, 0x50, 0xc1, 0x56,
+ 0x1d, 0x41, 0xa8, 0x4c, 0xbd, 0x9f, 0x5e, 0x0a, 0xc0, 0xab, 0x82, 0x5c, 0xcd, 0x19, 0x7a, 0x66,
+ 0x88, 0x5e, 0x21, 0x09, 0x95, 0x28, 0x05, 0x30, 0xce, 0xa7, 0x14, 0x80, 0xe0, 0xbf, 0x8e, 0x52,
+ 0xa0, 0x36, 0x0d, 0xec, 0x73, 0x2b, 0x49, 0xd3, 0x4b, 0xea, 0xe0, 0xd3, 0xa2, 0x43, 0x8f, 0xe0,
+ 0xb0, 0x27, 0x7f, 0x8c, 0x54, 0x08, 0xa5, 0xb8, 0x89, 0x17, 0x19, 0xf2, 0x6c, 0x22, 0xa9, 0x58,
+ 0x24, 0xb9, 0xba, 0xf1, 0x66, 0x57, 0xda, 0xb2, 0xe6, 0xb4, 0x95, 0xea, 0x81, 0x24, 0x7a, 0x16,
+ 0x2a, 0x2d, 0xc6, 0x02, 0xf2, 0x6d, 0x56, 0x1e, 0xe9, 0x0e, 0x48, 0x89, 0x13, 0x8c, 0x7f, 0x8b,
+ 0x64, 0x6d, 0xa7, 0xc6, 0xff, 0x38, 0x35, 0xfe, 0x87, 0x25, 0x93, 0x7b, 0x94, 0xf1, 0xaf, 0x4d,
+ 0x4b, 0xb6, 0x28, 0x6c, 0x77, 0x70, 0xcd, 0x6f, 0x62, 0x60, 0x03, 0x93, 0xa4, 0x6d, 0x86, 0xf2,
+ 0x88, 0x40, 0x0a, 0xab, 0xd9, 0x9b, 0xd2, 0xd6, 0x33, 0xf4, 0x68, 0xe0, 0x77, 0xaa, 0x50, 0x81,
+ 0x0c, 0x49, 0x95, 0xdd, 0x12, 0x7f, 0x1a, 0x49, 0x55, 0x73, 0x89, 0xde, 0x47, 0xe3, 0xd4, 0xb1,
+ 0x66, 0x8a, 0x7e, 0x0d, 0xe7, 0xc2, 0x9d, 0x56, 0xaa, 0xdc, 0x5d, 0x7a, 0x7a, 0x41, 0x2e, 0x28,
+ 0x4f, 0xf4, 0x32, 0x61, 0x8f, 0x2c, 0x74, 0x58, 0x4a, 0xf5, 0x16, 0xb3, 0x2d, 0x5b, 0xd1, 0x0d,
+ 0xa8, 0x94, 0xdb, 0xa3, 0x61, 0xb8, 0x9a, 0x57, 0xe9, 0xb4, 0xad, 0x93, 0x58, 0x3c, 0x56, 0x19,
+ 0x2e, 0xa5, 0x68, 0x48, 0x86, 0x46, 0x4a, 0xd1, 0x92, 0x0c, 0x6d, 0x5d, 0x8a, 0xae, 0x36, 0x43,
+ 0x97, 0x49, 0xf6, 0xe8, 0xa5, 0x94, 0x68, 0xdc, 0x33, 0x05, 0xc9, 0xd8, 0xb8, 0x88, 0x64, 0x24,
+ 0xa2, 0x64, 0x6c, 0x5c, 0x49, 0x2f, 0xaa, 0xc4, 0xa8, 0xdc, 0x00, 0x4d, 0xc9, 0xf4, 0x06, 0x69,
+ 0x70, 0xaf, 0xa4, 0x5e, 0x6d, 0x00, 0x45, 0x51, 0x49, 0x0e, 0xba, 0xa2, 0xca, 0xa3, 0x4c, 0x59,
+ 0x41, 0x35, 0xe6, 0x8f, 0x6c, 0xed, 0xc6, 0x64, 0x9b, 0x32, 0xf0, 0x35, 0xa5, 0x84, 0xd1, 0x0f,
+ 0xb4, 0x88, 0x22, 0x19, 0x48, 0x04, 0x1d, 0x1e, 0x09, 0xc8, 0x36, 0xfa, 0xd7, 0x79, 0xd7, 0x00,
+ 0x1d, 0x32, 0xec, 0x4d, 0x19, 0x40, 0x87, 0x14, 0x7c, 0x85, 0xfa, 0xcd, 0xa3, 0xea, 0x8f, 0x53,
+ 0xeb, 0x87, 0x04, 0x6b, 0xb1, 0xb2, 0x2a, 0xcf, 0x21, 0x12, 0x90, 0x3b, 0x63, 0x03, 0x59, 0xfb,
+ 0xb8, 0x94, 0x0a, 0xe3, 0x78, 0x42, 0x4a, 0x05, 0x7d, 0x2e, 0xc4, 0x98, 0x3d, 0x3a, 0xb8, 0x27,
+ 0x21, 0xae, 0xc2, 0x53, 0xe9, 0x20, 0xc8, 0xd4, 0x9c, 0x53, 0x6b, 0xfe, 0x0e, 0x1e, 0x58, 0x97,
+ 0x74, 0xfb, 0xab, 0x76, 0x26, 0x33, 0xce, 0x69, 0xa2, 0x27, 0xbd, 0x54, 0x9f, 0x9b, 0xad, 0xfc,
+ 0x6c, 0x5a, 0xc0, 0x46, 0xd1, 0x62, 0xa7, 0x91, 0x56, 0x58, 0xcf, 0x38, 0x63, 0x44, 0xcf, 0x06,
+ 0x5a, 0xa1, 0x7c, 0x6c, 0x05, 0x7d, 0xc6, 0x8a, 0xc5, 0x08, 0xda, 0xf1, 0x31, 0xc4, 0x55, 0xe1,
+ 0x46, 0x77, 0xa3, 0xa4, 0xd9, 0x8f, 0xb6, 0x9f, 0x9e, 0x8c, 0x07, 0x9c, 0x57, 0xdd, 0xe9, 0x50,
+ 0x3d, 0x22, 0x2f, 0x45, 0xff, 0xa1, 0x6a, 0x97, 0x1d, 0x7a, 0xcc, 0xf5, 0x3b, 0x36, 0x2b, 0x6f,
+ 0xf9, 0x02, 0x8b, 0xaf, 0x6a, 0xa1, 0x33, 0x8a, 0xb6, 0xcb, 0x48, 0x6a, 0x72, 0x5c, 0xba, 0x0d,
+ 0xef, 0x0f, 0x08, 0x4f, 0x9a, 0x40, 0x01, 0x9e, 0x70, 0x3e, 0x10, 0x88, 0x6e, 0xac, 0x7a, 0x10,
+ 0x91, 0xba, 0x3c, 0xad, 0xb4, 0x8a, 0x42, 0x1d, 0x97, 0x54, 0xae, 0x15, 0x22, 0x97, 0x6d, 0xd0,
+ 0x09, 0x61, 0x49, 0x66, 0xbd, 0x53, 0x2b, 0x36, 0x6b, 0x56, 0x0b, 0x5d, 0x81, 0x90, 0x18, 0xc1,
+ 0x04, 0xdb, 0xcf, 0xa0, 0x11, 0xbd, 0x55, 0x2b, 0x2d, 0xa6, 0xed, 0xc2, 0x93, 0xb0, 0x72, 0x13,
+ 0x54, 0xbe, 0x49, 0x23, 0x77, 0xa8, 0x0a, 0x15, 0xc0, 0xe2, 0x69, 0x65, 0xdc, 0x26, 0xf8, 0x36,
+ 0xdb, 0x1c, 0x58, 0x8d, 0xd5, 0x8d, 0xbe, 0xdc, 0x46, 0x6f, 0x8f, 0xca, 0x82, 0x4f, 0xbd, 0xf7,
+ 0x08, 0xb6, 0xa5, 0x31, 0x84, 0x3b, 0x90, 0x36, 0x82, 0x96, 0xfd, 0x6b, 0x5c, 0x45, 0x1a, 0x9c,
+ 0xe3, 0x8c, 0xab, 0xf6, 0x8f, 0xe0, 0x46, 0x7e, 0x64, 0xed, 0x0b, 0x6b, 0xa0, 0xa3, 0x4c, 0xf0,
+ 0x8a, 0x9b, 0xe8, 0x1b, 0x93, 0xe6, 0x3d, 0x0f, 0x95, 0xc1, 0x2e, 0x3c, 0xf9, 0xdc, 0x32, 0x71,
+ 0x30, 0x67, 0x4f, 0xae, 0x38, 0x68, 0xe1, 0x6a, 0x1e, 0xc2, 0x35, 0xa1, 0x41, 0x2b, 0x57, 0x73,
+ 0x37, 0x7d, 0xd9, 0xc0, 0xb9, 0xaa, 0xe9, 0x61, 0x16, 0xd9, 0xa1, 0x05, 0x37, 0x72, 0x12, 0x19,
+ 0xf2, 0x97, 0x6b, 0x94, 0x1f, 0x01, 0x2e, 0x5d, 0x11, 0xf4, 0xbc, 0xda, 0xcb, 0xe2, 0x90, 0x76,
+ 0x7b, 0xaa, 0x3f, 0x5e, 0xce, 0xc2, 0xf9, 0xf3, 0x92, 0x34, 0x09, 0x46, 0x4c, 0x7a, 0xc0, 0xf9,
+ 0x0b, 0xc7, 0x3a, 0xef, 0x53, 0x20, 0xf7, 0x38, 0xd7, 0x88, 0x83, 0xe9, 0xaa, 0x23, 0xf4, 0x3d,
+ 0x48, 0x1b, 0xc1, 0x48, 0x77, 0x1d, 0xa3, 0x3a, 0xb5, 0x89, 0xab, 0xa9, 0xa2, 0xd5, 0x0b, 0x39,
+ 0xd7, 0x04, 0xf5, 0xd4, 0x1d, 0x05, 0xd6, 0x8a, 0x71, 0x6b, 0x8f, 0x59, 0x79, 0x00, 0xab, 0xe2,
+ 0xc9, 0x66, 0x29, 0x44, 0x6c, 0xd0, 0xe0, 0x7d, 0x5f, 0x5e, 0x31, 0x2b, 0x0f, 0xfa, 0xd4, 0x30,
+ 0xd1, 0x23, 0x7a, 0x70, 0xdc, 0x2f, 0xd9, 0xb0, 0xe5, 0x49, 0xb9, 0xdc, 0xbf, 0x1a, 0x37, 0x84,
+ 0x4c, 0x0a, 0x04, 0xf5, 0xfe, 0x7b, 0xd0, 0x3d, 0xf6, 0x09, 0x9d, 0xae, 0x7e, 0xe7, 0xc2, 0x7a,
+ 0x5c, 0xa1, 0xae, 0xf6, 0xe3, 0x5f, 0x49, 0x50, 0x9c, 0xd3, 0x49, 0x5b, 0xdd, 0x14, 0x39, 0x93,
+ 0xad, 0xfd, 0x3f, 0x48, 0x13, 0xb1, 0x8b, 0x75, 0x8c, 0xcf, 0x50, 0x29, 0x46, 0x9a, 0x85, 0xbf,
+ 0xe2, 0x9a, 0x42, 0x33, 0xd0, 0x37, 0x40, 0x31, 0x70, 0x83, 0xbb, 0xea, 0x7e, 0x38, 0x86, 0x67,
+ 0x02, 0x1b, 0xdc, 0xbd, 0x64, 0xa4, 0x0b, 0x97, 0xc5, 0xa4, 0x48, 0x39, 0x95, 0x1e, 0xe6, 0xc1,
+ 0xcb, 0xf4, 0x52, 0x8e, 0xc6, 0x75, 0x8e, 0xab, 0x79, 0x98, 0xce, 0x1c, 0x37, 0x8e, 0xde, 0xe9,
+ 0xdd, 0x19, 0xf7, 0x70, 0x1d, 0x2b, 0x6f, 0x67, 0x55, 0xbe, 0x88, 0x5f, 0x43, 0xcf, 0x29, 0x81,
+ 0x9e, 0x07, 0xa0, 0x67, 0xc1, 0x07, 0xbd, 0xe0, 0x0d, 0xd4, 0x1b, 0x5d, 0x13, 0xd1, 0x9d, 0xa0,
+ 0x25, 0xdc, 0x0b, 0x5d, 0x00, 0x52, 0xc5, 0xe6, 0xa1, 0xcc, 0x2e, 0xbc, 0x37, 0x45, 0x89, 0x81,
+ 0x0c, 0xc7, 0x85, 0x89, 0x3a, 0x6d, 0x0d, 0x74, 0xfb, 0xdf, 0xf0, 0x96, 0xac, 0x76, 0xa2, 0x5e,
+ 0x06, 0xae, 0xfd, 0x29, 0x65, 0x7d, 0x9d, 0x36, 0xb9, 0xe6, 0x84, 0xf0, 0x65, 0x17, 0x06, 0xc0,
+ 0xa3, 0x39, 0xf5, 0x07, 0xdc, 0x04, 0x1f, 0x86, 0x11, 0x74, 0x7d, 0xc4, 0x04, 0x7b, 0xda, 0xae,
+ 0xab, 0x0b, 0xb9, 0x23, 0x31, 0xd0, 0x85, 0xd7, 0x01, 0xc4, 0xac, 0x63, 0xc1, 0xcc, 0x38, 0x52,
+ 0x10, 0x2f, 0x6b, 0x77, 0x60, 0x18, 0x39, 0x81, 0x6a, 0x75, 0x6c, 0x4a, 0x8d, 0x5b, 0xf8, 0xda,
+ 0x9b, 0xf9, 0x5f, 0x73, 0x0f, 0x0d, 0xe3, 0x22, 0xa3, 0x5a, 0xbc, 0x46, 0xa5, 0x6c, 0x66, 0xdd,
+ 0xcf, 0xfc, 0xc0, 0xbb, 0x14, 0x41, 0xf1, 0x3e, 0xf4, 0x87, 0xb9, 0xf5, 0xa3, 0x2a, 0x4c, 0x0a,
+ 0x62, 0x57, 0x8b, 0x15, 0x92, 0xa1, 0x42, 0xd8, 0x31, 0xba, 0x77, 0x73, 0x5b, 0x50, 0xbd, 0xb1,
+ 0x6a, 0x87, 0xde, 0x6f, 0xbe, 0x57, 0x40, 0x1a, 0xc0, 0x64, 0x75, 0xe1, 0x42, 0x42, 0xd5, 0x2a,
+ 0x1a, 0x08, 0x3b, 0xcb, 0x5c, 0x7e, 0xe7, 0x26, 0x63, 0x7f, 0x30, 0x58, 0xb5, 0x04, 0xf2, 0x85,
+ 0x87, 0xab, 0x56, 0x3d, 0x44, 0x2b, 0xa4, 0x70, 0x07, 0x9e, 0xa7, 0xf4, 0x1e, 0x9c, 0xe6, 0x4c,
+ 0x10, 0x07, 0x23, 0x85, 0x89, 0xa5, 0x13, 0x94, 0x57, 0xcb, 0x29, 0x03, 0xf7, 0x47, 0x7a, 0xa7,
+ 0xd0, 0xdd, 0xdf, 0x65, 0xdd, 0x41, 0xf7, 0x72, 0x52, 0x1d, 0xad, 0xcd, 0x1d, 0x80, 0xdc, 0x2d,
+ 0x6a, 0x2d, 0xdc, 0x4f, 0xfc, 0x55, 0xf0, 0x3a, 0x66, 0xb0, 0xa3, 0x07, 0xc4, 0x55, 0x9b, 0x21,
+ 0xca, 0x06, 0x7a, 0x3f, 0x4b, 0xaf, 0x2f, 0xbd, 0x63, 0x87, 0x54, 0xae, 0x1d, 0xdb, 0xfa, 0x17,
+ 0xed, 0x57, 0x1a, 0xde, 0xa7, 0xaa, 0x0b, 0x36, 0x0a, 0x6b, 0x39, 0xae, 0xd3, 0x35, 0x01, 0x40,
+ 0xb5, 0xde, 0xd8, 0x2f, 0xe7, 0x1d, 0x2e, 0x9d, 0x5b, 0xca, 0x58, 0x94, 0x4d, 0x53, 0xd4, 0x43,
+ 0x64, 0x47, 0x03, 0xf8, 0x45, 0x0a, 0xf7, 0x35, 0xf3, 0x9d, 0x13, 0x26, 0x82, 0x3b, 0x0d, 0xf3,
+ 0x87, 0x32, 0xf3, 0x08, 0x75, 0x37, 0xf1, 0x06, 0x94, 0x45, 0x59, 0xaa, 0xd6, 0xad, 0x8f, 0x84,
+ 0x52, 0x6f, 0xd8, 0x04, 0x66, 0x22, 0x3d, 0x2a, 0x4d, 0xeb, 0x0d, 0x1c, 0xa6, 0xf5, 0x10, 0xcb,
+ 0xdf, 0x74, 0xf5, 0x8e, 0x3a, 0xc1, 0x1f, 0x07, 0x2c, 0xb7, 0x6a, 0x8d, 0x6e, 0x82, 0xdb, 0xa6,
+ 0x37, 0x70, 0x7f, 0x11, 0x6f, 0x72, 0xb6, 0x43, 0x2c, 0xd9, 0xea, 0xb4, 0xe2, 0x0d, 0x6d, 0xd4,
+ 0x33, 0x63, 0x83, 0xb1, 0x39, 0xa1, 0x39, 0xb6, 0xe1, 0xd3, 0x49, 0x0c, 0xbd, 0x07, 0x06, 0x0e,
+ 0x40, 0x64, 0x4e, 0xae, 0x72, 0xbf, 0x3b, 0x10, 0xe2, 0xb2, 0x1e, 0x79, 0x11, 0x21, 0x43, 0x09,
+ 0x3d, 0x55, 0x27, 0x12, 0x6b, 0xd7, 0x4c, 0x6f, 0x7f, 0xe4, 0x50, 0x04, 0x2e, 0x78, 0x0d, 0xd1,
+ 0x93, 0xf7, 0xe0, 0xda, 0x91, 0x66, 0xc7, 0x09, 0xb1, 0x52, 0xcb, 0xec, 0x88, 0x4b, 0xf3, 0xce,
+ 0x90, 0xd8, 0x55, 0x54, 0x94, 0x78, 0x72, 0x16, 0xaf, 0x5d, 0x73, 0x4d, 0x55, 0x38, 0xb2, 0x44,
+ 0xef, 0x03, 0x4d, 0xe9, 0xd3, 0xdb, 0x7f, 0x0c, 0xac, 0xab, 0x83, 0x5f, 0x20, 0xf2, 0x3d, 0xb2,
+ 0xa9, 0x5d, 0x5e, 0x33, 0x9e, 0x95, 0xee, 0xae, 0x1e, 0x56, 0x45, 0x42, 0x76, 0xb0, 0x64, 0x69,
+ 0xed, 0x5e, 0xac, 0xae, 0x8a, 0xd5, 0x0d, 0x69, 0x9c, 0xda, 0x1a, 0x37, 0x0e, 0xc7, 0x04, 0x71,
+ 0x06, 0x72, 0x31, 0x30, 0xac, 0x51, 0x63, 0xe2, 0x2f, 0x34, 0xf1, 0x0a, 0x44, 0x53, 0x30, 0xb4,
+ 0xc7, 0x61, 0x68, 0x72, 0x65, 0x57, 0x70, 0x2c, 0x36, 0x25, 0xff, 0xd8, 0x9d, 0xb1, 0xe8, 0x08,
+ 0xe9, 0x4b, 0x38, 0x55, 0x75, 0x2a, 0xb1, 0x36, 0x7f, 0x64, 0x9d, 0x3a, 0x94, 0x1e, 0xea, 0x69,
+ 0x4d, 0x13, 0xba, 0x49, 0x93, 0xe3, 0x24, 0xbd, 0x07, 0xb8, 0x8a, 0xe2, 0x94, 0x80, 0x77, 0xaa,
+ 0xa2, 0x6a, 0xdf, 0xa0, 0x38, 0xcd, 0xcc, 0xac, 0xb9, 0x2a, 0xfc, 0xd5, 0x7b, 0x57, 0x70, 0x84,
+ 0x13, 0x69, 0x61, 0x60, 0x7c, 0x12, 0x7b, 0x1b, 0x55, 0xc3, 0x18, 0x54, 0x71, 0xe3, 0x92, 0x6e,
+ 0xb5, 0x8e, 0xc5, 0x96, 0xa2, 0x8a, 0x5c, 0xd8, 0x24, 0xf3, 0x5d, 0xe4, 0x22, 0xb9, 0x25, 0x7e,
+ 0xc1, 0xd5, 0x49, 0xbb, 0x40, 0x19, 0x6a, 0x4d, 0x7d, 0xb5, 0x59, 0x23, 0xa4, 0x8d, 0x7b, 0x6f,
+ 0x38, 0xce, 0xf3, 0x77, 0x4d, 0xd6, 0xa7, 0x1c, 0x62, 0x78, 0x8b, 0x5e, 0x17, 0x8c, 0x3d, 0x0b,
+ 0xd0, 0x7a, 0x1d, 0x6d, 0x07, 0x13, 0x3f, 0xa1, 0xce, 0x6f, 0x65, 0x77, 0x5d, 0x5e, 0x9f, 0xb4,
+ 0xb4, 0x7a, 0x84, 0x62, 0x9b, 0x2b, 0xaf, 0x05, 0x82, 0xd7, 0x1e, 0xa5, 0xd8, 0x7e, 0x82, 0x17,
+ 0x6a, 0x52, 0x85, 0xcf, 0xa5, 0xbb, 0xbd, 0xe9, 0xff, 0x95, 0x58, 0xff, 0x9d, 0x5a, 0x1d, 0xb7,
+ 0x44, 0x82, 0xd5, 0x73, 0xe4, 0x3d, 0x2c, 0x49, 0x82, 0xcc, 0xda, 0x9f, 0xd3, 0x16, 0x2f, 0xbf,
+ 0x64, 0x46, 0x55, 0xfc, 0xec, 0x07, 0x54, 0xa7, 0xfb, 0x7b, 0x4d, 0x94, 0x31, 0x4c, 0xcd, 0x55,
+ 0xe7, 0x67, 0xb7, 0x59, 0xf6, 0x67, 0xf9, 0x61, 0xec, 0xf0, 0xdf, 0x68, 0xf3, 0x98, 0x64, 0xef,
+ 0xe7, 0xd4, 0xce, 0x7a, 0xdd, 0xb7, 0x57, 0x71, 0xb5, 0xae, 0x7e, 0x21, 0x84, 0xfc, 0xdd, 0x8e,
+ 0x90, 0x95, 0x59, 0xd4, 0xb9, 0xd6, 0x1c, 0x7b, 0xd1, 0x86, 0xcb, 0xf3, 0xe8, 0x8f, 0x3d, 0x25,
+ 0x2d, 0x09, 0xe8, 0xd2, 0xa1, 0x5a, 0x6f, 0x28, 0xc3, 0xa5, 0x9f, 0x95, 0xa2, 0x92, 0x1a, 0x2a,
+ 0x1e, 0x04, 0x3b, 0x08, 0x4e, 0xd4, 0x45, 0xf2, 0x19, 0x1a, 0xab, 0x5b, 0x55, 0x2b, 0x63, 0x19,
+ 0xf9, 0x31, 0x56, 0x18, 0x90, 0xa2, 0x63, 0x93, 0x1a, 0x1c, 0x5f, 0xb1, 0x43, 0xa4, 0x21, 0xa1,
+ 0x37, 0x27, 0xdb, 0x6c, 0x97, 0x80, 0x5c, 0xca, 0x49, 0xea, 0x99, 0xc2, 0x84, 0xec, 0xa3, 0x90,
+ 0xbd, 0x13, 0xcd, 0xf6, 0x5f, 0x62, 0x77, 0xff, 0x35, 0xa8, 0xce, 0xee, 0xfd, 0xc2, 0x2b, 0xf6,
+ 0x30, 0xac, 0xf8, 0x8e, 0x9a, 0x31, 0x8a, 0x3b, 0x55, 0xab, 0x9e, 0x78, 0x9c, 0xde, 0xd2, 0xfc,
+ 0x33, 0x3d, 0x1c, 0xaf, 0xad, 0x6e, 0xa4, 0x96, 0xfa, 0x0b, 0xdc, 0xc1, 0x7c, 0x67, 0x33, 0x14,
+ 0x49, 0x8b, 0xed, 0xf0, 0x97, 0xf4, 0xb0, 0x97, 0x49, 0x83, 0x78, 0x0e, 0xaf, 0x6c, 0xea, 0x99,
+ 0xa4, 0xb3, 0x54, 0xee, 0x63, 0xdb, 0x1c, 0x4f, 0xe2, 0xe5, 0xd5, 0xec, 0x52, 0x96, 0xee, 0x57,
+ 0x66, 0x83, 0xb3, 0x67, 0x7f, 0x19, 0x14, 0xdd, 0xfe, 0x36, 0xfc, 0x51, 0x16, 0x47, 0x20, 0xfd,
+ 0xe6, 0xa9, 0x00, 0x6a, 0xdc, 0xe4, 0x33, 0x21, 0x99, 0x42, 0xac, 0x6e, 0xc2, 0xca, 0x78, 0x34,
+ 0xbc, 0x07, 0xc7, 0x81, 0x5f, 0xd0, 0xb8, 0x35, 0x16, 0x2c, 0xa1, 0x4d, 0xde, 0xc5, 0xca, 0x15,
+ 0xff, 0x6e, 0x8f, 0x56, 0x77, 0x2c, 0x86, 0xbd, 0x78, 0x6c, 0x0d, 0xaf, 0xcc, 0x18, 0xe9, 0xca,
+ 0x9c, 0x8e, 0x5d, 0x85, 0xb5, 0xc4, 0xbb, 0xb0, 0x1a, 0x73, 0x08, 0xbb, 0xfc, 0x04, 0x3b, 0xb7,
+ 0x28, 0x26, 0x46, 0x9d, 0x97, 0x7c, 0xea, 0xa2, 0x0c, 0x87, 0x37, 0xc0, 0x8e, 0xd2, 0x75, 0x66,
+ 0x43, 0x9d, 0x29, 0x9e, 0x3b, 0x60, 0x9d, 0xcb, 0x1d, 0x38, 0x01, 0xa6, 0x8d, 0xee, 0xbc, 0x8d,
+ 0x39, 0x04, 0x01, 0xd1, 0xf8, 0xa8, 0x01, 0x38, 0xe9, 0x36, 0xdf, 0xbc, 0x3b, 0x82, 0xfc, 0x38,
+ 0xb1, 0x1e, 0x97, 0x42, 0x8c, 0xe7, 0x1e, 0x26, 0xd6, 0x0b, 0x78, 0x03, 0xe8, 0x06, 0x57, 0xb3,
+ 0x0e, 0x03, 0xac, 0x6c, 0x85, 0x58, 0x5b, 0xe5, 0x6c, 0x2d, 0xb1, 0xba, 0x81, 0x69, 0xbc, 0x4f,
+ 0xd6, 0x3c, 0x26, 0xee, 0xf6, 0xe8, 0x59, 0xce, 0x95, 0x8a, 0xbe, 0xc2, 0x22, 0x0f, 0xba, 0xe4,
+ 0x57, 0x70, 0xdf, 0x26, 0xef, 0x34, 0x11, 0x0e, 0xc3, 0x9c, 0xc7, 0xed, 0x3d, 0x46, 0xef, 0x94,
+ 0xd7, 0x13, 0xeb, 0x9f, 0xa4, 0x29, 0x18, 0x37, 0xf1, 0xdd, 0xd2, 0x1e, 0x2d, 0x7b, 0x89, 0x54,
+ 0x76, 0x48, 0x1b, 0x75, 0x51, 0x8d, 0x52, 0xca, 0xa0, 0x64, 0x64, 0x9b, 0x88, 0xb0, 0x5f, 0x7a,
+ 0xe6, 0x5b, 0x69, 0xa7, 0x26, 0x6a, 0x80, 0x58, 0xdb, 0x93, 0x5a, 0x49, 0xef, 0x34, 0x6b, 0x37,
+ 0xf7, 0x6a, 0x13, 0x18, 0xb3, 0x15, 0x10, 0x0e, 0xf2, 0xfb, 0x89, 0xd0, 0x49, 0xf2, 0x5a, 0x62,
+ 0xaf, 0xe1, 0xc9, 0xa2, 0x57, 0x1a, 0x0c, 0xbd, 0x55, 0xc3, 0xac, 0x70, 0xf7, 0x0a, 0x30, 0x05,
+ 0x23, 0xb1, 0xd7, 0x1c, 0x13, 0xa1, 0x0e, 0x19, 0x99, 0x26, 0xb4, 0x70, 0x7b, 0xff, 0x01, 0x78,
+ 0x06, 0xb2, 0xa1, 0x79, 0xcd, 0x39, 0x70, 0xef, 0x85, 0x16, 0x68, 0x2c, 0x09, 0x1d, 0x44, 0x00,
+ 0x58, 0x0a, 0xd6, 0xeb, 0x04, 0x10, 0x35, 0x17, 0x85, 0x70, 0x89, 0x6f, 0x47, 0x45, 0x11, 0x0e,
+ 0x93, 0x3d, 0x1a, 0x70, 0xd1, 0xad, 0x0a, 0xae, 0x9c, 0x75, 0xc6, 0x0e, 0x12, 0x1b, 0xb8, 0xb7,
+ 0xe0, 0x7a, 0x9d, 0x96, 0x00, 0x6b, 0xbe, 0x5e, 0xf4, 0xc4, 0x64, 0x71, 0xea, 0x4d, 0xf2, 0x0c,
+ 0xad, 0xb4, 0x56, 0x47, 0x1a, 0x22, 0x4e, 0x3a, 0x37, 0xd0, 0x75, 0xd2, 0x87, 0x57, 0x21, 0x8f,
+ 0xc9, 0x49, 0xf1, 0x0a, 0xe3, 0xc8, 0x90, 0xa6, 0xa0, 0xd3, 0x32, 0x40, 0x2e, 0x56, 0x37, 0x51,
+ 0xf7, 0x23, 0x17, 0x9c, 0x18, 0x05, 0xd8, 0xfe, 0x29, 0x0a, 0xd9, 0xac, 0x6b, 0xa1, 0x7c, 0xf7,
+ 0x64, 0x93, 0x02, 0x50, 0xc9, 0xd2, 0x04, 0x1f, 0xc9, 0xd5, 0x00, 0xff, 0xd7, 0xe9, 0x0e, 0xd1,
+ 0xb2, 0x16, 0x92, 0xa9, 0xc5, 0x2b, 0xc5, 0xbc, 0xcf, 0x1b, 0x87, 0x87, 0xc2, 0x34, 0xab, 0x25,
+ 0x6b, 0x2b, 0xf8, 0x07, 0x8b, 0x1a, 0x48, 0xcb, 0x21, 0xf4, 0xfd, 0xfa, 0xde, 0xcf, 0x7a, 0x04,
+ 0x2a, 0xa4, 0x25, 0x35, 0x72, 0x7b, 0x45, 0x3c, 0x62, 0x05, 0x0e, 0xc1, 0x61, 0x4a, 0x59, 0x9f,
+ 0xd1, 0x2d, 0xc7, 0x25, 0x8b, 0xbb, 0x2f, 0x23, 0x1b, 0xf0, 0xa6, 0xa9, 0xbc, 0xf2, 0xb2, 0x74,
+ 0xb7, 0xb4, 0x5d, 0x73, 0x88, 0xce, 0xa5, 0x56, 0x25, 0xa9, 0x4d, 0x95, 0xb6, 0x1e, 0x69, 0x9d,
+ 0x56, 0xca, 0xd5, 0x01, 0x8a, 0x8e, 0x34, 0x72, 0x32, 0xd4, 0xa4, 0x4c, 0x16, 0xba, 0xab, 0x87,
+ 0x58, 0x14, 0xd1, 0x6b, 0x8c, 0x63, 0x29, 0xcc, 0xfe, 0xd5, 0x27, 0x10, 0x19, 0x16, 0xac, 0xe2,
+ 0x0d, 0x79, 0xcd, 0x65, 0x2d, 0x1a, 0xde, 0x6e, 0xf1, 0x9c, 0x9f, 0x18, 0x49, 0xb6, 0xa6, 0x39,
+ 0x93, 0xee, 0xdc, 0x37, 0x8f, 0xa3, 0xe3, 0xed, 0xf1, 0x86, 0x42, 0x59, 0x44, 0x9b, 0x10, 0x23,
+ 0x59, 0x7d, 0xb2, 0x2e, 0x47, 0x12, 0x5a, 0xe5, 0x45, 0x67, 0x02, 0x98, 0x82, 0xd4, 0xf8, 0xb2,
+ 0x00, 0x46, 0xf2, 0x0a, 0xde, 0xc7, 0xed, 0xcd, 0xa7, 0x11, 0xaf, 0x8f, 0x34, 0xa0, 0x30, 0x09,
+ 0x13, 0xe8, 0x35, 0x24, 0x5f, 0xd7, 0x83, 0xf4, 0x84, 0x3c, 0xba, 0x5f, 0xa6, 0x0e, 0xd2, 0x62,
+ 0x3c, 0x01, 0x1e, 0x9d, 0x6e, 0xb5, 0xac, 0x69, 0x21, 0x78, 0x98, 0xdb, 0x97, 0x74, 0x12, 0xaf,
+ 0x89, 0xb5, 0x56, 0x24, 0x21, 0x83, 0xf4, 0x52, 0xb9, 0x46, 0xbd, 0xfd, 0x4c, 0x1a, 0x51, 0x7a,
+ 0xc6, 0xe1, 0xbe, 0xf0, 0x3a, 0x0d, 0xc8, 0x48, 0x4b, 0x2c, 0x7e, 0xc0, 0x83, 0x4b, 0xed, 0xc1,
+ 0x43, 0x38, 0xa9, 0x56, 0x85, 0x4b, 0x6d, 0x4c, 0x13, 0x9b, 0x63, 0x92, 0x2e, 0x0b, 0x97, 0x64,
+ 0x5d, 0x32, 0x78, 0x56, 0x72, 0xb4, 0x4a, 0x3d, 0x39, 0xef, 0x0d, 0xf2, 0x19, 0xb9, 0xd8, 0xf7,
+ 0x3e, 0x4d, 0xe1, 0x3c, 0xd9, 0x3e, 0x2a, 0x45, 0xae, 0xf5, 0xbd, 0x2f, 0x99, 0x3a, 0x53, 0x44,
+ 0xbe, 0x23, 0x66, 0x85, 0xe9, 0x02, 0xe7, 0x2a, 0xc3, 0x5d, 0x4f, 0x77, 0x22, 0x5e, 0x4e, 0x72,
+ 0x23, 0x20, 0xeb, 0x0d, 0xc9, 0x79, 0x52, 0x5f, 0x3d, 0x82, 0x43, 0x87, 0x10, 0x7b, 0x84, 0x15,
+ 0xca, 0xa4, 0x4a, 0x00, 0x7e, 0x36, 0xc9, 0x31, 0x57, 0x28, 0x94, 0x9c, 0x67, 0xb5, 0xd2, 0xe3,
+ 0x67, 0x75, 0x78, 0xa2, 0x7d, 0x2a, 0xc8, 0x18, 0xdb, 0x27, 0x39, 0x34, 0x40, 0xdb, 0x07, 0x1c,
+ 0x71, 0x0f, 0x3c, 0x1a, 0x13, 0xd1, 0x27, 0xa4, 0x82, 0x1f, 0x1a, 0xea, 0x30, 0x80, 0xe4, 0x4e,
+ 0x7e, 0x34, 0x5e, 0x5e, 0x7f, 0x56, 0x4b, 0x1e, 0xd5, 0x90, 0x85, 0xb2, 0x39, 0x44, 0xca, 0xf3,
+ 0x25, 0x5d, 0xa9, 0x98, 0x9e, 0xd0, 0x28, 0x36, 0x8e, 0x48, 0xd6, 0x4e, 0x39, 0xfa, 0xa4, 0xbc,
+ 0x4b, 0x51, 0x91, 0x02, 0xec, 0xc4, 0x86, 0x98, 0x47, 0x84, 0xbf, 0x03, 0x21, 0x2f, 0x00, 0xb1,
+ 0x4d, 0xbe, 0x64, 0x98, 0xe7, 0xc0, 0xe5, 0xbd, 0x90, 0x04, 0x42, 0xfe, 0x14, 0xa5, 0xe9, 0x71,
+ 0xbc, 0xdb, 0xad, 0x0d, 0x2e, 0x7a, 0xda, 0x7f, 0xae, 0xde, 0x6e, 0xfd, 0xf4, 0x2b, 0xea, 0x12,
+ 0xe0, 0x81, 0x92, 0x3b, 0xb6, 0xa2, 0x94, 0x0d, 0x2e, 0x9c, 0xbc, 0x83, 0x49, 0x12, 0xde, 0x14,
+ 0x86, 0xe6, 0x90, 0xad, 0xc7, 0x1a, 0xa3, 0x0e, 0x38, 0xe9, 0xc4, 0x55, 0xd1, 0xb9, 0xd4, 0xcd,
+ 0x79, 0x85, 0xae, 0x97, 0xd4, 0xc7, 0x40, 0x4a, 0x9a, 0x4e, 0xdb, 0x80, 0x7c, 0xdc, 0xc2, 0x23,
+ 0xd5, 0x5c, 0x4d, 0x07, 0x3d, 0xc3, 0xfe, 0x17, 0xfa, 0xf1, 0xb0, 0xd7, 0x56, 0x23, 0x88, 0x20,
+ 0x25, 0x9b, 0x80, 0x92, 0xbb, 0x34, 0x52, 0xa4, 0xe4, 0xd0, 0xe2, 0x45, 0x72, 0x9f, 0xe4, 0xd0,
+ 0x45, 0x8d, 0x88, 0xbb, 0x50, 0x34, 0x71, 0x1b, 0xe8, 0x13, 0x5c, 0x8e, 0x2a, 0x96, 0x26, 0x71,
+ 0xc7, 0xce, 0x71, 0x07, 0xaf, 0x78, 0xbe, 0xd0, 0x54, 0x0f, 0x33, 0x6f, 0xfb, 0xfd, 0x9f, 0xe0,
+ 0xe7, 0x94, 0x38, 0xd3, 0x95, 0xa4, 0xcb, 0x78, 0x86, 0x3d, 0x5f, 0xed, 0x4f, 0x8e, 0xa6, 0x1d,
+ 0x48, 0x2f, 0xe6, 0x60, 0x07, 0xc7, 0xd0, 0x97, 0x4c, 0x3a, 0x4b, 0x67, 0xc6, 0x69, 0x87, 0x73,
+ 0xde, 0x43, 0x2f, 0x6b, 0x49, 0x75, 0xa5, 0x8f, 0x05, 0x9e, 0x90, 0x01, 0x68, 0x26, 0x55, 0x2a,
+ 0xdc, 0xde, 0x53, 0x14, 0x23, 0xda, 0x00, 0x64, 0x19, 0x84, 0x99, 0x7d, 0x58, 0x2b, 0xe6, 0xe8,
+ 0xfc, 0xcd, 0xa9, 0xaa, 0xf0, 0x86, 0xa0, 0xf5, 0x3d, 0xa4, 0x22, 0x11, 0xc1, 0x1d, 0x6b, 0xe3,
+ 0x0e, 0x9e, 0xf4, 0x5c, 0x1f, 0x8b, 0xc4, 0xc9, 0x4f, 0xb0, 0x0e, 0xf8, 0x2e, 0x49, 0xc3, 0xf4,
+ 0x73, 0x28, 0xb1, 0xbd, 0x0e, 0x7b, 0xc0, 0xfd, 0x89, 0xed, 0xa9, 0xc8, 0xbb, 0xd3, 0xf8, 0x04,
+ 0x77, 0xb0, 0xcd, 0xf3, 0xb9, 0xa6, 0x7a, 0x08, 0x1b, 0x1f, 0x52, 0x1b, 0xb7, 0x05, 0x50, 0x57,
+ 0x69, 0x83, 0xbe, 0xc0, 0xe1, 0xd5, 0x1f, 0x40, 0xc6, 0xfd, 0xf8, 0x2d, 0xa3, 0x6e, 0xe9, 0xc5,
+ 0xd5, 0x1f, 0x42, 0x22, 0xb6, 0x87, 0xbd, 0x84, 0x77, 0x15, 0x0e, 0xe7, 0x60, 0x11, 0x7e, 0x96,
+ 0xe9, 0xc5, 0x1c, 0xcc, 0xf7, 0x86, 0xab, 0xad, 0xd3, 0x08, 0xfd, 0x81, 0x01, 0x65, 0x8a, 0xee,
+ 0x98, 0x15, 0x94, 0x21, 0x64, 0x88, 0xdb, 0xfb, 0x2c, 0x5d, 0xd3, 0xb9, 0xc3, 0x53, 0x9b, 0x62,
+ 0xa2, 0x2b, 0x81, 0x1a, 0x6a, 0x42, 0xea, 0x97, 0x56, 0x69, 0x98, 0x59, 0x2d, 0x6c, 0xcb, 0x21,
+ 0x94, 0x52, 0x9b, 0xad, 0x94, 0xb5, 0x65, 0xdb, 0xcc, 0xb6, 0xec, 0x51, 0x66, 0x5e, 0xa6, 0xe7,
+ 0x0e, 0xe6, 0x8d, 0x86, 0x30, 0x5e, 0x85, 0xa0, 0x4a, 0x03, 0x13, 0x3c, 0x86, 0x62, 0xbf, 0xa9,
+ 0x2e, 0xef, 0x97, 0xff, 0x95, 0x8a, 0x12, 0xee, 0x98, 0x4f, 0xa0, 0x58, 0x68, 0xa9, 0x3c, 0x50,
+ 0x71, 0x09, 0xcc, 0xa7, 0x82, 0x51, 0xe2, 0x75, 0x61, 0x68, 0x69, 0xe6, 0x20, 0x16, 0xf8, 0xc5,
+ 0x80, 0x73, 0xd9, 0x39, 0x39, 0x39, 0xd9, 0x39, 0xe6, 0x9c, 0xb1, 0x93, 0x0c, 0x17, 0x12, 0x98,
+ 0x64, 0xe8, 0x3c, 0x05, 0xd0, 0x27, 0xa9, 0xd0, 0xe9, 0x85, 0xae, 0x52, 0xc6, 0x4c, 0x0f, 0x0a,
+ 0x4c, 0x1f, 0x75, 0x20, 0x09, 0xf7, 0x7e, 0xf4, 0xff, 0xea, 0xa0, 0x52, 0x0c, 0xee, 0x19, 0x41,
+ 0xec, 0x9c, 0xae, 0xc5, 0xb5, 0x29, 0xfc, 0x4e, 0xd0, 0xed, 0x09, 0x7e, 0x84, 0xde, 0xb6, 0xa7,
+ 0x22, 0xdb, 0x92, 0xb5, 0x63, 0x57, 0x82, 0x15, 0xcd, 0xa9, 0xbc, 0xe8, 0xbf, 0xdf, 0x40, 0x6a,
+ 0x3f, 0xc8, 0x0a, 0x4f, 0x48, 0x19, 0x3e, 0xc9, 0x76, 0x53, 0xda, 0x33, 0x08, 0xee, 0x19, 0xdb,
+ 0x2c, 0x6d, 0xfc, 0x36, 0xea, 0xbc, 0xeb, 0xea, 0x9e, 0xa8, 0xaa, 0xca, 0x68, 0x46, 0x18, 0x6f,
+ 0xf4, 0xbb, 0xce, 0x7d, 0x8a, 0xcb, 0xbc, 0xcf, 0x2d, 0xc3, 0x4f, 0x89, 0x54, 0xde, 0x00, 0xde,
+ 0x89, 0x57, 0x19, 0x8a, 0x8c, 0x25, 0x97, 0x98, 0x3a, 0xf1, 0xa0, 0xb7, 0xfc, 0x27, 0xd0, 0x3f,
+ 0x53, 0x27, 0x60, 0x04, 0xbe, 0xf4, 0x79, 0xb0, 0x0f, 0x2b, 0x2a, 0x3b, 0x48, 0xfb, 0x34, 0x30,
+ 0x4e, 0xbc, 0x52, 0x19, 0xbd, 0x5a, 0x6c, 0x52, 0x5c, 0x27, 0x9e, 0x7b, 0xd5, 0xfe, 0xae, 0x99,
+ 0x0e, 0x34, 0xe1, 0x86, 0xdf, 0x9f, 0x30, 0x1c, 0xdb, 0x4e, 0x9a, 0x8c, 0x6e, 0x20, 0x90, 0xd9,
+ 0x9c, 0x8d, 0xe7, 0xb2, 0x6c, 0x39, 0x96, 0xdc, 0x51, 0xe4, 0xf1, 0xd1, 0x11, 0xce, 0x43, 0x24,
+ 0x9c, 0x93, 0xc9, 0x2a, 0x44, 0x96, 0x4c, 0x7f, 0x13, 0x25, 0x1f, 0x5f, 0xbd, 0x13, 0xfd, 0x78,
+ 0x11, 0x2c, 0x57, 0x99, 0xa1, 0x1e, 0x3a, 0x1d, 0xa5, 0xd9, 0x4c, 0x60, 0xbd, 0x4e, 0x83, 0x77,
+ 0xa7, 0x63, 0x46, 0x79, 0x02, 0xae, 0x51, 0x9f, 0xa2, 0xd2, 0xe2, 0xe9, 0xf7, 0x73, 0xc4, 0xac,
+ 0x21, 0xb8, 0x5b, 0xff, 0xac, 0x64, 0xd5, 0x8b, 0x0d, 0xfa, 0xc0, 0x9a, 0x58, 0xf0, 0xca, 0xee,
+ 0x72, 0x56, 0x30, 0x4b, 0xa9, 0x3e, 0x69, 0xd7, 0xcd, 0xa3, 0x54, 0xd9, 0x02, 0x9b, 0xdc, 0x23,
+ 0xd2, 0xa3, 0x83, 0x8e, 0x05, 0xe4, 0x1a, 0xdb, 0x34, 0x79, 0xd7, 0xb7, 0xd5, 0x23, 0xa8, 0x70,
+ 0xa8, 0xa5, 0xb3, 0xc1, 0x09, 0x4b, 0x68, 0x9a, 0x80, 0x4a, 0x06, 0x7e, 0x0e, 0x6a, 0xa1, 0xe0,
+ 0x0b, 0xcd, 0xeb, 0x66, 0x1b, 0xc1, 0x0c, 0x7a, 0xb5, 0x2c, 0xfc, 0x09, 0x65, 0xf3, 0x20, 0xae,
+ 0x8c, 0x59, 0x2d, 0xbc, 0x4f, 0xfb, 0xf7, 0x91, 0x2c, 0x0d, 0x8a, 0xbd, 0x3e, 0xe0, 0x97, 0x35,
+ 0x68, 0x98, 0x3b, 0xdf, 0x32, 0x12, 0xe2, 0xf0, 0xdb, 0x38, 0xbc, 0x4e, 0xd2, 0xe3, 0x01, 0xf4,
+ 0x96, 0x08, 0x1f, 0x57, 0xf3, 0x37, 0x0c, 0x77, 0xf9, 0x79, 0xb3, 0xf9, 0x44, 0xf5, 0xd3, 0x50,
+ 0xa1, 0x26, 0x3d, 0x9e, 0xa6, 0x14, 0xa2, 0x89, 0xd0, 0x8d, 0x07, 0x8c, 0xb5, 0xce, 0x27, 0x24,
+ 0x3e, 0x5e, 0xae, 0xd0, 0x83, 0x73, 0xa9, 0x49, 0x0a, 0x17, 0xd6, 0xe0, 0x91, 0x98, 0x3d, 0x3e,
+ 0x69, 0xe3, 0x4d, 0x29, 0x63, 0x90, 0x1d, 0x94, 0xd6, 0x7e, 0x1b, 0x75, 0x19, 0xc6, 0x99, 0x34,
+ 0x2c, 0x59, 0xa3, 0xc9, 0xa5, 0xd8, 0xcf, 0xb8, 0x57, 0x1a, 0x93, 0x78, 0x7d, 0xec, 0x49, 0xee,
+ 0xd5, 0x66, 0xf0, 0x02, 0x20, 0x94, 0xe1, 0x5e, 0x71, 0x6b, 0xdb, 0xb5, 0x83, 0x42, 0x78, 0x55,
+ 0xe5, 0x3c, 0x98, 0xc8, 0x6b, 0xf0, 0x54, 0x19, 0x9a, 0x7a, 0x3e, 0xde, 0xe9, 0x14, 0x9b, 0x62,
+ 0x1e, 0x16, 0x7e, 0x5d, 0x55, 0x39, 0x97, 0x71, 0x42, 0x71, 0x22, 0xe3, 0xdc, 0x8c, 0x7f, 0x25,
+ 0x41, 0xe7, 0x9c, 0x21, 0x03, 0x82, 0x97, 0xfd, 0x82, 0x61, 0xb4, 0x47, 0xa5, 0xd8, 0xd4, 0x33,
+ 0xa5, 0xde, 0x7b, 0x8d, 0x6e, 0x6f, 0x12, 0xd4, 0x00, 0x50, 0x3f, 0xac, 0x64, 0x54, 0x2b, 0xe1,
+ 0xe6, 0x6e, 0xa5, 0x0f, 0xcf, 0x9f, 0x03, 0xef, 0xea, 0xe8, 0x67, 0x71, 0x34, 0x30, 0xa9, 0x85,
+ 0xef, 0x67, 0x83, 0xa7, 0x57, 0xed, 0xbf, 0x51, 0x6f, 0xc3, 0xf8, 0xae, 0xdf, 0x89, 0xee, 0x96,
+ 0x49, 0xbc, 0x3e, 0x14, 0xef, 0x4f, 0x29, 0x12, 0x1f, 0x3d, 0x99, 0xd7, 0xe1, 0x4c, 0x38, 0x15,
+ 0x3f, 0x02, 0xf6, 0x73, 0x5c, 0x78, 0xb0, 0xba, 0xe5, 0x14, 0x88, 0xfa, 0x0e, 0x1b, 0xd1, 0x59,
+ 0xc3, 0xef, 0xd3, 0xf0, 0x9d, 0xb2, 0x06, 0x26, 0xda, 0xe3, 0xf2, 0x4a, 0x8f, 0x34, 0x4e, 0xda,
+ 0xae, 0x25, 0xc2, 0x69, 0xb6, 0x09, 0x66, 0x4d, 0xea, 0x00, 0xb4, 0x44, 0x9d, 0x5c, 0x01, 0xa0,
+ 0x4e, 0x4d, 0xcb, 0xd3, 0x39, 0x7e, 0x94, 0x24, 0x80, 0x4b, 0xd2, 0x1d, 0x7b, 0x1e, 0x27, 0xa8,
+ 0x76, 0x70, 0xe8, 0x24, 0xd3, 0x61, 0x70, 0xe4, 0x02, 0x53, 0xf9, 0x23, 0x30, 0xeb, 0xe2, 0x54,
+ 0xde, 0xf5, 0x16, 0x0d, 0x17, 0xc1, 0x85, 0x6a, 0x0d, 0xb6, 0xe4, 0x5e, 0xe5, 0xfb, 0xd0, 0x9d,
+ 0x82, 0xf7, 0x6e, 0xbc, 0xd1, 0x67, 0x3d, 0x2e, 0xaf, 0x3f, 0x0f, 0x9e, 0xe1, 0x85, 0x8a, 0x07,
+ 0xaa, 0x2a, 0xfb, 0xf0, 0xd3, 0x00, 0x42, 0xab, 0x0a, 0x7b, 0x5a, 0x5e, 0x47, 0xc5, 0x4c, 0x98,
+ 0x03, 0xc9, 0x52, 0x3c, 0xe4, 0x9e, 0xaf, 0x49, 0xf0, 0xc5, 0x5e, 0x0e, 0xe5, 0x4f, 0x4f, 0x36,
+ 0xb5, 0x48, 0xd6, 0x0b, 0x24, 0x84, 0x3c, 0xac, 0xf1, 0x2e, 0x03, 0x77, 0x27, 0x09, 0x8f, 0xa8,
+ 0x82, 0xb7, 0xd6, 0x11, 0x3b, 0xc0, 0xbd, 0xda, 0xa8, 0xcd, 0xeb, 0x13, 0x96, 0x24, 0x59, 0x15,
+ 0xf0, 0xcf, 0x62, 0x07, 0x1c, 0xf3, 0x24, 0xd3, 0xe9, 0x50, 0x13, 0x08, 0x72, 0x0b, 0x0c, 0x3d,
+ 0xa1, 0x0d, 0xe6, 0x7d, 0x68, 0x19, 0x49, 0x52, 0x35, 0xe8, 0x34, 0xe1, 0xdd, 0xf1, 0xce, 0xe4,
+ 0xa4, 0x76, 0x6e, 0x6f, 0x08, 0x1e, 0x85, 0x7a, 0x06, 0x30, 0x9c, 0x66, 0x02, 0xef, 0xad, 0xbd,
+ 0xa2, 0x80, 0xf4, 0x04, 0xb0, 0xe0, 0xbb, 0x63, 0x5b, 0xa0, 0x6e, 0xc5, 0x9f, 0xa5, 0xca, 0x0b,
+ 0x92, 0xf5, 0x74, 0xa8, 0x35, 0x08, 0xab, 0x97, 0xdc, 0x3d, 0x0d, 0x9c, 0xc7, 0x4c, 0x8d, 0x3a,
+ 0xb9, 0x55, 0x3c, 0x88, 0x24, 0x00, 0xef, 0x77, 0x77, 0x9b, 0x9e, 0x80, 0x6b, 0x9b, 0x86, 0x22,
+ 0xbb, 0xde, 0xa3, 0xc1, 0x4b, 0x65, 0x2b, 0x3d, 0x09, 0x30, 0x4d, 0x77, 0x4c, 0xa3, 0x39, 0x3a,
+ 0xe2, 0xf4, 0x68, 0xbd, 0xcf, 0x03, 0x4c, 0x6f, 0x75, 0xf5, 0x2d, 0x3f, 0xbd, 0x75, 0xe2, 0xde,
+ 0x36, 0x31, 0x68, 0x3a, 0x17, 0x77, 0xa2, 0x13, 0x2f, 0xf1, 0x31, 0xf2, 0xa2, 0xc7, 0x48, 0x7a,
+ 0x8f, 0x1e, 0xb7, 0x3e, 0xd2, 0x7b, 0x34, 0x78, 0x3a, 0x49, 0xd3, 0x03, 0x1c, 0x84, 0x84, 0x0e,
+ 0x38, 0x0a, 0x3f, 0xda, 0x34, 0x32, 0x35, 0xb8, 0xda, 0x80, 0x56, 0xaf, 0x5c, 0xf9, 0x2a, 0x60,
+ 0x94, 0x93, 0x27, 0xb0, 0xea, 0x79, 0x00, 0xb1, 0x7b, 0xae, 0x2c, 0x5c, 0xc0, 0x95, 0x01, 0x9b,
+ 0x32, 0x3d, 0x5c, 0xfd, 0x30, 0x4a, 0x46, 0xbc, 0xd9, 0x46, 0xed, 0xfc, 0x54, 0xe5, 0xaf, 0x1f,
+ 0xd2, 0x15, 0x01, 0xee, 0x60, 0x46, 0xfc, 0xaa, 0xb5, 0x90, 0x29, 0x08, 0xdc, 0x41, 0xbc, 0x47,
+ 0xa4, 0xe1, 0x0e, 0x0a, 0x37, 0xd9, 0xa6, 0xd2, 0x70, 0x7b, 0xa4, 0x09, 0xf7, 0xe5, 0x66, 0x84,
+ 0x07, 0x56, 0x54, 0x85, 0xc7, 0xa0, 0x6e, 0xf8, 0x2a, 0x1c, 0xef, 0xb6, 0x5c, 0x29, 0x63, 0x2e,
+ 0x77, 0xd0, 0xe7, 0x51, 0x74, 0x62, 0xa7, 0x0f, 0x2a, 0x6b, 0xec, 0x0d, 0x74, 0xd3, 0xaf, 0x27,
+ 0x2c, 0x58, 0x79, 0x25, 0x9e, 0x44, 0xbd, 0xfe, 0x7b, 0x8a, 0x53, 0xd5, 0xaa, 0x55, 0x74, 0x95,
+ 0x65, 0x82, 0xfd, 0x7d, 0xfc, 0xae, 0xc3, 0x72, 0xba, 0x34, 0xad, 0x11, 0x8f, 0xcf, 0x05, 0x1f,
+ 0xc2, 0xfe, 0x02, 0x64, 0x79, 0x27, 0xdb, 0x5b, 0xf0, 0xde, 0x96, 0xce, 0x9e, 0x65, 0xa2, 0x17,
+ 0xbb, 0x3c, 0x6a, 0x50, 0x33, 0xe7, 0xb3, 0xa0, 0x28, 0x57, 0x77, 0xef, 0x40, 0x62, 0x09, 0x3a,
+ 0x57, 0xbf, 0xf3, 0xc7, 0x10, 0xad, 0x77, 0x04, 0x57, 0xec, 0x0d, 0x81, 0xfd, 0x07, 0x9b, 0xf2,
+ 0x44, 0x47, 0x60, 0xb1, 0x96, 0x73, 0xdd, 0x83, 0x7b, 0x3c, 0x6f, 0x61, 0xbe, 0xd7, 0x8e, 0x37,
+ 0x2a, 0xe9, 0xd6, 0x43, 0x38, 0x5e, 0xfe, 0xc9, 0xd0, 0x14, 0x37, 0x67, 0x84, 0x84, 0x32, 0x04,
+ 0x70, 0xd7, 0x90, 0x1e, 0xf1, 0xba, 0xee, 0x18, 0x6e, 0xc7, 0xcd, 0x1a, 0xcc, 0x36, 0x97, 0x3e,
+ 0xa3, 0xac, 0xa0, 0xf8, 0xea, 0xa4, 0x6d, 0xe1, 0x24, 0x30, 0xb6, 0x59, 0x23, 0x10, 0xb6, 0xaf,
+ 0xd2, 0xa3, 0x77, 0x23, 0x4c, 0xb5, 0xcf, 0xa5, 0x77, 0x24, 0x15, 0x2b, 0x58, 0xde, 0x03, 0x1a,
+ 0xf5, 0x4c, 0x5c, 0x18, 0x96, 0xb1, 0xd2, 0xc6, 0x68, 0xf9, 0x63, 0xfc, 0x7c, 0x55, 0xe9, 0x42,
+ 0x24, 0xf7, 0xef, 0x35, 0x81, 0xef, 0x73, 0x41, 0x27, 0xe2, 0x97, 0x13, 0xb9, 0x83, 0x6e, 0x9b,
+ 0xb9, 0x54, 0xa7, 0x74, 0x7c, 0x44, 0xc1, 0xe3, 0x6a, 0x39, 0xe7, 0x2a, 0x56, 0x3f, 0x65, 0xa5,
+ 0xa7, 0xfb, 0x24, 0xdd, 0x2a, 0x8e, 0xf6, 0x97, 0xf0, 0x10, 0x0a, 0x00, 0xd8, 0x12, 0x00, 0xb0,
+ 0x31, 0x44, 0x76, 0x65, 0xe0, 0x56, 0x8a, 0xa0, 0x37, 0x2b, 0xdd, 0x97, 0xe9, 0x00, 0x03, 0x50,
+ 0x39, 0x15, 0xea, 0x1c, 0xe5, 0xf9, 0xd1, 0x50, 0xf5, 0x38, 0x5f, 0xf2, 0xdd, 0xad, 0xa5, 0x89,
+ 0xca, 0xc5, 0x80, 0x81, 0x6f, 0x92, 0xf8, 0x26, 0xa3, 0x9f, 0xec, 0x31, 0x90, 0x8c, 0xb8, 0xfd,
+ 0x6c, 0x6d, 0x78, 0x6d, 0x46, 0x3c, 0xd9, 0x38, 0x17, 0xc8, 0x30, 0x8f, 0x67, 0x40, 0x98, 0xcc,
+ 0xca, 0xa4, 0xab, 0x6a, 0x45, 0x50, 0xcb, 0x3c, 0x9f, 0xbc, 0x21, 0xc4, 0xa2, 0xfc, 0x32, 0xd0,
+ 0x34, 0x43, 0xdb, 0xc4, 0x2c, 0x80, 0xe8, 0x25, 0xd9, 0x2f, 0x28, 0x14, 0x05, 0x77, 0x68, 0x00,
+ 0x2f, 0x5d, 0x7d, 0x1d, 0x7a, 0x4d, 0x6f, 0xed, 0xc6, 0x2d, 0xa0, 0x5c, 0x8b, 0x72, 0x38, 0x34,
+ 0x70, 0x83, 0xc4, 0x47, 0xd2, 0x42, 0x8a, 0x9b, 0x45, 0x2c, 0x65, 0x78, 0x50, 0xa0, 0x62, 0x22,
+ 0xbe, 0x88, 0x35, 0x5d, 0xcf, 0x8f, 0x04, 0x86, 0x31, 0x27, 0x30, 0x8c, 0x76, 0x1c, 0xc6, 0x17,
+ 0x48, 0x1c, 0x8b, 0xb9, 0xd4, 0xa0, 0x1c, 0xfb, 0x30, 0xb8, 0x71, 0x3a, 0x07, 0xc8, 0x42, 0xe1,
+ 0xda, 0x7f, 0x8c, 0xd7, 0xb1, 0xc7, 0x77, 0xd1, 0xfa, 0x78, 0x6e, 0xf9, 0x13, 0xf5, 0x30, 0x74,
+ 0xd7, 0x8f, 0xd4, 0xbb, 0x6f, 0x5a, 0x4a, 0x3b, 0xc5, 0xac, 0xac, 0x0b, 0xac, 0xf6, 0xf2, 0x3e,
+ 0xff, 0xb6, 0x38, 0xe5, 0x2f, 0x03, 0x01, 0xec, 0xf5, 0x52, 0x46, 0xdc, 0xf8, 0x0c, 0x03, 0x57,
+ 0xd3, 0x4c, 0x8f, 0xf8, 0xf9, 0x88, 0x47, 0xbc, 0xce, 0x11, 0xd3, 0x69, 0x64, 0x3d, 0xdf, 0x2a,
+ 0xf3, 0xd7, 0xe8, 0x91, 0x70, 0xb1, 0x73, 0x62, 0x60, 0x32, 0x03, 0x54, 0x08, 0x7f, 0x81, 0x3b,
+ 0xe8, 0x81, 0x78, 0xc2, 0xe8, 0x6f, 0xe6, 0xaf, 0x61, 0x66, 0x71, 0x33, 0xff, 0x39, 0xb6, 0x3e,
+ 0x5d, 0x8c, 0x97, 0xd8, 0xf8, 0x56, 0xf8, 0xf9, 0x12, 0xbf, 0xb2, 0x20, 0xb4, 0x97, 0xce, 0x56,
+ 0x22, 0x83, 0x48, 0x73, 0xae, 0x77, 0xb1, 0x8f, 0x0c, 0x3d, 0x3b, 0xc8, 0x1d, 0x34, 0x7d, 0x9e,
+ 0x4d, 0xbf, 0xa5, 0xa3, 0x7e, 0x0d, 0x04, 0x54, 0xcc, 0xfa, 0x39, 0x7b, 0xa9, 0x78, 0x05, 0x98,
+ 0x25, 0xfa, 0xfd, 0x96, 0x8a, 0x79, 0x60, 0xd1, 0xaa, 0xbe, 0x60, 0x85, 0xf8, 0xa4, 0x66, 0xf5,
+ 0x8c, 0xfe, 0xa9, 0x8a, 0xd8, 0x1c, 0xfb, 0x71, 0xd4, 0x8d, 0x19, 0xea, 0x51, 0x70, 0xb5, 0x22,
+ 0xfd, 0xe6, 0x53, 0x52, 0x33, 0xdd, 0x51, 0x8c, 0x05, 0x07, 0xbe, 0x14, 0x77, 0x5b, 0xf9, 0x6b,
+ 0xc5, 0xcd, 0xf4, 0x42, 0xa3, 0x8a, 0x3a, 0x77, 0xf0, 0x84, 0x39, 0xbb, 0x74, 0x96, 0x52, 0xf5,
+ 0x9f, 0x01, 0x4c, 0x84, 0x25, 0x94, 0x59, 0x3e, 0x45, 0xee, 0x57, 0xe9, 0x3c, 0x80, 0x5b, 0x2d,
+ 0x3b, 0x6e, 0x7f, 0xb0, 0xe7, 0x8a, 0xaa, 0x5a, 0x27, 0xaf, 0xe2, 0xa5, 0x5f, 0x5c, 0x5b, 0x05,
+ 0x2f, 0xff, 0x08, 0x24, 0xec, 0xeb, 0x51, 0x03, 0xff, 0x8a, 0x96, 0xa3, 0x7e, 0xa4, 0x12, 0xdd,
+ 0x55, 0x2d, 0x74, 0xb4, 0x68, 0x52, 0xb1, 0xa4, 0x87, 0xb4, 0x1e, 0xd2, 0x89, 0xfb, 0xd9, 0xe2,
+ 0xa4, 0x5e, 0x61, 0x46, 0xa0, 0x58, 0x3f, 0x70, 0xae, 0x98, 0xe8, 0x8b, 0x25, 0xe6, 0x13, 0xb5,
+ 0x78, 0x52, 0x71, 0x52, 0x2b, 0xf7, 0xba, 0xfb, 0x13, 0x5a, 0x4a, 0x22, 0x03, 0xf1, 0x01, 0x9a,
+ 0xa1, 0x3f, 0xb2, 0xca, 0xfb, 0x80, 0x7a, 0x0d, 0x50, 0x49, 0x46, 0x59, 0x10, 0x5a, 0x55, 0xab,
+ 0xf4, 0x02, 0x1b, 0xb4, 0x4a, 0x6c, 0x3c, 0xb5, 0x4a, 0x77, 0x29, 0xeb, 0x3e, 0xa0, 0xc3, 0x50,
+ 0x04, 0x5a, 0x5f, 0x28, 0xb8, 0x51, 0xf8, 0x41, 0x88, 0x30, 0xbc, 0xff, 0xa3, 0x2f, 0x0b, 0x03,
+ 0x6f, 0xad, 0xf4, 0x8d, 0x75, 0x0e, 0xdf, 0x78, 0x82, 0x78, 0x02, 0x79, 0x6d, 0xc1, 0xd2, 0xaa,
+ 0x13, 0x21, 0xa4, 0xe5, 0xcb, 0x27, 0x02, 0xd9, 0xbf, 0x0f, 0x66, 0x2b, 0xf7, 0xa9, 0xd0, 0x26,
+ 0xdf, 0x78, 0x05, 0x92, 0xe1, 0xf1, 0xdf, 0xea, 0x42, 0xbe, 0x7c, 0x45, 0x99, 0x84, 0xd2, 0x43,
+ 0x8f, 0x12, 0xcc, 0xdd, 0x38, 0x6a, 0x39, 0x2e, 0x59, 0xe6, 0x4f, 0x23, 0x7a, 0x66, 0x45, 0x61,
+ 0x02, 0x17, 0x5d, 0x8e, 0x31, 0xc0, 0x15, 0x39, 0xef, 0x4f, 0xf8, 0x9d, 0x49, 0x05, 0x5d, 0x1f,
+ 0x25, 0x86, 0x7a, 0x40, 0x37, 0xcc, 0x29, 0x26, 0x0b, 0xc9, 0xeb, 0xc0, 0xcb, 0x74, 0x66, 0x40,
+ 0xfe, 0x95, 0xdf, 0x04, 0x3e, 0x2b, 0x75, 0x81, 0x15, 0x16, 0x12, 0x1f, 0x19, 0x96, 0x8f, 0xc5,
+ 0x94, 0x05, 0xc3, 0x1c, 0x08, 0x17, 0x45, 0xfc, 0xa0, 0xc8, 0x14, 0xd2, 0x94, 0x01, 0x0e, 0x0e,
+ 0xb9, 0x24, 0xec, 0xb7, 0x3f, 0x6f, 0xa2, 0xbc, 0x78, 0xf0, 0x0a, 0x7e, 0xbf, 0x31, 0x83, 0x2c,
+ 0x46, 0x77, 0x59, 0x3c, 0x9e, 0x3c, 0xea, 0x32, 0x0a, 0xf5, 0x64, 0xa3, 0xfd, 0x8b, 0x5c, 0x9b,
+ 0xad, 0x2c, 0x63, 0x8f, 0x52, 0xeb, 0x4f, 0x84, 0xfa, 0xf5, 0x55, 0x18, 0xcd, 0xd5, 0xda, 0x6d,
+ 0x2c, 0x10, 0xfb, 0x45, 0xc6, 0x50, 0xae, 0x61, 0x9a, 0x6b, 0x98, 0xd9, 0xf0, 0x03, 0xb8, 0xbd,
+ 0x44, 0x2f, 0x45, 0xbe, 0xc8, 0xdc, 0x0b, 0x49, 0xd1, 0xad, 0x11, 0x2e, 0x01, 0x30, 0x8e, 0x9d,
+ 0xfe, 0x31, 0x78, 0x6e, 0x79, 0x8d, 0xb6, 0x5c, 0xfc, 0xfe, 0x31, 0x69, 0x96, 0x9c, 0xf1, 0x7a,
+ 0x69, 0x4d, 0x7c, 0x74, 0xdf, 0x7b, 0xf9, 0x1b, 0x1b, 0x73, 0xa5, 0xf5, 0xf1, 0x5a, 0x08, 0x71,
+ 0xa1, 0x04, 0xf2, 0xf4, 0x7d, 0xbf, 0x23, 0xad, 0xf9, 0x3f, 0xa8, 0x99, 0x34, 0xb0, 0x5d, 0xd3,
+ 0xf7, 0x9e, 0x57, 0x27, 0xef, 0xe6, 0xfc, 0xb2, 0x73, 0xa2, 0xff, 0xbb, 0xbe, 0xf7, 0xbe, 0x85,
+ 0xb6, 0x50, 0x6d, 0x37, 0x34, 0x0b, 0x82, 0xfb, 0xb5, 0x73, 0x7c, 0x5d, 0xa6, 0xff, 0x47, 0x19,
+ 0x7e, 0xee, 0xa8, 0x1b, 0x77, 0x03, 0xa1, 0xc6, 0xe9, 0xd1, 0xff, 0xbe, 0x35, 0xe2, 0xf2, 0x9f,
+ 0x19, 0xc6, 0x11, 0x0b, 0x43, 0x78, 0xf9, 0xe5, 0x60, 0x9a, 0x55, 0x22, 0xc6, 0xa4, 0x43, 0x94,
+ 0xa1, 0x91, 0xd1, 0xe9, 0x50, 0xa5, 0x6b, 0x4c, 0x5a, 0xa3, 0x5c, 0x1e, 0x93, 0x0e, 0x53, 0x4e,
+ 0x8c, 0x49, 0x87, 0x2b, 0x87, 0xc6, 0xa4, 0xc7, 0x29, 0xbf, 0x55, 0xd3, 0x1b, 0x68, 0x52, 0xab,
+ 0xfc, 0x1b, 0x4d, 0xde, 0x2e, 0x8f, 0x50, 0xc8, 0xe8, 0xf2, 0x48, 0x65, 0x57, 0xa0, 0x5c, 0x4d,
+ 0x8f, 0x57, 0x4a, 0xc7, 0xa4, 0x75, 0xca, 0xa3, 0x63, 0xd2, 0x13, 0x94, 0x87, 0xc7, 0xa4, 0x27,
+ 0xd2, 0xe3, 0x28, 0xa3, 0xe0, 0x73, 0x4a, 0xc2, 0x18, 0x7c, 0xf4, 0x4a, 0xec, 0xe8, 0xfe, 0xa2,
+ 0x94, 0xc8, 0xb1, 0xf5, 0x27, 0x29, 0x43, 0xdf, 0x8d, 0xae, 0x3f, 0x59, 0xe9, 0x1a, 0x93, 0x8e,
+ 0x56, 0x2e, 0x8f, 0x49, 0xdf, 0xa5, 0x9c, 0x18, 0x93, 0x9e, 0xa2, 0x1c, 0x1a, 0x93, 0xbe, 0x5b,
+ 0xf9, 0xed, 0x98, 0x74, 0x8c, 0xf2, 0x8b, 0x31, 0xe9, 0x58, 0x85, 0x8c, 0x49, 0x4f, 0x55, 0x76,
+ 0x8e, 0x49, 0x4f, 0x53, 0x4a, 0xc6, 0xa4, 0xe3, 0x94, 0x9f, 0x8c, 0x49, 0x4f, 0x57, 0x56, 0x7f,
+ 0x37, 0x6a, 0x3c, 0x33, 0x94, 0xe5, 0xdf, 0x8d, 0x19, 0xcf, 0x4c, 0x25, 0xe1, 0x3b, 0xf5, 0xe8,
+ 0x0b, 0x83, 0x3e, 0x04, 0x7e, 0x69, 0x00, 0x6f, 0x02, 0x60, 0x20, 0x87, 0x32, 0xcb, 0xe0, 0xc1,
+ 0xbb, 0x44, 0xdc, 0xa3, 0x82, 0x27, 0x2d, 0x3d, 0x31, 0xd1, 0xc8, 0xa4, 0x38, 0x9d, 0x45, 0x5b,
+ 0xca, 0x9d, 0x45, 0x85, 0x86, 0x6d, 0x65, 0x9b, 0x85, 0x2d, 0x45, 0xf9, 0x8e, 0xa2, 0x82, 0xc2,
+ 0xb9, 0x09, 0x86, 0xb2, 0xad, 0x86, 0xf2, 0x1d, 0x45, 0xcc, 0x5a, 0xd3, 0x6a, 0xc6, 0x52, 0xb4,
+ 0x49, 0x70, 0x94, 0x38, 0x77, 0x32, 0xeb, 0xb6, 0x15, 0x39, 0x8a, 0x37, 0x97, 0x6d, 0x67, 0xb6,
+ 0x14, 0x6d, 0x15, 0x18, 0x53, 0xd1, 0x96, 0x32, 0xc7, 0x4e, 0xc3, 0x96, 0x82, 0x72, 0x43, 0xd1,
+ 0x0e, 0x7b, 0x81, 0x50, 0x01, 0x40, 0xe6, 0x33, 0xe6, 0x0d, 0xfc, 0x5a, 0xdb, 0xfd, 0xcc, 0x9c,
+ 0x0a, 0xc8, 0xdc, 0x54, 0x54, 0xee, 0x2c, 0x01, 0x40, 0x05, 0x4e, 0xc3, 0x9c, 0x1d, 0xf3, 0x0d,
+ 0xbc, 0xc3, 0x51, 0xe6, 0x30, 0x6c, 0x2a, 0x2b, 0x2c, 0x5a, 0x0e, 0x69, 0x00, 0xfb, 0x14, 0xc0,
+ 0x71, 0x1a, 0xb6, 0x96, 0x39, 0x0d, 0xe5, 0x8e, 0xa2, 0x0a, 0x78, 0x67, 0xa0, 0x4b, 0x03, 0x74,
+ 0x52, 0x81, 0xad, 0x9c, 0x65, 0x65, 0x86, 0xb2, 0xcd, 0x85, 0x4c, 0xd1, 0x0e, 0x27, 0x56, 0x2b,
+ 0x86, 0xb6, 0x4f, 0x6e, 0x2e, 0xdb, 0xf4, 0x34, 0x6d, 0x50, 0x5c, 0x26, 0x6c, 0x2d, 0x64, 0x56,
+ 0x6f, 0xdd, 0x56, 0xb0, 0xb9, 0xa4, 0xd0, 0x50, 0x56, 0x8e, 0x50, 0x99, 0xf5, 0xd0, 0x62, 0x4b,
+ 0xc1, 0xd6, 0x9d, 0x06, 0x7e, 0xd9, 0xc2, 0x44, 0x03, 0x34, 0x72, 0x94, 0x14, 0x55, 0xcc, 0x62,
+ 0xd2, 0xca, 0x84, 0xcd, 0x85, 0xb4, 0x55, 0xd1, 0xd6, 0x82, 0x27, 0x37, 0x17, 0x19, 0x52, 0xa0,
+ 0x74, 0x73, 0xc9, 0xd6, 0x22, 0x04, 0xbd, 0x70, 0xb9, 0xc1, 0x5c, 0xe0, 0x70, 0x1a, 0xca, 0x8a,
+ 0x0d, 0xe5, 0x05, 0x4e, 0xbb, 0xa1, 0xa4, 0x82, 0xd6, 0x2c, 0x2c, 0x71, 0x14, 0x6d, 0x72, 0xe2,
+ 0xf8, 0xb6, 0x42, 0xbf, 0x15, 0x3b, 0xb7, 0x40, 0xfd, 0xa7, 0x23, 0x19, 0xcb, 0x6a, 0x53, 0x3a,
+ 0xc3, 0xa4, 0x02, 0x8d, 0x9e, 0x2e, 0x2f, 0x2b, 0x01, 0x84, 0x33, 0x8b, 0xb6, 0x16, 0x39, 0x0a,
+ 0x36, 0xc3, 0x00, 0xca, 0x9c, 0xd0, 0x00, 0xf1, 0x2e, 0x2e, 0x10, 0x36, 0x3b, 0x99, 0xf4, 0x92,
+ 0x8a, 0xa7, 0x0d, 0x45, 0x74, 0xc4, 0x38, 0xf6, 0x74, 0x47, 0xc9, 0xb6, 0x22, 0x1c, 0xb5, 0xda,
+ 0x65, 0x6e, 0x4a, 0xce, 0xda, 0xd5, 0x6b, 0x33, 0x97, 0x1b, 0x32, 0x4a, 0x00, 0x9f, 0x8a, 0x9d,
+ 0x40, 0xbb, 0x2d, 0x06, 0x7b, 0x01, 0x10, 0x6d, 0xeb, 0x26, 0xc7, 0x4e, 0x95, 0x6a, 0xc5, 0x45,
+ 0x05, 0x4e, 0xc1, 0x51, 0x04, 0x9c, 0x98, 0x67, 0xa8, 0x70, 0x0a, 0xc5, 0xc5, 0x30, 0x36, 0x20,
+ 0x77, 0x49, 0xc5, 0x93, 0x45, 0xf6, 0x82, 0x6d, 0x45, 0x91, 0x4c, 0x3e, 0x9f, 0x96, 0x95, 0x9f,
+ 0x61, 0xc9, 0x67, 0xf8, 0x8c, 0xd5, 0x06, 0x73, 0x4a, 0xce, 0x7a, 0x24, 0xbe, 0xa1, 0x64, 0x6b,
+ 0x85, 0xb3, 0x60, 0xf3, 0xe6, 0x02, 0x0a, 0x63, 0x93, 0xbd, 0x08, 0x08, 0x56, 0x5c, 0x00, 0xbd,
+ 0x14, 0x22, 0x71, 0x97, 0x1b, 0x2c, 0xc2, 0xa6, 0x4d, 0x45, 0x15, 0x15, 0xc5, 0xc2, 0xe6, 0xcd,
+ 0x3b, 0xa1, 0x6e, 0x89, 0xb3, 0x04, 0x28, 0xb8, 0xab, 0xa8, 0x30, 0x92, 0x71, 0x16, 0x3b, 0xcb,
+ 0xa1, 0xbc, 0xc8, 0x01, 0x0c, 0x40, 0x32, 0x00, 0x43, 0x0a, 0x4b, 0xb6, 0x3e, 0x65, 0x70, 0xda,
+ 0x8b, 0x0c, 0xc5, 0x88, 0x66, 0xc9, 0x56, 0x43, 0xc5, 0x16, 0x00, 0x0d, 0xc5, 0xe5, 0x05, 0x9b,
+ 0x9e, 0x2e, 0x72, 0x56, 0x18, 0xe6, 0x96, 0x38, 0xb1, 0x1e, 0xf0, 0xb7, 0xd0, 0xf0, 0xe4, 0x4e,
+ 0x67, 0x51, 0x45, 0xc2, 0x3c, 0x43, 0x61, 0xd9, 0xf6, 0xad, 0x9b, 0xcb, 0x0a, 0x0a, 0x01, 0xd5,
+ 0xa7, 0xec, 0x4e, 0x83, 0xb3, 0xe0, 0xe9, 0x22, 0xc3, 0xe6, 0xb2, 0xad, 0x4f, 0x15, 0x39, 0xe6,
+ 0x47, 0x32, 0x19, 0x29, 0xeb, 0x1f, 0x58, 0xc8, 0x64, 0x50, 0x84, 0x80, 0xc3, 0x06, 0x5a, 0x11,
+ 0x10, 0x7e, 0xaa, 0xc8, 0xf0, 0xc0, 0x7c, 0x66, 0xc1, 0x93, 0x65, 0x65, 0xce, 0x05, 0x9b, 0x4b,
+ 0xb6, 0x00, 0x73, 0x7e, 0xfc, 0x64, 0x49, 0x59, 0xc5, 0x7c, 0x20, 0x0d, 0xf3, 0xbd, 0xb4, 0xa1,
+ 0x02, 0xf0, 0x05, 0x64, 0x36, 0x95, 0x39, 0x90, 0x47, 0x00, 0x74, 0xda, 0x63, 0x0f, 0x18, 0xb7,
+ 0x98, 0x53, 0xd6, 0xae, 0x4e, 0x83, 0xb7, 0xa5, 0x2b, 0x8c, 0x5b, 0xa6, 0x3d, 0x96, 0xb8, 0x65,
+ 0xb9, 0x81, 0x49, 0x01, 0xe6, 0x6d, 0xfd, 0xb1, 0x50, 0x41, 0x99, 0xbe, 0x65, 0x94, 0xb8, 0x82,
+ 0x64, 0xec, 0xc4, 0x21, 0x02, 0xad, 0x4a, 0x0a, 0x8b, 0x0c, 0x05, 0x86, 0x40, 0x9d, 0x0a, 0x95,
+ 0x85, 0xf3, 0x99, 0xdb, 0xfc, 0x59, 0xbf, 0x6e, 0x9d, 0xc1, 0x94, 0xb2, 0xf6, 0x27, 0x06, 0xdb,
+ 0xba, 0x35, 0x56, 0x13, 0x6f, 0x19, 0x2d, 0x4d, 0x85, 0x45, 0xce, 0x22, 0x07, 0xa2, 0x66, 0x40,
+ 0xb4, 0x0d, 0x85, 0xc8, 0x62, 0x86, 0xa2, 0x01, 0x7d, 0x27, 0x06, 0x59, 0x2d, 0x6c, 0x05, 0x2c,
+ 0xcb, 0x80, 0xa6, 0xb4, 0x07, 0x2a, 0x11, 0x15, 0xaa, 0xf8, 0x46, 0x32, 0x66, 0x10, 0xfb, 0x0a,
+ 0xe8, 0xfe, 0xe9, 0xa2, 0x9d, 0x48, 0x0c, 0x47, 0x11, 0x30, 0x1c, 0x05, 0xdf, 0x30, 0xa7, 0x62,
+ 0x7e, 0x80, 0x1f, 0x69, 0x9b, 0xcb, 0x2a, 0x8a, 0x28, 0x07, 0x41, 0x16, 0x40, 0xaa, 0xb6, 0x95,
+ 0xa0, 0x72, 0x30, 0xaa, 0x26, 0xa8, 0x64, 0x05, 0x0e, 0x15, 0x6c, 0x35, 0xa8, 0x6a, 0x02, 0xfd,
+ 0x26, 0x32, 0x16, 0x27, 0xb0, 0xc7, 0xe9, 0x28, 0xd8, 0x54, 0xb4, 0x3c, 0x92, 0x31, 0x18, 0x1e,
+ 0x9b, 0x53, 0x9e, 0x17, 0xc9, 0x64, 0x01, 0x37, 0x82, 0x44, 0x00, 0x26, 0x96, 0x6d, 0x2a, 0x00,
+ 0xf1, 0x5e, 0x6e, 0x58, 0x27, 0x50, 0xd9, 0x57, 0x0b, 0x54, 0xed, 0x05, 0x7e, 0x38, 0x84, 0x4d,
+ 0x54, 0xf6, 0x2a, 0x4a, 0x9e, 0xda, 0xaa, 0x4a, 0x21, 0x52, 0x5b, 0x40, 0x3b, 0xc1, 0xa4, 0x22,
+ 0xee, 0x06, 0x47, 0x01, 0x74, 0x4d, 0x75, 0xbc, 0xa8, 0x10, 0x32, 0xcd, 0xc8, 0x41, 0x55, 0xf2,
+ 0x4b, 0x02, 0x4a, 0x19, 0xd0, 0xdb, 0x2d, 0x05, 0x4f, 0x95, 0x6c, 0x0a, 0xd0, 0x82, 0xdf, 0xea,
+ 0x04, 0x3b, 0x12, 0xd4, 0x31, 0x47, 0xd1, 0x53, 0xc2, 0xe6, 0x02, 0x87, 0x2a, 0x5c, 0x63, 0xd4,
+ 0xec, 0xa1, 0x87, 0x1e, 0x62, 0x8a, 0x0a, 0x4b, 0x00, 0x41, 0x14, 0x18, 0x66, 0xfe, 0x02, 0x26,
+ 0x92, 0x59, 0xbb, 0x3e, 0xc3, 0x12, 0x00, 0x83, 0x0d, 0x46, 0xe9, 0x8c, 0xb0, 0xb5, 0x42, 0x28,
+ 0x2f, 0x2f, 0x73, 0xa0, 0x11, 0x0b, 0x28, 0x4d, 0x05, 0xa8, 0x5a, 0x64, 0xd0, 0x72, 0xdc, 0xb1,
+ 0x17, 0xa6, 0x31, 0xc3, 0x57, 0x95, 0x95, 0x12, 0x76, 0x3e, 0x33, 0x0b, 0x86, 0xce, 0xa4, 0x17,
+ 0x6d, 0x2b, 0xd9, 0x54, 0x44, 0x1b, 0x14, 0x6c, 0x83, 0x12, 0x64, 0xd9, 0x6d, 0x23, 0xb3, 0xde,
+ 0x62, 0x61, 0x22, 0x67, 0xcd, 0x32, 0x58, 0x54, 0x69, 0x0d, 0xa2, 0x1d, 0x80, 0x3d, 0x0b, 0x8b,
+ 0xb2, 0x40, 0x2f, 0x0d, 0x3b, 0xcb, 0x04, 0xa0, 0x56, 0x79, 0x09, 0x60, 0xf3, 0x7d, 0xc9, 0x05,
+ 0xce, 0xa2, 0x36, 0x39, 0x40, 0x5c, 0xe6, 0x19, 0xa8, 0xb0, 0xc3, 0x8f, 0x5a, 0x69, 0x9e, 0x01,
+ 0x08, 0x30, 0x5a, 0xfe, 0x11, 0x5e, 0xd0, 0x0a, 0x81, 0x19, 0x43, 0x26, 0x95, 0x81, 0xa8, 0xc1,
+ 0x0f, 0x82, 0x28, 0x07, 0x9b, 0x55, 0x82, 0x23, 0xa8, 0x40, 0x4b, 0x8d, 0x39, 0xaa, 0x0c, 0xd2,
+ 0x01, 0x3c, 0x14, 0x19, 0xc9, 0xfc, 0x40, 0x8b, 0x54, 0x59, 0x4b, 0x5b, 0x9f, 0xb3, 0xe6, 0xfe,
+ 0x94, 0x35, 0xeb, 0xef, 0x4f, 0xe7, 0xd7, 0xa8, 0x22, 0x87, 0xed, 0xe6, 0xab, 0x22, 0xf3, 0xe3,
+ 0x8a, 0x80, 0x49, 0x56, 0x19, 0x99, 0xb2, 0x19, 0xb8, 0x4f, 0xd3, 0xd4, 0x8c, 0x30, 0xa6, 0x82,
+ 0x4d, 0x76, 0x94, 0x76, 0x35, 0x15, 0xe8, 0xe0, 0x07, 0xfd, 0xcc, 0x07, 0x6e, 0xfd, 0x80, 0xce,
+ 0x15, 0x30, 0x94, 0x0a, 0x4c, 0x6e, 0x07, 0x59, 0x51, 0x05, 0xfb, 0x8e, 0x0d, 0x28, 0x2b, 0x2f,
+ 0xda, 0xaa, 0x52, 0x73, 0xce, 0x0e, 0xa4, 0xc2, 0x93, 0x60, 0x12, 0x54, 0x03, 0x43, 0x55, 0x7d,
+ 0x8c, 0x55, 0xf8, 0x7f, 0x1a, 0x87, 0x27, 0x85, 0x12, 0x50, 0xcf, 0xd5, 0xe9, 0x68, 0x28, 0xb7,
+ 0x14, 0x38, 0x37, 0xd9, 0xe7, 0x47, 0xde, 0x36, 0xf3, 0x60, 0xde, 0x0b, 0xcb, 0x8a, 0x54, 0xe1,
+ 0x03, 0x9b, 0x03, 0x56, 0x1f, 0x4c, 0xda, 0x82, 0x40, 0xb1, 0x45, 0x15, 0xbe, 0x0a, 0xc3, 0xf6,
+ 0x12, 0xac, 0x57, 0x54, 0xe1, 0x2c, 0xd9, 0xaa, 0xca, 0x08, 0xce, 0x0b, 0x15, 0x63, 0x74, 0x6d,
+ 0x49, 0x22, 0x10, 0xa1, 0xc0, 0x31, 0x46, 0xf4, 0x22, 0x19, 0x1e, 0xd4, 0x02, 0xd9, 0x83, 0x8a,
+ 0x37, 0xdf, 0x00, 0x86, 0x62, 0xeb, 0x36, 0x20, 0x1e, 0x40, 0x80, 0xf9, 0x61, 0xcb, 0x3f, 0x95,
+ 0x3c, 0x20, 0x46, 0x7a, 0x99, 0x80, 0x76, 0x41, 0xa5, 0xf8, 0x8e, 0x65, 0x4b, 0x19, 0x5b, 0x89,
+ 0xc3, 0x29, 0x80, 0xc0, 0x55, 0xd0, 0x6a, 0x4c, 0x49, 0x45, 0x59, 0xd2, 0x92, 0x25, 0x89, 0xea,
+ 0x4c, 0xb1, 0xb5, 0x60, 0x4b, 0x91, 0x6a, 0xfe, 0x6e, 0x2b, 0x5e, 0xa2, 0x71, 0xe1, 0x03, 0x8b,
+ 0x16, 0x2f, 0x59, 0xba, 0x2c, 0xa9, 0xe0, 0xc9, 0x4d, 0x85, 0x45, 0xc5, 0x01, 0x7d, 0x37, 0xac,
+ 0x9c, 0x53, 0x71, 0xff, 0x9c, 0xf2, 0x07, 0x23, 0x99, 0xd5, 0x96, 0x75, 0x2a, 0x80, 0xad, 0x65,
+ 0x30, 0x4b, 0x95, 0x6c, 0x29, 0x00, 0x34, 0xd4, 0xa9, 0x1e, 0x07, 0xb9, 0xc9, 0x51, 0x52, 0x8e,
+ 0x6a, 0x36, 0x0b, 0x67, 0xde, 0x7f, 0xa6, 0xed, 0x2a, 0xb3, 0x72, 0xc0, 0x29, 0xb8, 0x63, 0x84,
+ 0x8a, 0x9e, 0x14, 0x9e, 0x62, 0x36, 0x64, 0xf0, 0x39, 0xcc, 0xdc, 0xad, 0x30, 0x8f, 0x24, 0x04,
+ 0x2a, 0x05, 0x15, 0x65, 0xb5, 0x79, 0xdb, 0x22, 0x43, 0x41, 0x61, 0x21, 0x0a, 0xdc, 0x72, 0xc3,
+ 0xec, 0x39, 0x15, 0xb3, 0xd1, 0x19, 0xd1, 0x80, 0x23, 0xa2, 0x67, 0x43, 0x34, 0x5a, 0xbd, 0x21,
+ 0xb9, 0x8a, 0x3a, 0x27, 0xe0, 0x94, 0xcc, 0x87, 0xff, 0xf0, 0x59, 0xc0, 0x50, 0xb9, 0x61, 0xf6,
+ 0x26, 0xb2, 0x4c, 0x87, 0x51, 0x7d, 0xfe, 0x11, 0xf8, 0x9d, 0xb7, 0xf0, 0x4e, 0x1e, 0x96, 0xe3,
+ 0x57, 0x94, 0xfe, 0x06, 0x31, 0xd5, 0xe5, 0x35, 0x2c, 0xf3, 0x77, 0x70, 0xd6, 0xbf, 0x84, 0x5f,
+ 0xfc, 0xce, 0xd2, 0x76, 0x78, 0x6f, 0xce, 0x66, 0x99, 0xe5, 0x50, 0xb6, 0x0e, 0x7e, 0x3b, 0xe0,
+ 0x59, 0x04, 0x79, 0x9e, 0x1c, 0x96, 0x19, 0x82, 0x5f, 0x36, 0x5b, 0xcd, 0xcf, 0x84, 0xf2, 0x3f,
+ 0x43, 0xde, 0x5f, 0xf1, 0x4e, 0x04, 0xe4, 0x3f, 0x12, 0xa8, 0xff, 0xff, 0x7a, 0xfe, 0x02, 0xfd,
+ 0xbc, 0xfc, 0x30, 0xcb, 0xbc, 0x0d, 0xcf, 0x7e, 0x78, 0xdc, 0xf0, 0xb4, 0xc2, 0xd3, 0x09, 0x8f,
+ 0x0f, 0x0f, 0x19, 0x3d, 0xc2, 0x32, 0x7a, 0x78, 0x0c, 0xf0, 0x24, 0xc2, 0x93, 0x0c, 0x8f, 0x19,
+ 0x9e, 0x27, 0xe0, 0x29, 0x87, 0xa7, 0x0a, 0x9e, 0x97, 0xe1, 0x79, 0x1b, 0x9e, 0xfd, 0xf0, 0xb8,
+ 0xe1, 0x69, 0x85, 0xa7, 0x13, 0x1e, 0x1f, 0x3c, 0x0c, 0xc0, 0xd7, 0xc3, 0x63, 0x80, 0x27, 0x11,
+ 0x9e, 0x64, 0x78, 0xcc, 0xf0, 0x3c, 0x01, 0x4f, 0x39, 0x3c, 0x55, 0xf0, 0xa0, 0x3f, 0x17, 0x8d,
+ 0x4b, 0xae, 0x78, 0x02, 0x72, 0xad, 0x95, 0x49, 0xd9, 0x48, 0xde, 0xfc, 0xe0, 0xb8, 0x2d, 0xf5,
+ 0xfe, 0xa4, 0x92, 0x25, 0xab, 0x8a, 0xef, 0x7b, 0xf0, 0xd6, 0xb6, 0x75, 0x8f, 0x25, 0x43, 0x04,
+ 0x52, 0x51, 0x5e, 0xb2, 0x55, 0x28, 0x67, 0xa6, 0xde, 0x64, 0x98, 0xfc, 0xfc, 0x2d, 0x65, 0x85,
+ 0x85, 0x25, 0x0f, 0x30, 0x84, 0x26, 0x84, 0xc2, 0x92, 0x6d, 0x98, 0x7a, 0xef, 0x1f, 0xc1, 0x14,
+ 0x2d, 0x5e, 0xc4, 0x68, 0x06, 0x69, 0x46, 0xa0, 0xf2, 0xf8, 0x21, 0x86, 0x01, 0x95, 0x7d, 0x9a,
+ 0xba, 0x83, 0xf9, 0x15, 0xd4, 0x0a, 0x55, 0x30, 0xbe, 0x60, 0xee, 0x26, 0xc8, 0x76, 0x16, 0xe5,
+ 0x97, 0x6c, 0x2d, 0x2c, 0xda, 0xc1, 0x94, 0x80, 0xbb, 0x49, 0xa7, 0x54, 0xc6, 0xca, 0xb2, 0x0c,
+ 0x9d, 0xcc, 0x1f, 0xc8, 0x47, 0xd7, 0x82, 0x79, 0x38, 0x84, 0xa5, 0xda, 0x95, 0x8f, 0x2a, 0xce,
+ 0xac, 0xd7, 0x04, 0x52, 0x4f, 0x15, 0x39, 0xa1, 0x1c, 0x3d, 0xb6, 0x90, 0xf0, 0x40, 0x16, 0xd8,
+ 0xb3, 0x8a, 0xa2, 0x7c, 0xb4, 0x77, 0x30, 0x87, 0xb9, 0xb4, 0x00, 0x46, 0x55, 0xc7, 0x7c, 0x67,
+ 0x59, 0xa0, 0x6a, 0x7a, 0x04, 0xcb, 0x04, 0xba, 0xa5, 0x5a, 0x94, 0x0f, 0x33, 0x39, 0x83, 0x9f,
+ 0xde, 0xa4, 0xed, 0x11, 0x4d, 0xe6, 0xe9, 0x60, 0x6a, 0x13, 0x4e, 0x9a, 0xcc, 0xbb, 0xe3, 0x47,
+ 0xf5, 0xf7, 0x94, 0x50, 0x52, 0xc8, 0x4c, 0xd2, 0x8d, 0xca, 0x01, 0xeb, 0x5e, 0xb4, 0x99, 0x79,
+ 0x1e, 0xb2, 0x68, 0x07, 0x2a, 0x88, 0x9b, 0x13, 0x21, 0xd6, 0x2b, 0x70, 0x3e, 0x30, 0xba, 0xca,
+ 0x5d, 0x5c, 0x30, 0x0f, 0x07, 0x95, 0xbf, 0xa9, 0x6c, 0xab, 0x13, 0x80, 0x30, 0x71, 0x51, 0xc1,
+ 0x6c, 0x3a, 0xba, 0x8b, 0x93, 0x46, 0x27, 0xa1, 0x2a, 0xb3, 0x7b, 0x0a, 0x60, 0x0c, 0x36, 0xb3,
+ 0x08, 0xf0, 0x41, 0xef, 0xd8, 0x91, 0x0f, 0x46, 0x03, 0xf2, 0xf1, 0x2b, 0x2c, 0x6a, 0x4d, 0xda,
+ 0xe5, 0xba, 0xdb, 0x49, 0x15, 0xed, 0x9d, 0x90, 0xa6, 0x54, 0x1f, 0xdb, 0x6a, 0x67, 0xcc, 0xf7,
+ 0xb2, 0x8b, 0x1d, 0x65, 0x5b, 0x28, 0x11, 0xee, 0x8b, 0x05, 0x00, 0x15, 0xa3, 0x10, 0x4e, 0xb9,
+ 0x93, 0x41, 0x87, 0xfd, 0x30, 0xa6, 0x29, 0x92, 0xed, 0xf8, 0xa6, 0x76, 0x33, 0x7d, 0x2a, 0xbc,
+ 0x52, 0x04, 0xd2, 0x82, 0x6f, 0x40, 0x57, 0xe6, 0xd1, 0x51, 0x09, 0x94, 0x9c, 0x22, 0xe6, 0xfa,
+ 0x34, 0x36, 0x68, 0x85, 0xd4, 0x91, 0xe2, 0x05, 0xcf, 0x60, 0x06, 0x05, 0x50, 0x3e, 0x2a, 0x43,
+ 0x05, 0xee, 0xa2, 0x39, 0x60, 0x6e, 0x80, 0x9b, 0x3f, 0x87, 0x77, 0x67, 0x19, 0x98, 0xc9, 0x22,
+ 0x07, 0xf3, 0x3b, 0x78, 0x2f, 0x78, 0xb2, 0x82, 0x39, 0x34, 0x13, 0x05, 0xc5, 0xb1, 0xa9, 0x7c,
+ 0x27, 0xd3, 0x11, 0x78, 0xdd, 0x52, 0xce, 0xe0, 0x87, 0x46, 0xf0, 0xb5, 0x00, 0xe4, 0x0d, 0x92,
+ 0x2f, 0xa9, 0xc9, 0xad, 0xf8, 0x7e, 0x26, 0xf8, 0x1e, 0x28, 0x5b, 0x3a, 0x8b, 0xa6, 0xc1, 0x24,
+ 0x32, 0x6b, 0x66, 0x21, 0x07, 0x61, 0xac, 0x60, 0xc8, 0xb6, 0x32, 0x47, 0x20, 0x05, 0x86, 0x50,
+ 0x95, 0x1b, 0x27, 0x73, 0x09, 0x92, 0x85, 0x25, 0x4f, 0x01, 0xdb, 0x02, 0x19, 0xdc, 0x6c, 0xda,
+ 0x10, 0x10, 0x2a, 0x61, 0x5e, 0x86, 0x77, 0x24, 0x12, 0x60, 0x04, 0x06, 0x11, 0x04, 0x0b, 0x2d,
+ 0x3d, 0x73, 0xe3, 0x1e, 0xd0, 0xb7, 0x82, 0xad, 0xe0, 0xb4, 0xfc, 0x21, 0x9e, 0x65, 0x46, 0x45,
+ 0x45, 0xcc, 0xeb, 0xf7, 0x42, 0xfd, 0x72, 0xe7, 0x1d, 0xc2, 0xce, 0xbd, 0x0f, 0x87, 0x99, 0x4f,
+ 0xcd, 0x5e, 0xfe, 0x96, 0x27, 0x1d, 0xcc, 0x5f, 0xe6, 0xb2, 0x0c, 0xfc, 0xaa, 0x12, 0x5e, 0xc8,
+ 0xc4, 0x24, 0x20, 0x28, 0x07, 0x6d, 0xc1, 0xbc, 0x3b, 0xff, 0x36, 0x34, 0x2c, 0x7e, 0x72, 0xa7,
+ 0x0a, 0x23, 0x7a, 0xc1, 0xf7, 0xb3, 0x8b, 0x2b, 0x54, 0x36, 0x16, 0xfe, 0xa0, 0x64, 0x53, 0x59,
+ 0x99, 0xa3, 0x90, 0x79, 0xef, 0x07, 0xf9, 0x38, 0xfb, 0xe5, 0xab, 0xfe, 0xe7, 0x59, 0x28, 0x54,
+ 0xe9, 0xae, 0x60, 0x35, 0xf5, 0x75, 0xca, 0x22, 0xcc, 0x04, 0xa1, 0x64, 0xfe, 0x16, 0x78, 0x83,
+ 0xd1, 0xbf, 0xb1, 0x58, 0x7d, 0xdd, 0xc1, 0xbc, 0xb6, 0x24, 0xd0, 0x26, 0xbf, 0xe2, 0xb6, 0xe7,
+ 0xc8, 0x2c, 0x59, 0x0a, 0xd2, 0x0b, 0x53, 0x58, 0x3e, 0x4c, 0x5d, 0xaa, 0xc6, 0x31, 0x73, 0x96,
+ 0xc1, 0xe8, 0x8a, 0xb6, 0x80, 0xcc, 0x05, 0x54, 0x90, 0x3a, 0x81, 0x4c, 0x01, 0x64, 0x57, 0x14,
+ 0x60, 0x28, 0x01, 0x2a, 0x1c, 0x88, 0xba, 0x98, 0x84, 0x95, 0x2a, 0x6d, 0xd5, 0xfa, 0xcc, 0xa3,
+ 0x2b, 0x91, 0x49, 0x25, 0xb7, 0xd3, 0xce, 0x07, 0xd5, 0x62, 0x47, 0xc1, 0xf6, 0x60, 0x16, 0x81,
+ 0xac, 0xf2, 0x2d, 0x5b, 0x40, 0xae, 0x8b, 0x8a, 0x98, 0x73, 0x0f, 0x52, 0x4d, 0x1d, 0xd5, 0xb9,
+ 0xf7, 0xfb, 0x39, 0xf9, 0xce, 0x9d, 0xe5, 0x68, 0x0b, 0x60, 0xd2, 0x82, 0x79, 0x2a, 0xf4, 0xa1,
+ 0xff, 0xad, 0x58, 0x95, 0xe4, 0x05, 0xc9, 0x80, 0x3f, 0x62, 0xaf, 0x1a, 0xa0, 0xe2, 0x32, 0xa6,
+ 0x35, 0xf9, 0x9f, 0x8d, 0x08, 0x95, 0xf7, 0x66, 0x8a, 0x8a, 0xcd, 0xd6, 0xa2, 0xed, 0xf9, 0xaa,
+ 0x71, 0xbb, 0x9e, 0xc6, 0x62, 0x08, 0x05, 0xc4, 0xde, 0x5a, 0x98, 0xaf, 0xd2, 0x9f, 0xb9, 0x19,
+ 0xc8, 0xa3, 0xd6, 0xee, 0x58, 0x3a, 0x4b, 0x67, 0x42, 0x55, 0x4b, 0xe6, 0x67, 0x81, 0xa8, 0x2f,
+ 0x04, 0x85, 0xa0, 0xde, 0xd2, 0xae, 0x40, 0x4a, 0x8d, 0x40, 0x99, 0xfb, 0x56, 0x07, 0xc8, 0x51,
+ 0x04, 0x91, 0x2a, 0x73, 0x70, 0x35, 0xe2, 0x8e, 0xd1, 0x32, 0x73, 0x31, 0x58, 0x50, 0x52, 0xe8,
+ 0x64, 0x70, 0x51, 0x5a, 0xfd, 0x7f, 0x09, 0xb1, 0xc1, 0xff, 0xa9, 0x90, 0xfe, 0x7b, 0xff, 0x8f,
+ 0x21, 0x2c, 0xff, 0x65, 0xe0, 0xf7, 0xd5, 0x60, 0xfa, 0x6c, 0x20, 0x7d, 0x56, 0xad, 0xf4, 0x4b,
+ 0x83, 0xfa, 0xfb, 0xea, 0x9d, 0xff, 0x6b, 0xd5, 0xff, 0x05, 0xa9, 0x0f, 0xee, 0xbf, 0xb0, 0x6c,
+ 0x00, 0x00,
+};
diff --git a/limine-bios-pxe.bin b/limine-bios-pxe.bin
new file mode 100644
index 00000000..a489c627
Binary files /dev/null and b/limine-bios-pxe.bin differ
diff --git a/limine-bios.sys b/limine-bios.sys
new file mode 100644
index 00000000..ef8b090b
Binary files /dev/null and b/limine-bios.sys differ
diff --git a/limine-uefi-cd.bin b/limine-uefi-cd.bin
new file mode 100644
index 00000000..b88a9cd9
Binary files /dev/null and b/limine-uefi-cd.bin differ
diff --git a/limine.c b/limine.c
new file mode 100644
index 00000000..cbcee9e0
--- /dev/null
+++ b/limine.c
@@ -0,0 +1,1290 @@
+#undef IS_WINDOWS
+#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
+#define IS_WINDOWS 1
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <stddef.h>
+#include <stdbool.h>
+#include <stdarg.h>
+#include <string.h>
+#include <errno.h>
+#include <inttypes.h>
+#include <limits.h>
+
+#ifndef LIMINE_NO_BIOS
+#include "limine-bios-hdd.h"
+#endif
+
+static char *program_name = NULL;
+
+static void perror_wrap(const char *fmt, ...) {
+ int old_errno = errno;
+
+ fprintf(stderr, "%s: ", program_name);
+
+ va_list args;
+ va_start(args, fmt);
+
+ vfprintf(stderr, fmt, args);
+
+ va_end(args);
+
+ fprintf(stderr, ": %s\n", strerror(old_errno));
+}
+
+static void remove_arg(int *argc, char *argv[], int index) {
+ for (int i = index; i < *argc - 1; i++) {
+ argv[i] = argv[i + 1];
+ }
+
+ (*argc)--;
+
+ argv[*argc] = NULL;
+}
+
+#ifndef LIMINE_NO_BIOS
+
+static bool quiet = false;
+
+static int set_pos(FILE *stream, uint64_t pos) {
+ if (sizeof(long) >= 8) {
+ return fseek(stream, (long)pos, SEEK_SET);
+ }
+
+ long jump_size = (LONG_MAX / 2) + 1;
+ long last_jump = pos % jump_size;
+ uint64_t jumps = pos / jump_size;
+
+ rewind(stream);
+
+ for (uint64_t i = 0; i < jumps; i++) {
+ if (fseek(stream, jump_size, SEEK_CUR) != 0) {
+ return -1;
+ }
+ }
+ if (fseek(stream, last_jump, SEEK_CUR) != 0) {
+ return -1;
+ }
+
+ return 0;
+}
+
+#define DIV_ROUNDUP(a, b) (((a) + ((b) - 1)) / (b))
+
+struct gpt_table_header {
+ // the head
+ char signature[8];
+ uint32_t revision;
+ uint32_t header_size;
+ uint32_t crc32;
+ uint32_t _reserved0;
+
+ // the partitioning info
+ uint64_t my_lba;
+ uint64_t alternate_lba;
+ uint64_t first_usable_lba;
+ uint64_t last_usable_lba;
+
+ // the guid
+ uint64_t disk_guid[2];
+
+ // entries related
+ uint64_t partition_entry_lba;
+ uint32_t number_of_partition_entries;
+ uint32_t size_of_partition_entry;
+ uint32_t partition_entry_array_crc32;
+};
+
+struct gpt_entry {
+ uint64_t partition_type_guid[2];
+
+ uint64_t unique_partition_guid[2];
+
+ uint64_t starting_lba;
+ uint64_t ending_lba;
+
+ uint64_t attributes;
+
+ uint16_t partition_name[36];
+};
+
+// This table from https://web.mit.edu/freebsd/head/sys/libkern/crc32.c
+static const uint32_t crc32_table[] = {
+ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
+ 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
+ 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
+ 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
+ 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
+ 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
+ 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
+ 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
+ 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
+ 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
+ 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
+ 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
+ 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
+ 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
+ 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
+ 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
+ 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
+ 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
+ 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
+ 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
+ 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
+ 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
+ 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
+ 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
+ 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
+ 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
+ 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
+ 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
+ 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
+ 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
+ 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
+ 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
+ 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
+ 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
+ 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
+};
+
+static uint32_t crc32(void *_stream, size_t len) {
+ uint8_t *stream = _stream;
+ uint32_t ret = 0xffffffff;
+
+ for (size_t i = 0; i < len; i++) {
+ ret = (ret >> 8) ^ crc32_table[(ret ^ stream[i]) & 0xff];
+ }
+
+ ret ^= 0xffffffff;
+ return ret;
+}
+
+static uint16_t endswap16(uint16_t value) {
+ uint16_t ret = 0;
+ ret |= (value >> 8) & 0x00ff;
+ ret |= (value << 8) & 0xff00;
+ return ret;
+}
+
+static uint32_t endswap32(uint32_t value) {
+ uint32_t ret = 0;
+ ret |= (value >> 24) & 0x000000ff;
+ ret |= (value >> 8) & 0x0000ff00;
+ ret |= (value << 8) & 0x00ff0000;
+ ret |= (value << 24) & 0xff000000;
+ return ret;
+}
+
+static uint64_t endswap64(uint64_t value) {
+ uint64_t ret = 0;
+ ret |= (value >> 56) & 0x00000000000000ff;
+ ret |= (value >> 40) & 0x000000000000ff00;
+ ret |= (value >> 24) & 0x0000000000ff0000;
+ ret |= (value >> 8) & 0x00000000ff000000;
+ ret |= (value << 8) & 0x000000ff00000000;
+ ret |= (value << 24) & 0x0000ff0000000000;
+ ret |= (value << 40) & 0x00ff000000000000;
+ ret |= (value << 56) & 0xff00000000000000;
+ return ret;
+}
+
+#ifdef __BYTE_ORDER__
+
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+#define bigendian true
+#else
+#define bigendian false
+#endif
+
+#else /* !__BYTE_ORDER__ */
+
+static bool bigendian = false;
+
+#endif /* !__BYTE_ORDER__ */
+
+#define ENDSWAP(VALUE) (bigendian ? ( \
+ sizeof(VALUE) == 1 ? (VALUE) : \
+ sizeof(VALUE) == 2 ? endswap16(VALUE) : \
+ sizeof(VALUE) == 4 ? endswap32(VALUE) : \
+ sizeof(VALUE) == 8 ? endswap64(VALUE) : (abort(), 1) \
+) : (VALUE))
+
+static enum {
+ CACHE_CLEAN,
+ CACHE_DIRTY
+} cache_state;
+static uint64_t cached_block;
+static uint8_t *cache = NULL;
+static FILE *device = NULL;
+static size_t block_size;
+
+static bool device_init(void) {
+ size_t guesses[] = { 512, 2048, 4096 };
+
+ for (size_t i = 0; i < sizeof(guesses) / sizeof(size_t); i++) {
+ void *tmp = realloc(cache, guesses[i]);
+ if (tmp == NULL) {
+ perror_wrap("error: device_init(): realloc()");
+ return false;
+ }
+ cache = tmp;
+
+ rewind(device);
+
+ size_t ret = fread(cache, guesses[i], 1, device);
+ if (ret != 1) {
+ continue;
+ }
+
+ block_size = guesses[i];
+
+ if (!quiet) {
+ fprintf(stderr, "Physical block size of %zu bytes.\n", block_size);
+ }
+
+ cache_state = CACHE_CLEAN;
+ cached_block = 0;
+ return true;
+ }
+
+ fprintf(stderr, "%s: error: device_init(): Couldn't determine block size of device.\n", program_name);
+ return false;
+}
+
+static bool device_flush_cache(void) {
+ if (cache_state == CACHE_CLEAN)
+ return true;
+
+ if (set_pos(device, cached_block * block_size) != 0) {
+ perror_wrap("error: device_flush_cache(): set_pos()");
+ return false;
+ }
+
+ size_t ret = fwrite(cache, block_size, 1, device);
+ if (ret != 1) {
+ if (ferror(device)) {
+ perror_wrap("error: device_flush_cache(): fwrite()");
+ }
+ return false;
+ }
+
+ cache_state = CACHE_CLEAN;
+ return true;
+}
+
+static bool device_cache_block(uint64_t block) {
+ if (cached_block == block)
+ return true;
+
+ if (cache_state == CACHE_DIRTY) {
+ if (!device_flush_cache())
+ return false;
+ }
+
+ if (set_pos(device, block * block_size) != 0) {
+ perror_wrap("error: device_cache_block(): set_pos()");
+ return false;
+ }
+
+ size_t ret = fread(cache, block_size, 1, device);
+ if (ret != 1) {
+ if (ferror(device)) {
+ perror_wrap("error: device_cache_block(): fread()");
+ }
+ return false;
+ }
+
+ cached_block = block;
+
+ return true;
+}
+
+struct uninstall_data {
+ void *data;
+ uint64_t loc;
+ uint64_t count;
+};
+
+#define UNINSTALL_DATA_MAX 256
+
+static bool uninstalling = false;
+static struct uninstall_data uninstall_data[UNINSTALL_DATA_MAX];
+static struct uninstall_data uninstall_data_rev[UNINSTALL_DATA_MAX];
+static uint64_t uninstall_data_i = 0;
+static const char *uninstall_file = NULL;
+
+static void reverse_uninstall_data(void) {
+ for (size_t i = 0, j = uninstall_data_i - 1; i < uninstall_data_i; i++, j--) {
+ uninstall_data_rev[j] = uninstall_data[i];
+ }
+
+ memcpy(uninstall_data, uninstall_data_rev, uninstall_data_i * sizeof(struct uninstall_data));
+}
+
+static void free_uninstall_data(void) {
+ for (size_t i = 0; i < uninstall_data_i; i++) {
+ free(uninstall_data[i].data);
+ }
+}
+
+static bool store_uninstall_data(const char *filename) {
+ if (!quiet) {
+ fprintf(stderr, "Storing uninstall data to file: `%s`...\n", filename);
+ }
+
+ FILE *udfile = fopen(filename, "wb");
+ if (udfile == NULL) {
+ perror_wrap("error: `%s`", filename);
+ goto error;
+ }
+
+ if (fwrite(&uninstall_data_i, sizeof(uint64_t), 1, udfile) != 1) {
+ goto fwrite_error;
+ }
+
+ for (size_t i = 0; i < uninstall_data_i; i++) {
+ if (fwrite(&uninstall_data[i].loc, sizeof(uint64_t), 1, udfile) != 1) {
+ goto fwrite_error;
+ }
+ if (fwrite(&uninstall_data[i].count, sizeof(uint64_t), 1, udfile) != 1) {
+ goto fwrite_error;
+ }
+ if (fwrite(uninstall_data[i].data, uninstall_data[i].count, 1, udfile) != 1) {
+ goto fwrite_error;
+ }
+ }
+
+ fclose(udfile);
+ return true;
+
+fwrite_error:
+ perror_wrap("error: store_uninstall_data(): fwrite()");
+
+error:
+ if (udfile != NULL) {
+ fclose(udfile);
+ }
+ return false;
+}
+
+static bool load_uninstall_data(const char *filename) {
+ if (!quiet) {
+ fprintf(stderr, "Loading uninstall data from file: `%s`...\n", filename);
+ }
+
+ FILE *udfile = fopen(filename, "rb");
+ if (udfile == NULL) {
+ perror_wrap("error: `%s`", filename);
+ goto error;
+ }
+
+ if (fread(&uninstall_data_i, sizeof(uint64_t), 1, udfile) != 1) {
+ goto fread_error;
+ }
+
+ for (size_t i = 0; i < uninstall_data_i; i++) {
+ if (fread(&uninstall_data[i].loc, sizeof(uint64_t), 1, udfile) != 1) {
+ goto fread_error;
+ }
+ if (fread(&uninstall_data[i].count, sizeof(uint64_t), 1, udfile) != 1) {
+ goto fread_error;
+ }
+ uninstall_data[i].data = malloc(uninstall_data[i].count);
+ if (uninstall_data[i].data == NULL) {
+ perror_wrap("error: load_uninstall_data(): malloc()");
+ goto error;
+ }
+ if (fread(uninstall_data[i].data, uninstall_data[i].count, 1, udfile) != 1) {
+ goto fread_error;
+ }
+ }
+
+ fclose(udfile);
+ return true;
+
+fread_error:
+ perror_wrap("error: load_uninstall_data(): fread()");
+
+error:
+ if (udfile != NULL) {
+ fclose(udfile);
+ }
+ return false;
+}
+
+static bool _device_read(void *_buffer, uint64_t loc, size_t count) {
+ uint8_t *buffer = _buffer;
+ uint64_t progress = 0;
+ while (progress < count) {
+ uint64_t block = (loc + progress) / block_size;
+
+ if (!device_cache_block(block)) {
+ return false;
+ }
+
+ uint64_t chunk = count - progress;
+ uint64_t offset = (loc + progress) % block_size;
+ if (chunk > block_size - offset)
+ chunk = block_size - offset;
+
+ memcpy(buffer + progress, &cache[offset], chunk);
+ progress += chunk;
+ }
+
+ return true;
+}
+
+static bool _device_write(const void *_buffer, uint64_t loc, size_t count) {
+ if (uninstalling) {
+ goto skip_save;
+ }
+
+ if (uninstall_data_i >= UNINSTALL_DATA_MAX) {
+ fprintf(stderr, "%s: error: Too many uninstall data entries! Please report this bug upstream.\n", program_name);
+ return false;
+ }
+
+ struct uninstall_data *ud = &uninstall_data[uninstall_data_i];
+
+ ud->data = malloc(count);
+ if (ud->data == NULL) {
+ perror_wrap("error: _device_write(): malloc()");
+ return false;
+ }
+
+ if (!_device_read(ud->data, loc, count)) {
+ return false;
+ }
+
+ ud->loc = loc;
+ ud->count = count;
+
+skip_save:;
+ const uint8_t *buffer = _buffer;
+ uint64_t progress = 0;
+ while (progress < count) {
+ uint64_t block = (loc + progress) / block_size;
+
+ if (!device_cache_block(block)) {
+ return false;
+ }
+
+ uint64_t chunk = count - progress;
+ uint64_t offset = (loc + progress) % block_size;
+ if (chunk > block_size - offset)
+ chunk = block_size - offset;
+
+ memcpy(&cache[offset], buffer + progress, chunk);
+ cache_state = CACHE_DIRTY;
+ progress += chunk;
+ }
+
+ if (!uninstalling) {
+ uninstall_data_i++;
+ }
+ return true;
+}
+
+static bool uninstall(bool quiet_arg) {
+ bool print_cache_flush_fail = false;
+ bool print_write_fail = false;
+ bool ret = true;
+
+ uninstalling = true;
+
+ cache_state = CACHE_CLEAN;
+ cached_block = (uint64_t)-1;
+
+ for (size_t i = 0; i < uninstall_data_i; i++) {
+ struct uninstall_data *ud = &uninstall_data[i];
+ bool retry = false;
+ while (!_device_write(ud->data, ud->loc, ud->count)) {
+ if (retry) {
+ fprintf(stderr, "%s: warning: Retry failed.\n", program_name);
+ print_write_fail = true;
+ break;
+ }
+ if (!quiet) {
+ fprintf(stderr, "%s: warning: Uninstall data index %zu failed to write, retrying...\n", program_name, i);
+ }
+ if (!device_flush_cache()) {
+ print_cache_flush_fail = true;
+ }
+ cache_state = CACHE_CLEAN;
+ cached_block = (uint64_t)-1;
+ retry = true;
+ }
+ }
+
+ if (!device_flush_cache()) {
+ print_cache_flush_fail = true;
+ }
+
+ if (print_write_fail) {
+ fprintf(stderr, "%s: error: Some data failed to be uninstalled correctly.\n", program_name);
+ ret = false;
+ }
+
+ if (print_cache_flush_fail) {
+ fprintf(stderr, "%s: error: Device cache flush failure. Uninstall may be incomplete.\n", program_name);
+ ret = false;
+ }
+
+ if (ret == true && !quiet && !quiet_arg) {
+ fprintf(stderr, "Uninstall data restored successfully.\n");
+ }
+
+ return ret;
+}
+
+#define device_read(BUFFER, LOC, COUNT) \
+ do { \
+ if (!_device_read(BUFFER, LOC, COUNT)) \
+ goto cleanup; \
+ } while (0)
+
+#define device_write(BUFFER, LOC, COUNT) \
+ do { \
+ if (!_device_write(BUFFER, LOC, COUNT)) \
+ goto cleanup; \
+ } while (0)
+
+static void bios_install_usage(void) {
+ printf("usage: %s bios-install <device> [GPT partition index]\n", program_name);
+ printf("\n");
+ printf(" --force-mbr Force MBR detection to work even if the\n");
+ printf(" safety checks fail (DANGEROUS!)\n");
+ printf("\n");
+ printf(" --uninstall Reverse the entire install procedure\n");
+ printf("\n");
+ printf(" --uninstall-data-file=<filename>\n");
+ printf(" Set the input (for --uninstall) or output file\n");
+ printf(" name of the file which contains uninstall data\n");
+ printf("\n");
+ printf(" --quiet Do not print verbose diagnostic messages\n");
+ printf("\n");
+ printf(" --help | -h Display this help message\n");
+ printf("\n");
+}
+
+static int bios_install(int argc, char *argv[]) {
+ int ok = EXIT_FAILURE;
+ int force_mbr = 0;
+ bool uninstall_mode = false;
+ const uint8_t *bootloader_img = binary_limine_hdd_bin_data;
+ size_t bootloader_file_size = sizeof(binary_limine_hdd_bin_data);
+ uint8_t orig_mbr[70], timestamp[6];
+ const char *part_ndx = NULL;
+
+#ifndef __BYTE_ORDER__
+ uint32_t endcheck = 0x12345678;
+ uint8_t endbyte = *((uint8_t *)&endcheck);
+ bigendian = endbyte == 0x12;
+#endif
+
+ if (argc < 2) {
+ bios_install_usage();
+#ifdef IS_WINDOWS
+ system("pause");
+#endif
+ return EXIT_FAILURE;
+ }
+
+ for (int i = 1; i < argc; i++) {
+ if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) {
+ bios_install_usage();
+ return EXIT_SUCCESS;
+ } else if (strcmp(argv[i], "--quiet") == 0) {
+ quiet = true;
+ } else if (strcmp(argv[i], "--force-mbr") == 0) {
+ if (force_mbr && !quiet) {
+ fprintf(stderr, "%s: warning: --force-mbr already set.\n", program_name);
+ }
+ force_mbr = 1;
+ } else if (strcmp(argv[i], "--uninstall") == 0) {
+ if (uninstall_mode && !quiet) {
+ fprintf(stderr, "%s: warning: --uninstall already set.\n", program_name);
+ }
+ uninstall_mode = true;
+ } else if (memcmp(argv[i], "--uninstall-data-file=", 21) == 0) {
+ if (uninstall_file != NULL && !quiet) {
+ fprintf(stderr, "%s: warning: --uninstall-data-file already set. Overriding...\n", program_name);
+ }
+ uninstall_file = argv[i] + 21;
+ if (strlen(uninstall_file) == 0) {
+ fprintf(stderr, "%s: error: Uninstall data file has a zero-length name!\n", program_name);
+ return EXIT_FAILURE;
+ }
+ } else {
+ if (device != NULL) { // [GPT partition index]
+ part_ndx = argv[i]; // TODO: Make this non-positional?
+ } else if ((device = fopen(argv[i], "r+b")) == NULL) { // <device>
+ perror_wrap("error: `%s`", argv[i]);
+ return EXIT_FAILURE;
+ }
+ }
+ }
+
+ if (device == NULL) {
+ fprintf(stderr, "%s: error: No device specified\n", program_name);
+ bios_install_usage();
+ return EXIT_FAILURE;
+ }
+
+ if (!device_init()) {
+ goto uninstall_mode_cleanup;
+ }
+
+ if (uninstall_mode) {
+ if (uninstall_file == NULL) {
+ fprintf(stderr, "%s: error: Uninstall mode set but no --uninstall-data-file=... passed.\n", program_name);
+ goto uninstall_mode_cleanup;
+ }
+
+ if (!load_uninstall_data(uninstall_file)) {
+ goto uninstall_mode_cleanup;
+ }
+
+ if (uninstall(false) == false) {
+ ok = EXIT_FAILURE;
+ } else {
+ ok = EXIT_SUCCESS;
+ }
+ goto uninstall_mode_cleanup;
+ }
+
+ // Probe for GPT and logical block size
+ int gpt = 0;
+ struct gpt_table_header gpt_header;
+ uint64_t lb_guesses[] = { 512, 4096 };
+ uint64_t lb_size = 0;
+ for (size_t i = 0; i < sizeof(lb_guesses) / sizeof(uint64_t); i++) {
+ device_read(&gpt_header, lb_guesses[i], sizeof(struct gpt_table_header));
+ if (!strncmp(gpt_header.signature, "EFI PART", 8)) {
+ lb_size = lb_guesses[i];
+ if (!force_mbr) {
+ gpt = 1;
+ if (!quiet) {
+ fprintf(stderr, "Installing to GPT. Logical block size of %" PRIu64 " bytes.\n",
+ lb_guesses[i]);
+ }
+ } else {
+ fprintf(stderr, "%s: error: Device has a valid GPT, refusing to force MBR.\n", program_name);
+ goto cleanup;
+ }
+ break;
+ }
+ }
+
+ struct gpt_table_header secondary_gpt_header;
+ if (gpt) {
+ if (!quiet) {
+ fprintf(stderr, "Secondary header at LBA 0x%" PRIx64 ".\n",
+ ENDSWAP(gpt_header.alternate_lba));
+ }
+ device_read(&secondary_gpt_header, lb_size * ENDSWAP(gpt_header.alternate_lba),
+ sizeof(struct gpt_table_header));
+ if (!strncmp(secondary_gpt_header.signature, "EFI PART", 8)) {
+ if (!quiet) {
+ fprintf(stderr, "Secondary header valid.\n");
+ }
+ } else {
+ fprintf(stderr, "%s: error: Secondary header not valid, aborting.\n", program_name);
+ goto cleanup;
+ }
+ }
+
+ int mbr = 0;
+ if (gpt == 0) {
+ // Do all sanity checks on MBR
+ mbr = 1;
+
+ uint8_t hint8 = 0;
+ uint16_t hint16 = 0;
+ uint32_t hint32 = 0;
+
+ bool any_active = false;
+
+ device_read(&hint8, 446, sizeof(uint8_t));
+ if (hint8 != 0x00 && hint8 != 0x80) {
+ if (!force_mbr) {
+ mbr = 0;
+ } else {
+ hint8 &= 0x80;
+ device_write(&hint8, 446, sizeof(uint8_t));
+ }
+ }
+ any_active = any_active || (hint8 & 0x80) != 0;
+ device_read(&hint8, 446 + 4, sizeof(uint8_t));
+ if (hint8 != 0x00) {
+ device_read(&hint32, 446 + 8, sizeof(uint32_t));
+ hint32 = ENDSWAP(hint32);
+ if (hint32 < 63) {
+ goto part_too_low;
+ }
+ }
+ device_read(&hint8, 462, sizeof(uint8_t));
+ if (hint8 != 0x00 && hint8 != 0x80) {
+ if (!force_mbr) {
+ mbr = 0;
+ } else {
+ hint8 &= 0x80;
+ device_write(&hint8, 462, sizeof(uint8_t));
+ }
+ }
+ any_active = any_active || (hint8 & 0x80) != 0;
+ device_read(&hint8, 462 + 4, sizeof(uint8_t));
+ if (hint8 != 0x00) {
+ device_read(&hint32, 462 + 8, sizeof(uint32_t));
+ hint32 = ENDSWAP(hint32);
+ if (hint32 < 63) {
+ goto part_too_low;
+ }
+ }
+ device_read(&hint8, 478, sizeof(uint8_t));
+ if (hint8 != 0x00 && hint8 != 0x80) {
+ if (!force_mbr) {
+ mbr = 0;
+ } else {
+ hint8 &= 0x80;
+ device_write(&hint8, 478, sizeof(uint8_t));
+ }
+ }
+ any_active = any_active || (hint8 & 0x80) != 0;
+ device_read(&hint8, 478 + 4, sizeof(uint8_t));
+ if (hint8 != 0x00) {
+ device_read(&hint32, 478 + 8, sizeof(uint32_t));
+ hint32 = ENDSWAP(hint32);
+ if (hint32 < 63) {
+ goto part_too_low;
+ }
+ }
+ device_read(&hint8, 494, sizeof(uint8_t));
+ if (hint8 != 0x00 && hint8 != 0x80) {
+ if (!force_mbr) {
+ mbr = 0;
+ } else {
+ hint8 &= 0x80;
+ device_write(&hint8, 494, sizeof(uint8_t));
+ }
+ }
+ any_active = any_active || (hint8 & 0x80) != 0;
+ device_read(&hint8, 494 + 4, sizeof(uint8_t));
+ if (hint8 != 0x00) {
+ device_read(&hint32, 494 + 8, sizeof(uint32_t));
+ hint32 = ENDSWAP(hint32);
+ if (hint32 < 63) {
+ goto part_too_low;
+ }
+ }
+
+ if (0) {
+part_too_low:
+ fprintf(stderr, "%s: error: A partition's start sector is less than 63, aborting.\n", program_name);
+ goto cleanup;
+ }
+
+ char hintc[64];
+ device_read(hintc, 4, 8);
+ if (memcmp(hintc, "_ECH_FS_", 8) == 0) {
+ if (!force_mbr) {
+ mbr = 0;
+ } else {
+ memset(hintc, 0, 8);
+ device_write(hintc, 4, 8);
+ }
+ }
+ device_read(hintc, 3, 4);
+ if (memcmp(hintc, "NTFS", 4) == 0) {
+ if (!force_mbr) {
+ mbr = 0;
+ } else {
+ memset(hintc, 0, 4);
+ device_write(hintc, 3, 4);
+ }
+ }
+ device_read(hintc, 54, 3);
+ if (memcmp(hintc, "FAT", 3) == 0) {
+ if (!force_mbr) {
+ mbr = 0;
+ } else {
+ memset(hintc, 0, 5);
+ device_write(hintc, 54, 5);
+ }
+ }
+ device_read(hintc, 82, 3);
+ if (memcmp(hintc, "FAT", 3) == 0) {
+ if (!force_mbr) {
+ mbr = 0;
+ } else {
+ memset(hintc, 0, 5);
+ device_write(hintc, 82, 5);
+ }
+ }
+ device_read(hintc, 3, 5);
+ if (memcmp(hintc, "FAT32", 5) == 0) {
+ if (!force_mbr) {
+ mbr = 0;
+ } else {
+ memset(hintc, 0, 5);
+ device_write(hintc, 3, 5);
+ }
+ }
+ device_read(&hint16, 1080, sizeof(uint16_t));
+ hint16 = ENDSWAP(hint16);
+ if (hint16 == 0xef53) {
+ if (!force_mbr) {
+ mbr = 0;
+ } else {
+ hint16 = 0;
+ hint16 = ENDSWAP(hint16);
+ device_write(&hint16, 1080, sizeof(uint16_t));
+ }
+ }
+
+ if (mbr && !any_active) {
+ if (!quiet) {
+ fprintf(stderr, "No active partition found, some systems may not boot.\n");
+ fprintf(stderr, "Setting partition 1 as active to work around the issue...\n");
+ }
+ hint8 = 0x80;
+ device_write(&hint8, 446, sizeof(uint8_t));
+ }
+ }
+
+ if (gpt == 0 && mbr == 0) {
+ fprintf(stderr, "error: Could not determine if the device has a valid partition table.\n");
+ fprintf(stderr, " Please ensure the device has a valid MBR or GPT.\n");
+ fprintf(stderr, " Alternatively, pass `--force-mbr` to override these checks.\n");
+ fprintf(stderr, " **ONLY DO THIS AT YOUR OWN RISK, DATA LOSS MAY OCCUR!**\n");
+ goto cleanup;
+ }
+
+ size_t stage2_size = bootloader_file_size - 512;
+
+ size_t stage2_sects = DIV_ROUNDUP(stage2_size, 512);
+
+ uint16_t stage2_size_a = (stage2_sects / 2) * 512 + (stage2_sects % 2 ? 512 : 0);
+ uint16_t stage2_size_b = (stage2_sects / 2) * 512;
+
+ // Default split of stage2 for MBR (consecutive in post MBR gap)
+ uint64_t stage2_loc_a = 512;
+ uint64_t stage2_loc_b = stage2_loc_a + stage2_size_a;
+
+ if (gpt) {
+ if (part_ndx != NULL) {
+ uint32_t partition_num;
+ sscanf(part_ndx, "%" SCNu32, &partition_num);
+ partition_num--;
+ if (partition_num > ENDSWAP(gpt_header.number_of_partition_entries)) {
+ fprintf(stderr, "%s: error: Partition number is too large.\n", program_name);
+ goto cleanup;
+ }
+
+ struct gpt_entry gpt_entry;
+ device_read(&gpt_entry,
+ (ENDSWAP(gpt_header.partition_entry_lba) * lb_size)
+ + (partition_num * ENDSWAP(gpt_header.size_of_partition_entry)),
+ sizeof(struct gpt_entry));
+
+ if (gpt_entry.unique_partition_guid[0] == 0 &&
+ gpt_entry.unique_partition_guid[1] == 0) {
+ fprintf(stderr, "%s: error: No such partition: `%s`.\n", program_name, part_ndx);
+ goto cleanup;
+ }
+
+ if (!quiet) {
+ fprintf(stderr, "GPT partition specified. Installing there instead of embedding.\n");
+ }
+
+ stage2_loc_a = ENDSWAP(gpt_entry.starting_lba) * lb_size;
+ stage2_loc_b = stage2_loc_a + stage2_size_a;
+ if (stage2_loc_b & (lb_size - 1))
+ stage2_loc_b = (stage2_loc_b + lb_size) & ~(lb_size - 1);
+ } else {
+ if (!quiet) {
+ fprintf(stderr, "GPT partition NOT specified. Attempting GPT embedding.\n");
+ }
+
+ int64_t max_partition_entry_used = -1;
+ for (int64_t i = 0; i < (int64_t)ENDSWAP(gpt_header.number_of_partition_entries); i++) {
+ struct gpt_entry gpt_entry;
+ device_read(&gpt_entry,
+ (ENDSWAP(gpt_header.partition_entry_lba) * lb_size)
+ + (i * ENDSWAP(gpt_header.size_of_partition_entry)),
+ sizeof(struct gpt_entry));
+
+ if (gpt_entry.unique_partition_guid[0] != 0 ||
+ gpt_entry.unique_partition_guid[1] != 0) {
+ if (i > max_partition_entry_used)
+ max_partition_entry_used = i;
+ }
+ }
+
+ stage2_loc_a = (ENDSWAP(gpt_header.partition_entry_lba) + 32) * lb_size;
+ stage2_loc_a -= stage2_size_a;
+ stage2_loc_a &= ~(lb_size - 1);
+ stage2_loc_b = (ENDSWAP(secondary_gpt_header.partition_entry_lba) + 32) * lb_size;
+ stage2_loc_b -= stage2_size_b;
+ stage2_loc_b &= ~(lb_size - 1);
+
+ size_t partition_entries_per_lb =
+ lb_size / ENDSWAP(gpt_header.size_of_partition_entry);
+ size_t new_partition_array_lba_size =
+ stage2_loc_a / lb_size - ENDSWAP(gpt_header.partition_entry_lba);
+ size_t new_partition_entry_count =
+ new_partition_array_lba_size * partition_entries_per_lb;
+
+ if ((int64_t)new_partition_entry_count <= max_partition_entry_used) {
+ fprintf(stderr, "%s: error: Cannot embed because there are too many used partition entries.\n", program_name);
+ goto cleanup;
+ }
+
+ if (!quiet) {
+ fprintf(stderr, "New maximum count of partition entries: %zu.\n", new_partition_entry_count);
+ }
+
+ // Zero out unused partitions
+ void *empty = calloc(1, ENDSWAP(gpt_header.size_of_partition_entry));
+ for (size_t i = max_partition_entry_used + 1; i < new_partition_entry_count; i++) {
+ device_write(empty,
+ ENDSWAP(gpt_header.partition_entry_lba) * lb_size + i * ENDSWAP(gpt_header.size_of_partition_entry),
+ ENDSWAP(gpt_header.size_of_partition_entry));
+ }
+ for (size_t i = max_partition_entry_used + 1; i < new_partition_entry_count; i++) {
+ device_write(empty,
+ ENDSWAP(secondary_gpt_header.partition_entry_lba) * lb_size + i * ENDSWAP(secondary_gpt_header.size_of_partition_entry),
+ ENDSWAP(secondary_gpt_header.size_of_partition_entry));
+ }
+ free(empty);
+
+ uint8_t *partition_array =
+ malloc(new_partition_entry_count * ENDSWAP(gpt_header.size_of_partition_entry));
+ if (partition_array == NULL) {
+ perror_wrap("error: bios_install(): malloc()");
+ goto cleanup;
+ }
+
+ device_read(partition_array,
+ ENDSWAP(gpt_header.partition_entry_lba) * lb_size,
+ new_partition_entry_count * ENDSWAP(gpt_header.size_of_partition_entry));
+
+ uint32_t crc32_partition_array =
+ crc32(partition_array,
+ new_partition_entry_count * ENDSWAP(gpt_header.size_of_partition_entry));
+
+ free(partition_array);
+
+ gpt_header.partition_entry_array_crc32 = ENDSWAP(crc32_partition_array);
+ gpt_header.number_of_partition_entries = ENDSWAP(new_partition_entry_count);
+ gpt_header.crc32 = 0;
+ gpt_header.crc32 = crc32(&gpt_header, 92);
+ gpt_header.crc32 = ENDSWAP(gpt_header.crc32);
+ device_write(&gpt_header,
+ lb_size,
+ sizeof(struct gpt_table_header));
+
+ secondary_gpt_header.partition_entry_array_crc32 = ENDSWAP(crc32_partition_array);
+ secondary_gpt_header.number_of_partition_entries =
+ ENDSWAP(new_partition_entry_count);
+ secondary_gpt_header.crc32 = 0;
+ secondary_gpt_header.crc32 = crc32(&secondary_gpt_header, 92);
+ secondary_gpt_header.crc32 = ENDSWAP(secondary_gpt_header.crc32);
+ device_write(&secondary_gpt_header,
+ lb_size * ENDSWAP(gpt_header.alternate_lba),
+ sizeof(struct gpt_table_header));
+ }
+ } else {
+ if (!quiet) {
+ fprintf(stderr, "Installing to MBR.\n");
+ }
+ }
+
+ if (!quiet) {
+ fprintf(stderr, "Stage 2 to be located at 0x%" PRIx64 " and 0x%" PRIx64 ".\n",
+ stage2_loc_a, stage2_loc_b);
+ }
+
+ // Save original timestamp
+ device_read(timestamp, 218, 6);
+
+ // Save the original partition table of the device
+ device_read(orig_mbr, 440, 70);
+
+ // Write the bootsector from the bootloader to the device
+ device_write(&bootloader_img[0], 0, 512);
+
+ // Write the rest of stage 2 to the device
+ device_write(&bootloader_img[512], stage2_loc_a, stage2_size_a);
+ device_write(&bootloader_img[512 + stage2_size_a],
+ stage2_loc_b, stage2_size - stage2_size_a);
+
+ // Hardcode in the bootsector the location of stage 2 halves
+ stage2_size_a = ENDSWAP(stage2_size_a);
+ device_write(&stage2_size_a, 0x1a4 + 0, sizeof(uint16_t));
+ stage2_size_b = ENDSWAP(stage2_size_b);
+ device_write(&stage2_size_b, 0x1a4 + 2, sizeof(uint16_t));
+ stage2_loc_a = ENDSWAP(stage2_loc_a);
+ device_write(&stage2_loc_a, 0x1a4 + 4, sizeof(uint64_t));
+ stage2_loc_b = ENDSWAP(stage2_loc_b);
+ device_write(&stage2_loc_b, 0x1a4 + 12, sizeof(uint64_t));
+
+ // Write back timestamp
+ device_write(timestamp, 218, 6);
+
+ // Write back the saved partition table to the device
+ device_write(orig_mbr, 440, 70);
+
+ if (!device_flush_cache())
+ goto cleanup;
+
+ if (!quiet) {
+ fprintf(stderr, "Reminder: Remember to copy the limine-bios.sys file in either\n"
+ " the root, /boot, /limine, or /boot/limine directories of\n"
+ " one of the partitions on the device, or boot will fail!\n");
+
+ fprintf(stderr, "Limine BIOS stages installed successfully!\n");
+ }
+
+ ok = EXIT_SUCCESS;
+
+cleanup:
+ reverse_uninstall_data();
+ if (ok != EXIT_SUCCESS) {
+ // If we failed, attempt to reverse install process
+ fprintf(stderr, "%s: Install failed, undoing work...\n", program_name);
+ uninstall(true);
+ } else if (uninstall_file != NULL) {
+ store_uninstall_data(uninstall_file);
+ }
+uninstall_mode_cleanup:
+ free_uninstall_data();
+ if (cache)
+ free(cache);
+ if (device != NULL)
+ fclose(device);
+
+ return ok;
+}
+#endif
+
+#define CONFIG_B2SUM_SIGNATURE "++CONFIG_B2SUM_SIGNATURE++"
+
+static void enroll_config_usage(void) {
+ printf("usage: %s enroll-config <Limine executable> <BLAKE2B of config file>\n", program_name);
+ printf("\n");
+ printf(" --reset Remove enrolled BLAKE2B, will not check config integrity\n");
+ printf("\n");
+ printf(" --quiet Do not print verbose diagnostic messages\n");
+ printf("\n");
+ printf(" --help | -h Display this help message\n");
+ printf("\n");
+}
+
+static int enroll_config(int argc, char *argv[]) {
+ int ret = EXIT_FAILURE;
+
+ char *bootloader = NULL;
+ FILE *bootloader_file = NULL;
+ bool quiet = false;
+ bool reset = false;
+
+ for (int i = 1; i < argc; i++) {
+ if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) {
+ enroll_config_usage();
+ return EXIT_SUCCESS;
+ } else if (strcmp(argv[i], "--quiet") == 0) {
+ remove_arg(&argc, argv, i);
+ quiet = true;
+ } else if (strcmp(argv[i], "--reset") == 0) {
+ remove_arg(&argc, argv, i);
+ reset = true;
+ }
+ }
+
+ if (argc <= (reset ? 1 : 2)) {
+ enroll_config_usage();
+#ifdef IS_WINDOWS
+ system("pause");
+#endif
+ return EXIT_FAILURE;
+ }
+
+ if (!reset && strlen(argv[2]) != 128) {
+ fprintf(stderr, "%s: error: BLAKE2B specified is not 128 characters long.\n", program_name);
+ goto cleanup;
+ }
+
+ bootloader_file = fopen(argv[1], "r+b");
+ if (bootloader_file == NULL) {
+ perror_wrap("error: `%s`", argv[1]);
+ goto cleanup;
+ }
+
+ if (fseek(bootloader_file, 0, SEEK_END) != 0) {
+ perror_wrap("error: enroll_config(): fseek()");
+ goto cleanup;
+ }
+ size_t bootloader_size = ftell(bootloader_file);
+ rewind(bootloader_file);
+
+ bootloader = malloc(bootloader_size);
+ if (bootloader == NULL) {
+ perror_wrap("error: enroll_config(): malloc()");
+ goto cleanup;
+ }
+
+ if (fread(bootloader, bootloader_size, 1, bootloader_file) != 1) {
+ perror_wrap("error: enroll_config(): fread()");
+ goto cleanup;
+ }
+
+ char *checksum_loc = NULL;
+ size_t checked_count = 0;
+ const char *config_b2sum_sign = CONFIG_B2SUM_SIGNATURE;
+ for (size_t i = 0; i < bootloader_size - ((sizeof(CONFIG_B2SUM_SIGNATURE) - 1) + 128) + 1; i++) {
+ if (bootloader[i] != config_b2sum_sign[checked_count]) {
+ checked_count = 0;
+ continue;
+ }
+
+ checked_count++;
+
+ if (checked_count == sizeof(CONFIG_B2SUM_SIGNATURE) - 1) {
+ checksum_loc = &bootloader[i + 1];
+ break;
+ }
+ }
+
+ if (checksum_loc == NULL) {
+ fprintf(stderr, "%s: error: Checksum location not found in provided executable.\n", program_name);
+ goto cleanup;
+ }
+
+ if (!reset) {
+ memcpy(checksum_loc, argv[2], 128);
+ } else {
+ memset(checksum_loc, '0', 128);
+ }
+
+ if (fseek(bootloader_file, 0, SEEK_SET) != 0) {
+ perror_wrap("error: enroll_config(): fseek()");
+ goto cleanup;
+ }
+ if (fwrite(bootloader, bootloader_size, 1, bootloader_file) != 1) {
+ perror_wrap("error: enroll_config(): fwrite()");
+ goto cleanup;
+ }
+
+ if (!quiet) {
+ fprintf(stderr, "Config file BLAKE2B successfully %s!\n", reset ? "reset" : "enrolled");
+ }
+ ret = EXIT_SUCCESS;
+
+cleanup:
+ if (bootloader != NULL) {
+ free(bootloader);
+ }
+ if (bootloader_file != NULL) {
+ fclose(bootloader_file);
+ }
+ return ret;
+}
+
+#define LIMINE_VERSION "8.0.0"
+#define LIMINE_COPYRIGHT "Copyright (C) 2019-2024 mintsuki and contributors."
+
+static void version_usage(void) {
+ printf("usage: %s version [options...]\n", program_name);
+ printf("\n");
+ printf(" --version-only Only print the version number without licensing info\n");
+ printf(" and other distractions\n");
+ printf("\n");
+ printf(" --help | -h Display this help message\n");
+ printf("\n");
+}
+
+static int version(int argc, char *argv[]) {
+ if (argc >= 2) {
+ if (strcmp(argv[1], "--help") == 0) {
+ version_usage();
+ return EXIT_SUCCESS;
+ } else if (strcmp(argv[1], "--version-only") == 0) {
+ puts(LIMINE_VERSION);
+ return EXIT_SUCCESS;
+ }
+ }
+
+ puts("Limine " LIMINE_VERSION);
+ puts(LIMINE_COPYRIGHT);
+ puts("Limine is distributed under the terms of the BSD-2-Clause license.");
+ puts("There is ABSOLUTELY NO WARRANTY, to the extent permitted by law.");
+ return EXIT_SUCCESS;
+}
+
+static void general_usage(void) {
+ printf("usage: %s <command> <args...>\n", program_name);
+ printf("\n");
+ printf(" --print-datadir Print the directory containing the bootloader files\n");
+ printf("\n");
+ printf(" --version Print the Limine version (like the `version` command)\n");
+ printf("\n");
+ printf(" --help | -h Display this help message\n");
+ printf("\n");
+ printf("Commands: `help`, `version`, `bios-install`, `enroll-config`\n");
+ printf("Use `--help` after specifying the command for command-specific help.\n");
+}
+
+static int print_datadir(void) {
+#ifdef LIMINE_DATADIR
+ puts(LIMINE_DATADIR);
+ return EXIT_SUCCESS;
+#else
+ fprintf(stderr, "%s: error: Cannot print datadir for `limine` built out-of-tree.\n", program_name);
+ return EXIT_FAILURE;
+#endif
+}
+
+int main(int argc, char *argv[]) {
+ program_name = argv[0];
+
+ if (argc <= 1) {
+ general_usage();
+ return EXIT_FAILURE;
+ }
+
+ if (strcmp(argv[1], "help") == 0
+ || strcmp(argv[1], "--help") == 0
+ || strcmp(argv[1], "-h") == 0) {
+ general_usage();
+ return EXIT_SUCCESS;
+ } else if (strcmp(argv[1], "bios-install") == 0) {
+#ifndef LIMINE_NO_BIOS
+ return bios_install(argc - 1, &argv[1]);
+#else
+ fprintf(stderr, "%s: error: Limine has been compiled without BIOS support.\n", program_name);
+ return EXIT_FAILURE;
+#endif
+ } else if (strcmp(argv[1], "enroll-config") == 0) {
+ return enroll_config(argc - 1, &argv[1]);
+ } else if (strcmp(argv[1], "--print-datadir") == 0) {
+ return print_datadir();
+ } else if (strcmp(argv[1], "version") == 0
+ || strcmp(argv[1], "--version") == 0) {
+ return version(argc - 1, &argv[1]);
+ }
+
+ general_usage();
+ return EXIT_FAILURE;
+}
diff --git a/limine.exe b/limine.exe
new file mode 100755
index 00000000..2affd317
Binary files /dev/null and b/limine.exe differ
diff --git a/limine.h b/limine.h
new file mode 100644
index 00000000..099b6d1e
--- /dev/null
+++ b/limine.h
@@ -0,0 +1,625 @@
+/* BSD Zero Clause License */
+
+/* Copyright (C) 2022-2024 mintsuki and contributors.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef LIMINE_H
+#define LIMINE_H 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+/* Misc */
+
+#ifdef LIMINE_NO_POINTERS
+# define LIMINE_PTR(TYPE) uint64_t
+#else
+# define LIMINE_PTR(TYPE) TYPE
+#endif
+
+#ifdef __GNUC__
+# define LIMINE_DEPRECATED __attribute__((__deprecated__))
+# define LIMINE_DEPRECATED_IGNORE_START \
+ _Pragma("GCC diagnostic push") \
+ _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
+# define LIMINE_DEPRECATED_IGNORE_END \
+ _Pragma("GCC diagnostic pop")
+#else
+# define LIMINE_DEPRECATED
+# define LIMINE_DEPRECATED_IGNORE_START
+# define LIMINE_DEPRECATED_IGNORE_END
+#endif
+
+#define LIMINE_REQUESTS_START_MARKER \
+ uint64_t limine_requests_start_marker[4] = { 0xf6b8f4b39de7d1ae, 0xfab91a6940fcb9cf, \
+ 0x785c6ed015d3e316, 0x181e920a7852b9d9 };
+#define LIMINE_REQUESTS_END_MARKER \
+ uint64_t limine_requests_end_marker[2] = { 0xadc0e0531bb10d03, 0x9572709f31764c62 };
+
+#define LIMINE_REQUESTS_DELIMITER LIMINE_REQUESTS_END_MARKER
+
+#define LIMINE_BASE_REVISION(N) \
+ uint64_t limine_base_revision[3] = { 0xf9562b2d5c95a6c8, 0x6a7b384944536bdc, (N) };
+
+#define LIMINE_BASE_REVISION_SUPPORTED (limine_base_revision[2] == 0)
+
+#define LIMINE_COMMON_MAGIC 0xc7b1dd30df4c8b88, 0x0a82e883a194f07b
+
+struct limine_uuid {
+ uint32_t a;
+ uint16_t b;
+ uint16_t c;
+ uint8_t d[8];
+};
+
+#define LIMINE_MEDIA_TYPE_GENERIC 0
+#define LIMINE_MEDIA_TYPE_OPTICAL 1
+#define LIMINE_MEDIA_TYPE_TFTP 2
+
+struct limine_file {
+ uint64_t revision;
+ LIMINE_PTR(void *) address;
+ uint64_t size;
+ LIMINE_PTR(char *) path;
+ LIMINE_PTR(char *) cmdline;
+ uint32_t media_type;
+ uint32_t unused;
+ uint32_t tftp_ip;
+ uint32_t tftp_port;
+ uint32_t partition_index;
+ uint32_t mbr_disk_id;
+ struct limine_uuid gpt_disk_uuid;
+ struct limine_uuid gpt_part_uuid;
+ struct limine_uuid part_uuid;
+};
+
+/* Boot info */
+
+#define LIMINE_BOOTLOADER_INFO_REQUEST { LIMINE_COMMON_MAGIC, 0xf55038d8e2a1202f, 0x279426fcf5f59740 }
+
+struct limine_bootloader_info_response {
+ uint64_t revision;
+ LIMINE_PTR(char *) name;
+ LIMINE_PTR(char *) version;
+};
+
+struct limine_bootloader_info_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_bootloader_info_response *) response;
+};
+
+/* Firmware type */
+
+#define LIMINE_FIRMWARE_TYPE_REQUEST { LIMINE_COMMON_MAGIC, 0x8c2f75d90bef28a8, 0x7045a4688eac00c3 }
+
+#define LIMINE_FIRMWARE_TYPE_X86BIOS 0
+#define LIMINE_FIRMWARE_TYPE_UEFI32 1
+#define LIMINE_FIRMWARE_TYPE_UEFI64 2
+
+struct limine_firmware_type_response {
+ uint64_t revision;
+ uint64_t firmware_type;
+};
+
+struct limine_firmware_type_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_firmware_type_response *) response;
+};
+
+/* Stack size */
+
+#define LIMINE_STACK_SIZE_REQUEST { LIMINE_COMMON_MAGIC, 0x224ef0460a8e8926, 0xe1cb0fc25f46ea3d }
+
+struct limine_stack_size_response {
+ uint64_t revision;
+};
+
+struct limine_stack_size_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_stack_size_response *) response;
+ uint64_t stack_size;
+};
+
+/* HHDM */
+
+#define LIMINE_HHDM_REQUEST { LIMINE_COMMON_MAGIC, 0x48dcf1cb8ad2b852, 0x63984e959a98244b }
+
+struct limine_hhdm_response {
+ uint64_t revision;
+ uint64_t offset;
+};
+
+struct limine_hhdm_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_hhdm_response *) response;
+};
+
+/* Framebuffer */
+
+#define LIMINE_FRAMEBUFFER_REQUEST { LIMINE_COMMON_MAGIC, 0x9d5827dcd881dd75, 0xa3148604f6fab11b }
+
+#define LIMINE_FRAMEBUFFER_RGB 1
+
+struct limine_video_mode {
+ uint64_t pitch;
+ uint64_t width;
+ uint64_t height;
+ uint16_t bpp;
+ uint8_t memory_model;
+ uint8_t red_mask_size;
+ uint8_t red_mask_shift;
+ uint8_t green_mask_size;
+ uint8_t green_mask_shift;
+ uint8_t blue_mask_size;
+ uint8_t blue_mask_shift;
+};
+
+struct limine_framebuffer {
+ LIMINE_PTR(void *) address;
+ uint64_t width;
+ uint64_t height;
+ uint64_t pitch;
+ uint16_t bpp;
+ uint8_t memory_model;
+ uint8_t red_mask_size;
+ uint8_t red_mask_shift;
+ uint8_t green_mask_size;
+ uint8_t green_mask_shift;
+ uint8_t blue_mask_size;
+ uint8_t blue_mask_shift;
+ uint8_t unused[7];
+ uint64_t edid_size;
+ LIMINE_PTR(void *) edid;
+ /* Response revision 1 */
+ uint64_t mode_count;
+ LIMINE_PTR(struct limine_video_mode **) modes;
+};
+
+struct limine_framebuffer_response {
+ uint64_t revision;
+ uint64_t framebuffer_count;
+ LIMINE_PTR(struct limine_framebuffer **) framebuffers;
+};
+
+struct limine_framebuffer_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_framebuffer_response *) response;
+};
+
+/* Terminal */
+
+#define LIMINE_TERMINAL_REQUEST { LIMINE_COMMON_MAGIC, 0xc8ac59310c2b0844, 0xa68d0c7265d38878 }
+
+#define LIMINE_TERMINAL_CB_DEC 10
+#define LIMINE_TERMINAL_CB_BELL 20
+#define LIMINE_TERMINAL_CB_PRIVATE_ID 30
+#define LIMINE_TERMINAL_CB_STATUS_REPORT 40
+#define LIMINE_TERMINAL_CB_POS_REPORT 50
+#define LIMINE_TERMINAL_CB_KBD_LEDS 60
+#define LIMINE_TERMINAL_CB_MODE 70
+#define LIMINE_TERMINAL_CB_LINUX 80
+
+#define LIMINE_TERMINAL_CTX_SIZE ((uint64_t)(-1))
+#define LIMINE_TERMINAL_CTX_SAVE ((uint64_t)(-2))
+#define LIMINE_TERMINAL_CTX_RESTORE ((uint64_t)(-3))
+#define LIMINE_TERMINAL_FULL_REFRESH ((uint64_t)(-4))
+
+/* Response revision 1 */
+#define LIMINE_TERMINAL_OOB_OUTPUT_GET ((uint64_t)(-10))
+#define LIMINE_TERMINAL_OOB_OUTPUT_SET ((uint64_t)(-11))
+
+#define LIMINE_TERMINAL_OOB_OUTPUT_OCRNL (1 << 0)
+#define LIMINE_TERMINAL_OOB_OUTPUT_OFDEL (1 << 1)
+#define LIMINE_TERMINAL_OOB_OUTPUT_OFILL (1 << 2)
+#define LIMINE_TERMINAL_OOB_OUTPUT_OLCUC (1 << 3)
+#define LIMINE_TERMINAL_OOB_OUTPUT_ONLCR (1 << 4)
+#define LIMINE_TERMINAL_OOB_OUTPUT_ONLRET (1 << 5)
+#define LIMINE_TERMINAL_OOB_OUTPUT_ONOCR (1 << 6)
+#define LIMINE_TERMINAL_OOB_OUTPUT_OPOST (1 << 7)
+
+LIMINE_DEPRECATED_IGNORE_START
+
+struct LIMINE_DEPRECATED limine_terminal;
+
+typedef void (*limine_terminal_write)(struct limine_terminal *, const char *, uint64_t);
+typedef void (*limine_terminal_callback)(struct limine_terminal *, uint64_t, uint64_t, uint64_t, uint64_t);
+
+struct LIMINE_DEPRECATED limine_terminal {
+ uint64_t columns;
+ uint64_t rows;
+ LIMINE_PTR(struct limine_framebuffer *) framebuffer;
+};
+
+struct LIMINE_DEPRECATED limine_terminal_response {
+ uint64_t revision;
+ uint64_t terminal_count;
+ LIMINE_PTR(struct limine_terminal **) terminals;
+ LIMINE_PTR(limine_terminal_write) write;
+};
+
+struct LIMINE_DEPRECATED limine_terminal_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_terminal_response *) response;
+ LIMINE_PTR(limine_terminal_callback) callback;
+};
+
+LIMINE_DEPRECATED_IGNORE_END
+
+/* Paging mode */
+
+#define LIMINE_PAGING_MODE_REQUEST { LIMINE_COMMON_MAGIC, 0x95c1a0edab0944cb, 0xa4e5cb3842f7488a }
+
+#if defined (__x86_64__) || defined (__i386__)
+#define LIMINE_PAGING_MODE_X86_64_4LVL 0
+#define LIMINE_PAGING_MODE_X86_64_5LVL 1
+#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_X86_64_5LVL
+#define LIMINE_PAGING_MODE_MIN LIMINE_PAGING_MODE_X86_64_4LVL
+#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_X86_64_4LVL
+#elif defined (__aarch64__)
+#define LIMINE_PAGING_MODE_AARCH64_4LVL 0
+#define LIMINE_PAGING_MODE_AARCH64_5LVL 1
+#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_AARCH64_5LVL
+#define LIMINE_PAGING_MODE_MIN LIMINE_PAGING_MODE_AARCH64_4LVL
+#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_AARCH64_4LVL
+#elif defined (__riscv) && (__riscv_xlen == 64)
+#define LIMINE_PAGING_MODE_RISCV_SV39 0
+#define LIMINE_PAGING_MODE_RISCV_SV48 1
+#define LIMINE_PAGING_MODE_RISCV_SV57 2
+#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_RISCV_SV57
+#define LIMINE_PAGING_MODE_MIN LIMINE_PAGING_MODE_RISCV_SV39
+#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_RISCV_SV48
+#elif defined (__loongarch__) && (__loongarch_grlen == 64)
+#define LIMINE_PAGING_MODE_LOONGARCH64_4LVL 0
+#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_LOONGARCH64_4LVL
+#define LIMINE_PAGING_MODE_MIN LIMINE_PAGING_MODE_LOONGARCH64_4LVL
+#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_LOONGARCH64_4LVL
+#else
+#error Unknown architecture
+#endif
+
+struct limine_paging_mode_response {
+ uint64_t revision;
+ uint64_t mode;
+};
+
+struct limine_paging_mode_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_paging_mode_response *) response;
+ uint64_t mode;
+ uint64_t max_mode;
+ uint64_t min_mode;
+};
+
+/* 5-level paging */
+
+#define LIMINE_5_LEVEL_PAGING_REQUEST { LIMINE_COMMON_MAGIC, 0x94469551da9b3192, 0xebe5e86db7382888 }
+
+LIMINE_DEPRECATED_IGNORE_START
+
+struct LIMINE_DEPRECATED limine_5_level_paging_response {
+ uint64_t revision;
+};
+
+struct LIMINE_DEPRECATED limine_5_level_paging_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_5_level_paging_response *) response;
+};
+
+LIMINE_DEPRECATED_IGNORE_END
+
+/* SMP */
+
+#define LIMINE_SMP_REQUEST { LIMINE_COMMON_MAGIC, 0x95a67b819a1b857e, 0xa0b61b723b6a73e0 }
+
+struct limine_smp_info;
+
+typedef void (*limine_goto_address)(struct limine_smp_info *);
+
+#if defined (__x86_64__) || defined (__i386__)
+
+#define LIMINE_SMP_X2APIC (1 << 0)
+
+struct limine_smp_info {
+ uint32_t processor_id;
+ uint32_t lapic_id;
+ uint64_t reserved;
+ LIMINE_PTR(limine_goto_address) goto_address;
+ uint64_t extra_argument;
+};
+
+struct limine_smp_response {
+ uint64_t revision;
+ uint32_t flags;
+ uint32_t bsp_lapic_id;
+ uint64_t cpu_count;
+ LIMINE_PTR(struct limine_smp_info **) cpus;
+};
+
+#elif defined (__aarch64__)
+
+struct limine_smp_info {
+ uint32_t processor_id;
+ uint32_t reserved1;
+ uint64_t mpidr;
+ uint64_t reserved;
+ LIMINE_PTR(limine_goto_address) goto_address;
+ uint64_t extra_argument;
+};
+
+struct limine_smp_response {
+ uint64_t revision;
+ uint64_t flags;
+ uint64_t bsp_mpidr;
+ uint64_t cpu_count;
+ LIMINE_PTR(struct limine_smp_info **) cpus;
+};
+
+#elif defined (__riscv) && (__riscv_xlen == 64)
+
+struct limine_smp_info {
+ uint64_t processor_id;
+ uint64_t hartid;
+ uint64_t reserved;
+ LIMINE_PTR(limine_goto_address) goto_address;
+ uint64_t extra_argument;
+};
+
+struct limine_smp_response {
+ uint64_t revision;
+ uint64_t flags;
+ uint64_t bsp_hartid;
+ uint64_t cpu_count;
+ LIMINE_PTR(struct limine_smp_info **) cpus;
+};
+
+#elif defined (__loongarch__) && (__loongarch_grlen == 64)
+
+struct limine_smp_info {
+ uint64_t reserved;
+};
+
+struct limine_smp_response {
+ uint64_t cpu_count;
+ LIMINE_PTR(struct limine_smp_info **) cpus;
+};
+
+#else
+#error Unknown architecture
+#endif
+
+struct limine_smp_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_smp_response *) response;
+ uint64_t flags;
+};
+
+/* Memory map */
+
+#define LIMINE_MEMMAP_REQUEST { LIMINE_COMMON_MAGIC, 0x67cf3d9d378a806f, 0xe304acdfc50c3c62 }
+
+#define LIMINE_MEMMAP_USABLE 0
+#define LIMINE_MEMMAP_RESERVED 1
+#define LIMINE_MEMMAP_ACPI_RECLAIMABLE 2
+#define LIMINE_MEMMAP_ACPI_NVS 3
+#define LIMINE_MEMMAP_BAD_MEMORY 4
+#define LIMINE_MEMMAP_BOOTLOADER_RECLAIMABLE 5
+#define LIMINE_MEMMAP_KERNEL_AND_MODULES 6
+#define LIMINE_MEMMAP_FRAMEBUFFER 7
+
+struct limine_memmap_entry {
+ uint64_t base;
+ uint64_t length;
+ uint64_t type;
+};
+
+struct limine_memmap_response {
+ uint64_t revision;
+ uint64_t entry_count;
+ LIMINE_PTR(struct limine_memmap_entry **) entries;
+};
+
+struct limine_memmap_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_memmap_response *) response;
+};
+
+/* Entry point */
+
+#define LIMINE_ENTRY_POINT_REQUEST { LIMINE_COMMON_MAGIC, 0x13d86c035a1cd3e1, 0x2b0caa89d8f3026a }
+
+typedef void (*limine_entry_point)(void);
+
+struct limine_entry_point_response {
+ uint64_t revision;
+};
+
+struct limine_entry_point_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_entry_point_response *) response;
+ LIMINE_PTR(limine_entry_point) entry;
+};
+
+/* Kernel File */
+
+#define LIMINE_KERNEL_FILE_REQUEST { LIMINE_COMMON_MAGIC, 0xad97e90e83f1ed67, 0x31eb5d1c5ff23b69 }
+
+struct limine_kernel_file_response {
+ uint64_t revision;
+ LIMINE_PTR(struct limine_file *) kernel_file;
+};
+
+struct limine_kernel_file_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_kernel_file_response *) response;
+};
+
+/* Module */
+
+#define LIMINE_MODULE_REQUEST { LIMINE_COMMON_MAGIC, 0x3e7e279702be32af, 0xca1c4f3bd1280cee }
+
+#define LIMINE_INTERNAL_MODULE_REQUIRED (1 << 0)
+#define LIMINE_INTERNAL_MODULE_COMPRESSED (1 << 1)
+
+struct limine_internal_module {
+ LIMINE_PTR(const char *) path;
+ LIMINE_PTR(const char *) cmdline;
+ uint64_t flags;
+};
+
+struct limine_module_response {
+ uint64_t revision;
+ uint64_t module_count;
+ LIMINE_PTR(struct limine_file **) modules;
+};
+
+struct limine_module_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_module_response *) response;
+
+ /* Request revision 1 */
+ uint64_t internal_module_count;
+ LIMINE_PTR(struct limine_internal_module **) internal_modules;
+};
+
+/* RSDP */
+
+#define LIMINE_RSDP_REQUEST { LIMINE_COMMON_MAGIC, 0xc5e77b6b397e7b43, 0x27637845accdcf3c }
+
+struct limine_rsdp_response {
+ uint64_t revision;
+ LIMINE_PTR(void *) address;
+};
+
+struct limine_rsdp_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_rsdp_response *) response;
+};
+
+/* SMBIOS */
+
+#define LIMINE_SMBIOS_REQUEST { LIMINE_COMMON_MAGIC, 0x9e9046f11e095391, 0xaa4a520fefbde5ee }
+
+struct limine_smbios_response {
+ uint64_t revision;
+ LIMINE_PTR(void *) entry_32;
+ LIMINE_PTR(void *) entry_64;
+};
+
+struct limine_smbios_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_smbios_response *) response;
+};
+
+/* EFI system table */
+
+#define LIMINE_EFI_SYSTEM_TABLE_REQUEST { LIMINE_COMMON_MAGIC, 0x5ceba5163eaaf6d6, 0x0a6981610cf65fcc }
+
+struct limine_efi_system_table_response {
+ uint64_t revision;
+ LIMINE_PTR(void *) address;
+};
+
+struct limine_efi_system_table_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_efi_system_table_response *) response;
+};
+
+/* EFI memory map */
+
+#define LIMINE_EFI_MEMMAP_REQUEST { LIMINE_COMMON_MAGIC, 0x7df62a431d6872d5, 0xa4fcdfb3e57306c8 }
+
+struct limine_efi_memmap_response {
+ uint64_t revision;
+ LIMINE_PTR(void *) memmap;
+ uint64_t memmap_size;
+ uint64_t desc_size;
+ uint64_t desc_version;
+};
+
+struct limine_efi_memmap_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_efi_memmap_response *) response;
+};
+
+/* Boot time */
+
+#define LIMINE_BOOT_TIME_REQUEST { LIMINE_COMMON_MAGIC, 0x502746e184c088aa, 0xfbc5ec83e6327893 }
+
+struct limine_boot_time_response {
+ uint64_t revision;
+ int64_t boot_time;
+};
+
+struct limine_boot_time_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_boot_time_response *) response;
+};
+
+/* Kernel address */
+
+#define LIMINE_KERNEL_ADDRESS_REQUEST { LIMINE_COMMON_MAGIC, 0x71ba76863cc55f63, 0xb2644a48c516a487 }
+
+struct limine_kernel_address_response {
+ uint64_t revision;
+ uint64_t physical_base;
+ uint64_t virtual_base;
+};
+
+struct limine_kernel_address_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_kernel_address_response *) response;
+};
+
+/* Device Tree Blob */
+
+#define LIMINE_DTB_REQUEST { LIMINE_COMMON_MAGIC, 0xb40ddb48fb54bac7, 0x545081493f81ffb7 }
+
+struct limine_dtb_response {
+ uint64_t revision;
+ LIMINE_PTR(void *) dtb_ptr;
+};
+
+struct limine_dtb_request {
+ uint64_t id[4];
+ uint64_t revision;
+ LIMINE_PTR(struct limine_dtb_response *) response;
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
