:: commit 648e33afd153bdbf780ba123e45997428796395d

Mintsuki <mintsuki@protonmail.com> — 2025-09-15 18:47

(root commit)

Binary release v10.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..258f900b
Binary files /dev/null and b/BOOTAA64.EFI differ
diff --git a/BOOTIA32.EFI b/BOOTIA32.EFI
new file mode 100644
index 00000000..416f3db1
Binary files /dev/null and b/BOOTIA32.EFI differ
diff --git a/BOOTLOONGARCH64.EFI b/BOOTLOONGARCH64.EFI
new file mode 100644
index 00000000..dad0c369
Binary files /dev/null and b/BOOTLOONGARCH64.EFI differ
diff --git a/BOOTRISCV64.EFI b/BOOTRISCV64.EFI
new file mode 100644
index 00000000..f10aa0d1
Binary files /dev/null and b/BOOTRISCV64.EFI differ
diff --git a/BOOTX64.EFI b/BOOTX64.EFI
new file mode 100644
index 00000000..d0ef14f7
Binary files /dev/null and b/BOOTX64.EFI differ
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..3f9ab862
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,22 @@
+Copyright (C) 2019-2025 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..d4fc483d
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,46 @@
+.POSIX:
+
+SHELL=/bin/sh
+
+CC=cc
+CFLAGS=-g -O2 -pipe
+CPPFLAGS=
+LDFLAGS=
+LIBS=
+
+STRIP=strip
+INSTALL=./install-sh
+
+PREFIX=/usr/local
+
+.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) -std=c99 $(CPPFLAGS) $(LDFLAGS) $< $(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..3788e746
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..d2ef998f
--- /dev/null
+++ b/limine-bios-hdd.h
@@ -0,0 +1,1206 @@
+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, 0x36, 0x3e, 0x00, 0x00, 0x68, 0x00, 0x0b, 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, 0xff, 0x0a, 0x07, 0x00, 0xb9, 0xff, 0x0a, 0x07, 0x00, 0x81, 0xe9, 0xff,
+    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, 0x38, 0x06,
+    0x00, 0x00, 0x8b, 0x84, 0x24, 0x4c, 0x06, 0x00, 0x00, 0x8b, 0x8c, 0x24, 0x50, 0x06, 0x00, 0x00,
+    0x8d, 0x54, 0x24, 0x30, 0x89, 0x4a, 0xe4, 0x03, 0x8c, 0x24, 0x54, 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, 0x20, 0x85, 0xd2, 0x7e, 0x0a, 0x8b, 0x44, 0x24, 0x1c, 0x89, 0x44,
+    0x24, 0x04, 0xeb, 0x4a, 0x8b, 0x74, 0x24, 0x14, 0x8b, 0x44, 0x24, 0x18, 0x8b, 0x4c, 0x24, 0x1c,
+    0x89, 0x4c, 0x24, 0x04, 0x89, 0xd1, 0x39, 0xc6, 0x74, 0x1e, 0x8d, 0x56, 0x01, 0x89, 0x54, 0x24,
+    0x14, 0x0f, 0xb6, 0x36, 0xd3, 0xe6, 0x8b, 0x7c, 0x24, 0x04, 0x09, 0xf7, 0x89, 0x7c, 0x24, 0x04,
+    0x89, 0x7c, 0x24, 0x1c, 0x89, 0xd6, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x24, 0x01, 0x00, 0x00, 0x00,
+    0x8d, 0x51, 0x08, 0x89, 0x54, 0x24, 0x20, 0x83, 0xf9, 0xf9, 0x89, 0xd1, 0x7c, 0xc8, 0x8b, 0x6c,
+    0x24, 0x04, 0xd1, 0xed, 0x89, 0x6c, 0x24, 0x1c, 0x8d, 0x4a, 0xff, 0x89, 0x4c, 0x24, 0x20, 0x83,
+    0xf9, 0x01, 0x77, 0x41, 0x8b, 0x44, 0x24, 0x14, 0x8b, 0x74, 0x24, 0x18, 0x83, 0xc2, 0xf7, 0x8d,
+    0x4a, 0x08, 0x39, 0xf0, 0x74, 0x16, 0x8d, 0x78, 0x01, 0x89, 0x7c, 0x24, 0x14, 0x0f, 0xb6, 0x18,
+    0xd3, 0xe3, 0x09, 0xdd, 0x89, 0x6c, 0x24, 0x1c, 0x89, 0xf8, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x24,
+    0x01, 0x00, 0x00, 0x00, 0x83, 0xc2, 0x10, 0x89, 0x54, 0x24, 0x20, 0x83, 0xf9, 0xfa, 0x89, 0xca,
+    0x7c, 0xcd, 0x83, 0xc1, 0x08, 0x89, 0xee, 0x83, 0xe6, 0x03, 0xc1, 0xed, 0x02, 0x89, 0x6c, 0x24,
+    0x1c, 0x8d, 0x51, 0xfe, 0x89, 0x54, 0x24, 0x20, 0xb8, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x24, 0xb5,
+    0x28, 0x0a, 0x07, 0x00, 0x8b, 0x4c, 0x24, 0x14, 0x8b, 0x54, 0x24, 0x18, 0x29, 0xca, 0x83, 0xfa,
+    0x04, 0x0f, 0x8c, 0x48, 0x05, 0x00, 0x00, 0x0f, 0xb7, 0x19, 0x0f, 0xb7, 0x51, 0x02, 0x66, 0x31,
+    0xda, 0x66, 0x83, 0xfa, 0xff, 0x0f, 0x85, 0x34, 0x05, 0x00, 0x00, 0x83, 0xc1, 0x04, 0x89, 0x4c,
+    0x24, 0x14, 0x85, 0xdb, 0x74, 0x1d, 0x8b, 0x4c, 0x24, 0x14, 0x8b, 0x54, 0x24, 0x2c, 0x8d, 0x71,
+    0x01, 0x8d, 0x7a, 0x01, 0x4b, 0x89, 0x74, 0x24, 0x14, 0x8a, 0x09, 0x89, 0x7c, 0x24, 0x2c, 0x88,
+    0x0a, 0x75, 0xe3, 0x31, 0xc0, 0x89, 0x44, 0x24, 0x1c, 0x89, 0x44, 0x24, 0x20, 0xe9, 0xd8, 0x00,
+    0x00, 0x00, 0xb8, 0xe0, 0xff, 0xff, 0xff, 0x66, 0xc7, 0x44, 0x04, 0x50, 0x00, 0x00, 0x83, 0xc0,
+    0x02, 0x75, 0xf4, 0xc7, 0x44, 0x24, 0x3e, 0x18, 0x00, 0x98, 0x00, 0x66, 0xc7, 0x44, 0x24, 0x42,
+    0x70, 0x00, 0xb8, 0xe8, 0xff, 0xff, 0xff, 0x8d, 0x88, 0x18, 0x01, 0x00, 0x00, 0x66, 0x89, 0x8c,
+    0x44, 0x80, 0x00, 0x00, 0x00, 0x40, 0x75, 0xef, 0x31, 0xc0, 0x66, 0x89, 0x84, 0x44, 0x80, 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, 0xb0, 0x01, 0x00, 0x00, 0x40, 0x75, 0xef,
+    0xb8, 0x90, 0xff, 0xff, 0xff, 0x8d, 0x88, 0x00, 0x01, 0x00, 0x00, 0x66, 0x89, 0x8c, 0x44, 0x90,
+    0x02, 0x00, 0x00, 0x40, 0x75, 0xef, 0xc7, 0x84, 0x24, 0x90, 0x02, 0x00, 0x00, 0x1d, 0x01, 0x00,
+    0x00, 0xb8, 0xe0, 0xff, 0xff, 0xff, 0x66, 0xc7, 0x84, 0x04, 0xb4, 0x02, 0x00, 0x00, 0x00, 0x00,
+    0x83, 0xc0, 0x02, 0x75, 0xf1, 0x66, 0xc7, 0x84, 0x24, 0x9e, 0x02, 0x00, 0x00, 0x20, 0x00, 0x31,
+    0xc0, 0x66, 0x89, 0x84, 0x44, 0xb4, 0x02, 0x00, 0x00, 0x40, 0x83, 0xf8, 0x20, 0x75, 0xf2, 0xc7,
+    0x84, 0x24, 0xf4, 0x04, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x8d, 0x4c, 0x24, 0x14, 0x8d, 0x54,
+    0x24, 0x30, 0x8d, 0x84, 0x24, 0x94, 0x02, 0x00, 0x00, 0x50, 0xe8, 0x92, 0x04, 0x00, 0x00, 0x83,
+    0xc4, 0x04, 0x85, 0xc0, 0x0f, 0x85, 0x25, 0x04, 0x00, 0x00, 0xf6, 0x44, 0x24, 0x04, 0x01, 0x0f,
+    0x84, 0xed, 0xfd, 0xff, 0xff, 0xe9, 0xfd, 0x03, 0x00, 0x00, 0x83, 0xfa, 0x04, 0x77, 0x45, 0x89,
+    0xc8, 0x8b, 0x4c, 0x24, 0x14, 0x8b, 0x74, 0x24, 0x18, 0x83, 0xc0, 0xf6, 0x8d, 0x50, 0x08, 0x39,
+    0xf1, 0x74, 0x18, 0x8d, 0x79, 0x01, 0x89, 0x7c, 0x24, 0x14, 0x0f, 0xb6, 0x19, 0x89, 0xd1, 0xd3,
+    0xe3, 0x09, 0xdd, 0x89, 0x6c, 0x24, 0x1c, 0x89, 0xf9, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x24, 0x01,
+    0x00, 0x00, 0x00, 0x83, 0xc0, 0x10, 0x89, 0x44, 0x24, 0x20, 0x83, 0xfa, 0xfd, 0x89, 0xd0, 0x7c,
+    0xcb, 0x83, 0xc2, 0x08, 0x89, 0xee, 0xc1, 0xee, 0x05, 0x89, 0x74, 0x24, 0x1c, 0x8d, 0x5a, 0xfb,
+    0x89, 0x5c, 0x24, 0x20, 0x83, 0xfb, 0x04, 0x77, 0x47, 0x8b, 0x4c, 0x24, 0x14, 0x8b, 0x44, 0x24,
+    0x18, 0x89, 0x04, 0x24, 0x83, 0xc2, 0xf3, 0x8d, 0x5a, 0x08, 0x3b, 0x0c, 0x24, 0x74, 0x18, 0x8d,
+    0x41, 0x01, 0x89, 0x44, 0x24, 0x14, 0x0f, 0xb6, 0x39, 0x89, 0xd9, 0xd3, 0xe7, 0x09, 0xfe, 0x89,
+    0x74, 0x24, 0x1c, 0x89, 0xc1, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x24, 0x01, 0x00, 0x00, 0x00, 0x83,
+    0xc2, 0x10, 0x89, 0x54, 0x24, 0x20, 0x83, 0xfb, 0xfd, 0x89, 0xda, 0x7c, 0xca, 0x83, 0xc3, 0x08,
+    0x89, 0xf0, 0xc1, 0xe8, 0x05, 0x89, 0x04, 0x24, 0x89, 0x44, 0x24, 0x1c, 0x8d, 0x43, 0xfb, 0x89,
+    0x44, 0x24, 0x20, 0x83, 0xf8, 0x03, 0x77, 0x51, 0x89, 0x74, 0x24, 0x08, 0x8b, 0x7c, 0x24, 0x14,
+    0x8b, 0x74, 0x24, 0x18, 0x83, 0xc3, 0xf3, 0x8d, 0x43, 0x08, 0x39, 0xf7, 0x74, 0x1e, 0x8d, 0x57,
+    0x01, 0x89, 0x54, 0x24, 0x14, 0x0f, 0xb6, 0x3f, 0x89, 0xc1, 0xd3, 0xe7, 0x8b, 0x0c, 0x24, 0x09,
+    0xf9, 0x89, 0x0c, 0x24, 0x89, 0x4c, 0x24, 0x1c, 0x89, 0xd7, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x24,
+    0x01, 0x00, 0x00, 0x00, 0x83, 0xc3, 0x10, 0x89, 0x5c, 0x24, 0x20, 0x83, 0xf8, 0xfc, 0x89, 0xc3,
+    0x7c, 0xc5, 0x83, 0xc0, 0x08, 0x8b, 0x74, 0x24, 0x08, 0x83, 0xe5, 0x1f, 0x8b, 0x14, 0x24, 0xc1,
+    0xea, 0x04, 0x89, 0x54, 0x24, 0x1c, 0x83, 0xc0, 0xfc, 0x89, 0x44, 0x24, 0x20, 0x83, 0xfd, 0x1d,
+    0xc7, 0x44, 0x24, 0x10, 0xfd, 0xff, 0xff, 0xff, 0x0f, 0x87, 0xdd, 0x02, 0x00, 0x00, 0x83, 0xe6,
+    0x1f, 0x83, 0xfe, 0x1d, 0x0f, 0x87, 0xd1, 0x02, 0x00, 0x00, 0x81, 0xc5, 0x01, 0x01, 0x00, 0x00,
+    0x89, 0x6c, 0x24, 0x0c, 0x46, 0x89, 0x74, 0x24, 0x08, 0x83, 0x24, 0x24, 0x0f, 0xb9, 0xed, 0xff,
+    0xff, 0xff, 0xc6, 0x84, 0x0c, 0x0b, 0x05, 0x00, 0x00, 0x00, 0x41, 0x75, 0xf5, 0x83, 0x04, 0x24,
+    0x03, 0x8b, 0x5c, 0x24, 0x14, 0x8b, 0x74, 0x24, 0x18, 0x31, 0xed, 0x83, 0xf8, 0x02, 0x7f, 0x36,
+    0x89, 0xdf, 0x39, 0xf7, 0x74, 0x18, 0x8d, 0x5f, 0x01, 0x89, 0x5c, 0x24, 0x14, 0x0f, 0xb6, 0x3f,
+    0x89, 0xc1, 0xd3, 0xe7, 0x09, 0xfa, 0x89, 0x54, 0x24, 0x1c, 0x89, 0xdf, 0xeb, 0x08, 0xc7, 0x44,
+    0x24, 0x24, 0x01, 0x00, 0x00, 0x00, 0x8d, 0x48, 0x08, 0x89, 0x4c, 0x24, 0x20, 0x83, 0xf8, 0xfb,
+    0x89, 0xc8, 0x7c, 0xce, 0xeb, 0x02, 0x89, 0xc1, 0x89, 0xd0, 0xc1, 0xe8, 0x03, 0x89, 0x44, 0x24,
+    0x1c, 0x83, 0xc1, 0xfd, 0x89, 0x4c, 0x24, 0x20, 0x80, 0xe2, 0x07, 0x0f, 0xb6, 0xbd, 0xec, 0x0a,
+    0x07, 0x00, 0x88, 0x94, 0x3c, 0xf8, 0x04, 0x00, 0x00, 0x3b, 0x2c, 0x24, 0x8d, 0x6d, 0x01, 0x89,
+    0xc2, 0x89, 0xc8, 0x75, 0x96, 0x8d, 0x4c, 0x24, 0x30, 0x8d, 0x94, 0x24, 0xf8, 0x04, 0x00, 0x00,
+    0x6a, 0x13, 0xe8, 0x08, 0x04, 0x00, 0x00, 0x83, 0xc4, 0x04, 0x85, 0xc0, 0x0f, 0x85, 0x15, 0x02,
+    0x00, 0x00, 0x83, 0xbc, 0x24, 0x90, 0x02, 0x00, 0x00, 0xff, 0x0f, 0x84, 0x0b, 0x02, 0x00, 0x00,
+    0x8b, 0x5c, 0x24, 0x0c, 0x8b, 0x44, 0x24, 0x08, 0x8d, 0x34, 0x18, 0x31, 0xff, 0x8d, 0x4c, 0x24,
+    0x14, 0x8d, 0x54, 0x24, 0x30, 0xe8, 0x82, 0x03, 0x00, 0x00, 0x3b, 0x84, 0x24, 0x90, 0x02, 0x00,
+    0x00, 0x0f, 0x8f, 0xe4, 0x01, 0x00, 0x00, 0x66, 0x83, 0xf8, 0x12, 0x0f, 0x84, 0xb4, 0x00, 0x00,
+    0x00, 0x83, 0xf8, 0x11, 0x74, 0x61, 0x83, 0xf8, 0x10, 0x0f, 0x85, 0xf0, 0x00, 0x00, 0x00, 0x85,
+    0xff, 0x0f, 0x84, 0xc4, 0x01, 0x00, 0x00, 0x8b, 0x6c, 0x24, 0x20, 0x83, 0xfd, 0x02, 0x0f, 0x8d,
+    0x1a, 0x01, 0x00, 0x00, 0x8b, 0x5c, 0x24, 0x14, 0x8b, 0x44, 0x24, 0x18, 0x8b, 0x54, 0x24, 0x1c,
+    0x89, 0xe9, 0x39, 0xc3, 0x74, 0x16, 0x8d, 0x6b, 0x01, 0x89, 0x6c, 0x24, 0x14, 0x0f, 0xb6, 0x1b,
+    0xd3, 0xe3, 0x09, 0xda, 0x89, 0x54, 0x24, 0x1c, 0x89, 0xeb, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x24,
+    0x01, 0x00, 0x00, 0x00, 0x8d, 0x69, 0x08, 0x89, 0x6c, 0x24, 0x20, 0x83, 0xf9, 0xfa, 0x89, 0xe9,
+    0x7c, 0xd0, 0xe9, 0xdb, 0x00, 0x00, 0x00, 0x8b, 0x5c, 0x24, 0x20, 0x83, 0xfb, 0x03, 0x0f, 0x8d,
+    0x90, 0x00, 0x00, 0x00, 0x8b, 0x6c, 0x24, 0x14, 0x8b, 0x54, 0x24, 0x18, 0x8b, 0x44, 0x24, 0x1c,
+    0x89, 0xd9, 0x39, 0xd5, 0x74, 0x17, 0x8d, 0x5d, 0x01, 0x89, 0x5c, 0x24, 0x14, 0x0f, 0xb6, 0x6d,
+    0x00, 0xd3, 0xe5, 0x09, 0xe8, 0x89, 0x44, 0x24, 0x1c, 0x89, 0xdd, 0xeb, 0x08, 0xc7, 0x44, 0x24,
+    0x24, 0x01, 0x00, 0x00, 0x00, 0x8d, 0x59, 0x08, 0x89, 0x5c, 0x24, 0x20, 0x83, 0xf9, 0xfb, 0x89,
+    0xd9, 0x7c, 0xcf, 0xeb, 0x53, 0x8b, 0x5c, 0x24, 0x20, 0x83, 0xfb, 0x07, 0x7d, 0x62, 0x8b, 0x6c,
+    0x24, 0x14, 0x8b, 0x54, 0x24, 0x18, 0x8b, 0x44, 0x24, 0x1c, 0x89, 0xd9, 0x39, 0xd5, 0x74, 0x17,
+    0x8d, 0x5d, 0x01, 0x89, 0x5c, 0x24, 0x14, 0x0f, 0xb6, 0x6d, 0x00, 0xd3, 0xe5, 0x09, 0xe8, 0x89,
+    0x44, 0x24, 0x1c, 0x89, 0xdd, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x24, 0x01, 0x00, 0x00, 0x00, 0x8d,
+    0x59, 0x08, 0x89, 0x5c, 0x24, 0x20, 0x83, 0xf9, 0xff, 0x89, 0xd9, 0x7c, 0xcf, 0xeb, 0x25, 0x31,
+    0xc9, 0x41, 0xeb, 0x63, 0x8b, 0x44, 0x24, 0x1c, 0x89, 0xc1, 0x83, 0xe1, 0x07, 0xc1, 0xe8, 0x03,
+    0x89, 0x44, 0x24, 0x1c, 0x83, 0xc3, 0xfd, 0x89, 0x5c, 0x24, 0x20, 0x83, 0xc1, 0x03, 0xeb, 0x1a,
+    0x8b, 0x44, 0x24, 0x1c, 0x89, 0xc1, 0x83, 0xe1, 0x7f, 0xc1, 0xe8, 0x07, 0x89, 0x44, 0x24, 0x1c,
+    0x83, 0xc3, 0xf9, 0x89, 0x5c, 0x24, 0x20, 0x83, 0xc1, 0x0b, 0x31, 0xc0, 0xeb, 0x25, 0x8b, 0x54,
+    0x24, 0x1c, 0x8d, 0x84, 0x24, 0xf8, 0x04, 0x00, 0x00, 0x8a, 0x44, 0x07, 0xff, 0x89, 0xd1, 0x83,
+    0xe1, 0x03, 0xc1, 0xea, 0x02, 0x89, 0x54, 0x24, 0x1c, 0x83, 0xc5, 0xfe, 0x89, 0x6c, 0x24, 0x20,
+    0x83, 0xc1, 0x03, 0x8b, 0x5c, 0x24, 0x0c, 0x89, 0xf2, 0x29, 0xfa, 0x39, 0xd1, 0x77, 0x6c, 0x88,
+    0x84, 0x3c, 0xf8, 0x04, 0x00, 0x00, 0x47, 0x49, 0x75, 0xf5, 0x39, 0xf7, 0x0f, 0x82, 0x5b, 0xfe,
+    0xff, 0xff, 0x80, 0xbc, 0x24, 0xf8, 0x05, 0x00, 0x00, 0x00, 0x74, 0x4f, 0x8d, 0x4c, 0x24, 0x30,
+    0x8d, 0x94, 0x24, 0xf8, 0x04, 0x00, 0x00, 0x53, 0xe8, 0x22, 0x02, 0x00, 0x00, 0x83, 0xc4, 0x04,
+    0x85, 0xc0, 0x75, 0x33, 0x8d, 0x94, 0x1c, 0xf8, 0x04, 0x00, 0x00, 0x8d, 0x8c, 0x24, 0x94, 0x02,
+    0x00, 0x00, 0xff, 0x74, 0x24, 0x08, 0xe8, 0x04, 0x02, 0x00, 0x00, 0x83, 0xc4, 0x04, 0x85, 0xc0,
+    0x75, 0x1d, 0xe9, 0xd3, 0xfb, 0xff, 0xff, 0x31, 0xc0, 0x83, 0x7c, 0x24, 0x24, 0x00, 0x0f, 0x94,
+    0xc0, 0x8d, 0x44, 0x40, 0xfd, 0xeb, 0x08, 0x89, 0x44, 0x24, 0x10, 0x8b, 0x44, 0x24, 0x10, 0x81,
+    0xc4, 0x38, 0x06, 0x00, 0x00, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, 0x55, 0x53, 0x57, 0x56, 0x89, 0xce,
+    0x8b, 0x59, 0x0c, 0x39, 0xd3, 0x7d, 0x2d, 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, 0x07, 0xc7, 0x46, 0x10, 0x01, 0x00, 0x00, 0x00, 0x83, 0xc3, 0x08, 0x89, 0x5e, 0x0c,
+    0x39, 0xd3, 0x7c, 0xd8, 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, 0x1b, 0x01, 0x00,
+    0x00, 0x83, 0x7f, 0x10, 0x00, 0x74, 0x0d, 0xb8, 0xfd, 0xff, 0xff, 0xff, 0x83, 0xc4, 0x08, 0x5e,
+    0x5f, 0x5b, 0x5d, 0xc3, 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, 0xdc, 0x00, 0x00, 0x00, 0x3b, 0x85, 0x60, 0x02, 0x00, 0x00, 0x7f,
+    0xc6, 0x3d, 0x1d, 0x01, 0x00, 0x00, 0x77, 0xbf, 0x8b, 0x4c, 0x24, 0x1c, 0x83, 0xb9, 0x60, 0x02,
+    0x00, 0x00, 0xff, 0x74, 0xb2, 0x0f, 0xb7, 0x8c, 0x00, 0x54, 0x08, 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, 0x38, 0x0a, 0x07, 0x00, 0x89, 0xf9, 0xe8, 0x1a, 0xff, 0xff, 0xff,
+    0x89, 0xc6, 0x89, 0xf9, 0x8b, 0x5c, 0x24, 0x1c, 0x89, 0xda, 0xe8, 0x8d, 0x00, 0x00, 0x00, 0x3b,
+    0x83, 0x60, 0x02, 0x00, 0x00, 0x0f, 0x8f, 0x6c, 0xff, 0xff, 0xff, 0x89, 0xc1, 0x83, 0xf8, 0x1d,
+    0x0f, 0x87, 0x61, 0xff, 0xff, 0xff, 0x0f, 0xb7, 0xac, 0x09, 0xb0, 0x0a, 0x07, 0x00, 0x31, 0xc0,
+    0x83, 0xf9, 0x04, 0x72, 0x0e, 0x0f, 0xb6, 0x91, 0x92, 0x0a, 0x07, 0x00, 0x89, 0xf9, 0xe8, 0xd7,
+    0xfe, 0xff, 0xff, 0x01, 0xe8, 0x8b, 0x4f, 0x18, 0x89, 0xca, 0x2b, 0x57, 0x14, 0x39, 0xd0, 0x0f,
+    0x8f, 0x32, 0xff, 0xff, 0xff, 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, 0x89, 0xf9, 0x89,
+    0xea, 0xe8, 0x16, 0x00, 0x00, 0x00, 0x83, 0x7f, 0x10, 0x00, 0x0f, 0x84, 0x07, 0xff, 0xff, 0xff,
+    0xe9, 0xf2, 0xfe, 0xff, 0xff, 0x31, 0xc0, 0xe9, 0xf0, 0xfe, 0xff, 0xff, 0x55, 0x53, 0x57, 0x56,
+    0x50, 0x89, 0xd5, 0x89, 0xcb, 0x31, 0xd2, 0x42, 0xe8, 0x6d, 0xfe, 0xff, 0xff, 0x89, 0xc7, 0x0f,
+    0xb7, 0x45, 0x02, 0x31, 0xf6, 0x39, 0xc7, 0x89, 0x2c, 0x24, 0x72, 0x21, 0x83, 0xc5, 0x04, 0x31,
+    0xf6, 0x01, 0xc6, 0x29, 0xc7, 0x89, 0xd9, 0x31, 0xd2, 0x42, 0xe8, 0x4b, 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, 0x24, 0x8b, 0x7c, 0x24, 0x38, 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, 0x72, 0x01, 0xdb, 0x66, 0x89,
+    0x7c, 0x2c, 0x24, 0x01, 0xf7, 0x83, 0xc5, 0x02, 0x75, 0xe9, 0x83, 0xff, 0x02, 0x0f, 0x93, 0x44,
+    0x24, 0x03, 0x85, 0xdb, 0x0f, 0x95, 0xc3, 0x84, 0x5c, 0x24, 0x03, 0x75, 0x51, 0x83, 0xff, 0x01,
+    0x75, 0x07, 0x66, 0x83, 0x79, 0x02, 0x01, 0x75, 0x45, 0x8b, 0x5c, 0x24, 0x38, 0x85, 0xdb, 0x74,
+    0x25, 0x31, 0xc0, 0x0f, 0xb6, 0x34, 0x02, 0x85, 0xf6, 0x74, 0x16, 0x0f, 0xb7, 0x5c, 0x74, 0x04,
+    0x8d, 0x6b, 0x01, 0x66, 0x89, 0x6c, 0x74, 0x04, 0x66, 0x89, 0x44, 0x59, 0x20, 0x8b, 0x5c, 0x24,
+    0x38, 0x40, 0x39, 0xc3, 0x75, 0xdd, 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,
+    0x24, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, 0x00, 0x00, 0x14, 0x02, 0x07, 0x00, 0x72, 0x02, 0x07, 0x00,
+    0x5a, 0x03, 0x07, 0x00, 0x6f, 0x07, 0x07, 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,
+    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x85, 0x7c, 0x0d, 0x5c, 0x13, 0x57,
+    0xb6, 0xf8, 0x0c, 0x04, 0x0d, 0x18, 0x9d, 0xa8, 0x68, 0x41, 0x51, 0x63, 0xc5, 0xae, 0x6c, 0xad,
+    0x92, 0x6a, 0x5b, 0x53, 0xb5, 0xe5, 0x2b, 0x80, 0xd6, 0x68, 0x20, 0x12, 0xda, 0xb5, 0x94, 0x52,
+    0x21, 0x0d, 0x54, 0x85, 0xc2, 0x8c, 0x1f, 0x55, 0x2c, 0x38, 0xe4, 0x95, 0xcb, 0x74, 0xfa, 0xba,
+    0xfd, 0x78, 0xaf, 0xfb, 0xd1, 0xdd, 0x76, 0xdb, 0xee, 0xeb, 0x6e, 0xb7, 0x4f, 0xbb, 0xfb, 0x54,
+    0x6c, 0xfd, 0x48, 0xc0, 0x0d, 0xa0, 0xae, 0x82, 0xfa, 0x14, 0x3f, 0x9e, 0xd2, 0x96, 0xb5, 0x83,
+    0xe1, 0x6d, 0x83, 0xb8, 0x80, 0x68, 0xc9, 0xff, 0x9c, 0x3b, 0x09, 0x42, 0xbb, 0xfb, 0xfe, 0xfe,
+    0x4c, 0x32, 0xf7, 0xde, 0x73, 0xcf, 0x3d, 0xf7, 0xdc, 0xf3, 0x79, 0xef, 0x1d, 0xee, 0x24, 0xba,
+    0x8f, 0x7c, 0xfc, 0x80, 0x86, 0x39, 0xe0, 0x24, 0x1a, 0xa6, 0xba, 0x0b, 0x1f, 0x7b, 0x7f, 0xcf,
+    0xb1, 0x53, 0x3e, 0xf1, 0x33, 0xcc, 0xf5, 0x39, 0xf0, 0x15, 0xc3, 0xd4, 0x1b, 0x18, 0x86, 0x79,
+    0xad, 0xfd, 0x35, 0xf7, 0x6b, 0x1d, 0xaf, 0x29, 0xaf, 0xb5, 0x76, 0xad, 0xd2, 0x33, 0xcc, 0x89,
+    0xd0, 0xbf, 0x1c, 0xf2, 0x57, 0xbb, 0xd8, 0x3d, 0x86, 0x9c, 0x73, 0x34, 0x99, 0xfb, 0x02, 0xe1,
+    0x4d, 0xe6, 0x01, 0x00, 0x66, 0x64, 0x73, 0x1f, 0x39, 0x36, 0x78, 0xe7, 0x20, 0xb3, 0x83, 0x61,
+    0x8e, 0xe0, 0xd7, 0x01, 0x26, 0x8c, 0x61, 0x7a, 0x3f, 0xe4, 0xd8, 0x98, 0x12, 0xad, 0x73, 0x1b,
+    0xa0, 0x3d, 0x5e, 0xaf, 0x1f, 0x81, 0x93, 0x33, 0xb8, 0xe3, 0x87, 0xb8, 0x7b, 0xdd, 0x8e, 0xfa,
+    0x77, 0xa0, 0xad, 0x84, 0xb1, 0x1e, 0x37, 0xba, 0xef, 0xb6, 0xde, 0x2e, 0x61, 0x9c, 0xcc, 0x8e,
+    0xe3, 0x8f, 0x30, 0x8a, 0x85, 0x45, 0xec, 0x4c, 0x80, 0xb1, 0xd6, 0x6a, 0x54, 0x1a, 0x38, 0x76,
+    0xc6, 0x20, 0x92, 0x7a, 0x12, 0xbe, 0xb4, 0xcc, 0xf7, 0x91, 0x72, 0x9f, 0xfb, 0x19, 0x40, 0x7b,
+    0xfd, 0x3a, 0xb4, 0x8e, 0xc2, 0x78, 0xd3, 0xf7, 0x5d, 0x20, 0x1c, 0x51, 0xd5, 0xa5, 0xc5, 0x6b,
+    0x7e, 0x23, 0xf6, 0x30, 0x8c, 0x94, 0x16, 0xaf, 0xfd, 0xe0, 0xa6, 0xfa, 0xa0, 0xfb, 0x60, 0x00,
+    0x1e, 0x38, 0x36, 0xe2, 0x0e, 0xfd, 0x19, 0xaf, 0xb9, 0x81, 0x3f, 0x33, 0x74, 0xf0, 0x63, 0xb3,
+    0xe7, 0xe6, 0x5c, 0x5f, 0xda, 0xf3, 0x8f, 0x06, 0xa3, 0x33, 0xb8, 0x9e, 0xd3, 0x43, 0x87, 0x6a,
+    0x7d, 0xd8, 0x41, 0xee, 0xf3, 0xf7, 0x3c, 0xec, 0x90, 0xee, 0x1b, 0xe8, 0xe1, 0x7e, 0xc7, 0xbd,
+    0x3f, 0x76, 0x96, 0xe3, 0x5d, 0x47, 0x9e, 0x23, 0xdf, 0xf1, 0x8c, 0xe3, 0x27, 0x8e, 0xa7, 0x1c,
+    0xeb, 0x1c, 0x4f, 0x62, 0x9b, 0xbf, 0xe7, 0xf6, 0x5f, 0x98, 0xc1, 0xbb, 0xb0, 0x37, 0x7b, 0x1c,
+    0xcf, 0xcb, 0x85, 0xf1, 0xf3, 0x1c, 0x56, 0x87, 0xcd, 0x91, 0xe5, 0xc8, 0x76, 0xd8, 0x1d, 0xb9,
+    0x8e, 0x1c, 0xc7, 0x2f, 0x67, 0x8e, 0xe1, 0xde, 0xe3, 0x3e, 0x56, 0x7b, 0x3c, 0xec, 0xe0, 0xd8,
+    0xa9, 0x77, 0xe8, 0xcf, 0x4c, 0xcd, 0x0d, 0x18, 0x58, 0xc7, 0xe2, 0xc0, 0x27, 0x7b, 0x62, 0x18,
+    0x07, 0xac, 0xd5, 0x5d, 0x9a, 0xf2, 0xf2, 0x9f, 0x59, 0xd7, 0xf8, 0xfa, 0xe8, 0x7f, 0xcc, 0xff,
+    0xf1, 0x4f, 0xe5, 0x48, 0xe8, 0xdf, 0x2f, 0x17, 0x38, 0x02, 0x63, 0x26, 0xdd, 0x78, 0x77, 0x41,
+    0x60, 0xc1, 0xd4, 0x1b, 0xd2, 0x14, 0x14, 0x02, 0x32, 0x65, 0x2a, 0xb0, 0xa0, 0x29, 0x02, 0x9f,
+    0xa7, 0xc1, 0x93, 0xb4, 0x36, 0x5e, 0xd3, 0x14, 0x31, 0xe9, 0x86, 0xda, 0x01, 0xf8, 0xb5, 0xa4,
+    0x97, 0xf2, 0x2b, 0x89, 0xfe, 0xcc, 0xc8, 0xec, 0x0d, 0xf2, 0xeb, 0x85, 0x1b, 0xff, 0x9c, 0x5f,
+    0xae, 0x1b, 0xdf, 0x5b, 0x1a, 0xef, 0x98, 0xd5, 0xbd, 0x8c, 0x77, 0x4c, 0x36, 0x7e, 0xd9, 0x7b,
+    0x19, 0x87, 0x69, 0xea, 0xa4, 0x1b, 0xfc, 0x02, 0x64, 0xc6, 0x7f, 0xb1, 0x89, 0xee, 0xbf, 0x4c,
+    0x45, 0xf6, 0xf1, 0x5d, 0x46, 0x78, 0xfa, 0x4d, 0x76, 0x6f, 0xed, 0x7d, 0xf6, 0xde, 0x7a, 0x26,
+    0xec, 0x2f, 0x53, 0x3f, 0xd6, 0xf0, 0x51, 0xd8, 0x53, 0x53, 0x05, 0x3d, 0x9f, 0x1d, 0xa4, 0x3c,
+    0x5a, 0xd2, 0x4b, 0x79, 0x94, 0xd4, 0xcb, 0x19, 0x1a, 0xab, 0x8e, 0x03, 0x93, 0x1a, 0xaf, 0xf7,
+    0xde, 0x00, 0x26, 0x7d, 0x01, 0x4c, 0xba, 0xf4, 0x5a, 0xe3, 0x6b, 0x5f, 0xbf, 0xe6, 0x7b, 0xed,
+    0x0c, 0x32, 0x49, 0xa2, 0xf3, 0x22, 0x74, 0x8e, 0x55, 0xcb, 0x61, 0x50, 0x86, 0xe1, 0xa7, 0x07,
+    0x1e, 0x02, 0x3a, 0x98, 0xc0, 0x43, 0xd9, 0xf4, 0x1b, 0x2b, 0x95, 0x23, 0x0a, 0xc3, 0x88, 0x47,
+    0x75, 0x8d, 0x46, 0x77, 0xe3, 0xff, 0xcd, 0x3b, 0xfc, 0xa7, 0xea, 0x07, 0x48, 0x93, 0xe6, 0x03,
+    0xe6, 0x26, 0xc3, 0x34, 0x02, 0x7b, 0x34, 0x37, 0x29, 0x7b, 0x74, 0xf4, 0x67, 0x46, 0xf4, 0x4d,
+    0x95, 0x3d, 0xf2, 0x86, 0xf8, 0xe8, 0xeb, 0xaf, 0xf5, 0xfe, 0x73, 0x16, 0x7d, 0xdc, 0xab, 0x8a,
+    0x54, 0xa8, 0xe9, 0x76, 0x60, 0xb3, 0x26, 0xb0, 0x59, 0x1b, 0xd8, 0xcc, 0x04, 0x66, 0x32, 0x37,
+    0xc5, 0xa3, 0x63, 0x06, 0x17, 0xe0, 0x74, 0x35, 0x37, 0xf1, 0x67, 0xa6, 0xee, 0xe6, 0xdd, 0xe9,
+    0x7e, 0xd5, 0xfb, 0xfd, 0xe9, 0xce, 0x0d, 0x04, 0x18, 0x66, 0x84, 0x60, 0xfc, 0x73, 0x39, 0x00,
+    0xcd, 0xb6, 0xe5, 0x82, 0x6e, 0xeb, 0x24, 0x73, 0xb4, 0x54, 0xa9, 0x97, 0x72, 0x74, 0x52, 0x9e,
+    0x56, 0x12, 0x62, 0x5c, 0xa7, 0xf9, 0x1f, 0xbb, 0x02, 0x7c, 0x92, 0xcb, 0xcd, 0xbf, 0xc0, 0x1d,
+    0x72, 0x8b, 0xfe, 0x59, 0xdc, 0xa1, 0x63, 0x62, 0xcf, 0xac, 0x84, 0x66, 0x71, 0xc0, 0xc0, 0xed,
+    0xfa, 0x3d, 0x74, 0x75, 0xf5, 0xf1, 0x31, 0x64, 0x26, 0xb1, 0x6b, 0x7c, 0x13, 0x01, 0x6a, 0x1b,
+    0x14, 0x23, 0xc9, 0xcc, 0xa6, 0x74, 0x0d, 0xa2, 0x35, 0x5e, 0x32, 0x9e, 0xee, 0x6a, 0x03, 0x3d,
+    0x76, 0xb9, 0xb9, 0x9a, 0x7a, 0x04, 0xbe, 0xc4, 0xd5, 0x5c, 0x45, 0x9b, 0x91, 0x19, 0x70, 0x35,
+    0x73, 0xae, 0x9b, 0x6a, 0xff, 0xb1, 0xb3, 0xdb, 0x00, 0xc3, 0x6a, 0x0d, 0x77, 0xb0, 0xf9, 0xcc,
+    0x75, 0x72, 0xc6, 0x77, 0x4c, 0x5e, 0x13, 0x70, 0x9d, 0xe2, 0x5c, 0x92, 0xda, 0x3c, 0x6e, 0xf6,
+    0x05, 0x32, 0x21, 0x88, 0x51, 0x0c, 0xb0, 0x5c, 0xcd, 0xcb, 0x80, 0x91, 0x3b, 0x78, 0x8a, 0xb4,
+    0x9e, 0x51, 0xb8, 0x4f, 0xcf, 0x90, 0x86, 0xae, 0x4d, 0x50, 0x41, 0xda, 0x8d, 0xa7, 0xfb, 0xfb,
+    0x49, 0x9b, 0xf1, 0xb4, 0xab, 0x8f, 0x34, 0x72, 0x35, 0x3f, 0xc1, 0xba, 0x50, 0xb7, 0xae, 0x55,
+    0x58, 0xf2, 0x26, 0x35, 0x99, 0xbb, 0x29, 0x96, 0x01, 0x03, 0xbf, 0x9a, 0x98, 0xfd, 0x7b, 0x67,
+    0x11, 0xff, 0xbc, 0x3f, 0x93, 0xf6, 0xda, 0xae, 0x33, 0x1d, 0xc4, 0xac, 0x90, 0x73, 0xe4, 0xbc,
+    0x64, 0xf6, 0xd7, 0x7a, 0xce, 0x7c, 0x0b, 0x35, 0xd7, 0x88, 0xe7, 0x8c, 0x2f, 0xf2, 0x4a, 0xd7,
+    0x6f, 0xb1, 0xbf, 0x0e, 0x87, 0x3c, 0xd4, 0x34, 0x92, 0x01, 0xee, 0xd9, 0x77, 0xb1, 0x09, 0x45,
+    0xe4, 0x5c, 0x93, 0xd9, 0x8f, 0x32, 0x65, 0x0c, 0xf8, 0x5e, 0x22, 0x1e, 0xd2, 0x0a, 0xd4, 0xf4,
+    0x90, 0x46, 0x57, 0x1f, 0x57, 0x33, 0x30, 0x14, 0x08, 0x00, 0x7f, 0x9a, 0xc6, 0x50, 0x4a, 0xae,
+    0x43, 0x89, 0x3b, 0xd4, 0x0c, 0x38, 0xb8, 0x43, 0x0d, 0x80, 0x2f, 0xc1, 0x23, 0xde, 0x9a, 0xc5,
+    0x89, 0x7b, 0xa1, 0x5a, 0x4e, 0x66, 0xfb, 0xda, 0xc8, 0x15, 0x18, 0x59, 0x50, 0xc8, 0x79, 0x18,
+    0xfe, 0x5b, 0xa0, 0x11, 0x66, 0x18, 0x1c, 0xc7, 0x37, 0x03, 0x8a, 0xc4, 0xc3, 0x89, 0x04, 0x0a,
+    0x7d, 0x17, 0x46, 0x01, 0x22, 0x1f, 0xae, 0x48, 0x79, 0x8a, 0xb1, 0x45, 0xca, 0xf1, 0x4b, 0xe6,
+    0x6e, 0x92, 0xe3, 0xe7, 0x3e, 0xec, 0x67, 0xb9, 0x0f, 0xaf, 0xc0, 0xa7, 0x91, 0x25, 0x79, 0xdd,
+    0xac, 0x3b, 0xb2, 0x99, 0x0c, 0xf6, 0x9f, 0x26, 0x3d, 0xfd, 0x6d, 0x52, 0x9e, 0x9e, 0xbd, 0x20,
+    0x59, 0xa2, 0x27, 0x1e, 0x23, 0x6d, 0x9e, 0xae, 0x59, 0x9e, 0xc1, 0x59, 0xe4, 0xcc, 0x9c, 0xbc,
+    0xe8, 0x39, 0x39, 0xfa, 0x84, 0x73, 0xd0, 0x3f, 0xf6, 0xaa, 0x94, 0xd7, 0xbd, 0x52, 0xf8, 0x02,
+    0x7b, 0xb2, 0x6e, 0x29, 0x07, 0xc5, 0x20, 0x82, 0x3c, 0x48, 0x5e, 0xd2, 0x88, 0x1d, 0x43, 0x91,
+    0x1e, 0x72, 0x91, 0x1c, 0x27, 0xed, 0xa0, 0x1b, 0xcf, 0xe4, 0xaf, 0xcb, 0x6b, 0x24, 0x5e, 0x20,
+    0xa5, 0x1d, 0xf9, 0xd7, 0x4d, 0x80, 0xba, 0x2a, 0x4f, 0x07, 0xd2, 0xe2, 0x81, 0x85, 0x3c, 0xd7,
+    0xe5, 0x87, 0x49, 0x05, 0x45, 0xab, 0x73, 0x40, 0xec, 0x8e, 0x91, 0xcc, 0x3a, 0x18, 0x95, 0x9c,
+    0xf4, 0xfc, 0x6d, 0x16, 0x39, 0x06, 0xa3, 0x1a, 0xdb, 0x16, 0xe5, 0xe8, 0xd9, 0x1b, 0x62, 0x1b,
+    0xac, 0x0d, 0xd6, 0xf5, 0x13, 0x3e, 0x5e, 0x03, 0x8f, 0x43, 0xb3, 0x8c, 0x7e, 0x10, 0x40, 0x63,
+    0x2f, 0x7b, 0x5b, 0x6c, 0x65, 0xe4, 0x1d, 0xf1, 0xda, 0xdc, 0xac, 0x6c, 0xab, 0x4d, 0xc9, 0xf9,
+    0x2e, 0x10, 0x10, 0x8f, 0x46, 0xcb, 0x60, 0xbe, 0x25, 0xab, 0xc6, 0x78, 0x63, 0x51, 0x62, 0x38,
+    0x74, 0x10, 0x4f, 0x33, 0xc4, 0x2f, 0x17, 0xdd, 0xa4, 0xe4, 0xdc, 0x95, 0x64, 0x21, 0x9a, 0x3b,
+    0x64, 0xd6, 0x1f, 0x78, 0x1c, 0xad, 0x55, 0x9a, 0x07, 0x38, 0x2d, 0xba, 0x0d, 0xdc, 0xa1, 0x73,
+    0xe2, 0x8d, 0x59, 0xb0, 0x28, 0x69, 0xad, 0xa4, 0x55, 0xca, 0xd1, 0x92, 0x33, 0xdc, 0xa1, 0xd3,
+    0x5c, 0x5a, 0x1b, 0x54, 0x8a, 0x0d, 0x06, 0x49, 0xd0, 0x71, 0x87, 0x4e, 0xc2, 0xca, 0x20, 0xc0,
+    0x31, 0xd2, 0x40, 0x2c, 0xdd, 0x09, 0xc7, 0x8c, 0x2d, 0xe2, 0xe0, 0xe3, 0x47, 0xa8, 0xcd, 0x7b,
+    0xe5, 0xd7, 0xf0, 0x2d, 0x8c, 0x25, 0x17, 0xba, 0xde, 0x42, 0x03, 0xd9, 0x36, 0xe4, 0x21, 0x57,
+    0xb9, 0x4f, 0xfb, 0x81, 0xd7, 0xe4, 0xc6, 0x99, 0xeb, 0x7d, 0x1e, 0x03, 0x67, 0x1e, 0x3c, 0x40,
+    0x21, 0xcd, 0x6d, 0x9f, 0x3d, 0xfe, 0x63, 0x8b, 0x9f, 0xfb, 0xe8, 0xca, 0x99, 0xaf, 0xa1, 0x9e,
+    0x5c, 0xe0, 0xcc, 0xbd, 0x20, 0x1f, 0xd8, 0xf6, 0x85, 0x0a, 0x70, 0xbc, 0xbf, 0x35, 0x1c, 0x38,
+    0x66, 0x56, 0x8c, 0x97, 0xb8, 0x0f, 0x07, 0x59, 0x75, 0xb1, 0x4e, 0xb2, 0xe3, 0x04, 0x3f, 0xdb,
+    0x12, 0x79, 0x01, 0x46, 0x26, 0x6d, 0xfd, 0x6d, 0xe4, 0x76, 0xff, 0x19, 0xc9, 0xac, 0x67, 0x1b,
+    0x41, 0x2d, 0x27, 0x7a, 0xc8, 0x71, 0x8f, 0x6f, 0x96, 0xe7, 0xd6, 0x2c, 0xd2, 0x3c, 0xc7, 0x1c,
+    0x3d, 0xc7, 0xa2, 0x4f, 0x38, 0x25, 0x59, 0xba, 0x63, 0x1b, 0x02, 0x66, 0x45, 0x38, 0x88, 0x7d,
+    0x65, 0xdd, 0x13, 0xc0, 0x41, 0x58, 0xe4, 0xd0, 0xd2, 0x84, 0x78, 0x01, 0xfa, 0x0c, 0xbc, 0xb0,
+    0xe8, 0xeb, 0x55, 0x5e, 0xa0, 0xec, 0x89, 0x40, 0xec, 0xa1, 0x8b, 0x62, 0xef, 0x2c, 0x17, 0x4c,
+    0xff, 0x02, 0x34, 0x6a, 0x87, 0xeb, 0x29, 0x17, 0x86, 0xc4, 0x7e, 0xca, 0x85, 0x5b, 0xe4, 0x42,
+    0xc2, 0x2d, 0xf1, 0xd6, 0xe3, 0x9b, 0xa3, 0x24, 0xb3, 0x96, 0xdc, 0xe8, 0xfa, 0x0f, 0x94, 0x70,
+    0x37, 0x54, 0x7c, 0x4e, 0xa7, 0x51, 0xf3, 0xef, 0xc8, 0x88, 0x3c, 0x3f, 0x39, 0x0e, 0xbc, 0xa8,
+    0x54, 0xa4, 0x4a, 0x2d, 0x19, 0xe0, 0x3e, 0xbd, 0xcb, 0x8e, 0x86, 0xbb, 0xec, 0x98, 0x77, 0x81,
+    0xfb, 0x68, 0xe8, 0xcc, 0x37, 0x50, 0x2d, 0x01, 0x63, 0xcc, 0xfd, 0x4d, 0xe6, 0xce, 0x11, 0xec,
+    0xb8, 0x4d, 0x2a, 0xbb, 0xfb, 0xdb, 0xc2, 0x2d, 0xc0, 0x0e, 0x02, 0xcd, 0x1f, 0x36, 0x00, 0x37,
+    0xfc, 0x2c, 0xcc, 0x4f, 0x65, 0x4a, 0xe7, 0x48, 0xa6, 0x34, 0x02, 0x53, 0x2a, 0xf5, 0xec, 0x6d,
+    0xa9, 0x32, 0x7a, 0xe2, 0xad, 0x61, 0xa6, 0x9c, 0x9a, 0x53, 0x49, 0x99, 0xd2, 0x0c, 0xe8, 0x63,
+    0x07, 0x93, 0x85, 0x7a, 0xf1, 0xa8, 0x7e, 0x14, 0x17, 0x96, 0x48, 0x95, 0x20, 0x80, 0x5a, 0x29,
+    0x29, 0x9a, 0xdb, 0xdd, 0xb4, 0x9c, 0xad, 0x82, 0x61, 0x45, 0x24, 0x0f, 0x98, 0x23, 0x09, 0xfa,
+    0xf7, 0x31, 0x1a, 0x72, 0xb9, 0x85, 0xa9, 0x4e, 0x06, 0x5a, 0xc8, 0x19, 0xa5, 0xc4, 0x08, 0x3f,
+    0x17, 0xc5, 0xa3, 0x9a, 0x0f, 0xb0, 0x45, 0xce, 0xeb, 0x74, 0x34, 0x85, 0xeb, 0x19, 0x07, 0xd9,
+    0x1e, 0x46, 0x3c, 0x9e, 0x2e, 0x8d, 0x83, 0x3c, 0x31, 0x46, 0xec, 0xe0, 0x1c, 0x24, 0x55, 0x43,
+    0x2a, 0xb4, 0xc4, 0xa6, 0x93, 0x2b, 0x0f, 0x96, 0xc4, 0x97, 0x30, 0xb9, 0xca, 0x27, 0x69, 0xd4,
+    0x71, 0x34, 0x65, 0xc4, 0x33, 0x29, 0x80, 0x1d, 0x46, 0x64, 0x48, 0x46, 0x0c, 0x28, 0x4c, 0x87,
+    0x8e, 0x64, 0x44, 0x7b, 0x7c, 0xd0, 0x35, 0x7f, 0x4c, 0x6e, 0x6e, 0xc9, 0x64, 0x65, 0x43, 0x3f,
+    0x8a, 0xb3, 0xee, 0x70, 0x18, 0xea, 0x73, 0x86, 0x96, 0x15, 0xe6, 0x80, 0x82, 0x18, 0xfb, 0xc0,
+    0x8c, 0x4e, 0x93, 0x2c, 0x31, 0x20, 0x9e, 0xdc, 0xee, 0x95, 0xd1, 0x59, 0x81, 0x87, 0x90, 0x00,
+    0xab, 0xf2, 0x98, 0x8a, 0x97, 0xf8, 0xc5, 0xa3, 0x4b, 0xe8, 0xc4, 0x9c, 0xe3, 0x33, 0x58, 0x88,
+    0x9f, 0x94, 0xcd, 0x33, 0x42, 0x06, 0xbc, 0xba, 0x9b, 0x01, 0x3b, 0x55, 0x2f, 0x80, 0xcd, 0xab,
+    0x63, 0x64, 0x79, 0x66, 0x00, 0x0c, 0xcf, 0x31, 0xcf, 0x75, 0x0d, 0x79, 0x7b, 0x2b, 0x3c, 0x8a,
+    0x5f, 0x4e, 0x20, 0x32, 0x0f, 0x0f, 0xb2, 0xa5, 0x99, 0x1c, 0x13, 0xbf, 0xd2, 0x91, 0x9c, 0x2a,
+    0x98, 0x09, 0x91, 0x77, 0x60, 0x9d, 0xbc, 0x8c, 0x42, 0xd3, 0x6a, 0x37, 0x56, 0x5b, 0x8e, 0x72,
+    0xfb, 0xdc, 0xc4, 0xfc, 0x96, 0xd1, 0x9d, 0xf4, 0x45, 0x15, 0x2e, 0x73, 0x93, 0xb1, 0x05, 0x97,
+    0x00, 0xec, 0x64, 0x65, 0x27, 0x4e, 0x55, 0x3e, 0xd4, 0x07, 0xfa, 0x9d, 0xab, 0x7c, 0x9e, 0xaa,
+    0x4e, 0xd8, 0x35, 0x0d, 0x30, 0x30, 0x99, 0x00, 0xf9, 0xee, 0x04, 0x78, 0x92, 0x5c, 0x38, 0xa8,
+    0x83, 0xb8, 0xee, 0x0c, 0x61, 0x01, 0x07, 0x26, 0xae, 0x28, 0xac, 0x6a, 0x72, 0x21, 0x65, 0x33,
+    0x19, 0xca, 0x84, 0xe7, 0xfb, 0x28, 0x13, 0xfa, 0x5c, 0x43, 0x00, 0xc6, 0x72, 0xae, 0x01, 0xe0,
+    0x06, 0xb7, 0x5f, 0x36, 0x50, 0x82, 0x35, 0xa4, 0xd9, 0xa3, 0x84, 0x11, 0x73, 0x87, 0x43, 0x3c,
+    0x44, 0xfb, 0x94, 0xe7, 0x71, 0xfb, 0x5d, 0x8f, 0xc2, 0x13, 0xb7, 0xff, 0xed, 0x25, 0x88, 0xd1,
+    0xeb, 0x88, 0x3c, 0xc7, 0x67, 0x72, 0xfb, 0x4f, 0x13, 0xef, 0xec, 0x73, 0xd5, 0x43, 0xe8, 0xf1,
+    0x78, 0x93, 0xc3, 0xd5, 0xc2, 0xbd, 0x6d, 0xf6, 0x7b, 0x3a, 0x34, 0xdc, 0x3e, 0x5e, 0x1f, 0xee,
+    0xb9, 0xa6, 0xad, 0x1e, 0x62, 0xde, 0x03, 0xbc, 0x6f, 0x99, 0x2f, 0x4b, 0x96, 0x0e, 0x6e, 0x5f,
+    0xcb, 0x61, 0x96, 0x8a, 0xdd, 0x49, 0x62, 0xe9, 0xa8, 0xb3, 0x5c, 0x8e, 0x02, 0x91, 0xab, 0xf9,
+    0x79, 0x18, 0x1a, 0xef, 0x92, 0x32, 0x85, 0x7f, 0x04, 0xe7, 0x03, 0x76, 0x88, 0xe4, 0x5d, 0x26,
+    0x31, 0x64, 0xab, 0x9e, 0x6c, 0x5d, 0x4c, 0xb6, 0x26, 0x4a, 0xae, 0x05, 0x38, 0x2b, 0xf9, 0x41,
+    0x1c, 0x36, 0x7d, 0x09, 0x59, 0xbd, 0xac, 0x29, 0x3d, 0x0e, 0x9e, 0x03, 0xc6, 0x4b, 0xd2, 0x72,
+    0x2a, 0x3d, 0x01, 0x21, 0x9a, 0x4a, 0x8f, 0xb2, 0x60, 0xa1, 0x8a, 0xa1, 0x89, 0xca, 0x4e, 0x93,
+    0xb9, 0x59, 0x0f, 0xeb, 0x42, 0x06, 0x3c, 0x0a, 0xac, 0x3d, 0x8c, 0x39, 0x40, 0x05, 0xc7, 0x7c,
+    0x82, 0xe4, 0x9d, 0x25, 0x79, 0xad, 0x25, 0xf1, 0x36, 0x39, 0xef, 0x1d, 0x9b, 0x52, 0x91, 0xa2,
+    0xb2, 0xd1, 0x7c, 0x10, 0xe5, 0x86, 0x08, 0x7e, 0x69, 0x0c, 0x31, 0xef, 0x91, 0xcc, 0x55, 0xc4,
+    0xfc, 0x07, 0xc9, 0xb5, 0x83, 0xf2, 0xd2, 0xfc, 0xab, 0x92, 0x79, 0x36, 0xd9, 0x85, 0x4b, 0x65,
+    0x55, 0x1e, 0x50, 0x3b, 0x48, 0xe6, 0xb3, 0xc4, 0x55, 0x86, 0xa4, 0x99, 0x5b, 0x89, 0x6b, 0x03,
+    0x7d, 0x00, 0x25, 0x38, 0x41, 0x64, 0x27, 0x65, 0x79, 0x21, 0x7c, 0x53, 0xb2, 0x8c, 0x6e, 0x6b,
+    0xae, 0x32, 0x5e, 0xed, 0x64, 0xb3, 0x01, 0xeb, 0xbb, 0x6f, 0xaa, 0xac, 0x37, 0xbf, 0x07, 0x7c,
+    0xaf, 0x64, 0x31, 0x7c, 0x07, 0x30, 0x89, 0xca, 0x5b, 0xd5, 0x8e, 0xc7, 0x02, 0x8c, 0x10, 0xb1,
+    0x46, 0xe8, 0x03, 0x9e, 0xcc, 0x0b, 0x0e, 0x49, 0xe9, 0xdc, 0x97, 0xac, 0x0e, 0x4b, 0x11, 0x4b,
+    0xea, 0x20, 0xe6, 0x66, 0x62, 0x39, 0x21, 0xd1, 0xc1, 0x89, 0xb9, 0x55, 0xa2, 0xe4, 0x10, 0xf3,
+    0x59, 0x3a, 0xac, 0x13, 0x96, 0x84, 0xb1, 0x2b, 0x6f, 0x25, 0xdf, 0x1d, 0xb8, 0x62, 0xe4, 0xc0,
+    0x1a, 0x16, 0x53, 0x06, 0x00, 0xa4, 0x2a, 0x28, 0xe5, 0x5d, 0x06, 0x0f, 0x54, 0xb5, 0x43, 0x1b,
+    0x08, 0x08, 0x11, 0x2b, 0x60, 0xf4, 0x16, 0xd3, 0x29, 0x2e, 0xe3, 0x14, 0x59, 0x19, 0x0d, 0x6b,
+    0x5a, 0x73, 0x09, 0x50, 0x95, 0xb0, 0xc6, 0x96, 0xac, 0x2c, 0x6b, 0x36, 0x39, 0xa7, 0xcc, 0xbe,
+    0x43, 0xfd, 0x81, 0xcb, 0x2d, 0x55, 0x76, 0x72, 0x2e, 0x0f, 0x34, 0x56, 0xef, 0x8c, 0x56, 0x35,
+    0xfb, 0x95, 0xf0, 0xd0, 0x4c, 0x20, 0x1c, 0xe8, 0x0f, 0x2d, 0xcc, 0xdb, 0x0f, 0x8c, 0x5a, 0x18,
+    0x3a, 0xab, 0x11, 0x6b, 0xe3, 0x4a, 0x41, 0xba, 0xd5, 0xe5, 0x71, 0x25, 0xe1, 0xd2, 0xba, 0x89,
+    0x2b, 0x93, 0x72, 0x31, 0x0d, 0xbe, 0x4b, 0xe2, 0xad, 0xb2, 0xf9, 0x1d, 0xab, 0xd2, 0x92, 0x44,
+    0xa7, 0xe2, 0xea, 0x83, 0xb5, 0x62, 0x41, 0xf8, 0xc1, 0xe2, 0x48, 0x2c, 0x5d, 0x2b, 0x37, 0xae,
+    0x95, 0xf9, 0x28, 0x2e, 0x14, 0x3f, 0x3e, 0xf0, 0x62, 0xb4, 0x3d, 0x57, 0x79, 0x45, 0x05, 0xc6,
+    0x8e, 0x56, 0x98, 0xfa, 0xd6, 0xde, 0xe1, 0xa9, 0x0b, 0x16, 0xf0, 0xd6, 0x95, 0x9d, 0x92, 0xd0,
+    0x0d, 0x33, 0xf6, 0xd9, 0x70, 0xe6, 0x50, 0x32, 0x2b, 0x60, 0xf5, 0x52, 0xab, 0x6f, 0xa3, 0xb3,
+    0x80, 0x10, 0x08, 0x66, 0xd8, 0xb5, 0x87, 0xaa, 0x44, 0x9a, 0x3e, 0xea, 0x33, 0x16, 0xe4, 0xf5,
+    0x63, 0x83, 0xea, 0x8d, 0x5c, 0x59, 0xe0, 0x0d, 0xdd, 0x0a, 0x08, 0x49, 0x47, 0x57, 0x3a, 0x3c,
+    0x02, 0x92, 0xea, 0x97, 0xa2, 0x21, 0xb0, 0x04, 0x31, 0xf7, 0xa8, 0x78, 0x6b, 0x57, 0x82, 0x74,
+    0x74, 0x10, 0x4b, 0xbb, 0xb6, 0xf9, 0x63, 0x56, 0x98, 0x25, 0x99, 0xdf, 0x32, 0x79, 0x85, 0xe8,
+    0x92, 0xb2, 0x6c, 0xe2, 0x55, 0xbe, 0x59, 0x84, 0xc6, 0x49, 0x11, 0x8f, 0x6a, 0x49, 0x8f, 0xef,
+    0x5f, 0xd3, 0x09, 0x50, 0x61, 0x69, 0xaf, 0x69, 0x91, 0x20, 0xa2, 0x00, 0xf3, 0xdc, 0x44, 0x52,
+    0xb4, 0x22, 0x95, 0x6a, 0x46, 0x88, 0x51, 0x79, 0xf7, 0xd4, 0x7c, 0x9c, 0x69, 0x3b, 0x0c, 0x13,
+    0x32, 0x8a, 0xdc, 0x3e, 0x4f, 0x55, 0x0f, 0x0b, 0xda, 0xc4, 0x9e, 0x84, 0x40, 0x84, 0x6d, 0x02,
+    0xbb, 0x60, 0x84, 0x05, 0x4b, 0x36, 0xba, 0x33, 0x81, 0x28, 0x62, 0x6e, 0x97, 0x96, 0xed, 0xad,
+    0x4a, 0x62, 0x19, 0x29, 0x85, 0x9a, 0x5c, 0xc4, 0xc2, 0xbd, 0x82, 0x16, 0x8a, 0x08, 0xb5, 0xc4,
+    0x52, 0xe3, 0x08, 0xf1, 0xdf, 0x41, 0x0e, 0x3d, 0x06, 0x0f, 0x74, 0xfd, 0x83, 0xc6, 0x55, 0xc6,
+    0x95, 0x18, 0xb1, 0x0e, 0x7d, 0x64, 0x2f, 0x5d, 0x87, 0xbd, 0xb8, 0x0e, 0x9c, 0x91, 0x98, 0x5f,
+    0xed, 0xbf, 0x48, 0x72, 0x5e, 0xa7, 0x66, 0x08, 0x85, 0xf2, 0xe1, 0xc7, 0x47, 0x2a, 0x0f, 0x04,
+    0x71, 0x60, 0x74, 0xbf, 0xb7, 0x20, 0x54, 0xf2, 0x6e, 0xf5, 0xdc, 0x65, 0xff, 0x93, 0xec, 0x21,
+    0xc4, 0x26, 0xbe, 0x8d, 0x98, 0x19, 0x76, 0x48, 0x1c, 0x4a, 0x2a, 0xff, 0x4f, 0xce, 0x28, 0x09,
+    0xaf, 0xf6, 0x43, 0x28, 0xf5, 0xba, 0x78, 0x89, 0x61, 0xbd, 0x13, 0xcf, 0x80, 0xbd, 0x30, 0x9d,
+    0x24, 0x30, 0xed, 0xf6, 0xd8, 0x56, 0x2e, 0xe5, 0x0c, 0xc9, 0x69, 0xe7, 0x52, 0xd0, 0x6c, 0x48,
+    0x96, 0x1a, 0x2e, 0xe5, 0x94, 0x24, 0xd4, 0xa6, 0x8b, 0x43, 0x91, 0xaa, 0xd4, 0x72, 0xae, 0x71,
+    0x80, 0xc9, 0x37, 0x9b, 0xdb, 0x67, 0x3e, 0x24, 0x09, 0xfe, 0xc0, 0xc3, 0x56, 0xe7, 0xbe, 0x64,
+    0x96, 0x51, 0x0e, 0xcd, 0x81, 0x29, 0xdf, 0x80, 0x61, 0x0f, 0x68, 0xd1, 0xdf, 0x80, 0x55, 0x59,
+    0xa9, 0x21, 0xad, 0xa2, 0x3b, 0x2d, 0xdb, 0x0a, 0x42, 0xbc, 0x71, 0x1a, 0x92, 0xae, 0xad, 0x71,
+    0xf3, 0x1a, 0x6f, 0x7a, 0x12, 0xfb, 0xfe, 0xd6, 0x05, 0xe0, 0x6e, 0x74, 0x2e, 0x8c, 0x5b, 0x3d,
+    0x1d, 0x61, 0x59, 0xd6, 0xc0, 0x43, 0x3c, 0xd4, 0x28, 0x55, 0x0f, 0xd2, 0x19, 0x7e, 0x80, 0x05,
+    0x69, 0x3c, 0x05, 0xca, 0x62, 0xc9, 0x14, 0x7c, 0x20, 0x8b, 0x6b, 0xc1, 0x6c, 0x1d, 0x7a, 0x30,
+    0x28, 0xdb, 0x25, 0x8c, 0xdd, 0xaa, 0xfc, 0x7b, 0x9c, 0x2a, 0x76, 0x99, 0xe1, 0xe2, 0xad, 0x30,
+    0x6e, 0xd7, 0x6f, 0xbe, 0x43, 0x26, 0xa6, 0x8b, 0x03, 0x01, 0x7e, 0xd9, 0x3f, 0x1b, 0x61, 0xe6,
+    0xff, 0x31, 0xc2, 0xb2, 0x5a, 0xe0, 0x69, 0x20, 0x29, 0x0e, 0xc6, 0xc9, 0x09, 0x8d, 0x63, 0x0f,
+    0x08, 0x7e, 0xab, 0xb2, 0x40, 0x1d, 0x88, 0x78, 0x44, 0x4f, 0x78, 0xba, 0x78, 0x8b, 0xdd, 0xf2,
+    0x8b, 0xae, 0x87, 0x60, 0xb0, 0xea, 0xa3, 0xb8, 0xd0, 0xa3, 0xfc, 0xd4, 0xc9, 0xa9, 0x77, 0x13,
+    0x0d, 0xad, 0x72, 0x7c, 0x29, 0xc3, 0xd4, 0x40, 0x5a, 0xb0, 0x07, 0x65, 0xd9, 0x48, 0x72, 0xba,
+    0x89, 0xd7, 0xe8, 0xe6, 0x7e, 0x13, 0x8c, 0x92, 0xc4, 0x81, 0x29, 0x34, 0xc2, 0x28, 0x2f, 0x0c,
+    0x56, 0xd4, 0x4f, 0xc1, 0xc8, 0xa3, 0x85, 0xfb, 0x0d, 0x69, 0x82, 0x64, 0xe2, 0x2d, 0x37, 0x64,
+    0x12, 0x6f, 0x35, 0x68, 0x1b, 0xc0, 0x28, 0xbc, 0xe5, 0xd6, 0xb6, 0x52, 0x58, 0x61, 0x09, 0xb7,
+    0xfb, 0x78, 0x10, 0xdc, 0x74, 0x6a, 0xcb, 0x8f, 0x49, 0x33, 0xcd, 0x08, 0x3c, 0x9f, 0x27, 0xa5,
+    0x70, 0x10, 0x21, 0xf6, 0x7f, 0x55, 0x2c, 0x74, 0xe3, 0x23, 0x7b, 0xae, 0x84, 0xc9, 0x02, 0x16,
+    0xb5, 0xfd, 0x1d, 0x65, 0x41, 0x8f, 0x41, 0x75, 0x4e, 0xb7, 0xa2, 0x00, 0x3d, 0xca, 0x67, 0x0b,
+    0xe0, 0x4b, 0x5e, 0x06, 0x5f, 0x9f, 0x0c, 0xa0, 0x1d, 0xd5, 0xfd, 0x0e, 0xa6, 0x12, 0x10, 0x62,
+    0x61, 0x45, 0xb5, 0x56, 0xe5, 0xd8, 0x6c, 0x3a, 0x73, 0x5f, 0xac, 0xb3, 0x1c, 0x96, 0xb5, 0xeb,
+    0x33, 0x4a, 0x27, 0x2b, 0x4c, 0x54, 0x9e, 0x7f, 0x18, 0x7a, 0xac, 0x81, 0xaf, 0x0f, 0x0e, 0x82,
+    0x08, 0xfb, 0x22, 0xde, 0x3f, 0xa8, 0x06, 0x13, 0x51, 0xce, 0x84, 0x54, 0x00, 0xac, 0xc5, 0x54,
+    0x73, 0xeb, 0x78, 0x06, 0x32, 0x23, 0x8f, 0xb2, 0x0b, 0x23, 0xf9, 0xa5, 0xc4, 0x2b, 0x25, 0xc5,
+    0x00, 0x44, 0xbf, 0xb8, 0x33, 0x2e, 0xb0, 0x63, 0xbe, 0x31, 0xb0, 0x06, 0xe2, 0xc0, 0x7d, 0xe9,
+    0x3a, 0x1b, 0xe4, 0x7a, 0x56, 0x65, 0xf6, 0x6c, 0xd5, 0xc0, 0xb8, 0x79, 0xe0, 0xab, 0x62, 0x65,
+    0x90, 0x53, 0xc2, 0xd8, 0x8c, 0xd4, 0xa5, 0x3b, 0xe3, 0x76, 0x5e, 0xa8, 0x5a, 0xee, 0xa6, 0x6a,
+    0x39, 0xde, 0x59, 0x9c, 0x06, 0xc2, 0xf5, 0xac, 0x4a, 0x54, 0xd5, 0xf2, 0x7a, 0xac, 0xe5, 0xa7,
+    0x29, 0x7d, 0xbf, 0x04, 0x8d, 0x33, 0x77, 0x7f, 0xb0, 0x01, 0x97, 0xd1, 0xec, 0xff, 0xc0, 0x89,
+    0x6b, 0xdb, 0x03, 0x81, 0x9b, 0xb3, 0x36, 0x85, 0xae, 0x43, 0xfa, 0x94, 0xd0, 0x3a, 0x90, 0x53,
+    0x75, 0x33, 0x3c, 0xd0, 0xcd, 0x1b, 0x81, 0xdf, 0xac, 0x73, 0xb2, 0x99, 0x65, 0xb2, 0x94, 0x13,
+    0x51, 0x54, 0x20, 0x81, 0xba, 0x47, 0x9d, 0x3c, 0xd4, 0x80, 0x87, 0x1f, 0xae, 0x99, 0xe7, 0x7c,
+    0x2f, 0x05, 0x6b, 0x3e, 0x1e, 0xae, 0x99, 0xea, 0xbc, 0x42, 0x61, 0xfe, 0x2d, 0x54, 0xc3, 0xd5,
+    0xfc, 0x0b, 0x46, 0x0b, 0xde, 0xda, 0x20, 0x6a, 0xa4, 0x96, 0x95, 0x92, 0xe2, 0xa4, 0xd5, 0x86,
+    0xcf, 0x3f, 0x5c, 0x1e, 0xce, 0x18, 0x1b, 0x22, 0x8f, 0x09, 0x19, 0xf2, 0x14, 0xc3, 0x33, 0x0c,
+    0x93, 0xd0, 0x2a, 0x5e, 0x60, 0x8e, 0x18, 0x56, 0xc3, 0xb0, 0xd6, 0x12, 0x26, 0x3b, 0xd7, 0xae,
+    0xe8, 0xc7, 0x21, 0x9a, 0x18, 0xbb, 0xd2, 0x40, 0xf1, 0x69, 0x4a, 0xa2, 0x9d, 0xcb, 0xc2, 0x35,
+    0x8c, 0xf3, 0xad, 0x4c, 0x98, 0xeb, 0xab, 0x4b, 0x43, 0x7c, 0x99, 0xee, 0xbc, 0x0d, 0xa3, 0xfa,
+    0x22, 0x9c, 0xfb, 0x80, 0x1c, 0xe5, 0x69, 0x03, 0x85, 0x35, 0xba, 0xa9, 0xbc, 0x79, 0x23, 0x90,
+    0x15, 0xec, 0x1e, 0xd6, 0xe7, 0x57, 0x69, 0xf0, 0x5d, 0x83, 0xe9, 0x8a, 0xdd, 0x8b, 0x21, 0xa2,
+    0x92, 0x2d, 0x27, 0x14, 0x3d, 0x92, 0xe7, 0x31, 0xba, 0x5d, 0x2d, 0x42, 0x38, 0x38, 0x4f, 0xf1,
+    0xe8, 0xe2, 0x50, 0x90, 0x58, 0xdd, 0x9d, 0x09, 0xa6, 0x96, 0x9c, 0x24, 0x13, 0x8d, 0x6e, 0x59,
+    0xfe, 0x03, 0xac, 0xbd, 0xd5, 0x89, 0x9b, 0x59, 0x56, 0x6b, 0x56, 0xb6, 0xf2, 0x55, 0x34, 0xa5,
+    0x4c, 0x76, 0x7d, 0x05, 0xf5, 0x25, 0xe1, 0xce, 0x69, 0xc0, 0x7d, 0xab, 0xf2, 0xa1, 0x3e, 0x44,
+    0xd2, 0x32, 0xd9, 0x35, 0x34, 0xb2, 0xa5, 0x6e, 0xb8, 0xe5, 0x5e, 0xd9, 0xb5, 0x1b, 0x5b, 0x22,
+    0x9c, 0xbb, 0x52, 0xb0, 0xa5, 0x6c, 0xb8, 0x45, 0x6b, 0x0c, 0x64, 0x74, 0x6d, 0x07, 0x45, 0xa9,
+    0x7b, 0xf7, 0x00, 0x40, 0x70, 0xfb, 0x8e, 0xd7, 0x0f, 0xa0, 0xb9, 0x0b, 0x64, 0x3c, 0xfa, 0xce,
+    0x2a, 0xd0, 0x1a, 0x5e, 0x9b, 0x24, 0xfc, 0xbd, 0x8b, 0xa6, 0xb2, 0x10, 0xa2, 0xec, 0x97, 0xf7,
+    0x23, 0xd0, 0xfe, 0x36, 0x0a, 0xe4, 0x58, 0x5a, 0x9b, 0x86, 0x20, 0xe3, 0x44, 0x77, 0x18, 0x57,
+    0xf3, 0x30, 0xc0, 0xf8, 0xba, 0x21, 0x38, 0x3a, 0xf4, 0x1d, 0xba, 0xde, 0x76, 0x4f, 0x47, 0x84,
+    0x9c, 0x16, 0x86, 0x4e, 0x98, 0x9c, 0xff, 0x19, 0xa9, 0x6c, 0xed, 0x87, 0xc7, 0xcb, 0xd0, 0x7c,
+    0x04, 0x9a, 0x61, 0xd5, 0xc6, 0x48, 0xae, 0x13, 0x14, 0xd7, 0xa1, 0xcf, 0xe9, 0xcf, 0x79, 0x50,
+    0x01, 0x28, 0x34, 0x60, 0x6b, 0x40, 0x7a, 0xbb, 0x15, 0x91, 0x54, 0x76, 0x92, 0x9c, 0x0e, 0x2e,
+    0x6d, 0xb0, 0xee, 0xd0, 0x41, 0x4a, 0x1b, 0xc0, 0x28, 0xdc, 0xee, 0xc1, 0xf0, 0x4a, 0xf0, 0x57,
+    0x97, 0xd9, 0xc1, 0x04, 0x4c, 0x71, 0x05, 0xff, 0xf2, 0x9b, 0x1c, 0xc3, 0x6c, 0x89, 0x84, 0x44,
+    0x5b, 0x87, 0x92, 0x3d, 0x61, 0xf9, 0x4d, 0xf0, 0xf7, 0x5b, 0xf4, 0x50, 0x46, 0x3e, 0x07, 0xd5,
+    0xd1, 0x37, 0x09, 0xca, 0x98, 0x1d, 0xef, 0x01, 0x3f, 0xe9, 0x47, 0x9f, 0x64, 0xee, 0x94, 0x20,
+    0x5f, 0xc8, 0xe9, 0x76, 0x90, 0xd5, 0xba, 0xda, 0x67, 0x26, 0x38, 0x88, 0x5d, 0x5f, 0xbb, 0x73,
+    0x92, 0xe4, 0x6a, 0xc6, 0x91, 0xd3, 0xa3, 0xa5, 0xbc, 0x4e, 0xf2, 0x4c, 0x8c, 0x24, 0xb7, 0x63,
+    0x71, 0x75, 0x3c, 0xb1, 0xc7, 0x49, 0xe6, 0x76, 0x07, 0x49, 0x9f, 0xc7, 0xed, 0xbe, 0xcd, 0x9e,
+    0x27, 0x3b, 0xe7, 0x43, 0xd0, 0x65, 0x3e, 0x8b, 0x04, 0xb4, 0x56, 0x55, 0xfa, 0x19, 0x92, 0x9e,
+    0xc8, 0xeb, 0xe5, 0xbc, 0x3f, 0x40, 0x54, 0x3e, 0xcd, 0xd3, 0xa5, 0x87, 0x9f, 0x68, 0x5f, 0x18,
+    0x38, 0xa4, 0x9d, 0x06, 0x63, 0x40, 0x86, 0x40, 0xab, 0x87, 0x5c, 0xcc, 0xb5, 0x2a, 0xa7, 0xd9,
+    0xa0, 0x88, 0xd6, 0x53, 0x73, 0x01, 0x8b, 0x7f, 0x82, 0xa4, 0x43, 0xc6, 0x52, 0x7d, 0x14, 0x97,
+    0x7d, 0x44, 0xb2, 0x50, 0xdd, 0x5d, 0xc3, 0x62, 0x62, 0x00, 0xe2, 0xf2, 0x8e, 0xf2, 0x25, 0x9a,
+    0xce, 0x4b, 0x20, 0xd7, 0x2e, 0x17, 0x56, 0x5a, 0x74, 0xa0, 0xac, 0x55, 0x3b, 0x4c, 0xec, 0x42,
+    0xf9, 0x65, 0x96, 0xef, 0x93, 0xcc, 0xbf, 0x34, 0x9e, 0x86, 0x39, 0xe1, 0x26, 0x40, 0xb4, 0x64,
+    0x3e, 0x28, 0xbf, 0xad, 0x46, 0xbd, 0x29, 0xd3, 0x3c, 0x0a, 0xd0, 0x91, 0x12, 0x2d, 0x6b, 0x4c,
+    0xc6, 0xbe, 0x2f, 0x6e, 0x63, 0xd6, 0xbf, 0xef, 0xd5, 0x98, 0x08, 0x24, 0xe1, 0xd6, 0x42, 0x3e,
+    0xca, 0xd5, 0xc2, 0xe7, 0xaf, 0x4e, 0x15, 0x7c, 0xbe, 0xad, 0x90, 0x90, 0x5f, 0xc8, 0xb2, 0xca,
+    0xae, 0x0a, 0x00, 0xb1, 0xa2, 0x25, 0xca, 0x59, 0x42, 0xc5, 0xc3, 0x5b, 0x33, 0x03, 0x51, 0x31,
+    0x40, 0x03, 0xf0, 0x29, 0xd8, 0x2e, 0xe7, 0x9d, 0xb0, 0x29, 0x51, 0xa1, 0x79, 0x08, 0x39, 0x09,
+    0xfd, 0x19, 0x25, 0x06, 0x9b, 0xbc, 0x17, 0x21, 0xed, 0xca, 0x74, 0xb5, 0x27, 0xb9, 0x01, 0x54,
+    0xfa, 0xfe, 0xa5, 0xff, 0x8a, 0x7d, 0x18, 0xed, 0x39, 0x25, 0xf0, 0x48, 0xd0, 0x09, 0x8d, 0xc0,
+    0x1b, 0x42, 0x6a, 0x3e, 0x61, 0x55, 0xf6, 0x32, 0x41, 0xa4, 0xfc, 0x58, 0xe3, 0xa5, 0xae, 0x9f,
+    0x63, 0xa0, 0x95, 0xa8, 0x14, 0xcf, 0x57, 0x6d, 0x7d, 0x63, 0x49, 0xa6, 0x92, 0xa7, 0x3e, 0x8b,
+    0x95, 0x7e, 0x83, 0x2c, 0xbc, 0x73, 0x60, 0x3c, 0x4d, 0x09, 0x7a, 0x3f, 0xe2, 0xf6, 0xe7, 0x5c,
+    0x23, 0xd6, 0xc5, 0xc2, 0x64, 0x6e, 0xbf, 0xa5, 0xc3, 0xf3, 0xa5, 0x3e, 0xf2, 0x18, 0xe6, 0xc3,
+    0xd6, 0xc5, 0xa4, 0xc9, 0x17, 0x41, 0x9a, 0xe0, 0x59, 0xb2, 0x28, 0x10, 0xfc, 0x70, 0xfb, 0xcb,
+    0x74, 0x72, 0x9a, 0x31, 0x00, 0x4b, 0xd6, 0x47, 0x32, 0x96, 0x91, 0x35, 0x4b, 0x20, 0xce, 0x72,
+    0xa7, 0xd1, 0xc9, 0x81, 0x17, 0x79, 0x37, 0x5c, 0x1d, 0x28, 0x23, 0x89, 0x6c, 0xd7, 0x37, 0xa5,
+    0x46, 0x5f, 0x87, 0x39, 0x36, 0xa5, 0xc6, 0x70, 0xe3, 0xc0, 0x96, 0x65, 0x2c, 0x21, 0xa9, 0x71,
+    0x4d, 0xa9, 0x28, 0x3e, 0x98, 0x4e, 0x61, 0xc6, 0xd5, 0x5e, 0x7d, 0xb4, 0x86, 0xfd, 0xde, 0x92,
+    0x25, 0xa2, 0x96, 0x9c, 0x23, 0xc7, 0xb9, 0x7d, 0xc9, 0x13, 0xb8, 0xfd, 0xdb, 0x74, 0xdc, 0xee,
+    0x01, 0xd9, 0x75, 0x14, 0xe6, 0xe7, 0x44, 0xa6, 0x97, 0x80, 0xde, 0x4d, 0x7c, 0x24, 0x18, 0xb7,
+    0x41, 0xb2, 0xc9, 0x97, 0x70, 0xfb, 0xed, 0xd3, 0xc4, 0xed, 0x1a, 0x83, 0x10, 0xc9, 0xed, 0x4f,
+    0x8f, 0xf6, 0x74, 0xe8, 0x23, 0x1b, 0x64, 0x10, 0xcc, 0x0b, 0x56, 0x45, 0xaf, 0x12, 0x83, 0xa6,
+    0xec, 0x6d, 0xb4, 0x07, 0x4d, 0x92, 0xd0, 0x41, 0x84, 0x4e, 0x6e, 0xb7, 0xd0, 0x6d, 0x57, 0xec,
+    0xf7, 0xab, 0x94, 0x5e, 0x20, 0x83, 0xc6, 0x4b, 0x36, 0xbb, 0xcd, 0x06, 0x8b, 0x6f, 0x55, 0x2e,
+    0xd2, 0x2e, 0x20, 0x00, 0x9d, 0xb2, 0xc6, 0x85, 0x84, 0x42, 0xa8, 0xed, 0xfa, 0x31, 0xe5, 0xa8,
+    0x2f, 0x9d, 0xdb, 0x9f, 0x3a, 0x8f, 0xea, 0xe3, 0xd8, 0x00, 0xf5, 0x48, 0x54, 0xfc, 0x89, 0x97,
+    0xdb, 0xdd, 0x6f, 0x57, 0xc6, 0xaa, 0xe8, 0xb8, 0xfd, 0x36, 0x20, 0xd8, 0x36, 0x9f, 0xdb, 0xff,
+    0xc4, 0x3c, 0xcf, 0x97, 0x11, 0xc6, 0x40, 0x6e, 0x56, 0x6e, 0x36, 0x62, 0x0e, 0x2c, 0x52, 0x8a,
+    0xa9, 0xb9, 0x88, 0x11, 0x87, 0x0c, 0x15, 0x13, 0x8c, 0x7d, 0xab, 0xa5, 0x3c, 0x88, 0xd4, 0xfc,
+    0x5d, 0x3e, 0x2a, 0x8c, 0x7e, 0x70, 0xd1, 0x72, 0xf2, 0x04, 0xd0, 0x6d, 0x63, 0x1f, 0x34, 0x40,
+    0x74, 0x42, 0x84, 0xb3, 0x9e, 0x6b, 0x11, 0x75, 0x1a, 0x23, 0x3a, 0xd7, 0x46, 0x00, 0x62, 0x4f,
+    0x8a, 0x95, 0x3a, 0xa6, 0x6e, 0xf5, 0x38, 0x30, 0xcc, 0x50, 0xac, 0xba, 0xc5, 0x71, 0x2e, 0x8c,
+    0xa3, 0x3f, 0x4e, 0xe2, 0x63, 0x54, 0xd6, 0x18, 0x54, 0x3e, 0x59, 0x15, 0xff, 0x43, 0x94, 0x41,
+    0x75, 0x63, 0xe2, 0x67, 0x71, 0xfb, 0x9a, 0xe5, 0xe8, 0x15, 0x72, 0xda, 0x4f, 0x7b, 0x97, 0x87,
+    0xe3, 0xde, 0xd7, 0x2b, 0x60, 0x6e, 0x19, 0x39, 0xfa, 0xa7, 0x90, 0xfe, 0xc9, 0xaf, 0x46, 0x20,
+    0xb8, 0xfc, 0xd6, 0x14, 0xfc, 0xf9, 0xe2, 0x36, 0xa6, 0x01, 0x95, 0xed, 0x75, 0x69, 0xf9, 0x51,
+    0xb5, 0x69, 0xd3, 0x06, 0x52, 0x85, 0xbf, 0x1b, 0x4f, 0x4b, 0x95, 0x97, 0xeb, 0x34, 0xb9, 0xb5,
+    0x69, 0x13, 0x23, 0x52, 0xc4, 0xc1, 0x31, 0x42, 0x2f, 0x81, 0x72, 0x7a, 0x1c, 0x48, 0x42, 0x6d,
+    0xcd, 0xf8, 0x53, 0xd0, 0xa9, 0x2e, 0x7d, 0x26, 0x3c, 0xb5, 0xc2, 0x93, 0xab, 0x05, 0xc8, 0xe6,
+    0x5c, 0xdf, 0xa0, 0x8b, 0xc7, 0x81, 0xaa, 0x0e, 0x52, 0xe4, 0x06, 0x41, 0x2b, 0xba, 0x03, 0xe5,
+    0x3d, 0x10, 0x4a, 0xca, 0x32, 0x56, 0x78, 0xd3, 0xb4, 0x2c, 0x53, 0xb5, 0x1c, 0xcd, 0x39, 0x53,
+    0xbf, 0x72, 0x32, 0xcb, 0x7c, 0x5e, 0x05, 0x5f, 0x9c, 0xb9, 0x21, 0x20, 0xe8, 0xb2, 0x02, 0xad,
+    0x41, 0xcf, 0x93, 0x8a, 0xa6, 0x74, 0xf5, 0xb8, 0x3e, 0x8f, 0x96, 0x73, 0xe1, 0x1e, 0x4d, 0x3d,
+    0xb8, 0x78, 0xe8, 0x1a, 0x71, 0xd6, 0x90, 0x24, 0x0c, 0x80, 0x3b, 0xaf, 0x03, 0x47, 0xca, 0x3f,
+    0xd3, 0x64, 0x56, 0x82, 0xbb, 0x93, 0x81, 0x8c, 0x65, 0x0b, 0x78, 0xa3, 0x78, 0x5b, 0xcb, 0xbd,
+    0xe1, 0x11, 0x6f, 0x8f, 0xe3, 0x9f, 0x8d, 0xb2, 0x28, 0x7d, 0x1e, 0x96, 0x7f, 0x92, 0x3b, 0xec,
+    0xb6, 0x2a, 0xad, 0x91, 0x74, 0x6d, 0x6a, 0xd3, 0x66, 0xb4, 0xa4, 0x62, 0x67, 0xcd, 0x92, 0x0c,
+    0xf0, 0xc3, 0x7f, 0xf1, 0xcd, 0xe8, 0x33, 0x2b, 0x2c, 0xf0, 0x5e, 0x78, 0x4e, 0xad, 0xfd, 0x02,
+    0xc3, 0x3a, 0x8c, 0xcd, 0x15, 0x68, 0xfe, 0xb4, 0x64, 0x9c, 0x6c, 0x6e, 0xb1, 0xda, 0x95, 0xba,
+    0xa8, 0xa0, 0x95, 0x57, 0x77, 0x49, 0x82, 0x46, 0x8f, 0x2e, 0x9e, 0x4f, 0x5b, 0x75, 0x4b, 0x0b,
+    0xbf, 0xfc, 0x0a, 0x49, 0x38, 0x9b, 0x0e, 0x42, 0xc3, 0xed, 0x6e, 0xf4, 0x28, 0x11, 0x10, 0x63,
+    0x8a, 0x0d, 0x06, 0xd1, 0x7c, 0xd9, 0x60, 0xf2, 0x72, 0xbb, 0x12, 0x61, 0xd6, 0xbe, 0x08, 0xe8,
+    0xe0, 0xbb, 0x08, 0xab, 0xce, 0xed, 0xce, 0xeb, 0xb0, 0x65, 0x29, 0xc6, 0x79, 0xaa, 0x4c, 0x85,
+    0x43, 0x15, 0xf1, 0x57, 0x1f, 0x4d, 0x0c, 0x69, 0x41, 0x89, 0x4e, 0x39, 0x38, 0x2f, 0x14, 0x00,
+    0x8e, 0x83, 0xe8, 0x86, 0x5b, 0x4c, 0x87, 0xaf, 0x1f, 0x87, 0xc1, 0xc7, 0x8e, 0xb1, 0xc8, 0x51,
+    0x2f, 0x08, 0x20, 0x93, 0x29, 0xf4, 0xa0, 0x12, 0x2d, 0x31, 0xf6, 0x75, 0xed, 0x45, 0xa7, 0x64,
+    0x80, 0x30, 0x4e, 0xab, 0x7c, 0xb9, 0x88, 0x42, 0x43, 0xe5, 0xbb, 0xb8, 0xc7, 0xe6, 0x35, 0x04,
+    0xeb, 0x5b, 0xd4, 0x7a, 0x5f, 0xdb, 0xf0, 0x5e, 0x12, 0xb1, 0x74, 0x4b, 0xdb, 0xc0, 0xd5, 0x8a,
+    0x01, 0xdd, 0x81, 0x6f, 0x39, 0x4c, 0xa2, 0x9b, 0xc5, 0x80, 0xfe, 0xf0, 0xb7, 0x01, 0x7c, 0xf4,
+    0x47, 0x9e, 0x14, 0x03, 0x86, 0x2f, 0xbe, 0x05, 0x63, 0xc7, 0x99, 0xaf, 0x88, 0x83, 0x61, 0xe5,
+    0x1b, 0x4d, 0x17, 0xb7, 0x14, 0xcb, 0x10, 0x62, 0xe9, 0x21, 0x35, 0x08, 0x80, 0x07, 0x81, 0xec,
+    0x46, 0x46, 0x8d, 0xf9, 0x98, 0x1a, 0x31, 0x0d, 0x68, 0x7f, 0x86, 0xe8, 0xd5, 0x20, 0xa8, 0xc6,
+    0x74, 0x71, 0xf3, 0x97, 0x76, 0xe5, 0xef, 0x3f, 0x52, 0xa7, 0xe1, 0x81, 0xec, 0x04, 0x34, 0xc0,
+    0x15, 0x90, 0xf3, 0xfc, 0xfc, 0x2c, 0xc8, 0x00, 0x2c, 0x9d, 0x00, 0x4c, 0xa2, 0x3f, 0x03, 0x0c,
+    0x36, 0xa5, 0x98, 0x8a, 0x7f, 0x27, 0x00, 0xa6, 0x9b, 0xfa, 0x85, 0x6b, 0x74, 0x4a, 0xa4, 0x79,
+    0xc4, 0x9e, 0x0f, 0x6e, 0xbc, 0x64, 0xea, 0xa5, 0xac, 0xa4, 0x80, 0x10, 0x17, 0x10, 0x62, 0x20,
+    0x37, 0x0f, 0x08, 0x7a, 0x10, 0x16, 0x65, 0x21, 0x35, 0x74, 0xd1, 0x14, 0xc8, 0x8e, 0x50, 0x65,
+    0x7a, 0x29, 0x3d, 0x0d, 0x02, 0x61, 0x6b, 0x60, 0x73, 0x92, 0xd2, 0x7a, 0x1f, 0x65, 0x70, 0x49,
+    0xa6, 0x5d, 0xf9, 0xb3, 0xfa, 0xf8, 0xcc, 0xdd, 0x2d, 0x24, 0x03, 0xc9, 0x39, 0x0b, 0x8e, 0x58,
+    0x32, 0x47, 0x8f, 0x33, 0xc7, 0x70, 0x35, 0xff, 0xc3, 0x50, 0x15, 0xe4, 0xf6, 0x27, 0xeb, 0xb8,
+    0x7d, 0x2b, 0x26, 0x70, 0xbb, 0x21, 0x0b, 0x6e, 0x37, 0xb6, 0x80, 0x3f, 0xc8, 0xb9, 0x0c, 0xd4,
+    0x86, 0x5b, 0x74, 0x20, 0x12, 0x93, 0x73, 0xf4, 0x60, 0xd4, 0x21, 0xf7, 0x96, 0x84, 0x76, 0x7b,
+    0x76, 0x96, 0xb2, 0xce, 0x17, 0x8c, 0x3a, 0x3b, 0xc8, 0x19, 0xa9, 0x32, 0xfa, 0x7e, 0x48, 0xd4,
+    0x2c, 0x31, 0xd3, 0x2d, 0x97, 0xb9, 0xdd, 0x57, 0x40, 0x44, 0xfa, 0xaf, 0xb1, 0x17, 0xa5, 0x3c,
+    0x25, 0xa1, 0x91, 0xe4, 0x29, 0x10, 0xc4, 0xc5, 0xb6, 0x12, 0x73, 0x77, 0xc2, 0x15, 0xba, 0x49,
+    0x16, 0xdb, 0x68, 0xea, 0x27, 0xcd, 0xb1, 0x90, 0x7e, 0x5c, 0xe0, 0x52, 0xfa, 0xc1, 0xfb, 0x41,
+    0x66, 0x22, 0xe9, 0x6a, 0x45, 0xcf, 0x10, 0xa6, 0x1e, 0xfb, 0x52, 0x60, 0x7c, 0x8f, 0xb1, 0x25,
+    0x3c, 0xc5, 0x00, 0xb2, 0xcc, 0xed, 0xcf, 0x06, 0x73, 0x72, 0xac, 0xff, 0x2b, 0xb6, 0x2d, 0xdc,
+    0xac, 0x4c, 0x86, 0x25, 0xcb, 0xd1, 0x42, 0x4a, 0xc8, 0x0e, 0xda, 0xec, 0x90, 0x39, 0x63, 0x28,
+    0x9f, 0x08, 0x63, 0x2b, 0x9c, 0x0e, 0xbd, 0xdc, 0x65, 0xca, 0xc7, 0x18, 0xb6, 0x47, 0x12, 0x62,
+    0x26, 0x5e, 0x34, 0xdd, 0x22, 0xad, 0xb1, 0x7e, 0x6e, 0x17, 0xee, 0xae, 0x88, 0x47, 0x0d, 0x23,
+    0x4c, 0xac, 0x55, 0xaa, 0xd4, 0x4a, 0xc9, 0x1a, 0xdc, 0x3c, 0xbf, 0x4f, 0x1c, 0xd0, 0x0b, 0x69,
+    0x90, 0x1d, 0x8f, 0xe5, 0xf6, 0xbf, 0x08, 0x23, 0xbd, 0x18, 0x27, 0x47, 0xdb, 0xad, 0x25, 0x61,
+    0xd6, 0xec, 0xdc, 0x80, 0x51, 0xa9, 0xa7, 0x31, 0x5c, 0x9c, 0xef, 0x45, 0xca, 0x99, 0xdd, 0xc9,
+    0x71, 0xb2, 0xe6, 0x75, 0xe3, 0xe9, 0xec, 0x12, 0x4d, 0xb6, 0x15, 0x9b, 0x7f, 0xa6, 0x86, 0x78,
+    0x55, 0xcf, 0x87, 0x73, 0xbe, 0x27, 0x10, 0x87, 0x2c, 0xdc, 0x70, 0xe0, 0xee, 0x78, 0x08, 0x17,
+    0x39, 0x4f, 0xce, 0xb4, 0xf9, 0xd8, 0x33, 0x6c, 0x2f, 0xa2, 0xb4, 0x41, 0xb3, 0x1d, 0xba, 0x3d,
+    0xa7, 0x76, 0xe3, 0xf6, 0x8f, 0xa1, 0x39, 0xe2, 0xdc, 0x00, 0x08, 0x1f, 0x19, 0xec, 0x6b, 0x60,
+    0x39, 0xb3, 0x47, 0xb2, 0x68, 0x09, 0x0b, 0xb2, 0x10, 0xa2, 0x36, 0xaf, 0x2b, 0xaa, 0x8f, 0x6e,
+    0x3d, 0x1b, 0xdd, 0x21, 0xea, 0xa5, 0x3c, 0x9d, 0x4d, 0xf9, 0xf5, 0xd8, 0xe0, 0xd6, 0x8e, 0xe8,
+    0x0d, 0xb3, 0x2b, 0xd2, 0xdc, 0xa0, 0xc2, 0x54, 0x2d, 0x5d, 0xc8, 0x8f, 0xf1, 0x8e, 0x5d, 0x48,
+    0x06, 0x92, 0x6c, 0x56, 0xe5, 0x4e, 0x04, 0x5d, 0x77, 0x29, 0x4f, 0x5b, 0xb5, 0x7d, 0x3c, 0x84,
+    0xf7, 0xb9, 0xce, 0x9f, 0x42, 0xb8, 0x6f, 0x53, 0xd2, 0xef, 0x57, 0x75, 0xe1, 0xde, 0x5c, 0x9b,
+    0xf2, 0x40, 0x58, 0xc8, 0x05, 0x4f, 0x80, 0x92, 0x97, 0x6e, 0xe4, 0xa1, 0xef, 0x1c, 0x47, 0xb6,
+    0x6a, 0x49, 0x99, 0xba, 0xfd, 0x6a, 0x74, 0xfb, 0xfa, 0xa9, 0x8c, 0x09, 0xda, 0xaa, 0xc7, 0x58,
+    0x61, 0x6a, 0xd5, 0x4e, 0x96, 0x11, 0xee, 0x09, 0x6c, 0x8e, 0x0b, 0x6c, 0xd6, 0x2b, 0xce, 0x78,
+    0x55, 0x91, 0xc7, 0xda, 0x03, 0xf6, 0x18, 0x20, 0x22, 0xb0, 0x59, 0x07, 0xa1, 0xbf, 0x92, 0xa5,
+    0x56, 0x97, 0x24, 0xda, 0x95, 0xf4, 0xf8, 0x11, 0xe2, 0x07, 0x72, 0x5a, 0xb5, 0x84, 0x15, 0xee,
+    0x91, 0x2c, 0xfa, 0xf0, 0x4c, 0x10, 0xe3, 0x98, 0x2c, 0x14, 0xe5, 0xfb, 0x13, 0x29, 0x45, 0x79,
+    0x8d, 0x79, 0x81, 0x67, 0xa3, 0xe9, 0x6c, 0xad, 0x56, 0xa8, 0x47, 0xc5, 0x8d, 0xa0, 0x52, 0xae,
+    0x1f, 0xb9, 0x21, 0x6e, 0xd6, 0xc1, 0x02, 0x8a, 0x95, 0xd1, 0x0c, 0xf7, 0x76, 0xe3, 0xbd, 0x79,
+    0xfa, 0xaa, 0xc7, 0x59, 0x21, 0x57, 0xda, 0xa2, 0xaf, 0x7a, 0x99, 0x65, 0x79, 0xa3, 0xb1, 0xe5,
+    0x73, 0x64, 0x68, 0x78, 0x6e, 0x9c, 0xf4, 0xb2, 0x61, 0xe2, 0xa9, 0xea, 0xaf, 0x18, 0x7f, 0x20,
+    0x90, 0x95, 0x55, 0xc2, 0x66, 0x59, 0x73, 0xb3, 0xb3, 0xec, 0xca, 0xca, 0x19, 0x88, 0x2f, 0x1e,
+    0xe8, 0xf0, 0x26, 0xb1, 0x2c, 0xe8, 0x4c, 0xcd, 0x25, 0xae, 0x66, 0x06, 0xba, 0xdc, 0x87, 0x9a,
+    0x71, 0x2b, 0x25, 0xe2, 0xc4, 0x03, 0xf4, 0xa4, 0x85, 0xe9, 0xa2, 0xee, 0x62, 0xdf, 0xf1, 0x2c,
+    0x27, 0x03, 0x7e, 0xcb, 0x1a, 0xd8, 0x12, 0xa7, 0xac, 0xa5, 0x33, 0xd1, 0x13, 0x6f, 0xcd, 0x25,
+    0x7e, 0xba, 0xf4, 0x98, 0x94, 0xae, 0xf9, 0x00, 0xa1, 0xc9, 0xf2, 0x66, 0x35, 0x4d, 0x7a, 0xf0,
+    0x30, 0x3e, 0xf8, 0xc2, 0x48, 0xbf, 0xd1, 0x0d, 0x5c, 0x0f, 0x54, 0x18, 0x02, 0x15, 0x71, 0x56,
+    0x6b, 0xae, 0x2d, 0x60, 0x8b, 0x86, 0x15, 0x87, 0x1f, 0xe4, 0x10, 0x04, 0x06, 0x8e, 0xa6, 0x70,
+    0x96, 0xa5, 0x7b, 0xd0, 0x4e, 0x06, 0xb0, 0x2b, 0xc7, 0xe6, 0xa8, 0x0b, 0x08, 0x21, 0x25, 0xc8,
+    0xf7, 0x4f, 0xe2, 0xa4, 0x14, 0x03, 0xb9, 0x10, 0xe9, 0xe1, 0x2b, 0x82, 0x16, 0x9e, 0x1e, 0x9c,
+    0xe8, 0x19, 0x63, 0x5f, 0x42, 0x2f, 0x44, 0x9b, 0xb1, 0x03, 0x07, 0xb0, 0x64, 0x3a, 0xce, 0xa5,
+    0x5e, 0x00, 0xab, 0x6c, 0xbe, 0x90, 0x0b, 0x8c, 0x81, 0x1c, 0x16, 0xf4, 0x41, 0x1b, 0xb0, 0xe2,
+    0x48, 0xe1, 0x74, 0x2e, 0x64, 0x60, 0x32, 0x9d, 0x8d, 0x0d, 0xf3, 0x5b, 0x7b, 0x20, 0x07, 0x5a,
+    0xf4, 0x68, 0x27, 0x9e, 0x8c, 0x93, 0x92, 0x0c, 0x10, 0x8a, 0x99, 0x2e, 0xc6, 0x36, 0x91, 0x73,
+    0x14, 0x97, 0xbc, 0x2c, 0x8a, 0x60, 0x38, 0xac, 0x2d, 0x7f, 0x97, 0x52, 0x04, 0x3d, 0x94, 0xd7,
+    0xee, 0xa5, 0xeb, 0x46, 0xe7, 0x84, 0x9b, 0xb5, 0xba, 0x51, 0x51, 0x4a, 0x5c, 0x24, 0xee, 0x00,
+    0x40, 0xdc, 0x2f, 0x0b, 0x17, 0x73, 0x4b, 0x22, 0x72, 0x9d, 0xb8, 0x5d, 0x65, 0xb7, 0x29, 0x35,
+    0x5a, 0x2a, 0xdd, 0xde, 0xf4, 0x08, 0xc6, 0xf9, 0x61, 0x12, 0xcb, 0xd8, 0x95, 0x77, 0xc2, 0x43,
+    0x09, 0x95, 0xeb, 0x4d, 0x90, 0x36, 0x30, 0xf0, 0x97, 0xee, 0x0d, 0x4d, 0x97, 0xb4, 0x4b, 0x33,
+    0x5a, 0x91, 0x79, 0x97, 0xf8, 0xf1, 0xa6, 0xf0, 0xa0, 0x83, 0x59, 0xa7, 0xf3, 0x7d, 0x5b, 0xa2,
+    0x57, 0xf6, 0x06, 0xa1, 0x1a, 0xd1, 0x26, 0x86, 0x1f, 0xa6, 0x3b, 0x7f, 0x81, 0x5c, 0x27, 0x6e,
+    0x0c, 0xe5, 0xda, 0x65, 0xf9, 0x12, 0x28, 0x46, 0x96, 0x55, 0x89, 0x56, 0xc7, 0xe3, 0xf6, 0xb9,
+    0xb0, 0x02, 0xd2, 0x58, 0x7e, 0xea, 0xf2, 0x00, 0xdd, 0xd2, 0x2f, 0x83, 0xc1, 0xaa, 0xbd, 0x08,
+    0x0e, 0x08, 0x7c, 0x5e, 0xc9, 0x55, 0x0d, 0xd2, 0x4d, 0x52, 0x21, 0x2d, 0x5d, 0x17, 0xc4, 0x9c,
+    0xaa, 0x91, 0xe4, 0x6d, 0x50, 0xe9, 0xf9, 0x72, 0x1c, 0xa8, 0x75, 0xa0, 0x42, 0x9b, 0x9d, 0x65,
+    0x45, 0x99, 0x73, 0x53, 0xed, 0x8a, 0x79, 0x1f, 0x29, 0x23, 0xa9, 0x3a, 0x42, 0x49, 0x94, 0x2a,
+    0x41, 0xf2, 0xfc, 0x24, 0x66, 0x0d, 0xc8, 0x19, 0x0d, 0x99, 0xfb, 0x25, 0x08, 0xe0, 0xcc, 0xdd,
+    0xd2, 0x3a, 0x2d, 0x26, 0x03, 0x8a, 0xec, 0xba, 0x04, 0x8e, 0x2e, 0x83, 0xdb, 0xb7, 0x06, 0x62,
+    0x01, 0x3e, 0x0a, 0x83, 0xe3, 0x88, 0x5a, 0x6d, 0x92, 0xef, 0x7f, 0xbd, 0x78, 0xb2, 0xd0, 0x89,
+    0x27, 0x86, 0x34, 0xee, 0x06, 0xc7, 0x09, 0x21, 0xd8, 0xbe, 0xc9, 0xae, 0xd3, 0x5c, 0xcd, 0x47,
+    0x18, 0x7b, 0x0a, 0x1d, 0xdc, 0xbe, 0x54, 0x03, 0xf1, 0x88, 0x5f, 0xb2, 0x09, 0x0d, 0xf2, 0xda,
+    0x28, 0x70, 0x37, 0x9a, 0x1d, 0x0f, 0xca, 0x15, 0xb3, 0x59, 0xaf, 0xd8, 0xc3, 0xb2, 0x3d, 0x55,
+    0xdb, 0xc2, 0x59, 0x7e, 0x4c, 0xd5, 0xb6, 0xb0, 0x30, 0x21, 0xae, 0xca, 0xb4, 0x5a, 0x88, 0xaa,
+    0xda, 0xc6, 0x5a, 0xb8, 0x9a, 0x9f, 0xe2, 0x24, 0xf7, 0xbd, 0x18, 0x96, 0x70, 0x83, 0xed, 0x11,
+    0x07, 0xc3, 0x5f, 0x06, 0x83, 0x0d, 0x7a, 0x7b, 0x1f, 0xb7, 0x6f, 0xed, 0xb8, 0xd9, 0xe2, 0xe0,
+    0x02, 0x7e, 0xac, 0x38, 0xb8, 0x94, 0xbf, 0xc7, 0x37, 0xb6, 0x6a, 0xc7, 0xb8, 0x7b, 0x97, 0xf2,
+    0x13, 0x6a, 0xdf, 0x1a, 0x8f, 0x0c, 0x4a, 0x36, 0x35, 0x0b, 0x97, 0x89, 0xc7, 0x5b, 0x43, 0x4b,
+    0x8c, 0x4a, 0xf4, 0x30, 0x33, 0xe7, 0x84, 0x0d, 0xe7, 0xbe, 0xaf, 0x52, 0xf4, 0xe1, 0x10, 0x31,
+    0x26, 0x78, 0x7d, 0xb1, 0xd5, 0x43, 0x2c, 0xee, 0xc7, 0xed, 0xc2, 0x23, 0x64, 0x70, 0xd7, 0xd7,
+    0x18, 0x48, 0xdc, 0xe6, 0x06, 0x80, 0x4d, 0x2c, 0x9e, 0x0c, 0xba, 0x1e, 0x00, 0x1b, 0x4b, 0xc5,
+    0x19, 0x09, 0x12, 0xbd, 0xb7, 0xb9, 0x9a, 0x52, 0xa8, 0xa9, 0x1e, 0xc2, 0xad, 0x13, 0x4e, 0xc4,
+    0xa3, 0x69, 0xd1, 0x13, 0x61, 0xcf, 0x92, 0xe9, 0x1a, 0x59, 0x95, 0x65, 0xf3, 0x83, 0x89, 0xc1,
+    0x43, 0x94, 0x88, 0x60, 0x34, 0xa4, 0xd2, 0xc2, 0xb9, 0x36, 0x05, 0x46, 0x50, 0xb4, 0x0e, 0x30,
+    0x74, 0x15, 0x63, 0x64, 0x56, 0x11, 0x26, 0xad, 0x8b, 0xaa, 0x7a, 0x39, 0xc0, 0xf0, 0x79, 0x18,
+    0xb6, 0x08, 0x13, 0x02, 0x42, 0x67, 0x40, 0xe8, 0x56, 0xbe, 0x99, 0x45, 0x69, 0xb6, 0x29, 0x2e,
+    0x35, 0x79, 0xf6, 0x5c, 0x1b, 0x67, 0x6c, 0xc9, 0xb2, 0x05, 0x35, 0x27, 0xcb, 0x0e, 0x4b, 0x44,
+    0x17, 0xd5, 0x47, 0xad, 0x61, 0x4c, 0xd7, 0x5a, 0x18, 0xa4, 0x44, 0x87, 0x02, 0xfe, 0xa9, 0xda,
+    0x13, 0xbc, 0x39, 0x64, 0x4e, 0x28, 0xcf, 0x54, 0xc0, 0x71, 0x91, 0xcb, 0x34, 0xe4, 0x49, 0x2d,
+    0xf1, 0x42, 0xe2, 0x90, 0x68, 0x08, 0x9a, 0x56, 0x52, 0xa6, 0x6f, 0x4a, 0x8a, 0xfe, 0x74, 0x12,
+    0x84, 0xf3, 0x49, 0x31, 0x57, 0xe0, 0x47, 0x82, 0x8c, 0x2b, 0x23, 0xae, 0x29, 0x63, 0x38, 0x9c,
+    0xcf, 0xd0, 0xf8, 0xf6, 0x39, 0xf7, 0xa6, 0xd3, 0xad, 0x89, 0x4f, 0x60, 0x3e, 0x4e, 0x1e, 0x9e,
+    0x7d, 0x37, 0xd0, 0xe8, 0x59, 0xa2, 0x51, 0xef, 0xac, 0x7a, 0x29, 0x4c, 0xca, 0xd6, 0x78, 0xbe,
+    0x1a, 0x17, 0x9e, 0xa3, 0x17, 0xdb, 0x18, 0xd5, 0xa1, 0x67, 0x65, 0xa3, 0xa5, 0x4b, 0x54, 0x9e,
+    0x50, 0xe9, 0x0b, 0x59, 0x49, 0x20, 0xb1, 0x4c, 0xaf, 0x44, 0xa9, 0x24, 0x86, 0x2a, 0x45, 0x77,
+    0x87, 0x38, 0x90, 0xcf, 0xbd, 0xa1, 0x3a, 0x03, 0x70, 0x16, 0x72, 0xd6, 0xaf, 0xe5, 0xe4, 0x0e,
+    0x71, 0x70, 0x1a, 0x97, 0xea, 0x09, 0xd5, 0x91, 0xe6, 0xfe, 0x76, 0x2e, 0x53, 0x2d, 0xda, 0x20,
+    0x81, 0x82, 0x7e, 0x75, 0xb1, 0xc6, 0xd3, 0x60, 0xb3, 0xa2, 0x6a, 0xe3, 0xf4, 0x75, 0x4f, 0x4f,
+    0x64, 0x53, 0x7c, 0x37, 0xbc, 0x90, 0xd5, 0xae, 0x0b, 0x86, 0x0e, 0x00, 0x92, 0xa3, 0xad, 0x0b,
+    0xab, 0x9b, 0xbd, 0xa4, 0x43, 0x98, 0x64, 0xec, 0x4b, 0x87, 0xd0, 0x32, 0xa6, 0x4e, 0xf3, 0x60,
+    0x5d, 0xbc, 0x31, 0x7d, 0x49, 0x07, 0xdf, 0x63, 0x6c, 0x59, 0xd2, 0xc1, 0xbd, 0xeb, 0x91, 0xd3,
+    0x22, 0x03, 0xbe, 0x30, 0xa3, 0x7b, 0x38, 0x8c, 0x50, 0x51, 0x73, 0x87, 0x19, 0x79, 0xeb, 0x11,
+    0x70, 0x44, 0x27, 0x0d, 0x62, 0x60, 0x1a, 0x77, 0x78, 0x22, 0x97, 0xea, 0x27, 0xe7, 0xc5, 0x53,
+    0x06, 0x79, 0xe5, 0x11, 0xf1, 0x16, 0xd0, 0x35, 0x68, 0x1a, 0x12, 0x1e, 0x56, 0xb1, 0x2e, 0xa3,
+    0xf0, 0x9a, 0x44, 0xe8, 0xc9, 0x1d, 0x8e, 0x36, 0xca, 0x99, 0x47, 0x48, 0x13, 0x40, 0x52, 0xb0,
+    0x01, 0x80, 0x27, 0x67, 0xc4, 0xe3, 0x6a, 0xe9, 0x62, 0xba, 0xe9, 0x2a, 0xff, 0x17, 0x18, 0xb9,
+    0x75, 0xe4, 0xc8, 0x77, 0xed, 0x0f, 0xb8, 0x0f, 0x50, 0x32, 0x03, 0x9e, 0xef, 0x0b, 0xda, 0x15,
+    0x90, 0x8d, 0xb9, 0xeb, 0xe2, 0x1e, 0x7b, 0x34, 0xee, 0x51, 0x61, 0x22, 0x4c, 0xf3, 0x1e, 0xd3,
+    0x2d, 0xd0, 0x4f, 0xe1, 0x7f, 0x7d, 0x13, 0xc0, 0x73, 0x45, 0x71, 0xef, 0xba, 0xb9, 0x7d, 0x6e,
+    0x39, 0x8d, 0x09, 0x8c, 0x0a, 0x01, 0x04, 0xbd, 0xab, 0x8f, 0x4f, 0x5b, 0x6d, 0x0c, 0x50, 0x9a,
+    0x74, 0x4b, 0xc0, 0xab, 0x00, 0x4d, 0x4b, 0xe4, 0xe4, 0x23, 0xe4, 0x38, 0x52, 0x31, 0x00, 0x54,
+    0x5c, 0x90, 0x53, 0x8e, 0xa0, 0x91, 0x6a, 0x15, 0x9b, 0x0d, 0x90, 0x2e, 0x42, 0x4d, 0x83, 0xa9,
+    0x51, 0x98, 0x6c, 0x74, 0xd7, 0xb4, 0xf0, 0x31, 0xa6, 0x21, 0x1c, 0xc4, 0xe3, 0xe3, 0x60, 0x90,
+    0x71, 0x46, 0xf7, 0x92, 0x36, 0x18, 0x08, 0x47, 0x19, 0xe1, 0xbd, 0x21, 0xe8, 0x87, 0xf5, 0xa8,
+    0xda, 0xc1, 0xb2, 0x8c, 0x9c, 0xc4, 0x0a, 0x7d, 0x77, 0x9d, 0x98, 0x16, 0xc8, 0x3e, 0x72, 0x07,
+    0xb7, 0xe2, 0xa3, 0x30, 0x88, 0xb4, 0x2b, 0x1f, 0x31, 0xea, 0x61, 0x84, 0xc5, 0x6f, 0x3a, 0xc9,
+    0x3f, 0x5e, 0x65, 0x62, 0xb8, 0xb7, 0x1a, 0x45, 0xd0, 0x86, 0xb7, 0x9b, 0x6a, 0xae, 0x0a, 0x0b,
+    0x0f, 0xa3, 0x45, 0x33, 0x79, 0x0f, 0xd3, 0xf0, 0xe9, 0x5c, 0xf9, 0xac, 0xe4, 0xda, 0xb4, 0xe5,
+    0xfe, 0x0c, 0x72, 0x52, 0x70, 0xcb, 0xe6, 0xee, 0x12, 0x0d, 0xfa, 0x4a, 0xe5, 0x9b, 0x79, 0x6a,
+    0xe4, 0xeb, 0x86, 0x98, 0xda, 0x9d, 0x89, 0x0e, 0x37, 0x48, 0x45, 0x1d, 0x8a, 0x84, 0x5b, 0xd1,
+    0x00, 0x17, 0x58, 0xb7, 0xac, 0x49, 0xea, 0x6f, 0x67, 0x9a, 0x43, 0x0d, 0xdc, 0x61, 0x0f, 0x39,
+    0x56, 0xd5, 0xf0, 0xeb, 0xaa, 0xc1, 0x88, 0x2d, 0x11, 0xa2, 0xfb, 0x77, 0xbe, 0x99, 0x58, 0x3c,
+    0x12, 0x2c, 0xb6, 0xf8, 0xb8, 0x2a, 0x4f, 0xab, 0xe8, 0x6e, 0x35, 0x9e, 0x5e, 0x59, 0x75, 0x2b,
+    0x0a, 0xa6, 0x3f, 0x62, 0x06, 0x90, 0xa7, 0x99, 0xf5, 0x20, 0x38, 0x9e, 0x81, 0x59, 0xc0, 0x23,
+    0x63, 0x0b, 0x77, 0x78, 0x1a, 0x69, 0xd7, 0xfc, 0x7a, 0x19, 0xf6, 0x6c, 0xfc, 0x9d, 0x2f, 0x06,
+    0x0a, 0x47, 0xd4, 0x42, 0x8b, 0x6f, 0x1c, 0x14, 0x5a, 0x97, 0x45, 0x6e, 0x59, 0x20, 0x36, 0xb6,
+    0x8a, 0xb7, 0x03, 0xfc, 0x7d, 0x04, 0xb7, 0x2a, 0xa5, 0x4a, 0x7d, 0xff, 0x37, 0xdc, 0xee, 0x53,
+    0x6c, 0x1b, 0x64, 0xa4, 0x7e, 0xb6, 0x87, 0x5c, 0xf4, 0x0c, 0xce, 0x62, 0xdb, 0x27, 0xb6, 0x81,
+    0x6f, 0x4a, 0x21, 0x5e, 0xdf, 0xa7, 0xb0, 0x26, 0x60, 0xd2, 0xc2, 0x88, 0x1e, 0xc0, 0x8f, 0x8d,
+    0x98, 0x11, 0x0a, 0x40, 0x25, 0xae, 0x3c, 0xb7, 0x8f, 0x43, 0x3b, 0x3b, 0x15, 0x28, 0x71, 0xb5,
+    0x08, 0xf7, 0x00, 0x1f, 0xb5, 0xf4, 0x64, 0x5d, 0xdb, 0x35, 0x17, 0xec, 0x86, 0x77, 0xcc, 0x42,
+    0xf9, 0x19, 0xd6, 0x67, 0x84, 0xea, 0x1e, 0x7a, 0xc0, 0xa2, 0xb5, 0x2b, 0x8e, 0x21, 0x7c, 0x00,
+    0xa7, 0xc2, 0xf6, 0xfa, 0x62, 0x33, 0xea, 0xc6, 0x2e, 0x5b, 0xc8, 0x4f, 0x84, 0x14, 0x11, 0xcf,
+    0x64, 0x3a, 0x80, 0xb9, 0xb5, 0xe1, 0x19, 0xa9, 0xbe, 0xae, 0x8c, 0x3d, 0x0b, 0xab, 0x1e, 0x5f,
+    0xc8, 0x7f, 0x5d, 0x12, 0xe6, 0x5c, 0x9b, 0x81, 0x7b, 0x82, 0xaf, 0x50, 0xac, 0x34, 0x05, 0xc2,
+    0x1d, 0xda, 0x92, 0x70, 0xe7, 0x3a, 0x5a, 0x5f, 0x7a, 0xb7, 0xfe, 0x37, 0x6a, 0x7d, 0x2e, 0xad,
+    0xcf, 0x0d, 0xd5, 0xf3, 0xdb, 0x4b, 0x34, 0xce, 0x7c, 0x5a, 0x97, 0x3a, 0x5c, 0xf7, 0x3c, 0xc0,
+    0xbd, 0x4a, 0xf7, 0x1a, 0x17, 0x0e, 0xd7, 0x2d, 0x86, 0xb1, 0x66, 0xa6, 0x61, 0xdd, 0xf4, 0xbb,
+    0x38, 0x9f, 0x46, 0x4b, 0x98, 0x1a, 0x30, 0xf9, 0xb9, 0x9a, 0x6c, 0x78, 0xac, 0x5a, 0xb2, 0x90,
+    0xab, 0x59, 0x81, 0x89, 0x60, 0xf8, 0xc2, 0xae, 0x1c, 0xf8, 0x4d, 0xad, 0xda, 0x1e, 0x58, 0x28,
+    0xaf, 0x0b, 0x08, 0x10, 0x6f, 0x98, 0x7a, 0xb9, 0xb7, 0xdc, 0x5e, 0x4d, 0x38, 0x58, 0x64, 0xb1,
+    0x29, 0xac, 0xeb, 0xde, 0x7f, 0xd4, 0xcc, 0x36, 0xaa, 0xd8, 0xd2, 0x1a, 0xb1, 0x85, 0x33, 0x37,
+    0x7a, 0x47, 0x6c, 0x3d, 0xa0, 0x4e, 0xe8, 0xea, 0xf2, 0xb4, 0xb2, 0x19, 0x62, 0xfa, 0x9b, 0xde,
+    0x88, 0x17, 0x17, 0x80, 0x0d, 0x7b, 0x0f, 0x77, 0x20, 0xa5, 0xf1, 0xef, 0x3d, 0x06, 0x2e, 0xba,
+    0x85, 0x7b, 0xab, 0xc1, 0xd0, 0x50, 0x35, 0xc8, 0x0a, 0x7a, 0xe5, 0x27, 0xaf, 0xb0, 0x23, 0xdb,
+    0xc4, 0x5b, 0xe1, 0x07, 0xce, 0xa7, 0x40, 0x2e, 0x9b, 0x09, 0x89, 0x2b, 0x97, 0x76, 0xec, 0x63,
+    0x16, 0xbe, 0xb2, 0x14, 0x99, 0x46, 0xba, 0x9a, 0x80, 0x70, 0xd3, 0xae, 0xfc, 0x9c, 0x3e, 0x6b,
+    0x9d, 0xb3, 0x71, 0xaf, 0x97, 0x57, 0x1b, 0xc0, 0x50, 0xfe, 0x78, 0x12, 0x7d, 0x02, 0xad, 0x5d,
+    0x16, 0xda, 0xf9, 0x5d, 0x54, 0x3f, 0x19, 0x60, 0x0e, 0x5c, 0x4d, 0xc2, 0x3c, 0x79, 0xfe, 0x0c,
+    0x0d, 0x4d, 0xcd, 0xb2, 0x9c, 0x36, 0x40, 0xad, 0x2c, 0x55, 0xb1, 0x28, 0x3f, 0x69, 0x60, 0x18,
+    0xa5, 0xe8, 0x5f, 0xd4, 0xed, 0xf8, 0xd2, 0x30, 0xc6, 0x19, 0x0f, 0xfc, 0x54, 0x66, 0xa8, 0x68,
+    0x95, 0x5f, 0xb6, 0x0f, 0x5f, 0xd7, 0xe8, 0x4e, 0x0c, 0x86, 0xbf, 0x5c, 0x8d, 0x87, 0x66, 0x5a,
+    0x31, 0x7b, 0xd8, 0x71, 0x96, 0x38, 0xae, 0xe6, 0x13, 0x5a, 0xd2, 0x4b, 0x15, 0xd1, 0xdc, 0xee,
+    0x0a, 0x0d, 0xee, 0xe7, 0x10, 0xc1, 0x0f, 0x72, 0x36, 0xc4, 0x9e, 0x84, 0xe4, 0x6e, 0x72, 0x4e,
+    0x74, 0x09, 0x63, 0x25, 0x39, 0xed, 0xd9, 0x44, 0x38, 0x6b, 0x57, 0x4a, 0xaf, 0xa8, 0xb9, 0x8e,
+    0x87, 0x9c, 0x13, 0xb7, 0x1b, 0x58, 0x08, 0x95, 0x84, 0xa9, 0x52, 0xea, 0x3c, 0x63, 0x33, 0x39,
+    0x26, 0x3d, 0x31, 0xdf, 0xd8, 0x13, 0xe9, 0x21, 0x6d, 0x5c, 0xcd, 0x97, 0xe8, 0x1c, 0x2d, 0x9d,
+    0xc1, 0x1d, 0x1e, 0x71, 0x7b, 0x3c, 0x23, 0xa5, 0x46, 0x83, 0x7b, 0x17, 0x26, 0x73, 0xbb, 0x53,
+    0x35, 0x56, 0xa5, 0x33, 0x36, 0x18, 0x76, 0xc4, 0x43, 0xbd, 0x64, 0x4b, 0x24, 0x39, 0x27, 0xa4,
+    0x27, 0x16, 0x13, 0x4b, 0xb3, 0xbc, 0x27, 0xa0, 0xde, 0x2d, 0x5a, 0xe1, 0xf7, 0x0c, 0x45, 0x92,
+    0x7e, 0x4f, 0x60, 0x56, 0xae, 0x3d, 0x2b, 0x5b, 0x19, 0xf8, 0x9f, 0xd0, 0xb0, 0x39, 0x97, 0xfb,
+    0xaf, 0x11, 0x73, 0x2b, 0xe8, 0xc9, 0x65, 0xf6, 0x1c, 0x9e, 0x68, 0xef, 0xbe, 0xc5, 0x0e, 0x49,
+    0x96, 0x13, 0xf7, 0x5b, 0x5a, 0x25, 0x73, 0x73, 0xac, 0xdf, 0xd8, 0x17, 0xd9, 0xcc, 0xb9, 0xfe,
+    0x1b, 0x3d, 0xd1, 0x76, 0x8d, 0xf4, 0x84, 0x46, 0xca, 0xeb, 0xe0, 0x76, 0x5f, 0x80, 0x84, 0xbc,
+    0xff, 0x4b, 0xcc, 0xc3, 0xb4, 0xe1, 0xe6, 0xa3, 0x93, 0x73, 0x2e, 0xe7, 0x66, 0x5b, 0x03, 0x15,
+    0xf1, 0x36, 0xe5, 0x8f, 0x57, 0x83, 0xc7, 0x8d, 0xfc, 0x74, 0x08, 0x98, 0xb8, 0x9a, 0x77, 0x91,
+    0xdc, 0xa6, 0x80, 0x78, 0x0e, 0x3c, 0x61, 0x24, 0x08, 0x9b, 0x8c, 0x3b, 0x9d, 0x07, 0x60, 0x1e,
+    0x2c, 0x4d, 0x0c, 0x3b, 0xc9, 0x13, 0xf3, 0x70, 0xe7, 0xa8, 0x62, 0xbe, 0x04, 0x31, 0xa2, 0x39,
+    0x86, 0x1c, 0x23, 0x9e, 0x84, 0x5b, 0x52, 0x65, 0xdc, 0xf4, 0x4a, 0x85, 0xb4, 0x4a, 0x79, 0xfe,
+    0xfe, 0xaf, 0xb9, 0xdd, 0xbd, 0xec, 0x39, 0x29, 0xe7, 0x6c, 0x42, 0x83, 0x64, 0x6e, 0x8f, 0xf5,
+    0x27, 0x9c, 0x51, 0x4d, 0x95, 0xd7, 0x74, 0x81, 0x0c, 0x40, 0x12, 0x06, 0x69, 0x5e, 0x65, 0x37,
+    0xe4, 0x7b, 0xa0, 0xd0, 0xec, 0x00, 0x98, 0xc4, 0xf0, 0xac, 0x78, 0x5b, 0xb6, 0x55, 0x59, 0x1c,
+    0x8f, 0x69, 0x9b, 0x02, 0xd2, 0xce, 0x5e, 0x05, 0x22, 0x27, 0xde, 0x90, 0x04, 0xff, 0xd2, 0xca,
+    0x18, 0xd2, 0x3a, 0xdd, 0x1c, 0x07, 0x6b, 0xc3, 0xed, 0xda, 0x00, 0xda, 0xba, 0x87, 0x45, 0xdb,
+    0x2f, 0x1e, 0x4d, 0x54, 0xcf, 0x60, 0x7e, 0x9f, 0x44, 0x17, 0x7d, 0xe5, 0x77, 0x77, 0x97, 0xf8,
+    0x69, 0xb9, 0xf2, 0x9d, 0x92, 0xa7, 0xf1, 0xca, 0xc2, 0xc0, 0x1c, 0xd5, 0x06, 0xb6, 0xfc, 0x89,
+    0x05, 0x8f, 0x23, 0x69, 0x64, 0xdc, 0x7b, 0x86, 0x2c, 0xeb, 0xd6, 0xac, 0x12, 0xa6, 0xe4, 0x69,
+    0xc8, 0x00, 0xd0, 0x50, 0x7e, 0x45, 0x15, 0x0c, 0xef, 0x74, 0x9e, 0x4f, 0x46, 0x85, 0xfb, 0xfd,
+    0xad, 0x90, 0x12, 0xea, 0x8d, 0xee, 0xbe, 0x46, 0x96, 0x26, 0xa9, 0xa4, 0x87, 0xbf, 0xdf, 0x77,
+    0xb8, 0xba, 0xf2, 0x3d, 0x08, 0x71, 0x18, 0x61, 0xa6, 0x64, 0xbe, 0x8c, 0xb7, 0x6c, 0x52, 0xc0,
+    0xe3, 0xb5, 0x93, 0x14, 0xad, 0x64, 0x6e, 0x95, 0x2c, 0x67, 0xf1, 0xf4, 0x2b, 0x2c, 0x44, 0xde,
+    0xd3, 0xa3, 0xee, 0x68, 0xa4, 0x81, 0x71, 0x92, 0x2b, 0x21, 0x1b, 0x1c, 0x8b, 0xdb, 0x33, 0xb6,
+    0x12, 0xd6, 0xe6, 0xc4, 0x93, 0xfa, 0x5c, 0xbb, 0x52, 0xa8, 0x8e, 0xce, 0xed, 0x1b, 0xfb, 0xf1,
+    0xcb, 0x9c, 0x8b, 0x87, 0x4a, 0xda, 0x7a, 0x52, 0x6d, 0x4d, 0x0f, 0xb5, 0x9a, 0x6f, 0x60, 0x73,
+    0x0e, 0x3b, 0xdc, 0xfd, 0x8a, 0x0a, 0x30, 0x77, 0x34, 0xc0, 0xe2, 0x50, 0xff, 0xbf, 0xa9, 0xcd,
+    0x63, 0x46, 0x37, 0x4f, 0xa1, 0xfd, 0xe9, 0x69, 0x1d, 0xf1, 0xcb, 0xc2, 0x1f, 0x6d, 0x59, 0xb6,
+    0x12, 0x8d, 0xdd, 0xaa, 0x5c, 0xa5, 0xe6, 0x30, 0xa6, 0x1e, 0x1b, 0xac, 0xce, 0x93, 0xc9, 0x18,
+    0xa6, 0x0f, 0xdc, 0x3b, 0xbc, 0xcd, 0x73, 0x05, 0x77, 0x9c, 0x30, 0x0b, 0xb2, 0x59, 0x6d, 0x25,
+    0xe1, 0x74, 0xff, 0xe4, 0xd3, 0x60, 0x0f, 0x0d, 0xed, 0x31, 0x27, 0x0d, 0x7b, 0x78, 0xef, 0xf6,
+    0xf8, 0x03, 0xdd, 0x86, 0xaa, 0x0f, 0x0f, 0xf6, 0x79, 0x98, 0xf6, 0xd9, 0x16, 0xec, 0x13, 0x4e,
+    0xfb, 0x4c, 0xa3, 0x7d, 0xde, 0x08, 0xf5, 0xe1, 0x77, 0xd8, 0xd4, 0x06, 0x5b, 0x49, 0x36, 0x85,
+    0x7e, 0xe2, 0x1f, 0x40, 0x17, 0x0e, 0x43, 0xaf, 0x06, 0xec, 0x11, 0xa3, 0x28, 0x9a, 0x1e, 0x84,
+    0x8f, 0xa0, 0xf0, 0x78, 0x20, 0x61, 0x57, 0x16, 0x0f, 0xc3, 0xcf, 0xb4, 0x95, 0x84, 0xd9, 0x9c,
+    0x4b, 0x80, 0xdc, 0x5c, 0x04, 0xfe, 0xdb, 0x6d, 0x0a, 0xec, 0xa8, 0xae, 0xbc, 0x61, 0xfb, 0x16,
+    0xd2, 0x46, 0xbc, 0xf6, 0x95, 0x16, 0x5a, 0x31, 0x75, 0x47, 0xc0, 0xd8, 0x97, 0xab, 0x2c, 0x57,
+    0xbd, 0x03, 0x84, 0x2a, 0xd3, 0x8c, 0x6e, 0x59, 0xb8, 0x69, 0x05, 0xdf, 0xea, 0xac, 0x07, 0x26,
+    0xda, 0x73, 0x95, 0x4f, 0x54, 0x14, 0xd2, 0xc3, 0x98, 0x0b, 0x81, 0x8b, 0xbf, 0x9b, 0x0a, 0x45,
+    0xe3, 0x8e, 0xa2, 0xab, 0x03, 0xe3, 0xca, 0xa7, 0x71, 0x7b, 0xb6, 0x7c, 0x76, 0xd0, 0x13, 0xff,
+    0x89, 0x95, 0x96, 0xb9, 0xa8, 0x08, 0x0e, 0x79, 0x86, 0xa8, 0x08, 0xda, 0x73, 0x55, 0x40, 0xea,
+    0xb1, 0x9f, 0xba, 0x3d, 0x52, 0x10, 0x83, 0x0d, 0xca, 0xf4, 0xfe, 0x90, 0x38, 0x4e, 0x09, 0x09,
+    0x63, 0x3d, 0xbd, 0xe4, 0x51, 0x53, 0x8a, 0x47, 0x23, 0x9f, 0x56, 0x1f, 0x52, 0xe8, 0xed, 0x10,
+    0x30, 0xb4, 0xae, 0x3c, 0xcc, 0x5b, 0x6f, 0xe3, 0x51, 0x08, 0x84, 0x31, 0xfa, 0xa5, 0xae, 0x44,
+    0x3c, 0x54, 0x16, 0x2f, 0xc2, 0xac, 0x3f, 0xaf, 0xa2, 0x57, 0xf8, 0xd4, 0xdb, 0x30, 0xd9, 0xb9,
+    0x59, 0xca, 0xff, 0x18, 0x82, 0xb7, 0x1d, 0xe6, 0x21, 0xcc, 0x6e, 0x3f, 0x01, 0x8d, 0x03, 0xf7,
+    0xcb, 0xde, 0x90, 0xe4, 0xf9, 0xb4, 0xe6, 0x14, 0xb9, 0xe2, 0xb9, 0x36, 0x96, 0xf5, 0x4e, 0x6c,
+    0x83, 0xec, 0xbb, 0x1e, 0xbb, 0x5b, 0xb3, 0xec, 0xc1, 0xfb, 0x12, 0xe0, 0x19, 0xec, 0xca, 0xef,
+    0x07, 0x29, 0xb9, 0xb2, 0xf9, 0xa0, 0xb1, 0x85, 0x64, 0xea, 0x48, 0xa6, 0x96, 0x64, 0x6a, 0x88,
+    0x56, 0x96, 0x57, 0x61, 0x1c, 0xa3, 0xb7, 0x66, 0x29, 0x7b, 0x0d, 0xc3, 0x02, 0x11, 0x01, 0x34,
+    0x48, 0x63, 0xe8, 0x76, 0x06, 0xa4, 0xc9, 0x24, 0x59, 0x83, 0xe1, 0x72, 0xb2, 0xb6, 0x2e, 0x5d,
+    0x57, 0x9b, 0xac, 0x4b, 0x25, 0x4f, 0xe9, 0xa5, 0xf4, 0x68, 0x92, 0x1c, 0x2d, 0xc9, 0xd4, 0xc7,
+    0xfd, 0x9a, 0xda, 0xbf, 0x00, 0xb7, 0xe2, 0x2a, 0xb9, 0xea, 0x09, 0x44, 0x7a, 0x6e, 0xcf, 0x22,
+    0x27, 0xc1, 0xa4, 0x40, 0x24, 0x8b, 0x04, 0xee, 0x7d, 0x16, 0x4f, 0xcc, 0x85, 0x6e, 0x6e, 0x77,
+    0x3f, 0x1a, 0x19, 0x50, 0xc3, 0x44, 0x52, 0xbe, 0x98, 0x9c, 0x53, 0x6f, 0x6e, 0x24, 0x34, 0xab,
+    0x77, 0x37, 0xa6, 0x5b, 0xba, 0x45, 0x37, 0x0b, 0x61, 0x35, 0x4c, 0x85, 0xdb, 0xdd, 0x0e, 0x3d,
+    0x2f, 0xb2, 0xc7, 0xf0, 0x7e, 0x8b, 0x1d, 0xc2, 0x4e, 0x1d, 0x49, 0x07, 0xc2, 0x2f, 0x83, 0xe8,
+    0xef, 0xf9, 0x1b, 0x8d, 0x04, 0x70, 0x53, 0xf9, 0xc5, 0x70, 0x7a, 0x73, 0x80, 0xa4, 0x5b, 0xc1,
+    0x50, 0x92, 0xf4, 0x55, 0x12, 0xbd, 0x54, 0x43, 0x56, 0x67, 0x92, 0xf4, 0xb4, 0x3d, 0x6c, 0xd7,
+    0x5a, 0x68, 0x3e, 0x32, 0x84, 0xac, 0xc5, 0xd9, 0xdf, 0x7b, 0x27, 0x28, 0x1a, 0x5c, 0xcd, 0x4b,
+    0xd8, 0xaf, 0x52, 0x2f, 0x06, 0x34, 0xdc, 0xab, 0xcf, 0x42, 0xc6, 0x24, 0xe7, 0xdf, 0xc9, 0x20,
+    0x95, 0x67, 0x69, 0x7c, 0x9e, 0x46, 0xcc, 0xed, 0x90, 0x50, 0xe4, 0xb5, 0x92, 0x01, 0x4f, 0x87,
+    0x26, 0x02, 0x95, 0x1e, 0xb2, 0x91, 0x12, 0x7d, 0x96, 0x15, 0x86, 0x87, 0x40, 0xa4, 0xe8, 0x56,
+    0x48, 0x41, 0x21, 0x92, 0xe7, 0xf8, 0x48, 0x71, 0x20, 0x82, 0x73, 0xfd, 0x1d, 0x97, 0xd1, 0x7c,
+    0x02, 0xdc, 0x8a, 0x9c, 0xcb, 0xd2, 0x33, 0x9d, 0x03, 0xb1, 0x78, 0xb9, 0xf4, 0x10, 0x1e, 0xe8,
+    0xf7, 0x7e, 0x22, 0x8d, 0x21, 0x74, 0x19, 0x90, 0x91, 0xf4, 0x16, 0x01, 0xf2, 0x92, 0x5e, 0xe4,
+    0x40, 0x76, 0xd2, 0x7b, 0x1d, 0x30, 0xe4, 0xdb, 0xab, 0x68, 0x4b, 0x34, 0x71, 0x59, 0x91, 0x5d,
+    0x87, 0xd4, 0x9b, 0x34, 0x9d, 0xa1, 0x9b, 0x34, 0x0a, 0xa1, 0x37, 0x97, 0x5c, 0x97, 0xc8, 0xa1,
+    0xad, 0xf4, 0x02, 0xc2, 0x5a, 0xf8, 0xe6, 0xf3, 0xe8, 0x66, 0xe6, 0x00, 0xf7, 0xa1, 0x3f, 0x92,
+    0xf4, 0x78, 0xbe, 0x8c, 0xac, 0x6e, 0x39, 0x49, 0xcf, 0x18, 0x70, 0x39, 0x83, 0x02, 0x19, 0xba,
+    0xa5, 0x83, 0x07, 0xc9, 0x6a, 0xa2, 0xdd, 0x89, 0x5a, 0x02, 0xc4, 0x47, 0x00, 0xf1, 0x82, 0x56,
+    0xda, 0x8b, 0xf2, 0x68, 0x0c, 0xdc, 0x9d, 0x0e, 0x84, 0xbb, 0xcc, 0x13, 0xc2, 0xef, 0xc0, 0x2e,
+    0xf6, 0x8d, 0x42, 0x7d, 0xf8, 0x9f, 0xa1, 0xb6, 0xaa, 0xa8, 0xab, 0x0e, 0x21, 0x66, 0xa6, 0x3e,
+    0x40, 0x2f, 0xdd, 0xe0, 0xc5, 0x49, 0xae, 0xe6, 0x24, 0x7a, 0x20, 0x0a, 0x46, 0xc2, 0x25, 0x3a,
+    0x79, 0xcc, 0xda, 0xe9, 0xe4, 0x21, 0x95, 0xaf, 0xa3, 0x93, 0xaf, 0x4d, 0xa5, 0x77, 0x87, 0x52,
+    0xf5, 0x92, 0x3a, 0xf5, 0xd4, 0xe8, 0xf0, 0xbd, 0x38, 0xe9, 0xc9, 0x94, 0x07, 0xe1, 0x94, 0x3e,
+    0xf1, 0x3c, 0x43, 0x2a, 0x12, 0xc9, 0xf6, 0xc5, 0x92, 0xab, 0x1b, 0xaf, 0xb1, 0xa6, 0x2e, 0x69,
+    0x4a, 0x5d, 0x46, 0x33, 0x37, 0xd7, 0x5a, 0xda, 0x27, 0xc6, 0x06, 0x82, 0x6d, 0x55, 0x7e, 0xda,
+    0x1d, 0x14, 0x0f, 0x7e, 0x26, 0xde, 0x3e, 0xca, 0x69, 0xa7, 0x36, 0xff, 0x28, 0xb5, 0xf9, 0x07,
+    0x25, 0x8b, 0x7b, 0x84, 0xcd, 0xaf, 0x4d, 0x4d, 0xb2, 0x29, 0x4f, 0x52, 0x78, 0x0d, 0x68, 0xeb,
+    0x3d, 0xc1, 0x23, 0x42, 0x92, 0xba, 0x01, 0xda, 0x27, 0x41, 0x09, 0xd5, 0xd2, 0xa7, 0x0f, 0x56,
+    0x23, 0xbc, 0xd3, 0x9b, 0xba, 0x96, 0x01, 0x69, 0x92, 0xf2, 0x5a, 0xa9, 0x27, 0x3d, 0x81, 0xec,
+    0xaa, 0xf9, 0x6f, 0x7a, 0xfc, 0xce, 0x71, 0x35, 0x27, 0xe0, 0x21, 0x03, 0xa5, 0x8a, 0x1e, 0x6e,
+    0x52, 0xad, 0xee, 0x9a, 0x80, 0xa2, 0x71, 0x57, 0x94, 0x2e, 0x91, 0x1e, 0x59, 0xb8, 0x6c, 0x2b,
+    0xd1, 0xdb, 0xac, 0xf6, 0x2c, 0x25, 0xa6, 0x5f, 0xe5, 0xdb, 0x4e, 0x0d, 0x58, 0x87, 0x37, 0xa9,
+    0xaf, 0xd6, 0x49, 0x2c, 0xb8, 0x1e, 0x32, 0x46, 0x4a, 0xd6, 0x90, 0x74, 0x8d, 0x94, 0xac, 0x25,
+    0xe9, 0xda, 0xba, 0x64, 0x5d, 0x6d, 0xba, 0x2e, 0x83, 0xec, 0xd4, 0x4b, 0xc9, 0xd1, 0x78, 0x26,
+    0x09, 0x52, 0xf1, 0xcc, 0x62, 0x92, 0x9e, 0x88, 0x52, 0xf1, 0xcc, 0x32, 0x7a, 0x07, 0x2c, 0x46,
+    0x5d, 0x0b, 0x50, 0x90, 0x7f, 0xf5, 0x85, 0x38, 0x70, 0x9f, 0xa4, 0xde, 0x19, 0x02, 0xfd, 0x50,
+    0x19, 0x0e, 0x2a, 0xa2, 0x0a, 0xa2, 0x4c, 0x17, 0x82, 0x2a, 0xca, 0x9f, 0xd8, 0xda, 0x67, 0x92,
+    0xec, 0x8a, 0x95, 0xf6, 0x82, 0x38, 0x0a, 0x38, 0x31, 0x91, 0xa4, 0x23, 0x0b, 0x74, 0x52, 0xa5,
+    0xdf, 0x97, 0x65, 0x0c, 0xac, 0xf1, 0xad, 0x82, 0xc9, 0xa7, 0x3b, 0xbd, 0xe9, 0x6b, 0x19, 0x5f,
+    0x32, 0x3e, 0x02, 0xbc, 0x61, 0x04, 0xfc, 0x58, 0x15, 0x3e, 0x2c, 0x04, 0xc5, 0xca, 0xaa, 0x2c,
+    0x87, 0x49, 0xc0, 0xec, 0xf4, 0x27, 0xc9, 0xea, 0xa7, 0xa5, 0x14, 0x98, 0xc7, 0xb3, 0x52, 0x0a,
+    0xa8, 0x71, 0x21, 0x26, 0xeb, 0xd1, 0xa1, 0xd3, 0x02, 0x71, 0x39, 0xde, 0xea, 0x60, 0xf8, 0x02,
+    0x6a, 0xc6, 0xa9, 0x15, 0x97, 0xc6, 0xd3, 0x7b, 0x1f, 0x9a, 0xcf, 0xaa, 0xb6, 0x42, 0xce, 0x15,
+    0x07, 0x2a, 0x59, 0xa2, 0xcf, 0xb5, 0x2a, 0xb1, 0x71, 0x41, 0xdb, 0x34, 0xdc, 0xce, 0x3f, 0x58,
+    0xb5, 0x75, 0x2d, 0x2b, 0xc4, 0x8a, 0xee, 0x27, 0x29, 0x44, 0xff, 0xf4, 0x51, 0x10, 0xbc, 0x3e,
+    0x7d, 0xe9, 0x43, 0x88, 0xbd, 0xfc, 0x4f, 0x90, 0x53, 0x8d, 0x31, 0xba, 0x1b, 0xa1, 0x0f, 0x9a,
+    0x7d, 0x7a, 0xed, 0x04, 0xc8, 0x5e, 0xfe, 0x83, 0x31, 0xa3, 0x3f, 0xab, 0x7a, 0xc9, 0xc9, 0x0a,
+    0xd3, 0x73, 0x03, 0xe5, 0x1b, 0x94, 0xf7, 0xfd, 0xc1, 0xbd, 0xd4, 0x20, 0xba, 0x89, 0xb4, 0x5f,
+    0xba, 0xc9, 0x5b, 0x7e, 0x7e, 0x34, 0x3e, 0xf5, 0x8a, 0x0a, 0xa4, 0xb3, 0x8b, 0x82, 0xa9, 0x4d,
+    0x8e, 0x5e, 0x8d, 0xc4, 0xa5, 0xe5, 0x14, 0xeb, 0x58, 0x53, 0x99, 0x56, 0x88, 0x5a, 0xf2, 0xa4,
+    0x4e, 0x88, 0x30, 0x59, 0xf5, 0xbc, 0x56, 0x6c, 0xd2, 0xac, 0x10, 0xba, 0x82, 0xe9, 0x30, 0xa2,
+    0x09, 0xf5, 0x9f, 0x49, 0xb3, 0xf9, 0x1c, 0xad, 0x44, 0xaf, 0xc1, 0x48, 0x63, 0x4c, 0x08, 0xec,
+    0x05, 0xe0, 0x9b, 0x34, 0x6b, 0x07, 0x50, 0x00, 0x00, 0x5b, 0xa7, 0x95, 0x71, 0x43, 0xff, 0x4e,
+    0x96, 0x35, 0xb8, 0xb9, 0xaa, 0x1b, 0x79, 0xb7, 0x94, 0xde, 0x98, 0x97, 0x05, 0xbf, 0x7a, 0xcb,
+    0x1b, 0xd4, 0xba, 0x31, 0x8c, 0xdb, 0x97, 0x3a, 0x84, 0x36, 0xfd, 0x3a, 0xee, 0x0e, 0x0d, 0xcc,
+    0xe5, 0xe3, 0xaa, 0x03, 0x43, 0x78, 0x56, 0x1e, 0x55, 0xfb, 0xca, 0x0e, 0x18, 0x08, 0x6c, 0x9f,
+    0xdf, 0x4b, 0x9f, 0x98, 0x54, 0xdf, 0x19, 0x00, 0x06, 0x53, 0xf0, 0xdc, 0xcb, 0x4b, 0xc4, 0x81,
+    0xec, 0x9d, 0xb9, 0xe2, 0x80, 0x8d, 0xab, 0x79, 0x1c, 0x4f, 0x48, 0x06, 0x72, 0xb8, 0x9a, 0x7b,
+    0xe8, 0xc3, 0x93, 0x9c, 0xab, 0x1a, 0xa5, 0xba, 0x5f, 0x2e, 0xd7, 0x42, 0xf8, 0x38, 0x89, 0xdc,
+    0x0a, 0x94, 0x69, 0x94, 0xb9, 0x40, 0x4b, 0x57, 0x24, 0x7a, 0xd2, 0xcc, 0xd7, 0xc5, 0x5b, 0xda,
+    0x2d, 0x29, 0x81, 0x78, 0xb9, 0x10, 0x5d, 0xe7, 0x79, 0x69, 0x12, 0xcc, 0x98, 0xf4, 0x40, 0xd0,
+    0xc7, 0x22, 0xcc, 0x47, 0x14, 0xc9, 0x1c, 0x7e, 0x95, 0x38, 0x90, 0xc6, 0xb9, 0x1e, 0xf9, 0x21,
+    0xa6, 0xa7, 0xc0, 0x3c, 0x77, 0x1d, 0xa1, 0x4a, 0xb5, 0x9e, 0xab, 0xa9, 0xa2, 0xe0, 0x85, 0x9c,
+    0x6b, 0x3c, 0x42, 0x06, 0x91, 0xb5, 0x62, 0xd2, 0xda, 0x63, 0x55, 0x16, 0x20, 0xe8, 0x5a, 0xcc,
+    0x04, 0xc2, 0xc4, 0x06, 0x0d, 0xde, 0xdd, 0x31, 0x2b, 0x56, 0x25, 0xc5, 0xaf, 0xe6, 0x88, 0x1e,
+    0xd1, 0x83, 0xf3, 0x7e, 0xcd, 0x8e, 0x3d, 0x8f, 0xc9, 0x65, 0x81, 0x15, 0x78, 0x74, 0x63, 0x51,
+    0x20, 0xa1, 0x0f, 0xcc, 0xc1, 0xb0, 0xd8, 0x2f, 0x74, 0xb8, 0xfa, 0xf8, 0x07, 0xeb, 0x71, 0xc3,
+    0xb9, 0x3a, 0x80, 0xdf, 0x92, 0xa0, 0xf0, 0x33, 0x48, 0x5b, 0xdd, 0x54, 0x39, 0x83, 0xad, 0xfd,
+    0x77, 0xe4, 0x89, 0xd8, 0xc5, 0x96, 0x8f, 0x4b, 0x57, 0x39, 0x46, 0x9a, 0x84, 0xbf, 0xe2, 0x7e,
+    0x42, 0x13, 0xf0, 0x37, 0xc8, 0x31, 0x48, 0x75, 0xbb, 0xea, 0x7e, 0x38, 0x87, 0x0d, 0xc1, 0x63,
+    0xe4, 0x1b, 0x64, 0xa8, 0xeb, 0x05, 0xa4, 0x2f, 0x4a, 0x4e, 0xd1, 0x62, 0x92, 0x8a, 0xaf, 0xad,
+    0x48, 0xd9, 0x1a, 0xdc, 0x3c, 0x5c, 0x49, 0xbd, 0x46, 0xe7, 0xe1, 0xbb, 0xa3, 0xf3, 0x71, 0x2b,
+    0xeb, 0x58, 0x79, 0x0b, 0xab, 0xae, 0x8b, 0x78, 0x1d, 0x46, 0x4e, 0x0e, 0x8e, 0xdc, 0x0f, 0x23,
+    0x43, 0x7e, 0xd3, 0x0f, 0x23, 0x83, 0xfa, 0x53, 0xb3, 0xa2, 0xb6, 0x70, 0xaf, 0x74, 0x01, 0x4a,
+    0x95, 0x9a, 0xc7, 0x33, 0xba, 0x2e, 0x30, 0x41, 0x66, 0xe0, 0x82, 0xe3, 0x1b, 0x03, 0x75, 0xda,
+    0x1a, 0x18, 0xf6, 0xcf, 0xf0, 0x94, 0xa4, 0x0e, 0xa2, 0xde, 0x74, 0xaa, 0xfd, 0x57, 0xba, 0xf4,
+    0x75, 0xda, 0xa4, 0x9a, 0x16, 0xe1, 0x5a, 0x17, 0x66, 0xbf, 0x23, 0x57, 0xea, 0x0f, 0x78, 0xdc,
+    0x3c, 0x08, 0x33, 0xe8, 0xfa, 0x94, 0x09, 0x8d, 0xb4, 0x45, 0x57, 0x17, 0x76, 0x57, 0x62, 0x60,
+    0x08, 0x5f, 0x39, 0x30, 0xb3, 0x8e, 0x05, 0x4b, 0x53, 0x9e, 0x8c, 0x74, 0xe5, 0x74, 0x07, 0xa7,
+    0x91, 0x1d, 0x04, 0xab, 0x63, 0x93, 0x6b, 0xdc, 0xc2, 0x75, 0x5f, 0xc6, 0x1f, 0xe7, 0x1d, 0x18,
+    0xc4, 0x0d, 0x45, 0xb5, 0x79, 0x95, 0xca, 0xd9, 0x8c, 0xba, 0x9f, 0xc6, 0x82, 0x80, 0x24, 0x0b,
+    0x8a, 0xef, 0xf1, 0xcf, 0xe6, 0xd5, 0x8f, 0x00, 0x98, 0x14, 0xa2, 0xae, 0x16, 0x01, 0x92, 0x00,
+    0x20, 0xe2, 0x08, 0x3d, 0x65, 0x19, 0x16, 0x54, 0x5f, 0xac, 0x3a, 0xa0, 0xef, 0xdb, 0xef, 0x35,
+    0x90, 0x06, 0xb0, 0x5a, 0x5d, 0x63, 0xc1, 0xf6, 0x56, 0x2d, 0xa7, 0x19, 0xb0, 0xb0, 0x48, 0xcd,
+    0x4b, 0x59, 0x61, 0x91, 0xb8, 0xfc, 0x97, 0x8f, 0xa1, 0xb1, 0x99, 0x6d, 0xec, 0x7b, 0xff, 0x1d,
+    0x78, 0xca, 0x75, 0x62, 0x97, 0xc0, 0xe2, 0x3d, 0xca, 0xf1, 0x49, 0x61, 0xa8, 0x47, 0x60, 0x30,
+    0x10, 0xa2, 0xfc, 0x4b, 0x57, 0x40, 0x78, 0xa1, 0xab, 0x85, 0xa1, 0x31, 0x4d, 0x0d, 0x5e, 0xe7,
+    0x34, 0xf6, 0xc9, 0x79, 0x07, 0x4b, 0xe6, 0x95, 0x30, 0x36, 0x65, 0xed, 0x3d, 0x54, 0xe7, 0xb8,
+    0xc3, 0xff, 0x42, 0x17, 0x69, 0x20, 0x4a, 0xf8, 0x51, 0x93, 0xb9, 0x63, 0xfc, 0x04, 0x88, 0x6d,
+    0xc1, 0xae, 0x2b, 0x86, 0x63, 0x34, 0xfc, 0xc3, 0x0b, 0x81, 0x36, 0x65, 0x9e, 0x0a, 0x5b, 0x1f,
+    0x05, 0xad, 0xbe, 0x88, 0xf1, 0xcc, 0x04, 0x5c, 0xf1, 0x0e, 0x0a, 0x37, 0xd0, 0x42, 0xe1, 0xf0,
+    0xd0, 0xf0, 0x3f, 0x8c, 0x7d, 0x21, 0x1a, 0x6d, 0x21, 0xaa, 0x57, 0x56, 0x2d, 0x2f, 0x5f, 0x80,
+    0x35, 0xc9, 0xdc, 0xbe, 0xe0, 0x40, 0xd3, 0xf9, 0x04, 0x1c, 0x6d, 0x42, 0xc9, 0x78, 0xc5, 0xb7,
+    0x91, 0x8a, 0xd7, 0x9e, 0x28, 0xdf, 0x54, 0x7a, 0x40, 0xfc, 0x2b, 0x5f, 0x28, 0xee, 0x9d, 0x54,
+    0x47, 0xa1, 0xb9, 0x7d, 0x50, 0xfb, 0x67, 0x15, 0x0a, 0x87, 0xf8, 0x75, 0xe8, 0xae, 0x76, 0xc8,
+    0x50, 0xc4, 0x81, 0x97, 0x31, 0xba, 0xf1, 0x0e, 0x35, 0x38, 0x13, 0x3c, 0x11, 0xbe, 0x0c, 0x81,
+    0x0f, 0x69, 0x8d, 0xf4, 0xf3, 0x4f, 0x91, 0xf3, 0xc4, 0x02, 0x99, 0x34, 0xaa, 0xd8, 0x0d, 0x63,
+    0x83, 0xb1, 0x29, 0xa1, 0x29, 0xb6, 0xe1, 0x8b, 0x49, 0x28, 0x20, 0x39, 0xdd, 0xe0, 0xfe, 0xa3,
+    0xb2, 0x73, 0x95, 0x59, 0xa7, 0x82, 0x89, 0x2d, 0xeb, 0x91, 0x17, 0x13, 0x72, 0x2b, 0xa1, 0xa7,
+    0xaa, 0x25, 0xb1, 0x76, 0xd5, 0x8c, 0xf6, 0x27, 0x0e, 0x44, 0xe2, 0x4e, 0xd7, 0x2d, 0x7a, 0xdd,
+    0x1e, 0x22, 0x3a, 0xd2, 0x54, 0xde, 0x22, 0x56, 0x6a, 0x99, 0xad, 0xd3, 0x52, 0x7d, 0x71, 0x12,
+    0xbb, 0x9c, 0xca, 0x51, 0xaa, 0x6c, 0x65, 0xc9, 0x44, 0x6f, 0x15, 0x12, 0x9a, 0xe8, 0x5b, 0xe4,
+    0x4d, 0x9b, 0xd1, 0xfe, 0x80, 0x64, 0xf1, 0xd7, 0xc1, 0x2f, 0xcc, 0x60, 0x8e, 0x9c, 0xd3, 0x2e,
+    0xef, 0x98, 0xcc, 0x4a, 0x13, 0xab, 0x07, 0x55, 0x69, 0x90, 0xcb, 0x59, 0x62, 0xac, 0xdd, 0x85,
+    0xe0, 0x75, 0x63, 0xf1, 0xe4, 0xbb, 0x53, 0x62, 0xd5, 0xde, 0x78, 0xba, 0x37, 0x6a, 0x5a, 0x06,
+    0x82, 0x01, 0x26, 0x4e, 0x6c, 0xc4, 0xac, 0xcc, 0x67, 0xbd, 0x66, 0x05, 0x12, 0xa8, 0xc8, 0x56,
+    0xfe, 0x69, 0x98, 0x9a, 0x5c, 0xd9, 0x15, 0x9a, 0x89, 0x5d, 0xc9, 0x39, 0x79, 0x77, 0x26, 0x3a,
+    0x42, 0x7a, 0x13, 0x8e, 0x57, 0x1d, 0x4f, 0xac, 0xcd, 0x1f, 0x5a, 0xa3, 0x4e, 0xa4, 0x87, 0xe6,
+    0xc1, 0xd3, 0x85, 0x6e, 0xe2, 0x2d, 0x3f, 0x46, 0xaf, 0xd7, 0x2e, 0xa7, 0x34, 0x25, 0xd0, 0x29,
+    0xd4, 0xbe, 0x43, 0x69, 0x9a, 0x95, 0x51, 0x73, 0x49, 0xf8, 0xab, 0x6f, 0x4a, 0x68, 0x7e, 0x13,
+    0x46, 0xce, 0x6f, 0x04, 0xa9, 0x86, 0xd1, 0x2b, 0x80, 0x7c, 0xee, 0xfe, 0x01, 0xb5, 0x94, 0xd4,
+    0x01, 0x20, 0x75, 0xbd, 0x6c, 0xee, 0x22, 0xe7, 0xc8, 0x6d, 0xf1, 0x6b, 0xae, 0x4e, 0x7a, 0x2b,
+    0x9d, 0x65, 0x6a, 0x2d, 0xbd, 0xb5, 0x99, 0x43, 0xa4, 0x8d, 0xfb, 0x70, 0x30, 0xce, 0xf3, 0x37,
+    0x4d, 0xe6, 0x17, 0x1c, 0x52, 0x78, 0x9b, 0x5e, 0xc2, 0x8d, 0x3d, 0x05, 0xd8, 0x6e, 0x94, 0xb7,
+    0xed, 0x4f, 0xfc, 0x9c, 0x46, 0xbc, 0x95, 0xdd, 0x75, 0x79, 0xbd, 0xd2, 0x23, 0xd5, 0x43, 0x94,
+    0xda, 0x5c, 0x79, 0x35, 0x4b, 0xb8, 0xda, 0xc3, 0x94, 0xda, 0xcf, 0x71, 0x23, 0x26, 0x45, 0xf8,
+    0x4a, 0xba, 0xc7, 0x97, 0xf6, 0xc7, 0xc4, 0xfa, 0xef, 0x54, 0x70, 0x09, 0x48, 0x09, 0x81, 0x67,
+    0xcb, 0x3b, 0x59, 0x62, 0x82, 0xca, 0xda, 0x7f, 0xa3, 0x3d, 0x5e, 0xff, 0x69, 0x2a, 0x6a, 0xe1,
+    0x55, 0x69, 0xec, 0xf7, 0xb8, 0x4e, 0x4f, 0xea, 0xbc, 0x74, 0x61, 0x98, 0x9a, 0x4b, 0xfc, 0x55,
+    0xe9, 0x9e, 0xe0, 0x92, 0xfd, 0xb7, 0xbc, 0x12, 0x07, 0xfc, 0x39, 0xed, 0x1e, 0x93, 0xe4, 0xfb,
+    0x8a, 0x9a, 0x58, 0x9f, 0x7b, 0x78, 0xf3, 0x56, 0xeb, 0xea, 0x13, 0xc2, 0xc8, 0xdf, 0x9c, 0x88,
+    0x59, 0xb9, 0x8f, 0xc6, 0xd4, 0x9a, 0x23, 0xd6, 0x70, 0xf0, 0x7a, 0xe9, 0x18, 0x8b, 0x3d, 0x2f,
+    0x3d, 0x1c, 0xdc, 0x4d, 0x3a, 0xf0, 0x71, 0x26, 0xde, 0xae, 0x38, 0x25, 0x4d, 0x34, 0x35, 0x54,
+    0x3c, 0x06, 0x26, 0x10, 0x42, 0xa8, 0x73, 0xe4, 0x2a, 0xda, 0xa9, 0xdb, 0x55, 0xcb, 0x62, 0x19,
+    0x79, 0x1d, 0x2b, 0xf4, 0x4b, 0xd1, 0xb1, 0xa6, 0x86, 0xf2, 0x6f, 0xd8, 0x5b, 0xa4, 0x21, 0xe1,
+    0x46, 0x76, 0x96, 0xd5, 0xf9, 0x11, 0xb0, 0x4b, 0x39, 0x45, 0xa3, 0x52, 0xf0, 0xc5, 0x7e, 0x8a,
+    0xd9, 0x37, 0xc1, 0xea, 0xfc, 0x15, 0x0e, 0xb7, 0x7f, 0x40, 0x75, 0xec, 0x7d, 0xc2, 0x1b, 0xce,
+    0x59, 0x08, 0xf8, 0x5b, 0xb5, 0x62, 0xc4, 0xea, 0x54, 0x2d, 0x6f, 0xb7, 0xb0, 0x0c, 0xab, 0xc6,
+    0x76, 0xe0, 0x4f, 0xab, 0x1b, 0xa9, 0x91, 0xfe, 0x1a, 0xcf, 0x22, 0xdf, 0xef, 0x84, 0x26, 0xe9,
+    0xa1, 0x0e, 0xf8, 0x26, 0x3d, 0xec, 0x05, 0xd2, 0x20, 0x9e, 0x66, 0x8e, 0xd0, 0xf3, 0xbc, 0x53,
+    0x54, 0xea, 0x63, 0xdb, 0xca, 0x9f, 0xc3, 0x8b, 0xe1, 0x59, 0x25, 0x2c, 0x3d, 0x79, 0xcc, 0x82,
+    0x50, 0xcf, 0xe9, 0x06, 0xb3, 0xe2, 0x6c, 0x85, 0x2f, 0xe5, 0x5d, 0x7a, 0x97, 0x63, 0xbe, 0x8a,
+    0xa0, 0xc6, 0x4d, 0xae, 0x0a, 0x49, 0x14, 0x63, 0xb5, 0x17, 0x81, 0xc5, 0x56, 0x44, 0x7a, 0x8b,
+    0x22, 0x25, 0xb7, 0x47, 0xa3, 0x25, 0xb4, 0xcb, 0x07, 0x08, 0x5c, 0xf1, 0x2b, 0xe7, 0x02, 0xf5,
+    0xa0, 0x22, 0xac, 0x1b, 0x2f, 0x85, 0xe5, 0xda, 0xec, 0xca, 0x41, 0xba, 0x13, 0xa7, 0x63, 0x97,
+    0x23, 0x94, 0x38, 0x05, 0xc1, 0x18, 0xdb, 0x88, 0x81, 0x2d, 0x4c, 0xf0, 0xb5, 0x0d, 0x75, 0x1f,
+    0xe6, 0x75, 0xbc, 0xb6, 0x78, 0x18, 0x77, 0x91, 0xcd, 0x86, 0x3a, 0x4b, 0x3c, 0xb7, 0x2f, 0x67,
+    0x1e, 0xb7, 0xaf, 0x05, 0xec, 0x06, 0x3d, 0x43, 0x1b, 0x75, 0x53, 0x01, 0x12, 0xf0, 0x11, 0x78,
+    0x2e, 0xd3, 0x03, 0xbb, 0xf9, 0x77, 0x05, 0xf9, 0x49, 0xfa, 0x36, 0x95, 0x56, 0xc2, 0xe8, 0xd6,
+    0xec, 0x47, 0xbf, 0x43, 0x93, 0xaa, 0x64, 0x30, 0x2d, 0x27, 0x64, 0x08, 0x60, 0xcd, 0xcd, 0x60,
+    0x3d, 0x35, 0x9b, 0xc5, 0x1d, 0x1e, 0x3d, 0xcb, 0xb9, 0xca, 0x31, 0x44, 0x58, 0xe6, 0x91, 0x2c,
+    0xcd, 0xc4, 0x8f, 0xd7, 0x28, 0x84, 0x56, 0x52, 0x79, 0x54, 0x54, 0x58, 0x6e, 0xd7, 0x59, 0x6a,
+    0x62, 0xea, 0x89, 0xf9, 0xbf, 0xa4, 0x7b, 0xa4, 0x2d, 0x1a, 0x02, 0x6a, 0x9e, 0xa1, 0x65, 0x5b,
+    0xf1, 0xfa, 0x76, 0x86, 0x8e, 0x9c, 0x9f, 0xe8, 0x07, 0x45, 0x96, 0x92, 0x07, 0xa4, 0x89, 0x6c,
+    0x03, 0x6e, 0x3e, 0x3f, 0x75, 0x47, 0xca, 0xd2, 0x4c, 0xbc, 0x48, 0x72, 0x14, 0xd3, 0x00, 0xb9,
+    0x38, 0x3d, 0xa7, 0x93, 0x7b, 0xd3, 0xfc, 0x35, 0x81, 0x20, 0x5f, 0x68, 0x37, 0xf9, 0x49, 0x9e,
+    0x9b, 0x5c, 0x94, 0xf2, 0xce, 0xc6, 0x5e, 0xe4, 0xde, 0x68, 0xb8, 0x37, 0xe7, 0xeb, 0xaa, 0x41,
+    0x96, 0x54, 0x5e, 0x16, 0x66, 0x99, 0x40, 0xd2, 0x2b, 0x95, 0xe9, 0x95, 0x9d, 0x52, 0xe5, 0xe5,
+    0xf2, 0x89, 0x26, 0x01, 0x4b, 0xb1, 0x57, 0xa1, 0xc0, 0xed, 0x62, 0xc1, 0x65, 0x63, 0x33, 0x98,
+    0xc4, 0x26, 0x00, 0xe0, 0xde, 0xf4, 0xd6, 0x9c, 0xe6, 0xcc, 0x79, 0x6e, 0xce, 0x2c, 0x1c, 0x04,
+    0x40, 0xd2, 0x14, 0x7b, 0x15, 0x70, 0xd5, 0x9c, 0x83, 0xf0, 0x3f, 0xe7, 0x32, 0x12, 0x80, 0x4a,
+    0xab, 0x48, 0x95, 0x47, 0xb1, 0x47, 0x86, 0x06, 0x9c, 0x11, 0xb9, 0x27, 0xe1, 0x5c, 0x6c, 0x23,
+    0xd9, 0xa2, 0x25, 0xf9, 0x3a, 0xe3, 0x25, 0x49, 0x68, 0x95, 0x60, 0x2a, 0x39, 0xf5, 0xa2, 0x27,
+    0x66, 0x25, 0xe7, 0x8a, 0x45, 0x3d, 0xcb, 0xd0, 0x4a, 0x6b, 0x74, 0xa4, 0x21, 0xf2, 0x18, 0x6f,
+    0xad, 0xaa, 0xd4, 0x33, 0x7c, 0xd1, 0x72, 0x5c, 0x74, 0x72, 0x4c, 0xbc, 0xc8, 0x94, 0x3f, 0x26,
+    0x3d, 0x02, 0x39, 0x72, 0xb5, 0x97, 0x86, 0x21, 0xb9, 0x10, 0xcc, 0x28, 0x20, 0x03, 0x5f, 0xa0,
+    0xc4, 0xcd, 0xbe, 0x12, 0x6e, 0xee, 0x9e, 0x4c, 0x5f, 0x49, 0x7a, 0x24, 0xc1, 0x0f, 0x78, 0x49,
+    0xae, 0x06, 0xc4, 0x61, 0x8d, 0xee, 0x00, 0x6d, 0x6d, 0x26, 0x19, 0x5a, 0xdf, 0x74, 0xe0, 0xa5,
+    0xac, 0xc9, 0x96, 0x2c, 0x27, 0xe4, 0xc5, 0x9e, 0x03, 0x18, 0xfb, 0xf5, 0x7e, 0x04, 0x90, 0x2b,
+    0x49, 0x8e, 0x7f, 0x35, 0x2c, 0x4e, 0xfa, 0x52, 0xc1, 0xcf, 0xed, 0xda, 0x8c, 0x89, 0x54, 0xa5,
+    0x1f, 0x42, 0x80, 0xc3, 0x34, 0xa3, 0xa9, 0x1b, 0x7f, 0x14, 0x56, 0xb4, 0xd6, 0xd2, 0x2d, 0xeb,
+    0x92, 0xc0, 0x10, 0x89, 0x3b, 0x8e, 0xe9, 0x59, 0xe1, 0x39, 0x79, 0xd9, 0xb1, 0x3e, 0x73, 0x37,
+    0x2b, 0xac, 0x92, 0x38, 0x29, 0x5f, 0x43, 0x75, 0xdc, 0x74, 0x8c, 0x5e, 0x6c, 0x8e, 0xbd, 0x58,
+    0xfe, 0x88, 0x94, 0xab, 0x95, 0xb6, 0xe8, 0x80, 0x3a, 0xf6, 0xd8, 0xc4, 0xde, 0xea, 0x41, 0x16,
+    0x85, 0xf6, 0x12, 0x53, 0x6e, 0xac, 0x6e, 0x41, 0x62, 0xc2, 0x2d, 0x0a, 0xee, 0x42, 0xae, 0xd1,
+    0x92, 0x2d, 0xba, 0xa6, 0x0c, 0x7a, 0x10, 0xdf, 0x34, 0x16, 0xe7, 0x28, 0xad, 0xd1, 0x8e, 0x5b,
+    0xa3, 0xe3, 0xa3, 0xf0, 0xd2, 0xd1, 0xbd, 0xf8, 0x35, 0x0b, 0xbe, 0x56, 0x98, 0x9a, 0x2b, 0xa2,
+    0xc9, 0x71, 0x59, 0xb7, 0x02, 0xaf, 0x38, 0x2e, 0x3e, 0x16, 0xa4, 0x9b, 0x5c, 0xc8, 0x34, 0x5e,
+    0x4a, 0x02, 0x4b, 0x6d, 0x6a, 0xe6, 0x76, 0x15, 0xd0, 0xec, 0xd7, 0x8f, 0x07, 0x31, 0xc2, 0x14,
+    0xa3, 0x3b, 0x09, 0x44, 0xac, 0x0b, 0x44, 0x9f, 0x19, 0x4e, 0xcb, 0x32, 0x89, 0xe5, 0x2c, 0xc8,
+    0x88, 0xac, 0x59, 0x27, 0x6b, 0x3c, 0x04, 0xf7, 0xf9, 0xfc, 0xa6, 0x33, 0x24, 0xaf, 0x93, 0x5c,
+    0xa8, 0x58, 0x86, 0x3b, 0x02, 0x89, 0xd2, 0x56, 0x0d, 0x48, 0x02, 0xc6, 0x7b, 0xcd, 0x78, 0x23,
+    0x10, 0x0c, 0xdd, 0x38, 0x62, 0x51, 0x24, 0x9b, 0xc6, 0xd4, 0x43, 0xda, 0x62, 0x6f, 0xe1, 0xbb,
+    0x5d, 0x29, 0x83, 0x78, 0x75, 0x25, 0x45, 0x50, 0xb8, 0x94, 0xe6, 0x24, 0xb1, 0x31, 0xc6, 0xd4,
+    0x20, 0x9c, 0x97, 0x35, 0x94, 0xaa, 0xb8, 0x06, 0x4a, 0x95, 0x6c, 0xfe, 0x25, 0x69, 0x22, 0x57,
+    0x7a, 0x3f, 0xa2, 0x25, 0xdc, 0x7c, 0xb9, 0x3c, 0xa2, 0x44, 0xbc, 0x40, 0x75, 0x9b, 0x94, 0xd7,
+    0x99, 0x2a, 0x9a, 0xcf, 0xc6, 0x48, 0xe6, 0x76, 0x53, 0x23, 0xe7, 0x2a, 0xc1, 0x9d, 0x91, 0xac,
+    0x44, 0x60, 0x15, 0x2a, 0x06, 0x12, 0x28, 0xad, 0xf5, 0xe8, 0xab, 0x07, 0x91, 0x1d, 0x90, 0x7b,
+    0x0f, 0xb2, 0xc2, 0x8b, 0xb2, 0xce, 0x63, 0xca, 0x9a, 0x27, 0x14, 0x48, 0x59, 0x5a, 0xe9, 0x45,
+    0x9d, 0x64, 0x02, 0xb1, 0x62, 0xcf, 0xa3, 0x58, 0xdf, 0x58, 0xb4, 0x2d, 0x66, 0x51, 0x56, 0x5c,
+    0xe4, 0xa0, 0x60, 0x06, 0xc1, 0x0a, 0xcf, 0x32, 0x4c, 0x7e, 0x31, 0x9e, 0x64, 0x69, 0xc9, 0x8b,
+    0x3a, 0xf9, 0x89, 0x30, 0x9c, 0x61, 0x5b, 0xc5, 0x1c, 0xd2, 0x96, 0x70, 0x81, 0x5e, 0xba, 0x51,
+    0x64, 0x4d, 0x83, 0xbc, 0x55, 0x21, 0x2a, 0xff, 0x54, 0x5a, 0x44, 0x77, 0xcc, 0x0a, 0xe1, 0xfa,
+    0x13, 0xa8, 0x97, 0xe6, 0x76, 0xdf, 0x38, 0x7c, 0x11, 0xc1, 0xa2, 0xf5, 0x85, 0xc3, 0x6f, 0x2a,
+    0x70, 0x30, 0x13, 0xe8, 0xdb, 0xe5, 0xa4, 0x9c, 0xc5, 0x23, 0x2b, 0xa2, 0x15, 0x8f, 0x3e, 0xa9,
+    0x9a, 0x85, 0x6f, 0xd5, 0xab, 0xd9, 0x9f, 0x7c, 0x43, 0xb7, 0x67, 0xf1, 0xca, 0x08, 0x98, 0xb1,
+    0xbb, 0xca, 0xaf, 0xa5, 0xbb, 0x28, 0xba, 0xf7, 0xb1, 0x86, 0x8c, 0xf1, 0x46, 0x50, 0x33, 0x59,
+    0x8f, 0x4d, 0x23, 0x6e, 0x27, 0xe9, 0xc4, 0xe5, 0x69, 0x65, 0xb8, 0xed, 0x5f, 0xf3, 0x06, 0xdd,
+    0x3e, 0xa9, 0xcf, 0x84, 0x92, 0x34, 0x83, 0xf6, 0xb1, 0x28, 0xd5, 0xb7, 0xf1, 0x26, 0x33, 0x57,
+    0x83, 0x1b, 0x15, 0xb2, 0xee, 0x7f, 0xe8, 0x9b, 0xfb, 0x6f, 0xad, 0x40, 0x14, 0x2a, 0xf9, 0xe7,
+    0x71, 0x02, 0xd2, 0x4b, 0x1a, 0x29, 0x4a, 0x2a, 0xd7, 0xe2, 0x0b, 0x1d, 0x7e, 0xa9, 0x5c, 0x37,
+    0x71, 0x48, 0x7c, 0x09, 0xad, 0x07, 0x1e, 0x0b, 0x7d, 0x3e, 0x01, 0x70, 0x3b, 0xa4, 0x49, 0xdc,
+    0x91, 0xd3, 0xdc, 0xfe, 0x8b, 0x9e, 0xaf, 0x35, 0xc0, 0xd2, 0xf7, 0x02, 0x81, 0xcf, 0xf1, 0x5d,
+    0x66, 0xce, 0x72, 0xd1, 0x74, 0x41, 0xbc, 0xca, 0x94, 0xe7, 0xab, 0xe3, 0xc9, 0xd1, 0x74, 0x00,
+    0xe9, 0xd5, 0x6c, 0x1c, 0xe0, 0x08, 0x86, 0x97, 0xa6, 0x53, 0xd4, 0x63, 0x4e, 0x3f, 0x98, 0x7d,
+    0x16, 0x63, 0xbd, 0x87, 0xab, 0x2b, 0xfd, 0x2c, 0x2c, 0x09, 0xe9, 0x87, 0x6e, 0x60, 0x0d, 0xb8,
+    0x5d, 0xc7, 0x29, 0x45, 0xb4, 0x03, 0x08, 0x35, 0x48, 0x35, 0xbb, 0x52, 0x2b, 0x66, 0xeb, 0x02,
+    0x4d, 0x29, 0xaa, 0x3c, 0x87, 0xa1, 0x55, 0x3e, 0xa0, 0x12, 0x11, 0xc9, 0x1d, 0x69, 0xe3, 0xf6,
+    0x1f, 0xf3, 0x7c, 0x39, 0x9a, 0x08, 0x54, 0x17, 0x3d, 0x60, 0xf3, 0x9b, 0x06, 0x55, 0xc5, 0xb9,
+    0x51, 0xee, 0x0c, 0x06, 0x45, 0xb1, 0x3d, 0x15, 0x79, 0x77, 0x3b, 0xb7, 0x70, 0xfb, 0xdb, 0x3c,
+    0x5f, 0x69, 0xaa, 0x6f, 0x61, 0xe7, 0x03, 0x6a, 0xe7, 0xb6, 0x20, 0xe9, 0x2a, 0x6f, 0x50, 0x5e,
+    0x0f, 0xae, 0x68, 0x87, 0x8a, 0xfb, 0x2b, 0xfd, 0xe8, 0xa5, 0x5f, 0x5d, 0x71, 0x19, 0x0a, 0xb1,
+    0x3d, 0x20, 0x28, 0x60, 0x72, 0x0e, 0x66, 0x63, 0x13, 0xbe, 0xb8, 0xfa, 0x6a, 0x36, 0xd6, 0xfb,
+    0xc6, 0xa8, 0xbd, 0x53, 0x09, 0xfd, 0x81, 0x09, 0x65, 0x80, 0x28, 0x2c, 0xa5, 0x0b, 0x42, 0x6e,
+    0x71, 0xbb, 0xb6, 0xe3, 0x5e, 0x4f, 0xdf, 0x11, 0x6c, 0xfb, 0x02, 0x67, 0x68, 0xcf, 0xb5, 0x29,
+    0x8b, 0xe8, 0xc6, 0xa0, 0x6a, 0x4d, 0xea, 0x9f, 0xff, 0x99, 0x86, 0x99, 0xdd, 0xcc, 0x36, 0x1f,
+    0x40, 0x31, 0xb5, 0xdb, 0x4b, 0x58, 0x7b, 0x96, 0xdd, 0x6a, 0xcf, 0x02, 0xb0, 0xaf, 0xe9, 0xe5,
+    0x82, 0xf9, 0xd8, 0x83, 0x55, 0x7b, 0xa8, 0xeb, 0xcf, 0x84, 0xae, 0x96, 0x38, 0x3b, 0xd5, 0xbd,
+    0xfd, 0x4d, 0x7f, 0xa5, 0xc2, 0x83, 0x47, 0xe6, 0xe3, 0xe9, 0xb8, 0x5a, 0x2a, 0x01, 0x54, 0x40,
+    0x82, 0x9e, 0x95, 0x37, 0x82, 0xe4, 0x45, 0xa0, 0x69, 0x99, 0x8b, 0xa3, 0xe2, 0xbb, 0x3a, 0xa7,
+    0xb3, 0xb2, 0xb3, 0xb3, 0xb3, 0xb2, 0xad, 0xd9, 0xa3, 0xdd, 0xcd, 0xc6, 0xb0, 0xa0, 0xbb, 0xa1,
+    0x1e, 0x0b, 0xb0, 0xeb, 0xff, 0x1a, 0x3a, 0x39, 0x90, 0xf2, 0xf4, 0xea, 0x5d, 0x22, 0xd7, 0x25,
+    0x7e, 0x71, 0x3d, 0xd2, 0x5b, 0xc2, 0x58, 0xad, 0x36, 0x65, 0x23, 0x13, 0xbc, 0xe6, 0xe3, 0x0a,
+    0xf0, 0xf3, 0xa5, 0x4a, 0x9d, 0xe9, 0x36, 0x97, 0x7a, 0xd5, 0x06, 0x68, 0xed, 0xca, 0xae, 0x71,
+    0xb8, 0x1d, 0x83, 0xd7, 0x8f, 0x8e, 0xea, 0x20, 0x87, 0xef, 0x03, 0x88, 0x28, 0x6b, 0xae, 0xb2,
+    0x9e, 0xde, 0x31, 0xd3, 0x06, 0x7d, 0x23, 0x60, 0x1f, 0xc6, 0x86, 0x9b, 0xcf, 0x33, 0x46, 0x5c,
+    0x61, 0x2a, 0x61, 0x86, 0x7d, 0xe2, 0x0f, 0xaf, 0x36, 0xc5, 0xe0, 0x81, 0x14, 0xa4, 0xe7, 0x69,
+    0x5a, 0xdc, 0xff, 0xc2, 0x17, 0xaf, 0x87, 0x03, 0x89, 0x21, 0x94, 0xc2, 0xf1, 0x54, 0x05, 0x9a,
+    0x33, 0xb7, 0xbe, 0x94, 0x80, 0xd6, 0x7a, 0x85, 0xbc, 0xf8, 0xcf, 0xcd, 0xb8, 0x7a, 0x8f, 0xb1,
+    0xc2, 0xb3, 0x52, 0xba, 0x5f, 0xb2, 0xdf, 0x94, 0x76, 0x0e, 0x80, 0x09, 0x63, 0x9b, 0xa4, 0x67,
+    0xee, 0x4c, 0x3c, 0x53, 0x55, 0x19, 0xcd, 0x08, 0x9c, 0xeb, 0xd2, 0xce, 0x71, 0xc6, 0x80, 0xeb,
+    0xf4, 0x17, 0xb8, 0x89, 0xfc, 0xf2, 0x12, 0x92, 0x87, 0xaf, 0x3d, 0x82, 0x2c, 0x80, 0xd5, 0xa5,
+    0xc4, 0xd8, 0x72, 0x89, 0xa5, 0x03, 0xaf, 0x6b, 0x4f, 0x6f, 0x04, 0x7d, 0xb6, 0x74, 0x00, 0x45,
+    0x10, 0xb1, 0x9f, 0x91, 0x72, 0x3a, 0x97, 0x56, 0x5e, 0x26, 0xed, 0xd3, 0xcd, 0xe8, 0xd2, 0x2a,
+    0xa3, 0x57, 0x88, 0x5e, 0xc5, 0xd5, 0xf2, 0xf2, 0x9b, 0xce, 0xdf, 0xa6, 0x52, 0x36, 0xb6, 0x7c,
+    0x1d, 0x08, 0x24, 0x0c, 0xc6, 0xb6, 0xe3, 0xdb, 0x2e, 0xc0, 0x7e, 0xab, 0x35, 0x0b, 0x6f, 0x72,
+    0xd9, 0xb3, 0x6d, 0xb9, 0x23, 0x98, 0xef, 0xa7, 0x33, 0x9c, 0x8f, 0x84, 0xf0, 0x93, 0xc9, 0x72,
+    0x24, 0x96, 0xcc, 0x38, 0x81, 0x9a, 0x84, 0x8f, 0xbe, 0x09, 0x01, 0xc1, 0x8f, 0xc7, 0x36, 0xc9,
+    0xea, 0x0d, 0xd3, 0x12, 0x66, 0x44, 0xd7, 0x2b, 0xea, 0x36, 0x38, 0x19, 0x10, 0x8f, 0xc6, 0x8c,
+    0x88, 0x38, 0x5c, 0x77, 0x4f, 0xd0, 0x41, 0x3c, 0x2c, 0x3a, 0xe3, 0x69, 0x62, 0xd5, 0x10, 0xbc,
+    0x0c, 0xb0, 0x5d, 0xca, 0xd1, 0x8b, 0x0d, 0xa1, 0xed, 0xb6, 0xd0, 0x2b, 0xed, 0x8f, 0xb2, 0x82,
+    0x55, 0x4a, 0xf1, 0x4b, 0x2f, 0xdd, 0x3c, 0x4c, 0x95, 0x37, 0x78, 0x86, 0x3e, 0x24, 0xfd, 0x64,
+    0xa0, 0x7c, 0x21, 0xb9, 0xc2, 0x7a, 0x27, 0xbf, 0x74, 0xa7, 0x7a, 0x08, 0x15, 0x18, 0xb5, 0xfe,
+    0x5e, 0x08, 0xf6, 0x12, 0xbc, 0xe3, 0x51, 0x69, 0x21, 0x9e, 0x42, 0xad, 0x16, 0xfc, 0xe1, 0x79,
+    0xdd, 0x6c, 0x23, 0xc9, 0xeb, 0xf6, 0x69, 0x59, 0xf8, 0x0a, 0x67, 0xf3, 0x20, 0x75, 0x05, 0xdb,
+    0xf8, 0x11, 0x1d, 0xdf, 0x4f, 0x32, 0xa9, 0xe7, 0xd6, 0x07, 0xe3, 0xbf, 0x06, 0xcd, 0xf0, 0x9b,
+    0x41, 0xd1, 0x52, 0x1e, 0x24, 0x49, 0x31, 0x75, 0x1b, 0x13, 0xeb, 0x2c, 0xf3, 0xa5, 0x1c, 0x08,
+    0x9c, 0x22, 0xdb, 0xb9, 0xb7, 0xdc, 0x86, 0x2e, 0xad, 0x47, 0x7a, 0x94, 0x54, 0x76, 0xd0, 0x37,
+    0x08, 0x38, 0x97, 0x1b, 0xc8, 0x09, 0x17, 0xf4, 0xf8, 0x02, 0x7c, 0xfb, 0x64, 0x73, 0x34, 0x31,
+    0x77, 0x83, 0x4c, 0x39, 0xa4, 0x1c, 0xbc, 0xa1, 0x26, 0x97, 0xe9, 0x5d, 0xa7, 0x79, 0x8d, 0x69,
+    0xaa, 0xb0, 0x46, 0x5a, 0xed, 0x97, 0x9e, 0xb9, 0x09, 0x6e, 0x49, 0x4a, 0x1f, 0x60, 0x9b, 0x25,
+    0xfb, 0x9d, 0x89, 0x10, 0x9e, 0xe8, 0x4d, 0xc7, 0xa5, 0xbc, 0x68, 0x72, 0x61, 0xba, 0xa5, 0x93,
+    0x7b, 0xc3, 0x63, 0x32, 0xeb, 0x61, 0xd9, 0xf2, 0xe2, 0xb8, 0x37, 0xff, 0xbc, 0xd4, 0xac, 0x4c,
+    0xcf, 0xe9, 0xe6, 0xde, 0x70, 0x6b, 0x15, 0x6d, 0x73, 0x55, 0xe5, 0x7c, 0x46, 0xd0, 0x7c, 0xcc,
+    0xf2, 0x33, 0x3e, 0x66, 0x81, 0x1a, 0x40, 0xcd, 0xaf, 0x16, 0xbd, 0x31, 0x6b, 0x84, 0x0f, 0xea,
+    0xcc, 0xf3, 0x16, 0xb3, 0x5a, 0x85, 0x5f, 0x59, 0xf3, 0xbf, 0xfc, 0x62, 0xb9, 0xb2, 0x03, 0x77,
+    0x0e, 0x7b, 0xc8, 0x60, 0x40, 0x30, 0xd8, 0x86, 0xe3, 0x37, 0xe5, 0x61, 0xf5, 0x9a, 0x69, 0x09,
+    0x1e, 0x2f, 0xad, 0x50, 0xdf, 0x71, 0x95, 0xc6, 0x02, 0xe7, 0x09, 0xeb, 0x1b, 0x1b, 0x64, 0x36,
+    0x78, 0x05, 0x80, 0x50, 0x57, 0x69, 0x5e, 0x1a, 0x15, 0x8f, 0xdf, 0x7f, 0x39, 0xe2, 0x08, 0x16,
+    0x33, 0x15, 0xf0, 0xab, 0x7a, 0xd2, 0x16, 0x0e, 0xfe, 0x04, 0x28, 0xbe, 0x32, 0x19, 0xa2, 0xa0,
+    0xb1, 0x34, 0xda, 0x23, 0x95, 0xcd, 0x5c, 0xcd, 0xc7, 0xf4, 0x5d, 0xba, 0x6e, 0x62, 0xe9, 0x04,
+    0x57, 0x97, 0xd7, 0x81, 0xae, 0xce, 0x72, 0x19, 0x9c, 0x9b, 0x34, 0x51, 0x7a, 0x4a, 0x23, 0xbd,
+    0xa8, 0x25, 0xc2, 0x09, 0x3c, 0xf6, 0x6c, 0x97, 0xb6, 0xe9, 0x20, 0xda, 0x9b, 0x78, 0x15, 0xaf,
+    0xdb, 0xe4, 0xb4, 0x9a, 0x1a, 0xc8, 0x05, 0x60, 0x6c, 0x6c, 0x1b, 0x4c, 0x9e, 0x08, 0x67, 0x4d,
+    0x10, 0xf0, 0xe5, 0x74, 0xc7, 0x0e, 0x42, 0x94, 0xa5, 0x3d, 0xc6, 0x83, 0xeb, 0xe9, 0x5c, 0x2a,
+    0x9c, 0xc5, 0x37, 0xcb, 0x6f, 0x41, 0x64, 0xe7, 0x93, 0x2c, 0xad, 0x26, 0x0f, 0xc6, 0x79, 0x3a,
+    0x88, 0xcc, 0x00, 0x04, 0x9c, 0xf7, 0x15, 0xc8, 0xcb, 0x80, 0x59, 0xda, 0xff, 0x8e, 0xda, 0xe8,
+    0x13, 0x56, 0x82, 0xc0, 0x43, 0xc0, 0x93, 0x70, 0x0e, 0x6f, 0xab, 0x36, 0x86, 0x0b, 0x27, 0x26,
+    0xe7, 0x1d, 0x95, 0x2c, 0xed, 0x64, 0x22, 0x49, 0xd6, 0x10, 0xa0, 0xe0, 0x29, 0x5d, 0xd7, 0x19,
+    0xfa, 0x92, 0xb5, 0x7f, 0xa5, 0x94, 0xd7, 0x61, 0x3a, 0x53, 0x31, 0x99, 0x86, 0x4b, 0x97, 0x43,
+    0xe1, 0x92, 0x54, 0xd9, 0xde, 0xfb, 0xd1, 0x13, 0x5d, 0x7b, 0xa9, 0x07, 0x95, 0xcc, 0x67, 0x4d,
+    0xe6, 0x4e, 0x75, 0x6c, 0x58, 0x18, 0x6f, 0xad, 0x1f, 0xe9, 0x1c, 0xe4, 0xde, 0x04, 0xca, 0xb4,
+    0xad, 0xfc, 0x4b, 0x60, 0x42, 0x2c, 0x67, 0x4d, 0x96, 0x61, 0x08, 0xa9, 0xb2, 0xd5, 0xd4, 0xaf,
+    0x12, 0xf7, 0x46, 0x83, 0xe1, 0x18, 0x9e, 0xb1, 0x17, 0xe3, 0x81, 0x40, 0x4f, 0xc2, 0x2d, 0xb0,
+    0x50, 0xb1, 0xf8, 0xd2, 0x1e, 0x59, 0xa9, 0x1e, 0x3f, 0xfa, 0x97, 0xa3, 0xfb, 0x03, 0x12, 0x2a,
+    0x4a, 0x64, 0x4d, 0x92, 0xb4, 0x52, 0x8f, 0xd1, 0xe4, 0xaa, 0x06, 0x7d, 0x00, 0x3c, 0x34, 0x70,
+    0x90, 0x6f, 0xd0, 0x60, 0xa4, 0xa2, 0x6b, 0x90, 0x2a, 0xcf, 0x26, 0x9c, 0x22, 0x3b, 0x1a, 0x40,
+    0x48, 0x4f, 0xc4, 0xf6, 0x00, 0x84, 0x0e, 0x5f, 0xce, 0x8c, 0x25, 0x3d, 0xf4, 0xc8, 0x78, 0x14,
+    0xce, 0x1c, 0x3f, 0xa0, 0x4b, 0x25, 0x18, 0xf7, 0x70, 0xbb, 0x2a, 0xf1, 0x25, 0x67, 0x8b, 0xbf,
+    0xfa, 0x56, 0x80, 0xbe, 0x39, 0xa2, 0x87, 0xe5, 0xda, 0x3c, 0x21, 0x64, 0x99, 0xcf, 0x5e, 0x45,
+    0x5b, 0x8b, 0x47, 0xc0, 0xa7, 0x30, 0xe8, 0x12, 0x2e, 0x93, 0xb4, 0x93, 0x68, 0x43, 0xe1, 0x47,
+    0x83, 0x6b, 0xa2, 0x39, 0x49, 0x9e, 0x3e, 0xa9, 0x23, 0x6b, 0x4f, 0x6a, 0x33, 0x24, 0x73, 0x33,
+    0x59, 0x12, 0x3a, 0xb5, 0x45, 0xc3, 0x57, 0xa6, 0x74, 0x52, 0xab, 0xaf, 0xf1, 0x26, 0x8d, 0x67,
+    0xd5, 0x9b, 0x47, 0x62, 0xf7, 0x3c, 0x59, 0x38, 0x8b, 0x5b, 0x1d, 0x76, 0x65, 0xf9, 0x18, 0xf5,
+    0xc5, 0xc7, 0xf4, 0x78, 0xab, 0x9d, 0x3a, 0x8e, 0x69, 0xca, 0x94, 0x03, 0x54, 0xda, 0x1c, 0xd5,
+    0x3b, 0xe3, 0x57, 0xdb, 0x85, 0x72, 0x6e, 0x3f, 0xbe, 0x0d, 0xa4, 0xe1, 0xf6, 0x0b, 0x37, 0x59,
+    0x6f, 0xc9, 0x18, 0xe7, 0x20, 0xbd, 0x5d, 0x98, 0x3c, 0x26, 0xb8, 0x6b, 0x2b, 0x3c, 0x09, 0x80,
+    0x63, 0x98, 0xb0, 0xcd, 0xb9, 0x52, 0xfa, 0x3c, 0x6e, 0xbf, 0xdf, 0xa3, 0xe8, 0xc4, 0x0e, 0x3f,
+    0x40, 0x6a, 0x9c, 0xa9, 0xf4, 0x30, 0xf1, 0x9e, 0x61, 0xc8, 0x65, 0x78, 0x71, 0xf5, 0x9e, 0x2f,
+    0x28, 0x35, 0x55, 0xcb, 0xcb, 0xe8, 0x3e, 0xc9, 0x78, 0xe7, 0x10, 0xbe, 0xe2, 0x78, 0xf1, 0x3a,
+    0xad, 0x15, 0x8f, 0xce, 0x83, 0x80, 0xc4, 0xd9, 0x01, 0x55, 0xbe, 0xc9, 0xce, 0xe3, 0x60, 0xf2,
+    0x7c, 0x3a, 0xe7, 0x92, 0x64, 0xfa, 0xa6, 0xd6, 0x25, 0x35, 0x73, 0x6a, 0xbe, 0x12, 0x92, 0xf0,
+    0xea, 0xee, 0x1d, 0xc8, 0x2b, 0x41, 0xe7, 0xea, 0xe3, 0x1f, 0xb0, 0x2b, 0xe1, 0x97, 0x43, 0x47,
+    0x02, 0x06, 0xd9, 0x85, 0xb7, 0x8f, 0xad, 0x76, 0x45, 0x73, 0x39, 0xb8, 0x19, 0xcc, 0xb9, 0x96,
+    0xe2, 0xe9, 0xd1, 0x21, 0xac, 0xf7, 0x39, 0x8d, 0x6e, 0x79, 0x2f, 0x7d, 0xfb, 0x7b, 0x0c, 0xbe,
+    0xbf, 0x93, 0xae, 0x71, 0x34, 0xa5, 0x87, 0x85, 0x33, 0x04, 0x68, 0xd7, 0x90, 0x1e, 0xf1, 0x4b,
+    0xdd, 0x11, 0x3c, 0xe8, 0x9b, 0x3d, 0x90, 0x65, 0x2d, 0x79, 0x51, 0x79, 0xf1, 0x73, 0x55, 0xf7,
+    0x36, 0x8f, 0x21, 0xc1, 0xb9, 0xcd, 0x1e, 0x62, 0xbd, 0x55, 0xcb, 0x93, 0x30, 0x54, 0x12, 0xa6,
+    0x39, 0xe7, 0xe1, 0x31, 0xa5, 0x33, 0xa6, 0x14, 0x53, 0x2c, 0x8d, 0x7a, 0xbf, 0x2e, 0x02, 0xdb,
+    0x58, 0x69, 0x67, 0xb4, 0xbc, 0x77, 0x0c, 0x9e, 0xd1, 0x3d, 0x88, 0x8c, 0x3e, 0xab, 0x09, 0xe6,
+    0x71, 0x30, 0x88, 0x78, 0x6d, 0x02, 0xb7, 0xdf, 0x6d, 0xb7, 0x96, 0xe8, 0x94, 0x49, 0x2a, 0x7a,
+    0x7c, 0x6b, 0x9f, 0x73, 0xed, 0xa4, 0x2f, 0xea, 0xba, 0x74, 0xea, 0x41, 0x8c, 0x4a, 0xa3, 0xf3,
+    0x35, 0xbc, 0xe1, 0x02, 0x08, 0xde, 0x0c, 0x22, 0xd8, 0x19, 0x26, 0xd3, 0xf7, 0x8c, 0xc1, 0x48,
+    0x58, 0x95, 0xd7, 0x2f, 0x04, 0x3d, 0x20, 0xc5, 0xca, 0xa9, 0x58, 0xe7, 0x2a, 0x07, 0x0f, 0x8c,
+    0xc0, 0x3a, 0x0f, 0x5d, 0xb1, 0xd9, 0xdf, 0x5a, 0x92, 0xa8, 0x5c, 0x18, 0x08, 0x5e, 0xc3, 0x91,
+    0xcc, 0x0d, 0xc6, 0x3e, 0x52, 0x61, 0x20, 0xa9, 0x71, 0x7b, 0xd8, 0xda, 0xf0, 0xda, 0xd4, 0x78,
+    0xb2, 0x7d, 0x9e, 0xa3, 0x29, 0x75, 0xbe, 0x19, 0xac, 0x0a, 0xe0, 0xdd, 0x77, 0x51, 0x05, 0xc4,
+    0x97, 0xf5, 0xbb, 0xe5, 0xad, 0x61, 0xb9, 0xca, 0xaf, 0x82, 0x5d, 0x53, 0xb5, 0x5e, 0x66, 0xa1,
+    0x94, 0xaa, 0x4d, 0x0a, 0x08, 0x0a, 0x25, 0xe1, 0x5a, 0xb8, 0x4a, 0xd7, 0x76, 0x5d, 0x7d, 0x1d,
+    0x3d, 0x3d, 0xdb, 0x8a, 0x67, 0x4c, 0xf6, 0x5c, 0xe5, 0xab, 0xf0, 0xe0, 0xfb, 0xe5, 0xdd, 0x24,
+    0x23, 0xcc, 0xd1, 0xf4, 0x0a, 0xb6, 0x32, 0x66, 0x50, 0x25, 0x07, 0x79, 0x05, 0xaf, 0x39, 0xca,
+    0xae, 0x5d, 0x43, 0xc1, 0x69, 0xb4, 0xb4, 0xab, 0xd3, 0xc0, 0xd7, 0xa8, 0xc5, 0x6f, 0x90, 0x39,
+    0xb9, 0xd6, 0x12, 0x83, 0xf2, 0xf7, 0xfa, 0xd0, 0x99, 0xec, 0x5c, 0x60, 0x0b, 0xc5, 0xeb, 0xfc,
+    0x4f, 0xbc, 0x71, 0xf2, 0x89, 0x42, 0xe1, 0x4b, 0x12, 0x6d, 0x4a, 0xbe, 0x7a, 0x77, 0xba, 0x2b,
+    0x85, 0xa5, 0xbc, 0xd3, 0x50, 0xde, 0x29, 0x56, 0xe5, 0xfa, 0xb7, 0xc1, 0x19, 0x74, 0x07, 0x2a,
+    0xe2, 0x94, 0x8e, 0xfe, 0x20, 0xf5, 0x7a, 0x29, 0x35, 0x6e, 0x5c, 0xaa, 0x41, 0xfd, 0x33, 0x32,
+    0x60, 0x07, 0x48, 0xb3, 0xd8, 0xc1, 0xe1, 0xfb, 0xe7, 0xcd, 0xb8, 0xf8, 0x90, 0xf9, 0x9a, 0xaf,
+    0xd0, 0xeb, 0xe1, 0x62, 0xc7, 0x84, 0xa0, 0x95, 0x05, 0x62, 0xf0, 0x0a, 0xc8, 0x7e, 0x48, 0x52,
+    0xce, 0xe2, 0x11, 0x63, 0x7b, 0x93, 0x19, 0x0f, 0xea, 0x19, 0x47, 0x93, 0xf9, 0x2b, 0xb4, 0xc1,
+    0xcd, 0x0e, 0x7c, 0x2f, 0xc3, 0x7c, 0x02, 0x7e, 0xae, 0x05, 0x84, 0xd6, 0x00, 0x68, 0xd6, 0xbd,
+    0xca, 0xd2, 0x10, 0xe5, 0x9c, 0x6b, 0x1f, 0x0e, 0x94, 0xaa, 0x27, 0x43, 0xec, 0x00, 0xb7, 0xdf,
+    0xf2, 0x15, 0xb8, 0xeb, 0x6e, 0xab, 0xf2, 0x59, 0x98, 0xba, 0x1b, 0xb9, 0x3f, 0xe7, 0x2b, 0xf6,
+    0x9c, 0x63, 0x69, 0x8e, 0xc2, 0xbd, 0xe9, 0x89, 0xb2, 0xf8, 0x81, 0xb8, 0x3e, 0x0f, 0x2b, 0x3d,
+    0x61, 0xe0, 0x35, 0xa4, 0xdf, 0x97, 0x18, 0x3a, 0xda, 0xea, 0x37, 0x79, 0xd5, 0x2b, 0xfc, 0xe0,
+    0x77, 0xda, 0x2b, 0x62, 0xb3, 0x9d, 0x33, 0xf0, 0xad, 0xc5, 0xdf, 0x7e, 0x43, 0x67, 0x0e, 0x7d,
+    0xa0, 0xc3, 0x1f, 0x59, 0x34, 0x24, 0x4d, 0xf4, 0x14, 0x33, 0x16, 0xf2, 0xaf, 0x5c, 0xcc, 0x62,
+    0xcc, 0x57, 0x1c, 0x4d, 0xf4, 0x65, 0x45, 0x75, 0x42, 0xdc, 0xfe, 0x16, 0x6b, 0x56, 0xc9, 0x6c,
+    0xe5, 0x57, 0xfb, 0x83, 0xc4, 0x09, 0x0f, 0xd3, 0x45, 0xec, 0x56, 0xa6, 0xf5, 0xa9, 0xfc, 0xbf,
+    0x82, 0xef, 0x84, 0xec, 0x18, 0x7e, 0xf1, 0xf6, 0xa6, 0xaa, 0x72, 0x39, 0x97, 0x02, 0x01, 0xbb,
+    0x13, 0xf7, 0x74, 0x4b, 0x58, 0x25, 0x13, 0x0a, 0xce, 0x32, 0xd4, 0xcc, 0xbf, 0xa2, 0x2d, 0xa9,
+    0x1f, 0xaa, 0xc4, 0x98, 0x58, 0x0b, 0x03, 0x2d, 0x9e, 0xe4, 0x90, 0xf4, 0x50, 0xd6, 0x43, 0x39,
+    0x71, 0x0f, 0xeb, 0x30, 0xdd, 0x10, 0x66, 0x06, 0x9b, 0xf5, 0xfd, 0xa7, 0x1d, 0x44, 0xef, 0x90,
+    0x98, 0xcf, 0xd5, 0xe6, 0x49, 0x0e, 0x53, 0x2b, 0xf7, 0xb6, 0xfb, 0x73, 0xda, 0x4a, 0xa2, 0x82,
+    0x49, 0x08, 0x1a, 0xa6, 0x3f, 0xb1, 0xca, 0x47, 0x40, 0x7a, 0x0d, 0x30, 0x0e, 0xaf, 0xc3, 0xc8,
+    0x42, 0xab, 0x6a, 0xa7, 0xde, 0x66, 0x43, 0x76, 0x8a, 0x8d, 0xa7, 0x76, 0x6a, 0x8a, 0xb2, 0xf1,
+    0xbf, 0xe8, 0x34, 0x14, 0x81, 0xc2, 0x0b, 0x05, 0x9d, 0x85, 0x1f, 0x87, 0x09, 0x83, 0x7b, 0x3e,
+    0xbd, 0x56, 0x18, 0x7c, 0x6a, 0xa5, 0x4f, 0x2c, 0x3f, 0xd8, 0xf9, 0x2c, 0xf1, 0x04, 0xeb, 0xda,
+    0x42, 0xad, 0x55, 0x2d, 0x61, 0xa4, 0xf9, 0xda, 0xb3, 0xc1, 0xea, 0xff, 0x0c, 0x55, 0x2b, 0x3f,
+    0x52, 0xb1, 0x4d, 0xee, 0x7c, 0x03, 0x8a, 0x63, 0xe2, 0xef, 0xe8, 0xc2, 0xae, 0xbd, 0xa1, 0x4c,
+    0x42, 0xa9, 0xa2, 0xb7, 0x17, 0xe6, 0x3d, 0x33, 0x62, 0x2f, 0x30, 0x49, 0x36, 0x9f, 0x40, 0xf2,
+    0xac, 0x4a, 0x1f, 0x13, 0x7c, 0xff, 0xe5, 0x08, 0x03, 0xa2, 0x29, 0xe7, 0xfd, 0x17, 0xfe, 0x35,
+    0x1f, 0x05, 0xe3, 0x21, 0x25, 0x86, 0x86, 0x45, 0x9d, 0xd6, 0x64, 0x8b, 0x8d, 0xe4, 0x5d, 0xc6,
+    0x77, 0xe5, 0xac, 0x40, 0xfc, 0x9e, 0x3f, 0x05, 0x5f, 0x24, 0x3f, 0xcb, 0x0a, 0x0f, 0x12, 0x3f,
+    0x19, 0x94, 0x8f, 0x64, 0xd6, 0x86, 0x72, 0x29, 0xc8, 0x50, 0xc5, 0xca, 0x6e, 0x86, 0x9f, 0x4a,
+    0xbc, 0xe9, 0x10, 0xf5, 0x90, 0xf3, 0xc2, 0x1e, 0xe7, 0xba, 0x64, 0x35, 0xfe, 0xbb, 0x80, 0x7f,
+    0xb4, 0x22, 0x9d, 0x3c, 0x84, 0x11, 0xba, 0x78, 0x34, 0x69, 0xc4, 0xeb, 0x2a, 0x34, 0xbc, 0x8d,
+    0x0e, 0x2c, 0x76, 0xd5, 0xc2, 0x4a, 0x39, 0x59, 0x15, 0xfe, 0x67, 0x00, 0x5f, 0x5f, 0x85, 0x29,
+    0x63, 0x6d, 0x4d, 0x26, 0x0b, 0xcc, 0x7e, 0x95, 0xb1, 0x12, 0x0d, 0xd3, 0x54, 0xc3, 0x64, 0xc3,
+    0x0f, 0xd0, 0xf6, 0x1a, 0x7d, 0xdf, 0xf1, 0x55, 0xc6, 0x0e, 0x45, 0xd1, 0xad, 0x11, 0xce, 0x03,
+    0x32, 0x8e, 0x9d, 0xb1, 0x17, 0x24, 0x2f, 0xaf, 0xf1, 0xc4, 0xa8, 0x7f, 0xf6, 0x5c, 0xfc, 0x7b,
+    0x67, 0xa4, 0x49, 0xe2, 0xe3, 0xf5, 0xd2, 0xaa, 0xf8, 0xe8, 0xde, 0x0f, 0xf3, 0x9f, 0x69, 0xcc,
+    0x95, 0xd6, 0xc6, 0x6b, 0xc9, 0x79, 0x6c, 0x81, 0x3a, 0x7d, 0xef, 0xef, 0x49, 0x6b, 0x7e, 0xe3,
+    0xf7, 0x21, 0x4d, 0xfd, 0x5b, 0x34, 0xbd, 0x1f, 0xfa, 0x74, 0xf2, 0x0e, 0x2e, 0x20, 0xf3, 0x13,
+    0x02, 0xdf, 0xf5, 0x7e, 0x78, 0x07, 0xfa, 0x02, 0xd8, 0x0e, 0xe8, 0x16, 0x42, 0xf7, 0x5b, 0x7e,
+    0x5c, 0x5d, 0x46, 0xe0, 0xc7, 0xe9, 0x01, 0xee, 0xb0, 0x1b, 0x8f, 0x25, 0x01, 0x62, 0xd4, 0xf8,
+    0x77, 0x8c, 0xb8, 0x13, 0x69, 0x85, 0x59, 0xe1, 0x7b, 0xf2, 0xaf, 0xbf, 0x1e, 0x2a, 0xb3, 0x0a,
+    0xbe, 0x1e, 0x79, 0xb7, 0x1c, 0xa6, 0xf8, 0x46, 0x95, 0xc3, 0x95, 0x4b, 0xa3, 0xca, 0x1a, 0xe5,
+    0xf8, 0xa8, 0x72, 0x84, 0xf2, 0xc5, 0xa8, 0xf2, 0x18, 0xe5, 0x93, 0x51, 0xe5, 0xb1, 0xca, 0x2f,
+    0xd4, 0xf2, 0x93, 0xb4, 0xa8, 0x55, 0x5e, 0xa5, 0xc5, 0xe1, 0xf6, 0x48, 0x65, 0xfb, 0xc8, 0xf6,
+    0x28, 0x65, 0x43, 0xb0, 0x5d, 0x2d, 0x8f, 0x53, 0x9e, 0x1e, 0x55, 0xd6, 0x29, 0xab, 0x46, 0x95,
+    0xc7, 0x2b, 0xcb, 0x46, 0x95, 0x27, 0x28, 0xf3, 0x47, 0xe3, 0xe7, 0x94, 0xe9, 0xa3, 0xe8, 0xd1,
+    0x2b, 0xe3, 0x46, 0x8e, 0x37, 0x51, 0xb9, 0xf3, 0xdd, 0x28, 0xf8, 0x49, 0x8a, 0xef, 0xbb, 0x91,
+    0xf0, 0x93, 0x95, 0x4b, 0xa3, 0xca, 0xd1, 0xca, 0xf1, 0x51, 0xe5, 0x29, 0xca, 0x17, 0xa3, 0xca,
+    0x53, 0x95, 0x4f, 0x46, 0x95, 0xef, 0x51, 0x7e, 0x31, 0xaa, 0x1c, 0xa3, 0x48, 0xa3, 0xca, 0xb1,
+    0xca, 0xf6, 0x51, 0xe5, 0x69, 0xca, 0x0b, 0xa3, 0xca, 0xd3, 0x95, 0x75, 0xa3, 0xca, 0x71, 0xca,
+    0x13, 0xa3, 0xca, 0x33, 0x94, 0xa5, 0xdf, 0x8d, 0x98, 0xcf, 0x4c, 0x65, 0xfe, 0xe8, 0xf9, 0xcc,
+    0xa2, 0x97, 0x33, 0xf1, 0xea, 0x0d, 0x83, 0x41, 0x18, 0x83, 0xf9, 0x3c, 0x5e, 0xa1, 0xc2, 0x17,
+    0x84, 0x51, 0xbb, 0xf0, 0xde, 0x5f, 0x22, 0x9e, 0x94, 0xc1, 0x27, 0x35, 0x2d, 0x31, 0xd1, 0xc8,
+    0x24, 0xf3, 0x7c, 0xd1, 0xc6, 0x32, 0xbe, 0xa8, 0xd0, 0xb0, 0xb9, 0x74, 0x83, 0xb0, 0xb1, 0x28,
+    0xbf, 0xbc, 0xa8, 0xa0, 0x70, 0x5e, 0x82, 0xa1, 0x74, 0x93, 0xa1, 0x6c, 0x6b, 0x11, 0xb3, 0xda,
+    0xb2, 0x82, 0xb1, 0x15, 0xad, 0x17, 0xca, 0x8b, 0xf9, 0x6d, 0xcc, 0x9a, 0xcd, 0x45, 0xe5, 0x8e,
+    0x0d, 0xa5, 0x5b, 0x98, 0x8d, 0x45, 0x9b, 0x04, 0xc6, 0x52, 0xb4, 0xb1, 0xb4, 0x7c, 0x9b, 0x61,
+    0x63, 0x41, 0x99, 0xa1, 0x68, 0xab, 0xb3, 0x40, 0xa8, 0x00, 0x24, 0x0b, 0x18, 0xeb, 0x93, 0xe6,
+    0xd5, 0xf6, 0xfb, 0x99, 0xb9, 0x15, 0x50, 0xb9, 0xbe, 0xa8, 0x8c, 0x2f, 0x06, 0x44, 0x05, 0xbc,
+    0x61, 0xee, 0xd6, 0x05, 0x06, 0x73, 0x79, 0x79, 0x69, 0xb9, 0x61, 0x7d, 0x69, 0x61, 0xd1, 0xa3,
+    0x50, 0x06, 0xb4, 0xcf, 0x03, 0x1e, 0xde, 0xb0, 0xa9, 0x94, 0x37, 0x94, 0x95, 0x17, 0x55, 0xc0,
+    0x33, 0x03, 0x43, 0x1a, 0x60, 0x90, 0x0a, 0xec, 0xc5, 0x97, 0x96, 0x1a, 0x4a, 0x37, 0x14, 0x32,
+    0x2b, 0x36, 0x6d, 0x2e, 0xd8, 0x50, 0x5c, 0x68, 0x28, 0x2d, 0xc3, 0xae, 0xcc, 0x5a, 0xa8, 0xde,
+    0x58, 0xb0, 0x69, 0x9b, 0xc1, 0xbc, 0xe4, 0xc1, 0x44, 0x03, 0x74, 0x2a, 0x2f, 0x2e, 0xaa, 0x98,
+    0xcd, 0xa4, 0x96, 0x0a, 0x1b, 0x0a, 0x29, 0xae, 0xa2, 0x4d, 0x05, 0xcf, 0x6d, 0x28, 0x32, 0x24,
+    0x43, 0xeb, 0x86, 0xe2, 0x4d, 0x45, 0x8c, 0x6d, 0x85, 0x25, 0x8d, 0x61, 0x52, 0x60, 0x5e, 0x2f,
+    0x94, 0x95, 0x16, 0xc3, 0x20, 0x19, 0x45, 0x9b, 0x8a, 0xca, 0x0b, 0x36, 0xc0, 0xa0, 0xa5, 0x7c,
+    0xd1, 0x7a, 0x4a, 0xa1, 0xa3, 0x40, 0xd8, 0xc0, 0x33, 0x69, 0xc5, 0x15, 0x2f, 0x18, 0x8a, 0x28,
+    0x95, 0x48, 0x6f, 0x5a, 0x79, 0xf1, 0xe6, 0x22, 0xa4, 0x34, 0xdf, 0x9c, 0x9a, 0x99, 0x9f, 0x6e,
+    0xcb, 0x67, 0xcc, 0xe9, 0x2b, 0x0c, 0xd6, 0xe4, 0xec, 0xb5, 0x38, 0x4b, 0x43, 0xf1, 0xa6, 0x0a,
+    0xbe, 0x60, 0xc3, 0x86, 0x02, 0x8a, 0x60, 0xbd, 0xb3, 0x68, 0xfd, 0x0b, 0x80, 0xa6, 0x78, 0x43,
+    0x51, 0x21, 0xce, 0xe2, 0x51, 0x83, 0x4d, 0x58, 0xbf, 0xbe, 0xa8, 0xa2, 0xc2, 0x21, 0x6c, 0xd8,
+    0xb0, 0x0d, 0x60, 0x8b, 0xf9, 0x62, 0x98, 0xc5, 0x4b, 0x45, 0x85, 0x51, 0x0c, 0xef, 0xe0, 0xcb,
+    0xa0, 0xbd, 0xa8, 0x1c, 0x66, 0x6a, 0x28, 0xae, 0x30, 0xc0, 0xcc, 0x0b, 0x8b, 0x37, 0x3d, 0x6f,
+    0xe0, 0x9d, 0x45, 0x06, 0x07, 0x20, 0x00, 0x68, 0x43, 0xc5, 0x46, 0x40, 0x0d, 0xcd, 0x65, 0x05,
+    0xeb, 0x5f, 0x28, 0xe2, 0x2b, 0x0c, 0xf3, 0x8a, 0x79, 0x84, 0x03, 0x46, 0x16, 0x1a, 0x9e, 0xdb,
+    0xc6, 0x17, 0x55, 0x24, 0xcc, 0x37, 0x14, 0x96, 0x6e, 0xd9, 0xb4, 0xa1, 0xb4, 0xa0, 0xd0, 0xb0,
+    0xb1, 0xf8, 0x79, 0x27, 0x6f, 0xe0, 0x0b, 0x5e, 0x28, 0x32, 0x6c, 0x28, 0xdd, 0xf4, 0x7c, 0x51,
+    0xf9, 0x82, 0x28, 0x26, 0x3d, 0x79, 0xed, 0xa2, 0x07, 0x99, 0x74, 0x4a, 0x10, 0xb0, 0xd2, 0x40,
+    0x01, 0x81, 0xe0, 0xe7, 0x8b, 0x0c, 0x8b, 0x16, 0x30, 0x0b, 0x9f, 0x2b, 0x2d, 0xe5, 0x17, 0x6e,
+    0x28, 0xde, 0x08, 0x0c, 0x7a, 0xe0, 0xb9, 0xe2, 0xd2, 0x8a, 0x05, 0x15, 0xdb, 0x2a, 0x98, 0xef,
+    0x95, 0x0d, 0x15, 0x40, 0x2f, 0x10, 0xb3, 0xbe, 0xb4, 0xbc, 0x1c, 0xf8, 0x04, 0x48, 0xa7, 0xaf,
+    0x5b, 0x64, 0xdc, 0x68, 0x4d, 0x5e, 0xbd, 0x22, 0x15, 0x9e, 0x1e, 0x59, 0x6a, 0xdc, 0x38, 0x7d,
+    0x5d, 0xe2, 0xc6, 0x47, 0x0d, 0x4c, 0x32, 0x30, 0x7e, 0xd3, 0x03, 0x42, 0x05, 0x65, 0xfc, 0xc6,
+    0x11, 0x72, 0x01, 0xab, 0xb3, 0x0d, 0xa7, 0x08, 0xbc, 0x2a, 0x2e, 0x2c, 0x32, 0x14, 0x18, 0x82,
+    0x30, 0x15, 0x2a, 0xdf, 0x17, 0x8c, 0x58, 0xb6, 0xc2, 0x22, 0xbe, 0xa8, 0x1c, 0xc7, 0x37, 0x20,
+    0x6d, 0x86, 0x42, 0x64, 0x3e, 0x43, 0xc7, 0x82, 0x01, 0x12, 0xb7, 0x32, 0x56, 0x10, 0x91, 0x0a,
+    0xc0, 0xf0, 0x42, 0xd1, 0x36, 0x9c, 0x4f, 0x79, 0x11, 0x2f, 0x94, 0xa3, 0x90, 0x18, 0xe6, 0x56,
+    0x2c, 0x08, 0xb2, 0x34, 0x75, 0x43, 0x69, 0x45, 0x11, 0x5d, 0x04, 0xa1, 0xbc, 0x08, 0x56, 0x73,
+    0x73, 0x31, 0x0a, 0x12, 0x74, 0x4e, 0x64, 0x6c, 0x3c, 0x30, 0x92, 0x2f, 0x2f, 0x58, 0x5f, 0xf4,
+    0x68, 0x14, 0x63, 0x30, 0xac, 0x9b, 0x5b, 0x96, 0x17, 0xc5, 0x64, 0x02, 0xdf, 0x42, 0xe4, 0x02,
+    0xbb, 0x4b, 0xd7, 0x17, 0xf0, 0xa5, 0xe5, 0x8f, 0x1a, 0xd6, 0x08, 0xbc, 0xa1, 0xd4, 0x11, 0x6c,
+    0x50, 0x05, 0x1a, 0x38, 0x57, 0x2e, 0xac, 0x87, 0x11, 0x81, 0xf4, 0xe2, 0xe7, 0x37, 0x15, 0xd0,
+    0x27, 0xe4, 0x8b, 0x80, 0xaa, 0xc3, 0xa4, 0x94, 0x0a, 0x9b, 0x0a, 0x0d, 0xe5, 0x05, 0xc0, 0x7b,
+    0x2a, 0xf6, 0x45, 0x85, 0x50, 0x69, 0x45, 0x5e, 0xab, 0x82, 0xf5, 0xf8, 0xe3, 0x8f, 0x33, 0x45,
+    0x85, 0xc5, 0x80, 0x1d, 0xd7, 0x85, 0x59, 0xb0, 0x90, 0x89, 0x62, 0x56, 0xaf, 0x4d, 0xb7, 0x85,
+    0x74, 0x28, 0x38, 0xb8, 0x2a, 0x89, 0x94, 0xfa, 0x05, 0xcc, 0x6c, 0x18, 0x98, 0x49, 0x2b, 0xda,
+    0x5c, 0xbc, 0xbe, 0x88, 0xf2, 0xa7, 0x60, 0x33, 0xb4, 0x20, 0xf3, 0x86, 0x15, 0x62, 0xad, 0xcd,
+    0xc6, 0x44, 0xcd, 0x9e, 0x6d, 0xb0, 0xa9, 0xab, 0xaa, 0xca, 0x0e, 0x82, 0x3a, 0x90, 0x9c, 0xd9,
+    0xd8, 0x94, 0x59, 0x00, 0x12, 0xbc, 0xad, 0x54, 0x00, 0x5a, 0xcb, 0x8a, 0x41, 0x10, 0xbe, 0xbf,
+    0xc2, 0xc0, 0x3e, 0x94, 0xba, 0x72, 0xe0, 0xf8, 0x7c, 0x03, 0x15, 0x0a, 0xf8, 0x51, 0x81, 0xe6,
+    0x1b, 0x40, 0x0d, 0x46, 0xca, 0x09, 0xe2, 0x2b, 0x2c, 0x46, 0x49, 0x28, 0x45, 0x95, 0x43, 0x16,
+    0x95, 0xc2, 0x6a, 0xc1, 0x0f, 0xa2, 0x28, 0x2b, 0x28, 0xe7, 0x8b, 0x71, 0x06, 0x15, 0x68, 0x3a,
+    0xb0, 0x46, 0x5d, 0x46, 0x3a, 0x81, 0xc7, 0xa3, 0xa2, 0x98, 0x1f, 0x48, 0x9b, 0xba, 0xa0, 0xa9,
+    0x6b, 0xb3, 0x57, 0xdd, 0x9f, 0xbc, 0x6a, 0xed, 0xfd, 0x69, 0xe6, 0x55, 0xea, 0xba, 0x62, 0xbf,
+    0x05, 0xea, 0x82, 0x3d, 0x50, 0x11, 0xb4, 0x11, 0x2a, 0x1b, 0x93, 0x37, 0x00, 0xef, 0x69, 0x99,
+    0xaa, 0x1b, 0x63, 0x29, 0x58, 0xef, 0x44, 0x81, 0x51, 0x4b, 0xc1, 0x01, 0x7e, 0x30, 0xce, 0x02,
+    0x60, 0xf7, 0x0f, 0xf8, 0x5c, 0x01, 0x53, 0xa9, 0xc0, 0xe2, 0x16, 0x58, 0x29, 0x55, 0x7a, 0xee,
+    0xea, 0x4a, 0x69, 0x59, 0xd1, 0x26, 0x95, 0x9b, 0x73, 0xb7, 0x22, 0x17, 0x9e, 0x03, 0xd5, 0x51,
+    0x15, 0x91, 0xaa, 0xc4, 0x28, 0xed, 0xf9, 0xff, 0x2a, 0xd1, 0x73, 0x42, 0x31, 0x48, 0xf8, 0x8a,
+    0x34, 0xd0, 0x52, 0x50, 0x6a, 0x7e, 0xbd, 0x13, 0xf4, 0xc8, 0x0c, 0xd2, 0x82, 0x7c, 0x43, 0x79,
+    0x5c, 0x60, 0x00, 0x25, 0xd8, 0xb4, 0x19, 0x66, 0x05, 0x64, 0x81, 0x55, 0xda, 0xf8, 0x0f, 0x45,
+    0x02, 0xa8, 0x4c, 0x2b, 0x15, 0x50, 0x75, 0x54, 0x56, 0x6c, 0x5d, 0xf2, 0x08, 0x63, 0x2f, 0x2e,
+    0xe7, 0x05, 0x90, 0x84, 0x0a, 0x0a, 0xc6, 0x14, 0x57, 0x94, 0x9a, 0x1e, 0x7e, 0x38, 0x11, 0x26,
+    0x02, 0xe0, 0x9b, 0x0a, 0x36, 0x16, 0xa9, 0xfa, 0x3b, 0x2c, 0x8f, 0x89, 0xc6, 0x07, 0x17, 0x2d,
+    0x7e, 0xe8, 0xe1, 0x47, 0x96, 0x98, 0x0a, 0x9e, 0x5b, 0x5f, 0x58, 0xe4, 0x08, 0xaa, 0x81, 0x61,
+    0xd9, 0xdc, 0x8a, 0xfb, 0xe7, 0x96, 0x3d, 0x16, 0xc5, 0xac, 0xb0, 0xad, 0x51, 0x11, 0x6c, 0x2a,
+    0x05, 0xdb, 0x58, 0xbc, 0xb1, 0x00, 0xc8, 0x50, 0x9d, 0x02, 0x2c, 0x63, 0xc5, 0xfa, 0xf2, 0xe2,
+    0x32, 0x14, 0xe0, 0xd9, 0x68, 0xa3, 0xff, 0x91, 0x12, 0xa8, 0x5c, 0xcc, 0x06, 0xf7, 0x71, 0x57,
+    0x05, 0x8b, 0x9e, 0x13, 0x9e, 0x67, 0x9e, 0x4c, 0x37, 0x67, 0x33, 0xf3, 0x36, 0x81, 0x21, 0x4c,
+    0x08, 0x02, 0x85, 0x24, 0x78, 0x85, 0x75, 0xf3, 0x62, 0x43, 0x41, 0x61, 0x21, 0x4a, 0xc2, 0xa3,
+    0x86, 0x7b, 0xe7, 0x56, 0xdc, 0xcb, 0x50, 0xc7, 0xa5, 0x01, 0xa7, 0xa5, 0x67, 0xc3, 0x34, 0x5a,
+    0xbd, 0x21, 0xa9, 0x8a, 0x3a, 0x32, 0x70, 0x60, 0x0b, 0xe0, 0x3f, 0x7e, 0x16, 0x32, 0x74, 0x49,
+    0x99, 0xee, 0x39, 0x2c, 0x93, 0x3e, 0x57, 0xfd, 0xe4, 0x07, 0x7f, 0xff, 0x6d, 0xee, 0xdd, 0x3a,
+    0x6c, 0xc7, 0xd7, 0xd4, 0xc7, 0x42, 0x8c, 0xd7, 0x02, 0x99, 0xf8, 0x1b, 0x10, 0xe6, 0x9d, 0x83,
+    0xdf, 0x6f, 0xa1, 0x6e, 0x15, 0x3c, 0x67, 0x42, 0xce, 0xbd, 0x36, 0x1d, 0xdf, 0x06, 0x60, 0x99,
+    0x3c, 0xf8, 0xc4, 0x43, 0x5d, 0x0a, 0xa4, 0x4c, 0xef, 0xc2, 0xaf, 0x26, 0x4d, 0xad, 0x2f, 0x80,
+    0x76, 0x3b, 0xd4, 0x39, 0xe0, 0xf3, 0x2a, 0xd4, 0x17, 0x05, 0xe1, 0xff, 0x7f, 0x9f, 0xbf, 0xe0,
+    0xab, 0x01, 0x8f, 0xb1, 0xcc, 0xeb, 0xf0, 0x79, 0x0f, 0x3e, 0x7b, 0xe0, 0xe3, 0x86, 0x4f, 0x2b,
+    0x7c, 0x3a, 0xe0, 0xe3, 0x87, 0x0f, 0xf3, 0x38, 0xcb, 0xe8, 0xe1, 0x63, 0x80, 0x4f, 0x22, 0x7c,
+    0x92, 0xe0, 0x63, 0x85, 0xcf, 0xb3, 0xf0, 0x29, 0x83, 0x4f, 0x15, 0x7c, 0x5e, 0x87, 0xcf, 0x7b,
+    0xf0, 0xd9, 0x03, 0x1f, 0x37, 0x7c, 0x5a, 0xe1, 0xd3, 0x01, 0x1f, 0x3f, 0xde, 0x58, 0x82, 0x31,
+    0xf4, 0xf0, 0x31, 0xc0, 0x27, 0x11, 0x3e, 0x49, 0xf0, 0xb1, 0xc2, 0xe7, 0x59, 0xf8, 0x94, 0xc1,
+    0x07, 0x7d, 0x7f, 0x34, 0xee, 0xdd, 0xe1, 0xa5, 0xbd, 0xd5, 0x39, 0x8c, 0x52, 0xfe, 0xdd, 0x8c,
+    0xae, 0x9b, 0x8f, 0xa5, 0x5d, 0xcf, 0xf9, 0xf3, 0x81, 0x09, 0xeb, 0xea, 0xa4, 0xd3, 0xcf, 0x4c,
+    0x3a, 0x9c, 0x04, 0xb1, 0x6b, 0x45, 0x59, 0xf1, 0x26, 0xa1, 0x8c, 0x99, 0x76, 0x93, 0x61, 0xf2,
+    0xf3, 0x85, 0xc2, 0xe2, 0xcd, 0x1b, 0x4b, 0x0b, 0x0b, 0x8b, 0x17, 0x33, 0x42, 0x1f, 0x56, 0xd0,
+    0xc2, 0x22, 0xa6, 0xb3, 0x2f, 0xd4, 0x8a, 0x25, 0x7f, 0x3f, 0x2d, 0x05, 0xdb, 0xfa, 0x06, 0x18,
+    0x06, 0xb4, 0xe9, 0x05, 0x1a, 0x3a, 0xe4, 0x57, 0x50, 0x03, 0x51, 0xc1, 0x5c, 0xba, 0x15, 0xac,
+    0x5d, 0x0f, 0xd5, 0x7c, 0x51, 0x7e, 0xf1, 0xa6, 0xc2, 0xa2, 0xad, 0x8c, 0x08, 0xa1, 0x09, 0xf5,
+    0x0a, 0xcc, 0xb8, 0x30, 0x96, 0xa1, 0xfe, 0x68, 0x51, 0x3e, 0x7a, 0x47, 0x66, 0x10, 0xca, 0x8e,
+    0x02, 0x7e, 0xd1, 0x83, 0xf9, 0xcf, 0x17, 0xf1, 0xf9, 0x60, 0xe9, 0x8a, 0x36, 0x30, 0xd3, 0xc3,
+    0x43, 0x75, 0x08, 0x92, 0xbf, 0xbe, 0x74, 0x13, 0x5f, 0xb4, 0x95, 0x67, 0xe6, 0x44, 0x84, 0xaa,
+    0x51, 0x53, 0x99, 0x73, 0x63, 0x46, 0x16, 0x01, 0x94, 0x59, 0x16, 0xc5, 0x32, 0xeb, 0xc1, 0x38,
+    0x14, 0xe5, 0xaf, 0xdf, 0x80, 0x71, 0x49, 0x79, 0xfe, 0x7a, 0x67, 0x01, 0xd4, 0xe3, 0xdf, 0xba,
+    0x50, 0x21, 0x91, 0x54, 0x06, 0xff, 0xe6, 0x85, 0x5a, 0x5c, 0x8f, 0x9e, 0x83, 0x31, 0x41, 0x99,
+    0xce, 0x61, 0x74, 0x2f, 0x93, 0xee, 0x7b, 0xd5, 0x8e, 0xf2, 0xd2, 0x8d, 0xf9, 0xe0, 0xdf, 0x98,
+    0x6f, 0xa0, 0xc5, 0x51, 0x31, 0x82, 0x60, 0xff, 0xdd, 0x8a, 0xe7, 0x85, 0xe2, 0x42, 0xa6, 0x1f,
+    0xcb, 0x94, 0xc8, 0x8a, 0xf1, 0xf0, 0xa4, 0x0e, 0x53, 0x8f, 0x8f, 0x94, 0x80, 0x2b, 0xa1, 0x27,
+    0xd0, 0x76, 0xe6, 0xef, 0x23, 0x0a, 0xc8, 0xf6, 0x22, 0x66, 0x07, 0xc7, 0x86, 0xb4, 0x5a, 0x9d,
+    0x29, 0xbe, 0xdc, 0x17, 0xaa, 0x50, 0x11, 0x8c, 0xa8, 0x50, 0x91, 0xf7, 0xd2, 0x1a, 0x50, 0x5f,
+    0x08, 0x74, 0x34, 0x93, 0x59, 0x86, 0x2f, 0x15, 0xca, 0xca, 0x8a, 0xca, 0x99, 0x18, 0x78, 0x2e,
+    0x78, 0xae, 0x82, 0xf9, 0xd1, 0x64, 0x64, 0x7b, 0xf9, 0xfa, 0xb2, 0x6d, 0xcc, 0xca, 0xe0, 0xe3,
+    0xc6, 0x32, 0xa6, 0x2a, 0xf8, 0x58, 0x00, 0xab, 0x07, 0xc5, 0x3b, 0x6a, 0x71, 0x13, 0x3e, 0x2f,
+    0x8b, 0x0e, 0x3e, 0x07, 0xdb, 0x3e, 0x52, 0xcb, 0x60, 0x62, 0x98, 0xcf, 0xe1, 0x11, 0x6c, 0x1d,
+    0x9f, 0x0f, 0x86, 0x61, 0x13, 0x73, 0xff, 0x14, 0x96, 0x01, 0xc3, 0x92, 0xcf, 0x97, 0xe6, 0xe3,
+    0xe0, 0x69, 0x50, 0x2c, 0x2c, 0x7e, 0x1e, 0x96, 0x2d, 0x58, 0xb1, 0x63, 0x0a, 0xed, 0x08, 0x04,
+    0x15, 0x33, 0xdf, 0xc1, 0x33, 0x32, 0x09, 0x28, 0x02, 0x03, 0x03, 0xd2, 0x51, 0x56, 0xc0, 0x3b,
+    0x99, 0xac, 0x7b, 0x40, 0x72, 0x0b, 0x36, 0x15, 0xaf, 0x67, 0xe2, 0x63, 0x58, 0x66, 0x44, 0x3c,
+    0xca, 0x8c, 0x9d, 0x06, 0xf0, 0x65, 0xfc, 0x5d, 0xc6, 0xfe, 0x7c, 0x1a, 0x4e, 0x33, 0x9f, 0x9a,
+    0x91, 0xfc, 0x8d, 0xcf, 0x95, 0x33, 0xab, 0xe2, 0x58, 0x06, 0x7e, 0x29, 0x04, 0xb4, 0xbf, 0x12,
+    0x87, 0xa8, 0xca, 0x69, 0x0f, 0x26, 0xea, 0xde, 0x61, 0x6c, 0xd8, 0xfc, 0xdc, 0x36, 0x15, 0xc7,
+    0xce, 0x1f, 0x54, 0x3b, 0x2a, 0xd4, 0x65, 0x3c, 0xf9, 0x83, 0x96, 0xf5, 0xa5, 0xa5, 0xe5, 0x85,
+    0xcc, 0x84, 0x39, 0xdf, 0xaf, 0x47, 0x33, 0x9f, 0xaf, 0xc6, 0x2a, 0x26, 0x68, 0x54, 0xf9, 0x9e,
+    0x8d, 0x60, 0xea, 0xe3, 0xf6, 0x1f, 0x61, 0x25, 0x08, 0x25, 0x93, 0x3d, 0x4f, 0x7d, 0xc2, 0xd9,
+    0x07, 0x1f, 0xb7, 0x32, 0xb7, 0x12, 0x82, 0x7d, 0xf2, 0x2b, 0x86, 0x03, 0x14, 0xe6, 0x17, 0x3f,
+    0x06, 0xe9, 0x05, 0x97, 0x90, 0x0f, 0xae, 0x20, 0x9f, 0xfa, 0x01, 0xa6, 0xee, 0x7e, 0x98, 0x5d,
+    0xd1, 0x46, 0x90, 0x39, 0xb5, 0x22, 0x9f, 0xc6, 0x1a, 0x8c, 0x17, 0xaa, 0xcb, 0x36, 0x6e, 0xcc,
+    0xaf, 0x28, 0xc0, 0xf8, 0xb2, 0xa2, 0x28, 0x3f, 0x18, 0x0e, 0x33, 0xbf, 0x5d, 0xa8, 0xf2, 0x57,
+    0xed, 0xc3, 0x9c, 0x5f, 0x88, 0x0b, 0x55, 0x3c, 0x5c, 0xfe, 0xda, 0xa8, 0x36, 0x97, 0x17, 0x6c,
+    0x09, 0x55, 0x0d, 0x18, 0x55, 0x54, 0x20, 0x81, 0x45, 0x4c, 0xf2, 0x83, 0x6a, 0x01, 0x78, 0x4f,
+    0x87, 0xff, 0x35, 0x94, 0x41, 0xf1, 0x46, 0x10, 0x54, 0xff, 0xfd, 0x9a, 0x7c, 0x7e, 0x5b, 0x59,
+    0x11, 0x3c, 0x82, 0x63, 0x00, 0x5f, 0xd0, 0xfa, 0x7f, 0x36, 0xab, 0xd2, 0x7d, 0x67, 0x11, 0xcc,
+    0x09, 0x67, 0x44, 0x97, 0x6c, 0x93, 0xa3, 0x94, 0x79, 0x77, 0xf1, 0x3f, 0x9a, 0x25, 0x2a, 0xf4,
+    0x7f, 0x3c, 0xa4, 0x12, 0xb4, 0xa9, 0x68, 0x4b, 0xbe, 0x6a, 0x3e, 0x3e, 0x7b, 0x84, 0xc5, 0x38,
+    0x1b, 0x16, 0x60, 0x53, 0x61, 0xbe, 0xba, 0x26, 0xcc, 0xd1, 0x60, 0x1d, 0xb5, 0x27, 0x64, 0x09,
+    0x4b, 0xbd, 0x8d, 0xaa, 0x39, 0xfa, 0x65, 0x20, 0xfe, 0x0f, 0x82, 0x92, 0xd0, 0x50, 0xe1, 0xe9,
+    0x60, 0x49, 0x4d, 0x15, 0x98, 0xc8, 0xe5, 0x41, 0xf6, 0x14, 0x41, 0x4a, 0xc1, 0xfc, 0x6c, 0x39,
+    0xd2, 0x8e, 0xb9, 0x0b, 0x53, 0x1f, 0x6a, 0x28, 0x2e, 0xe4, 0x19, 0xdc, 0x48, 0x64, 0x43, 0x7f,
+    0xcc, 0x59, 0xff, 0xbd, 0xbf, 0xed, 0x8c, 0xaf, 0x3f, 0xfe, 0x22, 0xf8, 0xfb, 0x66, 0xa8, 0x7c,
+    0x2a, 0x58, 0x3e, 0xa5, 0x02, 0xfd, 0xc2, 0xa0, 0xfe, 0xbe, 0xc9, 0x30, 0xff, 0x0f, 0xf6, 0xe2,
+    0x78, 0x75, 0x20, 0x5e, 0x00, 0x00,
+};
diff --git a/limine-bios-pxe.bin b/limine-bios-pxe.bin
new file mode 100644
index 00000000..a3f55c98
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..24d09b03
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..e5f8c958
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..1d7a474c
--- /dev/null
+++ b/limine.c
@@ -0,0 +1,1331 @@
+#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>
+#include <time.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 SIZEOF_ARRAY(array) (sizeof(array) / sizeof(array[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];
+};
+
+struct gpt2mbr_type_conv {
+    uint64_t gpt_type1;
+    uint64_t gpt_type2;
+    uint8_t mbr_type;
+};
+
+// This table is very incomplete, but it should be enough for covering
+// all that matters for ISOHYBRIDs.
+// Of course, though, expansion is welcome.
+static struct gpt2mbr_type_conv gpt2mbr_type_conv_table[] = {
+    { 0x11d2f81fc12a7328, 0x3bc93ec9a0004bba, 0xef }, // EFI system partition
+    { 0x4433b9e5ebd0a0a2, 0xc79926b7b668c087, 0x07 }, // Microsoft basic data
+    { 0x11aa000048465300, 0xacec4365300011aa, 0xaf }, // HFS/HFS+
+};
+
+static int gpt2mbr_type(uint64_t gpt_type1, uint64_t gpt_type2) {
+    for (size_t i = 0; i < SIZEOF_ARRAY(gpt2mbr_type_conv_table); i++) {
+        if (gpt2mbr_type_conv_table[i].gpt_type1 == gpt_type1
+         && gpt2mbr_type_conv_table[i].gpt_type2 == gpt_type2) {
+            return gpt2mbr_type_conv_table[i].mbr_type;
+        }
+    }
+    return -1;
+}
+
+static void lba2chs(uint8_t *chs, uint64_t lba) {
+    // If LBA is too big to express, use a standard value for CHS.
+    if (lba > 63 * 255 * 1024) {
+        goto lba_too_big;
+    }
+
+    uint64_t cylinder = lba / (255 * 63);
+    if (cylinder >= 1024) {
+lba_too_big:
+        chs[0] = 0xfe;
+        chs[1] = 0xff;
+        chs[2] = 0xff;
+        return;
+    }
+    uint64_t head = (lba / 63) % 255;
+    uint64_t sector = (lba % 63) + 1;
+
+    chs[0] = head;
+    chs[1] = (cylinder >> 2) & 0xc0; // high 2 bits
+    chs[1] |= sector & 0x3f;
+    chs[2] = cylinder; // low 8 bits
+}
+
+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("    --no-gpt-to-mbr-isohybrid-conversion\n");
+    printf("                    Do not automatically convert a GUID partition table (GPT)\n");
+    printf("                    found on an ISOHYBRID image into an MBR partition table\n");
+    printf("                    (which is done for better hardware compatibility)\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 gpt2mbr_allowed = true;
+    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], "--no-gpt-to-mbr-isohybrid-conversion") == 0) {
+            gpt2mbr_allowed = false;
+        } 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;
+        }
+    }
+
+    // Check if this is an ISO w/ a GPT, in which case try converting it
+    // to MBR for improved compatibility with a whole range of hardware that
+    // does not like booting off of GPT in BIOS or CSM mode, and other
+    // broken hardware.
+    if (gpt && gpt2mbr_allowed == true) {
+        char iso_signature[5];
+        device_read(iso_signature, 32769, 5);
+
+        if (strncmp(iso_signature, "CD001", 5) != 0) {
+            goto no_mbr_conv;
+        }
+
+        if (!quiet) {
+            fprintf(stderr, "Detected ISOHYBRID with a GUID partition table (GPT).\n");
+            fprintf(stderr, "Converting to MBR for improved compatibility...\n");
+        }
+
+        // Gather the (up to 4) GPT partition to convert.
+        struct {
+            uint64_t lba_start;
+            uint64_t lba_end;
+            uint8_t chs_start[3];
+            uint8_t chs_end[3];
+            uint8_t type;
+        } part_to_conv[4];
+        size_t part_to_conv_i = 0;
+
+        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) {
+                continue;
+            }
+
+            if (ENDSWAP(gpt_entry.starting_lba) > UINT32_MAX) {
+                if (!quiet) {
+                    fprintf(stderr, "Starting LBA of partition %" PRIi64 " is greater than UINT32_MAX, will not convert GPT.\n", i + 1);
+                }
+                goto no_mbr_conv;
+            }
+            part_to_conv[part_to_conv_i].lba_start = ENDSWAP(gpt_entry.starting_lba);
+            lba2chs(part_to_conv[part_to_conv_i].chs_start, part_to_conv[part_to_conv_i].lba_start);
+
+            if (ENDSWAP(gpt_entry.ending_lba) > UINT32_MAX) {
+                if (!quiet) {
+                    fprintf(stderr, "Ending LBA of partition %" PRIi64 " is greater than UINT32_MAX, will not convert GPT.\n", i + 1);
+                }
+                goto no_mbr_conv;
+            }
+            part_to_conv[part_to_conv_i].lba_end = ENDSWAP(gpt_entry.ending_lba);
+            lba2chs(part_to_conv[part_to_conv_i].chs_end, part_to_conv[part_to_conv_i].lba_end);
+
+            int type = gpt2mbr_type(ENDSWAP(gpt_entry.partition_type_guid[0]),
+                                    ENDSWAP(gpt_entry.partition_type_guid[1]));
+            if (type == -1) {
+                if (!quiet) {
+                    fprintf(stderr, "Cannot convert partition type for partition %" PRIi64 ", will not convert GPT.\n", i + 1);
+                }
+                goto no_mbr_conv;
+            }
+
+            if (part_to_conv_i == 4) {
+                if (!quiet) {
+                    fprintf(stderr, "GPT contains more than 4 partitions, will not convert.\n");
+                }
+                goto no_mbr_conv;
+            }
+
+            part_to_conv[part_to_conv_i].type = type;
+
+            part_to_conv_i++;
+        }
+
+        // Nuke the GPTs.
+        void *empty_lba = calloc(1, lb_size);
+        if (empty_lba == NULL) {
+            perror_wrap("error: bios_install(): malloc()");
+            goto cleanup;
+        }
+
+        // ... nuke primary GPT + protective MBR.
+        for (size_t i = 0; i < 34; i++) {
+            device_write(empty_lba, i * lb_size, lb_size);
+        }
+
+        // ... nuke secondary GPT.
+        for (size_t i = 0; i < 33; i++) {
+            device_write(empty_lba, ((ENDSWAP(gpt_header.alternate_lba) - 32) + i) * lb_size, lb_size);
+        }
+
+        free(empty_lba);
+
+        // We're no longer GPT.
+        gpt = 0;
+
+        // Generate pseudorandom MBR disk ID.
+        srand(time(NULL));
+        for (size_t i = 0; i < 4; i++) {
+            uint8_t r = rand();
+            device_write(&r, 0x1b8 + i, 1);
+        }
+
+        // Write out the partition entries.
+        for (size_t i = 0; i < part_to_conv_i; i++) {
+            device_write(&part_to_conv[i].type, 0x1be + i * 16 + 0x04, 1);
+            uint32_t lba_start = ENDSWAP(part_to_conv[i].lba_start);
+            device_write(&lba_start, 0x1be + i * 16 + 0x08, 4);
+            uint32_t sect_count = ENDSWAP((part_to_conv[i].lba_end - part_to_conv[i].lba_start) + 1);
+            device_write(&sect_count, 0x1be + i * 16 + 0x0c, 4);
+
+            device_write(part_to_conv[i].chs_start, 0x1be + i * 16 + 1, 3);
+            device_write(part_to_conv[i].chs_end, 0x1be + i * 16 + 5, 3);
+        }
+
+        if (!quiet) {
+            fprintf(stderr, "Conversion successful.\n");
+        }
+    }
+
+no_mbr_conv:;
+
+    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 (((ENDSWAP(gpt_entry.ending_lba) - ENDSWAP(gpt_entry.starting_lba)) + 1) * lb_size < 32768) {
+                fprintf(stderr, "%s: error: Partition with index `%s` is smaller than 32KiB.\n", program_name, part_ndx);
+                goto cleanup;
+            }
+
+            if (!quiet) {
+                fprintf(stderr, "Installing BIOS boot code to partition %s.\n", part_ndx);
+            }
+
+            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 {
+            fprintf(stderr, "%s: error: Installing to a GPT device, but no BIOS boot partition specified.\n", program_name);
+            goto cleanup;
+        }
+    } 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 "10.0.0"
+#define LIMINE_COPYRIGHT "Copyright (C) 2019-2025 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..f9b4ae13
Binary files /dev/null and b/limine.exe differ
diff --git a/limine.h b/limine.h
new file mode 100644
index 00000000..e27d1b18
--- /dev/null
+++ b/limine.h
@@ -0,0 +1,771 @@
+/* BSD Zero Clause License */
+
+/* Copyright (C) 2022-2025 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
+
+#ifndef LIMINE_API_REVISION
+#  define LIMINE_API_REVISION 0
+#endif
+
+#if LIMINE_API_REVISION > 3
+#  error "limine.h API revision unsupported"
+#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_LOADED_BASE_REV_VALID (limine_base_revision[1] != 0x6a7b384944536bdc)
+#define LIMINE_LOADED_BASE_REVISION (limine_base_revision[1])
+
+#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;
+#if LIMINE_API_REVISION >= 3
+    LIMINE_PTR(char *) string;
+#else
+    LIMINE_PTR(char *) cmdline;
+#endif
+    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;
+};
+
+/* Executable command line */
+
+#define LIMINE_EXECUTABLE_CMDLINE_REQUEST { LIMINE_COMMON_MAGIC, 0x4b161536e598651e, 0xb390ad4a2f1f303a }
+
+struct limine_executable_cmdline_response {
+    uint64_t revision;
+    LIMINE_PTR(char *) cmdline;
+};
+
+struct limine_executable_cmdline_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_executable_cmdline_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
+#define LIMINE_FIRMWARE_TYPE_SBI 3
+
+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_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_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_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_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
+
+/* MP */
+
+#if LIMINE_API_REVISION >= 1
+#  define LIMINE_MP_REQUEST { LIMINE_COMMON_MAGIC, 0x95a67b819a1b857e, 0xa0b61b723b6a73e0 }
+#  define LIMINE_MP(TEXT) limine_mp_##TEXT
+#else
+#  define LIMINE_SMP_REQUEST { LIMINE_COMMON_MAGIC, 0x95a67b819a1b857e, 0xa0b61b723b6a73e0 }
+#  define LIMINE_MP(TEXT) limine_smp_##TEXT
+#endif
+
+struct LIMINE_MP(info);
+
+typedef void (*limine_goto_address)(struct LIMINE_MP(info) *);
+
+#if defined (__x86_64__) || defined (__i386__)
+
+#if LIMINE_API_REVISION >= 1
+#  define LIMINE_MP_X2APIC (1 << 0)
+#else
+#  define LIMINE_SMP_X2APIC (1 << 0)
+#endif
+
+struct LIMINE_MP(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_MP(response) {
+    uint64_t revision;
+    uint32_t flags;
+    uint32_t bsp_lapic_id;
+    uint64_t cpu_count;
+    LIMINE_PTR(struct LIMINE_MP(info) **) cpus;
+};
+
+#elif defined (__aarch64__)
+
+struct LIMINE_MP(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_MP(response) {
+    uint64_t revision;
+    uint64_t flags;
+    uint64_t bsp_mpidr;
+    uint64_t cpu_count;
+    LIMINE_PTR(struct LIMINE_MP(info) **) cpus;
+};
+
+#elif defined (__riscv) && (__riscv_xlen == 64)
+
+struct LIMINE_MP(info) {
+    uint64_t processor_id;
+    uint64_t hartid;
+    uint64_t reserved;
+    LIMINE_PTR(limine_goto_address) goto_address;
+    uint64_t extra_argument;
+};
+
+struct LIMINE_MP(response) {
+    uint64_t revision;
+    uint64_t flags;
+    uint64_t bsp_hartid;
+    uint64_t cpu_count;
+    LIMINE_PTR(struct LIMINE_MP(info) **) cpus;
+};
+
+#elif defined (__loongarch__) && (__loongarch_grlen == 64)
+
+struct LIMINE_MP(info) {
+    uint64_t reserved;
+};
+
+struct LIMINE_MP(response) {
+    uint64_t cpu_count;
+    LIMINE_PTR(struct LIMINE_MP(info) **) cpus;
+};
+
+#else
+#error Unknown architecture
+#endif
+
+struct LIMINE_MP(request) {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct LIMINE_MP(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
+#if LIMINE_API_REVISION >= 2
+#  define LIMINE_MEMMAP_EXECUTABLE_AND_MODULES 6
+#else
+#  define LIMINE_MEMMAP_KERNEL_AND_MODULES 6
+#endif
+#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;
+};
+
+/* Executable File */
+
+#if LIMINE_API_REVISION >= 2
+#  define LIMINE_EXECUTABLE_FILE_REQUEST { LIMINE_COMMON_MAGIC, 0xad97e90e83f1ed67, 0x31eb5d1c5ff23b69 }
+#else
+#  define LIMINE_KERNEL_FILE_REQUEST { LIMINE_COMMON_MAGIC, 0xad97e90e83f1ed67, 0x31eb5d1c5ff23b69 }
+#endif
+
+#if LIMINE_API_REVISION >= 2
+struct limine_executable_file_response {
+#else
+struct limine_kernel_file_response {
+#endif
+    uint64_t revision;
+#if LIMINE_API_REVISION >= 2
+    LIMINE_PTR(struct limine_file *) executable_file;
+#else
+    LIMINE_PTR(struct limine_file *) kernel_file;
+#endif
+};
+
+#if LIMINE_API_REVISION >= 2
+struct limine_executable_file_request {
+#else
+struct limine_kernel_file_request {
+#endif
+    uint64_t id[4];
+    uint64_t revision;
+#if LIMINE_API_REVISION >= 2
+    LIMINE_PTR(struct limine_executable_file_response *) response;
+#else
+    LIMINE_PTR(struct limine_kernel_file_response *) response;
+#endif
+};
+
+/* 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;
+#if LIMINE_API_REVISION >= 3
+    LIMINE_PTR(const char *) string;
+#else
+    LIMINE_PTR(const char *) cmdline;
+#endif
+    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;
+#if LIMINE_API_REVISION >= 1
+    uint64_t address;
+#else
+    LIMINE_PTR(void *) address;
+#endif
+};
+
+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;
+#if LIMINE_API_REVISION >= 1
+    uint64_t entry_32;
+    uint64_t entry_64;
+#else
+    LIMINE_PTR(void *) entry_32;
+    LIMINE_PTR(void *) entry_64;
+#endif
+};
+
+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;
+#if LIMINE_API_REVISION >= 1
+    uint64_t address;
+#else
+    LIMINE_PTR(void *) address;
+#endif
+};
+
+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;
+};
+
+/* Date at boot */
+
+#if LIMINE_API_REVISION >= 3
+#  define LIMINE_DATE_AT_BOOT_REQUEST { LIMINE_COMMON_MAGIC, 0x502746e184c088aa, 0xfbc5ec83e6327893 }
+#else
+#  define LIMINE_BOOT_TIME_REQUEST { LIMINE_COMMON_MAGIC, 0x502746e184c088aa, 0xfbc5ec83e6327893 }
+#endif
+
+#if LIMINE_API_REVISION >= 3
+struct limine_date_at_boot_response {
+#else
+struct limine_boot_time_response {
+#endif
+    uint64_t revision;
+#if LIMINE_API_REVISION >= 3
+    int64_t timestamp;
+#else
+    int64_t boot_time;
+#endif
+};
+
+#if LIMINE_API_REVISION >= 3
+struct limine_date_at_boot_request {
+#else
+struct limine_boot_time_request {
+#endif
+    uint64_t id[4];
+    uint64_t revision;
+#if LIMINE_API_REVISION >= 3
+    LIMINE_PTR(struct limine_date_at_boot_response *) response;
+#else
+    LIMINE_PTR(struct limine_boot_time_response *) response;
+#endif
+};
+
+/* Executable address */
+
+#if LIMINE_API_REVISION >= 2
+#  define LIMINE_EXECUTABLE_ADDRESS_REQUEST { LIMINE_COMMON_MAGIC, 0x71ba76863cc55f63, 0xb2644a48c516a487 }
+#else
+#  define LIMINE_KERNEL_ADDRESS_REQUEST { LIMINE_COMMON_MAGIC, 0x71ba76863cc55f63, 0xb2644a48c516a487 }
+#endif
+
+#if LIMINE_API_REVISION >= 2
+struct limine_executable_address_response {
+#else
+struct limine_kernel_address_response {
+#endif
+    uint64_t revision;
+    uint64_t physical_base;
+    uint64_t virtual_base;
+};
+
+#if LIMINE_API_REVISION >= 2
+struct limine_executable_address_request {
+#else
+struct limine_kernel_address_request {
+#endif
+    uint64_t id[4];
+    uint64_t revision;
+#if LIMINE_API_REVISION >= 2
+    LIMINE_PTR(struct limine_executable_address_response *) response;
+#else
+    LIMINE_PTR(struct limine_kernel_address_response *) response;
+#endif
+};
+
+/* 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;
+};
+
+/* RISC-V Boot Hart ID */
+
+#define LIMINE_RISCV_BSP_HARTID_REQUEST { LIMINE_COMMON_MAGIC, 0x1369359f025525f9, 0x2ff2a56178391bb6 }
+
+struct limine_riscv_bsp_hartid_response {
+    uint64_t revision;
+    uint64_t bsp_hartid;
+};
+
+struct limine_riscv_bsp_hartid_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_riscv_bsp_hartid_response *) response;
+};
+
+/* Bootloader Performance */
+
+#define LIMINE_BOOTLOADER_PERFORMANCE_REQUEST { LIMINE_COMMON_MAGIC, 0x6b50ad9bf36d13ad, 0xdc4c7e88fc759e17 }
+
+struct limine_bootloader_performance_response {
+    uint64_t revision;
+    uint64_t reset_usec;
+    uint64_t init_usec;
+    uint64_t exec_usec;
+};
+
+struct limine_bootloader_performance_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_bootloader_performance_response *) response;
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
tab: 248 wrap: offon