diff options
author | unknown <unknown@xiph.org> | 2004-03-20 20:06:27 +0000 |
---|---|---|
committer | unknown <unknown@xiph.org> | 2004-03-20 20:06:27 +0000 |
commit | 73e455efdddf173acca33b9a3a41c8186c1892fe (patch) | |
tree | 898d89390b3074f15dce39d0b563e40da36300b3 | |
parent | 8bc503a5542c92625e705000f381995a55af1b88 (diff) | |
download | libvorbis-git-branch_monty_20020303.tar.gz |
This commit was manufactured by cvs2svn to create branchbranch_monty_20020303
'branch_monty_20020303'.
svn path=/branches/branch_monty_20020303/vorbis/; revision=5974
573 files changed, 0 insertions, 73547 deletions
diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index 76a225de..00000000 --- a/.cvsignore +++ /dev/null @@ -1,18 +0,0 @@ -aclocal.m4 -config.h.in -Makefile.in -Makefile -config.status -libtool -ltmain.sh -config.cache -config.log -config.sub -config.guess -configure -*.gz -*.zip -.libs -.deps -*.ogg -vorbis-config diff --git a/AUTHORS b/AUTHORS deleted file mode 100644 index 171072e9..00000000 --- a/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -Monty <monty@xiph.org> - -and the rest of the Xiphophorus Company. diff --git a/COPYING b/COPYING deleted file mode 100644 index 69bbac0e..00000000 --- a/COPYING +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2001, Xiphophorus - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -- Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - -- 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. - -- Neither the name of the Xiphophorus nor the names of its contributors -may be used to endorse or promote products derived from this software -without specific prior written permission. - -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 REGENTS 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/HACKING b/HACKING deleted file mode 100644 index 1c0a284a..00000000 --- a/HACKING +++ /dev/null @@ -1,48 +0,0 @@ -Note that these instructions are *not* necessary for distribution -tarballs; they have separate configure/build instructions. - -Building this package from CVS is mainly intended for developers. -General users should obtain official distribution packages; both -source and binary distributions are available at -http://www.vorbis.com/. - ------ - -These are *brief* instructions on how to build this package from CVS. -Yes, there are details left out. - -There are generally four steps necessary when building from CVS (i.e., -a developer's copy): - -1. cvs checkout of the sources, or cvs update. RTFM from your - favorite flavor of CVS documentation; information on the xiph.org - CVS repository can be found at http://www.xiph.org/cvs.html. - -2. [re-]generate files such as "configure" and "Makefile.in" with the - GNU autoconf/automake tools. Run the "autogen.sh" script to - perform this step. - - *** IF YOU ARE NOT BUILDING WITH GNU MAKE *AND* GCC: you must set - the AUTOMAKE_FLAGS environment variable to "--include-deps" - before running autogen.sh. For example: - - csh% setenv AUTOMAKE_FLAGS --include-deps - csh% ./autogen.sh - or - sh% AUTOMAKE_FLAGS=--include-deps ./autogen.sh - -3. Run configure. There are several options available; see - "./configure --help" for more information. - -4. Run "make" to build the source. - -In general, steps 2 and 3 need to be re-run every time any of the -following files are modified (either manually or by a cvs update): - - configure.in - acinclude.m4 - -Running "make clean" after running steps 2 and 3 is generally also -advisable before running step 4. It isn't *always* necessary, but -unless you understand the workings of autoconf/automake, it's safest -to just do it. diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index ed9912e2..00000000 --- a/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -## Process this file with automake to produce Makefile.in - -AUTOMAKE_OPTIONS = foreign dist-zip - -SUBDIRS = lib include doc examples win32 debian vq - -m4datadir = $(datadir)/aclocal -m4data_DATA = vorbis.m4 - -EXTRA_DIST = HACKING todo.txt macosx \ - autogen.sh libvorbis.spec vorbis.m4 - -debug: - $(MAKE) all CFLAGS="@DEBUG@" - -profile: - $(MAKE) all CFLAGS="@PROFILE@" diff --git a/README b/README deleted file mode 100644 index 0cb82680..00000000 --- a/README +++ /dev/null @@ -1,142 +0,0 @@ -******************************************************************** -* * -* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * -* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * -* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * -* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * -* * -* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * -* by the XIPHOPHORUS Company http://www.xiph.org/ * -* * -******************************************************************** - -NEW AND IMPORTANT: - -If you're used to the source distribution from the first two beta -releases, things are now rearranged a bit. Specifically, the -'vorbis' CVS module contains only the libvorbis, libvorbisfile, and -libvorbisenc libraries. Because Ogg bitstreams are to be used by other -Ogg codecs, Ogg framing and streaming functionality is now in libogg -(the 'ogg' CVS module). Vorbis utilities are in 'vorbis-tools' and various -player plugins are in 'vorbis-plugins'. For now, you'll need to check -out these other modules seperately. (Note: the xmms plugin is in the xmms -CVS tree in xmms/Input/vorbis.) - -Secondly, the Ogg/Vorbis build systems now use automake. Instead of -'./configure; make', the proper build sequence (in each module) is -'./autogen.sh; make'. - -You will also need the newest versions of autoconf, automake, and libtool -in order to compile vorbis from CVS. configure scripts are provided for you -in tarball distributions. - -WHAT'S HERE: - -This source distribution includes libvorbis and an example -encoder/player to demonstrate use of libvorbis and documentation on -the Ogg Vorbis audio coding format. - -Directory: - -./lib The source for the libraries, a BSD-license implementation - of the public domain Ogg Vorbis audio encoding format. - -./include Library API headers - -./debian Rules/spec files for building Debian .deb packages - -./doc Vorbis documentation - -./examples Example code illustrating programmatic use of libvorbis, - libvorbisfile and libvorbisenc - -./mac Codewarrior project files and build tweaks for MacOS. - -./win32 Win32 projects files and build automation - -./vq Internal utilities for training/building new LSP/residue - and auxiliary codebooks. - -WHAT IS VORBIS: - -Vorbis is a general purpose audio and music encoding format -contemporary to MPEG-4's AAC and TwinVQ, the next generation beyond -MPEG audio layer 3. Unlike the MPEG sponsored formats (and other -proprietary formats such as RealAudio G2 and Windows' flavor of the -month), the Vorbis CODEC specification belongs to the public domain. -All the technical details are published and documented, and any -software entity may make full use of the format without royalty or -patent concerns. - -This package contains: - -.) libvorbis, a BSD-license software implementation of -the Vorbis specification by the Xiphophorus company -(http://www.xiph.org/) - -.) libvorbisfile, a BSD-license convenience library -built on Vorbis designed to simplify common uses and a number of GPL -example programs - -.) libvorbisenc, a BSD-license library that provides a simple, programmatic -encoding setup interface - -.) example code making use of libogg, libvorbis, libvorbisfile and -libvorbisenc - -CONTACT: - -The Ogg homepage is located at 'http://www.xiph.org/ogg/'. -Vorbis's homepage is located at 'http://www.xiph.org/ogg/vorbis/'. -Up to date technical documents, contact information, source code and -pre-built utilities may be found there. - -BUILDING FROM CVS: - -./autogen.sh -make - -and as root if desired: - -make install - -This will install the vorbis libraries (static and shared) into -/usr/local/lib, includes into /usr/local/include and API manpages -(once we write some) into /usr/local/man. - -BUILDING FROM TARBALL DISTRIBUTIONS: - -./configure -make - -and optionally (as root): -make install - -BUILDING RPMS: - -after normal configuring: - -make dist -rpm -ta libvorbis-<version>.tar.gz - -BUILDING ON MACOS 9: - -Vorbis on MacOS 9 is built using CodeWarrior 5.3. To build it, first -verify that the Ogg libraries are already built following the -instructions in the Ogg module README. Open vorbis/mac/libvorbis.mcp, -switch to the "Targets" pane, select everything, and make the project. -Do the same thing to build libvorbisenc.mcp, and libvorbisfile.mcp (in -that order). In vorbis/mac/Output you will now have both debug and final -versions of Vorbis shared libraries to link your projects against. - -To build a project using Ogg Vorbis, add access paths to your -CodeWarrior project for the ogg/include, ogg/mac/Output, -vorbis/include, and vorbis/mac/Output folders. Be sure that -"interpret DOS and Unix paths" is turned on in your project; it can -be found in the "access paths" pane in your project settings. Now -simply add the shared libraries you need to your project (OggLib and -VorbisLib at least) and #include "ogg/ogg.h" and "vorbis/codec.h" -wherever you need to access Ogg and Vorbis functionality. - - -$Id: README,v 1.11 2001/03/22 01:33:20 segher Exp $ diff --git a/acinclude.m4 b/acinclude.m4 deleted file mode 100644 index 2b981345..00000000 --- a/acinclude.m4 +++ /dev/null @@ -1,106 +0,0 @@ -# acinclude.m4 -# all .m4 files needed that might not be installed go here - -# Configure paths for libogg -# Jack Moffitt <jack@icecast.org> 10-21-2000 -# Shamelessly stolen from Owen Taylor and Manish Singh - -dnl AM_PATH_OGG([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -dnl Test for libogg, and define OGG_CFLAGS and OGG_LIBS -dnl -AC_DEFUN(AM_PATH_OGG, -[dnl -dnl Get the cflags and libraries -dnl -AC_ARG_WITH(ogg,[ --with-ogg=PFX Prefix where libogg is installed (optional)], ogg_prefix="$withval", ogg_prefix="") -AC_ARG_WITH(ogg-libraries,[ --with-ogg-libraries=DIR Directory where libogg library is installed (optional)], ogg_libraries="$withval", ogg_libraries="") -AC_ARG_WITH(ogg-includes,[ --with-ogg-includes=DIR Directory where libogg header files are installed (optional)], ogg_includes="$withval", ogg_includes="") -AC_ARG_ENABLE(oggtest, [ --disable-oggtest Do not try to compile and run a test Ogg program],, enable_oggtest=yes) - - if test "x$ogg_libraries" != "x" ; then - OGG_LIBS="-L$ogg_libraries" - elif test "x$ogg_prefix" != "x" ; then - OGG_LIBS="-L$ogg_prefix/lib" - elif test "x$prefix" != "xNONE" ; then - OGG_LIBS="-L$prefix/lib" - fi - - OGG_LIBS="$OGG_LIBS -logg" - - if test "x$ogg_includes" != "x" ; then - OGG_CFLAGS="-I$ogg_includes" - elif test "x$ogg_prefix" != "x" ; then - OGG_CFLAGS="-I$ogg_prefix/include" - elif test "x$prefix" != "xNONE"; then - OGG_CFLAGS="-I$prefix/include" - fi - - AC_MSG_CHECKING(for Ogg) - no_ogg="" - - - if test "x$enable_oggtest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $OGG_CFLAGS" - LIBS="$LIBS $OGG_LIBS" -dnl -dnl Now check if the installed Ogg is sufficiently new. -dnl - rm -f conf.oggtest - AC_TRY_RUN([ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <ogg/ogg.h> - -int main () -{ - system("touch conf.oggtest"); - return 0; -} - -],, no_ogg=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - - if test "x$no_ogg" = "x" ; then - AC_MSG_RESULT(yes) - ifelse([$1], , :, [$1]) - else - AC_MSG_RESULT(no) - if test -f conf.oggtest ; then - : - else - echo "*** Could not run Ogg test program, checking why..." - CFLAGS="$CFLAGS $OGG_CFLAGS" - LIBS="$LIBS $OGG_LIBS" - AC_TRY_LINK([ -#include <stdio.h> -#include <ogg/ogg.h> -], [ return 0; ], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding Ogg or finding the wrong" - echo "*** version of Ogg. If it is not finding Ogg, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], - [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means Ogg was incorrectly installed" - echo "*** or that you have moved Ogg since it was installed. In the latter case, you" - echo "*** may want to edit the ogg-config script: $OGG_CONFIG" ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - OGG_CFLAGS="" - OGG_LIBS="" - ifelse([$2], , :, [$2]) - fi - AC_SUBST(OGG_CFLAGS) - AC_SUBST(OGG_LIBS) - rm -f conf.oggtest -]) diff --git a/autogen.sh b/autogen.sh deleted file mode 100755 index 98f8a226..00000000 --- a/autogen.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/sh -# Run this to set up the build system: configure, makefiles, etc. -# (based on the version in enlightenment's cvs) - -package="vorbis" - -srcdir=`dirname $0` -test -z "$srcdir" && srcdir=. - -cd "$srcdir" -DIE=0 - -(autoconf --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "You must have autoconf installed to compile $package." - echo "Download the appropriate package for your distribution," - echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" - DIE=1 -} - -(automake --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "You must have automake installed to compile $package." - echo "Download the appropriate package for your system," - echo "or get the source from one of the GNU ftp sites" - echo "listed in http://www.gnu.org/order/ftp.html" - DIE=1 -} - -(libtool --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "You must have libtool installed to compile $package." - echo "Download the appropriate package for your system," - echo "or get the source from one of the GNU ftp sites" - echo "listed in http://www.gnu.org/order/ftp.html" - DIE=1 -} - -if test "$DIE" -eq 1; then - exit 1 -fi - -if test -z "$*"; then - echo "I am going to run ./configure with no arguments - if you wish " - echo "to pass any to it, please specify them on the $0 command line." -fi - -echo "Generating configuration files for $package, please wait...." - -echo " aclocal $ACLOCAL_FLAGS" -aclocal $ACLOCAL_FLAGS -#echo " autoheader" -#autoheader -echo " libtoolize --automake" -libtoolize --automake -echo " automake --add-missing $AUTOMAKE_FLAGS" -automake --add-missing $AUTOMAKE_FLAGS -echo " autoconf" -autoconf - -$srcdir/configure "$@" && echo diff --git a/configure.in b/configure.in deleted file mode 100644 index 467c2929..00000000 --- a/configure.in +++ /dev/null @@ -1,190 +0,0 @@ -dnl Process this file with autoconf to produce a configure script - -dnl ------------------------------------------------ -dnl Initialization and Versioning -dnl ------------------------------------------------ - -AC_INIT(lib/mdct.c) -AM_INIT_AUTOMAKE(libvorbis,1.0rc3) - -dnl Library versioning - -V_LIB_CURRENT=1 -V_LIB_REVISION=0 -V_LIB_AGE=1 -VF_LIB_CURRENT=2 -VF_LIB_REVISION=0 -VF_LIB_AGE=2 -VE_LIB_CURRENT=1 -VE_LIB_REVISION=0 -VE_LIB_AGE=1 -AC_SUBST(V_LIB_CURRENT) -AC_SUBST(V_LIB_REVISION) -AC_SUBST(V_LIB_AGE) -AC_SUBST(VF_LIB_CURRENT) -AC_SUBST(VF_LIB_REVISION) -AC_SUBST(VF_LIB_AGE) -AC_SUBST(VE_LIB_CURRENT) -AC_SUBST(VE_LIB_REVISION) -AC_SUBST(VE_LIB_AGE) - -dnl -------------------------------------------------- -dnl Check for programs -dnl -------------------------------------------------- - -dnl save $CFLAGS since AC_PROG_CC likes to insert "-g -O2" -dnl if $CFLAGS is blank -cflags_save="$CFLAGS" -AC_PROG_CC -AC_PROG_CPP -CFLAGS="$cflags_save" - -AM_PROG_LIBTOOL - -dnl -------------------------------------------------- -dnl Set build flags based on environment -dnl -------------------------------------------------- - -AC_CANONICAL_HOST - -dnl Set some target options - -cflags_save="$CFLAGS" -ldflags_save="$LDFLAGS" -if test -z "$GCC"; then - case $host in - *-*-irix*) - dnl If we're on IRIX, we wanna use cc even if gcc - dnl is there (unless the user has overriden us)... - if test -z "$CC"; then - CC=cc - fi - DEBUG="-g -signed" - CFLAGS="-O2 -w -signed" - PROFILE="-p -g3 -O2 -signed" ;; - sparc-sun-solaris*) - DEBUG="-v -g" - CFLAGS="-xO4 -fast -w -fsimple -native -xcg92" - PROFILE="-v -xpg -g -xO4 -fast -native -fsimple -xcg92 -Dsuncc" ;; - *) - DEBUG="-g" - CFLAGS="-O" - PROFILE="-g -p" ;; - esac -else - - case $host in - *86-*-linux*) - DEBUG="-g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char" - CFLAGS="-O20 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char" -# PROFILE="-Wall -W -pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char -fno-inline -static" - PROFILE="-Wall -W -pg -g -O20 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char -fno-inline" - - # glibc < 2.1.3 has a serious FP bug in the math inline header - # that will cripple Vorbis. Look to see if the magic FP stack - # clobber is missing in the mathinline header, thus indicating - # the buggy version - - AC_EGREP_CPP(log10.*fldlg2.*fxch,[ - #define __LIBC_INTERNAL_MATH_INLINES 1 - #define __OPTIMIZE__ - #include <math.h> - ],bad=maybe,bad=no) - if test ${bad} = "maybe" ;then - AC_EGREP_CPP(log10.*fldlg2.*fxch.*st\([[0123456789]]*\), - [ - #define __LIBC_INTERNAL_MATH_INLINES 1 - #define __OPTIMIZE__ - #include <math.h> - ],bad=no,bad=yes) - fi - if test ${bad} = "yes" ;then - AC_MSG_WARN([ ]) - AC_MSG_WARN([********************************************************]) - AC_MSG_WARN([* The glibc headers on this machine have a serious bug *]) - AC_MSG_WARN([* in /usr/include/bits/mathinline.h This bug affects *]) - AC_MSG_WARN([* all floating point code, not just Ogg, built on this *]) - AC_MSG_WARN([* machine. Upgrading to glibc 2.1.3 is strongly urged *]) - AC_MSG_WARN([* to correct the problem. Note that upgrading glibc *]) - AC_MSG_WARN([* will not fix any previously built programs; this is *]) - AC_MSG_WARN([* a compile-time time bug. *]) - AC_MSG_WARN([* To work around the problem for this build of Ogg, *]) - AC_MSG_WARN([* autoconf is disabling all math inlining. This will *]) - AC_MSG_WARN([* hurt Ogg performace but is necessary for an Ogg that *]) - AC_MSG_WARN([* will actually work. Once glibc is upgraded, rerun *]) - AC_MSG_WARN([* configure and make to build with inlining. *]) - AC_MSG_WARN([********************************************************]) - AC_MSG_WARN([ ]) - - CFLAGS=${OPT}" -D__NO_MATH_INLINES" - PROFILE=${PROFILE}" -D__NO_MATH_INLINES" - fi;; - *-*-linux*) - DEBUG="-g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char" - CFLAGS="-O20 -ffast-math -D_REENTRANT -fsigned-char" - PROFILE="-pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char";; - sparc-sun-*) - DEBUG="-g -Wall -W -D__NO_MATH_INLINES -fsigned-char -mv8" - CFLAGS="-O20 -ffast-math -D__NO_MATH_INLINES -fsigned-char -mv8" - PROFILE="-pg -g -O20 -D__NO_MATH_INLINES -fsigned-char -mv8" ;; - *-*-darwin*) - DEBUG="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O0 -fsigned-char" - CFLAGS="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O4 -ffast-math -fsigned-char" - PROFILE="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -pg -O4 -ffast-math -fsigned-char";; - *) - DEBUG="-g -Wall -W -D__NO_MATH_INLINES -fsigned-char" - CFLAGS="-O20 -D__NO_MATH_INLINES -fsigned-char" - PROFILE="-O20 -g -pg -D__NO_MATH_INLINES -fsigned-char" ;; - esac -fi -CFLAGS="$CFLAGS $cflags_save" -LDFLAGS="$LDFLAGS $ldflags_save" - -dnl -------------------------------------------------- -dnl Check for headers -dnl -------------------------------------------------- - -AC_CHECK_HEADER(memory.h,CFLAGS="$CFLAGS -DUSE_MEMORY_H",:) - -dnl -------------------------------------------------- -dnl Check for typedefs, structures, etc -dnl -------------------------------------------------- - -dnl none - -dnl -------------------------------------------------- -dnl Check for libraries -dnl -------------------------------------------------- - -AC_CHECK_LIB(m, cos, LIBS="-lm", LIBS="") -AC_CHECK_LIB(pthread, pthread_create, pthread_lib="-lpthread", :) - -AM_PATH_OGG(, AC_MSG_ERROR(must have Ogg installed!)) - -dnl -------------------------------------------------- -dnl Check for library functions -dnl -------------------------------------------------- - -AC_FUNC_ALLOCA -AC_FUNC_MEMCMP - -AC_CHECK_FUNCS(sqrtf) -AC_CHECK_FUNCS(logf) -AC_CHECK_FUNCS(expf) -AC_CHECK_FUNCS(acosf) -AC_CHECK_FUNCS(atanf) -AC_CHECK_FUNCS(frexpf) -AC_CHECK_FUNCS(rintf) - -dnl -------------------------------------------------- -dnl Do substitutions -dnl -------------------------------------------------- - -LIBS="$LIBS $OGG_LIBS" - -AC_SUBST(LIBS) -AC_SUBST(DEBUG) -AC_SUBST(PROFILE) -AC_SUBST(pthread_lib) - -AC_OUTPUT(Makefile lib/Makefile lib/modes/Makefile lib/books/Makefile lib/books/coupled/Makefile lib/books/uncoupled/Makefile lib/books/floor/Makefile doc/Makefile doc/vorbisfile/Makefile doc/vorbisenc/Makefile include/Makefile include/vorbis/Makefile examples/Makefile win32/Makefile debian/Makefile vq/Makefile) diff --git a/debian/.cvsignore b/debian/.cvsignore deleted file mode 100644 index 282522db..00000000 --- a/debian/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/debian/Makefile.am b/debian/Makefile.am deleted file mode 100644 index d28d8b93..00000000 --- a/debian/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -## Process this file with automake to produce Makefile.in - -AUTOMAKE_OPTIONS = foreign - -EXTRA_DIST = changelog control copyright libvorbis-dev.docs \ - libvorbis-dev.examples libvorbis-dev.files libvorbis0.README.Debian \ - libvorbis0.files rules diff --git a/debian/changelog b/debian/changelog deleted file mode 100644 index 09254727..00000000 --- a/debian/changelog +++ /dev/null @@ -1,78 +0,0 @@ -libvorbis (1.0rc3-1) unstable; urgency=low - - * New upstream. (Closes: #121995, #123472) - * added autotools target (config.* updater) to rules - - -- Christopher L Cheney <ccheney@debian.org> Mon, 24 Dec 2001 11:00:00 -0600 - -libvorbis (1.0rc2-1) unstable; urgency=low - - * New upstream. - - -- Christopher L Cheney <ccheney@debian.org> Sun, 12 Aug 2001 22:00:00 -0500 - -libvorbis (1.0rc1-1) unstable; urgency=low - - * New upstream. (Closes: #84977, #95330) - * Upstream says lame at fault. See bug details. (Closes: #98010) - * Fixed versioned depends. - * Changed clean method to distclean. - - -- Christopher L Cheney <ccheney@debian.org> Sun, 17 Jun 2001 20:00:00 -0500 - -libvorbis (1.0beta4-1) unstable; urgency=low - - * New upstream. - * Appears to be fixed, can't reproduce bug (closes: #78848) - - -- Christopher L Cheney <ccheney@debian.org> Mon, 26 Feb 2001 08:00:00 -0600 - -libvorbis (1.0beta3-3) unstable; urgency=low - - * Fixed Build-Depends libogg-dev version dependency. - * Fixed Sections. - * Updated to Standards-Version to 3.5.1.0 - - -- Christopher L Cheney <ccheney@debian.org> Sat, 17 Feb 2001 18:14:53 -0600 - -libvorbis (1.0beta3-2) unstable; urgency=low - - * Added dependency for libogg-dev (closes: #78262) - * Added dependency for libogg-dev (closes: #81432) - * Corrected development library package name (closes: #82464) - - -- Christopher L Cheney <ccheney@debian.org> Sat, 3 Feb 2001 13:29:30 -0600 - -libvorbis (1.0beta3-1) unstable; urgency=low - - * New Maintainer. - * Upstream source was reorganized. - * Package split according to the upstream reorganization. - - -- Christopher L Cheney <ccheney@debian.org> Tue, 31 Oct 2000 15:08:22 -0600 - -vorbis (1.0beta2-1) unstable; urgency=low - - * New upstream version. Closes: #67326, #68416 - * Changed xmms-vorbis to Architechture: any. Closes: #67395 - * Added Build-deps. Closes: #66628 - * Moved vorbize to vorbis-tools along with oggenc and vorbiscomment - - -- Michael Beattie <mjb@debian.org> Wed, 9 Aug 2000 00:30:15 +1200 - -vorbis (1.0beta1-1) unstable; urgency=low - - * First Beta, Ready for debian release. - - -- Michael Beattie <mickyb@es.co.nz> Fri, 30 Jun 2000 19:26:59 +1200 - -vorbis (0.0-1) unstable; urgency=low - - * Initial Release. - * Initial package, not placed in archive. - - -- Michael Beattie <mickyb@es.co.nz> Mon, 26 Jun 2000 18:59:56 +1200 - -Local variables: -mode: debian-changelog -End: diff --git a/debian/control b/debian/control deleted file mode 100644 index 45e9e037..00000000 --- a/debian/control +++ /dev/null @@ -1,23 +0,0 @@ -Source: libvorbis -Section: libs -Priority: optional -Maintainer: Christopher L Cheney <ccheney@debian.org> -Build-Depends: debhelper (>> 3.0.0), libogg-dev (>> 1.0rc3), autotools-dev, devscripts -Standards-Version: 3.5.6.0 - -Package: libvorbis0 -Architecture: any -Section: libs -Depends: ${shlibs:Depends} -Description: The Vorbis General Audio Compression Codec - Ogg Vorbis is a fully open, non-proprietary, patent-and-royalty-free, - general-purpose compressed audio format for audio and music at fixed - and variable bitrates from 16 to 128 kbps/channel. - -Package: libvorbis-dev -Architecture: any -Section: devel -Depends: libvorbis0 (= ${Source-Version}), libogg-dev, libc6-dev -Description: Vorbis Library Development - The libvorbis-dev package contains the header files and documentation - needed to develop applications with libvorbis. diff --git a/debian/copyright b/debian/copyright deleted file mode 100644 index 5df704e6..00000000 --- a/debian/copyright +++ /dev/null @@ -1,38 +0,0 @@ -This package was debianized by Christopher L Cheney <ccheney@debian.org> on -Tue, 31 Oct 2000 15:08:22 -0600. - -It was downloaded from http://www.vorbis.com/download_unix.psp - -Upstream Author(s): Monty <monty@xiph.org> - -Copyright: - -Copyright (c) 2001, Xiphophorus - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -- Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - -- 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. - -- Neither the name of the Xiphophorus nor the names of its contributors -may be used to endorse or promote products derived from this software -without specific prior written permission. - -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 REGENTS 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/debian/libvorbis-dev.docs b/debian/libvorbis-dev.docs deleted file mode 100644 index 58ee487f..00000000 --- a/debian/libvorbis-dev.docs +++ /dev/null @@ -1 +0,0 @@ -debian/tmp/usr/share/doc/libvorbis-1.0rc3/* diff --git a/debian/libvorbis-dev.examples b/debian/libvorbis-dev.examples deleted file mode 100644 index 43ec8623..00000000 --- a/debian/libvorbis-dev.examples +++ /dev/null @@ -1 +0,0 @@ -examples/*.c diff --git a/debian/libvorbis-dev.files b/debian/libvorbis-dev.files deleted file mode 100644 index dbbf15c8..00000000 --- a/debian/libvorbis-dev.files +++ /dev/null @@ -1,6 +0,0 @@ -usr/include/vorbis/*.h -usr/include/vorbis/book/*.vqh -usr/lib/*.a -usr/lib/*.la -usr/lib/*.so -usr/share/aclocal/vorbis.m4 diff --git a/debian/libvorbis0.README.Debian b/debian/libvorbis0.README.Debian deleted file mode 100644 index d049ad98..00000000 --- a/debian/libvorbis0.README.Debian +++ /dev/null @@ -1,6 +0,0 @@ -libvorbis for Debian --------------------- - -Nothing important to mention at this time. - - -- Christopher L Cheney <ccheney@debian.org>, Tue, 31 Oct 2000 15:08:22 -0600 diff --git a/debian/libvorbis0.files b/debian/libvorbis0.files deleted file mode 100644 index 093956b1..00000000 --- a/debian/libvorbis0.files +++ /dev/null @@ -1 +0,0 @@ -usr/lib/*.so.* diff --git a/debian/rules b/debian/rules deleted file mode 100755 index 0c5bbefe..00000000 --- a/debian/rules +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/make -f -# Sample debian/rules that uses debhelper. -# GNU copyright 1997 to 1999 by Joey Hess. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -# This is the debhelper compatability version to use. -export DH_COMPAT=3 - -export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) -export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) - -configure: configure-stamp -configure-stamp: - dh_testdir - - # If compiling cvs version change to ./autogen.sh --prefix=/usr - ./configure --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) \ - --prefix=/usr - - touch configure-stamp - -build: configure-stamp build-stamp -build-stamp: - dh_testdir - - $(MAKE) - - touch build-stamp - -autotools: - OLDDATESUB=`./config.sub -t | tr -d -` ;\ - OLDDATEGUESS=`./config.guess -t | tr -d -` ;\ - NEWDATESUB=`/usr/share/misc/config.sub -t | tr -d -` ;\ - NEWDATEGUESS=`/usr/share/misc/config.guess -t | tr -d -` ;\ - if [ $$OLDDATESUB -lt $$NEWDATESUB -o \ - $$OLDDATEGUESS -lt $$NEWDATEGUESS ]; then \ - dch -a -p "GNU config automated update: config.sub\ - ($$OLDDATESUB to $$NEWDATESUB), config.guess\ - ($$OLDDATEGUESS to $$NEWDATEGUESS)" ;\ - cp -f /usr/share/misc/config.sub config.sub ;\ - cp -f /usr/share/misc/config.guess config.guess ;\ - echo WARNING: GNU config scripts updated from master copies 1>&2 ;\ - fi - -clean: autotools - dh_testdir - dh_testroot - rm -f build-stamp configure-stamp - - -$(MAKE) distclean - - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - $(MAKE) install DESTDIR=`pwd`/debian/tmp - - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_movefiles - - dh_installdocs - dh_installexamples - dh_installmanpages - dh_installchangelogs - dh_link - dh_strip - dh_compress - dh_fixperms - dh_makeshlibs -V - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: autotools build clean binary-indep binary-arch binary install configure diff --git a/examples/.cvsignore b/examples/.cvsignore deleted file mode 100644 index 1eb3972d..00000000 --- a/examples/.cvsignore +++ /dev/null @@ -1,9 +0,0 @@ -Makefile -Makefile.in -.libs -.deps -encoder_example -decoder_example -chaining_example -vorbisfile_example -seeking_example diff --git a/examples/Makefile.am b/examples/Makefile.am deleted file mode 100644 index c58d4d7a..00000000 --- a/examples/Makefile.am +++ /dev/null @@ -1,27 +0,0 @@ -## Process this file with automake to produce Makefile.in - -AUTOMAKE_OPTIONS = foreign - -INCLUDES = -I$(top_srcdir)/include @OGG_CFLAGS@ - -noinst_PROGRAMS = decoder_example encoder_example chaining_example\ - vorbisfile_example seeking_example - -LDFLAGS = -all-static -LDADD = ../lib/libvorbis.la - -decoder_example_SOURCES = decoder_example.c -encoder_example_SOURCES = encoder_example.c -encoder_example_LDADD = ../lib/libvorbisenc.la ../lib/libvorbis.la -chaining_example_SOURCES = chaining_example.c -chaining_example_LDADD = ../lib/libvorbisfile.la ../lib/libvorbis.la -vorbisfile_example_SOURCES = vorbisfile_example.c -vorbisfile_example_LDADD = ../lib/libvorbisfile.la ../lib/libvorbis.la -seeking_example_SOURCES = seeking_example.c -seeking_example_LDADD = ../lib/libvorbisfile.la ../lib/libvorbis.la - -debug: - $(MAKE) all CFLAGS="@DEBUG@" - -profile: - $(MAKE) all CFLAGS="@PROFILE@" diff --git a/examples/chaining_example.c b/examples/chaining_example.c deleted file mode 100644 index e9d20709..00000000 --- a/examples/chaining_example.c +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: illustrate simple use of chained bitstream and vorbisfile.a - last mod: $Id: chaining_example.c,v 1.15 2001/12/20 01:00:24 segher Exp $ - - ********************************************************************/ - -#include <vorbis/codec.h> -#include <vorbis/vorbisfile.h> - -#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */ -#include <io.h> -#include <fcntl.h> -#endif - -int main(){ - OggVorbis_File ov; - int i; - -#ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */ - /* Beware the evil ifdef. We avoid these where we can, but this one we - cannot. Don't add any more, you'll probably go to hell if you do. */ - _setmode( _fileno( stdin ), _O_BINARY ); - _setmode( _fileno( stdout ), _O_BINARY ); -#endif - - /* open the file/pipe on stdin */ - if(ov_open(stdin,&ov,NULL,-1)<0){ - printf("Could not open input as an OggVorbis file.\n\n"); - exit(1); - } - - /* print details about each logical bitstream in the input */ - if(ov_seekable(&ov)){ - printf("Input bitstream contained %ld logical bitstream section(s).\n", - ov_streams(&ov)); - printf("Total bitstream playing time: %ld seconds\n\n", - (long)ov_time_total(&ov,-1)); - - }else{ - printf("Standard input was not seekable.\n" - "First logical bitstream information:\n\n"); - } - - for(i=0;i<ov_streams(&ov);i++){ - vorbis_info *vi=ov_info(&ov,i); - printf("\tlogical bitstream section %d information:\n",i+1); - printf("\t\t%ldHz %d channels bitrate %ldkbps serial number=%ld\n", - vi->rate,vi->channels,ov_bitrate(&ov,i)/1000, - ov_serialnumber(&ov,i)); - printf("\t\theader length: %ld bytes\n",(long) - (ov.dataoffsets[i]-ov.offsets[i])); - printf("\t\tcompressed length: %ld bytes\n",(long)(ov_raw_total(&ov,i))); - printf("\t\tplay time: %lds\n",(long)ov_time_total(&ov,i)); - } - - ov_clear(&ov); - return 0; -} - diff --git a/examples/decoder_example.c b/examples/decoder_example.c deleted file mode 100644 index e246bd24..00000000 --- a/examples/decoder_example.c +++ /dev/null @@ -1,307 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: simple example decoder - last mod: $Id: decoder_example.c,v 1.25 2002/01/22 08:06:05 xiphmont Exp $ - - ********************************************************************/ - -/* Takes a vorbis bitstream from stdin and writes raw stereo PCM to - stdout. Decodes simple and chained OggVorbis files from beginning - to end. Vorbisfile.a is somewhat more complex than the code below. */ - -/* Note that this is POSIX, not ANSI code */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <vorbis/codec.h> - -#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */ -#include <io.h> -#include <fcntl.h> -#endif - -#if defined(macintosh) && defined(__MWERKS__) -#include <console.h> /* CodeWarrior's Mac "command-line" support */ -#endif - -ogg_int16_t convbuffer[4096]; /* take 8k out of the data segment, not the stack */ -int convsize=4096; - -extern void _VDBG_dump(void); - -int main(){ - ogg_sync_state oy; /* sync and verify incoming physical bitstream */ - ogg_stream_state os; /* take physical pages, weld into a logical - stream of packets */ - ogg_page og; /* one Ogg bitstream page. Vorbis packets are inside */ - ogg_packet op; /* one raw packet of data for decode */ - - vorbis_info vi; /* struct that stores all the static vorbis bitstream - settings */ - vorbis_comment vc; /* struct that stores all the bitstream user comments */ - vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ - vorbis_block vb; /* local working space for packet->PCM decode */ - - char *buffer; - int bytes; - -#ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */ - /* Beware the evil ifdef. We avoid these where we can, but this one we - cannot. Don't add any more, you'll probably go to hell if you do. */ - _setmode( _fileno( stdin ), _O_BINARY ); - _setmode( _fileno( stdout ), _O_BINARY ); -#endif - -#if defined(macintosh) && defined(__MWERKS__) - { - int argc; - char **argv; - argc=ccommand(&argv); /* get a "command line" from the Mac user */ - /* this also lets the user set stdin and stdout */ - } -#endif - - /********** Decode setup ************/ - - ogg_sync_init(&oy); /* Now we can read pages */ - - while(1){ /* we repeat if the bitstream is chained */ - int eos=0; - int i; - - /* grab some data at the head of the stream. We want the first page - (which is guaranteed to be small and only contain the Vorbis - stream initial header) We need the first page to get the stream - serialno. */ - - /* submit a 4k block to libvorbis' Ogg layer */ - buffer=ogg_sync_buffer(&oy,4096); - bytes=fread(buffer,1,4096,stdin); - ogg_sync_wrote(&oy,bytes); - - /* Get the first page. */ - if(ogg_sync_pageout(&oy,&og)!=1){ - /* have we simply run out of data? If so, we're done. */ - if(bytes<4096)break; - - /* error case. Must not be Vorbis data */ - fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n"); - exit(1); - } - - /* Get the serial number and set up the rest of decode. */ - /* serialno first; use it to set up a logical stream */ - ogg_stream_init(&os,ogg_page_serialno(&og)); - - /* extract the initial header from the first page and verify that the - Ogg bitstream is in fact Vorbis data */ - - /* I handle the initial header first instead of just having the code - read all three Vorbis headers at once because reading the initial - header is an easy way to identify a Vorbis bitstream and it's - useful to see that functionality seperated out. */ - - vorbis_info_init(&vi); - vorbis_comment_init(&vc); - if(ogg_stream_pagein(&os,&og)<0){ - /* error; stream version mismatch perhaps */ - fprintf(stderr,"Error reading first page of Ogg bitstream data.\n"); - exit(1); - } - - if(ogg_stream_packetout(&os,&op)!=1){ - /* no page? must not be vorbis */ - fprintf(stderr,"Error reading initial header packet.\n"); - exit(1); - } - - if(vorbis_synthesis_headerin(&vi,&vc,&op)<0){ - /* error case; not a vorbis header */ - fprintf(stderr,"This Ogg bitstream does not contain Vorbis " - "audio data.\n"); - exit(1); - } - - /* At this point, we're sure we're Vorbis. We've set up the logical - (Ogg) bitstream decoder. Get the comment and codebook headers and - set up the Vorbis decoder */ - - /* The next two packets in order are the comment and codebook headers. - They're likely large and may span multiple pages. Thus we reead - and submit data until we get our two pacakets, watching that no - pages are missing. If a page is missing, error out; losing a - header page is the only place where missing data is fatal. */ - - i=0; - while(i<2){ - while(i<2){ - int result=ogg_sync_pageout(&oy,&og); - if(result==0)break; /* Need more data */ - /* Don't complain about missing or corrupt data yet. We'll - catch it at the packet output phase */ - if(result==1){ - ogg_stream_pagein(&os,&og); /* we can ignore any errors here - as they'll also become apparent - at packetout */ - while(i<2){ - result=ogg_stream_packetout(&os,&op); - if(result==0)break; - if(result<0){ - /* Uh oh; data at some point was corrupted or missing! - We can't tolerate that in a header. Die. */ - fprintf(stderr,"Corrupt secondary header. Exiting.\n"); - exit(1); - } - vorbis_synthesis_headerin(&vi,&vc,&op); - i++; - } - } - } - /* no harm in not checking before adding more */ - buffer=ogg_sync_buffer(&oy,4096); - bytes=fread(buffer,1,4096,stdin); - if(bytes==0 && i<2){ - fprintf(stderr,"End of file before finding all Vorbis headers!\n"); - exit(1); - } - ogg_sync_wrote(&oy,bytes); - } - - /* Throw the comments plus a few lines about the bitstream we're - decoding */ - { - char **ptr=vc.user_comments; - while(*ptr){ - fprintf(stderr,"%s\n",*ptr); - ++ptr; - } - fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi.channels,vi.rate); - fprintf(stderr,"Encoded by: %s\n\n",vc.vendor); - } - - convsize=4096/vi.channels; - - /* OK, got and parsed all three headers. Initialize the Vorbis - packet->PCM decoder. */ - vorbis_synthesis_init(&vd,&vi); /* central decode state */ - vorbis_block_init(&vd,&vb); /* local state for most of the decode - so multiple block decodes can - proceed in parallel. We could init - multiple vorbis_block structures - for vd here */ - - /* The rest is just a straight decode loop until end of stream */ - while(!eos){ - while(!eos){ - int result=ogg_sync_pageout(&oy,&og); - if(result==0)break; /* need more data */ - if(result<0){ /* missing or corrupt data at this page position */ - fprintf(stderr,"Corrupt or missing data in bitstream; " - "continuing...\n"); - }else{ - ogg_stream_pagein(&os,&og); /* can safely ignore errors at - this point */ - while(1){ - result=ogg_stream_packetout(&os,&op); - - if(result==0)break; /* need more data */ - if(result<0){ /* missing or corrupt data at this page position */ - /* no reason to complain; already complained above */ - }else{ - /* we have a packet. Decode it */ - float **pcm; - int samples; - - if(vorbis_synthesis(&vb,&op)==0) /* test for success! */ - vorbis_synthesis_blockin(&vd,&vb); - /* - - **pcm is a multichannel float vector. In stereo, for - example, pcm[0] is left, and pcm[1] is right. samples is - the size of each channel. Convert the float values - (-1.<=range<=1.) to whatever PCM format and write it out */ - - while((samples=vorbis_synthesis_pcmout(&vd,&pcm))>0){ - int j; - int clipflag=0; - int bout=(samples<convsize?samples:convsize); - - /* convert floats to 16 bit signed ints (host order) and - interleave */ - for(i=0;i<vi.channels;i++){ - ogg_int16_t *ptr=convbuffer+i; - float *mono=pcm[i]; - for(j=0;j<bout;j++){ -#if 1 - int val=mono[j]*32767.f; -#else /* optional dither */ - int val=mono[j]*32767.f+drand48()-0.5f; -#endif - /* might as well guard against clipping */ - if(val>32767){ - val=32767; - clipflag=1; - } - if(val<-32768){ - val=-32768; - clipflag=1; - } - *ptr=val; - ptr+=vi.channels; - } - } - - if(clipflag) - fprintf(stderr,"Clipping in frame %ld\n",(long)(vd.sequence)); - - - fwrite(convbuffer,2*vi.channels,bout,stdout); - - vorbis_synthesis_read(&vd,bout); /* tell libvorbis how - many samples we - actually consumed */ - } - } - } - if(ogg_page_eos(&og))eos=1; - } - } - if(!eos){ - buffer=ogg_sync_buffer(&oy,4096); - bytes=fread(buffer,1,4096,stdin); - ogg_sync_wrote(&oy,bytes); - if(bytes==0)eos=1; - } - } - - /* clean up this logical bitstream; before exit we see if we're - followed by another [chained] */ - - ogg_stream_clear(&os); - - /* ogg_page and ogg_packet structs always point to storage in - libvorbis. They're never freed or manipulated directly */ - - vorbis_block_clear(&vb); - vorbis_dsp_clear(&vd); - vorbis_comment_clear(&vc); - vorbis_info_clear(&vi); /* must be called last */ - } - - /* OK, clean up the framer */ - ogg_sync_clear(&oy); - - fprintf(stderr,"Done.\n"); - return(0); -} diff --git a/examples/encoder_example.c b/examples/encoder_example.c deleted file mode 100644 index 137f9ccc..00000000 --- a/examples/encoder_example.c +++ /dev/null @@ -1,219 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: simple example encoder - last mod: $Id: encoder_example.c,v 1.35 2001/12/29 17:47:16 cwolf Exp $ - - ********************************************************************/ - -/* takes a stereo 16bit 44.1kHz WAV file from stdin and encodes it into - a Vorbis bitstream */ - -/* Note that this is POSIX, not ANSI, code */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <time.h> -#include <math.h> -#include <vorbis/vorbisenc.h> - -#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */ -#include <io.h> -#include <fcntl.h> -#endif - -#if defined(macintosh) && defined(__MWERKS__) -#include <console.h> /* CodeWarrior's Mac "command-line" support */ -#endif - -#define READ 1024 -signed char readbuffer[READ*4+44]; /* out of the data segment, not the stack */ - -int main(){ - ogg_stream_state os; /* take physical pages, weld into a logical - stream of packets */ - ogg_page og; /* one Ogg bitstream page. Vorbis packets are inside */ - ogg_packet op; /* one raw packet of data for decode */ - - vorbis_info vi; /* struct that stores all the static vorbis bitstream - settings */ - vorbis_comment vc; /* struct that stores all the user comments */ - - vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ - vorbis_block vb; /* local working space for packet->PCM decode */ - - int eos=0; - int i, founddata; - -#if defined(macintosh) && defined(__MWERKS__) - int argc = 0; - char **argv = NULL; - argc = ccommand(&argv); /* get a "command line" from the Mac user */ - /* this also lets the user set stdin and stdout */ -#endif - - /* we cheat on the WAV header; we just bypass 44 bytes and never - verify that it matches 16bit/stereo/44.1kHz. This is just an - example, after all. */ - -#ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */ - /* Beware the evil ifdef. We avoid these where we can, but this one we - cannot. Don't add any more, you'll probably go to hell if you do. */ - _setmode( _fileno( stdin ), _O_BINARY ); - _setmode( _fileno( stdout ), _O_BINARY ); -#endif - - - /* we cheat on the WAV header; we just bypass the header and never - verify that it matches 16bit/stereo/44.1kHz. This is just an - example, after all. */ - - readbuffer[0] = '\0'; - for (i=0, founddata=0; i<30 && ! feof(stdin) && ! ferror(stdin); i++) - { - fread(readbuffer,1,2,stdin); - - if ( ! strncmp(readbuffer, "da", 2) ) - { - founddata = 1; - fread(readbuffer,1,6,stdin); - break; - } - } - - /********** Encode setup ************/ - - /* choose an encoding mode */ - /* (quality mode .4: 44kHz stereo coupled, roughly 128kbps VBR) */ - vorbis_info_init(&vi); - - vorbis_encode_init_vbr(&vi,2,44100,.1); // max compression - - /* add a comment */ - vorbis_comment_init(&vc); - vorbis_comment_add_tag(&vc,"ENCODER","encoder_example.c"); - - /* set up the analysis state and auxiliary encoding storage */ - vorbis_analysis_init(&vd,&vi); - vorbis_block_init(&vd,&vb); - - /* set up our packet->stream encoder */ - /* pick a random serial number; that way we can more likely build - chained streams just by concatenation */ - srand(time(NULL)); - ogg_stream_init(&os,rand()); - - /* Vorbis streams begin with three headers; the initial header (with - most of the codec setup parameters) which is mandated by the Ogg - bitstream spec. The second header holds any comment fields. The - third header holds the bitstream codebook. We merely need to - make the headers, then pass them to libvorbis one at a time; - libvorbis handles the additional Ogg bitstream constraints */ - - { - ogg_packet header; - ogg_packet header_comm; - ogg_packet header_code; - - vorbis_analysis_headerout(&vd,&vc,&header,&header_comm,&header_code); - ogg_stream_packetin(&os,&header); /* automatically placed in its own - page */ - ogg_stream_packetin(&os,&header_comm); - ogg_stream_packetin(&os,&header_code); - - /* We don't have to write out here, but doing so makes streaming - * much easier, so we do, flushing ALL pages. This ensures the actual - * audio data will start on a new page - */ - while(!eos){ - int result=ogg_stream_flush(&os,&og); - if(result==0)break; - fwrite(og.header,1,og.header_len,stdout); - fwrite(og.body,1,og.body_len,stdout); - } - - } - - while(!eos){ - long i; - long bytes=fread(readbuffer,1,READ*4,stdin); /* stereo hardwired here */ - - if(bytes==0){ - /* end of file. this can be done implicitly in the mainline, - but it's easier to see here in non-clever fashion. - Tell the library we're at end of stream so that it can handle - the last frame and mark end of stream in the output properly */ - vorbis_analysis_wrote(&vd,0); - - }else{ - /* data to encode */ - - /* expose the buffer to submit data */ - float **buffer=vorbis_analysis_buffer(&vd,READ); - - /* uninterleave samples */ - for(i=0;i<bytes/4;i++){ - buffer[0][i]=((readbuffer[i*4+1]<<8)| - (0x00ff&(int)readbuffer[i*4]))/32768.f; - buffer[1][i]=((readbuffer[i*4+3]<<8)| - (0x00ff&(int)readbuffer[i*4+2]))/32768.f; - } - - /* tell the library how much we actually submitted */ - vorbis_analysis_wrote(&vd,i); - } - - /* vorbis does some data preanalysis, then divvies up blocks for - more involved (potentially parallel) processing. Get a single - block for encoding now */ - while(vorbis_analysis_blockout(&vd,&vb)==1){ - - /* analysis, assume we want to use bitrate management */ - vorbis_analysis(&vb,NULL); - vorbis_bitrate_addblock(&vb); - - while(vorbis_bitrate_flushpacket(&vd,&op)){ - - /* weld the packet into the bitstream */ - ogg_stream_packetin(&os,&op); - - /* write out pages (if any) */ - while(!eos){ - int result=ogg_stream_pageout(&os,&og); - if(result==0)break; - fwrite(og.header,1,og.header_len,stdout); - fwrite(og.body,1,og.body_len,stdout); - - /* this could be set above, but for illustrative purposes, I do - it here (to show that vorbis does know where the stream ends) */ - - if(ogg_page_eos(&og))eos=1; - } - } - } - } - - /* clean up and exit. vorbis_info_clear() must be called last */ - - ogg_stream_clear(&os); - vorbis_block_clear(&vb); - vorbis_dsp_clear(&vd); - vorbis_comment_clear(&vc); - vorbis_info_clear(&vi); - - /* ogg_page and ogg_packet structs always point to storage in - libvorbis. They're never freed or manipulated directly */ - - fprintf(stderr,"Done.\n"); - return(0); -} diff --git a/examples/seeking_example.c b/examples/seeking_example.c deleted file mode 100644 index 31e5835e..00000000 --- a/examples/seeking_example.c +++ /dev/null @@ -1,207 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: illustrate seeking, and test it too - last mod: $Id: seeking_example.c,v 1.12 2001/12/20 01:00:24 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <stdio.h> -#include "vorbis/codec.h" -#include "vorbis/vorbisfile.h" - -#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */ -# include <io.h> -# include <fcntl.h> -#endif - -void _verify(OggVorbis_File *ov,ogg_int64_t pos, - ogg_int64_t val,ogg_int64_t pcmval, - ogg_int64_t pcmlength, - char *bigassbuffer){ - int j; - long bread; - char buffer[4096]; - int dummy; - - /* verify the raw position, the pcm position and position decode */ - if(val!=-1 && ov_raw_tell(ov)<val){ - printf("raw position out of tolerance: requested %ld, got %ld\n", - (long)val,(long)ov_raw_tell(ov)); - exit(1); - } - if(pcmval!=-1 && ov_pcm_tell(ov)>pcmval){ - printf("pcm position out of tolerance: requested %ld, got %ld\n", - (long)pcmval,(long)ov_pcm_tell(ov)); - exit(1); - } - pos=ov_pcm_tell(ov); - if(pos<0 || pos>pcmlength){ - printf("pcm position out of bounds: got %ld\n",(long)pos); - exit(1); - } - bread=ov_read(ov,buffer,4096,1,1,1,&dummy); - for(j=0;j<bread;j++){ - if(buffer[j]!=bigassbuffer[j+pos*2]){ - printf("data position after seek doesn't match pcm position\n"); - exit(1); - } - } -} - -int main(){ - OggVorbis_File ov; - int i,ret; - ogg_int64_t pcmlength; - char *bigassbuffer; - int dummy; - -#ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */ - _setmode( _fileno( stdin ), _O_BINARY ); - _setmode( _fileno( stdout ), _O_BINARY ); -#endif - - - /* open the file/pipe on stdin */ - if(ov_open(stdin,&ov,NULL,-1)<0){ - printf("Could not open input as an OggVorbis file.\n\n"); - exit(1); - } - - if(ov_seekable(&ov)){ - - /* to simplify our own lives, we want to assume the whole file is - stereo. Verify this to avoid potentially mystifying users - (pissing them off is OK, just don't confuse them) */ - for(i=0;i<ov.links;i++){ - vorbis_info *vi=ov_info(&ov,i); - if(vi->channels!=2){ - printf("Sorry; right now seeking_test can only use Vorbis files\n" - "that are entirely stereo.\n\n"); - exit(1); - } - } - - /* because we want to do sample-level verification that the seek - does what it claimed, decode the entire file into memory */ - printf("loading....\n"); - fflush(stdout); - pcmlength=ov_pcm_total(&ov,-1); - bigassbuffer=malloc(pcmlength*2); /* w00t */ - i=0; - while(i<pcmlength*2){ - int ret=ov_read(&ov,bigassbuffer+i,pcmlength*2-i,1,1,1,&dummy); - if(ret<0)continue; - if(ret){ - i+=ret; - }else{ - pcmlength=i/2; - } - } - - /* Exercise all the real seeking cases; ov_raw_seek, - ov_pcm_seek_page and ov_pcm_seek. time seek is just a wrapper - on pcm_seek */ - { - ogg_int64_t length=ov.end; - printf("testing raw seeking to random places in %ld bytes....\n", - (long)length); - - for(i=0;i<1000;i++){ - ogg_int64_t val=(double)rand()/RAND_MAX*length; - ogg_int64_t pos; - printf("\r\t%d [raw position %ld]... ",i,(long)val); - fflush(stdout); - ret=ov_raw_seek(&ov,val); - if(ret<0){ - printf("seek failed: %d\n",ret); - exit(1); - } - - _verify(&ov,pos,val,-1,pcmlength,bigassbuffer); - - } - } - - printf("\r"); - { - ogg_int64_t length=ov.end; - printf("testing pcm page seeking to random places in %ld samples....\n", - (long)pcmlength); - - for(i=0;i<1000;i++){ - ogg_int64_t val=(double)rand()/RAND_MAX*pcmlength; - ogg_int64_t pos; - printf("\r\t%d [pcm position %ld]... ",i,(long)val); - fflush(stdout); - ret=ov_pcm_seek_page(&ov,val); - if(ret<0){ - printf("seek failed: %d\n",ret); - exit(1); - } - - _verify(&ov,pos,-1,val,pcmlength,bigassbuffer); - - } - } - - printf("\r"); - { - ogg_int64_t length=ov.end; - printf("testing pcm exact seeking to random places in %ld samples....\n", - (long)pcmlength); - - for(i=0;i<1000;i++){ - ogg_int64_t val=(double)rand()/RAND_MAX*pcmlength; - ogg_int64_t pos; - printf("\r\t%d [pcm position %ld]... ",i,(long)val); - fflush(stdout); - ret=ov_pcm_seek(&ov,val); - if(ret<0){ - printf("seek failed: %d\n",ret); - exit(1); - } - if(ov_pcm_tell(&ov)!=val){ - printf("Decalred position didn't perfectly match request: %ld != %ld\n", - (long)val,(long)ov_pcm_tell(&ov)); - exit(1); - } - - _verify(&ov,pos,-1,val,pcmlength,bigassbuffer); - - } - } - - printf("\r \nOK.\n\n"); - - - }else{ - printf("Standard input was not seekable.\n"); - } - - ov_clear(&ov); - return 0; -} - - - - - - - - - - - - - diff --git a/examples/vorbisfile_example.c b/examples/vorbisfile_example.c deleted file mode 100644 index c16e2e8f..00000000 --- a/examples/vorbisfile_example.c +++ /dev/null @@ -1,87 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: simple example decoder using vorbisfile - last mod: $Id: vorbisfile_example.c,v 1.9 2001/12/20 01:00:24 segher Exp $ - - ********************************************************************/ - -/* Takes a vorbis bitstream from stdin and writes raw stereo PCM to - stdout using vorbisfile. Using vorbisfile is much simpler than - dealing with libvorbis. */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <vorbis/codec.h> -#include <vorbis/vorbisfile.h> - -#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */ -#include <io.h> -#include <fcntl.h> -#endif - -char pcmout[4096]; /* take 4k out of the data segment, not the stack */ - -int main(){ - OggVorbis_File vf; - int eof=0; - int current_section; - -#ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */ - /* Beware the evil ifdef. We avoid these where we can, but this one we - cannot. Don't add any more, you'll probably go to hell if you do. */ - _setmode( _fileno( stdin ), _O_BINARY ); - _setmode( _fileno( stdout ), _O_BINARY ); -#endif - - if(ov_open(stdin, &vf, NULL, 0) < 0) { - fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n"); - exit(1); - } - - /* Throw the comments plus a few lines about the bitstream we're - decoding */ - { - char **ptr=ov_comment(&vf,-1)->user_comments; - vorbis_info *vi=ov_info(&vf,-1); - while(*ptr){ - fprintf(stderr,"%s\n",*ptr); - ++ptr; - } - fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi->channels,vi->rate); - fprintf(stderr,"\nDecoded length: %ld samples\n", - (long)ov_pcm_total(&vf,-1)); - fprintf(stderr,"Encoded by: %s\n\n",ov_comment(&vf,-1)->vendor); - } - - while(!eof){ - long ret=ov_read(&vf,pcmout,sizeof(pcmout),0,2,1,¤t_section); - if (ret == 0) { - /* EOF */ - eof=1; - } else if (ret < 0) { - /* error in the stream. Not a problem, just reporting it in - case we (the app) cares. In this case, we don't. */ - } else { - /* we don't bother dealing with sample rate changes, etc, but - you'll have to*/ - fwrite(pcmout,1,ret,stdout); - } - } - - /* cleanup */ - ov_clear(&vf); - - fprintf(stderr,"Done.\n"); - return(0); -} diff --git a/include/.cvsignore b/include/.cvsignore deleted file mode 100644 index 282522db..00000000 --- a/include/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/include/Makefile.am b/include/Makefile.am deleted file mode 100644 index 756b65f7..00000000 --- a/include/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -## Process this file with automake to produce Makefile.in - -AUTOMAKE_OPTIONS = foreign - -SUBDIRS = vorbis diff --git a/include/vorbis/.cvsignore b/include/vorbis/.cvsignore deleted file mode 100644 index 282522db..00000000 --- a/include/vorbis/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/include/vorbis/Makefile.am b/include/vorbis/Makefile.am deleted file mode 100644 index 794e8cdb..00000000 --- a/include/vorbis/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -## Process this file with automake to produce Makefile.in - -AUTOMAKE_OPTIONS = foreign - -includedir = $(prefix)/include/vorbis - -include_HEADERS = codec.h vorbisfile.h vorbisenc.h - - diff --git a/include/vorbis/codec.h b/include/vorbis/codec.h deleted file mode 100644 index eb12ddd0..00000000 --- a/include/vorbis/codec.h +++ /dev/null @@ -1,232 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - - ******************************************************************** - - function: libvorbis codec headers - last mod: $Id: codec.h,v 1.39 2001/12/12 09:45:23 xiphmont Exp $ - - ********************************************************************/ - -#ifndef _vorbis_codec_h_ -#define _vorbis_codec_h_ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#include <ogg/ogg.h> - -typedef struct vorbis_info{ - int version; - int channels; - long rate; - - /* The below bitrate declarations are *hints*. - Combinations of the three values carry the following implications: - - all three set to the same value: - implies a fixed rate bitstream - only nominal set: - implies a VBR stream that averages the nominal bitrate. No hard - upper/lower limit - upper and or lower set: - implies a VBR bitstream that obeys the bitrate limits. nominal - may also be set to give a nominal rate. - none set: - the coder does not care to speculate. - */ - - long bitrate_upper; - long bitrate_nominal; - long bitrate_lower; - long bitrate_window; - - void *codec_setup; -} vorbis_info; - -/* vorbis_dsp_state buffers the current vorbis audio - analysis/synthesis state. The DSP state belongs to a specific - logical bitstream ****************************************************/ -typedef struct vorbis_dsp_state{ - int analysisp; - vorbis_info *vi; - - float **pcm; - float **pcmret; - int pcm_storage; - int pcm_current; - int pcm_returned; - - int preextrapolate; - int eofflag; - - long lW; - long W; - long nW; - long centerW; - - ogg_int64_t granulepos; - ogg_int64_t sequence; - - ogg_int64_t glue_bits; - ogg_int64_t time_bits; - ogg_int64_t floor_bits; - ogg_int64_t res_bits; - - void *backend_state; -} vorbis_dsp_state; - -typedef struct vorbis_block{ - /* necessary stream state for linking to the framing abstraction */ - float **pcm; /* this is a pointer into local storage */ - oggpack_buffer opb; - - long lW; - long W; - long nW; - int pcmend; - int mode; - - int eofflag; - ogg_int64_t granulepos; - ogg_int64_t sequence; - vorbis_dsp_state *vd; /* For read-only access of configuration */ - - /* local storage to avoid remallocing; it's up to the mapping to - structure it */ - void *localstore; - long localtop; - long localalloc; - long totaluse; - struct alloc_chain *reap; - - /* bitmetrics for the frame */ - long glue_bits; - long time_bits; - long floor_bits; - long res_bits; - - void *internal; - -} vorbis_block; - -/* vorbis_block is a single block of data to be processed as part of -the analysis/synthesis stream; it belongs to a specific logical -bitstream, but is independant from other vorbis_blocks belonging to -that logical bitstream. *************************************************/ - -struct alloc_chain{ - void *ptr; - struct alloc_chain *next; -}; - -/* vorbis_info contains all the setup information specific to the - specific compression/decompression mode in progress (eg, - psychoacoustic settings, channel setup, options, codebook - etc). vorbis_info and substructures are in backends.h. -*********************************************************************/ - -/* the comments are not part of vorbis_info so that vorbis_info can be - static storage */ -typedef struct vorbis_comment{ - /* unlimited user comment fields. libvorbis writes 'libvorbis' - whatever vendor is set to in encode */ - char **user_comments; - int *comment_lengths; - int comments; - char *vendor; - -} vorbis_comment; - - -/* libvorbis encodes in two abstraction layers; first we perform DSP - and produce a packet (see docs/analysis.txt). The packet is then - coded into a framed OggSquish bitstream by the second layer (see - docs/framing.txt). Decode is the reverse process; we sync/frame - the bitstream and extract individual packets, then decode the - packet back into PCM audio. - - The extra framing/packetizing is used in streaming formats, such as - files. Over the net (such as with UDP), the framing and - packetization aren't necessary as they're provided by the transport - and the streaming layer is not used */ - -/* Vorbis PRIMITIVES: general ***************************************/ - -extern void vorbis_info_init(vorbis_info *vi); -extern void vorbis_info_clear(vorbis_info *vi); -extern int vorbis_info_blocksize(vorbis_info *vi,int zo); -extern void vorbis_comment_init(vorbis_comment *vc); -extern void vorbis_comment_add(vorbis_comment *vc, char *comment); -extern void vorbis_comment_add_tag(vorbis_comment *vc, - char *tag, char *contents); -extern char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count); -extern int vorbis_comment_query_count(vorbis_comment *vc, char *tag); -extern void vorbis_comment_clear(vorbis_comment *vc); - -extern int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb); -extern int vorbis_block_clear(vorbis_block *vb); -extern void vorbis_dsp_clear(vorbis_dsp_state *v); - -/* Vorbis PRIMITIVES: analysis/DSP layer ****************************/ - -extern int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi); -extern int vorbis_commentheader_out(vorbis_comment *vc, ogg_packet *op); -extern int vorbis_analysis_headerout(vorbis_dsp_state *v, - vorbis_comment *vc, - ogg_packet *op, - ogg_packet *op_comm, - ogg_packet *op_code); -extern float **vorbis_analysis_buffer(vorbis_dsp_state *v,int vals); -extern int vorbis_analysis_wrote(vorbis_dsp_state *v,int vals); -extern int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb); -extern int vorbis_analysis(vorbis_block *vb,ogg_packet *op); - -extern int vorbis_bitrate_addblock(vorbis_block *vb); -extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd, - ogg_packet *op); - -/* Vorbis PRIMITIVES: synthesis layer *******************************/ -extern int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc, - ogg_packet *op); - -extern int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi); -extern int vorbis_synthesis(vorbis_block *vb,ogg_packet *op); -extern int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb); -extern int vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm); -extern int vorbis_synthesis_read(vorbis_dsp_state *v,int samples); -extern long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op); - -/* Vorbis ERRORS and return codes ***********************************/ - -#define OV_FALSE -1 -#define OV_EOF -2 -#define OV_HOLE -3 - -#define OV_EREAD -128 -#define OV_EFAULT -129 -#define OV_EIMPL -130 -#define OV_EINVAL -131 -#define OV_ENOTVORBIS -132 -#define OV_EBADHEADER -133 -#define OV_EVERSION -134 -#define OV_ENOTAUDIO -135 -#define OV_EBADPACKET -136 -#define OV_EBADLINK -137 -#define OV_ENOSEEK -138 - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif - diff --git a/include/vorbis/vorbisenc.h b/include/vorbis/vorbisenc.h deleted file mode 100644 index 9982bd47..00000000 --- a/include/vorbis/vorbisenc.h +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: vorbis encode-engine setup - last mod: $Id: vorbisenc.h,v 1.8 2001/12/20 01:00:25 segher Exp $ - - ********************************************************************/ - -#ifndef _OV_ENC_H_ -#define _OV_ENC_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#include "codec.h" - -extern int vorbis_encode_init(vorbis_info *vi, - long channels, - long rate, - - long max_bitrate, - long nominal_bitrate, - long min_bitrate); - -extern int vorbis_encode_setup_managed(vorbis_info *vi, - long channels, - long rate, - - long max_bitrate, - long nominal_bitrate, - long min_bitrate); - -extern int vorbis_encode_setup_vbr(vorbis_info *vi, - long channels, - long rate, - - float /* quality level from 0. (lo) to 1. (hi) */ - ); - -extern int vorbis_encode_init_vbr(vorbis_info *vi, - long channels, - long rate, - - float base_quality /* quality level from 0. (lo) to 1. (hi) */ - ); - -extern int vorbis_encode_setup_init(vorbis_info *vi); - -extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg); - - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif - - diff --git a/include/vorbis/vorbisfile.h b/include/vorbis/vorbisfile.h deleted file mode 100644 index f34a1a9b..00000000 --- a/include/vorbis/vorbisfile.h +++ /dev/null @@ -1,131 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: stdio-based convenience library for opening/seeking/decoding - last mod: $Id: vorbisfile.h,v 1.16 2001/12/20 01:00:25 segher Exp $ - - ********************************************************************/ - -#ifndef _OV_FILE_H_ -#define _OV_FILE_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#include <stdio.h> -#include "codec.h" - -/* The function prototypes for the callbacks are basically the same as for - * the stdio functions fread, fseek, fclose, ftell. - * The one difference is that the FILE * arguments have been replaced with - * a void * - this is to be used as a pointer to whatever internal data these - * functions might need. In the stdio case, it's just a FILE * cast to a void * - * - * If you use other functions, check the docs for these functions and return - * the right values. For seek_func(), you *MUST* return -1 if the stream is - * unseekable - */ -typedef struct { - size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource); - int (*seek_func) (void *datasource, ogg_int64_t offset, int whence); - int (*close_func) (void *datasource); - long (*tell_func) (void *datasource); -} ov_callbacks; - -#define NOTOPEN 0 -#define PARTOPEN 1 -#define OPENED 2 -#define STREAMSET 3 -#define INITSET 4 - -typedef struct OggVorbis_File { - void *datasource; /* Pointer to a FILE *, etc. */ - int seekable; - ogg_int64_t offset; - ogg_int64_t end; - ogg_sync_state oy; - - /* If the FILE handle isn't seekable (eg, a pipe), only the current - stream appears */ - int links; - ogg_int64_t *offsets; - ogg_int64_t *dataoffsets; - long *serialnos; - ogg_int64_t *pcmlengths; - vorbis_info *vi; - vorbis_comment *vc; - - /* Decoding working state local storage */ - ogg_int64_t pcm_offset; - int ready_state; - long current_serialno; - int current_link; - - double bittrack; - double samptrack; - - ogg_stream_state os; /* take physical pages, weld into a logical - stream of packets */ - vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ - vorbis_block vb; /* local working space for packet->PCM decode */ - - ov_callbacks callbacks; - -} OggVorbis_File; - -extern int ov_clear(OggVorbis_File *vf); -extern int ov_open(FILE *f,OggVorbis_File *vf,char *initial,long ibytes); -extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf, - char *initial, long ibytes, ov_callbacks callbacks); - -extern int ov_test(FILE *f,OggVorbis_File *vf,char *initial,long ibytes); -extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf, - char *initial, long ibytes, ov_callbacks callbacks); -extern int ov_test_open(OggVorbis_File *vf); - -extern long ov_bitrate(OggVorbis_File *vf,int i); -extern long ov_bitrate_instant(OggVorbis_File *vf); -extern long ov_streams(OggVorbis_File *vf); -extern long ov_seekable(OggVorbis_File *vf); -extern long ov_serialnumber(OggVorbis_File *vf,int i); - -extern ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i); -extern ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i); -extern double ov_time_total(OggVorbis_File *vf,int i); - -extern int ov_raw_seek(OggVorbis_File *vf,long pos); -extern int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_time_seek(OggVorbis_File *vf,double pos); -extern int ov_time_seek_page(OggVorbis_File *vf,double pos); - -extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf); -extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf); -extern double ov_time_tell(OggVorbis_File *vf); - -extern vorbis_info *ov_info(OggVorbis_File *vf,int link); -extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link); - -extern long ov_read_float(OggVorbis_File *vf,float ***pcm_channels, - int *bitstream); -extern long ov_read(OggVorbis_File *vf,char *buffer,int length, - int bigendianp,int word,int sgned,int *bitstream); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif - - diff --git a/lib/.cvsignore b/lib/.cvsignore deleted file mode 100644 index 0839b71d..00000000 --- a/lib/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -*.la -*.lo -.libs -.deps -Makefile -Makefile.in diff --git a/lib/Makefile.am b/lib/Makefile.am deleted file mode 100644 index 8444970d..00000000 --- a/lib/Makefile.am +++ /dev/null @@ -1,43 +0,0 @@ -## Process this file with automake to produce Makefile.in - -AUTOMAKE_OPTIONS = foreign - -SUBDIRS = modes books - -INCLUDES = -I$(top_srcdir)/include @OGG_CFLAGS@ - -lib_LTLIBRARIES = libvorbis.la libvorbisfile.la libvorbisenc.la - -libvorbis_la_SOURCES = mdct.c smallft.c block.c envelope.c window.c lsp.c \ - lpc.c analysis.c synthesis.c psy.c info.c time0.c \ - floor1.c floor0.c\ - res0.c mapping0.c registry.c codebook.c sharedbook.c\ - lookup.c bitrate.c\ - envelope.h lpc.h lsp.h codebook.h misc.h psy.h\ - masking.h iir.h os.h mdct.h smallft.h\ - registry.h scales.h window.h lookup.h lookup_data.h\ - codec_internal.h backends.h bitrate.h -libvorbis_la_LDFLAGS = -version-info @V_LIB_CURRENT@:@V_LIB_REVISION@:@V_LIB_AGE@ - -libvorbisfile_la_SOURCES = vorbisfile.c -libvorbisfile_la_LDFLAGS = -version-info @VF_LIB_CURRENT@:@VF_LIB_REVISION@:@VF_LIB_AGE@ - -libvorbisenc_la_SOURCES = vorbisenc.c registry-api.h -libvorbisenc_la_LDFLAGS = -version-info @VE_LIB_CURRENT@:@VE_LIB_REVISION@:@VE_LIB_AGE@ - -EXTRA_PROGRAMS = barkmel tone psytune -CLEANFILES = $(EXTRA_PROGRAMS) - -barkmel_SOURCES = barkmel.c -tone_SOURCES = tone.c -psytune_SOURCES = psytune.c -psytune_LDFLAGS = -static -psytune_LDADD = libvorbis.la - -EXTRA_DIST = lookups.pl iir.c - -debug: - $(MAKE) all CFLAGS="@DEBUG@" - -profile: - $(MAKE) all CFLAGS="@PROFILE@" diff --git a/lib/analysis.c b/lib/analysis.c deleted file mode 100644 index 518399fc..00000000 --- a/lib/analysis.c +++ /dev/null @@ -1,117 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: single-block PCM analysis mode dispatch - last mod: $Id: analysis.c,v 1.48 2002/01/22 08:06:06 xiphmont Exp $ - - ********************************************************************/ - -#include <stdio.h> -#include <string.h> -#include <math.h> -#include <ogg/ogg.h> -#include "vorbis/codec.h" -#include "codec_internal.h" -#include "registry.h" -#include "scales.h" -#include "os.h" -#include "misc.h" - -int analysis_noisy=1; - -/* decides between modes, dispatches to the appropriate mapping. */ -int vorbis_analysis(vorbis_block *vb, ogg_packet *op){ - vorbis_dsp_state *vd=vb->vd; - backend_lookup_state *b=vd->backend_state; - vorbis_info *vi=vd->vi; - codec_setup_info *ci=vi->codec_setup; - int type,ret; - int mode=0; - - vb->glue_bits=0; - vb->time_bits=0; - vb->floor_bits=0; - vb->res_bits=0; - - /* first things first. Make sure encode is ready */ - oggpack_reset(&vb->opb); - /* Encode the packet type */ - oggpack_write(&vb->opb,0,1); - - /* currently lazy. Short block dispatches to 0, long to 1. */ - - if(vb->W &&ci->modes>1)mode=1; - type=ci->map_type[ci->mode_param[mode]->mapping]; - vb->mode=mode; - - /* Encode frame mode, pre,post windowsize, then dispatch */ - oggpack_write(&vb->opb,mode,b->modebits); - if(vb->W){ - oggpack_write(&vb->opb,vb->lW,1); - oggpack_write(&vb->opb,vb->nW,1); - /*fprintf(stderr,"*"); - }else{ - fprintf(stderr,".");*/ - } - - if((ret=_mapping_P[type]->forward(vb,b->mode[mode]))) - return(ret); - - if(op){ - op->packet=oggpack_get_buffer(&vb->opb); - op->bytes=oggpack_bytes(&vb->opb); - op->b_o_s=0; - op->e_o_s=vb->eofflag; - op->granulepos=vb->granulepos; - op->packetno=vb->sequence; /* for sake of completeness */ - } - return(0); -} - -/* there was no great place to put this.... */ -void _analysis_output_always(char *base,int i,float *v,int n,int bark,int dB){ - int j; - FILE *of; - char buffer[80]; - - /* if(i==5870){*/ - sprintf(buffer,"%s_%d.m",base,i); - of=fopen(buffer,"w"); - - if(!of)perror("failed to open data dump file"); - - for(j=0;j<n;j++){ - if(dB && v[j]==0) - fprintf(of,"\n\n"); - else{ - if(bark) - fprintf(of,"%g ",toBARK(22050.f*j/n)); - else - fprintf(of,"%g ",(double)j); - - if(dB){ - fprintf(of,"%g\n",todB(v+j)); - }else{ - fprintf(of,"%g\n",v[j]); - } - } - } - fclose(of); - /* } */ -} - -void _analysis_output(char *base,int i,float *v,int n,int bark,int dB){ -#ifdef ANALYSIS - if(analysis_noisy)_analysis_output_always(base,i,v,n,bark,dB); -#endif -} - diff --git a/lib/backends.h b/lib/backends.h deleted file mode 100644 index ddf63d14..00000000 --- a/lib/backends.h +++ /dev/null @@ -1,192 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: libvorbis backend and mapping structures; needed for - static mode headers - last mod: $Id: backends.h,v 1.12 2001/12/20 01:00:26 segher Exp $ - - ********************************************************************/ - -/* this is exposed up here because we need it for static modes. - Lookups for each backend aren't exposed because there's no reason - to do so */ - -#ifndef _vorbis_backend_h_ -#define _vorbis_backend_h_ - -#include "codec_internal.h" - -/* this would all be simpler/shorter with templates, but.... */ -/* Transform backend generic *************************************/ - -/* only mdct right now. Flesh it out more if we ever transcend mdct - in the transform domain */ - -/* Time backend generic ******************************************/ -typedef struct{ - void (*pack) (vorbis_info_time *,oggpack_buffer *); - vorbis_info_time *(*unpack)(vorbis_info *,oggpack_buffer *); - vorbis_look_time *(*look) (vorbis_dsp_state *,vorbis_info_mode *, - vorbis_info_time *); - vorbis_info_time *(*copy_info)(vorbis_info_time *); - - void (*free_info) (vorbis_info_time *); - void (*free_look) (vorbis_look_time *); - int (*forward) (struct vorbis_block *,vorbis_look_time *, - float *,float *); - int (*inverse) (struct vorbis_block *,vorbis_look_time *, - float *,float *); -} vorbis_func_time; - -typedef struct{ - int dummy; -} vorbis_info_time0; - -/* Floor backend generic *****************************************/ -typedef struct{ - void (*pack) (vorbis_info_floor *,oggpack_buffer *); - vorbis_info_floor *(*unpack)(vorbis_info *,oggpack_buffer *); - vorbis_look_floor *(*look) (vorbis_dsp_state *,vorbis_info_mode *, - vorbis_info_floor *); - vorbis_info_floor *(*copy_info)(vorbis_info_floor *); - void (*free_info) (vorbis_info_floor *); - void (*free_look) (vorbis_look_floor *); - int (*forward) (struct vorbis_block *,vorbis_look_floor *, - float *, const float *, /* in */ - const float *, const float *, /* in */ - float *); /* out */ - void *(*inverse1) (struct vorbis_block *,vorbis_look_floor *); - int (*inverse2) (struct vorbis_block *,vorbis_look_floor *, - void *buffer,float *); -} vorbis_func_floor; - -typedef struct{ - int order; - long rate; - long barkmap; - - int ampbits; - int ampdB; - - int numbooks; /* <= 16 */ - int books[16]; - - float lessthan; /* encode-only config setting hacks for libvorbis */ - float greaterthan; /* encode-only config setting hacks for libvorbis */ - -} vorbis_info_floor0; - -#define VIF_POSIT 63 -#define VIF_CLASS 16 -#define VIF_PARTS 31 -typedef struct{ - int partitions; /* 0 to 31 */ - int partitionclass[VIF_PARTS]; /* 0 to 15 */ - - int class_dim[VIF_CLASS]; /* 1 to 8 */ - int class_subs[VIF_CLASS]; /* 0,1,2,3 (bits: 1<<n poss) */ - int class_book[VIF_CLASS]; /* subs ^ dim entries */ - int class_subbook[VIF_CLASS][8]; /* [VIF_CLASS][subs] */ - - - int mult; /* 1 2 3 or 4 */ - int postlist[VIF_POSIT+2]; /* first two implicit */ - - - /* encode side analysis parameters */ - float maxover; - float maxunder; - float maxerr; - - int twofitminsize; - int twofitminused; - int twofitweight; - float twofitatten; - int unusedminsize; - int unusedmin_n; - - int n; - -} vorbis_info_floor1; - -/* Residue backend generic *****************************************/ -typedef struct{ - void (*pack) (vorbis_info_residue *,oggpack_buffer *); - vorbis_info_residue *(*unpack)(vorbis_info *,oggpack_buffer *); - vorbis_look_residue *(*look) (vorbis_dsp_state *,vorbis_info_mode *, - vorbis_info_residue *); - vorbis_info_residue *(*copy_info)(vorbis_info_residue *); - void (*free_info) (vorbis_info_residue *); - void (*free_look) (vorbis_look_residue *); - long **(*class) (struct vorbis_block *,vorbis_look_residue *, - float **,int *,int); - int (*forward) (struct vorbis_block *,vorbis_look_residue *, - float **,float **,int *,int,int,long **,ogg_uint32_t *); - int (*inverse) (struct vorbis_block *,vorbis_look_residue *, - float **,int *,int); -} vorbis_func_residue; - -typedef struct vorbis_info_residue0{ -/* block-partitioned VQ coded straight residue */ - long begin; - long end; - - /* first stage (lossless partitioning) */ - int grouping; /* group n vectors per partition */ - int partitions; /* possible codebooks for a partition */ - int groupbook; /* huffbook for partitioning */ - int secondstages[64]; /* expanded out to pointers in lookup */ - int booklist[256]; /* list of second stage books */ - - /* encode-only heuristic settings */ - float entmax[64]; /* book entropy threshholds*/ - float ampmax[64]; /* book amp threshholds*/ - int subgrp[64]; /* book heuristic subgroup size */ - int blimit[64]; /* subgroup position limits */ -} vorbis_info_residue0; - -/* Mapping backend generic *****************************************/ -typedef struct{ - void (*pack) (vorbis_info *,vorbis_info_mapping *, - oggpack_buffer *); - vorbis_info_mapping *(*unpack)(vorbis_info *,oggpack_buffer *); - vorbis_look_mapping *(*look) (vorbis_dsp_state *,vorbis_info_mode *, - vorbis_info_mapping *); - vorbis_info_mapping *(*copy_info)(vorbis_info_mapping *); - void (*free_info) (vorbis_info_mapping *); - void (*free_look) (vorbis_look_mapping *); - int (*forward) (struct vorbis_block *vb,vorbis_look_mapping *); - int (*inverse) (struct vorbis_block *vb,vorbis_look_mapping *); -} vorbis_func_mapping; - -typedef struct vorbis_info_mapping0{ - int submaps; /* <= 16 */ - int chmuxlist[256]; /* up to 256 channels in a Vorbis stream */ - - int timesubmap[16]; /* [mux] */ - int floorsubmap[16]; /* [mux] submap to floors */ - int residuesubmap[16]; /* [mux] submap to residue */ - - int psy[2]; /* by blocktype; impulse/padding for short, - transition/normal for long */ - - int coupling_steps; - int coupling_mag[256]; - int coupling_ang[256]; -} vorbis_info_mapping0; - -#endif - - - - - diff --git a/lib/barkmel.c b/lib/barkmel.c deleted file mode 100644 index d11aad28..00000000 --- a/lib/barkmel.c +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: bark scale utility - last mod: $Id: barkmel.c,v 1.9 2001/12/20 01:00:26 segher Exp $ - - ********************************************************************/ - -#include <stdio.h> -#include "scales.h" -int main(){ - int i; - double rate; - for(i=64;i<32000;i*=2){ - rate=48000.f; - fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n", - rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2)); - - rate=44100.f; - fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n", - rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2)); - - rate=32000.f; - fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n", - rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2)); - - rate=22050.f; - fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n", - rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2)); - - rate=16000.f; - fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n", - rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2)); - - rate=11025.f; - fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n", - rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2)); - - rate=8000.f; - fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n\n", - rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2)); - - - } - { - float i; - int j; - for(i=0.,j=0;i<28;i+=1,j++){ - fprintf(stderr,"(%d) bark=%f %gHz (%d of 128)\n", - j,i,fromBARK(i),(int)(fromBARK(i)/22050.*128.)); - } - } - return(0); -} - diff --git a/lib/bitrate.c b/lib/bitrate.c deleted file mode 100644 index 96ff9c57..00000000 --- a/lib/bitrate.c +++ /dev/null @@ -1,622 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: bitrate tracking and management - last mod: $Id: bitrate.c,v 1.11 2002/01/22 08:06:06 xiphmont Exp $ - - ********************************************************************/ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <ogg/ogg.h> -#include "vorbis/codec.h" -#include "codec_internal.h" -#include "os.h" -#include "misc.h" -#include "bitrate.h" - - -static long BINBITS(bitrate_manager_state *bm,long pos,long inbin){ - int bins=bm->queue_bins; - int bin=((inbin&0x7fffffffUL)>>BITTRACK_BPT); - ogg_uint32_t lobits=0; - ogg_uint32_t hibits=0; - ogg_uint32_t bitdel; - - if(bin>0)lobits=bm->queue_binned[pos*bins+bin-1]; - if(bin<bins) - hibits=bm->queue_binned[pos*bins+bin]; - else - hibits=lobits; - - bitdel=hibits-lobits; - - return(lobits+bitdel*(inbin&((1<<BITTRACK_BPT)-1))/(1<<BITTRACK_BPT)); - -} - -#define LIMITBITS(pos,bin) ((bin)>-bins?\ - bm->minmax_binstack[(pos)*bins*2+((bin)+bins)-1]:0) - -static long LACING_ADJUST(long bits){ - int addto=((bits+7)/8+1)/256+1; - return( ((bits+7)/8+addto)*8 ); -} - -static double floater_interpolate(bitrate_manager_state *bm,vorbis_info *vi, - double desired_rate){ - int bin=bm->avgfloat*BITTRACK_DIVISOR-1.; - double lobitrate; - double hibitrate; - - lobitrate=(double)(bin==0?0:bm->avg_binacc[bin-1])/bm->avg_sampleacc*vi->rate; - while(lobitrate>desired_rate && bin>0){ - bin--; - lobitrate=(double)(bin==0?0:bm->avg_binacc[bin-1])/bm->avg_sampleacc*vi->rate; - } - - hibitrate=(double)(bin>=bm->queue_bins?bm->avg_binacc[bm->queue_bins-1]: - bm->avg_binacc[bin])/bm->avg_sampleacc*vi->rate; - while(hibitrate<desired_rate && bin<bm->queue_bins){ - bin++; - if(bin<bm->queue_bins) - hibitrate=(double)bm->avg_binacc[bin]/bm->avg_sampleacc*vi->rate; - } - - /* interpolate */ - if(bin==bm->queue_bins){ - return bin/(double)BITTRACK_DIVISOR; - }else{ - double delta=(desired_rate-lobitrate)/(hibitrate-lobitrate); - return (bin+delta)/BITTRACK_DIVISOR; - } -} - -/* try out a new limit */ -static long limit_sum(bitrate_manager_state *bm,int limit){ - int i=bm->minmax_stackptr; - long acc=bm->minmax_acctotal; - long bins=bm->queue_bins; - - acc-=LIMITBITS(i,0); - acc+=LIMITBITS(i,limit); - - while(i-->0){ - if(bm->minmax_limitstack[i]<=limit)break; - acc-=LIMITBITS(i,bm->minmax_limitstack[i]); - acc+=LIMITBITS(i,limit); - } - return(acc); -} - -/* compute bitrate tracking setup, allocate circular packet size queue */ -void vorbis_bitrate_init(vorbis_info *vi,bitrate_manager_state *bm){ - int i; - codec_setup_info *ci=vi->codec_setup; - bitrate_manager_info *bi=&ci->bi; - long maxlatency; - - memset(bm,0,sizeof(*bm)); - - if(bi){ - - bm->avg_sampledesired=bi->queue_avg_time*vi->rate; - bm->avg_centerdesired=bi->queue_avg_time*vi->rate*bi->queue_avg_center; - bm->minmax_sampledesired=bi->queue_minmax_time*vi->rate; - - /* first find the max possible needed queue size */ - maxlatency=max(bm->avg_sampledesired-bm->avg_centerdesired, - bm->minmax_sampledesired)+bm->avg_centerdesired; - - if(maxlatency>0 && - (bi->queue_avgmin>0 || bi->queue_avgmax>0 || bi->queue_hardmax>0 || - bi->queue_hardmin>0)){ - long maxpackets=maxlatency/(ci->blocksizes[0]>>1)+3; - long bins=BITTRACK_DIVISOR*ci->passlimit[ci->coupling_passes-1]; - - bm->queue_size=maxpackets; - bm->queue_bins=bins; - bm->queue_binned=_ogg_malloc(maxpackets*bins*sizeof(*bm->queue_binned)); - bm->queue_actual=_ogg_malloc(maxpackets*sizeof(*bm->queue_actual)); - - if((bi->queue_avgmin>0 || bi->queue_avgmax>0) && - bi->queue_avg_time>0){ - - bm->avg_binacc=_ogg_malloc(bins*sizeof(*bm->avg_binacc)); - bm->avgfloat=bi->avgfloat_initial; - - - }else{ - bm->avg_tail= -1; - } - - if((bi->queue_hardmin>0 || bi->queue_hardmax>0) && - bi->queue_minmax_time>0){ - - bm->minmax_binstack=_ogg_calloc((bins+1)*bins*2, - sizeof(bm->minmax_binstack)); - bm->minmax_posstack=_ogg_calloc((bins+1), - sizeof(bm->minmax_posstack)); - bm->minmax_limitstack=_ogg_calloc((bins+1), - sizeof(bm->minmax_limitstack)); - }else{ - bm->minmax_tail= -1; - } - - /* space for the packet queueing */ - bm->queue_packet_buffers=_ogg_calloc(maxpackets,sizeof(*bm->queue_packet_buffers)); - bm->queue_packets=_ogg_calloc(maxpackets,sizeof(*bm->queue_packets)); - for(i=0;i<maxpackets;i++) - oggpack_writeinit(bm->queue_packet_buffers+i); - - }else{ - bm->queue_packet_buffers=_ogg_calloc(1,sizeof(*bm->queue_packet_buffers)); - bm->queue_packets=_ogg_calloc(1,sizeof(*bm->queue_packets)); - oggpack_writeinit(bm->queue_packet_buffers); - } - } -} - -void vorbis_bitrate_clear(bitrate_manager_state *bm){ - int i; - if(bm){ - if(bm->queue_binned)_ogg_free(bm->queue_binned); - if(bm->queue_actual)_ogg_free(bm->queue_actual); - if(bm->avg_binacc)_ogg_free(bm->avg_binacc); - if(bm->minmax_binstack)_ogg_free(bm->minmax_binstack); - if(bm->minmax_posstack)_ogg_free(bm->minmax_posstack); - if(bm->minmax_limitstack)_ogg_free(bm->minmax_limitstack); - if(bm->queue_packet_buffers){ - if(bm->queue_size==0){ - oggpack_writeclear(bm->queue_packet_buffers); - _ogg_free(bm->queue_packet_buffers); - }else{ - for(i=0;i<bm->queue_size;i++) - oggpack_writeclear(bm->queue_packet_buffers+i); - _ogg_free(bm->queue_packet_buffers); - } - } - if(bm->queue_packets)_ogg_free(bm->queue_packets); - memset(bm,0,sizeof(*bm)); - } -} - -int vorbis_bitrate_managed(vorbis_block *vb){ - vorbis_dsp_state *vd=vb->vd; - backend_lookup_state *b=vd->backend_state; - bitrate_manager_state *bm=&b->bms; - - if(bm->queue_binned)return(1); - return(0); -} - -int vorbis_bitrate_maxmarkers(void){ - return 8*BITTRACK_DIVISOR; -} - -/* finish taking in the block we just processed */ -int vorbis_bitrate_addblock(vorbis_block *vb){ - int i; - vorbis_block_internal *vbi=vb->internal; - vorbis_dsp_state *vd=vb->vd; - backend_lookup_state *b=vd->backend_state; - bitrate_manager_state *bm=&b->bms; - vorbis_info *vi=vd->vi; - codec_setup_info *ci=vi->codec_setup; - bitrate_manager_info *bi=&ci->bi; - int eofflag=vb->eofflag; - int head=bm->queue_head; - int next_head=head+1; - int bins=bm->queue_bins; - int minmax_head,new_minmax_head; - - ogg_uint32_t *head_ptr; - oggpack_buffer temp; - - if(!bm->queue_binned){ - oggpack_buffer temp; - /* not a bitrate managed stream, but for API simplicity, we'll - buffer one packet to keep the code path clean */ - - if(bm->queue_head)return(-1); /* one has been submitted without - being claimed */ - bm->queue_head++; - - bm->queue_packets[0].packet=oggpack_get_buffer(&vb->opb); - bm->queue_packets[0].bytes=oggpack_bytes(&vb->opb); - bm->queue_packets[0].b_o_s=0; - bm->queue_packets[0].e_o_s=vb->eofflag; - bm->queue_packets[0].granulepos=vb->granulepos; - bm->queue_packets[0].packetno=vb->sequence; /* for sake of completeness */ - - memcpy(&temp,bm->queue_packet_buffers,sizeof(vb->opb)); - memcpy(bm->queue_packet_buffers,&vb->opb,sizeof(vb->opb)); - memcpy(&vb->opb,&temp,sizeof(vb->opb)); - - return(0); - } - - /* add encoded packet to head */ - if(next_head>=bm->queue_size)next_head=0; - head_ptr=bm->queue_binned+bins*head; - - /* is there room to add a block? In proper use of the API, this will - never come up... but guard it anyway */ - if(next_head==bm->avg_tail || next_head==bm->minmax_tail)return(-1); - - /* add the block to the toplevel queue */ - bm->queue_head=next_head; - bm->queue_actual[head]=(vb->W?0x80000000UL:0); - - /* buffer packet fields */ - bm->queue_packets[head].packet=oggpack_get_buffer(&vb->opb); - bm->queue_packets[head].bytes=oggpack_bytes(&vb->opb); - bm->queue_packets[head].b_o_s=0; - bm->queue_packets[head].e_o_s=vb->eofflag; - bm->queue_packets[head].granulepos=vb->granulepos; - bm->queue_packets[head].packetno=vb->sequence; /* for sake of completeness */ - - /* swap packet buffers */ - memcpy(&temp,bm->queue_packet_buffers+head,sizeof(vb->opb)); - memcpy(bm->queue_packet_buffers+head,&vb->opb,sizeof(vb->opb)); - memcpy(&vb->opb,&temp,sizeof(vb->opb)); - - /* save markers */ - memcpy(head_ptr,vbi->packet_markers,sizeof(*head_ptr)*bins); - - if(bm->avg_binacc) - new_minmax_head=minmax_head=bm->avg_center; - else - new_minmax_head=minmax_head=head; - - /* the average tracking queue is updated first; its results (if it's - in use) are taken into account by the min/max limiter (if min/max - is in use) */ - if(bm->avg_binacc){ - unsigned long desired_center=bm->avg_centerdesired; - if(eofflag)desired_center=0; - - /* update the avg head */ - for(i=0;i<bins;i++) - bm->avg_binacc[i]+=LACING_ADJUST(head_ptr[i]); - bm->avg_sampleacc+=ci->blocksizes[vb->W]>>1; - bm->avg_centeracc+=ci->blocksizes[vb->W]>>1; - - if(bm->avg_sampleacc>bm->avg_sampledesired || eofflag){ - - /* update the avg center */ - if(bm->avg_centeracc>desired_center){ - /* choose the new average floater */ - int samples=ci->blocksizes[vb->W]>>1; - double upper=floater_interpolate(bm,vi,bi->queue_avgmax); - double lower=floater_interpolate(bm,vi,bi->queue_avgmin); - double new=bi->avgfloat_initial,slew; - int bin; - - if(upper>0. && upper<new)new=upper; - if(lower<bi->avgfloat_minimum) - lower=bi->avgfloat_minimum; - if(lower>new)new=lower; - - slew=(new-bm->avgfloat)/samples*vi->rate; - - if(slew<bi->avgfloat_downslew_max) - new=bm->avgfloat+bi->avgfloat_downslew_max/vi->rate*samples; - if(slew>bi->avgfloat_upslew_max) - new=bm->avgfloat+bi->avgfloat_upslew_max/vi->rate*samples; - - bm->avgfloat=new; - - /* apply the average floater to new blocks */ - bin=bm->avgfloat*(BITTRACK_DIVISOR<<BITTRACK_BPT); - - while(bm->avg_centeracc>desired_center){ - samples=ci->blocksizes[bm->queue_actual[bm->avg_center]& - 0x80000000UL?1:0]>>1; - - bm->queue_actual[bm->avg_center]|=bin; - - bm->avg_centeracc-=samples; - bm->avg_center++; - if(bm->noisetrigger_postpone)bm->noisetrigger_postpone-=samples; - if(bm->avg_center>=bm->queue_size)bm->avg_center=0; - } - new_minmax_head=bm->avg_center; - - /* track noise bias triggers and noise bias */ - if(bm->avgfloat<bi->avgfloat_noise_lowtrigger) - bm->noisetrigger_request+=1.f; - else - if(bm->noisetrigger_request>0. && bm->avgnoise>0.) - bm->noisetrigger_request-=.2f; - - if(bm->avgfloat>bi->avgfloat_noise_hightrigger) - bm->noisetrigger_request-=1.f; - else - if(bm->noisetrigger_request<0 && bm->avgnoise<0.) - bm->noisetrigger_request+=.2f; - - if(bm->noisetrigger_postpone<=0){ - if(bm->noisetrigger_request<0.){ - bm->avgnoise-=1.f; - if(-bm->noisetrigger_request>(signed long)(bm->avg_sampleacc)/2) - bm->avgnoise-=1.f; - bm->noisetrigger_postpone=bm->avg_sampleacc/2; - } - if(bm->noisetrigger_request>0.){ - bm->avgnoise+=1.f; - if(bm->noisetrigger_request>(signed long)(bm->avg_sampleacc)/2) - bm->avgnoise+=1.f; - bm->noisetrigger_postpone=bm->avg_sampleacc/2; - } - - /* we generally want the noise bias to drift back to zero */ - bm->noisetrigger_request=0.f; - if(bm->avgnoise>0) - bm->noisetrigger_request= -1.; - if(bm->avgnoise<0) - bm->noisetrigger_request= +1.; - - if(bm->avgnoise<bi->avgfloat_noise_minval) - bm->avgnoise=bi->avgfloat_noise_minval; - if(bm->avgnoise>bi->avgfloat_noise_maxval) - bm->avgnoise=bi->avgfloat_noise_maxval; - } - } - - /* update the avg tail if needed */ - while(bm->avg_sampleacc>bm->avg_sampledesired){ - int samples= - ci->blocksizes[bm->queue_actual[bm->avg_tail]&0x80000000UL?1:0]>>1; - for(i=0;i<bm->queue_bins;i++) - bm->avg_binacc[i]-=LACING_ADJUST(bm->queue_binned[bins*bm->avg_tail+i]); - bm->avg_sampleacc-=samples; - bm->avg_tail++; - if(bm->avg_tail>=bm->queue_size)bm->avg_tail=0; - } - - - } - }else{ - /* if we're not using an average tracker, the 'float' is nailed to - the avgfloat_initial value. It needs to be set for the min/max - to deal properly */ - long bin=bi->avgfloat_initial*(BITTRACK_DIVISOR<<BITTRACK_BPT); - bm->queue_actual[head]|=bin; - new_minmax_head=next_head; - } - - /* update the min/max queues and enforce limits */ - if(bm->minmax_binstack){ - unsigned long sampledesired=eofflag?0:bm->minmax_sampledesired; - - /* add to stack recent */ - while(minmax_head!=new_minmax_head){ - unsigned int i; - int samples=ci->blocksizes[bm->queue_actual[minmax_head]& - 0x80000000UL?1:0]>>1; - - /* the construction here is not parallel to the floater's - stack. - - floater[bin-1] <-> floater supported at bin - ... - floater[0] <-> floater supported at 1 - supported at zero is implicit. - the BINBITS macro performs offsetting - - - bin minmax[bin*2-1] <-> floater supported at bin - ... - 1 minmax[bin] <-> floater supported at 1 - 0 minmax[bin-1] <-> no limit/support (limited to/supported at bin 0, - ie, no effect) - -1 minmax[bin-2] <-> floater limited to bin-1 - ... - -bin+1 minmax[0] <-> floater limited to 1 - limited to zero (val= -bin) is implicit - */ - for(i=0;i<(unsigned int)bins;i++){ - bm->minmax_binstack[bm->minmax_stackptr*bins*2+bins+i]+= - LACING_ADJUST( - BINBITS(bm,minmax_head, - (bm->queue_actual[minmax_head]&0x7fffffffUL)> - ((i+1)<<BITTRACK_BPT)? - bm->queue_actual[minmax_head]: - ((i+1)<<BITTRACK_BPT))); - - bm->minmax_binstack[bm->minmax_stackptr*bins*2+i]+= - LACING_ADJUST( - BINBITS(bm,minmax_head, - (bm->queue_actual[minmax_head]&0x7fffffffUL)< - ((i+1)<<BITTRACK_BPT)? - bm->queue_actual[minmax_head]: - ((i+1)<<BITTRACK_BPT))); - } - - bm->minmax_posstack[bm->minmax_stackptr]=minmax_head; /* not one - past - like - typical */ - bm->minmax_limitstack[bm->minmax_stackptr]=0; - bm->minmax_sampleacc+=samples; - bm->minmax_acctotal+= - LACING_ADJUST(BINBITS(bm,minmax_head,bm->queue_actual[minmax_head])); - - minmax_head++; - if(minmax_head>=bm->queue_size)minmax_head=0; - } - - /* check limits, enforce changes */ - if(bm->minmax_sampleacc>sampledesired){ - double bitrate=(double)bm->minmax_acctotal/bm->minmax_sampleacc*vi->rate; - int limit=0; - - if((bi->queue_hardmax>0 && bitrate>bi->queue_hardmax) || - (bi->queue_hardmin>0 && bitrate<bi->queue_hardmin)){ - int newstack; - int stackctr; - long bitsum=limit_sum(bm,0); - - bitrate=(double)bitsum/bm->minmax_sampleacc*vi->rate; - - /* we're off rate. Iteratively try out new hard floater - limits until we find one that brings us inside. Here's - where we see the whole point of the limit stacks. */ - if(bi->queue_hardmax>0 && bitrate>bi->queue_hardmax){ - for(limit=-1;limit>-bins;limit--){ - long bitsum=limit_sum(bm,limit); - bitrate=(double)bitsum/bm->minmax_sampleacc*vi->rate; - if(bitrate<=bi->queue_hardmax)break; - } - }else if(bitrate<bi->queue_hardmin){ - for(limit=1;limit<bins;limit++){ - long bitsum=limit_sum(bm,limit); - bitrate=(double)bitsum/bm->minmax_sampleacc*vi->rate; - if(bitrate>=bi->queue_hardmin)break; - } - if(bitrate>bi->queue_hardmax)limit--; - } - - for(i=limit-1;i>-bins;i--){ - long bitsum=limit_sum(bm,i); - bitrate=(double)bitsum/bm->minmax_sampleacc*vi->rate; - } - - bitsum=limit_sum(bm,limit); - bitrate=(double)bitsum/bm->minmax_sampleacc*vi->rate; - - /* trace the limit backward, stop when we see a lower limit */ - newstack=bm->minmax_stackptr-1; - while(newstack>=0){ - if(bm->minmax_limitstack[newstack]<limit)break; - newstack--; - } - - /* update bit counter with new limit and replace any stack - limits that have been replaced by our new lower limit */ - stackctr=bm->minmax_stackptr; - while(stackctr>newstack){ - bm->minmax_acctotal-= - LIMITBITS(stackctr,bm->minmax_limitstack[stackctr]); - bm->minmax_acctotal+=LIMITBITS(stackctr,limit); - - if(stackctr<bm->minmax_stackptr) - for(i=0;i<bins*2;i++) - bm->minmax_binstack[stackctr*bins*2+i]+= - bm->minmax_binstack[(stackctr+1)*bins*2+i]; - - stackctr--; - } - stackctr++; - bm->minmax_posstack[stackctr]=bm->minmax_posstack[bm->minmax_stackptr]; - bm->minmax_limitstack[stackctr]=limit; - - /* set up new blank stack entry */ - stackctr++; - bm->minmax_stackptr=stackctr; - memset(&bm->minmax_binstack[stackctr*bins*2], - 0, - sizeof(*bm->minmax_binstack)*bins*2); - bm->minmax_limitstack[stackctr]=0; - bm->minmax_posstack[stackctr]=-1; - - } - } - - /* remove from tail */ - while(bm->minmax_sampleacc>sampledesired){ - int samples= - ci->blocksizes[bm->queue_actual[bm->minmax_tail]&0x80000000UL?1:0]>>1; - int actual=bm->queue_actual[bm->minmax_tail]&0x7fffffffUL; - - for(i=0;i<bins;i++){ - bm->minmax_binstack[bins+i]-= /* always comes off the stack bottom */ - LACING_ADJUST(BINBITS(bm,bm->minmax_tail, - actual>((i+1)<<BITTRACK_BPT)? - actual:((i+1)<<BITTRACK_BPT))); - bm->minmax_binstack[i]-= - LACING_ADJUST(BINBITS(bm,bm->minmax_tail, - actual<((i+1)<<BITTRACK_BPT)? - actual:((i+1)<<BITTRACK_BPT))); - } - - /* always perform in this order; max overrules min */ - if((bm->minmax_limitstack[0]<<BITTRACK_BPT)>actual) - actual=(bm->minmax_limitstack[0]<<BITTRACK_BPT); - if(((bins+bm->minmax_limitstack[0])<<BITTRACK_BPT)<actual) - actual=(bins+bm->minmax_limitstack[0])<<BITTRACK_BPT; - - bm->minmax_acctotal-=LACING_ADJUST(BINBITS(bm,bm->minmax_tail,actual)); - bm->minmax_sampleacc-=samples; - - /* revise queue_actual to reflect the limit */ - bm->queue_actual[bm->minmax_tail]&=0x80000000UL; - bm->queue_actual[bm->minmax_tail]|=actual; - - if(bm->minmax_tail==bm->minmax_posstack[0]){ - /* the stack becomes a FIFO; the first data has fallen off */ - memmove(bm->minmax_binstack,bm->minmax_binstack+bins*2, - sizeof(*bm->minmax_binstack)*bins*2*bm->minmax_stackptr); - memmove(bm->minmax_posstack,bm->minmax_posstack+1, - sizeof(*bm->minmax_posstack)*bm->minmax_stackptr); - memmove(bm->minmax_limitstack,bm->minmax_limitstack+1, - sizeof(*bm->minmax_limitstack)*bm->minmax_stackptr); - bm->minmax_stackptr--; - } - - bm->minmax_tail++; - if(bm->minmax_tail>=bm->queue_size)bm->minmax_tail=0; - } - - - bm->last_to_flush=bm->minmax_tail; - }else{ - bm->last_to_flush=bm->avg_center; - } - if(eofflag) - bm->last_to_flush=bm->queue_head; - return(0); -} - -int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd,ogg_packet *op){ - backend_lookup_state *b=vd->backend_state; - bitrate_manager_state *bm=&b->bms; - - if(bm->queue_size==0){ - if(bm->queue_head==0)return(0); - - memcpy(op,bm->queue_packets,sizeof(*op)); - bm->queue_head=0; - - }else{ - long bin; - long bytes; - - if(bm->next_to_flush==bm->last_to_flush)return(0); - - bin=bm->queue_actual[bm->next_to_flush]; - bytes=(BINBITS(bm,bm->next_to_flush,bin)+7)/8; - - memcpy(op,bm->queue_packets+bm->next_to_flush,sizeof(*op)); - - if(bytes<op->bytes)op->bytes=bytes; - - bm->next_to_flush++; - if(bm->next_to_flush>=bm->queue_size)bm->next_to_flush=0; - - } - - return(1); -} diff --git a/lib/bitrate.h b/lib/bitrate.h deleted file mode 100644 index b084b056..00000000 --- a/lib/bitrate.h +++ /dev/null @@ -1,95 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: bitrate tracking and management - last mod: $Id: bitrate.h,v 1.5 2001/12/23 11:53:52 xiphmont Exp $ - - ********************************************************************/ - -#ifndef _V_BITRATE_H_ -#define _V_BITRATE_H_ - -#include "vorbis/codec.h" -#include "codec_internal.h" -#include "os.h" - -/* encode side bitrate tracking */ -#define BITTRACK_DIVISOR 16 -#define BITTRACK_BPT 6 -typedef struct bitrate_manager_state { - ogg_uint32_t *queue_binned; - ogg_uint32_t *queue_actual; - int queue_size; - - int queue_head; - int queue_bins; - - long *avg_binacc; - int avg_center; - int avg_tail; - ogg_uint32_t avg_centeracc; - ogg_uint32_t avg_sampleacc; - ogg_uint32_t avg_sampledesired; - ogg_uint32_t avg_centerdesired; - - long *minmax_binstack; - long *minmax_posstack; - long *minmax_limitstack; - long minmax_stackptr; - - long minmax_acctotal; - int minmax_tail; - ogg_uint32_t minmax_sampleacc; - ogg_uint32_t minmax_sampledesired; - - int next_to_flush; - int last_to_flush; - - double avgfloat; - double avgnoise; - long noisetrigger_postpone; - double noisetrigger_request; - - /* unfortunately, we need to hold queued packet data somewhere */ - oggpack_buffer *queue_packet_buffers; - ogg_packet *queue_packets; - -} bitrate_manager_state; - -typedef struct bitrate_manager_info{ - /* detailed bitrate management setup */ - double queue_avg_time; - double queue_avg_center; - double queue_minmax_time; - double queue_hardmin; - double queue_hardmax; - double queue_avgmin; - double queue_avgmax; - - double avgfloat_initial; /* set by mode */ - double avgfloat_minimum; /* set by mode */ - double avgfloat_downslew_max; - double avgfloat_upslew_max; - double avgfloat_noise_lowtrigger; - double avgfloat_noise_hightrigger; - double avgfloat_noise_minval; - double avgfloat_noise_maxval; -} bitrate_manager_info; - -extern void vorbis_bitrate_init(vorbis_info *vi,bitrate_manager_state *bs); -extern void vorbis_bitrate_clear(bitrate_manager_state *bs); -extern int vorbis_bitrate_managed(vorbis_block *vb); -extern int vorbis_bitrate_maxmarkers(void); -extern int vorbis_bitrate_addblock(vorbis_block *vb); -extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd, ogg_packet *op); - -#endif diff --git a/lib/block.c b/lib/block.c deleted file mode 100644 index 923b3ee1..00000000 --- a/lib/block.c +++ /dev/null @@ -1,821 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: PCM data vector blocking, windowing and dis/reassembly - last mod: $Id: block.c,v 1.57 2002/01/22 08:06:06 xiphmont Exp $ - - Handle windowing, overlap-add, etc of the PCM vectors. This is made - more amusing by Vorbis' current two allowed block sizes. - - ********************************************************************/ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <ogg/ogg.h> -#include "vorbis/codec.h" -#include "codec_internal.h" - -#include "window.h" -#include "mdct.h" -#include "lpc.h" -#include "registry.h" -#include "misc.h" - -static int ilog2(unsigned int v){ - int ret=0; - while(v>1){ - ret++; - v>>=1; - } - return(ret); -} - -/* pcm accumulator examples (not exhaustive): - - <-------------- lW ----------------> - <--------------- W ----------------> -: .....|..... _______________ | -: .''' | '''_--- | |\ | -:.....''' |_____--- '''......| | \_______| -:.................|__________________|_______|__|______| - |<------ Sl ------>| > Sr < |endW - |beginSl |endSl | |endSr - |beginW |endlW |beginSr - - - |< lW >| - <--------------- W ----------------> - | | .. ______________ | - | | ' `/ | ---_ | - |___.'___/`. | ---_____| - |_______|__|_______|_________________| - | >|Sl|< |<------ Sr ----->|endW - | | |endSl |beginSr |endSr - |beginW | |endlW - mult[0] |beginSl mult[n] - - <-------------- lW -----------------> - |<--W-->| -: .............. ___ | | -: .''' |`/ \ | | -:.....''' |/`....\|...| -:.........................|___|___|___| - |Sl |Sr |endW - | | |endSr - | |beginSr - | |endSl - |beginSl - |beginW -*/ - -/* block abstraction setup *********************************************/ - -#ifndef WORD_ALIGN -#define WORD_ALIGN 8 -#endif - -int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb){ - memset(vb,0,sizeof(*vb)); - vb->vd=v; - vb->localalloc=0; - vb->localstore=NULL; - if(v->analysisp){ - vorbis_block_internal *vbi= - vb->internal=_ogg_calloc(1,sizeof(vorbis_block_internal)); - oggpack_writeinit(&vb->opb); - vbi->ampmax=-9999; - vbi->packet_markers=_ogg_malloc(vorbis_bitrate_maxmarkers()* - sizeof(*vbi->packet_markers)); - } - - return(0); -} - -void *_vorbis_block_alloc(vorbis_block *vb,long bytes){ - bytes=(bytes+(WORD_ALIGN-1)) & ~(WORD_ALIGN-1); - if(bytes+vb->localtop>vb->localalloc){ - /* can't just _ogg_realloc... there are outstanding pointers */ - if(vb->localstore){ - struct alloc_chain *link=_ogg_malloc(sizeof(*link)); - vb->totaluse+=vb->localtop; - link->next=vb->reap; - link->ptr=vb->localstore; - vb->reap=link; - } - /* highly conservative */ - vb->localalloc=bytes; - vb->localstore=_ogg_malloc(vb->localalloc); - vb->localtop=0; - } - { - void *ret=(void *)(((char *)vb->localstore)+vb->localtop); - vb->localtop+=bytes; - return ret; - } -} - -/* reap the chain, pull the ripcord */ -void _vorbis_block_ripcord(vorbis_block *vb){ - /* reap the chain */ - struct alloc_chain *reap=vb->reap; - while(reap){ - struct alloc_chain *next=reap->next; - _ogg_free(reap->ptr); - memset(reap,0,sizeof(*reap)); - _ogg_free(reap); - reap=next; - } - /* consolidate storage */ - if(vb->totaluse){ - vb->localstore=_ogg_realloc(vb->localstore,vb->totaluse+vb->localalloc); - vb->localalloc+=vb->totaluse; - vb->totaluse=0; - } - - /* pull the ripcord */ - vb->localtop=0; - vb->reap=NULL; -} - -int vorbis_block_clear(vorbis_block *vb){ - if(vb->vd) - if(vb->vd->analysisp) - oggpack_writeclear(&vb->opb); - _vorbis_block_ripcord(vb); - if(vb->localstore)_ogg_free(vb->localstore); - - if(vb->internal){ - vorbis_block_internal *vbi=(vorbis_block_internal *)vb->internal; - if(vbi->packet_markers)_ogg_free(vbi->packet_markers); - - _ogg_free(vb->internal); - } - - memset(vb,0,sizeof(*vb)); - return(0); -} - -/* Analysis side code, but directly related to blocking. Thus it's - here and not in analysis.c (which is for analysis transforms only). - The init is here because some of it is shared */ - -static int _vds_shared_init(vorbis_dsp_state *v,vorbis_info *vi,int encp){ - int i; - codec_setup_info *ci=vi->codec_setup; - backend_lookup_state *b=NULL; - - memset(v,0,sizeof(*v)); - b=v->backend_state=_ogg_calloc(1,sizeof(*b)); - - v->vi=vi; - b->modebits=ilog2(ci->modes); - - b->transform[0]=_ogg_calloc(VI_TRANSFORMB,sizeof(*b->transform[0])); - b->transform[1]=_ogg_calloc(VI_TRANSFORMB,sizeof(*b->transform[1])); - - /* MDCT is tranform 0 */ - - b->transform[0][0]=_ogg_calloc(1,sizeof(mdct_lookup)); - b->transform[1][0]=_ogg_calloc(1,sizeof(mdct_lookup)); - mdct_init(b->transform[0][0],ci->blocksizes[0]); - mdct_init(b->transform[1][0],ci->blocksizes[1]); - - b->window[0][0][0]=_ogg_calloc(VI_WINDOWB,sizeof(*b->window[0][0][0])); - b->window[0][0][1]=b->window[0][0][0]; - b->window[0][1][0]=b->window[0][0][0]; - b->window[0][1][1]=b->window[0][0][0]; - b->window[1][0][0]=_ogg_calloc(VI_WINDOWB,sizeof(*b->window[1][0][0])); - b->window[1][0][1]=_ogg_calloc(VI_WINDOWB,sizeof(*b->window[1][0][1])); - b->window[1][1][0]=_ogg_calloc(VI_WINDOWB,sizeof(*b->window[1][1][0])); - b->window[1][1][1]=_ogg_calloc(VI_WINDOWB,sizeof(*b->window[1][1][1])); - - for(i=0;i<VI_WINDOWB;i++){ - b->window[0][0][0][i]= - _vorbis_window(i,ci->blocksizes[0],ci->blocksizes[0]/2,ci->blocksizes[0]/2); - b->window[1][0][0][i]= - _vorbis_window(i,ci->blocksizes[1],ci->blocksizes[0]/2,ci->blocksizes[0]/2); - b->window[1][0][1][i]= - _vorbis_window(i,ci->blocksizes[1],ci->blocksizes[0]/2,ci->blocksizes[1]/2); - b->window[1][1][0][i]= - _vorbis_window(i,ci->blocksizes[1],ci->blocksizes[1]/2,ci->blocksizes[0]/2); - b->window[1][1][1][i]= - _vorbis_window(i,ci->blocksizes[1],ci->blocksizes[1]/2,ci->blocksizes[1]/2); - } - - if(encp){ /* encode/decode differ here */ - /* finish the codebooks */ - if(!ci->fullbooks){ - ci->fullbooks=_ogg_calloc(ci->books,sizeof(*ci->fullbooks)); - for(i=0;i<ci->books;i++) - vorbis_book_init_encode(ci->fullbooks+i,ci->book_param[i]); - } - v->analysisp=1; - }else{ - /* finish the codebooks */ - if(!ci->fullbooks){ - ci->fullbooks=_ogg_calloc(ci->books,sizeof(*ci->fullbooks)); - for(i=0;i<ci->books;i++){ - vorbis_book_init_decode(ci->fullbooks+i,ci->book_param[i]); - /* decode codebooks are now standalone after init */ - vorbis_staticbook_destroy(ci->book_param[i]); - ci->book_param[i]=NULL; - } - } - } - - /* initialize the storage vectors. blocksize[1] is small for encode, - but the correct size for decode */ - v->pcm_storage=ci->blocksizes[1]; - v->pcm=_ogg_malloc(vi->channels*sizeof(*v->pcm)); - v->pcmret=_ogg_malloc(vi->channels*sizeof(*v->pcmret)); - { - int i; - for(i=0;i<vi->channels;i++) - v->pcm[i]=_ogg_calloc(v->pcm_storage,sizeof(*v->pcm[i])); - } - - /* all 1 (large block) or 0 (small block) */ - /* explicitly set for the sake of clarity */ - v->lW=0; /* previous window size */ - v->W=0; /* current window size */ - - /* all vector indexes */ - v->centerW=ci->blocksizes[1]/2; - - v->pcm_current=v->centerW; - - /* initialize all the mapping/backend lookups */ - b->mode=_ogg_calloc(ci->modes,sizeof(*b->mode)); - for(i=0;i<ci->modes;i++){ - int mapnum=ci->mode_param[i]->mapping; - int maptype=ci->map_type[mapnum]; - b->mode[i]=_mapping_P[maptype]->look(v,ci->mode_param[i], - ci->map_param[mapnum]); - } - - return(0); -} - -/* arbitrary settings and spec-mandated numbers get filled in here */ -int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi){ - backend_lookup_state *b=NULL; - - _vds_shared_init(v,vi,1); - b=v->backend_state; - b->psy_g_look=_vp_global_look(vi); - - /* Initialize the envelope state storage */ - b->ve=_ogg_calloc(1,sizeof(*b->ve)); - _ve_envelope_init(b->ve,vi); - - vorbis_bitrate_init(vi,&b->bms); - - return(0); -} - -void vorbis_dsp_clear(vorbis_dsp_state *v){ - int i,j,k; - if(v){ - vorbis_info *vi=v->vi; - codec_setup_info *ci=(vi?vi->codec_setup:NULL); - backend_lookup_state *b=v->backend_state; - - if(b){ - if(b->window[0][0][0]){ - for(i=0;i<VI_WINDOWB;i++) - if(b->window[0][0][0][i])_ogg_free(b->window[0][0][0][i]); - _ogg_free(b->window[0][0][0]); - - for(j=0;j<2;j++) - for(k=0;k<2;k++){ - for(i=0;i<VI_WINDOWB;i++) - if(b->window[1][j][k][i])_ogg_free(b->window[1][j][k][i]); - _ogg_free(b->window[1][j][k]); - } - } - - if(b->ve){ - _ve_envelope_clear(b->ve); - _ogg_free(b->ve); - } - - if(b->transform[0]){ - mdct_clear(b->transform[0][0]); - _ogg_free(b->transform[0][0]); - _ogg_free(b->transform[0]); - } - if(b->transform[1]){ - mdct_clear(b->transform[1][0]); - _ogg_free(b->transform[1][0]); - _ogg_free(b->transform[1]); - } - if(b->psy_g_look)_vp_global_free(b->psy_g_look); - vorbis_bitrate_clear(&b->bms); - } - - if(v->pcm){ - for(i=0;i<vi->channels;i++) - if(v->pcm[i])_ogg_free(v->pcm[i]); - _ogg_free(v->pcm); - if(v->pcmret)_ogg_free(v->pcmret); - } - - /* free mode lookups; these are actually vorbis_look_mapping structs */ - if(ci){ - for(i=0;i<ci->modes;i++){ - int mapnum=ci->mode_param[i]->mapping; - int maptype=ci->map_type[mapnum]; - if(b && b->mode)_mapping_P[maptype]->free_look(b->mode[i]); - } - } - - if(b){ - if(b->mode)_ogg_free(b->mode); - - /* free header, header1, header2 */ - if(b->header)_ogg_free(b->header); - if(b->header1)_ogg_free(b->header1); - if(b->header2)_ogg_free(b->header2); - _ogg_free(b); - } - - memset(v,0,sizeof(*v)); - } -} - -float **vorbis_analysis_buffer(vorbis_dsp_state *v, int vals){ - int i; - vorbis_info *vi=v->vi; - backend_lookup_state *b=v->backend_state; - - /* free header, header1, header2 */ - if(b->header)_ogg_free(b->header);b->header=NULL; - if(b->header1)_ogg_free(b->header1);b->header1=NULL; - if(b->header2)_ogg_free(b->header2);b->header2=NULL; - - /* Do we have enough storage space for the requested buffer? If not, - expand the PCM (and envelope) storage */ - - if(v->pcm_current+vals>=v->pcm_storage){ - v->pcm_storage=v->pcm_current+vals*2; - - for(i=0;i<vi->channels;i++){ - v->pcm[i]=_ogg_realloc(v->pcm[i],v->pcm_storage*sizeof(*v->pcm[i])); - } - } - - for(i=0;i<vi->channels;i++) - v->pcmret[i]=v->pcm[i]+v->pcm_current; - - return(v->pcmret); -} - -static void _preextrapolate_helper(vorbis_dsp_state *v){ - int i; - int order=32; - float *lpc=alloca(order*sizeof(*lpc)); - float *work=alloca(v->pcm_current*sizeof(*work)); - long j; - v->preextrapolate=1; - - if(v->pcm_current-v->centerW>order*2){ /* safety */ - for(i=0;i<v->vi->channels;i++){ - /* need to run the extrapolation in reverse! */ - for(j=0;j<v->pcm_current;j++) - work[j]=v->pcm[i][v->pcm_current-j-1]; - - /* prime as above */ - vorbis_lpc_from_data(work,lpc,v->pcm_current-v->centerW,order); - - /* run the predictor filter */ - vorbis_lpc_predict(lpc,work+v->pcm_current-v->centerW-order, - order, - work+v->pcm_current-v->centerW, - v->centerW); - - for(j=0;j<v->pcm_current;j++) - v->pcm[i][v->pcm_current-j-1]=work[j]; - - } - } -} - - -/* call with val<=0 to set eof */ - -int vorbis_analysis_wrote(vorbis_dsp_state *v, int vals){ - vorbis_info *vi=v->vi; - codec_setup_info *ci=vi->codec_setup; - /*backend_lookup_state *b=v->backend_state;*/ - - if(vals<=0){ - int order=32; - int i; - float *lpc=alloca(order*sizeof(*lpc)); - - /* if it wasn't done earlier (very short sample) */ - if(!v->preextrapolate) - _preextrapolate_helper(v); - - /* We're encoding the end of the stream. Just make sure we have - [at least] a full block of zeroes at the end. */ - /* actually, we don't want zeroes; that could drop a large - amplitude off a cliff, creating spread spectrum noise that will - suck to encode. Extrapolate for the sake of cleanliness. */ - - vorbis_analysis_buffer(v,ci->blocksizes[1]*2); - v->eofflag=v->pcm_current; - v->pcm_current+=ci->blocksizes[1]*2; - - for(i=0;i<vi->channels;i++){ - if(v->eofflag>order*2){ - /* extrapolate with LPC to fill in */ - long n; - - /* make a predictor filter */ - n=v->eofflag; - if(n>ci->blocksizes[1])n=ci->blocksizes[1]; - vorbis_lpc_from_data(v->pcm[i]+v->eofflag-n,lpc,n,order); - - /* run the predictor filter */ - vorbis_lpc_predict(lpc,v->pcm[i]+v->eofflag-order,order, - v->pcm[i]+v->eofflag,v->pcm_current-v->eofflag); - }else{ - /* not enough data to extrapolate (unlikely to happen due to - guarding the overlap, but bulletproof in case that - assumtion goes away). zeroes will do. */ - memset(v->pcm[i]+v->eofflag,0, - (v->pcm_current-v->eofflag)*sizeof(*v->pcm[i])); - - } - } - }else{ - - if(v->pcm_current+vals>v->pcm_storage) - return(OV_EINVAL); - - v->pcm_current+=vals; - - /* we may want to reverse extrapolate the beginning of a stream - too... in case we're beginning on a cliff! */ - /* clumsy, but simple. It only runs once, so simple is good. */ - if(!v->preextrapolate && v->pcm_current-v->centerW>ci->blocksizes[1]) - _preextrapolate_helper(v); - - } - return(0); -} - -/* do the deltas, envelope shaping, pre-echo and determine the size of - the next block on which to continue analysis */ -int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb){ - int i; - vorbis_info *vi=v->vi; - codec_setup_info *ci=vi->codec_setup; - backend_lookup_state *b=v->backend_state; - vorbis_look_psy_global *g=b->psy_g_look; - vorbis_info_psy_global *gi=&ci->psy_g_param; - long beginW=v->centerW-ci->blocksizes[v->W]/2,centerNext; - vorbis_block_internal *vbi=(vorbis_block_internal *)vb->internal; - - /* check to see if we're started... */ - if(!v->preextrapolate)return(0); - - /* check to see if we're done... */ - if(v->eofflag==-1)return(0); - - /* By our invariant, we have lW, W and centerW set. Search for - the next boundary so we can determine nW (the next window size) - which lets us compute the shape of the current block's window */ - - if(ci->blocksizes[0]<ci->blocksizes[1]){ - long bp=_ve_envelope_search(v); - if(bp==-1)return(0); /* not enough data currently to search for a - full long block */ - v->nW=bp; - - }else - v->nW=0; - - centerNext=v->centerW+ci->blocksizes[v->W]/4+ci->blocksizes[v->nW]/4; - - { - /* center of next block + next block maximum right side. */ - - long blockbound=centerNext+ci->blocksizes[v->nW]/2; - if(v->pcm_current<blockbound)return(0); /* not enough data yet; - although this check is - less strict that the - _ve_envelope_search, - the search is not run - if we only use one - block size */ - - - } - - /* fill in the block. Note that for a short window, lW and nW are *short* - regardless of actual settings in the stream */ - - _vorbis_block_ripcord(vb); - if(v->W){ - vb->lW=v->lW; - vb->W=v->W; - vb->nW=v->nW; - }else{ - vb->lW=0; - vb->W=v->W; - vb->nW=0; - } - - if(v->W){ - if(!v->lW || !v->nW) - vbi->blocktype=BLOCKTYPE_TRANSITION; - else - vbi->blocktype=BLOCKTYPE_LONG; - }else{ - if(_ve_envelope_mark(v)) - vbi->blocktype=BLOCKTYPE_IMPULSE; - else - vbi->blocktype=BLOCKTYPE_PADDING; - } - - vb->vd=v; - vb->sequence=v->sequence++; - vb->granulepos=v->granulepos; - vb->pcmend=ci->blocksizes[v->W]; - - /* copy the vectors; this uses the local storage in vb */ - - /* this tracks 'strongest peak' for later psychoacoustics */ - /* moved to the global psy state; clean this mess up */ - if(vbi->ampmax>g->ampmax)g->ampmax=vbi->ampmax; - g->ampmax=_vp_ampmax_decay(g->ampmax,v); - vbi->ampmax=g->ampmax; - - vb->pcm=_vorbis_block_alloc(vb,sizeof(*vb->pcm)*vi->channels); - vbi->pcmdelay=_vorbis_block_alloc(vb,sizeof(*vbi->pcmdelay)*vi->channels); - for(i=0;i<vi->channels;i++){ - vbi->pcmdelay[i]= - _vorbis_block_alloc(vb,(vb->pcmend+beginW)*sizeof(*vbi->pcmdelay[i])); - memcpy(vbi->pcmdelay[i],v->pcm[i],(vb->pcmend+beginW)*sizeof(*vbi->pcmdelay[i])); - vb->pcm[i]=vbi->pcmdelay[i]+beginW; - - /* before we added the delay - vb->pcm[i]=_vorbis_block_alloc(vb,vb->pcmend*sizeof(*vb->pcm[i])); - memcpy(vb->pcm[i],v->pcm[i]+beginW,ci->blocksizes[v->W]*sizeof(*vb->pcm[i])); - */ - - } - - /* handle eof detection: eof==0 means that we've not yet received EOF - eof>0 marks the last 'real' sample in pcm[] - eof<0 'no more to do'; doesn't get here */ - - if(v->eofflag){ - if(v->centerW>=v->eofflag){ - v->eofflag=-1; - vb->eofflag=1; - return(1); - } - } - - /* advance storage vectors and clean up */ - { - int new_centerNext=ci->blocksizes[1]/2+gi->delaycache; - int movementW=centerNext-new_centerNext; - - if(movementW>0){ - - _ve_envelope_shift(b->ve,movementW); - v->pcm_current-=movementW; - - for(i=0;i<vi->channels;i++) - memmove(v->pcm[i],v->pcm[i]+movementW, - v->pcm_current*sizeof(*v->pcm[i])); - - - v->lW=v->W; - v->W=v->nW; - v->centerW=new_centerNext; - - if(v->eofflag){ - v->eofflag-=movementW; - /* do not add padding to end of stream! */ - if(v->centerW>=v->eofflag){ - v->granulepos+=movementW-(v->centerW-v->eofflag); - }else{ - v->granulepos+=movementW; - } - }else{ - v->granulepos+=movementW; - } - } - } - - /* done */ - return(1); -} - -int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi){ - _vds_shared_init(v,vi,0); - - v->pcm_returned=-1; - v->granulepos=-1; - v->sequence=-1; - - return(0); -} - -/* Unlike in analysis, the window is only partially applied for each - block. The time domain envelope is not yet handled at the point of - calling (as it relies on the previous block). */ - -int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){ - vorbis_info *vi=v->vi; - codec_setup_info *ci=vi->codec_setup; - int i,j; - - if(v->pcm_current>v->pcm_returned && v->pcm_returned!=-1)return(OV_EINVAL); - - v->lW=v->W; - v->W=vb->W; - v->nW=-1; - - v->glue_bits+=vb->glue_bits; - v->time_bits+=vb->time_bits; - v->floor_bits+=vb->floor_bits; - v->res_bits+=vb->res_bits; - - if(v->sequence+1 != vb->sequence)v->granulepos=-1; /* out of sequence; - lose count */ - - v->sequence=vb->sequence; - - { - int n=ci->blocksizes[v->W]/2; - int n0=ci->blocksizes[0]/2; - int n1=ci->blocksizes[1]/2; - - int thisCenter; - int prevCenter; - - if(v->centerW){ - thisCenter=n1; - prevCenter=0; - }else{ - thisCenter=0; - prevCenter=n1; - } - - /* v->pcm is now used like a two-stage double buffer. We don't want - to have to constantly shift *or* adjust memory usage. Don't - accept a new block until the old is shifted out */ - - /* overlap/add PCM */ - - for(j=0;j<vi->channels;j++){ - /* the overlap/add section */ - if(v->lW){ - if(v->W){ - /* large/large */ - float *pcm=v->pcm[j]+prevCenter; - float *p=vb->pcm[j]; - for(i=0;i<n1;i++) - pcm[i]+=p[i]; - }else{ - /* large/small */ - float *pcm=v->pcm[j]+prevCenter+n1/2-n0/2; - float *p=vb->pcm[j]; - for(i=0;i<n0;i++) - pcm[i]+=p[i]; - } - }else{ - if(v->W){ - /* small/large */ - float *pcm=v->pcm[j]+prevCenter; - float *p=vb->pcm[j]+n1/2-n0/2; - for(i=0;i<n0;i++) - pcm[i]+=p[i]; - for(;i<n1/2+n0/2;i++) - pcm[i]=p[i]; - }else{ - /* small/small */ - float *pcm=v->pcm[j]+prevCenter; - float *p=vb->pcm[j]; - for(i=0;i<n0;i++) - pcm[i]+=p[i]; - } - } - - /* the copy section */ - { - float *pcm=v->pcm[j]+thisCenter; - float *p=vb->pcm[j]+n; - for(i=0;i<n;i++) - pcm[i]=p[i]; - } - } - - if(v->centerW) - v->centerW=0; - else - v->centerW=n1; - - /* deal with initial packet state; we do this using the explicit - pcm_returned==-1 flag otherwise we're sensitive to first block - being short or long */ - - if(v->pcm_returned==-1){ - v->pcm_returned=thisCenter; - v->pcm_current=thisCenter; - }else{ - v->pcm_returned=prevCenter; - v->pcm_current=prevCenter+ - ci->blocksizes[v->lW]/4+ - ci->blocksizes[v->W]/4; - } - - /* track the frame number... This is for convenience, but also - making sure our last packet doesn't end with added padding. If - the last packet is partial, the number of samples we'll have to - return will be past the vb->granulepos. - - This is not foolproof! It will be confused if we begin - decoding at the last page after a seek or hole. In that case, - we don't have a starting point to judge where the last frame - is. For this reason, vorbisfile will always try to make sure - it reads the last two marked pages in proper sequence */ - - if(v->granulepos==-1) - if(vb->granulepos==-1){ - v->granulepos=0; - }else{ - v->granulepos=vb->granulepos; - } - else{ - v->granulepos+=ci->blocksizes[v->lW]/4+ci->blocksizes[v->W]/4; - if(vb->granulepos!=-1 && v->granulepos!=vb->granulepos){ - - if(v->granulepos>vb->granulepos){ - long extra=v->granulepos-vb->granulepos; - - if(vb->eofflag){ - /* partial last frame. Strip the extra samples off */ - v->pcm_current-=extra; - }else if(vb->sequence == 1){ - /* ^^^ argh, this can be 1 from seeking! */ - - - /* partial first frame. Discard extra leading samples */ - v->pcm_returned+=extra; - if(v->pcm_returned>v->pcm_current) - v->pcm_returned=v->pcm_current; - - } - - }/* else{ Shouldn't happen *unless* the bitstream is out of - spec. Either way, believe the bitstream } */ - v->granulepos=vb->granulepos; - } - } - - /* Update, cleanup */ - - if(vb->eofflag)v->eofflag=1; - } - - return(0); -} - -/* pcm==NULL indicates we just want the pending samples, no more */ -int vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm){ - vorbis_info *vi=v->vi; - if(v->pcm_returned>-1 && v->pcm_returned<v->pcm_current){ - if(pcm){ - int i; - for(i=0;i<vi->channels;i++) - v->pcmret[i]=v->pcm[i]+v->pcm_returned; - *pcm=v->pcmret; - } - return(v->pcm_current-v->pcm_returned); - } - return(0); -} - -int vorbis_synthesis_read(vorbis_dsp_state *v,int bytes){ - if(bytes && v->pcm_returned+bytes>v->pcm_current)return(OV_EINVAL); - v->pcm_returned+=bytes; - return(0); -} - diff --git a/lib/books/.cvsignore b/lib/books/.cvsignore deleted file mode 100644 index 282522db..00000000 --- a/lib/books/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/lib/books/Makefile.am b/lib/books/Makefile.am deleted file mode 100644 index 498ec3d3..00000000 --- a/lib/books/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -## Process this file with automake to produce Makefile.in - -AUTOMAKE_OPTIONS = foreign -SUBDIRS = coupled uncoupled floor diff --git a/lib/books/coupled/.cvsignore b/lib/books/coupled/.cvsignore deleted file mode 100644 index 282522db..00000000 --- a/lib/books/coupled/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/lib/books/coupled/Makefile.am b/lib/books/coupled/Makefile.am deleted file mode 100644 index e67b0c6f..00000000 --- a/lib/books/coupled/Makefile.am +++ /dev/null @@ -1,106 +0,0 @@ -## Process this file with automake to produce Makefile.in - -AUTOMAKE_OPTIONS = foreign - -EXTRA_DIST = _44c0_long.vqh _44c0_s0_p0_r0.vqh _44c0_s0_p0_r1.vqh \ - _44c0_s0_p1_0.vqh _44c0_s0_p2_0.vqh _44c0_s0_p3_0.vqh\ - _44c0_s0_p4_0.vqh _44c0_s0_p4_1.vqh _44c0_s0_p5_0.vqh\ - _44c0_s0_p6_0.vqh _44c0_s0_p7_0.vqh _44c0_s0_p7_1.vqh\ - _44c0_s0_p7_2.vqh _44c0_s0_pN_r0.vqh _44c0_s0_pN_r1.vqh\ - _44c0_s1_p5_0.vqh _44c0_s1_p5_s0.vqh _44c0_s1_p6_0.vqh\ - _44c0_s1_p6_s0.vqh _44c0_s1_p7_0.vqh _44c0_s1_p7_1.vqh _44c0_s1_p7_2.vqh\ - _44c0_s1_p7_s0.vqh _44c0_s1_pS_r0.vqh _44c0_s1_pS_r1.vqh\ - _44c0_s2_p6_0.vqh _44c0_s2_p6_s0.vqh _44c0_s2_p7_0.vqh\ - _44c0_s2_p7_1.vqh _44c0_s2_p7_2.vqh _44c0_s2_p7_s0.vqh _44c0_s3_p7_0.vqh\ - _44c0_s3_p7_1.vqh _44c0_s3_p7_2.vqh _44c0_s3_p7_s0.vqh\ - _44c0_s4_p7_0.vqh _44c0_s4_p7_1.vqh _44c0_s4_p7_2.vqh _44c0_short.vqh\ - _44c1_long.vqh _44c1_s0_p1_0.vqh _44c1_s0_p2_0.vqh\ - _44c1_s0_p3_0.vqh _44c1_s0_p4_0.vqh _44c1_s0_p4_1.vqh\ - _44c1_s0_p5_0.vqh _44c1_s0_p6_0.vqh _44c1_s0_p7_0.vqh\ - _44c1_s0_p7_1.vqh _44c1_s0_p7_2.vqh _44c1_s1_p5_0.vqh\ - _44c1_s1_p6_0.vqh _44c1_s1_p7_0.vqh _44c1_s1_p7_1.vqh\ - _44c1_s1_p7_2.vqh _44c1_s2_p6_0.vqh _44c1_s2_p7_0.vqh\ - _44c1_s2_p7_1.vqh _44c1_s2_p7_2.vqh _44c1_s3_p7_0.vqh\ - _44c1_s3_p7_1.vqh _44c1_s3_p7_2.vqh _44c1_short.vqh\ - _44c2_long.vqh _44c2_s0_p1_0.vqh _44c2_s0_p2_0.vqh\ - _44c2_s0_p3_0.vqh _44c2_s0_p4_0.vqh _44c2_s0_p4_1.vqh\ - _44c2_s0_p5_0.vqh _44c2_s0_p6_0.vqh _44c2_s0_p7_0.vqh\ - _44c2_s0_p7_1.vqh _44c2_s0_p7_2.vqh _44c2_s1_p5_0.vqh\ - _44c2_s1_p6_0.vqh _44c2_s1_p7_0.vqh _44c2_s1_p7_1.vqh\ - _44c2_s1_p7_2.vqh _44c2_s2_p6_0.vqh _44c2_s2_p7_0.vqh\ - _44c2_s2_p7_1.vqh _44c2_s2_p7_2.vqh _44c2_s3_p7_0.vqh\ - _44c2_s3_p7_1.vqh _44c2_s3_p7_2.vqh _44c2_short.vqh\ - _44c3_long.vqh _44c3_s0_p1_0.vqh _44c3_s0_p2_0.vqh\ - _44c3_s0_p3_0.vqh _44c3_s0_p4_0.vqh _44c3_s0_p4_1.vqh\ - _44c3_s0_p5_0.vqh _44c3_s0_p6_0.vqh _44c3_s0_p7_0.vqh\ - _44c3_s0_p7_1.vqh _44c3_s0_p7_2.vqh _44c3_s1_p5_0.vqh\ - _44c3_s1_p6_0.vqh _44c3_s1_p7_0.vqh _44c3_s1_p7_1.vqh\ - _44c3_s1_p7_2.vqh _44c3_s2_p6_0.vqh _44c3_s2_p7_0.vqh\ - _44c3_s2_p7_1.vqh _44c3_s2_p7_2.vqh _44c3_s3_p7_0.vqh\ - _44c3_s3_p7_1.vqh _44c3_s3_p7_2.vqh _44c3_short.vqh\ - _44c4_long.vqd _44c4_long.vqh _44c4_s0_p0_r0.vqh\ - _44c4_s0_p0_r1.vqh _44c4_s0_p1_0.vqh _44c4_s0_p2_0.vqh\ - _44c4_s0_p3_0.vqh _44c4_s0_p4_0.vqh _44c4_s0_p5_0.vqh\ - _44c4_s0_p6_0.vqh _44c4_s0_p7_0.vqh _44c4_s0_p7_1.vqh\ - _44c4_s0_p8_0.vqh _44c4_s0_p8_1.vqh _44c4_s0_p9_0.vqh\ - _44c4_s0_p9_1.vqh _44c4_s0_p9_2.vqh _44c4_s0_pN_r0.vqh\ - _44c4_s0_pN_r1.vqh _44c4_s1_p2_0.vqh _44c4_s1_p2_s0.vqh\ - _44c4_s1_p4_0.vqh _44c4_s1_p4_s0.vqh _44c4_s1_p6_0.vqh\ - _44c4_s1_p6_s0.vqh _44c4_s1_p7_0.vqh _44c4_s1_p7_1.vqh\ - _44c4_s1_p7_s0.vqh _44c4_s1_p8_0.vqh _44c4_s1_p8_1.vqh\ - _44c4_s1_p8_s0.vqh _44c4_s1_p9_0.vqh _44c4_s1_p9_1.vqh\ - _44c4_s1_p9_2.vqh _44c4_s1_p9_s0.vqh _44c4_s1_pS_r0.vqh\ - _44c4_s1_pS_r1.vqh _44c4_s2_p6_0.vqh _44c4_s2_p6_s0.vqh\ - _44c4_s2_p7_0.vqh _44c4_s2_p7_1.vqh _44c4_s2_p7_s0.vqh\ - _44c4_s2_p8_0.vqh _44c4_s2_p8_1.vqh _44c4_s2_p8_s0.vqh\ - _44c4_s2_p9_0.vqh _44c4_s2_p9_1.vqh _44c4_s2_p9_2.vqh\ - _44c4_s2_p9_s0.vqh _44c4_s3_p7_0.vqh _44c4_s3_p7_1.vqh\ - _44c4_s3_p8_0.vqh _44c4_s3_p8_1.vqh _44c4_s3_p9_0.vqh\ - _44c4_s3_p9_1.vqh _44c4_s3_p9_2.vqh _44c4_s3_p9_s0.vqh\ - _44c4_short.vqd _44c4_short.vqh _44c5_long.vqh\ - _44c5_s0_p1_0.vqh _44c5_s0_p2_0.vqh _44c5_s0_p3_0.vqh\ - _44c5_s0_p4_0.vqh _44c5_s0_p5_0.vqh _44c5_s0_p6_0.vqh\ - _44c5_s0_p7_0.vqh _44c5_s0_p7_1.vqh _44c5_s0_p8_0.vqh\ - _44c5_s0_p8_1.vqh _44c5_s0_p9_0.vqh _44c5_s0_p9_1.vqh\ - _44c5_s0_p9_2.vqh _44c5_s1_p2_0.vqh _44c5_s1_p4_0.vqh\ - _44c5_s1_p6_0.vqh _44c5_s1_p7_0.vqh _44c5_s1_p7_1.vqh\ - _44c5_s1_p8_0.vqh _44c5_s1_p8_1.vqh _44c5_s1_p9_0.vqh\ - _44c5_s1_p9_1.vqh _44c5_s1_p9_2.vqh _44c5_s2_p6_0.vqh\ - _44c5_s2_p7_0.vqh _44c5_s2_p7_1.vqh _44c5_s2_p8_0.vqh\ - _44c5_s2_p8_1.vqh _44c5_s2_p9_0.vqh _44c5_s2_p9_1.vqh\ - _44c5_s2_p9_2.vqh _44c5_s3_p7_0.vqh _44c5_s3_p7_1.vqh\ - _44c5_s3_p8_0.vqh _44c5_s3_p8_1.vqh _44c5_s3_p9_0.vqh\ - _44c5_s3_p9_1.vqh _44c5_s3_p9_2.vqh _44c5_short.vqh\ - _44c6_long.vqh _44c6_s0_p1_0.vqh _44c6_s0_p2_0.vqh\ - _44c6_s0_p3_0.vqh _44c6_s0_p4_0.vqh _44c6_s0_p5_0.vqh\ - _44c6_s0_p6_0.vqh _44c6_s0_p7_0.vqh _44c6_s0_p7_1.vqh\ - _44c6_s0_p8_0.vqh _44c6_s0_p8_1.vqh _44c6_s0_p9_0.vqh\ - _44c6_s0_p9_1.vqh _44c6_s0_p9_2.vqh _44c6_s1_p2_0.vqh\ - _44c6_s1_p4_0.vqh _44c6_s1_p6_0.vqh _44c6_s1_p7_0.vqh\ - _44c6_s1_p7_1.vqh _44c6_s1_p8_0.vqh _44c6_s1_p8_1.vqh\ - _44c6_s1_p9_0.vqh _44c6_s1_p9_1.vqh _44c6_s1_p9_2.vqh\ - _44c6_s2_p6_0.vqh _44c6_s2_p7_0.vqh _44c6_s2_p7_1.vqh\ - _44c6_s2_p8_0.vqh _44c6_s2_p8_1.vqh _44c6_s2_p9_0.vqh\ - _44c6_s2_p9_1.vqh _44c6_s2_p9_2.vqh _44c6_s3_p7_0.vqh\ - _44c6_s3_p7_1.vqh _44c6_s3_p8_0.vqh _44c6_s3_p8_1.vqh\ - _44c6_s3_p9_0.vqh _44c6_s3_p9_1.vqh _44c6_s3_p9_2.vqh\ - _44c6_short.vqh _44c7_long.vqh _44c7_s0_p0_r0.vqh\ - _44c7_s0_p0_r1.vqh _44c7_s0_p1_0.vqh _44c7_s0_p1_1.vqh\ - _44c7_s0_p2_0.vqh _44c7_s0_p2_1.vqh _44c7_s0_p3_0.vqh\ - _44c7_s0_p4_0.vqh _44c7_s0_p5_0.vqh _44c7_s0_p6_0.vqh\ - _44c7_s0_p6_1.vqh _44c7_s0_p7_0.vqh _44c7_s0_p7_1.vqh\ - _44c7_s0_p8_0.vqh _44c7_s0_p8_1.vqh _44c7_s0_p9_0.vqh\ - _44c7_s0_p9_1.vqh _44c7_s0_p9_2.vqh _44c7_s0_pN_r0.vqh\ - _44c7_s0_pN_r1.vqh _44c7_short.vqh _44c8_long.vqh\ - _44c8_s0_p1_0.vqh _44c8_s0_p1_1.vqh _44c8_s0_p2_0.vqh\ - _44c8_s0_p2_1.vqh _44c8_s0_p3_0.vqh _44c8_s0_p4_0.vqh\ - _44c8_s0_p5_0.vqh _44c8_s0_p6_0.vqh _44c8_s0_p6_1.vqh\ - _44c8_s0_p7_0.vqh _44c8_s0_p7_1.vqh _44c8_s0_p8_0.vqh\ - _44c8_s0_p8_1.vqh _44c8_s0_p9_0.vqh _44c8_s0_p9_1.vqh\ - _44c8_s0_p9_2.vqh _44c8_short.vqh _44c9_long.vqh\ - _44c9_s0_p1_0.vqh _44c9_s0_p1_1.vqh _44c9_s0_p2_0.vqh\ - _44c9_s0_p2_1.vqh _44c9_s0_p3_0.vqh _44c9_s0_p4_0.vqh\ - _44c9_s0_p5_0.vqh _44c9_s0_p6_0.vqh _44c9_s0_p6_1.vqh\ - _44c9_s0_p7_0.vqh _44c9_s0_p7_1.vqh _44c9_s0_p8_0.vqh\ - _44c9_s0_p8_1.vqh _44c9_s0_p9_0.vqh _44c9_s0_p9_1.vqh\ - _44c9_s0_p9_2.vqh _44c9_short.vqh diff --git a/lib/books/coupled/_44c0_long.vqh b/lib/books/coupled/_44c0_long.vqh deleted file mode 100644 index 01f589ee..00000000 --- a/lib/books/coupled/_44c0_long.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c0_long_VQH_ -#define _V__44c0_long_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c0_long[] = { - 3, 8, 9,10,11, 4, 8,12, 7, 3, 5, 8,10, 5, 8,14, - 8, 4, 6, 7,10, 8,10,15, 8, 6, 6, 6, 8,11,12,15, - 9, 8, 7, 6, 4,13,15,13, 4,18,18,18,18, 2, 6,13, - 8,17,17,17,17, 6, 8,13,12,16,14,12,10,13,14,15, -}; - -static static_codebook _huff_book__44c0_long = { - 2, 64, - _huff_lengthlist__44c0_long, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s0_p0_r0.vqh b/lib/books/coupled/_44c0_s0_p0_r0.vqh deleted file mode 100644 index edfccec7..00000000 --- a/lib/books/coupled/_44c0_s0_p0_r0.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s0_p0_r0_VQH_ -#define _V__44c0_s0_p0_r0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s0_p0_r0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c0_s0_p0_r0[] = { - 1,10,10, 4, 5,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 3, 3, 9, 9, 9, 4, 4, -}; - -static float _vq_quantthresh__44c0_s0_p0_r0[] = { - -0.5, -0.16667, 0.16667, 0.5, -}; - -static long _vq_quantmap__44c0_s0_p0_r0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s0_p0_r0 = { - _vq_quantthresh__44c0_s0_p0_r0, - _vq_quantmap__44c0_s0_p0_r0, - 5, - 5 -}; - -static static_codebook _44c0_s0_p0_r0 = { - 2, 25, - _vq_lengthlist__44c0_s0_p0_r0, - 1, -537569963, 1607816533, 3, 0, - _vq_quantlist__44c0_s0_p0_r0, - NULL, - &_vq_auxt__44c0_s0_p0_r0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s0_p0_r1.vqh b/lib/books/coupled/_44c0_s0_p0_r1.vqh deleted file mode 100644 index bb7b8042..00000000 --- a/lib/books/coupled/_44c0_s0_p0_r1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s0_p0_r1_VQH_ -#define _V__44c0_s0_p0_r1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s0_p0_r1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c0_s0_p0_r1[] = { - 1, 4, 5, 8, 8, 5, 4, 4, 8, 8, 5, 4, 4, 7, 8, 6, - 7, 7, 7, 7,10, 9,10, 7, 7, -}; - -static float _vq_quantthresh__44c0_s0_p0_r1[] = { - -0.16667, -0.055556, 0.055556, 0.16667, -}; - -static long _vq_quantmap__44c0_s0_p0_r1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s0_p0_r1 = { - _vq_quantthresh__44c0_s0_p0_r1, - _vq_quantmap__44c0_s0_p0_r1, - 5, - 5 -}; - -static static_codebook _44c0_s0_p0_r1 = { - 2, 25, - _vq_lengthlist__44c0_s0_p0_r1, - 1, -541298233, 1604088263, 3, 0, - _vq_quantlist__44c0_s0_p0_r1, - NULL, - &_vq_auxt__44c0_s0_p0_r1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s0_p1_0.vqh b/lib/books/coupled/_44c0_s0_p1_0.vqh deleted file mode 100644 index 5035cac6..00000000 --- a/lib/books/coupled/_44c0_s0_p1_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s0_p1_0_VQH_ -#define _V__44c0_s0_p1_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s0_p1_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c0_s0_p1_0[] = { - 1, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, - 8, 9, 0, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0, 0, 9, - 9, 0, 0, 0, 9, 9, 0, 0, 0,12,12, 0, 0, 0, 0, 0, - 0, 0, 5, 7, 8, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, - 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 9, 9, 0, 0, 0, 8, 8, 0, 0, - 0, 8, 8, 0, 0, 0,11,10, 0, 0, 0, 0, 0, 0, 0, 5, - 9, 9, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 9, 9, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, - 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 5, 9, 9, 0, - 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,11,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9,12,12, 0, 0, 0,10,11, 0, 0, 0,10,11, 0, 0, 0, - 12,12, 0, 0, 0, 0, 0, 0, 0, 9,12,12, 0, 0, 0,11, - 11, 0, 0, 0,11,10, 0, 0, 0,12,12, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c0_s0_p1_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c0_s0_p1_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s0_p1_0 = { - _vq_quantthresh__44c0_s0_p1_0, - _vq_quantmap__44c0_s0_p1_0, - 5, - 5 -}; - -static static_codebook _44c0_s0_p1_0 = { - 4, 625, - _vq_lengthlist__44c0_s0_p1_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c0_s0_p1_0, - NULL, - &_vq_auxt__44c0_s0_p1_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s0_p2_0.vqh b/lib/books/coupled/_44c0_s0_p2_0.vqh deleted file mode 100644 index d2081ad0..00000000 --- a/lib/books/coupled/_44c0_s0_p2_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s0_p2_0_VQH_ -#define _V__44c0_s0_p2_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s0_p2_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c0_s0_p2_0[] = { - 1, 4, 4, 7, 6, 0, 0, 0, 0, 0, 4, 4, 7, 7, 0, 0, - 0, 0, 0, 4, 4, 7, 7, 0, 0, 0, 0, 0, 6, 6, 8, 8, - 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, - 8, 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, - 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c0_s0_p2_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c0_s0_p2_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s0_p2_0 = { - _vq_quantthresh__44c0_s0_p2_0, - _vq_quantmap__44c0_s0_p2_0, - 9, - 9 -}; - -static static_codebook _44c0_s0_p2_0 = { - 2, 81, - _vq_lengthlist__44c0_s0_p2_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c0_s0_p2_0, - NULL, - &_vq_auxt__44c0_s0_p2_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s0_p3_0.vqh b/lib/books/coupled/_44c0_s0_p3_0.vqh deleted file mode 100644 index 293da971..00000000 --- a/lib/books/coupled/_44c0_s0_p3_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s0_p3_0_VQH_ -#define _V__44c0_s0_p3_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s0_p3_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c0_s0_p3_0[] = { - 1, 4, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 5, 5, 7, 7, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 5, 7, 7, 7, 8, 9, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 6, 7, 7, 8, 8,10,10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 9,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 9,10,10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9,11,11, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,11, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, - 10,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11,11,12,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c0_s0_p3_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c0_s0_p3_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s0_p3_0 = { - _vq_quantthresh__44c0_s0_p3_0, - _vq_quantmap__44c0_s0_p3_0, - 17, - 17 -}; - -static static_codebook _44c0_s0_p3_0 = { - 2, 289, - _vq_lengthlist__44c0_s0_p3_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c0_s0_p3_0, - NULL, - &_vq_auxt__44c0_s0_p3_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s0_p4_0.vqh b/lib/books/coupled/_44c0_s0_p4_0.vqh deleted file mode 100644 index dadf05a7..00000000 --- a/lib/books/coupled/_44c0_s0_p4_0.vqh +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s0_p4_0_VQH_ -#define _V__44c0_s0_p4_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s0_p4_0[] = { - 7, - 6, - 8, - 5, - 9, - 4, - 10, - 3, - 11, - 2, - 12, - 1, - 13, - 0, - 14, -}; - -static long _vq_lengthlist__44c0_s0_p4_0[] = { - 1, 3, 3, 6, 6,10,10,13,14,19,19,19,19,19,19, 5, - 5, 5, 8, 8,11,11,14,14,19,19,19,19,19,19, 6, 5, - 5, 8, 8,11,11,14,15,19,19,19,19,19,19,19, 8, 8, - 10,10,12,13,15,15,19,19,19,19,19,19,19, 8, 8,10, - 10,13,13,14,15,19,19,19,19,19,19,19,11,12,10,11, - 13,14,16,16,19,19,19,19,19,19,19,13,12,11,10,13, - 14,16,16,19,19,19,19,19,19,19,19,19,13,13,14,14, - 18,17,19,19,19,19,19,19,19,19,19,13,13,14,14,18, - 18,19,19,19,19,19,19,19,19,19,16,18,13,15,16,17, - 19,19,19,19,19,19,19,19,19,19,17,14,12,17,15,19, - 19,19,19,19,19,19,19,19,19,19,13,16,16,17,19,19, - 19,19,19,19,19,19,19,19,19,17,12,17,15,19,19,19, - 19,19,19,19,19,19,19,19,15,19,13,18,19,19,19,19, - 19,19,19,19,19,19,19,19,16,19,15,19,19,19,19,19, - 19, -}; - -static float _vq_quantthresh__44c0_s0_p4_0[] = { - -45.5, -38.5, -31.5, -24.5, -17.5, -10.5, -3.5, 3.5, - 10.5, 17.5, 24.5, 31.5, 38.5, 45.5, -}; - -static long _vq_quantmap__44c0_s0_p4_0[] = { - 13, 11, 9, 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, 12, 14, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s0_p4_0 = { - _vq_quantthresh__44c0_s0_p4_0, - _vq_quantmap__44c0_s0_p4_0, - 15, - 15 -}; - -static static_codebook _44c0_s0_p4_0 = { - 2, 225, - _vq_lengthlist__44c0_s0_p4_0, - 1, -524779520, 1616642048, 4, 0, - _vq_quantlist__44c0_s0_p4_0, - NULL, - &_vq_auxt__44c0_s0_p4_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s0_p4_1.vqh b/lib/books/coupled/_44c0_s0_p4_1.vqh deleted file mode 100644 index 77a5bf51..00000000 --- a/lib/books/coupled/_44c0_s0_p4_1.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s0_p4_1_VQH_ -#define _V__44c0_s0_p4_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s0_p4_1[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c0_s0_p4_1[] = { - 2, 4, 4, 5, 5, 6, 6, 8, 5, 5, 6, 6, 6, 6, 8, 5, - 5, 6, 6, 6, 6, 8, 6, 6, 6, 6, 6, 6, 8, 8, 8, 6, - 6, 6, 6, 8, 8, 8, 7, 7, 7, 7, 8, 8, 8, 6, 6, 7, - 7, -}; - -static float _vq_quantthresh__44c0_s0_p4_1[] = { - -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, -}; - -static long _vq_quantmap__44c0_s0_p4_1[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s0_p4_1 = { - _vq_quantthresh__44c0_s0_p4_1, - _vq_quantmap__44c0_s0_p4_1, - 7, - 7 -}; - -static static_codebook _44c0_s0_p4_1 = { - 2, 49, - _vq_lengthlist__44c0_s0_p4_1, - 1, -533200896, 1611661312, 3, 0, - _vq_quantlist__44c0_s0_p4_1, - NULL, - &_vq_auxt__44c0_s0_p4_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s0_p5_0.vqh b/lib/books/coupled/_44c0_s0_p5_0.vqh deleted file mode 100644 index dd983e19..00000000 --- a/lib/books/coupled/_44c0_s0_p5_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s0_p5_0_VQH_ -#define _V__44c0_s0_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s0_p5_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c0_s0_p5_0[] = { - 1, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, - 8, 8, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 9, - 9, 0, 0, 0, 9, 9, 0, 0, 0,13,13, 0, 0, 0, 0, 0, - 0, 0, 6, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, - 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 9, 9, 0, 0, 0, 8, 8, 0, 0, - 0, 8, 8, 0, 0, 0,11,10, 0, 0, 0, 0, 0, 0, 0, 5, - 9, 9, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 9, 9, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, - 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, 9, 9, 0, - 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,13,13, 0, 0, 0,10,11, 0, 0, 0,10,11, 0, 0, 0, - 11,11, 0, 0, 0, 0, 0, 0, 0, 8,13,13, 0, 0, 0,11, - 10, 0, 0, 0,11,10, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c0_s0_p5_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c0_s0_p5_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s0_p5_0 = { - _vq_quantthresh__44c0_s0_p5_0, - _vq_quantmap__44c0_s0_p5_0, - 5, - 5 -}; - -static static_codebook _44c0_s0_p5_0 = { - 4, 625, - _vq_lengthlist__44c0_s0_p5_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c0_s0_p5_0, - NULL, - &_vq_auxt__44c0_s0_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s0_p6_0.vqh b/lib/books/coupled/_44c0_s0_p6_0.vqh deleted file mode 100644 index 09661c56..00000000 --- a/lib/books/coupled/_44c0_s0_p6_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s0_p6_0_VQH_ -#define _V__44c0_s0_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s0_p6_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c0_s0_p6_0[] = { - 1, 4, 4, 7, 7,10,10,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 7, 7,10,10,12,12, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 4, 7, 7,10,10,12,12, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 6, 7, 7,11,11,13,13, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 7,11,11,13,13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,11,11,14,14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,11,11,14,14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,11,12,12,14,14, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,14, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,13, - 15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13, - 13,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 14,15,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,16,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,16,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,16,16, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c0_s0_p6_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c0_s0_p6_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s0_p6_0 = { - _vq_quantthresh__44c0_s0_p6_0, - _vq_quantmap__44c0_s0_p6_0, - 17, - 17 -}; - -static static_codebook _44c0_s0_p6_0 = { - 2, 289, - _vq_lengthlist__44c0_s0_p6_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c0_s0_p6_0, - NULL, - &_vq_auxt__44c0_s0_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s0_p7_0.vqh b/lib/books/coupled/_44c0_s0_p7_0.vqh deleted file mode 100644 index f2f23eaa..00000000 --- a/lib/books/coupled/_44c0_s0_p7_0.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s0_p7_0_VQH_ -#define _V__44c0_s0_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s0_p7_0[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c0_s0_p7_0[] = { - 1, 3, 3,11,11,11,11, 3, 6, 7,11,11,11,11, 4, 8, - 7,11,11,11,11,11,11, 9,10,11,11,11,11,11,11,11, - 11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10, - 10, -}; - -static float _vq_quantthresh__44c0_s0_p7_0[] = { - -167.5, -100.5, -33.5, 33.5, 100.5, 167.5, -}; - -static long _vq_quantmap__44c0_s0_p7_0[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s0_p7_0 = { - _vq_quantthresh__44c0_s0_p7_0, - _vq_quantmap__44c0_s0_p7_0, - 7, - 7 -}; - -static static_codebook _44c0_s0_p7_0 = { - 2, 49, - _vq_lengthlist__44c0_s0_p7_0, - 1, -520544256, 1624293376, 3, 0, - _vq_quantlist__44c0_s0_p7_0, - NULL, - &_vq_auxt__44c0_s0_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s0_p7_1.vqh b/lib/books/coupled/_44c0_s0_p7_1.vqh deleted file mode 100644 index 362c30af..00000000 --- a/lib/books/coupled/_44c0_s0_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s0_p7_1_VQH_ -#define _V__44c0_s0_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s0_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c0_s0_p7_1[] = { - 1, 4, 4, 6, 6, 8, 8, 9, 9,10,10,11,11,12,11,12, - 12,10,10,10,10,11,10, 5, 5, 5, 7, 7, 9, 9,10,11, - 13,12,12,12,12,12,12,12,11,11,10,11,10,11,15, 6, - 5, 7, 7, 9, 9,11,11,11,11,12,11,13,11,12,12,10, - 10,10,10,10,10,15, 7, 7, 8, 8,10,10,11,12,15,14, - 14,14,15,14,14,15,11,11,11,11,12,11,14, 8, 7, 8, - 8,11,10,12,12,12,13,12,12,14,14,15,15,11,11,11, - 13,10,11,15,11,11, 8, 9,10,10,12,11,13,14,14,15, - 14,15,15,15,11,12,11,11,11,13,15,15,15, 9, 9,10, - 10,13,12,13,13,13,15,15,14,15,14,12,11,10,12,12, - 12,15,15,15,11, 9,11,11,11,11,13,15,15,15,15,15, - 13,15,11,12,12,11,15,12,15,14,15,10,11,10,11,12, - 12,13,12,15,15,14,15,15,13,11,12,11,12,13,12,15, - 15,15,14,14,12,10,13,12,12,14,15,13,15,14,15,15, - 11,11,11,12,12,13,15,15,15,15,14,11,12,13,12,12, - 13,15,14,15,14,15,14,10,12,10,12,13,13,15,15,15, - 15,15,13,14,13,12,13,13,14,13,15,15,13,15,12,11, - 10,11,12,13,15,15,15,15,15,15,13,13,12,15,14,14, - 15,15,13,15,15,10,11,11,11,12,15,15,15,15,15,15, - 15,14,14,15,14,13,14,14,15,14,15,14,13,11,11,11, - 12,12,15,15,15,15,15,15,15,13,15,13,13,15,15,15, - 15,15,15,11,13,12,12,12,13,15,15,15,15,15,15,15, - 14,13,15,15,14,13,15,15,15,14,12,11,15,11,13,12, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,14,15, - 14,12,12,11,13,12,13,15,15,14,15,15,15,15,15,15, - 15,15,15,14,15,15,15,15,13,10,14,11,13,14,15,15, - 15,15,15,15,15,15,15,13,15,15,15,14,15,15,14,12, - 12,12,12,13,13,15,15,15,14,15,14,15,15,15,15,15, - 15,15,15,15,14,15,12,13,13,13,13,12,15,15,15,15, - 15,15,15,15,15,15,15,15,14,15,14,15,14,13,12,12, - 13,15,13,15,15,15,15,15,15,15,15,15,14,15,15,15, - 13,15,13,14,13,13,13,13,14,15,15,15,15,15,14,15, - 15,15,15,14,15,15,14,14,15,15,15,12,13,12,12,14, - 14, -}; - -static float _vq_quantthresh__44c0_s0_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c0_s0_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s0_p7_1 = { - _vq_quantthresh__44c0_s0_p7_1, - _vq_quantmap__44c0_s0_p7_1, - 23, - 23 -}; - -static static_codebook _44c0_s0_p7_1 = { - 2, 529, - _vq_lengthlist__44c0_s0_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c0_s0_p7_1, - NULL, - &_vq_auxt__44c0_s0_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s0_p7_2.vqh b/lib/books/coupled/_44c0_s0_p7_2.vqh deleted file mode 100644 index 386c7a1e..00000000 --- a/lib/books/coupled/_44c0_s0_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s0_p7_2_VQH_ -#define _V__44c0_s0_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s0_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c0_s0_p7_2[] = { - 2, 5, 5, 7, 6, 6, 7, 6, 6, 5, 6, 6, 7, 7, 7, 7, - 7, 7, 5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, - 8, 8, 8, 8, 6, 7, 7, 8, 7, 7, 7, 7, 7, 6, 7, 7, - 7, 7, 7, 8, 7, 7, 7, 7, 8, 8, 8, 8, 7, 8, 8, 6, - 7, 7, 7, 7, 7, 7, 6, 7, 6, 7, 7, 8, 7, 7, 8, 7, - 7, -}; - -static float _vq_quantthresh__44c0_s0_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c0_s0_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s0_p7_2 = { - _vq_quantthresh__44c0_s0_p7_2, - _vq_quantmap__44c0_s0_p7_2, - 3, - 3 -}; - -static static_codebook _44c0_s0_p7_2 = { - 4, 81, - _vq_lengthlist__44c0_s0_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c0_s0_p7_2, - NULL, - &_vq_auxt__44c0_s0_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s0_pN_r0.vqh b/lib/books/coupled/_44c0_s0_pN_r0.vqh deleted file mode 100644 index 669195d2..00000000 --- a/lib/books/coupled/_44c0_s0_pN_r0.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s0_pN_r0_VQH_ -#define _V__44c0_s0_pN_r0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s0_pN_r0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c0_s0_pN_r0[] = { - 2, 3, 3,10,10, 5, 4, 4,10,10, 5, 4, 4, 9,10,10, - 4, 4,10, 8,10, 6, 5,10,10, -}; - -static float _vq_quantthresh__44c0_s0_pN_r0[] = { - -0.5, -0.16667, 0.16667, 0.5, -}; - -static long _vq_quantmap__44c0_s0_pN_r0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s0_pN_r0 = { - _vq_quantthresh__44c0_s0_pN_r0, - _vq_quantmap__44c0_s0_pN_r0, - 5, - 5 -}; - -static static_codebook _44c0_s0_pN_r0 = { - 2, 25, - _vq_lengthlist__44c0_s0_pN_r0, - 1, -537569963, 1607816533, 3, 0, - _vq_quantlist__44c0_s0_pN_r0, - NULL, - &_vq_auxt__44c0_s0_pN_r0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s0_pN_r1.vqh b/lib/books/coupled/_44c0_s0_pN_r1.vqh deleted file mode 100644 index 1fe45587..00000000 --- a/lib/books/coupled/_44c0_s0_pN_r1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s0_pN_r1_VQH_ -#define _V__44c0_s0_pN_r1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s0_pN_r1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c0_s0_pN_r1[] = { - 2, 3, 3,10,10, 4, 4, 4,10,10, 4, 4, 4,10, 9,10, - 5, 6,10,10, 9, 5, 5, 9, 9, -}; - -static float _vq_quantthresh__44c0_s0_pN_r1[] = { - -0.16667, -0.055556, 0.055556, 0.16667, -}; - -static long _vq_quantmap__44c0_s0_pN_r1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s0_pN_r1 = { - _vq_quantthresh__44c0_s0_pN_r1, - _vq_quantmap__44c0_s0_pN_r1, - 5, - 5 -}; - -static static_codebook _44c0_s0_pN_r1 = { - 2, 25, - _vq_lengthlist__44c0_s0_pN_r1, - 1, -541298233, 1604088263, 3, 0, - _vq_quantlist__44c0_s0_pN_r1, - NULL, - &_vq_auxt__44c0_s0_pN_r1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s1_p5_0.vqh b/lib/books/coupled/_44c0_s1_p5_0.vqh deleted file mode 100644 index 81a1731d..00000000 --- a/lib/books/coupled/_44c0_s1_p5_0.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s1_p5_0_VQH_ -#define _V__44c0_s1_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s1_p5_0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c0_s1_p5_0[] = { - 1, 3, 3, 0, 0, 0, 0, 0, 0, 3, 6, 6, 0, 0, 0, 0, - 0, 0, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c0_s1_p5_0[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c0_s1_p5_0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s1_p5_0 = { - _vq_quantthresh__44c0_s1_p5_0, - _vq_quantmap__44c0_s1_p5_0, - 3, - 3 -}; - -static static_codebook _44c0_s1_p5_0 = { - 4, 81, - _vq_lengthlist__44c0_s1_p5_0, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c0_s1_p5_0, - NULL, - &_vq_auxt__44c0_s1_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s1_p5_s0.vqh b/lib/books/coupled/_44c0_s1_p5_s0.vqh deleted file mode 100644 index af13a8fa..00000000 --- a/lib/books/coupled/_44c0_s1_p5_s0.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s1_p5_s0_VQH_ -#define _V__44c0_s1_p5_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s1_p5_s0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c0_s1_p5_s0[] = { - 1,10, 9,17,17, 3, 5, 4,16,16, 3, 4, 4,16,16, 6, - 13,12, 7, 8,16,12,12,16,16, -}; - -static float _vq_quantthresh__44c0_s1_p5_s0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c0_s1_p5_s0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s1_p5_s0 = { - _vq_quantthresh__44c0_s1_p5_s0, - _vq_quantmap__44c0_s1_p5_s0, - 5, - 5 -}; - -static static_codebook _44c0_s1_p5_s0 = { - 2, 25, - _vq_lengthlist__44c0_s1_p5_s0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c0_s1_p5_s0, - NULL, - &_vq_auxt__44c0_s1_p5_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s1_p6_0.vqh b/lib/books/coupled/_44c0_s1_p6_0.vqh deleted file mode 100644 index 6122e1db..00000000 --- a/lib/books/coupled/_44c0_s1_p6_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s1_p6_0_VQH_ -#define _V__44c0_s1_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s1_p6_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c0_s1_p6_0[] = { - 1, 3, 2, 4, 5, 8, 9,11,11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 9, 9,11,11, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 9, 9,11,11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,10,10,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,12,12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,12,13, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,12,12, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,13,13, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,13, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,11, - 13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, - 12,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 13,13,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,15,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,14,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c0_s1_p6_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c0_s1_p6_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s1_p6_0 = { - _vq_quantthresh__44c0_s1_p6_0, - _vq_quantmap__44c0_s1_p6_0, - 17, - 17 -}; - -static static_codebook _44c0_s1_p6_0 = { - 2, 289, - _vq_lengthlist__44c0_s1_p6_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c0_s1_p6_0, - NULL, - &_vq_auxt__44c0_s1_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s1_p6_s0.vqh b/lib/books/coupled/_44c0_s1_p6_s0.vqh deleted file mode 100644 index dea611a3..00000000 --- a/lib/books/coupled/_44c0_s1_p6_s0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s1_p6_s0_VQH_ -#define _V__44c0_s1_p6_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s1_p6_s0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c0_s1_p6_s0[] = { - 1,11,11,20,20,14,13,13,20, 3, 5, 5,13,20,20,20, - 14,14, 3, 5, 5,14,14,20,20,20,20, 5, 7, 7, 6, 6, - 20,20,20,20, 8, 7, 7,13,13,20,20,20,20, 8, 9, 8, - 20,20,20,20,20,20, 8, 8, 8,20,20,19,19,19,19, 9, - 19,19,19,19,19,19,10,10,19,19,19,19,19,19,19,19, - 19, -}; - -static float _vq_quantthresh__44c0_s1_p6_s0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c0_s1_p6_s0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s1_p6_s0 = { - _vq_quantthresh__44c0_s1_p6_s0, - _vq_quantmap__44c0_s1_p6_s0, - 9, - 9 -}; - -static static_codebook _44c0_s1_p6_s0 = { - 2, 81, - _vq_lengthlist__44c0_s1_p6_s0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c0_s1_p6_s0, - NULL, - &_vq_auxt__44c0_s1_p6_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s1_p7_0.vqh b/lib/books/coupled/_44c0_s1_p7_0.vqh deleted file mode 100644 index a11a3013..00000000 --- a/lib/books/coupled/_44c0_s1_p7_0.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s1_p7_0_VQH_ -#define _V__44c0_s1_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s1_p7_0[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c0_s1_p7_0[] = { - 1, 3, 3,11,11,11,11, 3, 6, 7,11,11,11,11, 4, 8, - 7,11,11,11,11,11,11, 9,10,11,11,11,11,11,11,11, - 11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10, - 10, -}; - -static float _vq_quantthresh__44c0_s1_p7_0[] = { - -167.5, -100.5, -33.5, 33.5, 100.5, 167.5, -}; - -static long _vq_quantmap__44c0_s1_p7_0[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s1_p7_0 = { - _vq_quantthresh__44c0_s1_p7_0, - _vq_quantmap__44c0_s1_p7_0, - 7, - 7 -}; - -static static_codebook _44c0_s1_p7_0 = { - 2, 49, - _vq_lengthlist__44c0_s1_p7_0, - 1, -520544256, 1624293376, 3, 0, - _vq_quantlist__44c0_s1_p7_0, - NULL, - &_vq_auxt__44c0_s1_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s1_p7_1.vqh b/lib/books/coupled/_44c0_s1_p7_1.vqh deleted file mode 100644 index e2c43232..00000000 --- a/lib/books/coupled/_44c0_s1_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s1_p7_1_VQH_ -#define _V__44c0_s1_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s1_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c0_s1_p7_1[] = { - 1, 4, 4, 6, 6, 8, 8, 9, 9,10, 9,11,11,11,11,12, - 11, 9, 9, 9,10,10,10, 6, 5, 6, 7, 7, 9, 9,10,10, - 12,11,12,12,12,12,12,12,10,11,10,11,10,11,15, 6, - 5, 7, 7, 9, 9,11,10,11,11,12,11,12,11,12,12,10, - 10,10,10,10, 9,15, 7, 7, 8, 8,10,10,11,12,15,13, - 13,13,15,13,13,14,11,11,11,11,12,11,13, 8, 7, 8, - 8,11,10,11,12,12,12,12,12,13,13,14,14,11,11,10, - 12,10,10,14,11,10, 8, 8,10, 9,12,11,12,13,13,14, - 13,14,14,14,11,11,11,11,10,13,14,14,14, 9, 9, 9, - 10,12,12,12,13,13,14,14,13,14,13,12,11,10,12,12, - 12,14,14,14,10, 9,11,10,11,10,12,14,14,14,14,14, - 13,14,11,12,12,11,14,12,14,13,14,10,10,10,11,12, - 12,13,12,14,14,13,14,14,13,11,11,11,12,13,12,14, - 14,14,13,13,11,10,12,12,12,13,14,13,14,13,14,14, - 11,11,11,12,12,12,14,14,14,14,13,11,12,12,12,12, - 13,14,13,14,13,14,13,10,12,10,11,13,13,14,14,14, - 14,14,13,13,13,12,12,13,13,13,14,14,13,14,12,11, - 10,10,12,12,14,14,14,14,14,14,13,12,12,14,13,13, - 14,14,13,14,14,10,11,11,11,12,14,14,14,14,14,14, - 14,13,13,14,13,13,13,13,14,13,14,13,13,11,11,10, - 11,12,14,14,14,14,14,14,14,13,14,12,13,14,14,14, - 14,14,14,11,13,12,12,12,12,14,14,14,14,14,14,14, - 13,13,14,14,13,13,14,14,14,13,12,11,14,11,13,12, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14, - 13,12,12,11,13,12,12,14,14,13,14,14,14,14,14,14, - 14,14,14,13,14,14,14,14,12,10,13,10,12,13,14,14, - 14,14,14,14,14,14,14,13,14,14,14,13,14,14,13,12, - 12,12,12,12,12,14,14,14,13,14,13,14,14,14,14,14, - 14,14,14,14,13,14,12,12,12,13,13,12,14,14,14,14, - 14,14,14,14,14,14,14,14,13,14,13,14,13,12,11,12, - 12,14,13,14,14,14,14,14,14,14,14,14,13,14,14,14, - 13,14,13,13,13,13,13,13,13,14,14,14,14,14,13,14, - 14,14,14,13,14,14,13,13,14,14,14,12,13,12,12,14, - 14, -}; - -static float _vq_quantthresh__44c0_s1_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c0_s1_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s1_p7_1 = { - _vq_quantthresh__44c0_s1_p7_1, - _vq_quantmap__44c0_s1_p7_1, - 23, - 23 -}; - -static static_codebook _44c0_s1_p7_1 = { - 2, 529, - _vq_lengthlist__44c0_s1_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c0_s1_p7_1, - NULL, - &_vq_auxt__44c0_s1_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s1_p7_2.vqh b/lib/books/coupled/_44c0_s1_p7_2.vqh deleted file mode 100644 index f5d1d2e2..00000000 --- a/lib/books/coupled/_44c0_s1_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s1_p7_2_VQH_ -#define _V__44c0_s1_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s1_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c0_s1_p7_2[] = { - 2, 5, 5, 7, 6, 7, 7, 6, 7, 5, 5, 5, 7, 7, 7, 7, - 7, 7, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, - 8, 7, 8, 8, 7, 7, 7, 8, 7, 7, 8, 7, 8, 7, 7, 7, - 8, 8, 7, 7, 7, 8, 7, 7, 7, 7, 8, 8, 7, 8, 8, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 7, 8, 8, - 7, -}; - -static float _vq_quantthresh__44c0_s1_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c0_s1_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s1_p7_2 = { - _vq_quantthresh__44c0_s1_p7_2, - _vq_quantmap__44c0_s1_p7_2, - 3, - 3 -}; - -static static_codebook _44c0_s1_p7_2 = { - 4, 81, - _vq_lengthlist__44c0_s1_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c0_s1_p7_2, - NULL, - &_vq_auxt__44c0_s1_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s1_p7_s0.vqh b/lib/books/coupled/_44c0_s1_p7_s0.vqh deleted file mode 100644 index 595c76b4..00000000 --- a/lib/books/coupled/_44c0_s1_p7_s0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s1_p7_s0_VQH_ -#define _V__44c0_s1_p7_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s1_p7_s0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c0_s1_p7_s0[] = { - 1,15,14,17,17,15,16,16,17, 3, 5, 5,15,17,17,17, - 16,15, 3, 5, 5,15,16,17,17,17,17, 5, 7, 7, 7, 7, - 17,17,17,17, 7, 7, 7,13,13,17,17,17,17, 7, 8, 8, - 17,17,17,17,17,17, 7, 8, 8,17,17,17,17,17,17, 8, - 16,16,16,16,16,16, 9,10,16,16,16,16,16,16,16,16, - 16, -}; - -static float _vq_quantthresh__44c0_s1_p7_s0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c0_s1_p7_s0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s1_p7_s0 = { - _vq_quantthresh__44c0_s1_p7_s0, - _vq_quantmap__44c0_s1_p7_s0, - 9, - 9 -}; - -static static_codebook _44c0_s1_p7_s0 = { - 2, 81, - _vq_lengthlist__44c0_s1_p7_s0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c0_s1_p7_s0, - NULL, - &_vq_auxt__44c0_s1_p7_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s1_pS_r0.vqh b/lib/books/coupled/_44c0_s1_pS_r0.vqh deleted file mode 100644 index f654250e..00000000 --- a/lib/books/coupled/_44c0_s1_pS_r0.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s1_pS_r0_VQH_ -#define _V__44c0_s1_pS_r0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s1_pS_r0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c0_s1_pS_r0[] = { - 1, 2, 3, 6, 6, 6, 6, 5, 5, -}; - -static float _vq_quantthresh__44c0_s1_pS_r0[] = { - -0.16667, 0.16667, -}; - -static long _vq_quantmap__44c0_s1_pS_r0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s1_pS_r0 = { - _vq_quantthresh__44c0_s1_pS_r0, - _vq_quantmap__44c0_s1_pS_r0, - 3, - 3 -}; - -static static_codebook _44c0_s1_pS_r0 = { - 2, 9, - _vq_lengthlist__44c0_s1_pS_r0, - 1, -539667115, 1607816533, 2, 0, - _vq_quantlist__44c0_s1_pS_r0, - NULL, - &_vq_auxt__44c0_s1_pS_r0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s1_pS_r1.vqh b/lib/books/coupled/_44c0_s1_pS_r1.vqh deleted file mode 100644 index 0f7ab193..00000000 --- a/lib/books/coupled/_44c0_s1_pS_r1.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s1_pS_r1_VQH_ -#define _V__44c0_s1_pS_r1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s1_pS_r1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c0_s1_pS_r1[] = { - 1, 3, 2, 6, 6, 6, 6, 5, 5, -}; - -static float _vq_quantthresh__44c0_s1_pS_r1[] = { - -0.055556, 0.055556, -}; - -static long _vq_quantmap__44c0_s1_pS_r1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s1_pS_r1 = { - _vq_quantthresh__44c0_s1_pS_r1, - _vq_quantmap__44c0_s1_pS_r1, - 3, - 3 -}; - -static static_codebook _44c0_s1_pS_r1 = { - 2, 9, - _vq_lengthlist__44c0_s1_pS_r1, - 1, -543395385, 1604088263, 2, 0, - _vq_quantlist__44c0_s1_pS_r1, - NULL, - &_vq_auxt__44c0_s1_pS_r1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s2_p6_0.vqh b/lib/books/coupled/_44c0_s2_p6_0.vqh deleted file mode 100644 index 53bcfe52..00000000 --- a/lib/books/coupled/_44c0_s2_p6_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s2_p6_0_VQH_ -#define _V__44c0_s2_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s2_p6_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c0_s2_p6_0[] = { - 1, 3, 2, 4, 5, 6, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c0_s2_p6_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c0_s2_p6_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s2_p6_0 = { - _vq_quantthresh__44c0_s2_p6_0, - _vq_quantmap__44c0_s2_p6_0, - 9, - 9 -}; - -static static_codebook _44c0_s2_p6_0 = { - 2, 81, - _vq_lengthlist__44c0_s2_p6_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c0_s2_p6_0, - NULL, - &_vq_auxt__44c0_s2_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s2_p6_s0.vqh b/lib/books/coupled/_44c0_s2_p6_s0.vqh deleted file mode 100644 index af3b1a96..00000000 --- a/lib/books/coupled/_44c0_s2_p6_s0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s2_p6_s0_VQH_ -#define _V__44c0_s2_p6_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s2_p6_s0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c0_s2_p6_s0[] = { - 1,19,19,18,18,18,18,18,18,18,18,18,18,18,18,18, - 18, 5, 5, 5,18,18,18,18,18,18,18,18,18,18,18,18, - 18,18, 5, 5, 5,18,18,18,18,18,18,18,18,18,18,18, - 18,18,18, 7, 5, 5, 9, 9,18,18,18,18,18,18,18,18, - 18,18,18,18, 7, 5, 5, 9, 9,18,18,18,18,18,18,18, - 18,18,18,18,18, 8, 6, 6, 8, 9,12,13,18,18,18,18, - 18,18,18,18,18,18, 8, 6, 6, 9, 9,12,13,18,18,18, - 18,18,18,18,18,18,18, 8, 7, 7,10,10,13,13,17,17, - 18,18,18,18,18,18,18,18, 8, 7, 7,10, 9,13,13,16, - 16,18,18,18,18,18,18,18,18, 8, 8, 8,11,11,14,14, - 18,18,18,18,18,18,18,18,18,18, 8, 8, 8,11,11,15, - 14,18,18,18,18,18,18,18,18,18,18, 9,10,10,13,14, - 18,18,18,18,18,18,10,10,18,18,18,18,12,10,10,13, - 13,18,18,18,18,18,18,18,18,18,18,18,18,11,11,11, - 18,18,18,18,18,18,18,18,18,18,18,18,18,18,11,11, - 11,18,18,18,18,18,18,18,18,18,18,18,18,18,18,11, - 18,18,18,18,18,18,18,18,18,18,18,18,18,18,12,12, - 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, - 18, -}; - -static float _vq_quantthresh__44c0_s2_p6_s0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c0_s2_p6_s0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s2_p6_s0 = { - _vq_quantthresh__44c0_s2_p6_s0, - _vq_quantmap__44c0_s2_p6_s0, - 17, - 17 -}; - -static static_codebook _44c0_s2_p6_s0 = { - 2, 289, - _vq_lengthlist__44c0_s2_p6_s0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c0_s2_p6_s0, - NULL, - &_vq_auxt__44c0_s2_p6_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s2_p7_0.vqh b/lib/books/coupled/_44c0_s2_p7_0.vqh deleted file mode 100644 index 853f55ea..00000000 --- a/lib/books/coupled/_44c0_s2_p7_0.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s2_p7_0_VQH_ -#define _V__44c0_s2_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s2_p7_0[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c0_s2_p7_0[] = { - 1, 3, 3,11,11,11,11, 3, 6, 7,11,11,11,11, 4, 8, - 7,11,11,11,11,11,11, 9,10,11,11,11,11,11,11,11, - 11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10, - 10, -}; - -static float _vq_quantthresh__44c0_s2_p7_0[] = { - -167.5, -100.5, -33.5, 33.5, 100.5, 167.5, -}; - -static long _vq_quantmap__44c0_s2_p7_0[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s2_p7_0 = { - _vq_quantthresh__44c0_s2_p7_0, - _vq_quantmap__44c0_s2_p7_0, - 7, - 7 -}; - -static static_codebook _44c0_s2_p7_0 = { - 2, 49, - _vq_lengthlist__44c0_s2_p7_0, - 1, -520544256, 1624293376, 3, 0, - _vq_quantlist__44c0_s2_p7_0, - NULL, - &_vq_auxt__44c0_s2_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s2_p7_1.vqh b/lib/books/coupled/_44c0_s2_p7_1.vqh deleted file mode 100644 index e3bf6a1b..00000000 --- a/lib/books/coupled/_44c0_s2_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s2_p7_1_VQH_ -#define _V__44c0_s2_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s2_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c0_s2_p7_1[] = { - 1, 4, 4, 6, 6, 8, 8, 9, 9,10, 9,11,10,11,11,12, - 11, 9, 9, 9,10,10,10, 6, 5, 6, 7, 7, 9, 9,10,10, - 12,11,12,12,12,12,12,12,10,11,10,11,10,11,15, 6, - 5, 7, 7, 9, 9,11,10,11,11,12,11,12,11,12,12,10, - 10,10, 9,10, 9,15, 7, 8, 8, 8,10,10,11,12,15,13, - 13,13,15,13,13,14,11,11,11,11,12,11,13, 8, 7, 8, - 8,11,10,11,12,12,12,12,12,13,13,14,14,11,11,10, - 12,10,10,14,12,11, 8, 8,10, 9,12,11,12,13,13,14, - 13,14,14,14,11,11,11,11,10,13,14,14,14, 8, 9, 9, - 10,12,12,12,13,13,14,14,13,14,13,12,11,10,12,12, - 12,14,14,14,10, 9,11,10,11,10,12,14,14,14,14,14, - 13,14,11,12,12,11,14,12,14,13,14,10,10,10,11,12, - 12,13,12,14,14,13,14,14,13,11,11,11,12,13,12,14, - 14,14,13,13,11,10,12,12,12,13,14,13,14,13,14,14, - 11,11,11,12,12,12,14,14,14,14,13,11,12,12,12,12, - 13,14,13,14,13,14,13,10,12,10,11,13,13,14,14,14, - 14,14,13,13,13,12,12,13,13,13,14,14,13,14,12,11, - 10,10,12,12,14,14,14,14,14,14,13,12,12,14,13,13, - 14,14,13,14,14,10,11,11,11,12,14,14,14,14,14,14, - 14,13,13,14,13,13,13,13,14,13,14,13,13,11,11,10, - 11,12,14,14,14,14,14,14,14,13,14,12,13,14,14,14, - 14,14,14,11,13,12,12,12,12,14,14,14,14,14,14,14, - 13,13,14,14,13,13,14,14,14,13,12,11,14,10,13,12, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14, - 13,12,12,11,13,11,12,14,14,13,14,14,14,14,14,14, - 14,14,14,13,14,14,14,14,12,10,13,10,12,13,14,14, - 14,14,14,14,14,14,14,13,14,14,14,13,14,14,13,12, - 12,11,12,12,12,14,14,14,13,14,13,14,14,14,14,14, - 14,14,14,14,13,14,12,12,12,13,13,11,14,14,14,14, - 14,14,14,14,14,14,14,14,13,14,13,14,13,12,11,12, - 12,14,13,14,14,14,14,14,14,14,14,14,13,14,14,14, - 13,14,13,13,13,13,13,13,13,14,14,14,14,14,13,14, - 14,14,14,13,14,14,13,13,14,14,14,12,13,12,12,14, - 14, -}; - -static float _vq_quantthresh__44c0_s2_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c0_s2_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s2_p7_1 = { - _vq_quantthresh__44c0_s2_p7_1, - _vq_quantmap__44c0_s2_p7_1, - 23, - 23 -}; - -static static_codebook _44c0_s2_p7_1 = { - 2, 529, - _vq_lengthlist__44c0_s2_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c0_s2_p7_1, - NULL, - &_vq_auxt__44c0_s2_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s2_p7_2.vqh b/lib/books/coupled/_44c0_s2_p7_2.vqh deleted file mode 100644 index 8e2c4baf..00000000 --- a/lib/books/coupled/_44c0_s2_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s2_p7_2_VQH_ -#define _V__44c0_s2_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s2_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c0_s2_p7_2[] = { - 2, 5, 4, 7, 6, 7, 7, 6, 7, 5, 5, 5, 7, 7, 7, 7, - 7, 7, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, - 8, 8, 8, 8, 7, 7, 7, 8, 8, 7, 8, 7, 8, 7, 7, 7, - 8, 8, 8, 8, 7, 8, 7, 7, 8, 8, 8, 8, 8, 8, 8, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 7, 8, 8, - 7, -}; - -static float _vq_quantthresh__44c0_s2_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c0_s2_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s2_p7_2 = { - _vq_quantthresh__44c0_s2_p7_2, - _vq_quantmap__44c0_s2_p7_2, - 3, - 3 -}; - -static static_codebook _44c0_s2_p7_2 = { - 4, 81, - _vq_lengthlist__44c0_s2_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c0_s2_p7_2, - NULL, - &_vq_auxt__44c0_s2_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s2_p7_s0.vqh b/lib/books/coupled/_44c0_s2_p7_s0.vqh deleted file mode 100644 index 10cdd19f..00000000 --- a/lib/books/coupled/_44c0_s2_p7_s0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s2_p7_s0_VQH_ -#define _V__44c0_s2_p7_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s2_p7_s0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c0_s2_p7_s0[] = { - 1,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15, 5, 6, 6,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15, 5, 6, 6,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15, 7, 5, 5,10,10,15,15,15,15,15,15,15,15, - 15,15,15,15, 7, 5, 6,10,10,15,15,15,15,15,15,15, - 15,15,15,15,15, 8, 6, 6, 8, 9,13,12,15,15,15,15, - 15,15,15,15,15,15, 8, 6, 6, 8, 8,12,11,15,15,15, - 15,15,15,15,15,15,15, 8, 6, 7, 9, 9,12,12,15,15, - 15,15,15,15,15,15,15,15, 8, 6, 6,10, 9,11,12,15, - 15,15,15,15,15,15,15,15,15, 7, 7, 7,10,10,14,12, - 15,15,15,15,15,15,15,15,15,15, 7, 7, 7,10,10,12, - 14,15,15,15,15,15,15,15,15,15,15, 7, 9, 9,12,12, - 15,15,15,15,15,15,10, 9,15,15,15,15,10, 9, 9,12, - 11,15,15,15,15,15,15,15,15,15,15,15,15, 9,10,10, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15, 9,10, - 10,15,15,15,15,15,15,15,15,15,15,15,15,15,15, 9, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,10,10, - 15,15,15,15,15,15,15,15,15,15,14,14,14,14,14,14, - 14, -}; - -static float _vq_quantthresh__44c0_s2_p7_s0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c0_s2_p7_s0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s2_p7_s0 = { - _vq_quantthresh__44c0_s2_p7_s0, - _vq_quantmap__44c0_s2_p7_s0, - 17, - 17 -}; - -static static_codebook _44c0_s2_p7_s0 = { - 2, 289, - _vq_lengthlist__44c0_s2_p7_s0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c0_s2_p7_s0, - NULL, - &_vq_auxt__44c0_s2_p7_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s3_p7_0.vqh b/lib/books/coupled/_44c0_s3_p7_0.vqh deleted file mode 100644 index 9af64fe6..00000000 --- a/lib/books/coupled/_44c0_s3_p7_0.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s3_p7_0_VQH_ -#define _V__44c0_s3_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s3_p7_0[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c0_s3_p7_0[] = { - 1, 3, 3,11,11,11,11, 3, 6, 7,11,11,11,11, 4, 8, - 7,11,11,11,11,11,11, 9,10,11,11,11,11,11,11,11, - 11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10, - 10, -}; - -static float _vq_quantthresh__44c0_s3_p7_0[] = { - -167.5, -100.5, -33.5, 33.5, 100.5, 167.5, -}; - -static long _vq_quantmap__44c0_s3_p7_0[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s3_p7_0 = { - _vq_quantthresh__44c0_s3_p7_0, - _vq_quantmap__44c0_s3_p7_0, - 7, - 7 -}; - -static static_codebook _44c0_s3_p7_0 = { - 2, 49, - _vq_lengthlist__44c0_s3_p7_0, - 1, -520544256, 1624293376, 3, 0, - _vq_quantlist__44c0_s3_p7_0, - NULL, - &_vq_auxt__44c0_s3_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s3_p7_1.vqh b/lib/books/coupled/_44c0_s3_p7_1.vqh deleted file mode 100644 index 63e8acd2..00000000 --- a/lib/books/coupled/_44c0_s3_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s3_p7_1_VQH_ -#define _V__44c0_s3_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s3_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c0_s3_p7_1[] = { - 1, 4, 4, 5, 5, 8, 8, 9, 9,10, 9,11,11,12,11,12, - 11, 9, 9, 9,10,11,10, 6, 5, 6, 8, 8, 9, 9,10,10, - 12,11,12,12,12,12,12,12,10,11,10,11,10,11,15, 6, - 5, 8, 8, 9, 9,11,10,11,11,12,11,12,11,12,12,10, - 10,10,10,10, 9,15, 7, 8, 8, 8,10,10,11,12,14,13, - 13,13,14,13,13,14,11,11,11,11,12,11,13, 8, 8, 8, - 8,11,10,11,12,12,12,12,12,13,13,14,14,11,11,10, - 12,10,10,14,12,11, 9, 9,10,10,12,11,12,13,13,14, - 13,14,14,14,11,11,11,11,10,13,14,14,14, 9, 9, 9, - 10,12,12,12,13,13,14,14,13,14,13,12,11,10,12,12, - 12,14,14,14,11, 9,11,10,11,10,12,14,14,14,14,14, - 13,14,11,12,12,11,14,12,14,13,14,10,11,10,11,12, - 12,13,12,14,14,13,14,14,13,11,11,11,12,13,12,14, - 14,14,14,13,12,10,12,12,12,13,14,13,14,13,14,14, - 11,11,11,12,12,12,14,14,14,14,13,11,12,12,12,12, - 13,14,13,14,13,14,13,10,12,10,11,13,13,14,14,14, - 14,14,13,13,13,12,12,13,13,13,14,14,13,14,12,11, - 10,10,12,12,14,14,14,14,14,14,13,12,12,14,13,13, - 14,14,13,14,14,10,11,11,11,12,14,14,14,14,14,14, - 14,13,13,14,13,13,13,13,14,13,14,13,13,11,11,10, - 11,12,14,14,14,14,14,14,14,13,14,12,13,14,14,14, - 14,14,14,11,13,12,12,12,12,14,14,14,14,14,14,14, - 13,13,14,14,13,13,14,14,14,13,12,11,14,11,13,12, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14, - 13,12,12,11,13,12,12,14,14,13,14,14,14,14,14,14, - 14,14,14,13,14,14,14,14,12,10,13,10,12,13,14,14, - 14,14,14,14,14,14,14,13,14,14,14,13,14,14,13,12, - 12,12,12,12,12,14,14,14,13,14,13,14,14,14,14,14, - 14,14,14,14,13,14,12,12,12,13,13,12,14,14,14,14, - 14,14,14,14,14,14,14,14,13,14,13,14,13,12,12,12, - 12,14,13,14,14,14,14,14,14,14,14,14,13,14,14,14, - 13,14,13,13,13,13,13,13,13,14,14,14,14,14,13,14, - 14,14,14,13,14,14,13,13,14,14,14,12,13,12,12,14, - 14, -}; - -static float _vq_quantthresh__44c0_s3_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c0_s3_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s3_p7_1 = { - _vq_quantthresh__44c0_s3_p7_1, - _vq_quantmap__44c0_s3_p7_1, - 23, - 23 -}; - -static static_codebook _44c0_s3_p7_1 = { - 2, 529, - _vq_lengthlist__44c0_s3_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c0_s3_p7_1, - NULL, - &_vq_auxt__44c0_s3_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s3_p7_2.vqh b/lib/books/coupled/_44c0_s3_p7_2.vqh deleted file mode 100644 index 728e229b..00000000 --- a/lib/books/coupled/_44c0_s3_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s3_p7_2_VQH_ -#define _V__44c0_s3_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s3_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c0_s3_p7_2[] = { - 2, 4, 4, 7, 6, 7, 8, 7, 7, 5, 5, 5, 8, 7, 7, 7, - 7, 7, 4, 5, 5, 7, 8, 7, 8, 7, 7, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 7, 7, 8, 8, 8, 8, 8, 7, 8, 7, 7, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, - 7, 7, 7, 8, 7, 7, 7, 8, 7, 7, 7, 8, 8, 8, 8, 8, - 7, -}; - -static float _vq_quantthresh__44c0_s3_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c0_s3_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s3_p7_2 = { - _vq_quantthresh__44c0_s3_p7_2, - _vq_quantmap__44c0_s3_p7_2, - 3, - 3 -}; - -static static_codebook _44c0_s3_p7_2 = { - 4, 81, - _vq_lengthlist__44c0_s3_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c0_s3_p7_2, - NULL, - &_vq_auxt__44c0_s3_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s3_p7_s0.vqh b/lib/books/coupled/_44c0_s3_p7_s0.vqh deleted file mode 100644 index b3e871e0..00000000 --- a/lib/books/coupled/_44c0_s3_p7_s0.vqh +++ /dev/null @@ -1,163 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s3_p7_s0_VQH_ -#define _V__44c0_s3_p7_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s3_p7_s0[] = { - 16, - 15, - 17, - 14, - 18, - 13, - 19, - 12, - 20, - 11, - 21, - 10, - 22, - 9, - 23, - 8, - 24, - 7, - 25, - 6, - 26, - 5, - 27, - 4, - 28, - 3, - 29, - 2, - 30, - 1, - 31, - 0, - 32, -}; - -static long _vq_lengthlist__44c0_s3_p7_s0[] = { - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 8, 6, 5,10,10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 5, 6,10, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 9, 7, 7, 7, 7,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 9, 7, 7, 8, 7,12,12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 9, 8, 8, 8, 7,10, 9,13,14, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 8, 8, 8, 7,10,10,13, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 8, 8, 8, 8,10,10, - 12,11,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 8, 8, 8, 8,10, - 10,11,11,14,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 9, 9, 8, 8, - 10,10,12,11,14,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11, 8, 8, 8, - 9,10,11,12,12,14,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11, 9, 8, - 9, 9,11,10,12,13, 0,13,15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11, 9, - 8, 9, 9,11,11,12,12,15, 0,15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, - 9, 8,10, 9,12,11,14,13, 0,15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 8, 8,10, 9,12,11,13,14,14,15, 0,15, 0,15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 9, 9, 9,10,10,12,12,14,13, 0,15, 0, 0, 0,15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 9, 9,11,11,12,12,13,14,15,15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,10,10,10,11,11,13,12,15,14,15,15,15, 0, - 0, 0, 0, 0, 0, 0,10,11, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,12,10,10,11,11,13,13,13, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,11,10,10,12,12, 0,15, 0, 0,15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,10,10,11,13,12,13, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,11,11,11,12,14,14,15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12, - 0, 0, 0, 0, 0, 0, 0, 0,13,12,12,13,12, 0,15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,12,11,12,13,13,15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,13,12,14,15, 0, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,14,14, 0, 0, 0, 0,14,13,13,15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,15,14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,15, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c0_s3_p7_s0[] = { - -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, - 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, -}; - -static long _vq_quantmap__44c0_s3_p7_s0[] = { - 31, 29, 27, 25, 23, 21, 19, 17, - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, 18, 20, 22, 24, 26, 28, 30, - 32, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s3_p7_s0 = { - _vq_quantthresh__44c0_s3_p7_s0, - _vq_quantmap__44c0_s3_p7_s0, - 33, - 33 -}; - -static static_codebook _44c0_s3_p7_s0 = { - 2, 1089, - _vq_lengthlist__44c0_s3_p7_s0, - 1, -527433728, 1611661312, 6, 0, - _vq_quantlist__44c0_s3_p7_s0, - NULL, - &_vq_auxt__44c0_s3_p7_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s4_p7_0.vqh b/lib/books/coupled/_44c0_s4_p7_0.vqh deleted file mode 100644 index ac6a105d..00000000 --- a/lib/books/coupled/_44c0_s4_p7_0.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s4_p7_0_VQH_ -#define _V__44c0_s4_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s4_p7_0[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c0_s4_p7_0[] = { - 1, 3, 3,11,11,11,11, 3, 5,10,11,11,11,11, 4, 8, - 8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, - 11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10, - 10, -}; - -static float _vq_quantthresh__44c0_s4_p7_0[] = { - -167.5, -100.5, -33.5, 33.5, 100.5, 167.5, -}; - -static long _vq_quantmap__44c0_s4_p7_0[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s4_p7_0 = { - _vq_quantthresh__44c0_s4_p7_0, - _vq_quantmap__44c0_s4_p7_0, - 7, - 7 -}; - -static static_codebook _44c0_s4_p7_0 = { - 2, 49, - _vq_lengthlist__44c0_s4_p7_0, - 1, -520544256, 1624293376, 3, 0, - _vq_quantlist__44c0_s4_p7_0, - NULL, - &_vq_auxt__44c0_s4_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s4_p7_1.vqh b/lib/books/coupled/_44c0_s4_p7_1.vqh deleted file mode 100644 index dd762c55..00000000 --- a/lib/books/coupled/_44c0_s4_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s4_p7_1_VQH_ -#define _V__44c0_s4_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s4_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c0_s4_p7_1[] = { - 1, 4, 4, 5, 5, 7, 7, 8, 8, 9, 8,10, 9,11,11,10, - 11, 9, 9, 9, 9, 9,10, 6, 6, 6, 8, 8, 9, 9,10,10, - 11,11,12,11,12,12,12,11,11, 9,10,10,11,10,14, 6, - 5, 8, 8, 9, 9,10,10,10,11,11,11,12,11,11,11,10, - 10, 9, 9,10,10,15, 8, 8, 9, 8,10,10,10,11,11,11, - 11,11,12,12,13,13,11,11,10,11,12,12,15,10, 8, 9, - 8,10,10,11,11,10,11,11,11,12,12,12,12,10,11,10, - 10,10,11,15,11,12,10, 9, 9,10,10,11,12,11,12,12, - 14,14,15,15,11,11,11,10,12,11,14,15,15,10, 8,10, - 10,11,11,11,12,12,12,13,12,13,13,11,11,10,11,11, - 11,15,15,15,12,10,10,10,11,11,12,12,12,14,14,15, - 13,13,11,11,11,10,12,12,14,15,14,11,12,11,11,11, - 12,12,11,13,12,12,13,14,15,11,10,10,11,11,11,15, - 15,15,13,13,11,10,11,11,11,12,14,15,14,14,13,13, - 11,11,12,11,13,13,14,15,15,15,15,12,13,12,12,12, - 12,13,13,14,13,14,13,11,12,11,10,11,11,15,15,15, - 15,15,13,13,13,14,13,13,15,14,15,15,13,14,12,12, - 13,12,12,13,15,15,15,15,15,13,13,15,13,13,14,14, - 13,15,13,15,13,12,13,12,11,12,11,15,15,15,15,15, - 14,13,15,14,15,13,13,15,13,14,15,15,13,12,12,12, - 13,12,15,15,15,15,15,15,15,13,14,15,13,14,13,14, - 13,13,14,11,12,11,12,11,12,15,15,15,15,15,15,15, - 14,15,13,14,13,12,14,15,15,13,13,14,13,12,13,13, - 15,15,15,15,15,15,15,15,14,13,13,14,13,13,13,14, - 14,11,13, 9,12,14,13,15,15,15,15,15,15,15,15,15, - 14,15,15,13,15,14,15,15,13,13,11,13,13,15,15,15, - 15,15,15,15,15,15,15,14,15,13,15,13,14,13,15, 9, - 13,12,13,14,13,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,13,13,13,13,15,13,15,15,15,15, - 15,15,15,15,15,15,15,14,14,13,14,15,15,12,13,14, - 13,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15, - 14,15,15,14,13,12,13,13,15,14,15,15,15,15,15,15, - 15,15,15,15,15,15,14,15,14,15,14,13,13,14,14,15, - 13, -}; - -static float _vq_quantthresh__44c0_s4_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c0_s4_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s4_p7_1 = { - _vq_quantthresh__44c0_s4_p7_1, - _vq_quantmap__44c0_s4_p7_1, - 23, - 23 -}; - -static static_codebook _44c0_s4_p7_1 = { - 2, 529, - _vq_lengthlist__44c0_s4_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c0_s4_p7_1, - NULL, - &_vq_auxt__44c0_s4_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_s4_p7_2.vqh b/lib/books/coupled/_44c0_s4_p7_2.vqh deleted file mode 100644 index 5aaff8db..00000000 --- a/lib/books/coupled/_44c0_s4_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c0_s4_p7_2_VQH_ -#define _V__44c0_s4_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c0_s4_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c0_s4_p7_2[] = { - 1, 5, 5, 8, 6, 7, 8, 7, 7, 5, 5, 6, 8, 8, 8, 8, - 8, 8, 5, 5, 6, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, - 9, 9, 9, 9, 7, 8, 8, 9, 8, 8, 9, 8, 8, 7, 8, 8, - 8, 8, 8, 9, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 7, - 8, 8, 9, 8, 8, 8, 8, 8, 7, 8, 8, 9, 8, 8, 9, 8, - 8, -}; - -static float _vq_quantthresh__44c0_s4_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c0_s4_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c0_s4_p7_2 = { - _vq_quantthresh__44c0_s4_p7_2, - _vq_quantmap__44c0_s4_p7_2, - 3, - 3 -}; - -static static_codebook _44c0_s4_p7_2 = { - 4, 81, - _vq_lengthlist__44c0_s4_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c0_s4_p7_2, - NULL, - &_vq_auxt__44c0_s4_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c0_short.vqh b/lib/books/coupled/_44c0_short.vqh deleted file mode 100644 index 9c179bf3..00000000 --- a/lib/books/coupled/_44c0_short.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c0_short_VQH_ -#define _V__44c0_short_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c0_short[] = { - 6,16,16,16,16, 5, 8,12,12,15,14,15,15, 5, 4, 9, - 10,14,15,15,15, 4, 5,10, 8,15,15,15,15, 6, 6,10, - 9, 5, 4, 4, 5, 8, 9,11, 5,15,15,15,15, 2, 4,11, - 7,15,15,15,15, 3, 5,10,12, 9, 8, 8, 9, 9,10,11, -}; - -static static_codebook _huff_book__44c0_short = { - 2, 64, - _huff_lengthlist__44c0_short, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_long.vqh b/lib/books/coupled/_44c1_long.vqh deleted file mode 100644 index 120ff57a..00000000 --- a/lib/books/coupled/_44c1_long.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c1_long_VQH_ -#define _V__44c1_long_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c1_long[] = { - 3, 9,10,10,10, 5, 8,11, 9, 4, 5, 7, 9, 6, 7,12, - 10, 5, 4, 6, 9, 7, 8,14, 9, 6, 5, 6, 8, 9,10,13, - 8, 7, 7, 6, 5,12,13, 9, 5,18,18,18,18, 2, 4,11, - 7,18,18,18,18, 4, 6,12,10,13,15,12, 7,11,11,11, -}; - -static static_codebook _huff_book__44c1_long = { - 2, 64, - _huff_lengthlist__44c1_long, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s0_p1_0.vqh b/lib/books/coupled/_44c1_s0_p1_0.vqh deleted file mode 100644 index ddcd690a..00000000 --- a/lib/books/coupled/_44c1_s0_p1_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s0_p1_0_VQH_ -#define _V__44c1_s0_p1_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s0_p1_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c1_s0_p1_0[] = { - 1, 5, 5, 0, 0, 0, 6, 5, 0, 0, 0, 6, 6, 0, 0, 0, - 8, 8, 0, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 9, - 8, 0, 0, 0, 8, 8, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 5, 7, 7, 0, 0, 0, 8, 9, 0, 0, 0, 8, 8, 0, - 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 8, 7, 0, 0, - 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, - 8, 9, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 9, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, - 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 6, 8, 9, 0, - 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,11,11, 0, 0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0, - 11,11, 0, 0, 0, 0, 0, 0, 0, 8,11,11, 0, 0, 0,10, - 10, 0, 0, 0,10,10, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c1_s0_p1_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c1_s0_p1_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s0_p1_0 = { - _vq_quantthresh__44c1_s0_p1_0, - _vq_quantmap__44c1_s0_p1_0, - 5, - 5 -}; - -static static_codebook _44c1_s0_p1_0 = { - 4, 625, - _vq_lengthlist__44c1_s0_p1_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c1_s0_p1_0, - NULL, - &_vq_auxt__44c1_s0_p1_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s0_p2_0.vqh b/lib/books/coupled/_44c1_s0_p2_0.vqh deleted file mode 100644 index ca591d60..00000000 --- a/lib/books/coupled/_44c1_s0_p2_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s0_p2_0_VQH_ -#define _V__44c1_s0_p2_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s0_p2_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c1_s0_p2_0[] = { - 1, 4, 4, 7, 7, 0, 0, 0, 0, 0, 4, 4, 7, 7, 0, 0, - 0, 0, 0, 4, 4, 7, 7, 0, 0, 0, 0, 0, 6, 6, 7, 7, - 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, - 8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, - 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c1_s0_p2_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c1_s0_p2_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s0_p2_0 = { - _vq_quantthresh__44c1_s0_p2_0, - _vq_quantmap__44c1_s0_p2_0, - 9, - 9 -}; - -static static_codebook _44c1_s0_p2_0 = { - 2, 81, - _vq_lengthlist__44c1_s0_p2_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c1_s0_p2_0, - NULL, - &_vq_auxt__44c1_s0_p2_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s0_p3_0.vqh b/lib/books/coupled/_44c1_s0_p3_0.vqh deleted file mode 100644 index 0b2a7d8b..00000000 --- a/lib/books/coupled/_44c1_s0_p3_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s0_p3_0_VQH_ -#define _V__44c1_s0_p3_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s0_p3_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c1_s0_p3_0[] = { - 1, 4, 4, 7, 7, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 5, 4, 7, 7, 8, 8, 9, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 5, 7, 7, 8, 8,10, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 6, 7, 7, 8, 8,10,10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 9,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 9,11,10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 9, 9,11,11, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,11, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, - 10,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11,11,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,12,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c1_s0_p3_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c1_s0_p3_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s0_p3_0 = { - _vq_quantthresh__44c1_s0_p3_0, - _vq_quantmap__44c1_s0_p3_0, - 17, - 17 -}; - -static static_codebook _44c1_s0_p3_0 = { - 2, 289, - _vq_lengthlist__44c1_s0_p3_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c1_s0_p3_0, - NULL, - &_vq_auxt__44c1_s0_p3_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s0_p4_0.vqh b/lib/books/coupled/_44c1_s0_p4_0.vqh deleted file mode 100644 index bdca1d95..00000000 --- a/lib/books/coupled/_44c1_s0_p4_0.vqh +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s0_p4_0_VQH_ -#define _V__44c1_s0_p4_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s0_p4_0[] = { - 7, - 6, - 8, - 5, - 9, - 4, - 10, - 3, - 11, - 2, - 12, - 1, - 13, - 0, - 14, -}; - -static long _vq_lengthlist__44c1_s0_p4_0[] = { - 1, 3, 3, 6, 6, 8, 8,11,11,20,20,20,20,19,19, 6, - 5, 5, 7, 8, 9,10,12,12,19,19,19,19,19,19, 7, 5, - 5, 8, 8,10,10,12,12,19,19,19,19,19,19,19, 8, 8, - 9, 9,11,11,14,13,19,19,19,19,19,19,19, 8, 8, 9, - 9,11,11,13,13,19,19,19,19,19,19,19,12,12,10,10, - 12,12,14,14,19,19,19,19,19,19,19,13,13,10,10,12, - 12,15,15,19,19,19,19,19,19,19,19,19,11,12,11,12, - 15,14,19,19,19,19,19,19,19,19,19,12,12,12,12,15, - 16,19,19,19,19,19,19,19,19,19,15,15,11,13,14,15, - 19,19,19,19,19,19,19,19,19,16,16,13,12,15,15,19, - 19,19,19,19,19,19,19,19,19,19,14,14,14,16,19,19, - 19,19,19,19,19,19,19,19,19,14,14,15,15,19,19,19, - 19,19,19,19,19,19,19,19,17,16,16,17,19,19,19,19, - 19,19,19,19,19,19,19,18,18,16,15,19,19,19,19,19, - 19, -}; - -static float _vq_quantthresh__44c1_s0_p4_0[] = { - -45.5, -38.5, -31.5, -24.5, -17.5, -10.5, -3.5, 3.5, - 10.5, 17.5, 24.5, 31.5, 38.5, 45.5, -}; - -static long _vq_quantmap__44c1_s0_p4_0[] = { - 13, 11, 9, 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, 12, 14, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s0_p4_0 = { - _vq_quantthresh__44c1_s0_p4_0, - _vq_quantmap__44c1_s0_p4_0, - 15, - 15 -}; - -static static_codebook _44c1_s0_p4_0 = { - 2, 225, - _vq_lengthlist__44c1_s0_p4_0, - 1, -524779520, 1616642048, 4, 0, - _vq_quantlist__44c1_s0_p4_0, - NULL, - &_vq_auxt__44c1_s0_p4_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s0_p4_1.vqh b/lib/books/coupled/_44c1_s0_p4_1.vqh deleted file mode 100644 index cedbfc9d..00000000 --- a/lib/books/coupled/_44c1_s0_p4_1.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s0_p4_1_VQH_ -#define _V__44c1_s0_p4_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s0_p4_1[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c1_s0_p4_1[] = { - 2, 4, 4, 5, 5, 6, 6, 8, 5, 5, 6, 6, 6, 6, 8, 5, - 5, 6, 6, 6, 6, 8, 6, 6, 6, 6, 6, 6, 8, 8, 8, 6, - 6, 6, 6, 8, 8, 8, 7, 7, 7, 7, 8, 8, 8, 6, 6, 7, - 7, -}; - -static float _vq_quantthresh__44c1_s0_p4_1[] = { - -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, -}; - -static long _vq_quantmap__44c1_s0_p4_1[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s0_p4_1 = { - _vq_quantthresh__44c1_s0_p4_1, - _vq_quantmap__44c1_s0_p4_1, - 7, - 7 -}; - -static static_codebook _44c1_s0_p4_1 = { - 2, 49, - _vq_lengthlist__44c1_s0_p4_1, - 1, -533200896, 1611661312, 3, 0, - _vq_quantlist__44c1_s0_p4_1, - NULL, - &_vq_auxt__44c1_s0_p4_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s0_p5_0.vqh b/lib/books/coupled/_44c1_s0_p5_0.vqh deleted file mode 100644 index 41fa28c6..00000000 --- a/lib/books/coupled/_44c1_s0_p5_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s0_p5_0_VQH_ -#define _V__44c1_s0_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s0_p5_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c1_s0_p5_0[] = { - 1, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, - 8, 8, 0, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0, 0, 9, - 8, 0, 0, 0, 9, 9, 0, 0, 0,12,12, 0, 0, 0, 0, 0, - 0, 0, 6, 7, 8, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, - 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 9, 9, 0, 0, 0, 8, 8, 0, 0, - 0, 8, 8, 0, 0, 0,11,10, 0, 0, 0, 0, 0, 0, 0, 5, - 9, 9, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 9, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, - 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, 8, 9, 0, - 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,12,12, 0, 0, 0,10,10, 0, 0, 0,10,11, 0, 0, 0, - 11,11, 0, 0, 0, 0, 0, 0, 0, 8,12,12, 0, 0, 0,10, - 10, 0, 0, 0,11,10, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c1_s0_p5_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c1_s0_p5_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s0_p5_0 = { - _vq_quantthresh__44c1_s0_p5_0, - _vq_quantmap__44c1_s0_p5_0, - 5, - 5 -}; - -static static_codebook _44c1_s0_p5_0 = { - 4, 625, - _vq_lengthlist__44c1_s0_p5_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c1_s0_p5_0, - NULL, - &_vq_auxt__44c1_s0_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s0_p6_0.vqh b/lib/books/coupled/_44c1_s0_p6_0.vqh deleted file mode 100644 index 1e33cc49..00000000 --- a/lib/books/coupled/_44c1_s0_p6_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s0_p6_0_VQH_ -#define _V__44c1_s0_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s0_p6_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c1_s0_p6_0[] = { - 1, 4, 4, 7, 7, 9,10,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 7, 7,10,10,12,12, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 4, 7, 7,10,10,12,12, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 6, 8, 8,11,11,13,13, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8, 8,11,11,13,13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 8,11,11,13,14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,11,11,13,14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,12,12,14,14, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,14, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12, - 15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, - 12,15,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 14,14,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,16,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,16,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,16,16, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c1_s0_p6_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c1_s0_p6_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s0_p6_0 = { - _vq_quantthresh__44c1_s0_p6_0, - _vq_quantmap__44c1_s0_p6_0, - 17, - 17 -}; - -static static_codebook _44c1_s0_p6_0 = { - 2, 289, - _vq_lengthlist__44c1_s0_p6_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c1_s0_p6_0, - NULL, - &_vq_auxt__44c1_s0_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s0_p7_0.vqh b/lib/books/coupled/_44c1_s0_p7_0.vqh deleted file mode 100644 index 80cdbde6..00000000 --- a/lib/books/coupled/_44c1_s0_p7_0.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s0_p7_0_VQH_ -#define _V__44c1_s0_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s0_p7_0[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c1_s0_p7_0[] = { - 1, 3, 3, 8, 8,15,15, 5, 5, 5,10, 9,14,14, 5, 5, - 5,10,10,14,14,14, 7, 9,11,10,14,14,14, 8, 5,13, - 10,14,14,14,11,13,14,14,14,14,14,13,12,14,13,14, - 14, -}; - -static float _vq_quantthresh__44c1_s0_p7_0[] = { - -167.5, -100.5, -33.5, 33.5, 100.5, 167.5, -}; - -static long _vq_quantmap__44c1_s0_p7_0[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s0_p7_0 = { - _vq_quantthresh__44c1_s0_p7_0, - _vq_quantmap__44c1_s0_p7_0, - 7, - 7 -}; - -static static_codebook _44c1_s0_p7_0 = { - 2, 49, - _vq_lengthlist__44c1_s0_p7_0, - 1, -520544256, 1624293376, 3, 0, - _vq_quantlist__44c1_s0_p7_0, - NULL, - &_vq_auxt__44c1_s0_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s0_p7_1.vqh b/lib/books/coupled/_44c1_s0_p7_1.vqh deleted file mode 100644 index 228f3613..00000000 --- a/lib/books/coupled/_44c1_s0_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s0_p7_1_VQH_ -#define _V__44c1_s0_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s0_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c1_s0_p7_1[] = { - 2, 4, 4, 5, 5, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10, - 9, 9, 9, 9, 9,10,10, 6, 5, 5, 7, 7, 8, 8, 8, 9, - 9, 9, 9, 9,10,10,10,10,10, 9,10, 9,10,10,13, 5, - 5, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10,10, - 10, 9, 9,10,10,14, 7, 8, 8, 7, 8, 8, 9, 9,10,10, - 10,10,10,11,11,11,10,10,10,10,11,11,13, 7, 7, 7, - 7, 8, 8, 9, 9,10,10,10,10,10,10,11,11,10,10,10, - 10,11,11,14,10,10, 8, 8, 9, 9, 9,10,10,10,10,11, - 11,11,11,11,11,11,11,11,11,11,13,14,13, 8, 8, 9, - 9,10,10,10,10,10,10,11,11,11,11,10,10,11,11,11, - 11,13,14,14,10,10, 9, 9,10,10,10,10,11,11,11,11, - 11,11,11,11,11,11,12,11,14,13,13,10, 9, 9, 9,10, - 10,10,10,11,11,11,11,12,12,11,11,11,11,12,12,14, - 14,13,12,12,10,10,10,10,11,11,11,11,11,11,12,11, - 12,11,11,11,12,11,15,13,14,15,13,10,10,10,10,10, - 11,11,11,12,11,12,11,11,11,11,11,12,12,14,15,13, - 14,13,11,11,11,10,11,11,11,12,12,11,12,12,11,11, - 12,11,12,12,14,14,14,13,13,11,11,11,11,11,11,12, - 11,11,12,12,12,11,11,11,11,12,12,14,14,14,14,14, - 12,12,11,11,11,11,12,11,12,12,12,12,11,11,11,11, - 12,12,14,14,14,13,13,13,13,11,11,11,11,12,11,12, - 12,12,12,11,12,11,12,12,12,14,14,14,14,13,14,13, - 12,11,12,12,12,12,12,12,12,12,12,11,12,12,12,12, - 13,14,14,13,14,13,14,12,12,12,11,12,12,12,11,12, - 12,11,12,11,12,12,12,14,14,14,14,13,14,14,13,13, - 12,12,12,12,12,12,13,13,12,12,12,12,12,12,13,13, - 14,14,14,14,14,13,13,13,12,13,13,12,12,12,12,12, - 12,12,12,12,13,14,13,13,14,13,13,13,14,13,12,13, - 12,12,13,12,12,12,12,12,12,12,13,12,14,13,13,14, - 14,14,14,14,14,14,12,12,12,12,12,13,12,12,12,12, - 12,12,13,14,15,14,15,14,15,14,14,14,14,14,12,12, - 13,12,13,13,13,13,12,12,14,13,14,15,15,14,14,15, - 14,15,14,14,13,13,12,13,13,13,13,12,12,12,13,13, - 14, -}; - -static float _vq_quantthresh__44c1_s0_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c1_s0_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s0_p7_1 = { - _vq_quantthresh__44c1_s0_p7_1, - _vq_quantmap__44c1_s0_p7_1, - 23, - 23 -}; - -static static_codebook _44c1_s0_p7_1 = { - 2, 529, - _vq_lengthlist__44c1_s0_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c1_s0_p7_1, - NULL, - &_vq_auxt__44c1_s0_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s0_p7_2.vqh b/lib/books/coupled/_44c1_s0_p7_2.vqh deleted file mode 100644 index fa34a985..00000000 --- a/lib/books/coupled/_44c1_s0_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s0_p7_2_VQH_ -#define _V__44c1_s0_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s0_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c1_s0_p7_2[] = { - 3, 5, 5, 7, 6, 6, 7, 6, 6, 5, 6, 6, 7, 7, 7, 7, - 6, 6, 5, 6, 6, 7, 7, 7, 7, 6, 6, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, - 6, 7, 7, 7, 7, 7, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c1_s0_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c1_s0_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s0_p7_2 = { - _vq_quantthresh__44c1_s0_p7_2, - _vq_quantmap__44c1_s0_p7_2, - 3, - 3 -}; - -static static_codebook _44c1_s0_p7_2 = { - 4, 81, - _vq_lengthlist__44c1_s0_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c1_s0_p7_2, - NULL, - &_vq_auxt__44c1_s0_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s1_p5_0.vqh b/lib/books/coupled/_44c1_s1_p5_0.vqh deleted file mode 100644 index 12726b40..00000000 --- a/lib/books/coupled/_44c1_s1_p5_0.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s1_p5_0_VQH_ -#define _V__44c1_s1_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s1_p5_0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c1_s1_p5_0[] = { - 1, 3, 3, 0, 0, 0, 0, 0, 0, 4, 5, 5, 0, 0, 0, 0, - 0, 0, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c1_s1_p5_0[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c1_s1_p5_0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s1_p5_0 = { - _vq_quantthresh__44c1_s1_p5_0, - _vq_quantmap__44c1_s1_p5_0, - 3, - 3 -}; - -static static_codebook _44c1_s1_p5_0 = { - 4, 81, - _vq_lengthlist__44c1_s1_p5_0, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c1_s1_p5_0, - NULL, - &_vq_auxt__44c1_s1_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s1_p6_0.vqh b/lib/books/coupled/_44c1_s1_p6_0.vqh deleted file mode 100644 index fecfb6be..00000000 --- a/lib/books/coupled/_44c1_s1_p6_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s1_p6_0_VQH_ -#define _V__44c1_s1_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s1_p6_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c1_s1_p6_0[] = { - 1, 3, 2, 4, 5, 8, 9,11,11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 9, 9,11,11, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 9, 9,11,11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,10,10,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,12,12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,12,13, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,12,13, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,13,13, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,13, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,11, - 14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11, - 11,14,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 13,13,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c1_s1_p6_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c1_s1_p6_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s1_p6_0 = { - _vq_quantthresh__44c1_s1_p6_0, - _vq_quantmap__44c1_s1_p6_0, - 17, - 17 -}; - -static static_codebook _44c1_s1_p6_0 = { - 2, 289, - _vq_lengthlist__44c1_s1_p6_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c1_s1_p6_0, - NULL, - &_vq_auxt__44c1_s1_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s1_p7_0.vqh b/lib/books/coupled/_44c1_s1_p7_0.vqh deleted file mode 100644 index 565ca5cd..00000000 --- a/lib/books/coupled/_44c1_s1_p7_0.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s1_p7_0_VQH_ -#define _V__44c1_s1_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s1_p7_0[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c1_s1_p7_0[] = { - 1, 3, 3, 8, 8,15,15, 5, 5, 5,10, 9,14,14, 5, 5, - 5,10,10,14,14,14, 7, 9,11,10,14,14,14, 8, 5,13, - 10,14,14,14,11,13,14,14,14,14,14,13,12,14,13,14, - 14, -}; - -static float _vq_quantthresh__44c1_s1_p7_0[] = { - -167.5, -100.5, -33.5, 33.5, 100.5, 167.5, -}; - -static long _vq_quantmap__44c1_s1_p7_0[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s1_p7_0 = { - _vq_quantthresh__44c1_s1_p7_0, - _vq_quantmap__44c1_s1_p7_0, - 7, - 7 -}; - -static static_codebook _44c1_s1_p7_0 = { - 2, 49, - _vq_lengthlist__44c1_s1_p7_0, - 1, -520544256, 1624293376, 3, 0, - _vq_quantlist__44c1_s1_p7_0, - NULL, - &_vq_auxt__44c1_s1_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s1_p7_1.vqh b/lib/books/coupled/_44c1_s1_p7_1.vqh deleted file mode 100644 index 69e20ef7..00000000 --- a/lib/books/coupled/_44c1_s1_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s1_p7_1_VQH_ -#define _V__44c1_s1_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s1_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c1_s1_p7_1[] = { - 2, 4, 4, 5, 5, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10, - 9, 9, 9, 9, 9,10,10, 6, 5, 5, 7, 7, 8, 8, 8, 9, - 9, 9, 9, 9,10,10,10,10,10, 9,10, 9,10,10,13, 5, - 5, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10,10, - 10, 9, 9,10,10,14, 7, 8, 8, 7, 8, 8, 9, 9,10,10, - 10,10,10,11,11,11,10,10,10,10,11,11,13, 7, 7, 7, - 7, 8, 8, 9, 9,10,10,10,10,10,10,11,11,10,10,10, - 10,11,11,14,10,10, 8, 8, 9, 9, 9,10,10,10,10,11, - 11,11,11,11,11,11,11,11,11,11,13,14,13, 8, 8, 9, - 9,10,10,10,10,10,10,11,11,11,11,10,10,11,11,11, - 11,13,14,14,10,10, 9, 9,10,10,10,10,11,11,11,11, - 11,11,11,11,11,11,12,11,14,13,13,10, 9, 9, 9,10, - 10,10,10,11,11,11,11,12,12,11,11,11,11,12,12,14, - 14,13,12,12,10,10,10,10,11,11,11,11,11,11,12,11, - 12,11,11,11,12,11,15,13,14,15,13,10,10,10,10,10, - 11,11,11,12,11,12,11,11,11,11,11,12,12,14,15,13, - 14,13,11,11,11,10,11,11,11,12,12,11,12,12,11,11, - 12,11,12,12,14,14,14,13,13,11,11,11,11,11,11,12, - 11,11,12,12,12,11,11,11,11,12,12,14,14,14,14,14, - 12,12,11,11,11,11,12,11,12,12,12,12,11,11,11,11, - 12,12,14,14,14,13,13,13,13,11,11,11,11,12,11,12, - 12,12,12,11,12,11,12,12,12,14,14,14,14,13,14,13, - 12,11,12,12,12,12,12,12,12,12,12,11,12,12,12,12, - 13,14,14,13,14,13,14,12,12,12,11,12,12,12,11,12, - 12,11,12,11,12,12,12,14,14,14,14,13,14,14,13,13, - 12,12,12,12,12,12,13,13,12,12,12,12,12,12,13,13, - 14,14,14,14,14,13,13,13,12,13,13,12,12,12,12,12, - 12,12,12,12,13,14,13,13,14,13,13,13,14,13,12,13, - 12,12,13,12,12,12,12,12,12,12,13,12,14,13,13,14, - 14,14,14,14,14,14,12,12,12,12,12,13,12,12,12,12, - 12,12,13,14,15,14,15,14,15,14,14,14,14,14,12,12, - 13,12,13,13,13,13,12,12,14,13,14,15,15,14,14,15, - 14,15,14,14,13,13,12,13,13,13,13,12,12,12,13,13, - 14, -}; - -static float _vq_quantthresh__44c1_s1_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c1_s1_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s1_p7_1 = { - _vq_quantthresh__44c1_s1_p7_1, - _vq_quantmap__44c1_s1_p7_1, - 23, - 23 -}; - -static static_codebook _44c1_s1_p7_1 = { - 2, 529, - _vq_lengthlist__44c1_s1_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c1_s1_p7_1, - NULL, - &_vq_auxt__44c1_s1_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s1_p7_2.vqh b/lib/books/coupled/_44c1_s1_p7_2.vqh deleted file mode 100644 index bb6a1f2d..00000000 --- a/lib/books/coupled/_44c1_s1_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s1_p7_2_VQH_ -#define _V__44c1_s1_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s1_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c1_s1_p7_2[] = { - 3, 5, 5, 7, 6, 6, 7, 6, 6, 5, 5, 5, 7, 7, 7, 7, - 6, 7, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, - 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c1_s1_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c1_s1_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s1_p7_2 = { - _vq_quantthresh__44c1_s1_p7_2, - _vq_quantmap__44c1_s1_p7_2, - 3, - 3 -}; - -static static_codebook _44c1_s1_p7_2 = { - 4, 81, - _vq_lengthlist__44c1_s1_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c1_s1_p7_2, - NULL, - &_vq_auxt__44c1_s1_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s2_p6_0.vqh b/lib/books/coupled/_44c1_s2_p6_0.vqh deleted file mode 100644 index 7b2d10c8..00000000 --- a/lib/books/coupled/_44c1_s2_p6_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s2_p6_0_VQH_ -#define _V__44c1_s2_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s2_p6_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c1_s2_p6_0[] = { - 1, 3, 2, 4, 5, 6, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c1_s2_p6_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c1_s2_p6_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s2_p6_0 = { - _vq_quantthresh__44c1_s2_p6_0, - _vq_quantmap__44c1_s2_p6_0, - 9, - 9 -}; - -static static_codebook _44c1_s2_p6_0 = { - 2, 81, - _vq_lengthlist__44c1_s2_p6_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c1_s2_p6_0, - NULL, - &_vq_auxt__44c1_s2_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s2_p7_0.vqh b/lib/books/coupled/_44c1_s2_p7_0.vqh deleted file mode 100644 index 6509e4d3..00000000 --- a/lib/books/coupled/_44c1_s2_p7_0.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s2_p7_0_VQH_ -#define _V__44c1_s2_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s2_p7_0[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c1_s2_p7_0[] = { - 1, 3, 3, 8, 8,15,15, 5, 5, 5,10, 9,14,14, 5, 5, - 5,10,10,14,14,14, 7, 9,11,10,14,14,14, 8, 5,13, - 10,14,14,14,11,13,14,14,14,14,14,13,12,14,13,14, - 14, -}; - -static float _vq_quantthresh__44c1_s2_p7_0[] = { - -167.5, -100.5, -33.5, 33.5, 100.5, 167.5, -}; - -static long _vq_quantmap__44c1_s2_p7_0[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s2_p7_0 = { - _vq_quantthresh__44c1_s2_p7_0, - _vq_quantmap__44c1_s2_p7_0, - 7, - 7 -}; - -static static_codebook _44c1_s2_p7_0 = { - 2, 49, - _vq_lengthlist__44c1_s2_p7_0, - 1, -520544256, 1624293376, 3, 0, - _vq_quantlist__44c1_s2_p7_0, - NULL, - &_vq_auxt__44c1_s2_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s2_p7_1.vqh b/lib/books/coupled/_44c1_s2_p7_1.vqh deleted file mode 100644 index 9185a322..00000000 --- a/lib/books/coupled/_44c1_s2_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s2_p7_1_VQH_ -#define _V__44c1_s2_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s2_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c1_s2_p7_1[] = { - 2, 4, 4, 5, 5, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10, - 9, 9, 9, 9, 9,10,10, 6, 5, 5, 6, 7, 8, 8, 8, 9, - 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9,10,10,13, 6, - 5, 7, 6, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10,10, - 9, 9, 9,10,10,14, 8, 8, 8, 7, 8, 8, 9, 9,10,10, - 10,10,10,10,11,11,10,10,10,10,11,11,13, 8, 7, 7, - 7, 8, 8, 9, 9,10,10,10,10,10,10,11,11,10,10,10, - 10,11,11,14,10,10, 8, 8, 9, 9, 9, 9,10,10,10,11, - 11,11,11,11,11,10,11,11,11,11,13,14,13, 8, 8, 9, - 9,10, 9,10,10,10,10,11,11,11,11,10,10,11,11,11, - 11,13,14,14,10,10, 9, 9,10,10,10,10,11,11,11,11, - 11,11,11,11,11,11,12,11,14,13,13,10, 9, 9, 9,10, - 10,10,10,11,11,11,11,12,12,11,11,11,11,12,12,14, - 14,13,12,12,10,10,10,10,11,11,11,11,11,11,12,11, - 11,11,11,11,12,11,15,13,13,15,13,10,10,10,10,10, - 11,11,11,12,11,12,11,11,11,11,11,11,12,13,15,13, - 14,13,11,11,11,10,11,11,11,12,12,11,12,12,11,11, - 12,11,12,12,14,14,14,13,13,11,11,11,11,11,11,12, - 11,11,12,12,12,11,11,11,11,12,12,13,14,14,14,14, - 12,12,11,11,11,11,12,11,12,12,12,12,11,11,11,11, - 12,12,14,14,14,13,13,13,13,11,11,11,11,11,11,12, - 12,12,12,11,12,11,11,12,12,14,14,14,14,13,13,13, - 12,11,12,11,12,12,12,12,12,12,12,11,12,12,12,12, - 13,14,14,13,14,13,14,12,12,12,11,12,12,12,11,12, - 12,11,12,11,12,12,12,14,13,14,14,13,14,14,13,13, - 12,11,12,12,12,12,13,13,12,12,11,12,12,12,13,13, - 14,14,13,14,14,13,13,12,12,13,12,12,12,12,12,12, - 12,12,12,12,13,13,13,13,13,13,13,13,14,13,12,13, - 12,12,12,12,12,12,12,12,12,12,13,12,13,13,13,14, - 14,14,14,14,14,14,12,12,12,12,12,13,12,12,12,12, - 12,12,12,13,15,14,15,14,15,14,14,14,14,14,12,12, - 13,12,13,13,13,13,12,12,14,13,14,15,15,14,14,15, - 14,15,14,14,13,13,12,13,13,13,13,12,12,12,12,13, - 14, -}; - -static float _vq_quantthresh__44c1_s2_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c1_s2_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s2_p7_1 = { - _vq_quantthresh__44c1_s2_p7_1, - _vq_quantmap__44c1_s2_p7_1, - 23, - 23 -}; - -static static_codebook _44c1_s2_p7_1 = { - 2, 529, - _vq_lengthlist__44c1_s2_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c1_s2_p7_1, - NULL, - &_vq_auxt__44c1_s2_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s2_p7_2.vqh b/lib/books/coupled/_44c1_s2_p7_2.vqh deleted file mode 100644 index 8ab2ea72..00000000 --- a/lib/books/coupled/_44c1_s2_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s2_p7_2_VQH_ -#define _V__44c1_s2_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s2_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c1_s2_p7_2[] = { - 3, 5, 5, 7, 6, 6, 7, 6, 6, 5, 5, 5, 7, 7, 7, 7, - 6, 7, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, - 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c1_s2_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c1_s2_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s2_p7_2 = { - _vq_quantthresh__44c1_s2_p7_2, - _vq_quantmap__44c1_s2_p7_2, - 3, - 3 -}; - -static static_codebook _44c1_s2_p7_2 = { - 4, 81, - _vq_lengthlist__44c1_s2_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c1_s2_p7_2, - NULL, - &_vq_auxt__44c1_s2_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s3_p7_0.vqh b/lib/books/coupled/_44c1_s3_p7_0.vqh deleted file mode 100644 index ff7ad570..00000000 --- a/lib/books/coupled/_44c1_s3_p7_0.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s3_p7_0_VQH_ -#define _V__44c1_s3_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s3_p7_0[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c1_s3_p7_0[] = { - 1, 3, 3, 8, 8,15,15, 5, 5, 5,10, 9,14,14, 5, 5, - 5,10,10,14,14,14, 7, 9,11,10,14,14,14, 8, 5,13, - 10,14,14,14,11,13,14,14,14,14,14,13,12,14,13,14, - 14, -}; - -static float _vq_quantthresh__44c1_s3_p7_0[] = { - -167.5, -100.5, -33.5, 33.5, 100.5, 167.5, -}; - -static long _vq_quantmap__44c1_s3_p7_0[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s3_p7_0 = { - _vq_quantthresh__44c1_s3_p7_0, - _vq_quantmap__44c1_s3_p7_0, - 7, - 7 -}; - -static static_codebook _44c1_s3_p7_0 = { - 2, 49, - _vq_lengthlist__44c1_s3_p7_0, - 1, -520544256, 1624293376, 3, 0, - _vq_quantlist__44c1_s3_p7_0, - NULL, - &_vq_auxt__44c1_s3_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s3_p7_1.vqh b/lib/books/coupled/_44c1_s3_p7_1.vqh deleted file mode 100644 index 593ef377..00000000 --- a/lib/books/coupled/_44c1_s3_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s3_p7_1_VQH_ -#define _V__44c1_s3_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s3_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c1_s3_p7_1[] = { - 2, 3, 4, 5, 5, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9,10, - 9, 9, 9, 9, 9,10,10, 6, 5, 5, 7, 7, 8, 8, 9, 9, - 9, 9, 9,10,10,10,10,10,10,10,10, 9,10,10,13, 6, - 5, 7, 7, 8, 8, 8, 9, 9, 9, 9,10,10,10,10,10,10, - 10, 9, 9,10,10,14, 8, 8, 8, 8, 9, 9, 9, 9,10,10, - 10,10,11,11,11,11,10,10,10,10,11,11,13, 8, 8, 8, - 8, 8, 8, 9, 9,10,10,10,10,10,10,11,11,10,10,10, - 10,11,11,14,10,11, 8, 8, 9, 9,10,10,10,10,11,11, - 11,11,11,11,11,11,11,11,11,11,13,14,13, 8, 8, 9, - 9,10,10,10,10,10,10,11,11,11,11,10,11,11,11,11, - 11,13,14,14,10,10,10, 9,10,10,10,10,11,11,11,11, - 11,11,11,11,11,11,12,12,14,13,13,10,10, 9, 9,10, - 10,10,10,11,11,11,11,12,12,11,11,11,11,12,12,14, - 14,13,12,12,10,10,10,10,11,11,11,11,11,11,12,11, - 12,11,11,11,12,12,15,14,14,15,13,10,10,10,10,11, - 11,11,12,12,12,12,11,11,11,11,11,12,12,14,15,13, - 14,13,11,11,11,11,11,11,11,12,12,11,12,12,11,11, - 12,11,12,12,14,14,14,13,13,11,11,11,11,11,11,12, - 11,12,12,12,12,11,11,11,11,12,12,14,14,14,14,14, - 12,12,11,11,11,11,12,12,12,12,12,12,12,12,11,11, - 12,12,14,14,14,13,13,13,13,11,11,11,11,12,12,12, - 12,12,12,11,12,11,12,12,12,14,14,14,14,13,14,13, - 12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 13,14,14,13,14,13,14,12,12,12,11,12,12,12,12,12, - 12,11,12,11,12,12,12,14,14,14,14,13,14,14,13,13, - 12,12,12,12,12,12,13,13,12,12,12,12,12,12,13,13, - 14,14,14,14,14,13,13,13,12,13,13,12,12,12,12,12, - 12,12,12,12,13,14,13,13,14,13,13,13,14,13,12,13, - 12,12,13,12,12,12,12,12,12,12,13,12,14,13,13,14, - 14,14,14,14,14,14,13,12,12,12,12,13,12,12,12,12, - 12,12,13,14,15,14,15,14,15,14,14,14,14,14,12,12, - 13,12,13,13,13,13,12,12,14,13,14,15,15,14,14,15, - 14,15,14,14,14,13,12,13,13,13,13,12,12,12,13,13, - 14, -}; - -static float _vq_quantthresh__44c1_s3_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c1_s3_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s3_p7_1 = { - _vq_quantthresh__44c1_s3_p7_1, - _vq_quantmap__44c1_s3_p7_1, - 23, - 23 -}; - -static static_codebook _44c1_s3_p7_1 = { - 2, 529, - _vq_lengthlist__44c1_s3_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c1_s3_p7_1, - NULL, - &_vq_auxt__44c1_s3_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_s3_p7_2.vqh b/lib/books/coupled/_44c1_s3_p7_2.vqh deleted file mode 100644 index b772da4d..00000000 --- a/lib/books/coupled/_44c1_s3_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c1_s3_p7_2_VQH_ -#define _V__44c1_s3_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c1_s3_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c1_s3_p7_2[] = { - 3, 5, 5, 7, 6, 6, 7, 6, 6, 5, 5, 5, 7, 7, 7, 7, - 6, 7, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, - 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c1_s3_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c1_s3_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c1_s3_p7_2 = { - _vq_quantthresh__44c1_s3_p7_2, - _vq_quantmap__44c1_s3_p7_2, - 3, - 3 -}; - -static static_codebook _44c1_s3_p7_2 = { - 4, 81, - _vq_lengthlist__44c1_s3_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c1_s3_p7_2, - NULL, - &_vq_auxt__44c1_s3_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c1_short.vqh b/lib/books/coupled/_44c1_short.vqh deleted file mode 100644 index e1e239e3..00000000 --- a/lib/books/coupled/_44c1_short.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c1_short_VQH_ -#define _V__44c1_short_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c1_short[] = { - 5,17,17,17,17, 7,10,14,17, 7, 7, 9,11,17,17,17, - 15, 5, 5, 6, 9,17,17,17,17, 7, 6, 7, 9,17,17,17, - 15, 8, 5, 5, 8,17,17,17, 5,17,17,16,16, 2, 4,10, - 7,16,16,16,16, 3, 3, 9,13, 9, 4, 4, 6, 9, 7,10, -}; - -static static_codebook _huff_book__44c1_short = { - 2, 64, - _huff_lengthlist__44c1_short, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_long.vqh b/lib/books/coupled/_44c2_long.vqh deleted file mode 100644 index c2969e47..00000000 --- a/lib/books/coupled/_44c2_long.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c2_long_VQH_ -#define _V__44c2_long_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c2_long[] = { - 3,10,12,12,10, 6, 8,10,10, 6, 6, 7, 8, 7, 7,10, - 12, 5, 4, 6, 7, 7, 7,11,12, 7, 5, 5, 7, 9, 8,11, - 9, 7, 6, 5, 5,11,10, 8, 6,17,17,17,17, 2, 4, 9, - 8,17,17,17,17, 4, 4, 9,10,14,13,12, 7, 8, 8, 9, -}; - -static static_codebook _huff_book__44c2_long = { - 2, 64, - _huff_lengthlist__44c2_long, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s0_p1_0.vqh b/lib/books/coupled/_44c2_s0_p1_0.vqh deleted file mode 100644 index 1628ed45..00000000 --- a/lib/books/coupled/_44c2_s0_p1_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s0_p1_0_VQH_ -#define _V__44c2_s0_p1_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s0_p1_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c2_s0_p1_0[] = { - 2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, - 7, 7, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 7, - 7, 0, 0, 0, 7, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0, - 0, 0, 5, 6, 6, 0, 0, 0, 7, 8, 0, 0, 0, 7, 7, 0, - 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 7, 7, 0, 0, - 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5, - 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 8, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, - 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5, 7, 8, 0, - 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7,10,10, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, 0, 0, - 10,10, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0, 0, 9, - 9, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c2_s0_p1_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c2_s0_p1_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s0_p1_0 = { - _vq_quantthresh__44c2_s0_p1_0, - _vq_quantmap__44c2_s0_p1_0, - 5, - 5 -}; - -static static_codebook _44c2_s0_p1_0 = { - 4, 625, - _vq_lengthlist__44c2_s0_p1_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c2_s0_p1_0, - NULL, - &_vq_auxt__44c2_s0_p1_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s0_p2_0.vqh b/lib/books/coupled/_44c2_s0_p2_0.vqh deleted file mode 100644 index 7f4509a4..00000000 --- a/lib/books/coupled/_44c2_s0_p2_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s0_p2_0_VQH_ -#define _V__44c2_s0_p2_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s0_p2_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c2_s0_p2_0[] = { - 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, - 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6, - 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, - 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c2_s0_p2_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c2_s0_p2_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s0_p2_0 = { - _vq_quantthresh__44c2_s0_p2_0, - _vq_quantmap__44c2_s0_p2_0, - 9, - 9 -}; - -static static_codebook _44c2_s0_p2_0 = { - 2, 81, - _vq_lengthlist__44c2_s0_p2_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c2_s0_p2_0, - NULL, - &_vq_auxt__44c2_s0_p2_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s0_p3_0.vqh b/lib/books/coupled/_44c2_s0_p3_0.vqh deleted file mode 100644 index ff4c1456..00000000 --- a/lib/books/coupled/_44c2_s0_p3_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s0_p3_0_VQH_ -#define _V__44c2_s0_p3_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s0_p3_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c2_s0_p3_0[] = { - 2, 4, 4, 6, 6, 7, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 5, 6, 7, 8, 7, 9, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 8, 9, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9,10,10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, - 11,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,10,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c2_s0_p3_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c2_s0_p3_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s0_p3_0 = { - _vq_quantthresh__44c2_s0_p3_0, - _vq_quantmap__44c2_s0_p3_0, - 17, - 17 -}; - -static static_codebook _44c2_s0_p3_0 = { - 2, 289, - _vq_lengthlist__44c2_s0_p3_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c2_s0_p3_0, - NULL, - &_vq_auxt__44c2_s0_p3_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s0_p4_0.vqh b/lib/books/coupled/_44c2_s0_p4_0.vqh deleted file mode 100644 index afc7c060..00000000 --- a/lib/books/coupled/_44c2_s0_p4_0.vqh +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s0_p4_0_VQH_ -#define _V__44c2_s0_p4_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s0_p4_0[] = { - 7, - 6, - 8, - 5, - 9, - 4, - 10, - 3, - 11, - 2, - 12, - 1, - 13, - 0, - 14, -}; - -static long _vq_lengthlist__44c2_s0_p4_0[] = { - 1, 3, 3, 6, 6, 9, 9,11,12,20,20,20,20,20,20, 6, - 5, 5, 7, 7,10,10,12,13,20,20,20,20,20,20, 7, 5, - 5, 8, 8,10,10,13,13,20,20,20,20,20,20,20, 8, 8, - 8, 9,11,11,13,14,20,20,20,20,20,19,19, 8, 8, 9, - 9,11,11,13,13,19,19,19,19,19,19,19,12,12,10,10, - 12,12,14,15,19,19,19,19,19,19,19,13,13,10,10,11, - 11,14,14,19,19,19,19,19,19,19,19,19,11,12,12,12, - 15,15,19,19,19,19,19,19,19,19,19,12,12,12,12,15, - 15,19,19,19,19,19,19,19,19,19,15,16,12,13,15,16, - 19,19,19,19,19,19,19,19,19,17,16,13,13,16,15,19, - 19,19,19,19,19,19,19,19,19,19,14,15,15,16,19,19, - 19,19,19,19,19,19,19,19,19,14,15,16,16,19,19,19, - 19,19,19,19,19,19,19,19,18,17,17,16,19,19,19,19, - 19,19,19,19,19,19,19,18,18,17,16,19,19,19,19,19, - 19, -}; - -static float _vq_quantthresh__44c2_s0_p4_0[] = { - -45.5, -38.5, -31.5, -24.5, -17.5, -10.5, -3.5, 3.5, - 10.5, 17.5, 24.5, 31.5, 38.5, 45.5, -}; - -static long _vq_quantmap__44c2_s0_p4_0[] = { - 13, 11, 9, 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, 12, 14, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s0_p4_0 = { - _vq_quantthresh__44c2_s0_p4_0, - _vq_quantmap__44c2_s0_p4_0, - 15, - 15 -}; - -static static_codebook _44c2_s0_p4_0 = { - 2, 225, - _vq_lengthlist__44c2_s0_p4_0, - 1, -524779520, 1616642048, 4, 0, - _vq_quantlist__44c2_s0_p4_0, - NULL, - &_vq_auxt__44c2_s0_p4_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s0_p4_1.vqh b/lib/books/coupled/_44c2_s0_p4_1.vqh deleted file mode 100644 index c2bef2f0..00000000 --- a/lib/books/coupled/_44c2_s0_p4_1.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s0_p4_1_VQH_ -#define _V__44c2_s0_p4_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s0_p4_1[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c2_s0_p4_1[] = { - 2, 4, 4, 6, 6, 6, 6, 8, 5, 5, 6, 6, 6, 6, 8, 4, - 4, 6, 6, 6, 6, 8, 6, 6, 6, 6, 7, 7, 8, 8, 8, 6, - 6, 7, 7, 8, 8, 8, 7, 7, 7, 7, 8, 8, 8, 6, 6, 7, - 7, -}; - -static float _vq_quantthresh__44c2_s0_p4_1[] = { - -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, -}; - -static long _vq_quantmap__44c2_s0_p4_1[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s0_p4_1 = { - _vq_quantthresh__44c2_s0_p4_1, - _vq_quantmap__44c2_s0_p4_1, - 7, - 7 -}; - -static static_codebook _44c2_s0_p4_1 = { - 2, 49, - _vq_lengthlist__44c2_s0_p4_1, - 1, -533200896, 1611661312, 3, 0, - _vq_quantlist__44c2_s0_p4_1, - NULL, - &_vq_auxt__44c2_s0_p4_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s0_p5_0.vqh b/lib/books/coupled/_44c2_s0_p5_0.vqh deleted file mode 100644 index 565803f3..00000000 --- a/lib/books/coupled/_44c2_s0_p5_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s0_p5_0_VQH_ -#define _V__44c2_s0_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s0_p5_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c2_s0_p5_0[] = { - 1, 6, 6, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, - 8, 8, 0, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0, 0, 9, - 8, 0, 0, 0, 8, 8, 0, 0, 0,12,12, 0, 0, 0, 0, 0, - 0, 0, 6, 7, 8, 0, 0, 0, 8, 9, 0, 0, 0, 8, 9, 0, - 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 9, 8, 0, 0, 0, 8, 7, 0, 0, - 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, - 8, 8, 0, 0, 0, 7, 8, 0, 0, 0, 8, 8, 0, 0, 0,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 9, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 7, - 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, 8, 9, 0, - 0, 0, 8, 8, 0, 0, 0, 7, 8, 0, 0, 0,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,12,12, 0, 0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0, - 11,11, 0, 0, 0, 0, 0, 0, 0, 8,12,12, 0, 0, 0,10, - 10, 0, 0, 0,10,10, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c2_s0_p5_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c2_s0_p5_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s0_p5_0 = { - _vq_quantthresh__44c2_s0_p5_0, - _vq_quantmap__44c2_s0_p5_0, - 5, - 5 -}; - -static static_codebook _44c2_s0_p5_0 = { - 4, 625, - _vq_lengthlist__44c2_s0_p5_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c2_s0_p5_0, - NULL, - &_vq_auxt__44c2_s0_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s0_p6_0.vqh b/lib/books/coupled/_44c2_s0_p6_0.vqh deleted file mode 100644 index f339824e..00000000 --- a/lib/books/coupled/_44c2_s0_p6_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s0_p6_0_VQH_ -#define _V__44c2_s0_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s0_p6_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c2_s0_p6_0[] = { - 1, 4, 4, 7, 7,10,10,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 7, 7,10,10,12,12, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 4, 7, 7,10,10,12,12, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 6, 8, 8,11,10,13,13, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8, 7,11,11,13,13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,11,11,13,13, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 8,11,11,13,13, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,12,12,14,14, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,14, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12, - 14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, - 12,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 14,13,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,14,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,16,16, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c2_s0_p6_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c2_s0_p6_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s0_p6_0 = { - _vq_quantthresh__44c2_s0_p6_0, - _vq_quantmap__44c2_s0_p6_0, - 17, - 17 -}; - -static static_codebook _44c2_s0_p6_0 = { - 2, 289, - _vq_lengthlist__44c2_s0_p6_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c2_s0_p6_0, - NULL, - &_vq_auxt__44c2_s0_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s0_p7_0.vqh b/lib/books/coupled/_44c2_s0_p7_0.vqh deleted file mode 100644 index 8ff30024..00000000 --- a/lib/books/coupled/_44c2_s0_p7_0.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s0_p7_0_VQH_ -#define _V__44c2_s0_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s0_p7_0[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c2_s0_p7_0[] = { - 1, 3, 3, 7, 7,14,14, 5, 5, 5, 8, 9,15,14, 5, 5, - 5, 9, 8,15,15,15, 8, 9,10,10,15,15,15, 8, 6,10, - 9,15,14,14,10,12,12,12,14,14,14,13,10,12,10,14, - 14, -}; - -static float _vq_quantthresh__44c2_s0_p7_0[] = { - -167.5, -100.5, -33.5, 33.5, 100.5, 167.5, -}; - -static long _vq_quantmap__44c2_s0_p7_0[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s0_p7_0 = { - _vq_quantthresh__44c2_s0_p7_0, - _vq_quantmap__44c2_s0_p7_0, - 7, - 7 -}; - -static static_codebook _44c2_s0_p7_0 = { - 2, 49, - _vq_lengthlist__44c2_s0_p7_0, - 1, -520544256, 1624293376, 3, 0, - _vq_quantlist__44c2_s0_p7_0, - NULL, - &_vq_auxt__44c2_s0_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s0_p7_1.vqh b/lib/books/coupled/_44c2_s0_p7_1.vqh deleted file mode 100644 index faff750d..00000000 --- a/lib/books/coupled/_44c2_s0_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s0_p7_1_VQH_ -#define _V__44c2_s0_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s0_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c2_s0_p7_1[] = { - 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10, - 10,10,10,10,10,10,10, 6, 6, 6, 7, 7, 8, 8, 9, 9, - 10,10,10,10,11,11,11,11,10,10,10,10,11,11,14, 6, - 6, 7, 7, 9, 8, 9, 9,10,10,10,10,11,10,11,11,10, - 10,10,10,11,11,14, 8, 8, 8, 8, 9, 9,10,10,10,11, - 11,11,11,11,11,11,11,11,11,11,12,12,14, 8, 8, 8, - 8, 9, 9,10,10,10,11,11,11,11,11,12,11,11,11,11, - 11,12,12,14,11,11, 9, 9,10,10,10,10,11,11,11,11, - 11,11,12,12,11,11,11,11,12,12,14,15,14, 9, 9,10, - 10,10,10,11,11,11,11,11,12,12,12,11,12,11,11,12, - 12,14,15,14,10,10,10,10,11,11,11,11,12,11,12,12, - 12,12,12,12,12,12,12,12,15,15,14,11,11,10,10,11, - 11,11,11,12,11,12,12,12,12,12,12,11,12,12,12,14, - 14,14,13,13,11,10,11,11,12,12,12,12,12,12,12,12, - 12,12,12,12,12,13,14,14,15,15,16,11,10,11,11,12, - 12,12,12,12,12,12,12,12,12,12,12,13,12,14,15,14, - 15,14,12,12,11,11,12,12,12,12,12,12,12,12,12,12, - 12,12,13,13,15,15,15,15,15,12,12,11,11,12,12,12, - 12,12,12,12,12,12,12,12,12,13,13,14,15,14,16,15, - 14,13,12,12,12,12,13,12,12,13,13,13,12,12,12,12, - 13,13,15,15,15,14,14,14,15,11,12,12,12,12,12,13, - 13,13,13,12,12,12,12,13,13,14,15,14,15,16,14,14, - 13,13,12,13,13,13,13,13,12,13,12,12,12,12,13,13, - 16,15,14,15,15,15,15,13,14,12,12,12,12,13,12,13, - 13,13,12,12,13,13,13,15,15,15,15,14,15,15,14,14, - 13,12,13,13,13,13,13,13,13,13,12,13,13,13,15,15, - 15,14,15,15,15,14,14,12,13,13,13,13,12,13,13,12, - 13,12,12,13,14,14,14,14,15,14,15,15,14,15,14,14, - 13,13,13,13,13,13,13,13,13,13,13,13,15,14,15,15, - 14,14,15,14,15,14,13,13,12,13,13,13,13,12,13,12, - 12,14,14,16,15,15,15,15,15,16,14,16,15,14,14,13, - 13,13,14,13,13,13,13,13,14,14,16,15,15,15,15,15, - 15,16,15,16,15,13,12,13,13,13,14,13,13,13,13,14, - 14, -}; - -static float _vq_quantthresh__44c2_s0_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c2_s0_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s0_p7_1 = { - _vq_quantthresh__44c2_s0_p7_1, - _vq_quantmap__44c2_s0_p7_1, - 23, - 23 -}; - -static static_codebook _44c2_s0_p7_1 = { - 2, 529, - _vq_lengthlist__44c2_s0_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c2_s0_p7_1, - NULL, - &_vq_auxt__44c2_s0_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s0_p7_2.vqh b/lib/books/coupled/_44c2_s0_p7_2.vqh deleted file mode 100644 index 9133fd77..00000000 --- a/lib/books/coupled/_44c2_s0_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s0_p7_2_VQH_ -#define _V__44c2_s0_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s0_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c2_s0_p7_2[] = { - 2, 6, 5, 7, 6, 6, 7, 6, 6, 6, 6, 6, 7, 7, 7, 7, - 7, 7, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, - 7, 8, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 7, 8, 7, 7, 6, - 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c2_s0_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c2_s0_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s0_p7_2 = { - _vq_quantthresh__44c2_s0_p7_2, - _vq_quantmap__44c2_s0_p7_2, - 3, - 3 -}; - -static static_codebook _44c2_s0_p7_2 = { - 4, 81, - _vq_lengthlist__44c2_s0_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c2_s0_p7_2, - NULL, - &_vq_auxt__44c2_s0_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s1_p5_0.vqh b/lib/books/coupled/_44c2_s1_p5_0.vqh deleted file mode 100644 index c2a243b1..00000000 --- a/lib/books/coupled/_44c2_s1_p5_0.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s1_p5_0_VQH_ -#define _V__44c2_s1_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s1_p5_0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c2_s1_p5_0[] = { - 1, 3, 3, 0, 0, 0, 0, 0, 0, 4, 5, 5, 0, 0, 0, 0, - 0, 0, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c2_s1_p5_0[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c2_s1_p5_0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s1_p5_0 = { - _vq_quantthresh__44c2_s1_p5_0, - _vq_quantmap__44c2_s1_p5_0, - 3, - 3 -}; - -static static_codebook _44c2_s1_p5_0 = { - 4, 81, - _vq_lengthlist__44c2_s1_p5_0, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c2_s1_p5_0, - NULL, - &_vq_auxt__44c2_s1_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s1_p6_0.vqh b/lib/books/coupled/_44c2_s1_p6_0.vqh deleted file mode 100644 index f99baeab..00000000 --- a/lib/books/coupled/_44c2_s1_p6_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s1_p6_0_VQH_ -#define _V__44c2_s1_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s1_p6_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c2_s1_p6_0[] = { - 1, 3, 2, 5, 4, 9, 9,11,11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 9, 9,11,11, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 9, 9,11,11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,10, 9,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,12,12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,12,12, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,12,12, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,13,13, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,13, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11, - 11,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 13,12,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,13,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c2_s1_p6_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c2_s1_p6_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s1_p6_0 = { - _vq_quantthresh__44c2_s1_p6_0, - _vq_quantmap__44c2_s1_p6_0, - 17, - 17 -}; - -static static_codebook _44c2_s1_p6_0 = { - 2, 289, - _vq_lengthlist__44c2_s1_p6_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c2_s1_p6_0, - NULL, - &_vq_auxt__44c2_s1_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s1_p7_0.vqh b/lib/books/coupled/_44c2_s1_p7_0.vqh deleted file mode 100644 index 4c1080da..00000000 --- a/lib/books/coupled/_44c2_s1_p7_0.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s1_p7_0_VQH_ -#define _V__44c2_s1_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s1_p7_0[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c2_s1_p7_0[] = { - 1, 3, 3, 7, 7,14,14, 5, 5, 5, 8, 9,15,14, 5, 5, - 5, 9, 8,15,15,15, 8, 9,10,10,15,15,15, 8, 6,10, - 9,15,14,14,10,12,12,12,14,14,14,13,10,12,10,14, - 14, -}; - -static float _vq_quantthresh__44c2_s1_p7_0[] = { - -167.5, -100.5, -33.5, 33.5, 100.5, 167.5, -}; - -static long _vq_quantmap__44c2_s1_p7_0[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s1_p7_0 = { - _vq_quantthresh__44c2_s1_p7_0, - _vq_quantmap__44c2_s1_p7_0, - 7, - 7 -}; - -static static_codebook _44c2_s1_p7_0 = { - 2, 49, - _vq_lengthlist__44c2_s1_p7_0, - 1, -520544256, 1624293376, 3, 0, - _vq_quantlist__44c2_s1_p7_0, - NULL, - &_vq_auxt__44c2_s1_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s1_p7_1.vqh b/lib/books/coupled/_44c2_s1_p7_1.vqh deleted file mode 100644 index f2fe33b1..00000000 --- a/lib/books/coupled/_44c2_s1_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s1_p7_1_VQH_ -#define _V__44c2_s1_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s1_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c2_s1_p7_1[] = { - 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9,10,10, - 10,10,10,10,10,10,10, 7, 6, 6, 7, 7, 8, 8, 9, 9, - 10,10,10,10,11,11,11,11,10,10,10,10,11,11,14, 6, - 6, 7, 7, 8, 8, 9, 9,10,10,10,10,10,10,11,11,10, - 10,10,10,11,11,14, 8, 8, 8, 8, 9, 9,10,10,10,11, - 11,11,11,11,11,11,11,11,11,11,12,11,14, 8, 8, 8, - 8, 9, 9,10,10,10,11,11,11,11,11,11,11,11,11,11, - 11,11,12,14,11,11, 9, 9,10,10,10,10,11,11,11,11, - 11,11,12,12,11,11,11,11,12,12,14,15,14, 9, 9,10, - 10,10,10,11,11,11,11,11,12,12,11,11,11,11,11,12, - 12,14,15,14,10,10,10,10,11,11,11,11,11,11,12,12, - 12,12,11,12,12,12,12,12,15,15,14,11,10,10,10,11, - 11,11,11,12,11,12,12,12,12,12,12,11,12,12,12,14, - 14,14,13,13,11,10,11,11,12,12,12,12,12,12,12,12, - 12,12,12,12,12,13,14,14,15,15,16,11,10,11,11,11, - 12,12,12,12,12,12,12,12,12,12,12,12,12,14,15,14, - 15,14,12,12,11,11,12,12,12,12,12,12,12,12,12,12, - 12,12,13,13,14,15,15,14,14,12,11,11,11,12,12,12, - 12,12,12,12,12,12,12,12,12,13,13,14,15,14,16,15, - 14,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 13,13,15,15,15,14,14,14,15,11,12,12,12,12,12,13, - 13,12,13,12,12,12,12,13,13,14,15,14,15,16,14,14, - 13,13,12,13,13,13,13,13,12,12,12,12,12,12,13,13, - 16,15,14,15,15,15,15,13,14,12,12,12,12,13,12,13, - 13,13,12,12,13,13,13,14,15,15,15,14,15,15,14,14, - 13,12,13,13,13,13,13,13,13,13,12,13,13,13,15,14, - 15,14,15,15,15,14,14,12,13,13,13,13,12,13,12,12, - 13,12,12,13,14,14,14,14,15,14,15,15,14,15,14,14, - 13,13,13,13,13,13,12,13,12,13,13,13,15,14,15,15, - 14,14,15,14,15,14,13,13,12,13,12,13,13,12,13,12, - 12,13,13,16,15,15,15,15,15,16,14,16,15,14,13,13, - 13,13,14,13,13,13,13,13,14,14,15,15,15,15,15,15, - 15,15,15,16,15,13,12,13,13,13,14,13,13,13,13,14, - 14, -}; - -static float _vq_quantthresh__44c2_s1_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c2_s1_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s1_p7_1 = { - _vq_quantthresh__44c2_s1_p7_1, - _vq_quantmap__44c2_s1_p7_1, - 23, - 23 -}; - -static static_codebook _44c2_s1_p7_1 = { - 2, 529, - _vq_lengthlist__44c2_s1_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c2_s1_p7_1, - NULL, - &_vq_auxt__44c2_s1_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s1_p7_2.vqh b/lib/books/coupled/_44c2_s1_p7_2.vqh deleted file mode 100644 index f6bdd409..00000000 --- a/lib/books/coupled/_44c2_s1_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s1_p7_2_VQH_ -#define _V__44c2_s1_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s1_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c2_s1_p7_2[] = { - 2, 5, 5, 7, 7, 7, 7, 7, 7, 5, 5, 5, 7, 7, 7, 7, - 7, 7, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, - 8, 8, 8, 8, 7, 7, 7, 8, 7, 7, 8, 7, 7, 7, 7, 7, - 8, 7, 7, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c2_s1_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c2_s1_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s1_p7_2 = { - _vq_quantthresh__44c2_s1_p7_2, - _vq_quantmap__44c2_s1_p7_2, - 3, - 3 -}; - -static static_codebook _44c2_s1_p7_2 = { - 4, 81, - _vq_lengthlist__44c2_s1_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c2_s1_p7_2, - NULL, - &_vq_auxt__44c2_s1_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s2_p6_0.vqh b/lib/books/coupled/_44c2_s2_p6_0.vqh deleted file mode 100644 index 0faa5409..00000000 --- a/lib/books/coupled/_44c2_s2_p6_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s2_p6_0_VQH_ -#define _V__44c2_s2_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s2_p6_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c2_s2_p6_0[] = { - 1, 3, 2, 5, 4, 7, 6, 8, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c2_s2_p6_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c2_s2_p6_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s2_p6_0 = { - _vq_quantthresh__44c2_s2_p6_0, - _vq_quantmap__44c2_s2_p6_0, - 9, - 9 -}; - -static static_codebook _44c2_s2_p6_0 = { - 2, 81, - _vq_lengthlist__44c2_s2_p6_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c2_s2_p6_0, - NULL, - &_vq_auxt__44c2_s2_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s2_p7_0.vqh b/lib/books/coupled/_44c2_s2_p7_0.vqh deleted file mode 100644 index b8870ca0..00000000 --- a/lib/books/coupled/_44c2_s2_p7_0.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s2_p7_0_VQH_ -#define _V__44c2_s2_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s2_p7_0[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c2_s2_p7_0[] = { - 1, 3, 3, 7, 7,14,14, 5, 5, 5, 8, 9,15,14, 5, 5, - 5, 9, 8,15,15,15, 8, 9,10,10,15,15,15, 8, 6,10, - 9,15,14,14,10,12,12,12,14,14,14,13,10,12,10,14, - 14, -}; - -static float _vq_quantthresh__44c2_s2_p7_0[] = { - -167.5, -100.5, -33.5, 33.5, 100.5, 167.5, -}; - -static long _vq_quantmap__44c2_s2_p7_0[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s2_p7_0 = { - _vq_quantthresh__44c2_s2_p7_0, - _vq_quantmap__44c2_s2_p7_0, - 7, - 7 -}; - -static static_codebook _44c2_s2_p7_0 = { - 2, 49, - _vq_lengthlist__44c2_s2_p7_0, - 1, -520544256, 1624293376, 3, 0, - _vq_quantlist__44c2_s2_p7_0, - NULL, - &_vq_auxt__44c2_s2_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s2_p7_1.vqh b/lib/books/coupled/_44c2_s2_p7_1.vqh deleted file mode 100644 index efc84821..00000000 --- a/lib/books/coupled/_44c2_s2_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s2_p7_1_VQH_ -#define _V__44c2_s2_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s2_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c2_s2_p7_1[] = { - 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9,10,10, - 10,10,10,10,10,10,10, 7, 6, 6, 7, 7, 8, 8, 9, 9, - 10,10,10,10,10,11,11,11,10,10,10,10,11,11,14, 6, - 6, 7, 7, 8, 8, 9, 9,10,10,10,10,10,10,11,10,10, - 10,10,10,11,11,14, 8, 9, 8, 8, 9, 9,10,10,10,10, - 11,11,11,11,11,11,11,11,11,11,11,11,14, 9, 9, 8, - 8, 9, 9,10,10,10,11,11,11,11,11,11,11,11,11,11, - 11,11,12,14,11,11, 9, 9,10,10,10,10,11,11,11,11, - 11,11,12,12,11,11,11,11,12,12,14,15,14, 9, 9, 9, - 10,10,10,11,11,11,11,11,11,12,11,11,11,11,11,12, - 12,14,15,14,10,10,10,10,11,11,11,11,11,11,12,12, - 12,12,11,12,11,11,12,12,15,15,14,10,10,10,10,11, - 11,11,11,12,11,12,12,12,12,12,12,11,12,12,12,14, - 14,14,13,13,11,10,11,11,12,11,12,12,12,12,12,12, - 12,12,12,12,12,12,14,14,15,15,16,10,10,11,11,11, - 12,12,12,12,12,12,12,12,12,12,12,12,12,14,15,14, - 15,14,12,12,11,11,12,12,12,12,12,12,12,12,12,12, - 12,12,13,13,14,15,14,14,14,12,11,11,11,12,12,12, - 12,12,12,12,12,12,12,12,12,13,13,14,15,14,15,15, - 14,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 13,13,15,15,15,14,14,14,14,11,12,12,12,12,12,13, - 13,12,12,12,12,12,12,13,13,14,15,14,14,16,14,14, - 13,12,12,12,13,12,13,12,12,12,12,12,12,12,13,13, - 16,15,14,15,15,15,15,13,13,12,12,12,12,13,12,13, - 13,13,12,12,13,13,13,14,15,15,15,14,15,15,14,14, - 13,12,13,13,13,13,13,13,13,13,12,13,13,13,15,14, - 15,14,15,15,15,14,14,12,13,13,13,13,12,13,12,12, - 13,12,12,13,14,14,14,14,15,14,15,15,14,15,14,14, - 13,13,13,13,13,13,12,13,12,13,13,13,15,14,15,15, - 14,14,15,14,15,13,13,13,12,13,12,13,13,12,13,12, - 12,13,13,15,15,15,15,15,15,16,14,16,15,14,13,12, - 13,13,14,13,13,13,13,13,14,14,15,15,15,15,15,15, - 15,15,15,16,15,13,12,13,13,13,13,13,13,13,13,14, - 13, -}; - -static float _vq_quantthresh__44c2_s2_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c2_s2_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s2_p7_1 = { - _vq_quantthresh__44c2_s2_p7_1, - _vq_quantmap__44c2_s2_p7_1, - 23, - 23 -}; - -static static_codebook _44c2_s2_p7_1 = { - 2, 529, - _vq_lengthlist__44c2_s2_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c2_s2_p7_1, - NULL, - &_vq_auxt__44c2_s2_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s2_p7_2.vqh b/lib/books/coupled/_44c2_s2_p7_2.vqh deleted file mode 100644 index ebce281e..00000000 --- a/lib/books/coupled/_44c2_s2_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s2_p7_2_VQH_ -#define _V__44c2_s2_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s2_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c2_s2_p7_2[] = { - 2, 5, 5, 7, 7, 7, 7, 7, 7, 5, 5, 5, 7, 7, 7, 7, - 7, 7, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, - 8, 8, 8, 8, 7, 7, 7, 8, 7, 7, 8, 7, 7, 7, 7, 7, - 8, 7, 7, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c2_s2_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c2_s2_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s2_p7_2 = { - _vq_quantthresh__44c2_s2_p7_2, - _vq_quantmap__44c2_s2_p7_2, - 3, - 3 -}; - -static static_codebook _44c2_s2_p7_2 = { - 4, 81, - _vq_lengthlist__44c2_s2_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c2_s2_p7_2, - NULL, - &_vq_auxt__44c2_s2_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s3_p7_0.vqh b/lib/books/coupled/_44c2_s3_p7_0.vqh deleted file mode 100644 index b572a5e4..00000000 --- a/lib/books/coupled/_44c2_s3_p7_0.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s3_p7_0_VQH_ -#define _V__44c2_s3_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s3_p7_0[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c2_s3_p7_0[] = { - 1, 3, 3, 7, 7,14,14, 5, 5, 5, 8, 9,15,14, 5, 5, - 5, 9, 8,15,15,15, 8, 9,10,10,15,15,15, 8, 6,10, - 9,15,14,14,10,12,12,12,14,14,14,13,10,12,10,14, - 14, -}; - -static float _vq_quantthresh__44c2_s3_p7_0[] = { - -167.5, -100.5, -33.5, 33.5, 100.5, 167.5, -}; - -static long _vq_quantmap__44c2_s3_p7_0[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s3_p7_0 = { - _vq_quantthresh__44c2_s3_p7_0, - _vq_quantmap__44c2_s3_p7_0, - 7, - 7 -}; - -static static_codebook _44c2_s3_p7_0 = { - 2, 49, - _vq_lengthlist__44c2_s3_p7_0, - 1, -520544256, 1624293376, 3, 0, - _vq_quantlist__44c2_s3_p7_0, - NULL, - &_vq_auxt__44c2_s3_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s3_p7_1.vqh b/lib/books/coupled/_44c2_s3_p7_1.vqh deleted file mode 100644 index 1f965a47..00000000 --- a/lib/books/coupled/_44c2_s3_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s3_p7_1_VQH_ -#define _V__44c2_s3_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s3_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c2_s3_p7_1[] = { - 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9,10, - 10,10,10, 9, 9,10,10, 7, 6, 6, 8, 8, 8, 8, 9, 9, - 10,10,10,10,10,11,11,11,10,10,10,10,11,11,14, 6, - 6, 8, 7, 8, 8, 9, 9,10,10,10,10,10,10,11,10,10, - 10,10,10,11,11,14, 8, 8, 8, 8, 9, 9,10,10,10,10, - 11,11,11,11,11,11,11,11,11,11,11,11,14, 8, 8, 8, - 8, 9, 9,10,10,10,10,11,11,11,11,11,11,11,11,11, - 11,11,11,14,11,11, 9, 9,10,10,10,10,11,11,11,11, - 11,11,12,12,11,11,11,11,12,12,14,15,14, 9, 9, 9, - 10,10,10,11,11,11,11,11,11,12,11,11,11,11,11,12, - 12,14,14,14,10,10,10,10,11,11,11,11,11,11,12,12, - 12,12,11,12,11,11,12,12,14,14,14,11,11,10,10,10, - 11,11,11,12,11,11,12,12,12,12,12,11,11,12,12,14, - 14,14,13,13,11,10,11,11,11,11,12,12,12,12,12,12, - 12,12,12,12,12,12,14,14,15,15,15,10,10,11,11,11, - 12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14, - 15,14,11,12,11,11,12,12,12,12,12,12,12,12,12,12, - 12,12,13,13,14,15,14,14,14,12,11,11,11,11,12,12, - 12,12,12,12,12,12,12,12,12,13,13,14,15,14,15,15, - 14,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 13,13,15,14,15,14,14,14,14,11,12,12,11,12,12,13, - 13,12,12,12,12,12,12,13,13,14,14,14,14,16,14,14, - 13,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13, - 16,15,14,15,15,15,15,13,13,12,12,12,12,13,12,13, - 13,13,12,12,13,13,13,14,14,15,15,14,15,15,14,14, - 13,12,13,13,13,13,13,13,13,12,12,13,13,13,15,14, - 15,14,15,14,15,14,14,12,13,13,13,13,12,13,12,12, - 13,12,12,13,14,14,14,14,15,14,15,15,14,15,14,14, - 13,13,13,12,13,13,12,13,12,12,13,13,15,14,15,15, - 14,14,15,14,14,13,13,12,12,13,12,13,13,12,12,12, - 12,13,13,15,15,15,15,15,15,16,14,15,15,14,13,12, - 13,13,13,13,13,13,13,13,14,14,15,15,15,15,15,15, - 15,15,15,16,15,13,12,13,13,13,13,13,13,13,13,14, - 13, -}; - -static float _vq_quantthresh__44c2_s3_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c2_s3_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s3_p7_1 = { - _vq_quantthresh__44c2_s3_p7_1, - _vq_quantmap__44c2_s3_p7_1, - 23, - 23 -}; - -static static_codebook _44c2_s3_p7_1 = { - 2, 529, - _vq_lengthlist__44c2_s3_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c2_s3_p7_1, - NULL, - &_vq_auxt__44c2_s3_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_s3_p7_2.vqh b/lib/books/coupled/_44c2_s3_p7_2.vqh deleted file mode 100644 index b51f25e6..00000000 --- a/lib/books/coupled/_44c2_s3_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c2_s3_p7_2_VQH_ -#define _V__44c2_s3_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c2_s3_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c2_s3_p7_2[] = { - 2, 5, 5, 7, 7, 7, 7, 7, 7, 5, 5, 5, 7, 7, 7, 7, - 7, 7, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, - 8, 8, 8, 8, 7, 7, 7, 8, 7, 7, 8, 7, 7, 7, 7, 7, - 8, 7, 7, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c2_s3_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c2_s3_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c2_s3_p7_2 = { - _vq_quantthresh__44c2_s3_p7_2, - _vq_quantmap__44c2_s3_p7_2, - 3, - 3 -}; - -static static_codebook _44c2_s3_p7_2 = { - 4, 81, - _vq_lengthlist__44c2_s3_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c2_s3_p7_2, - NULL, - &_vq_auxt__44c2_s3_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c2_short.vqh b/lib/books/coupled/_44c2_short.vqh deleted file mode 100644 index cf69d2ce..00000000 --- a/lib/books/coupled/_44c2_short.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c2_short_VQH_ -#define _V__44c2_short_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c2_short[] = { - 8,17,17,17,17, 8,10,14,16,10, 9,10,11,17,17,17, - 17, 7, 5, 6, 8,17,17,17,17, 8, 5, 5, 8,17,17,17, - 17, 9, 6, 5, 7,16,16,16, 6,16,16,16,16, 3, 3,10, - 9,16,16,16,16, 3, 2, 7,13,10, 5, 4, 5, 8, 6, 8, -}; - -static static_codebook _huff_book__44c2_short = { - 2, 64, - _huff_lengthlist__44c2_short, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_long.vqh b/lib/books/coupled/_44c3_long.vqh deleted file mode 100644 index a9716376..00000000 --- a/lib/books/coupled/_44c3_long.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c3_long_VQH_ -#define _V__44c3_long_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c3_long[] = { - 3, 9,12,12,10, 7, 9,11, 9, 4, 5, 7, 8, 6, 8,12, - 11, 4, 4, 6, 7, 8, 8,13,11, 6, 5, 6, 6,11,10,13, - 9, 7, 6, 5, 4,13,12, 8, 5,18,18,18,18, 2, 5,11, - 9,18,18,18,18, 5, 6,12,11,15,14,12, 7,11,11, 9, -}; - -static static_codebook _huff_book__44c3_long = { - 2, 64, - _huff_lengthlist__44c3_long, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s0_p1_0.vqh b/lib/books/coupled/_44c3_s0_p1_0.vqh deleted file mode 100644 index 813d3739..00000000 --- a/lib/books/coupled/_44c3_s0_p1_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s0_p1_0_VQH_ -#define _V__44c3_s0_p1_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s0_p1_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c3_s0_p1_0[] = { - 2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, - 7, 7, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 8, - 7, 0, 0, 0, 7, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0, - 0, 0, 5, 6, 7, 0, 0, 0, 7, 8, 0, 0, 0, 7, 7, 0, - 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 7, 7, 0, 0, - 0, 7, 7, 0, 0, 0, 9, 8, 0, 0, 0, 0, 0, 0, 0, 5, - 7, 7, 0, 0, 0, 6, 7, 0, 0, 0, 7, 7, 0, 0, 0, 8, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 8, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, - 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5, 7, 8, 0, - 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7,10,10, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, 0, 0, - 10,10, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0, 0, 9, - 9, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c3_s0_p1_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c3_s0_p1_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s0_p1_0 = { - _vq_quantthresh__44c3_s0_p1_0, - _vq_quantmap__44c3_s0_p1_0, - 5, - 5 -}; - -static static_codebook _44c3_s0_p1_0 = { - 4, 625, - _vq_lengthlist__44c3_s0_p1_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c3_s0_p1_0, - NULL, - &_vq_auxt__44c3_s0_p1_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s0_p2_0.vqh b/lib/books/coupled/_44c3_s0_p2_0.vqh deleted file mode 100644 index 9a7305dc..00000000 --- a/lib/books/coupled/_44c3_s0_p2_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s0_p2_0_VQH_ -#define _V__44c3_s0_p2_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s0_p2_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c3_s0_p2_0[] = { - 1, 4, 4, 7, 7, 0, 0, 0, 0, 0, 4, 4, 7, 7, 0, 0, - 0, 0, 0, 4, 4, 7, 7, 0, 0, 0, 0, 0, 6, 6, 7, 7, - 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, - 8, 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, - 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c3_s0_p2_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c3_s0_p2_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s0_p2_0 = { - _vq_quantthresh__44c3_s0_p2_0, - _vq_quantmap__44c3_s0_p2_0, - 9, - 9 -}; - -static static_codebook _44c3_s0_p2_0 = { - 2, 81, - _vq_lengthlist__44c3_s0_p2_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c3_s0_p2_0, - NULL, - &_vq_auxt__44c3_s0_p2_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s0_p3_0.vqh b/lib/books/coupled/_44c3_s0_p3_0.vqh deleted file mode 100644 index 476d5d4e..00000000 --- a/lib/books/coupled/_44c3_s0_p3_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s0_p3_0_VQH_ -#define _V__44c3_s0_p3_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s0_p3_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c3_s0_p3_0[] = { - 2, 4, 4, 6, 6, 7, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 5, 7, 7, 8, 8, 9, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 6, 6, 8, 8, 9, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9,10,10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, - 10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,10,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c3_s0_p3_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c3_s0_p3_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s0_p3_0 = { - _vq_quantthresh__44c3_s0_p3_0, - _vq_quantmap__44c3_s0_p3_0, - 17, - 17 -}; - -static static_codebook _44c3_s0_p3_0 = { - 2, 289, - _vq_lengthlist__44c3_s0_p3_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c3_s0_p3_0, - NULL, - &_vq_auxt__44c3_s0_p3_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s0_p4_0.vqh b/lib/books/coupled/_44c3_s0_p4_0.vqh deleted file mode 100644 index 019df198..00000000 --- a/lib/books/coupled/_44c3_s0_p4_0.vqh +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s0_p4_0_VQH_ -#define _V__44c3_s0_p4_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s0_p4_0[] = { - 7, - 6, - 8, - 5, - 9, - 4, - 10, - 3, - 11, - 2, - 12, - 1, - 13, - 0, - 14, -}; - -static long _vq_lengthlist__44c3_s0_p4_0[] = { - 1, 3, 3, 7, 7, 9, 9,12,11,20,20,20,20,20,20, 5, - 5, 5, 8, 8,10,10,12,13,20,20,20,20,20,20, 6, 5, - 5, 8, 8,10,10,13,13,20,20,20,20,20,20,20, 8, 8, - 9, 9,10,10,13,13,20,20,20,20,20,20,20, 8, 8, 9, - 9,10,11,13,13,20,20,20,20,20,20,20,12,12,10,10, - 11,11,14,14,20,20,20,20,20,20,20,13,13,10,10,11, - 11,14,15,20,20,20,20,20,20,20,20,20,12,12,12,12, - 14,15,20,20,20,20,20,20,20,20,20,12,11,12,12,15, - 14,20,20,20,20,20,20,20,20,20,15,16,12,13,14,16, - 20,20,20,20,20,20,20,20,20,18,16,13,13,15,15,20, - 20,20,20,20,20,20,20,20,20,20,15,15,15,16,20,20, - 20,20,20,20,20,20,20,20,20,15,15,16,16,20,20,20, - 20,20,20,20,20,20,20,20,18,18,16,17,20,20,20,20, - 20,20,20,20,20,20,20,18,20,17,16,20,20,20,20,20, - 19, -}; - -static float _vq_quantthresh__44c3_s0_p4_0[] = { - -45.5, -38.5, -31.5, -24.5, -17.5, -10.5, -3.5, 3.5, - 10.5, 17.5, 24.5, 31.5, 38.5, 45.5, -}; - -static long _vq_quantmap__44c3_s0_p4_0[] = { - 13, 11, 9, 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, 12, 14, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s0_p4_0 = { - _vq_quantthresh__44c3_s0_p4_0, - _vq_quantmap__44c3_s0_p4_0, - 15, - 15 -}; - -static static_codebook _44c3_s0_p4_0 = { - 2, 225, - _vq_lengthlist__44c3_s0_p4_0, - 1, -524779520, 1616642048, 4, 0, - _vq_quantlist__44c3_s0_p4_0, - NULL, - &_vq_auxt__44c3_s0_p4_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s0_p4_1.vqh b/lib/books/coupled/_44c3_s0_p4_1.vqh deleted file mode 100644 index 0619267b..00000000 --- a/lib/books/coupled/_44c3_s0_p4_1.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s0_p4_1_VQH_ -#define _V__44c3_s0_p4_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s0_p4_1[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44c3_s0_p4_1[] = { - 2, 4, 4, 6, 6, 6, 6, 8, 5, 4, 6, 6, 7, 7, 8, 4, - 4, 6, 6, 7, 7, 8, 6, 6, 6, 6, 7, 7, 8, 8, 8, 6, - 6, 7, 7, 8, 8, 8, 7, 7, 7, 7, 8, 8, 8, 6, 6, 7, - 7, -}; - -static float _vq_quantthresh__44c3_s0_p4_1[] = { - -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, -}; - -static long _vq_quantmap__44c3_s0_p4_1[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s0_p4_1 = { - _vq_quantthresh__44c3_s0_p4_1, - _vq_quantmap__44c3_s0_p4_1, - 7, - 7 -}; - -static static_codebook _44c3_s0_p4_1 = { - 2, 49, - _vq_lengthlist__44c3_s0_p4_1, - 1, -533200896, 1611661312, 3, 0, - _vq_quantlist__44c3_s0_p4_1, - NULL, - &_vq_auxt__44c3_s0_p4_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s0_p5_0.vqh b/lib/books/coupled/_44c3_s0_p5_0.vqh deleted file mode 100644 index 7f05bfbf..00000000 --- a/lib/books/coupled/_44c3_s0_p5_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s0_p5_0_VQH_ -#define _V__44c3_s0_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s0_p5_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c3_s0_p5_0[] = { - 1, 6, 6, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, - 8, 8, 0, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0, 0, 9, - 8, 0, 0, 0, 8, 8, 0, 0, 0,12,12, 0, 0, 0, 0, 0, - 0, 0, 6, 8, 8, 0, 0, 0, 8, 9, 0, 0, 0, 8, 8, 0, - 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 8, 7, 0, 0, - 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, - 8, 8, 0, 0, 0, 7, 8, 0, 0, 0, 8, 8, 0, 0, 0,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 9, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 7, - 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, 8, 9, 0, - 0, 0, 8, 8, 0, 0, 0, 7, 8, 0, 0, 0,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,12,12, 0, 0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0, - 11,11, 0, 0, 0, 0, 0, 0, 0, 8,12,12, 0, 0, 0,10, - 10, 0, 0, 0,10,10, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c3_s0_p5_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c3_s0_p5_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s0_p5_0 = { - _vq_quantthresh__44c3_s0_p5_0, - _vq_quantmap__44c3_s0_p5_0, - 5, - 5 -}; - -static static_codebook _44c3_s0_p5_0 = { - 4, 625, - _vq_lengthlist__44c3_s0_p5_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c3_s0_p5_0, - NULL, - &_vq_auxt__44c3_s0_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s0_p6_0.vqh b/lib/books/coupled/_44c3_s0_p6_0.vqh deleted file mode 100644 index de784f5e..00000000 --- a/lib/books/coupled/_44c3_s0_p6_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s0_p6_0_VQH_ -#define _V__44c3_s0_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s0_p6_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c3_s0_p6_0[] = { - 1, 4, 4, 7, 7, 9,10,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 7, 7,10,10,12,12, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 4, 7, 7,10,10,12,12, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 6, 8, 8,10,10,13,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8, 7,10,10,13,13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,11,11,13,13, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,11,11,14,13, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,12,12,14,14, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,14, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,13, - 15,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13, - 12,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 14,14,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,16,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,16,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,16,16, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c3_s0_p6_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c3_s0_p6_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s0_p6_0 = { - _vq_quantthresh__44c3_s0_p6_0, - _vq_quantmap__44c3_s0_p6_0, - 17, - 17 -}; - -static static_codebook _44c3_s0_p6_0 = { - 2, 289, - _vq_lengthlist__44c3_s0_p6_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c3_s0_p6_0, - NULL, - &_vq_auxt__44c3_s0_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s0_p7_0.vqh b/lib/books/coupled/_44c3_s0_p7_0.vqh deleted file mode 100644 index 2eecc377..00000000 --- a/lib/books/coupled/_44c3_s0_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s0_p7_0_VQH_ -#define _V__44c3_s0_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s0_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c3_s0_p7_0[] = { - 1, 3, 3, 7, 7,12,12,15,14,15,15,15,15, 5, 5, 5, - 9, 9,14,13,15,15,15,15,15,15, 5, 5, 5, 9, 9,13, - 12,15,15,15,15,15,15,15, 8, 9,10,10,13,13,15,15, - 15,15,15,15,15, 9, 6,10, 9,13,13,15,15,15,15,15, - 15,15,10,13,10,11,13,15,15,15,15,15,15,15,15,12, - 10,12,10,13,15,15,15,15,15,15,15,15,15,15,15,13, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15, -}; - -static float _vq_quantthresh__44c3_s0_p7_0[] = { - -368.5, -301.5, -234.5, -167.5, -100.5, -33.5, 33.5, 100.5, - 167.5, 234.5, 301.5, 368.5, -}; - -static long _vq_quantmap__44c3_s0_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s0_p7_0 = { - _vq_quantthresh__44c3_s0_p7_0, - _vq_quantmap__44c3_s0_p7_0, - 13, - 13 -}; - -static static_codebook _44c3_s0_p7_0 = { - 2, 169, - _vq_lengthlist__44c3_s0_p7_0, - 1, -518447104, 1624293376, 4, 0, - _vq_quantlist__44c3_s0_p7_0, - NULL, - &_vq_auxt__44c3_s0_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s0_p7_1.vqh b/lib/books/coupled/_44c3_s0_p7_1.vqh deleted file mode 100644 index e810109e..00000000 --- a/lib/books/coupled/_44c3_s0_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s0_p7_1_VQH_ -#define _V__44c3_s0_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s0_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c3_s0_p7_1[] = { - 2, 4, 4, 6, 6, 6, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 6, 5, 5, 7, 7, 8, 8, 8, 8, - 9, 9, 9, 9,10,10,10,10, 9, 9, 9, 9,10,10,13, 6, - 5, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10, 9, - 9, 9, 9,10,10,13, 8, 8, 7, 7, 8, 8, 9, 9, 9,10, - 10,10,10,10,10,10,10,10,10,10,11,11,13, 8, 8, 7, - 7, 8, 8, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10, - 10,11,11,13,11,11, 8, 8, 9, 9, 9, 9,10,10,10,10, - 11,10,11,11,10,10,10,10,11,11,13,13,13, 8, 8, 9, - 8, 9,10,10,10,10,10,10,10,11,11,10,11,10,10,11, - 11,14,14,14,10,10, 9, 9,10,10,10,10,10,10,11,11, - 11,11,11,11,11,11,11,11,14,13,13,10,10, 9, 9,10, - 10,10,10,10,11,11,10,11,11,11,11,11,11,11,11,14, - 15,14,12,12,10,10,10,10,10,11,11,11,11,11,11,11, - 11,11,11,11,11,12,14,14,14,14,13,10, 9,10,10,10, - 11,11,11,11,11,11,11,11,11,11,11,11,11,14,14,14, - 14,14,11,11,10,10,11,11,11,11,11,11,11,12,11,11, - 11,11,11,12,15,14,14,13,13,11,11,10,10,11,11,11, - 11,11,11,12,11,11,11,11,11,11,12,13,14,14,13,14, - 13,12,11,11,11,11,11,11,12,12,11,11,11,11,11,11, - 12,12,14,14,13,14,13,14,13,10,11,11,11,11,11,12, - 12,12,11,11,11,11,11,12,12,14,14,13,14,13,13,13, - 12,12,11,11,12,12,12,12,11,11,11,11,12,11,12,12, - 13,14,15,14,13,14,14,12,12,11,11,11,11,12,12,11, - 12,11,11,11,11,12,12,14,14,14,14,14,14,14,14,13, - 12,12,12,12,11,11,12,11,12,11,11,11,12,12,14,13, - 13,13,13,13,14,13,14,12,12,11,12,12,11,12,12,11, - 11,11,12,12,12,13,14,13,13,13,14,13,14,13,12,12, - 12,12,12,11,12,12,11,12,11,12,12,12,13,13,13,14, - 13,13,13,14,13,12,13,11,11,12,11,12,12,11,11,11, - 11,12,12,14,14,15,14,14,15,14,15,14,14,13,12,13, - 12,12,12,12,12,12,12,13,13,13,14,15,14,13,14,14, - 14,14,15,14,14,12,12,12,12,12,12,12,12,12,12,13, - 13, -}; - -static float _vq_quantthresh__44c3_s0_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c3_s0_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s0_p7_1 = { - _vq_quantthresh__44c3_s0_p7_1, - _vq_quantmap__44c3_s0_p7_1, - 23, - 23 -}; - -static static_codebook _44c3_s0_p7_1 = { - 2, 529, - _vq_lengthlist__44c3_s0_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c3_s0_p7_1, - NULL, - &_vq_auxt__44c3_s0_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s0_p7_2.vqh b/lib/books/coupled/_44c3_s0_p7_2.vqh deleted file mode 100644 index b61c812b..00000000 --- a/lib/books/coupled/_44c3_s0_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s0_p7_2_VQH_ -#define _V__44c3_s0_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s0_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c3_s0_p7_2[] = { - 3, 5, 5, 7, 6, 6, 7, 6, 6, 6, 6, 6, 7, 7, 6, 7, - 7, 6, 5, 6, 6, 7, 7, 7, 7, 6, 6, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, - 7, 6, 7, 7, 7, 7, 7, 6, 6, 6, 7, 7, 7, 6, 7, 6, - 6, -}; - -static float _vq_quantthresh__44c3_s0_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c3_s0_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s0_p7_2 = { - _vq_quantthresh__44c3_s0_p7_2, - _vq_quantmap__44c3_s0_p7_2, - 3, - 3 -}; - -static static_codebook _44c3_s0_p7_2 = { - 4, 81, - _vq_lengthlist__44c3_s0_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c3_s0_p7_2, - NULL, - &_vq_auxt__44c3_s0_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s1_p5_0.vqh b/lib/books/coupled/_44c3_s1_p5_0.vqh deleted file mode 100644 index 271b8f43..00000000 --- a/lib/books/coupled/_44c3_s1_p5_0.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s1_p5_0_VQH_ -#define _V__44c3_s1_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s1_p5_0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c3_s1_p5_0[] = { - 1, 3, 3, 0, 0, 0, 0, 0, 0, 4, 5, 5, 0, 0, 0, 0, - 0, 0, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c3_s1_p5_0[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c3_s1_p5_0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s1_p5_0 = { - _vq_quantthresh__44c3_s1_p5_0, - _vq_quantmap__44c3_s1_p5_0, - 3, - 3 -}; - -static static_codebook _44c3_s1_p5_0 = { - 4, 81, - _vq_lengthlist__44c3_s1_p5_0, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c3_s1_p5_0, - NULL, - &_vq_auxt__44c3_s1_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s1_p6_0.vqh b/lib/books/coupled/_44c3_s1_p6_0.vqh deleted file mode 100644 index ed49aa50..00000000 --- a/lib/books/coupled/_44c3_s1_p6_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s1_p6_0_VQH_ -#define _V__44c3_s1_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s1_p6_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c3_s1_p6_0[] = { - 1, 2, 3, 4, 5, 9, 9,11,11, 0, 0, 0, 0, 0, 0, 0, - 0, 0,12,12,13,13, 9, 9,11,11, 0, 0, 0, 0, 0, 0, - 0, 0, 0,12,12,13,13, 9, 9,12,12, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,19,10,10,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,19,18, 9, 9,12,12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,13,12, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,13,13, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,13,13, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,13, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12, - 14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, - 12,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 13,13,14,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,17,16, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c3_s1_p6_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c3_s1_p6_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s1_p6_0 = { - _vq_quantthresh__44c3_s1_p6_0, - _vq_quantmap__44c3_s1_p6_0, - 17, - 17 -}; - -static static_codebook _44c3_s1_p6_0 = { - 2, 289, - _vq_lengthlist__44c3_s1_p6_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c3_s1_p6_0, - NULL, - &_vq_auxt__44c3_s1_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s1_p7_0.vqh b/lib/books/coupled/_44c3_s1_p7_0.vqh deleted file mode 100644 index fa57a240..00000000 --- a/lib/books/coupled/_44c3_s1_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s1_p7_0_VQH_ -#define _V__44c3_s1_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s1_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c3_s1_p7_0[] = { - 1, 3, 3, 7, 7,12,12,15,14,15,15,15,15, 5, 5, 5, - 9, 9,14,13,15,15,15,15,15,15, 5, 5, 5, 9, 9,13, - 12,15,15,15,15,15,15,15, 8, 9,10,10,13,13,15,15, - 15,15,15,15,15, 9, 6,10, 9,13,13,15,15,15,15,15, - 15,15,10,13,10,11,13,15,15,15,15,15,15,15,15,12, - 10,12,10,13,15,15,15,15,15,15,15,15,15,15,15,13, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15, -}; - -static float _vq_quantthresh__44c3_s1_p7_0[] = { - -368.5, -301.5, -234.5, -167.5, -100.5, -33.5, 33.5, 100.5, - 167.5, 234.5, 301.5, 368.5, -}; - -static long _vq_quantmap__44c3_s1_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s1_p7_0 = { - _vq_quantthresh__44c3_s1_p7_0, - _vq_quantmap__44c3_s1_p7_0, - 13, - 13 -}; - -static static_codebook _44c3_s1_p7_0 = { - 2, 169, - _vq_lengthlist__44c3_s1_p7_0, - 1, -518447104, 1624293376, 4, 0, - _vq_quantlist__44c3_s1_p7_0, - NULL, - &_vq_auxt__44c3_s1_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s1_p7_1.vqh b/lib/books/coupled/_44c3_s1_p7_1.vqh deleted file mode 100644 index 3b7e1106..00000000 --- a/lib/books/coupled/_44c3_s1_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s1_p7_1_VQH_ -#define _V__44c3_s1_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s1_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c3_s1_p7_1[] = { - 2, 4, 4, 6, 5, 6, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 6, 5, 5, 7, 7, 8, 8, 8, 8, - 9, 9, 9, 9,10,10,10,10, 9, 9, 9, 9,10,10,13, 6, - 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10, 9, - 9, 9, 9,10,10,13, 8, 8, 7, 7, 8, 8, 9, 9, 9,10, - 10,10,10,10,10,10,10,10,10,10,11,11,13, 8, 8, 7, - 7, 8, 8, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10, - 10,11,11,13,11,11, 8, 8, 9, 9, 9, 9,10,10,10,10, - 10,10,11,11,10,11,10,10,11,11,13,13,13, 8, 8, 9, - 8, 9,10,10,10,10,10,10,10,11,11,10,11,10,10,11, - 11,14,14,14,10,10, 9, 9,10,10,10,10,10,10,11,11, - 11,11,11,11,11,11,11,11,14,13,13,10,10, 9, 9,10, - 10,10,10,10,11,11,10,11,11,11,11,11,11,11,11,14, - 15,14,12,12,10,10,10,10,10,11,11,11,11,11,11,11, - 11,11,11,11,12,12,14,14,14,14,13,10, 9,10,10,10, - 11,11,11,11,11,11,11,11,11,11,11,11,11,14,14,14, - 14,14,11,11,10,10,11,11,11,11,11,11,11,12,11,11, - 11,11,11,12,15,14,14,13,13,11,11,10,10,11,11,11, - 11,11,11,12,11,11,11,11,11,11,12,13,14,14,13,14, - 13,12,11,11,11,11,11,11,12,12,11,11,11,11,11,11, - 12,12,14,14,13,14,13,14,13,10,11,11,11,11,11,12, - 12,11,11,11,11,11,11,12,12,14,14,13,14,13,13,13, - 12,12,11,11,12,12,12,12,11,11,11,11,12,11,12,12, - 13,14,15,14,13,14,14,12,12,11,11,11,11,12,12,11, - 12,11,11,11,11,12,12,14,14,14,14,14,14,14,14,13, - 12,12,12,12,11,11,12,11,12,11,11,11,12,12,14,13, - 13,13,13,13,14,13,14,12,12,11,12,12,11,12,12,11, - 11,11,12,12,12,13,14,13,13,13,14,13,14,13,12,12, - 12,12,12,11,12,12,11,12,11,12,12,12,13,13,13,14, - 13,13,13,14,13,12,13,11,11,12,11,12,12,11,11,11, - 11,12,12,14,14,15,14,14,15,14,15,14,14,13,12,13, - 12,12,12,12,12,12,12,13,13,13,14,15,14,13,14,14, - 14,14,15,14,14,12,12,12,12,12,12,12,12,12,12,13, - 13, -}; - -static float _vq_quantthresh__44c3_s1_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c3_s1_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s1_p7_1 = { - _vq_quantthresh__44c3_s1_p7_1, - _vq_quantmap__44c3_s1_p7_1, - 23, - 23 -}; - -static static_codebook _44c3_s1_p7_1 = { - 2, 529, - _vq_lengthlist__44c3_s1_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c3_s1_p7_1, - NULL, - &_vq_auxt__44c3_s1_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s1_p7_2.vqh b/lib/books/coupled/_44c3_s1_p7_2.vqh deleted file mode 100644 index 88aa17f9..00000000 --- a/lib/books/coupled/_44c3_s1_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s1_p7_2_VQH_ -#define _V__44c3_s1_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s1_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c3_s1_p7_2[] = { - 3, 5, 5, 7, 6, 6, 7, 6, 6, 5, 5, 5, 7, 7, 7, 7, - 7, 7, 5, 5, 5, 7, 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, - 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c3_s1_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c3_s1_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s1_p7_2 = { - _vq_quantthresh__44c3_s1_p7_2, - _vq_quantmap__44c3_s1_p7_2, - 3, - 3 -}; - -static static_codebook _44c3_s1_p7_2 = { - 4, 81, - _vq_lengthlist__44c3_s1_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c3_s1_p7_2, - NULL, - &_vq_auxt__44c3_s1_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s2_p6_0.vqh b/lib/books/coupled/_44c3_s2_p6_0.vqh deleted file mode 100644 index e169d0b8..00000000 --- a/lib/books/coupled/_44c3_s2_p6_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s2_p6_0_VQH_ -#define _V__44c3_s2_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s2_p6_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c3_s2_p6_0[] = { - 1, 2, 3, 4, 5, 6, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c3_s2_p6_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c3_s2_p6_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s2_p6_0 = { - _vq_quantthresh__44c3_s2_p6_0, - _vq_quantmap__44c3_s2_p6_0, - 9, - 9 -}; - -static static_codebook _44c3_s2_p6_0 = { - 2, 81, - _vq_lengthlist__44c3_s2_p6_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c3_s2_p6_0, - NULL, - &_vq_auxt__44c3_s2_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s2_p7_0.vqh b/lib/books/coupled/_44c3_s2_p7_0.vqh deleted file mode 100644 index 724e2cc0..00000000 --- a/lib/books/coupled/_44c3_s2_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s2_p7_0_VQH_ -#define _V__44c3_s2_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s2_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c3_s2_p7_0[] = { - 1, 3, 3, 7, 7,12,12,15,14,15,15,15,15, 5, 5, 5, - 9, 9,14,13,15,15,15,15,15,15, 5, 5, 5, 9, 9,13, - 12,15,15,15,15,15,15,15, 8, 9,10,10,13,13,15,15, - 15,15,15,15,15, 9, 6,10, 9,13,13,15,15,15,15,15, - 15,15,10,13,10,11,13,15,15,15,15,15,15,15,15,12, - 10,12,10,13,15,15,15,15,15,15,15,15,15,15,15,13, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15, -}; - -static float _vq_quantthresh__44c3_s2_p7_0[] = { - -368.5, -301.5, -234.5, -167.5, -100.5, -33.5, 33.5, 100.5, - 167.5, 234.5, 301.5, 368.5, -}; - -static long _vq_quantmap__44c3_s2_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s2_p7_0 = { - _vq_quantthresh__44c3_s2_p7_0, - _vq_quantmap__44c3_s2_p7_0, - 13, - 13 -}; - -static static_codebook _44c3_s2_p7_0 = { - 2, 169, - _vq_lengthlist__44c3_s2_p7_0, - 1, -518447104, 1624293376, 4, 0, - _vq_quantlist__44c3_s2_p7_0, - NULL, - &_vq_auxt__44c3_s2_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s2_p7_1.vqh b/lib/books/coupled/_44c3_s2_p7_1.vqh deleted file mode 100644 index 0800fa96..00000000 --- a/lib/books/coupled/_44c3_s2_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s2_p7_1_VQH_ -#define _V__44c3_s2_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s2_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c3_s2_p7_1[] = { - 2, 4, 4, 5, 5, 6, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 6, 5, 6, 7, 7, 8, 8, 8, 8, - 9, 9, 9, 9,10,10,10,10, 9, 9, 9, 9,10,10,13, 6, - 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10, 9, - 9, 9, 9,10,10,13, 8, 8, 7, 7, 8, 8, 9, 9, 9,10, - 10,10,10,10,10,10,10,10,10,10,11,11,13, 8, 8, 7, - 7, 8, 8, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10, - 10,11,11,13,11,11, 8, 8, 9, 9, 9, 9,10,10,10,10, - 11,10,11,11,10,10,10,10,11,11,13,13,13, 8, 8, 9, - 8, 9,10,10,10,10,10,10,10,11,11,10,11,10,10,11, - 11,14,14,14,10,10, 9, 9,10,10,10,10,10,10,11,11, - 11,11,11,11,11,11,11,11,14,13,13,10,10, 9, 9,10, - 10,10,10,10,11,11,10,11,11,11,11,11,11,11,11,14, - 15,14,12,12,10,10,10,10,10,11,11,11,11,11,11,11, - 11,11,11,11,11,12,14,14,14,14,13,10, 9,10,10,10, - 11,11,11,11,11,11,11,11,11,11,11,11,11,14,14,14, - 14,14,11,11,10,10,11,11,11,11,11,11,11,12,11,11, - 11,11,11,12,15,14,14,13,13,11,11,10,10,11,11,11, - 11,11,11,12,11,11,11,11,11,11,12,13,14,14,13,14, - 13,12,11,11,11,11,11,11,12,12,11,11,11,11,11,11, - 12,12,14,14,13,14,13,14,13,10,11,11,11,11,11,12, - 12,12,11,11,11,11,11,12,12,14,14,13,14,13,13,13, - 12,12,11,11,12,12,12,12,11,11,11,11,12,11,12,12, - 13,14,15,14,13,14,14,12,12,11,11,11,11,12,12,11, - 12,11,11,11,11,12,12,14,14,14,14,14,14,14,14,13, - 12,12,12,12,11,11,12,11,12,11,11,11,12,12,14,13, - 13,13,13,13,14,13,14,12,12,11,12,12,11,12,12,11, - 11,11,12,12,12,13,14,13,13,13,14,13,14,13,12,12, - 12,12,12,11,12,12,11,12,11,12,12,12,13,13,13,14, - 13,13,13,14,13,12,13,11,11,12,11,12,12,11,11,11, - 11,12,12,14,14,15,14,14,15,14,15,14,14,13,12,13, - 12,12,12,12,12,12,12,13,13,13,14,15,14,13,14,14, - 14,14,15,14,14,12,12,12,12,12,12,12,12,12,12,13, - 13, -}; - -static float _vq_quantthresh__44c3_s2_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c3_s2_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s2_p7_1 = { - _vq_quantthresh__44c3_s2_p7_1, - _vq_quantmap__44c3_s2_p7_1, - 23, - 23 -}; - -static static_codebook _44c3_s2_p7_1 = { - 2, 529, - _vq_lengthlist__44c3_s2_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c3_s2_p7_1, - NULL, - &_vq_auxt__44c3_s2_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s2_p7_2.vqh b/lib/books/coupled/_44c3_s2_p7_2.vqh deleted file mode 100644 index bd68ce86..00000000 --- a/lib/books/coupled/_44c3_s2_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s2_p7_2_VQH_ -#define _V__44c3_s2_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s2_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c3_s2_p7_2[] = { - 3, 5, 5, 7, 6, 6, 7, 6, 6, 5, 5, 5, 7, 7, 7, 7, - 7, 7, 5, 5, 5, 7, 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, - 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c3_s2_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c3_s2_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s2_p7_2 = { - _vq_quantthresh__44c3_s2_p7_2, - _vq_quantmap__44c3_s2_p7_2, - 3, - 3 -}; - -static static_codebook _44c3_s2_p7_2 = { - 4, 81, - _vq_lengthlist__44c3_s2_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c3_s2_p7_2, - NULL, - &_vq_auxt__44c3_s2_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s3_p7_0.vqh b/lib/books/coupled/_44c3_s3_p7_0.vqh deleted file mode 100644 index 1042aa8c..00000000 --- a/lib/books/coupled/_44c3_s3_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s3_p7_0_VQH_ -#define _V__44c3_s3_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s3_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c3_s3_p7_0[] = { - 1, 3, 3, 7, 7,12,12,15,14,15,15,15,15, 5, 5, 5, - 9, 9,14,13,15,15,15,15,15,15, 5, 5, 5, 9, 9,13, - 12,15,15,15,15,15,15,15, 8, 9,10,10,13,13,15,15, - 15,15,15,15,15, 9, 6,10, 9,13,13,15,15,15,15,15, - 15,15,10,13,10,11,13,15,15,15,15,15,15,15,15,12, - 10,12,10,13,15,15,15,15,15,15,15,15,15,15,15,13, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15, -}; - -static float _vq_quantthresh__44c3_s3_p7_0[] = { - -368.5, -301.5, -234.5, -167.5, -100.5, -33.5, 33.5, 100.5, - 167.5, 234.5, 301.5, 368.5, -}; - -static long _vq_quantmap__44c3_s3_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s3_p7_0 = { - _vq_quantthresh__44c3_s3_p7_0, - _vq_quantmap__44c3_s3_p7_0, - 13, - 13 -}; - -static static_codebook _44c3_s3_p7_0 = { - 2, 169, - _vq_lengthlist__44c3_s3_p7_0, - 1, -518447104, 1624293376, 4, 0, - _vq_quantlist__44c3_s3_p7_0, - NULL, - &_vq_auxt__44c3_s3_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s3_p7_1.vqh b/lib/books/coupled/_44c3_s3_p7_1.vqh deleted file mode 100644 index bbc4101f..00000000 --- a/lib/books/coupled/_44c3_s3_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s3_p7_1_VQH_ -#define _V__44c3_s3_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s3_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c3_s3_p7_1[] = { - 2, 4, 4, 5, 5, 6, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, - 9, 9, 9, 8, 9, 9, 9, 6, 5, 6, 7, 7, 8, 8, 8, 8, - 9, 9, 9, 9,10,10,10,10, 9, 9, 9, 9,10,10,13, 6, - 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10, 9, - 9, 9, 9,10,10,13, 8, 8, 8, 8, 8, 8, 9, 9, 9,10, - 10,10,10,10,10,10,10,10,10,10,11,11,13, 8, 8, 7, - 7, 8, 8, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10, - 10,11,11,13,11,10, 8, 8, 9, 9, 9, 9,10,10,10,10, - 10,10,11,10,10,10,10,10,11,11,13,13,13, 8, 8, 9, - 8, 9, 9,10,10,10,10,10,10,11,10,10,11,10,10,11, - 11,14,14,14,10,10, 9, 9,10,10,10,10,10,10,11,11, - 11,11,11,11,11,10,11,11,14,13,13,10,10, 9, 9,10, - 10,10,10,10,11,11,10,11,11,11,11,11,11,11,11,14, - 14,14,12,12,10,10,10,10,10,11,11,11,11,11,11,11, - 11,11,11,11,11,12,14,14,14,13,13,10, 9,10,10,10, - 11,11,11,11,11,11,11,11,11,11,11,11,11,14,14,14, - 14,14,11,11,10,10,11,11,11,11,11,11,11,12,11,11, - 11,11,11,12,15,14,14,13,13,11,11,10,10,11,11,11, - 11,11,11,12,11,11,11,11,11,11,12,13,14,13,13,14, - 13,12,11,11,11,11,11,11,11,12,11,11,11,11,11,11, - 12,12,14,14,13,13,13,14,13,10,10,11,11,11,11,12, - 12,11,11,11,11,11,11,12,12,14,14,13,13,13,13,13, - 12,12,11,11,12,12,12,11,11,11,11,11,12,11,12,12, - 13,13,14,14,13,14,13,12,12,11,11,11,11,12,12,11, - 12,11,11,11,11,12,12,14,14,14,14,14,13,14,14,13, - 12,12,12,12,11,11,12,11,12,11,11,11,12,12,14,13, - 13,13,13,13,14,13,14,12,12,11,12,12,11,12,12,11, - 11,11,11,12,12,13,14,13,13,13,14,13,13,13,12,12, - 12,12,12,11,11,12,11,12,11,12,12,12,13,13,13,14, - 13,13,13,13,13,12,13,11,11,12,11,12,12,11,11,11, - 11,12,12,14,14,14,14,14,14,14,15,14,14,13,12,13, - 12,12,12,12,12,12,12,13,13,13,13,15,14,13,14,14, - 14,14,15,14,14,12,12,12,12,12,12,12,12,12,12,13, - 13, -}; - -static float _vq_quantthresh__44c3_s3_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44c3_s3_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s3_p7_1 = { - _vq_quantthresh__44c3_s3_p7_1, - _vq_quantmap__44c3_s3_p7_1, - 23, - 23 -}; - -static static_codebook _44c3_s3_p7_1 = { - 2, 529, - _vq_lengthlist__44c3_s3_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44c3_s3_p7_1, - NULL, - &_vq_auxt__44c3_s3_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_s3_p7_2.vqh b/lib/books/coupled/_44c3_s3_p7_2.vqh deleted file mode 100644 index e212e8be..00000000 --- a/lib/books/coupled/_44c3_s3_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c3_s3_p7_2_VQH_ -#define _V__44c3_s3_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c3_s3_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c3_s3_p7_2[] = { - 3, 5, 5, 7, 6, 6, 7, 6, 6, 5, 5, 5, 7, 7, 7, 7, - 7, 7, 5, 5, 5, 7, 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, - 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c3_s3_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c3_s3_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c3_s3_p7_2 = { - _vq_quantthresh__44c3_s3_p7_2, - _vq_quantmap__44c3_s3_p7_2, - 3, - 3 -}; - -static static_codebook _44c3_s3_p7_2 = { - 4, 81, - _vq_lengthlist__44c3_s3_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c3_s3_p7_2, - NULL, - &_vq_auxt__44c3_s3_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c3_short.vqh b/lib/books/coupled/_44c3_short.vqh deleted file mode 100644 index a806d449..00000000 --- a/lib/books/coupled/_44c3_short.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c3_short_VQH_ -#define _V__44c3_short_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c3_short[] = { - 8,17,17,17,17, 9,10,14,15, 8, 7, 9,12,16,16,16, - 16, 6, 4, 6, 9,16,16,16,15, 7, 5, 5, 8,16,16,16, - 16, 9, 6, 6, 7,16,16,16, 6,16,16,16,16, 3, 4, 9, - 7,16,16,16,16, 3, 2, 7,12, 9, 4, 4, 5, 8, 7, 9, -}; - -static static_codebook _huff_book__44c3_short = { - 2, 64, - _huff_lengthlist__44c3_short, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_long.vqd b/lib/books/coupled/_44c4_long.vqd deleted file mode 100644 index 7aed0691..00000000 --- a/lib/books/coupled/_44c4_long.vqd +++ /dev/null @@ -1,3415 +0,0 @@ -9, 7, 7, 7, 7, 3, 7, 3, 7, 5, 5, 5, 5, 3, 7, 3, 3, 3, 1, 1, 5, 3, 3, 3, 1, 1, 1, 3, 1, 4, 2, 4, 2, 6, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 7, 5, 5, 5, 1, 1, 3, 3, 3, 1, 1, 3, 1, 1, 1, 2, 4, 4, 4, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 5, 7, 1, 7, 5, 5, 3, 1, 1, 1, 5, 3, 3, 1, 3, 1, 1, 1, 2, 4, 2, 4, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 1, 7, 7, 7, 1, 1, 1, 1, 3, 1, 1, 3, 1, 1, 1, 1, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 5, 7, 3, 1, 1, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 1, 5, 3, 3, 1, 1, 1, 3, 3, 3, 1, 1, 1, 5, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 8, 8, 5, 7, 7, 7, 5, 7, 3, 5, 1, 1, 5, 3, 1, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 7, 3, 7, 5, 5, 1, 7, 3, 3, 3, 3, 5, 5, 0, 3, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 4, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 8, 7, 3, 7, 5, 7, 3, 7, 3, 1, 3, 1, 5, 5, 1, 7, 7, 1, 3, 3, 1, 1, 1, 3, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 7, 5, 3, 5, 3, 5, 3, 3, 5, 3, 3, 7, 3, 1, 3, 1, 3, 5, 1, 1, 1, 2, 2, 4, 4, 2, 2, 2, 2, 2, 4, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 7, 7, 7, 5, 3, 7, 3, 5, 5, 1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 5, 7, 7, 7, 7, 7, 3, 5, 1, 5, 3, 1, 1, 1, 1, 1, 3, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 8, 7, 7, 3, 7, 7, 5, 5, 3, 1, 7, 3, 1, 1, 3, 1, 3, 3, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 7, 7, 5, 7, 5, 7, 5, 7, 5, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 1, 7, 7, 5, 3, 7, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 7, 7, 7, 1, 7, 3, 7, 3, 7, 3, 1, 3, 5, 1, 1, 1, 1, 3, 3, 1, 3, 3, 3, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 7, 5, 7, 1, 5, 1, 1, 3, 3, 1, 3, 1, 1, 5, 3, 1, 1, 1, 3, 1, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 7, 5, 7, 1, 5, 1, 1, 1, 1, 1, 3, 1, 1, 3, 3, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 7, 7, 7, 3, 7, 3, 5, 1, 5, 1, 1, 3, 3, 1, 5, 3, 3, 5, 3, 1, 1, 3, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 8, 3, 3, 8, 7, 1, 7, 7, 1, 5, 7, 7, 3, 5, 5, 3, 7, 7, 5, 5, 1, 7, 3, 3, 4, 6, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 4, 4, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 3, 3, 7, 7, 1, 5, 5, 5, 7, 5, 3, 3, 0, 3, 1, 1, 2, 2, 4, 2, 2, 2, 4, 2, 0, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 3, 7, 7, 7, 8, 7, 3, 7, 7, 3, 3, 7, 7, 1, 3, 5, 1, 7, 3, 1, 1, 0, 3, 1, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 8, 5, 7, 7, 7, 1, 7, 7, 1, 3, 7, 7, 3, 3, 3, 1, 7, 1, 3, 1, 1, 1, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 8, 7, 7, 8, 7, 1, 7, 7, 1, 3, 7, 7, 1, 1, 3, 1, 7, 3, 1, 1, 1, 1, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 7, 7, 1, 3, 7, 5, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 8, 7, 1, 7, 7, 1, 3, 7, 5, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 8, 7, 7, 7, 7, 1, 7, 7, 1, 3, 7, 5, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 3, 7, 8, 7, 5, 7, 5, 1, 5, 5, 1, 1, 5, 3, 1, 1, 1, 3, 1, 5, 3, 1, 3, 1, 3, 3, 2, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 7, 7, 7, 7, 1, 5, 7, 1, 3, 5, 3, 1, 1, 5, 3, 5, 3, 1, 3, 1, 3, 1, 1, 2, 4, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 7, 3, 1, 1, 1, 1, 3, 5, 5, 5, 3, 5, 1, 5, 1, 3, 1, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 5, 5, 5, 7, 3, 7, 5, 7, 7, 7, 3, 1, 3, 1, 3, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 5, 5, 7, 0, 7, 5, 5, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 5, 5, 5, 5, 1, 5, 5, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 7, 5, 5, 5, 3, 1, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 7, 5, 5, 3, 3, 1, 1, 5, 3, 3, 1, 1, 1, 3, 1, 1, 3, 3, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 5, 3, 1, 1, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 5, 1, 3, 1, 1, 1, 5, 1, 1, 1, 1, 3, 5, 1, 1, 1, 1, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 3, 3, 3, 1, 3, 1, 3, 5, 1, 5, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 5, 3, 7, 5, 7, 5, 3, 7, 3, 1, 7, 7, 5, 5, 5, 1, 5, 3, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 5, 7, 3, 7, 7, 3, 1, 1, 1, 1, 5, 1, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 3, 7, 7, 7, 7, 5, 7, 5, 3, 7, 5, 3, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 1, 3, 3, 5, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 1, 1, 5, 3, 3, 1, 1, 1, 1, 1, 3, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 5, 7, 7, 3, 7, 5, 5, 5, 5, 1, 1, 3, 3, 3, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 5, 7, 5, 7, 5, 5, 3, 3, 1, 3, 1, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 7, 5, 7, 3, 3, 3, 1, 3, 3, 1, 5, 5, 3, 1, 1, 3, 1, 1, 1, 3, 1, 1, 3, 4, 4, 2, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 1, 7, 5, 3, 3, 5, 1, 3, 1, 1, 1, 5, 1, 1, 5, 3, 3, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 7, 3, 5, 7, 7, 1, 7, 7, 1, 5, 7, 7, 3, 3, 5, 3, 5, 5, 5, 5, 1, 3, 1, 1, 2, 4, 4, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 4, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 8, 7, 7, 8, 7, 1, 7, 7, 3, 5, 7, 7, 3, 5, 7, 3, 7, 3, 5, 1, 1, 1, 1, 1, 2, 2, 4, 2, 4, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 5, 5, 7, 7, 7, 7, 7, 1, 7, 7, 1, 3, 7, 7, 3, 5, 3, 1, 7, 3, 1, 1, 1, 1, 1, 3, 2, 2, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 8, 7, 7, 8, 7, 1, 7, 7, 1, 3, 7, 7, 0, 3, 3, 1, 7, 1, 1, 1, 1, 1, 1, 1, 2, 2, 4, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 7, 7, 7, 1, 7, 7, 0, 3, 7, 7, 1, 1, 1, 1, 7, 3, 1, 1, 1, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 7, 8, 7, 1, 7, 7, 1, 5, 7, 7, 1, 1, 1, 1, 7, 3, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 8, 5, 7, 7, 7, 1, 7, 7, 1, 3, 7, 5, 1, 1, 1, 1, 5, 1, 3, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 5, 7, 7, 7, 1, 7, 7, 1, 1, 5, 5, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 7, 5, 7, 7, 5, 1, 5, 7, 1, 3, 3, 3, 1, 7, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 7, 3, 5, 3, 3, 3, 7, 3, 3, 1, 7, 3, 1, 3, 1, 5, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 3, 5, 5, 3, 3, 3, 5, 7, 3, 1, 1, 1, 5, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 3, 7, 7, 7, 5, 7, 3, 7, 3, 3, 1, 7, 3, 1, 1, 1, 1, 1, 3, 1, 1, 1, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 3, 7, 7, 5, 5, 5, 5, 7, 1, 3, 3, 7, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 3, 5, 7, 5, 3, 5, 7, 5, 1, 3, 3, 5, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 7, 3, 7, 3, 1, 3, 7, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 5, 7, 7, 7, 3, 1, 5, 5, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 3, 7, 5, 5, 3, 5, 5, 3, 1, 1, 1, 3, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 3, 5, 7, 3, 5, 1, 1, 1, 5, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 1, 7, 5, 3, 5, 1, 5, 3, 7, 3, 5, 3, 1, 3, 1, 3, 1, 3, 3, 1, 1, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 7, 5, 1, 1, 7, 3, 5, 5, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 3, 7, 7, 5, 7, 7, 3, 1, 5, 1, 3, 1, 1, 3, 1, 3, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 1, 7, 7, 5, 5, 3, 1, 3, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 1, 5, 3, 5, 7, 5, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 3, 7, 7, 5, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 5, 5, 5, 3, 3, 1, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 5, 3, 3, 5, 1, 1, 1, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 3, 3, 3, 5, 3, 5, 3, 1, 3, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 1, 3, 3, 2, 2, 4, 4, 2, 2, 4, 2, 2, 0, 2, 2, 0, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 3, 5, 5, 1, 1, 5, 3, 3, 3, 1, 3, 3, 1, 1, 3, 5, 3, 1, 1, 3, 3, 5, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 7, 7, 7, 7, 3, 5, 3, 3, 5, 5, 5, 5, 1, 3, 3, 3, 0, 1, 1, 1, 3, 1, 1, 1, 5, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 3, 5, 5, 1, 5, 3, 5, 3, 3, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 5, 5, 3, 1, 1, 5, 3, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 3, 3, 3, 3, 1, 1, 3, 1, 1, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 3, 5, 3, 3, 3, 3, 3, 1, 1, 1, 3, 5, 3, 3, 3, 3, 1, 1, 1, 3, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 3, 5, 3, 3, 1, 3, 1, 3, 1, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 3, 3, 5, 1, 5, 1, 1, 1, 3, 5, 3, 3, 1, 1, 1, 3, 1, 1, 1, 1, 3, 1, 1, 2, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 3, 5, 7, 1, 7, 1, 1, 1, 3, 3, 1, 1, 3, 5, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 7, 3, 3, 1, 3, 1, 7, 7, 7, 7, 5, 5, 1, 3, 1, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 5, 7, 7, 7, 1, 7, 7, 7, 5, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 7, 7, 1, 5, 3, 3, 0, 7, 3, 5, 5, 3, 3, 1, 1, 1, 3, 3, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 1, 5, 5, 5, 1, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 1, 5, 3, 5, 1, 5, 3, 3, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 5, 7, 3, 7, 1, 7, 3, 3, 1, 3, 5, 3, 1, 1, 1, 1, 1, 3, 1, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 3, 7, 3, 5, 1, 3, 1, 3, 3, 3, 3, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 5, 7, 3, 5, 1, 1, 3, 3, 3, 1, 3, 3, 1, 1, 1, 3, 3, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 5, 7, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 3, 2, 2, 2, 4, 2, 2, 2, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 3, 7, 1, 5, 5, 3, 1, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 7, 7, 1, 3, 3, 5, 5, 3, 5, 7, 1, 1, 3, 3, 5, 5, 1, 1, 3, 1, 1, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 7, 3, 5, 7, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 5, 7, 7, 7, 5, 7, 7, 5, 7, 7, 3, 7, 5, 5, 5, 1, 1, 1, 1, 3, 3, 1, 3, 1, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 5, 7, 7, 7, 7, 3, 7, 7, 7, 5, 7, 1, 5, 5, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 3, 7, 7, 3, 5, 5, 1, 3, 5, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 7, 7, 5, 5, 7, 1, 1, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 7, 7, 5, 5, 7, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 1, 7, 7, 3, 3, 3, 1, 1, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 3, 5, 3, 3, 1, 5, 3, 5, 1, 1, 3, 3, 5, 1, 3, 3, 1, 1, 1, 3, 3, 3, 2, 2, 4, 2, 2, 4, 4, 4, 2, 4, 4, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 1, 5, 1, 5, 3, 1, 5, 3, 1, 1, 5, 1, 1, 1, 1, 1, 1, 5, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 5, 7, 5, 5, 7, 5, 1, 5, 5, 5, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 7, 7, 7, 7, 5, 5, 5, 5, 5, 1, 3, 3, 3, 1, 1, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 5, 5, 5, 5, 5, 3, 3, 1, 3, 1, 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 7, 5, 5, 3, 5, 5, 3, 1, 1, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 3, 7, 5, 5, 1, 3, 3, 3, 1, 1, 1, 3, 3, 1, 3, 1, 1, 1, 3, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 1, 5, 5, 1, 3, 3, 5, 1, 3, 3, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 4, 4, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 5, 5, 7, 3, 5, 3, 1, 3, 1, 1, 3, 1, 5, 3, 1, 1, 3, 1, 1, 3, 1, 1, 3, 5, 3, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 3, 5, 5, 3, 1, 1, 3, 5, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 5, 3, 5, 1, 5, 5, 5, 5, 5, 1, 3, 3, 7, 3, 1, 3, 1, 7, 0, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 5, 7, 5, 3, 1, 1, 7, 3, 3, 3, 1, 3, 1, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 3, 7, 5, 7, 7, 7, 7, 5, 7, 7, 1, 1, 1, 7, 5, 1, 1, 5, 3, 1, 1, 1, 1, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 5, 7, 7, 7, 5, 5, 7, 7, 1, 1, 3, 7, 3, 1, 1, 3, 5, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 7, 7, 7, 3, 7, 3, 7, 7, 7, 5, 3, 7, 7, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 3, 7, 3, 7, 5, 7, 5, 5, 7, 7, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 7, 7, 7, 7, 7, 1, 7, 7, 7, 7, 3, 7, 7, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 5, 3, 5, 7, 5, 3, 3, 7, 5, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 3, 1, 3, 3, 3, 2, 4, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 1, 5, 3, 3, 5, 3, 1, 5, 7, 1, 7, 5, 5, 3, 5, 3, 1, 5, 5, 0, 3, 3, 2, 4, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 1, 7, 5, 7, 5, 5, 3, 5, 7, 1, 5, 1, 3, 1, 1, 3, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 1, 7, 7, 7, 7, 7, 1, 7, 5, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 2, 2, 0, 2, 2, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 1, 7, 5, 7, 7, 5, 1, 7, 7, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 1, 7, 7, 7, 5, 3, 1, 7, 5, 1, 3, 1, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 1, 7, 5, 7, 3, 3, 1, 5, 5, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 1, 7, 3, 7, 3, 3, 3, 3, 3, 1, 0, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 1, 7, 5, 7, 3, 1, 1, 3, 1, 1, 3, 3, 1, 1, 1, 3, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 3, 3, 3, 3, 5, 5, 3, 3, 3, 3, 3, 5, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 3, 3, 7, 5, 7, 7, 3, 5, 5, 1, 7, 7, 1, 3, 5, 1, 3, 5, 1, 3, 3, 3, 3, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 7, 8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 3, 7, 7, 3, 1, 1, 1, 3, 5, 1, 3, 1, 0, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 3, 7, 7, 7, 5, 1, 1, 1, 3, 3, 5, 1, 1, 1, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 3, 7, 7, 7, 7, 7, 5, 3, 7, 7, 5, 1, 3, 1, 1, 3, 5, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 8, 7, 5, 7, 7, 7, 7, 5, 3, 1, 3, 3, 7, 1, 1, 0, 1, 1, 3, 1, 1, 1, 3, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 3, 7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 5, 3, 7, 5, 3, 1, 0, 1, 0, 1, 5, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 3, 7, 7, 8, 7, 3, 7, 7, 5, 3, 5, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 8, 7, 5, 7, 7, 7, 5, 7, 1, 1, 5, 3, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 7, 5, 3, 3, 5, 1, 1, 5, 3, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 7, 8, 7, 3, 7, 7, 5, 3, 5, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 3, 7, 7, 7, 3, 3, 1, 1, 3, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 3, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 3, 7, 5, 5, 3, 3, 1, 3, 1, 3, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 7, 5, 7, 5, 7, 3, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 3, 7, 7, 5, 1, 3, 3, 3, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 3, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 3, 7, 3, 7, 3, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 7, 5, 5, 1, 5, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 3, 4, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 5, 5, 5, 3, 3, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 1, 7, 3, 5, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 3, 5, 3, 3, 3, 3, 3, 3, 5, 1, 1, 3, 3, 1, 1, 5, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 4, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 3, 3, 7, 3, 5, 1, 3, 3, 1, 5, 3, 1, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 4, 4, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 3, 5, 5, 7, 5, 3, 3, 5, 3, 5, 3, 3, 5, 5, 3, 7, 3, 1, 1, 3, 5, 1, 6, 4, 4, 4, 6, 6, 4, 2, 2, 2, 4, 2, 6, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 5, 7, 7, 7, 7, 5, 5, 5, 7, 5, 7, 1, 1, 1, 5, 5, 5, 1, 1, 3, 1, 1, 1, 2, 2, 2, 2, 6, 4, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 5, 7, 1, 1, 1, 5, 3, 3, 3, 1, 5, 1, 3, 1, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 5, 7, 7, 7, 5, 7, 3, 3, 7, 7, 5, 1, 1, 1, 3, 7, 3, 1, 3, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 5, 3, 7, 5, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 1, 3, 1, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 5, 7, 7, 7, 7, 5, 5, 1, 5, 5, 3, 1, 1, 1, 1, 3, 3, 1, 1, 1, 3, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 7, 7, 5, 5, 5, 3, 1, 3, 5, 5, 1, 1, 1, 1, 5, 1, 1, 1, 3, 3, 1, 1, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 7, 5, 7, 1, 1, 3, 1, 5, 5, 1, 1, 3, 1, 1, 3, 3, 1, 3, 1, 1, 1, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 3, 5, 7, 5, 7, 3, 1, 3, 1, 3, 3, 1, 7, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 7, 3, 7, 3, 3, 7, 1, 5, 5, 5, 7, 1, 5, 7, 1, 3, 3, 1, 3, 5, 0, 1, 3, 2, 2, 4, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 7, 7, 3, 7, 5, 5, 7, 5, 7, 5, 5, 7, 3, 7, 7, 1, 1, 1, 1, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 7, 7, 7, 5, 5, 5, 0, 5, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 3, 7, 5, 7, 5, 7, 5, 3, 1, 3, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 3, 7, 3, 1, 3, 1, 1, 3, 3, 1, 3, 3, 1, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 7, 5, 7, 5, 7, 5, 1, 5, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 7, 3, 7, 5, 5, 3, 7, 1, 1, 5, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 3, 7, 3, 3, 1, 5, 1, 3, 1, 5, 1, 3, 1, 1, 1, 1, 1, 1, 3, 5, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 7, 1, 7, 5, 3, 1, 5, 1, 1, 3, 1, 1, 1, 1, 3, 1, 3, 1, 1, 3, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 7, 5, 5, 7, 7, 3, 5, 7, 3, 5, 7, 7, 1, 7, 7, 3, 7, 7, 5, 5, 1, 5, 1, 1, 2, 6, 2, 0, 2, 2, 4, 2, 2, 2, 2, 2, 0, 4, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 8, 7, 5, 7, 7, 3, 7, 7, 1, 3, 7, 7, 1, 5, 5, 5, 7, 5, 3, 1, 0, 5, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 7, 7, 7, 5, 8, 7, 1, 7, 7, 1, 3, 7, 7, 1, 5, 3, 1, 7, 3, 5, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 7, 7, 1, 3, 7, 7, 0, 5, 3, 1, 7, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 8, 7, 7, 8, 7, 1, 7, 7, 1, 1, 7, 7, 1, 3, 1, 1, 7, 1, 1, 1, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 8, 7, 7, 7, 7, 1, 7, 7, 1, 3, 7, 7, 1, 3, 3, 1, 7, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 8, 7, 1, 7, 7, 1, 1, 7, 7, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 1, 7, 7, 1, 3, 7, 5, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 8, 5, 7, 8, 7, 1, 7, 5, 1, 1, 5, 5, 1, 1, 1, 1, 5, 1, 1, 3, 1, 1, 1, 3, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 8, 7, 5, 7, 7, 3, 7, 7, 1, 1, 3, 3, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 3, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 5, 7, 7, 1, 5, 5, 1, 3, 5, 1, 1, 1, 3, 1, 5, 1, 1, 1, 3, 3, 1, 1, 2, 6, 2, 2, 2, 2, 4, 4, 2, 4, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 5, 7, 3, 3, 3, 3, 1, 7, 7, 7, 7, 5, 3, 1, 3, 3, 1, 1, 3, 1, 5, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 8, 7, 5, 7, 3, 5, 3, 5, 1, 7, 5, 7, 7, 3, 5, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 5, 7, 5, 5, 0, 5, 3, 1, 3, 3, 3, 1, 3, 1, 1, 1, 3, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 7, 3, 3, 3, 5, 1, 5, 5, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 5, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 7, 7, 5, 5, 7, 1, 7, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 3, 1, 3, 3, 1, 1, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 7, 5, 3, 1, 3, 1, 5, 5, 3, 1, 1, 3, 1, 1, 3, 1, 3, 1, 1, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 7, 5, 1, 3, 1, 1, 1, 3, 3, 5, 5, 1, 1, 1, 3, 1, 3, 3, 3, 3, 1, 4, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 3, 3, 3, 3, 3, 1, 3, 5, 1, 3, 1, 1, 1, 5, 5, 1, 0, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 3, 7, 5, 5, 7, 5, 3, 7, 1, 5, 7, 1, 5, 3, 1, 5, 3, 1, 3, 1, 5, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 7, 5, 7, 7, 7, 7, 5, 5, 7, 1, 7, 7, 3, 1, 5, 3, 3, 3, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 5, 5, 7, 5, 1, 1, 1, 1, 3, 5, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 5, 3, 5, 3, 7, 3, 1, 3, 1, 1, 5, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 5, 7, 7, 5, 7, 7, 5, 7, 5, 1, 1, 5, 5, 5, 1, 1, 1, 3, 1, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 5, 5, 5, 1, 1, 5, 1, 5, 1, 1, 1, 1, 3, 5, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 1, 7, 7, 5, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 1, 7, 5, 3, 1, 3, 3, 1, 3, 5, 1, 3, 1, 1, 7, 3, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 7, 7, 7, 3, 7, 7, 5, 3, 1, 1, 3, 3, 1, 1, 3, 1, 3, 5, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 7, 3, 5, 7, 7, 1, 7, 7, 3, 5, 7, 7, 1, 5, 7, 5, 7, 5, 3, 5, 1, 5, 1, 3, 2, 4, 4, 2, 2, 2, 2, 4, 0, 2, 2, 2, 0, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 7, 7, 8, 7, 3, 7, 7, 1, 5, 7, 7, 3, 5, 5, 3, 7, 5, 5, 1, 0, 5, 1, 3, 0, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 5, 7, 7, 1, 7, 7, 1, 1, 7, 7, 1, 3, 3, 1, 7, 1, 3, 1, 1, 1, 3, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 8, 7, 7, 7, 7, 1, 7, 7, 1, 1, 7, 7, 0, 3, 3, 1, 7, 1, 3, 1, 1, 1, 1, 1, 2, 0, 4, 0, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 7, 7, 7, 7, 1, 7, 7, 1, 3, 7, 7, 1, 1, 1, 0, 7, 1, 1, 1, 1, 1, 1, 1, 0, 2, 4, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 8, 7, 7, 7, 7, 1, 7, 7, 1, 5, 7, 7, 1, 1, 1, 0, 7, 3, 3, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 1, 7, 7, 1, 1, 7, 7, 1, 1, 0, 1, 7, 1, 1, 3, 1, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 8, 5, 7, 7, 7, 1, 7, 7, 1, 1, 7, 5, 1, 1, 1, 0, 5, 1, 1, 1, 3, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 5, 7, 7, 1, 7, 7, 1, 3, 5, 3, 1, 3, 1, 1, 3, 1, 3, 1, 1, 1, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 7, 5, 5, 7, 7, 3, 5, 7, 3, 5, 1, 1, 1, 7, 3, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 3, 5, 3, 5, 5, 5, 1, 5, 3, 1, 1, 7, 5, 1, 5, 1, 5, 1, 1, 1, 3, 3, 4, 2, 0, 2, 2, 4, 2, 2, 6, 4, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 5, 7, 7, 7, 5, 7, 5, 3, 5, 1, 3, 7, 3, 1, 1, 3, 7, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 7, 7, 5, 1, 1, 7, 5, 1, 1, 1, 5, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 5, 7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 7, 5, 1, 3, 1, 7, 3, 1, 3, 3, 5, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 3, 7, 3, 3, 5, 7, 1, 3, 1, 7, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 5, 7, 5, 5, 5, 3, 7, 5, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 7, 7, 7, 5, 5, 7, 3, 1, 5, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 5, 7, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 3, 2, 2, 2, 4, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 1, 7, 7, 3, 3, 1, 3, 3, 7, 1, 5, 3, 1, 3, 1, 1, 1, 3, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 5, 5, 7, 1, 5, 5, 3, 1, 1, 3, 1, 1, 3, 1, 1, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 3, 7, 5, 5, 5, 7, 3, 5, 5, 1, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 1, 7, 7, 7, 5, 3, 1, 1, 7, 3, 1, 1, 3, 1, 3, 5, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 1, 7, 5, 5, 5, 5, 1, 1, 5, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 3, 7, 5, 3, 3, 1, 1, 3, 5, 3, 1, 1, 1, 3, 1, 1, 1, 1, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 7, 5, 5, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 3, 1, 1, 3, 1, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 5, 3, 3, 3, 3, 1, 3, 5, 3, 3, 1, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 3, 5, 1, 3, 3, 5, 1, 1, 5, 3, 3, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 3, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 7, 5, 5, 5, 5, 1, 1, 3, 3, 3, 3, 3, 1, 1, 3, 5, 3, 1, 1, 1, 1, 3, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 7, 7, 5, 7, 7, 5, 7, 3, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 5, 3, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 7, 7, 3, 5, 5, 5, 3, 1, 3, 1, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 3, 7, 5, 3, 1, 3, 3, 1, 3, 1, 3, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 5, 3, 7, 7, 3, 1, 1, 5, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 1, 5, 5, 3, 1, 1, 3, 3, 1, 1, 3, 1, 1, 1, 3, 1, 3, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 7, 3, 1, 3, 1, 3, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 5, 1, 5, 1, 3, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 3, 5, 5, 5, 1, 1, 1, 5, 5, 3, 1, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 7, 3, 5, 1, 1, 3, 5, 5, 7, 7, 5, 3, 1, 3, 1, 3, 1, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 0, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 1, 7, 3, 5, 5, 5, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 7, 5, 7, 7, 5, 1, 7, 5, 5, 5, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 1, 7, 5, 5, 1, 5, 7, 3, 3, 1, 1, 1, 3, 1, 1, 3, 3, 1, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 1, 7, 5, 5, 1, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 3, 7, 3, 5, 5, 5, 1, 5, 3, 1, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 5, 7, 1, 5, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 3, 1, 1, 1, 1, 3, 3, 3, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 7, 5, 7, 1, 7, 3, 1, 3, 3, 3, 3, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 1, 5, 3, 1, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 7, 3, 7, 1, 5, 3, 1, 1, 3, 3, 5, 3, 3, 1, 1, 1, 3, 1, 1, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 3, 7, 7, 5, 7, 5, 5, 5, 5, 5, 7, 5, 3, 5, 5, 5, 7, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 7, 7, 3, 7, 7, 1, 7, 5, 5, 7, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 7, 7, 5, 7, 7, 1, 5, 7, 5, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 7, 7, 3, 5, 5, 1, 3, 5, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 7, 7, 3, 7, 7, 3, 3, 7, 5, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 7, 7, 5, 5, 5, 3, 3, 7, 3, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 3, 7, 7, 7, 7, 3, 7, 7, 1, 5, 3, 1, 1, 3, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 3, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 7, 7, 7, 3, 7, 7, 3, 3, 5, 3, 1, 3, 3, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 5, 5, 3, 5, 5, 1, 1, 5, 3, 5, 1, 1, 3, 3, 3, 1, 5, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 4, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 7, 7, 5, 1, 3, 7, 5, 5, 1, 5, 3, 1, 1, 3, 3, 1, 1, 3, 1, 3, 3, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 7, 7, 3, 7, 7, 5, 5, 7, 3, 3, 5, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 7, 5, 7, 5, 7, 5, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 5, 7, 7, 5, 7, 3, 3, 5, 3, 3, 1, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 1, 7, 3, 3, 3, 1, 1, 5, 3, 1, 3, 1, 3, 3, 1, 1, 1, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 5, 7, 3, 1, 3, 3, 1, 1, 5, 3, 3, 3, 1, 1, 3, 1, 3, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 7, 1, 5, 3, 3, 1, 3, 3, 1, 3, 3, 1, 1, 3, 1, 3, 1, 3, 1, 3, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 7, 5, 1, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 4, 2, 2, 2, 6, 2, 4, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 7, 7, 3, 5, 5, 1, 1, 3, 1, 5, 5, 7, 1, 7, 3, 1, 1, 1, 3, 3, 3, 1, 3, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 7, 5, 7, 3, 7, 3, 3, 3, 5, 3, 3, 1, 7, 1, 1, 3, 3, 7, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 3, 7, 7, 7, 5, 7, 7, 7, 5, 7, 7, 7, 7, 5, 5, 3, 3, 7, 3, 1, 5, 3, 5, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 3, 7, 7, 7, 5, 7, 5, 7, 3, 7, 5, 5, 7, 7, 3, 1, 3, 7, 5, 1, 1, 5, 5, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 3, 7, 7, 7, 5, 7, 5, 7, 7, 7, 5, 5, 7, 7, 1, 1, 3, 7, 3, 1, 1, 1, 7, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 7, 7, 7, 7, 7, 3, 7, 7, 7, 5, 5, 7, 7, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 7, 7, 7, 7, 5, 3, 7, 1, 1, 1, 7, 1, 3, 1, 1, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 3, 7, 5, 7, 3, 5, 7, 7, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 3, 5, 3, 5, 3, 5, 3, 1, 3, 1, 1, 1, 3, 5, 1, 1, 1, 1, 1, 1, 3, 1, 3, 3, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 3, 7, 5, 5, 1, 5, 3, 5, 1, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 7, 5, 3, 7, 1, 3, 5, 7, 1, 7, 3, 3, 3, 3, 3, 1, 3, 5, 1, 1, 5, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 7, 5, 1, 5, 7, 1, 7, 3, 5, 1, 1, 3, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 1, 7, 7, 5, 7, 3, 1, 5, 3, 3, 1, 1, 5, 3, 3, 1, 3, 3, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 1, 7, 7, 7, 7, 5, 1, 7, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 8, 1, 7, 5, 7, 3, 3, 3, 7, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 1, 7, 7, 5, 5, 1, 1, 7, 5, 1, 1, 0, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 1, 7, 7, 7, 3, 3, 1, 1, 3, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 1, 7, 5, 5, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 5, 5, 5, 3, 3, 5, 3, 3, 3, 3, 1, 5, 1, 1, 1, 3, 1, 1, 3, 3, 1, 1, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 7, 1, 7, 5, 7, 7, 7, 7, 5, 1, 7, 7, 1, 3, 5, 1, 3, 5, 1, 5, 5, 3, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 6, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 7, 7, 5, 1, 7, 5, 3, 5, 1, 1, 5, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 3, 3, 5, 5, 7, 1, 3, 5, 3, 1, 7, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 8, 7, 3, 7, 7, 7, 7, 5, 3, 3, 5, 5, 5, 1, 1, 1, 3, 1, 7, 1, 1, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 7, 7, 5, 7, 5, 3, 3, 5, 3, 3, 1, 1, 1, 1, 1, 7, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 1, 3, 7, 3, 1, 3, 1, 1, 1, 1, 5, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 8, 7, 1, 7, 7, 7, 5, 5, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 3, 7, 7, 5, 5, 5, 1, 3, 7, 1, 1, 1, 5, 1, 1, 1, 3, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 7, 5, 7, 5, 5, 1, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 8, 7, 5, 7, 7, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 7, 7, 1, 7, 5, 5, 3, 5, 1, 1, 3, 3, 1, 3, 1, 1, 1, 3, 3, 3, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 5, 3, 5, 1, 5, 1, 1, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 7, 7, 3, 1, 3, 3, 3, 1, 1, 1, 3, 1, 1, 3, 1, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 1, 7, 3, 5, 1, 5, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 3, 3, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 3, 7, 5, 5, 1, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 3, 5, 7, 5, 1, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 1, 3, 1, 1, 1, 1, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 5, 7, 7, 7, 7, 3, 7, 5, 3, 1, 5, 1, 1, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 5, 7, 7, 1, 7, 3, 3, 1, 3, 1, 1, 1, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 7, 5, 7, 3, 5, 5, 3, 1, 3, 1, 1, 5, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 5, 5, 3, 3, 3, 1, 1, 3, 1, 1, 5, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 3, 5, 3, 3, 3, 5, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 1, 3, 1, 1, 1, 1, 1, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 5, 5, 5, 1, 5, 3, 1, 3, 1, 3, 1, 1, 3, 5, 1, 3, 3, 3, 1, 3, 1, 1, 1, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 5, 7, 7, 5, 7, 3, 3, 3, 1, 1, 3, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 3, 5, 5, 7, 7, 3, 1, 3, 1, 1, 5, 5, 3, 3, 5, 3, 3, 1, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 3, 5, 7, 5, 5, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 5, 7, 7, 3, 5, 7, 5, 7, 5, 3, 3, 1, 1, 5, 3, 3, 1, 3, 1, 3, 1, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 6, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 3, 3, 5, 5, 5, 5, 5, 5, 1, 1, 5, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 4, 4, 6, 4, 6, 2, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 5, 5, 7, 5, 7, 5, 3, 7, 1, 1, 5, 3, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 3, 5, 7, 3, 3, 5, 1, 5, 1, 1, 5, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 5, 5, 7, 3, 5, 5, 3, 5, 1, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 5, 5, 7, 5, 3, 5, 3, 3, 1, 1, 5, 5, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 4, 6, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 3, 3, 5, 3, 3, 5, 3, 3, 1, 1, 5, 5, 1, 3, 3, 3, 3, 1, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 2, 4, 4, 2, 6, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 7, 7, 1, 5, 7, 1, 5, 3, 1, 3, 5, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 2, 4, 4, 4, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 3, 7, 5, 7, 3, 3, 3, 3, 1, 1, 5, 5, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 6, 4, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 5, 5, 5, 3, 3, 5, 5, 1, 3, 3, 5, 3, 1, 1, 5, 3, 1, 1, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 0, 2, 4, 2, 4, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 5, 3, 5, 5, 3, 3, 1, 5, 7, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 7, 7, 5, 1, 5, 3, 1, 3, 5, 3, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 4, 4, 4, 6, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 5, 5, 5, 7, 5, 5, 3, 1, 3, 5, 3, 5, 5, 5, 5, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 3, 7, 3, 5, 7, 5, 5, 5, 5, 1, 3, 5, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 3, 3, 5, 1, 5, 5, 3, 1, 3, 5, 3, 1, 1, 1, 3, 1, 1, 2, 2, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 7, 5, 5, 5, 5, 3, 3, 3, 1, 5, 5, 1, 1, 5, 3, 3, 1, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 7, 7, 5, 7, 3, 3, 3, 1, 5, 3, 1, 1, 5, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 6, 4, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 7, 7, 7, 5, 3, 3, 5, 3, 7, 3, 1, 1, 5, 5, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 4, 4, 6, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 7, 7, 5, 7, 5, 5, 7, 1, 3, 5, 1, 1, 5, 5, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 4, 4, 6, 2, 2, 2, 2, 2, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 7, 5, 3, 5, 7, 5, 7, 3, 5, 5, 1, 1, 5, 5, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 7, 7, 7, 3, 5, 3, 3, 3, 5, 3, 1, 1, 3, 5, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 7, 5, 5, 5, 5, 5, 7, 7, 5, 5, 5, 5, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 5, 5, 7, 5, 7, 7, 7, 7, 1, 1, 5, 5, 1, 5, 5, 3, 3, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 6, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 7, 3, 3, 5, 3, 3, 3, 1, 1, 3, 1, 3, 3, 5, 3, 3, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 6, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 1, 1, 1, 3, 3, 5, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 5, 5, 3, 3, 5, 5, 1, 3, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 6, 4, 4, 2, 2, 0, 2, 2, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 3, 5, 3, 5, 5, 3, 3, 1, 1, 5, 3, 1, 3, 5, 3, 3, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 4, 4, 6, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 5, 3, 3, 5, 5, 5, 3, 3, 3, 1, 3, 1, 1, 3, 5, 3, 1, 1, 1, 1, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 6, 4, 2, 2, 0, 2, 2, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 5, 5, 7, 7, 5, 5, 3, 1, 3, 3, 3, 1, 3, 5, 3, 1, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 0, 2, 4, 4, 4, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 7, 5, 5, 5, 7, 5, 5, 5, 5, 1, 5, 3, 1, 1, 5, 5, 3, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 3, 5, 3, 3, 5, 5, 5, 3, 1, 5, 3, 1, 3, 5, 5, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 0, 2, 2, 2, 4, 2, 4, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 1, 3, 1, 1, 7, 7, 7, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 6, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 5, 7, 7, 7, 7, 7, 7, 5, 5, 1, 3, 1, 3, 5, 5, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 5, 3, 7, 5, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 5, 5, 5, 7, 7, 5, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 5, 3, 5, 1, 5, 3, 5, 3, 3, 1, 1, 1, 3, 1, 3, 3, 3, 1, 3, 1, 1, 1, 1, 4, 4, 2, 2, 2, 2, 2, 4, 4, 6, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 7, 5, 7, 7, 7, 7, 5, 5, 3, 3, 3, 3, 1, 1, 3, 5, 1, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 6, 6, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 7, 5, 3, 3, 3, 5, 1, 3, 3, 3, 3, 1, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 2, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 5, 3, 5, 1, 3, 3, 5, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 7, 7, 5, 3, 7, 5, 3, 5, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 3, 7, 7, 5, 7, 7, 7, 3, 5, 3, 3, 5, 3, 3, 5, 3, 5, 1, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 6, 4, 4, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 5, 7, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 5, 7, 5, 3, 5, 5, 5, 3, 5, 1, 3, 3, 1, 7, 5, 5, 1, 1, 1, 1, 1, 1, 4, 4, 4, 2, 2, 2, 2, 6, 6, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 7, 7, 7, 7, 3, 5, 3, 5, 5, 3, 3, 3, 1, 5, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 4, 2, 6, 4, 6, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 3, 5, 3, 5, 7, 5, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 6, 4, 2, 2, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 3, 7, 3, 5, 3, 5, 3, 5, 1, 3, 3, 1, 5, 3, 3, 1, 3, 1, 3, 1, 3, 3, 3, 3, 3, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 8, 7, 5, 5, 5, 3, 3, 5, 3, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 8, 7, 8, 5, 5, 5, 3, 5, 5, 1, 1, 3, 1, 1, 5, 3, 3, 3, 3, 1, 3, 1, 1, 3, 3, 3, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 3, 5, 3, 3, 3, 5, 3, 1, 1, 3, 5, 3, 3, 3, 3, 5, 3, 1, 3, 5, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 5, 5, 3, 3, 3, 3, 5, 5, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3, 1, 3, 3, 4, 4, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 5, 3, 3, 5, 3, 3, 3, 3, 1, 5, 3, 3, 3, 3, 1, 5, 1, 1, 3, 3, 3, 3, 4, 4, 2, 4, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 3, 3, 5, 3, 5, 3, 3, 3, 1, 3, 1, 3, 5, 3, 3, 5, 3, 3, 3, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 3, 5, 3, 5, 5, 3, 1, 3, 5, 3, 5, 3, 1, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 3, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 5, 3, 3, 5, 5, 3, 3, 1, 1, 1, 1, 1, 4, 4, 2, 2, 2, 4, 2, 2, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 1, 1, 1, 3, 1, 4, 2, 2, 4, 4, 4, 4, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 5, 1, 1, 1, 3, 3, 3, 1, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 3, 5, 3, 3, 5, 3, 3, 3, 1, 5, 3, 1, 5, 1, 3, 3, 1, 1, 1, 1, 1, 1, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 3, 5, 3, 3, 5, 3, 3, 3, 1, 3, 5, 1, 3, 3, 3, 3, 1, 3, 1, 1, 3, 3, 4, 2, 2, 2, 4, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 3, 5, 3, 5, 3, 3, 3, 5, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 3, 4, 2, 2, 2, 2, 2, 6, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 5, 5, 5, 3, 3, 3, 3, 5, 3, 3, 1, 3, 1, 1, 3, 3, 5, 1, 3, 1, 1, 1, 3, 4, 4, 2, 2, 2, 4, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 3, 5, 5, 3, 5, 3, 5, 3, 3, 1, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 5, 7, 7, 3, 5, 5, 5, 3, 5, 3, 3, 1, 1, 3, 1, 3, 3, 3, 5, 3, 1, 1, 3, 1, 1, 2, 4, 4, 2, 2, 4, 6, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 5, 3, 5, 5, 3, 3, 3, 1, 1, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 2, 4, 4, 2, 2, 4, 6, 4, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 7, 3, 5, 3, 5, 3, 5, 3, 1, 5, 3, 5, 1, 1, 3, 3, 3, 5, 3, 3, 1, 3, 1, 3, 4, 2, 4, 2, 2, 4, 4, 4, 4, 2, 2, 2, 4, 2, 4, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 3, 5, 5, 3, 5, 5, 3, 5, 3, 1, 3, 1, 1, 3, 3, 3, 5, 1, 3, 3, 1, 1, 1, 4, 4, 2, 2, 2, 4, 4, 4, 4, 2, 4, 2, 4, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 3, 5, 3, 5, 5, 5, 3, 3, 5, 1, 3, 3, 1, 3, 1, 5, 5, 1, 3, 3, 1, 1, 1, 2, 4, 4, 2, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 7, 3, 5, 3, 3, 5, 5, 3, 3, 5, 3, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 4, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 5, 5, 5, 3, 3, 5, 3, 5, 1, 3, 1, 1, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 5, 7, 3, 5, 5, 5, 5, 3, 3, 5, 3, 1, 3, 3, 1, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 4, 4, 2, 2, 2, 2, 4, 4, 4, 2, 4, 2, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 5, 7, 5, 3, 3, 5, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 3, 5, 3, 1, 3, 1, 1, 1, 1, 4, 4, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 8, 3, 5, 3, 5, 5, 5, 3, 5, 5, 1, 3, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 4, 4, 2, 2, 6, 4, 6, 6, 4, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 3, 3, 3, 3, 5, 3, 3, 3, 5, 5, 3, 1, 1, 3, 3, 1, 1, 3, 3, 3, 1, 1, 3, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 7, 7, 5, 5, 5, 5, 5, 3, 5, 5, 3, 3, 1, 3, 1, 1, 3, 3, 1, 3, 1, 1, 1, 3, 4, 2, 2, 2, 2, 4, 4, 6, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 3, 5, 5, 5, 3, 3, 1, 5, 3, 3, 3, 3, 1, 1, 5, 3, 3, 1, 1, 3, 1, 3, 3, 2, 4, 4, 2, 2, 2, 2, 2, 6, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 3, 5, 5, 3, 5, 3, 3, 3, 5, 1, 5, 1, 1, 3, 3, 3, 3, 1, 3, 1, 1, 3, 3, 2, 2, 4, 2, 2, 4, 6, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 5, 5, 5, 3, 5, 5, 5, 3, 5, 1, 3, 3, 1, 3, 3, 3, 5, 3, 3, 3, 1, 1, 3, 2, 2, 2, 2, 2, 4, 4, 4, 4, 6, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 5, 5, 3, 5, 5, 5, 5, 3, 5, 1, 3, 3, 1, 3, 1, 3, 3, 1, 1, 3, 1, 3, 3, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 0, 2, 2, 2, 4, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 9, 7, 7, 7, 7, 5, 5, 3, 5, 3, 1, 3, 5, 3, 1, 3, 1, 3, 1, 3, 5, 5, 1, 1, 3, 1, 3, 1, 4, 2, 2, 2, 2, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 8, 7, 7, 5, 5, 5, 5, 5, 5, 3, 3, 5, 1, 3, 3, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 3, 4, 2, 4, 2, 2, 4, 4, 2, 4, 6, 4, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 8, 3, 5, 3, 3, 3, 3, 3, 3, 5, 1, 5, 1, 1, 3, 3, 3, 3, 1, 3, 3, 1, 1, 3, 4, 4, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 5, 1, 3, 3, 1, 1, 3, 3, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 5, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 4, 2, 2, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 8, 7, 7, 7, 3, 5, 3, 3, 3, 3, 3, 5, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 4, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 3, 7, 3, 5, 3, 3, 5, 7, 3, 3, 3, 1, 3, 1, 1, 1, 3, 3, 5, 1, 3, 1, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 3, 5, 5, 3, 3, 3, 3, 3, 5, 1, 3, 3, 1, 3, 1, 1, 5, 3, 3, 1, 1, 3, 3, 2, 2, 2, 2, 2, 4, 4, 2, 2, 6, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 7, 5, 5, 3, 5, 5, 3, 3, 5, 5, 1, 3, 3, 1, 3, 1, 1, 3, 1, 1, 1, 1, 3, 3, 2, 4, 4, 2, 2, 2, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 7, 3, 5, 5, 5, 5, 3, 3, 5, 1, 3, 1, 1, 3, 3, 3, 3, 1, 1, 3, 1, 3, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 5, 7, 5, 5, 3, 5, 7, 7, 5, 5, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 3, 7, 5, 7, 5, 3, 7, 5, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 3, 3, 5, 5, 3, 3, 5, 1, 3, 3, 1, 3, 3, 3, 3, 5, 1, 1, 3, 1, 1, 4, 4, 2, 4, 2, 2, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 4, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 8, 5, 7, 5, 5, 5, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 2, 4, 4, 4, 4, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 3, 5, 5, 5, 5, 3, 5, 3, 1, 1, 3, 1, 1, 3, 1, 3, 3, 1, 3, 1, 1, 1, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 8, 5, 7, 7, 5, 5, 7, 5, 5, 5, 3, 3, 1, 3, 3, 3, 3, 3, 1, 5, 1, 1, 3, 3, 1, 1, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 3, 1, 5, 1, 3, 3, 1, 1, 3, 3, 5, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 7, 8, 5, 7, 5, 3, 5, 3, 3, 3, 3, 1, 1, 1, 1, 3, 1, 3, 3, 1, 1, 1, 1, 3, 4, 4, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 7, 3, 3, 3, 5, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 3, 3, 5, 5, 5, 5, 3, 5, 1, 1, 3, 3, 3, 1, 1, 3, 3, 3, 1, 1, 3, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 3, 5, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 3, 3, 4, 2, 2, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 5, 3, 3, 5, 3, 5, 3, 1, 3, 1, 1, 3, 1, 1, 3, 1, 1, 1, 3, 1, 1, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 5, 3, 3, 5, 1, 3, 5, 3, 1, 1, 1, 1, 1, 3, 3, 1, 3, 1, 3, 1, 3, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 3, 3, 5, 5, 3, 3, 3, 3, 1, 1, 1, 1, 3, 1, 5, 3, 1, 1, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 5, 7, 8, 5, 3, 3, 5, 3, 3, 3, 5, 1, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 3, 1, 3, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 5, 5, 3, 5, 5, 3, 3, 5, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 8, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 1, 3, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 8, 7, 7, 7, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 3, 3, 1, 1, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 8, 7, 7, 7, 5, 5, 3, 5, 1, 5, 3, 5, 1, 3, 3, 1, 3, 1, 3, 3, 1, 1, 3, 1, 3, 3, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 5, 5, 3, 5, 5, 7, 7, 7, 5, 3, 1, 1, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 8, 7, 7, 7, 7, 3, 7, 7, 7, 7, 7, 7, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 4, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 7, 7, 7, 5, 3, 7, 7, 7, 5, 3, 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, 3, 3, 5, 3, 4, 2, 4, 2, 2, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 6, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 7, 7, 7, 3, 3, 5, 3, 5, 3, 5, 1, 1, 3, 3, 3, 1, 3, 3, 1, 1, 3, 3, 3, 5, 2, 4, 4, 2, 4, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 7, 7, 7, 7, 7, 5, 5, 5, 7, 7, 5, 5, 5, 1, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 3, 3, 3, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 8, 7, 7, 7, 5, 7, 7, 7, 5, 3, 1, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 3, 1, 6, 2, 4, 4, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 5, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 7, 8, 7, 7, 7, 7, 7, 5, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, 1, 3, 4, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 5, 7, 7, 5, 7, 7, 7, 5, 5, 5, 5, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 7, 5, 7, 7, 3, 5, 5, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 1, 3, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 1, 3, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 3, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 6, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 8, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 3, 5, 5, 5, 3, 3, 3, 3, 5, 3, 5, 1, 3, 3, 5, 3, 3, 1, 1, 3, 3, 3, 3, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 5, 5, 5, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 1, 5, 1, 3, 1, 1, 1, 1, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 5, 3, 7, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 3, 4, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 5, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 3, 4, 6, 2, 2, 4, 2, 2, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 3, 3, 5, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 5, 5, 5, 3, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 1, 1, 3, 4, 2, 4, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 3, 3, 5, 5, 3, 3, 5, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 1, 1, 1, 4, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 5, 5, 3, 3, 3, 3, 3, 3, 5, 3, 3, 1, 3, 3, 5, 3, 1, 1, 1, 1, 1, 3, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 3, 5, 3, 3, 3, 3, 5, 3, 1, 3, 1, 1, 3, 3, 1, 1, 1, 1, 3, 1, 3, 4, 4, 2, 4, 4, 4, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 4, 4, 2, 4, 2, 4, 4, 6, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 3, 3, 5, 3, 5, 3, 5, 5, 3, 3, 1, 5, 3, 1, 5, 1, 3, 3, 3, 3, 3, 2, 4, 4, 4, 2, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 1, 3, 3, 3, 3, 3, 1, 3, 3, 5, 5, 1, 3, 1, 1, 1, 3, 4, 2, 2, 4, 4, 4, 4, 6, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 5, 3, 3, 5, 5, 5, 3, 3, 1, 1, 1, 1, 3, 3, 3, 3, 1, 3, 3, 1, 1, 3, 4, 2, 2, 4, 2, 2, 4, 6, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 3, 5, 5, 1, 3, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 4, 4, 4, 2, 2, 2, 4, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 7, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 3, 3, 1, 1, 1, 1, 2, 2, 2, 4, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 3, 5, 5, 5, 5, 5, 5, 3, 1, 3, 3, 3, 1, 3, 1, 3, 1, 5, 1, 3, 3, 3, 4, 4, 2, 2, 4, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 5, 3, 5, 5, 5, 5, 5, 3, 5, 5, 5, 3, 3, 5, 5, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 4, 2, 2, 4, 4, 4, 4, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 3, 5, 5, 3, 5, 5, 3, 5, 3, 5, 5, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 3, 4, 4, 2, 2, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 8, 7, 7, 7, 5, 3, 3, 5, 3, 3, 5, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 3, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 5, 3, 3, 5, 3, 3, 5, 5, 3, 5, 3, 1, 3, 3, 3, 5, 3, 5, 1, 3, 1, 1, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 5, 7, 7, 5, 5, 1, 3, 5, 3, 3, 5, 1, 3, 3, 1, 1, 3, 3, 1, 1, 3, 1, 1, 1, 3, 4, 4, 2, 2, 2, 4, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 8, 7, 5, 7, 3, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 4, 4, 2, 2, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 3, 5, 3, 3, 5, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 1, 3, 4, 2, 2, 4, 2, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 5, 1, 5, 5, 3, 1, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 4, 6, 6, 2, 4, 6, 2, 6, 2, 2, 4, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 5, 3, 5, 3, 3, 5, 5, 5, 5, 3, 1, 5, 1, 1, 3, 3, 1, 5, 3, 1, 1, 1, 1, 3, 2, 4, 4, 2, 2, 4, 2, 4, 2, 2, 6, 4, 4, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 3, 7, 5, 5, 3, 3, 5, 3, 5, 5, 3, 1, 5, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 3, 1, 4, 4, 4, 2, 4, 4, 4, 6, 2, 2, 4, 6, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 5, 3, 5, 5, 5, 3, 3, 1, 1, 1, 3, 1, 5, 3, 1, 3, 1, 1, 1, 1, 3, 1, 2, 4, 4, 2, 2, 4, 2, 4, 2, 4, 4, 4, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 8, 5, 5, 5, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 1, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 3, 3, 5, 3, 3, 3, 5, 3, 1, 5, 3, 5, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 4, 4, 4, 2, 2, 4, 2, 6, 2, 2, 4, 4, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 3, 3, 1, 1, 1, 3, 2, 6, 4, 2, 2, 2, 2, 4, 2, 2, 2, 6, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 7, 3, 3, 5, 5, 5, 3, 5, 1, 1, 3, 3, 1, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 4, 6, 4, 2, 2, 6, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 8, 3, 7, 7, 3, 5, 3, 5, 3, 3, 3, 3, 1, 3, 3, 5, 3, 1, 3, 3, 3, 3, 1, 3, 1, 1, 2, 4, 4, 4, 4, 2, 2, 4, 2, 2, 6, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 5, 7, 7, 3, 3, 5, 3, 3, 3, 3, 1, 5, 1, 1, 3, 5, 1, 3, 1, 3, 3, 1, 1, 1, 4, 4, 2, 2, 4, 4, 4, 4, 2, 4, 6, 4, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 9, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 3, 5, 3, 1, 5, 1, 5, 3, 3, 3, 3, 1, 1, 1, 1, 3, 1, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 7, 7, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 1, 4, 4, 4, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 5, 3, 3, 5, 5, 5, 5, 3, 1, 3, 1, 3, 3, 1, 1, 3, 3, 1, 1, 1, 3, 1, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 5, 3, 5, 5, 5, 3, 5, 3, 1, 3, 1, 3, 5, 3, 3, 3, 1, 3, 1, 1, 3, 1, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 5, 5, 7, 3, 3, 5, 5, 3, 3, 3, 3, 1, 5, 3, 3, 1, 3, 1, 1, 3, 3, 1, 1, 3, 1, 4, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 5, 7, 5, 3, 5, 5, 3, 5, 3, 3, 3, 3, 1, 5, 1, 3, 1, 3, 1, 1, 1, 1, 3, 1, 2, 6, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 5, 3, 3, 3, 3, 5, 5, 3, 1, 1, 1, 1, 3, 1, 5, 3, 3, 1, 1, 1, 1, 3, 2, 4, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 5, 1, 7, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 8, 7, 5, 8, 5, 3, 5, 7, 3, 3, 5, 3, 1, 1, 1, 5, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 3, 3, 3, 5, 5, 5, 3, 3, 1, 1, 3, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 3, 2, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 7, 3, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 2, 4, 4, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 5, 5, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 3, 3, 1, 1, 3, 4, 4, 4, 4, 2, 4, 6, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 5, 7, 7, 5, 5, 3, 3, 3, 5, 3, 3, 1, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 2, 2, 4, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 5, 3, 5, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 3, 4, 4, 2, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 5, 3, 3, 3, 1, 3, 1, 3, 3, 3, 1, 4, 4, 2, 4, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 8, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 1, 3, 1, 3, 1, 1, 1, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 3, 3, 5, 3, 3, 5, 3, 1, 1, 3, 1, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 3, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 3, 7, 5, 3, 5, 5, 3, 5, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 3, 4, 6, 4, 4, 2, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 5, 3, 5, 3, 3, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3, 1, 3, 3, 2, 6, 2, 6, 4, 2, 6, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 5, 3, 3, 5, 3, 5, 5, 3, 3, 3, 5, 5, 3, 5, 3, 3, 1, 1, 1, 1, 1, 3, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 7, 7, 7, 5, 3, 3, 5, 3, 3, 5, 1, 3, 1, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 4, 6, 4, 4, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 7, 3, 5, 5, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 4, 4, 2, 2, 4, 4, 6, 6, 4, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 3, 7, 5, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 3, 1, 3, 2, 2, 2, 4, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 5, 3, 5, 7, 3, 3, 3, 3, 3, 5, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 4, 4, 2, 4, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 7, 5, 3, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 3, 4, 4, 2, 4, 2, 4, 6, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 7, 5, 3, 3, 5, 5, 5, 3, 3, 3, 3, 1, 3, 3, 1, 1, 3, 1, 1, 1, 3, 3, 3, 2, 4, 2, 4, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 3, 5, 5, 3, 3, 5, 3, 3, 1, 1, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 1, 1, 4, 2, 4, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 8, 5, 3, 5, 3, 3, 5, 3, 3, 1, 3, 5, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 3, 4, 4, 2, 4, 4, 2, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 5, 3, 3, 3, 5, 5, 3, 3, 1, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 3, 1, 3, 4, 4, 2, 2, 6, 2, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 3, 3, 5, 3, 3, 5, 3, 1, 3, 3, 3, 3, 5, 1, 3, 3, 3, 1, 1, 1, 1, 3, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 5, 7, 3, 5, 5, 3, 3, 5, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 3, 1, 1, 3, 1, 3, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 5, 3, 5, 1, 3, 3, 3, 1, 3, 3, 3, 1, 1, 3, 3, 1, 3, 3, 3, 1, 1, 1, 2, 2, 2, 4, 4, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 3, 3, 3, 5, 3, 5, 5, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 4, 4, 2, 4, 2, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 3, 5, 3, 5, 3, 5, 1, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 3, 3, 1, 1, 2, 4, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 7, 5, 5, 3, 5, 3, 3, 5, 5, 3, 3, 3, 3, 1, 1, 3, 3, 1, 1, 3, 1, 1, 1, 2, 4, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 1, 3, 3, 5, 1, 3, 3, 3, 3, 5, 3, 1, 3, 1, 1, 1, 1, 1, 6, 4, 2, 4, 2, 2, 2, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 5, 5, 5, 1, 5, 3, 5, 3, 1, 3, 1, 1, 1, 5, 3, 1, 3, 1, 1, 1, 3, 1, 4, 4, 4, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 3, 3, 3, 3, 1, 1, 1, 3, 4, 6, 4, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 3, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 3, 4, 4, 4, 4, 2, 2, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 5, 3, 5, 5, 5, 3, 3, 1, 3, 1, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 4, 4, 2, 4, 2, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 8, 5, 5, 3, 3, 3, 3, 3, 1, 1, 5, 3, 3, 3, 5, 3, 1, 3, 3, 3, 1, 1, 1, 4, 4, 4, 4, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 6, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 3, 3, 3, 5, 5, 3, 1, 5, 3, 5, 5, 3, 5, 3, 3, 1, 3, 1, 3, 1, 3, 3, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 3, 7, 5, 5, 3, 5, 3, 3, 3, 3, 3, 5, 3, 3, 5, 3, 3, 3, 3, 1, 3, 1, 5, 3, 6, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 7, 5, 5, 3, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 5, 5, 3, 1, 3, 3, 1, 1, 3, 4, 4, 2, 2, 4, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 7, 3, 7, 5, 3, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 2, 4, 2, 4, 4, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 5, 3, 5, 5, 5, 3, 5, 1, 5, 3, 3, 3, 3, 3, 5, 5, 1, 3, 3, 1, 1, 3, 1, 4, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 5, 5, 5, 3, 5, 3, 3, 1, 3, 5, 5, 3, 5, 3, 3, 5, 3, 3, 1, 1, 3, 3, 4, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 5, 3, 1, 1, 3, 3, 1, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 5, 7, 5, 5, 5, 5, 3, 5, 3, 5, 1, 3, 3, 3, 3, 5, 5, 3, 5, 3, 1, 3, 3, 1, 3, 5, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 3, 5, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 5, 1, 3, 3, 3, 1, 1, 1, 1, 1, 3, 2, 6, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 7, 5, 5, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 5, 3, 3, 3, 1, 3, 1, 3, 3, 3, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 7, 3, 3, 5, 5, 5, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 4, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 3, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 5, 3, 5, 5, 3, 1, 3, 1, 3, 1, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 5, 5, 3, 3, 1, 5, 3, 1, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 2, 4, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 8, 7, 5, 7, 7, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 3, 7, 3, 5, 5, 3, 3, 5, 3, 1, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 4, 4, 2, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 3, 5, 3, 3, 3, 3, 5, 1, 1, 3, 1, 3, 5, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 5, 4, 4, 2, 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 5, 5, 5, 3, 5, 5, 5, 3, 3, 5, 1, 3, 3, 1, 3, 5, 1, 1, 3, 1, 1, 3, 1, 3, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 7, 3, 5, 3, 5, 5, 5, 3, 3, 1, 3, 5, 3, 3, 3, 3, 5, 3, 3, 1, 1, 1, 1, 4, 4, 4, 4, 2, 4, 2, 4, 2, 2, 2, 4, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 3, 5, 5, 3, 3, 3, 1, 1, 1, 5, 3, 3, 5, 5, 3, 3, 3, 3, 1, 1, 3, 3, 4, 4, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 8, 7, 5, 5, 5, 5, 5, 3, 3, 5, 5, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 3, 2, 4, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 5, 1, 5, 1, 3, 1, 3, 3, 1, 1, 3, 4, 4, 2, 4, 4, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 5, 7, 3, 7, 5, 3, 5, 3, 3, 1, 3, 5, 3, 3, 1, 1, 3, 5, 3, 3, 3, 3, 1, 3, 4, 4, 2, 4, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 8, 7, 5, 5, 5, 5, 3, 3, 5, 3, 5, 1, 3, 1, 3, 3, 1, 3, 3, 3, 5, 1, 1, 1, 1, 3, 3, 2, 2, 4, 2, 2, 4, 6, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 5, 5, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 5, 3, 1, 3, 1, 3, 3, 1, 1, 1, 3, 3, 3, 2, 4, 4, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 5, 5, 7, 7, 3, 3, 5, 3, 5, 3, 3, 3, 3, 5, 1, 1, 5, 3, 1, 3, 3, 1, 3, 1, 3, 4, 2, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 3, 5, 5, 5, 3, 5, 3, 3, 1, 5, 3, 3, 3, 3, 3, 5, 1, 1, 1, 3, 1, 3, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 7, 7, 3, 5, 3, 3, 3, 3, 3, 1, 1, 5, 3, 3, 1, 1, 1, 3, 1, 3, 3, 3, 1, 3, 4, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 3, 5, 5, 5, 5, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 2, 4, 4, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 3, 7, 5, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 1, 1, 3, 1, 1, 5, 4, 4, 2, 4, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 3, 7, 3, 5, 5, 5, 3, 5, 3, 3, 1, 5, 3, 1, 5, 3, 3, 3, 3, 1, 1, 3, 1, 1, 2, 4, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 3, 7, 3, 3, 3, 3, 5, 5, 3, 3, 3, 7, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1, 3, 3, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 5, 7, 5, 3, 5, 5, 3, 5, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 3, 1, 4, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 3, 3, 5, 3, 5, 1, 3, 1, 5, 3, 3, 5, 3, 3, 3, 3, 1, 1, 1, 3, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 3, 5, 5, 3, 5, 5, 3, 3, 3, 3, 3, 1, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 3, 3, 3, 3, 7, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 1, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 3, 3, 5, 5, 5, 1, 3, 1, 3, 1, 3, 1, 5, 3, 3, 1, 1, 1, 3, 1, 1, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 5, 3, 5, 3, 3, 1, 3, 3, 3, 5, 1, 3, 5, 1, 1, 3, 3, 1, 1, 1, 3, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 5, 3, 3, 3, 5, 1, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 7, 3, 5, 3, 5, 3, 3, 1, 3, 1, 3, 3, 5, 3, 1, 3, 1, 3, 1, 3, 3, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 8, 3, 7, 7, 5, 3, 5, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 8, 7, 7, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 5, 1, 3, 1, 1, 1, 3, 1, 3, 1, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 5, 8, 3, 5, 1, 3, 3, 3, 1, 3, 3, 3, 3, 1, 5, 3, 3, 1, 3, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 8, 7, 7, 7, 5, 5, 7, 5, 3, 3, 3, 3, 3, 7, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 3, 5, 3, 3, 5, 5, 1, 1, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 1, 3, 3, 1, 4, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 5, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 3, 3, 1, 1, 3, 1, 1, 1, 1, 3, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 8, 7, 3, 5, 5, 5, 3, 5, 3, 3, 3, 5, 3, 3, 1, 3, 1, 1, 3, 3, 3, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 5, 1, 5, 5, 3, 3, 1, 1, 5, 3, 1, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 8, 7, 5, 5, 3, 5, 1, 5, 1, 3, 3, 5, 1, 3, 3, 3, 1, 1, 3, 1, 3, 3, 1, 1, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 5, 3, 3, 3, 5, 3, 3, 1, 5, 3, 1, 3, 3, 1, 1, 3, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 3, 5, 3, 3, 5, 5, 3, 3, 1, 3, 3, 1, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 3, 5, 5, 5, 3, 3, 3, 3, 1, 3, 5, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 5, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 3, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 7, 5, 3, 3, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 3, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 3, 5, 3, 3, 1, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 1, 3, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 5, 5, 5, 3, 3, 3, 5, 5, 1, 3, 3, 3, 3, 1, 1, 3, 3, 3, 1, 3, 1, 3, 2, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 4, 4, 4, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 3, 5, 5, 3, 3, 5, 3, 3, 5, 5, 3, 1, 3, 3, 1, 3, 3, 3, 1, 1, 1, 3, 1, 1, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 5, 5, 3, 5, 5, 1, 5, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 3, 3, 1, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 5, 3, 3, 5, 3, 5, 3, 3, 1, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 5, 1, 3, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 5, 3, 5, 3, 3, 5, 3, 1, 3, 3, 3, 1, 5, 3, 3, 3, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 8, 5, 5, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 1, 1, 1, 3, 1, 4, 4, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 5, 5, 5, 5, 3, 3, 3, 5, 1, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 3, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 5, 5, 7, 3, 3, 3, 3, 5, 3, 1, 1, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 3, 4, 4, 4, 2, 2, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 5, 3, 3, 3, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 1, 1, 1, 1, 4, 4, 2, 2, 2, 4, 4, 2, 2, 4, 6, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 8, 7, 3, 8, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 4, 4, 4, 2, 4, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 3, 7, 3, 3, 5, 3, 5, 3, 3, 3, 1, 3, 1, 3, 3, 3, 5, 3, 1, 3, 1, 1, 1, 3, 4, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 3, 5, 5, 5, 5, 3, 5, 5, 1, 1, 3, 1, 1, 3, 5, 1, 1, 1, 1, 3, 3, 3, 4, 4, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 1, 5, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 4, 4, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 7, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 5, 3, 3, 3, 1, 1, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 5, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 4, 2, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 5, 5, 1, 3, 3, 3, 1, 3, 3, 1, 1, 4, 4, 4, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 3, 5, 5, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 3, 3, 3, 3, 1, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 5, 7, 5, 5, 3, 3, 1, 3, 3, 3, 1, 1, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 3, 3, 3, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 5, 3, 3, 1, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 5, 5, 5, 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 3, 5, 1, 1, 1, 4, 4, 4, 2, 4, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 5, 3, 1, 5, 3, 3, 3, 3, 1, 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1, 6, 2, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 3, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 3, 5, 5, 3, 3, 5, 5, 5, 3, 5, 3, 3, 1, 1, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 4, 2, 2, 2, 2, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 3, 3, 5, 3, 5, 3, 3, 3, 3, 1, 4, 4, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 5, 3, 5, 3, 5, 5, 3, 5, 3, 5, 5, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 7, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 5, 3, 5, 3, 3, 3, 5, 3, 3, 3, 3, 1, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 5, 3, 3, 3, 3, 5, 1, 3, 3, 3, 3, 3, 3, 1, 5, 1, 5, 1, 1, 1, 1, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 3, 1, 3, 3, 3, 3, 1, 1, 3, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 5, 3, 3, 3, 3, 1, 3, 3, 5, 5, 3, 1, 3, 3, 1, 5, 3, 3, 1, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 5, 7, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 2, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 7, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 5, 3, 3, 1, 1, 1, 4, 2, 4, 2, 4, 4, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 7, 5, 5, 5, 3, 7, 5, 5, 5, 3, 1, 1, 1, 3, 3, 5, 3, 5, 5, 3, 1, 1, 3, 2, 2, 2, 6, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 3, 3, 3, 5, 5, 5, 3, 5, 3, 3, 3, 3, 1, 1, 3, 5, 3, 3, 1, 1, 1, 1, 2, 2, 2, 4, 4, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 3, 3, 3, 3, 3, 5, 5, 3, 3, 1, 3, 1, 3, 3, 3, 5, 3, 3, 3, 1, 1, 1, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 5, 5, 5, 5, 3, 5, 5, 1, 3, 3, 1, 1, 3, 3, 5, 3, 3, 3, 1, 1, 1, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 4, 4, 6, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 3, 5, 5, 3, 3, 3, 1, 5, 3, 3, 3, 1, 3, 3, 5, 5, 5, 5, 3, 3, 1, 3, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 5, 3, 7, 5, 5, 3, 3, 5, 5, 3, 5, 3, 3, 3, 1, 1, 3, 1, 3, 5, 5, 3, 1, 3, 1, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 7, 3, 7, 5, 5, 5, 3, 5, 3, 3, 3, 1, 3, 3, 1, 1, 5, 3, 5, 3, 3, 3, 3, 1, 1, 4, 2, 2, 4, 4, 4, 4, 2, 4, 6, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 5, 5, 5, 3, 5, 5, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 3, 5, 3, 3, 1, 1, 1, 2, 2, 2, 4, 4, 4, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 5, 7, 5, 3, 3, 5, 3, 3, 3, 3, 5, 1, 3, 1, 1, 1, 3, 1, 5, 5, 5, 3, 1, 3, 1, 4, 4, 2, 2, 2, 2, 4, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 3, 3, 5, 5, 5, 5, 5, 5, 3, 3, 5, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 5, 3, 5, 3, 5, 5, 3, 3, 1, 3, 1, 1, 3, 1, 3, 5, 1, 3, 3, 1, 1, 1, 4, 2, 2, 4, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 5, 5, 5, 3, 5, 5, 3, 3, 3, 1, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 1, 3, 2, 2, 2, 6, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 5, 5, 5, 5, 5, 5, 3, 5, 5, 1, 1, 3, 1, 3, 3, 1, 3, 3, 3, 1, 1, 3, 1, 4, 2, 2, 2, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 8, 5, 7, 7, 7, 3, 3, 5, 5, 5, 5, 5, 1, 1, 3, 1, 3, 3, 1, 5, 3, 1, 3, 3, 1, 1, 4, 2, 2, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 3, 3, 3, 3, 5, 5, 3, 3, 1, 3, 3, 1, 1, 1, 1, 3, 1, 3, 1, 3, 1, 3, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 3, 3, 5, 5, 3, 3, 3, 1, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 1, 1, 4, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 5, 3, 5, 5, 5, 5, 3, 3, 5, 1, 3, 3, 1, 3, 3, 3, 5, 5, 3, 1, 1, 3, 3, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 5, 5, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 3, 5, 3, 5, 5, 3, 3, 3, 3, 3, 5, 3, 1, 3, 1, 3, 3, 1, 1, 1, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 3, 7, 5, 7, 5, 3, 5, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 4, 4, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 5, 5, 7, 5, 7, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 1, 1, 3, 1, 3, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 5, 5, 5, 3, 5, 3, 5, 5, 5, 5, 3, 3, 5, 3, 1, 1, 3, 1, 3, 1, 1, 1, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 3, 5, 3, 5, 3, 3, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 7, 5, 5, 5, 7, 3, 3, 5, 5, 3, 3, 3, 3, 3, 5, 3, 3, 1, 3, 1, 1, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 7, 5, 5, 5, 5, 7, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 3, 3, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 5, 5, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 3, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 5, 5, 3, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 3, 1, 1, 1, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 5, 5, 5, 5, 3, 5, 3, 3, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 3, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 5, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 3, 1, 1, 1, 3, 2, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 3, 1, 5, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 3, 3, 5, 5, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 3, 3, 1, 3, 3, 1, 3, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 5, 7, 5, 5, 5, 5, 3, 3, 3, 5, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 8, 7, 5, 7, 7, 3, 5, 7, 3, 3, 5, 3, 3, 1, 3, 3, 1, 3, 3, 1, 1, 1, 1, 3, 1, 3, 1, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 6, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 7, 3, 5, 3, 3, 5, 3, 7, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 3, 1, 1, 3, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 3, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 7, 7, 7, 7, 7, 5, 7, 5, 5, 5, 3, 5, 5, 3, 3, 1, 3, 1, 3, 1, 1, 1, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 7, 7, 3, 7, 5, 5, 5, 3, 5, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 5, 7, 3, 3, 3, 7, 7, 5, 5, 1, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 5, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 7, 7, 5, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 1, 5, 5, 5, 5, 1, 3, 3, 3, 3, 1, 5, 1, 3, 3, 1, 3, 1, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 3, 7, 7, 7, 5, 5, 5, 5, 5, 3, 5, 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 5, 7, 3, 7, 5, 1, 5, 3, 7, 5, 5, 3, 1, 3, 1, 3, 3, 1, 3, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 3, 7, 7, 5, 7, 7, 7, 7, 3, 5, 3, 5, 5, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 3, 3, 4, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 5, 5, 7, 7, 5, 1, 5, 1, 5, 3, 5, 5, 3, 5, 1, 3, 3, 1, 1, 1, 3, 3, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 7, 5, 7, 7, 5, 7, 1, 5, 3, 5, 5, 3, 5, 3, 3, 3, 3, 1, 1, 1, 3, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 3, 7, 7, 7, 7, 5, 7, 3, 5, 3, 5, 5, 1, 5, 1, 3, 3, 3, 3, 1, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 5, 7, 5, 7, 5, 5, 5, 5, 7, 5, 7, 3, 3, 5, 1, 3, 1, 5, 1, 1, 3, 1, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 5, 7, 3, 7, 5, 5, 1, 3, 5, 3, 5, 3, 5, 3, 1, 3, 3, 5, 3, 1, 1, 1, 3, 1, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 7, 5, 5, 5, 5, 7, 5, 7, 3, 5, 5, 3, 3, 1, 5, 3, 1, 3, 1, 3, 1, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 7, 3, 5, 3, 5, 5, 1, 5, 1, 3, 3, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 5, 7, 7, 5, 5, 3, 5, 5, 7, 5, 1, 5, 1, 3, 3, 1, 3, 1, 3, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 7, 3, 5, 3, 5, 3, 1, 3, 1, 3, 1, 1, 1, 1, 3, 1, 4, 2, 4, 2, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 5, 7, 3, 7, 5, 1, 3, 1, 5, 3, 3, 3, 1, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 7, 5, 7, 5, 7, 5, 1, 3, 3, 5, 1, 3, 3, 1, 3, 3, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 5, 5, 5, 3, 5, 5, 3, 5, 1, 5, 3, 1, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 7, 1, 7, 5, 3, 7, 5, 7, 5, 3, 3, 1, 3, 1, 5, 3, 1, 3, 1, 3, 1, 4, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 6, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 5, 3, 2, 4, 6, 4, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 5, 7, 5, 5, 5, 3, 3, 3, 3, 1, 3, 5, 3, 3, 1, 3, 3, 5, 3, 1, 1, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 3, 5, 3, 5, 1, 3, 5, 3, 3, 3, 3, 3, 1, 5, 3, 3, 3, 3, 3, 3, 3, 1, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 8, 5, 5, 5, 3, 5, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 1, 4, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 7, 3, 3, 1, 5, 3, 3, 3, 1, 1, 3, 3, 3, 2, 4, 2, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 7, 3, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 4, 2, 2, 4, 4, 2, 4, 4, 2, 4, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 5, 3, 5, 3, 3, 5, 3, 3, 3, 3, 5, 5, 3, 3, 5, 3, 1, 1, 1, 1, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 3, 5, 5, 5, 5, 5, 5, 1, 1, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 5, 1, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 8, 5, 7, 3, 3, 3, 3, 5, 3, 3, 5, 3, 1, 1, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 3, 4, 4, 6, 2, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 3, 3, 3, 3, 5, 3, 3, 3, 3, 1, 1, 3, 5, 1, 1, 3, 3, 1, 1, 1, 3, 1, 1, 2, 4, 4, 2, 4, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 3, 5, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 5, 1, 1, 1, 1, 1, 1, 4, 4, 6, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 5, 1, 3, 3, 1, 3, 3, 3, 4, 4, 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 2, 4, 4, 4, 2, 2, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 7, 5, 3, 3, 5, 5, 3, 3, 3, 5, 3, 3, 3, 1, 1, 1, 3, 3, 1, 1, 3, 3, 1, 1, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 3, 5, 3, 5, 3, 3, 3, 5, 3, 3, 5, 1, 1, 3, 3, 1, 1, 1, 3, 1, 3, 4, 2, 4, 4, 4, 4, 4, 6, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 3, 3, 5, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 3, 1, 4, 4, 4, 4, 4, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 5, 5, 3, 5, 5, 3, 3, 3, 3, 3, 5, 1, 3, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 4, 4, 2, 4, 4, 2, 4, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 3, 5, 5, 5, 3, 1, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 5, 3, 3, 3, 3, 1, 1, 3, 6, 4, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 3, 5, 5, 5, 1, 3, 3, 3, 3, 5, 1, 5, 1, 3, 3, 5, 3, 3, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 5, 5, 3, 5, 5, 5, 3, 5, 1, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 4, 4, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 3, 5, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 3, 3, 2, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 3, 5, 5, 1, 3, 3, 3, 3, 1, 3, 1, 3, 5, 3, 5, 3, 1, 3, 3, 3, 3, 3, 6, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 3, 5, 3, 3, 5, 3, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 3, 6, 4, 4, 4, 4, 2, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 5, 3, 3, 5, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 4, 4, 4, 6, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 3, 3, 1, 3, 1, 1, 3, 3, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 5, 5, 7, 5, 5, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1, 3, 4, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 3, 3, 3, 3, 3, 5, 3, 3, 1, 5, 3, 3, 3, 5, 5, 3, 1, 3, 3, 3, 1, 3, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 1, 1, 4, 4, 2, 2, 2, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 5, 3, 5, 5, 3, 3, 1, 1, 1, 3, 1, 1, 1, 3, 4, 2, 2, 2, 4, 6, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 8, 7, 7, 7, 3, 5, 3, 5, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 1, 1, 3, 1, 1, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 5, 3, 3, 3, 1, 1, 1, 1, 4, 2, 2, 2, 2, 4, 2, 0, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 5, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 1, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 7, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 5, 3, 4, 2, 4, 2, 4, 4, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 5, 3, 3, 3, 5, 5, 3, 1, 1, 3, 1, 3, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 5, 3, 3, 1, 1, 3, 1, 1, 4, 4, 2, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 5, 5, 3, 1, 1, 1, 1, 1, 2, 4, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 9, 7, 7, 7, 5, 7, 5, 5, 3, 3, 5, 3, 5, 5, 3, 3, 3, 5, 3, 3, 5, 5, 3, 3, 1, 1, 3, 1, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 5, 3, 3, 5, 3, 3, 3, 3, 5, 5, 3, 3, 3, 5, 5, 3, 5, 1, 3, 3, 3, 6, 2, 2, 4, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 3, 3, 3, 5, 1, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 1, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 3, 5, 3, 3, 5, 3, 3, 3, 5, 5, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 2, 4, 2, 4, 2, 6, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 5, 5, 5, 3, 3, 5, 5, 3, 3, 5, 3, 1, 3, 5, 3, 1, 1, 1, 3, 1, 3, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 1, 1, 3, 1, 1, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 3, 5, 5, 3, 5, 3, 1, 5, 5, 5, 3, 3, 3, 3, 3, 5, 1, 3, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 3, 5, 7, 5, 5, 3, 5, 3, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 1, 3, 3, 2, 4, 4, 2, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 3, 3, 1, 3, 5, 3, 3, 3, 3, 3, 5, 3, 5, 1, 3, 1, 1, 1, 3, 3, 1, 4, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 5, 3, 3, 3, 3, 1, 1, 1, 3, 3, 4, 4, 4, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 5, 5, 5, 1, 5, 3, 3, 1, 1, 5, 3, 3, 3, 3, 3, 5, 3, 1, 3, 1, 3, 3, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 5, 5, 5, 3, 5, 5, 1, 5, 3, 3, 1, 3, 5, 5, 3, 3, 3, 3, 5, 3, 1, 3, 1, 1, 3, 6, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 8, 3, 5, 5, 5, 5, 5, 5, 3, 5, 5, 3, 3, 5, 5, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 3, 5, 3, 3, 3, 5, 3, 3, 1, 7, 3, 5, 5, 3, 3, 3, 3, 1, 1, 1, 3, 3, 6, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 8, 3, 7, 7, 3, 5, 5, 3, 3, 5, 5, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 5, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 8, 5, 5, 5, 3, 5, 3, 5, 5, 3, 3, 3, 3, 5, 5, 3, 5, 3, 5, 5, 3, 3, 1, 1, 3, 3, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 5, 1, 3, 3, 3, 3, 3, 3, 3, 5, 3, 1, 1, 1, 1, 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 3, 5, 3, 3, 5, 5, 3, 5, 3, 3, 3, 1, 5, 3, 3, 3, 3, 3, 1, 1, 1, 3, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 7, 5, 5, 5, 3, 5, 5, 3, 3, 1, 1, 5, 5, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 5, 3, 3, 5, 1, 5, 5, 1, 5, 3, 3, 1, 1, 1, 1, 4, 4, 4, 2, 2, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 5, 1, 5, 3, 3, 1, 5, 5, 3, 3, 3, 3, 3, 5, 5, 3, 3, 3, 1, 3, 3, 3, 3, 2, 4, 4, 2, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 7, 7, 5, 5, 5, 1, 5, 5, 5, 3, 1, 5, 5, 3, 5, 5, 5, 3, 3, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 5, 3, 3, 5, 3, 5, 3, 1, 1, 1, 5, 3, 3, 5, 5, 3, 3, 3, 3, 1, 1, 1, 3, 4, 4, 4, 4, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 5, 5, 5, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 5, 3, 3, 1, 3, 1, 3, 1, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 3, 5, 3, 3, 1, 5, 3, 1, 1, 5, 3, 3, 5, 3, 3, 3, 1, 1, 3, 1, 3, 3, 4, 2, 4, 4, 2, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 7, 7, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 3, 4, 4, 4, 2, 4, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 7, 7, 3, 5, 3, 5, 5, 5, 3, 3, 1, 3, 5, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 3, 6, 6, 2, 4, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 3, 5, 3, 3, 3, 5, 1, 3, 3, 3, 3, 3, 1, 3, 5, 3, 3, 1, 1, 1, 3, 3, 4, 4, 2, 2, 2, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 5, 7, 7, 5, 5, 3, 3, 3, 1, 3, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 4, 2, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 5, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 5, 1, 1, 3, 1, 1, 3, 3, 4, 2, 2, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 3, 5, 5, 3, 3, 3, 3, 3, 5, 3, 3, 1, 5, 3, 1, 1, 1, 1, 1, 3, 3, 4, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 3, 3, 5, 3, 5, 5, 5, 3, 5, 3, 5, 3, 1, 3, 3, 3, 3, 1, 3, 1, 3, 3, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 8, 5, 7, 7, 3, 5, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 6, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 5, 7, 7, 3, 5, 3, 5, 5, 5, 3, 5, 7, 3, 5, 3, 3, 3, 3, 5, 3, 1, 1, 1, 1, 3, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 5, 5, 5, 3, 5, 3, 5, 1, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 4, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 3, 7, 7, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 1, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 5, 3, 3, 3, 3, 5, 1, 3, 3, 5, 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 5, 7, 7, 3, 5, 3, 3, 3, 3, 3, 3, 5, 3, 1, 3, 5, 3, 3, 3, 3, 1, 1, 1, 1, 5, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 7, 7, 5, 5, 5, 5, 3, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 3, 5, 4, 4, 4, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 3, 1, 1, 3, 3, 3, 3, 1, 3, 1, 3, 3, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 3, 5, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 3, 1, 1, 1, 1, 1, 3, 4, 4, 6, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 3, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 3, 3, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 5, 7, 7, 5, 5, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 5, 3, 3, 3, 1, 1, 1, 1, 5, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 7, 7, 5, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 1, 3, 1, 1, 3, 1, 1, 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 3, 5, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 5, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 1, 3, 3, 1, 5, 1, 1, 3, 1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 3, 5, 5, 7, 3, 3, 3, 3, 5, 3, 5, 3, 3, 3, 1, 1, 3, 1, 1, 1, 3, 5, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 5, 7, 7, 5, 5, 5, 3, 3, 3, 5, 3, 3, 1, 5, 1, 3, 1, 1, 3, 1, 1, 1, 1, 3, 3, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 3, 5, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 1, 3, 1, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 5, 5, 5, 5, 3, 5, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 3, 5, 3, 5, 3, 3, 5, 3, 3, 3, 3, 1, 1, 3, 1, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 5, 8, 5, 5, 3, 5, 3, 5, 5, 3, 5, 3, 5, 3, 5, 5, 3, 3, 1, 3, 3, 1, 1, 1, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 5, 3, 3, 1, 1, 1, 1, 1, 3, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 3, 5, 7, 5, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1, 3, 3, 3, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 5, 3, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 4, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 5, 3, 5, 3, 5, 5, 5, 3, 3, 5, 3, 3, 1, 3, 1, 5, 3, 1, 3, 1, 3, 1, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 5, 5, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 3, 1, 1, 1, 1, 3, 6, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 1, 5, 5, 5, 3, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 3, 1, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 1, 1, 3, 1, 1, 1, 1, 3, 3, 3, 4, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 5, 1, 3, 3, 3, 3, 5, 3, 3, 1, 3, 1, 3, 1, 4, 2, 2, 2, 2, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 1, 3, 3, 3, 4, 4, 2, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 7, 7, 5, 3, 5, 3, 5, 3, 3, 5, 3, 3, 1, 3, 3, 3, 5, 3, 3, 3, 3, 1, 1, 1, 4, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 3, 3, 5, 3, 5, 5, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 4, 4, 4, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 5, 5, 5, 5, 5, 3, 3, 5, 1, 1, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 3, 1, 3, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 3, 5, 3, 5, 5, 3, 3, 1, 1, 3, 5, 3, 1, 3, 3, 3, 3, 1, 1, 1, 3, 3, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 3, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 3, 3, 5, 6, 4, 2, 4, 4, 4, 2, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 5, 3, 3, 5, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 6, 4, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 5, 3, 5, 5, 5, 5, 3, 3, 5, 3, 3, 3, 1, 3, 5, 1, 1, 3, 1, 1, 1, 5, 4, 6, 4, 2, 2, 2, 6, 2, 4, 4, 4, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 5, 5, 3, 5, 7, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 1, 1, 3, 4, 2, 2, 4, 2, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 8, 7, 7, 7, 3, 5, 5, 3, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 1, 3, 1, 4, 6, 2, 2, 4, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 8, 5, 5, 5, 3, 3, 5, 3, 1, 5, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 3, 3, 4, 4, 2, 4, 2, 4, 2, 4, 2, 4, 4, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 1, 1, 3, 3, 1, 1, 2, 4, 4, 2, 2, 2, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 5, 3, 3, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 4, 2, 4, 2, 4, 4, 2, 4, 6, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 3, 3, 3, 5, 3, 3, 1, 3, 3, 3, 3, 5, 1, 5, 3, 3, 3, 3, 1, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 5, 3, 5, 3, 5, 3, 3, 3, 3, 5, 1, 3, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 8, 7, 7, 7, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 3, 3, 1, 3, 1, 3, 6, 2, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 3, 3, 3, 5, 3, 3, 5, 3, 1, 3, 3, 5, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 4, 2, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 5, 1, 3, 3, 5, 3, 5, 3, 3, 1, 1, 1, 3, 1, 1, 4, 4, 4, 2, 2, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 6, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 3, 5, 3, 5, 5, 3, 3, 1, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3, 1, 4, 6, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 5, 3, 5, 3, 5, 3, 3, 1, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 4, 4, 2, 2, 2, 4, 4, 4, 4, 6, 4, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 8, 7, 7, 7, 3, 5, 3, 7, 5, 3, 3, 3, 1, 3, 3, 3, 1, 3, 5, 5, 3, 3, 1, 3, 1, 3, 6, 4, 4, 4, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 3, 5, 3, 3, 3, 3, 1, 5, 1, 3, 3, 3, 3, 3, 5, 1, 3, 3, 1, 3, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 4, 6, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 5, 3, 3, 3, 5, 5, 5, 3, 1, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 1, 1, 1, 4, 4, 2, 4, 4, 4, 4, 2, 4, 6, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 3, 3, 5, 3, 3, 5, 3, 5, 3, 5, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 1, 1, 2, 4, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 5, 5, 3, 5, 3, 3, 3, 1, 1, 3, 3, 1, 3, 1, 3, 1, 5, 1, 4, 4, 2, 2, 2, 4, 2, 4, 4, 2, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 5, 5, 3, 5, 5, 3, 5, 3, 1, 3, 1, 1, 3, 3, 5, 3, 1, 1, 1, 1, 3, 1, 4, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 5, 3, 5, 5, 3, 3, 3, 3, 1, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 1, 2, 4, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 3, 5, 3, 5, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 3, 5, 3, 3, 3, 1, 1, 3, 4, 2, 2, 4, 4, 2, 4, 4, 4, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 5, 5, 3, 5, 3, 3, 3, 3, 1, 5, 1, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 4, 4, 4, 4, 2, 4, 4, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 3, 5, 3, 5, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 4, 6, 4, 2, 2, 4, 4, 6, 4, 4, 2, 2, 2, 2, 4, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 8, 7, 7, 7, 3, 5, 5, 3, 3, 3, 3, 1, 1, 5, 3, 3, 1, 5, 3, 3, 3, 1, 1, 1, 3, 3, 4, 4, 4, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 5, 3, 3, 1, 3, 1, 1, 4, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 3, 5, 5, 5, 5, 3, 1, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 4, 4, 6, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 3, 5, 3, 3, 5, 3, 3, 3, 5, 1, 1, 1, 3, 3, 3, 3, 3, 3, 1, 1, 3, 4, 2, 2, 2, 2, 2, 4, 6, 4, 6, 4, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 5, 5, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 2, 4, 2, 2, 4, 2, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 5, 3, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 4, 2, 4, 4, 4, 4, 4, 6, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 5, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 4, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 5, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 4, 4, 4, 2, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 3, 3, 3, 3, 3, 3, 5, 5, 3, 3, 3, 3, 3, 1, 1, 5, 3, 1, 1, 1, 1, 1, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 5, 5, 5, 5, 3, 5, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 1, 4, 6, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 5, 5, 3, 5, 5, 3, 5, 3, 1, 3, 3, 3, 3, 3, 5, 5, 3, 1, 1, 1, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 3, 3, 1, 1, 1, 3, 2, 4, 2, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 5, 5, 5, 3, 5, 5, 5, 1, 3, 3, 5, 3, 3, 1, 1, 3, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 3, 5, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 4, 4, 2, 2, 4, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 5, 7, 7, 3, 5, 3, 5, 3, 3, 5, 3, 1, 3, 3, 3, 3, 5, 5, 1, 3, 3, 3, 1, 1, 3, 4, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 5, 3, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 3, 3, 2, 4, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 3, 3, 3, 3, 3, 3, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 4, 2, 4, 4, 4, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 7, 7, 3, 3, 3, 3, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 3, 4, 4, 2, 4, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 3, 5, 3, 3, 3, 5, 5, 5, 3, 5, 5, 3, 3, 5, 3, 3, 1, 1, 1, 1, 3, 1, 4, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 5, 5, 3, 5, 3, 5, 5, 3, 3, 3, 5, 3, 3, 3, 3, 5, 1, 1, 1, 1, 3, 3, 4, 4, 4, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 3, 3, 2, 6, 2, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 5, 3, 3, 3, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 5, 1, 1, 3, 3, 3, 3, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 5, 3, 5, 5, 3, 3, 5, 3, 3, 1, 3, 3, 3, 1, 3, 5, 3, 1, 1, 1, 1, 3, 3, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 7, 5, 3, 7, 5, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 5, 3, 3, 1, 3, 1, 1, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 5, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 1, 1, 3, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 5, 5, 7, 3, 5, 3, 3, 3, 3, 5, 1, 3, 5, 3, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 3, 2, 4, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 5, 5, 5, 3, 5, 5, 3, 1, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 5, 3, 5, 3, 5, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 4, 4, 2, 2, 4, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 5, 3, 5, 5, 5, 5, 5, 5, 3, 1, 3, 3, 3, 1, 3, 3, 5, 1, 1, 1, 3, 3, 3, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 3, 1, 5, 3, 3, 5, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 4, 6, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 3, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 5, 5, 3, 5, 5, 3, 3, 3, 3, 1, 3, 6, 6, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 5, 3, 3, 3, 1, 3, 1, 3, 2, 4, 2, 4, 4, 2, 2, 2, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 5, 5, 3, 3, 3, 3, 5, 3, 1, 5, 3, 3, 3, 3, 1, 1, 3, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 3, 3, 5, 3, 3, 3, 5, 1, 5, 1, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 3, 6, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 3, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 5, 3, 1, 1, 3, 1, 3, 4, 4, 4, 2, 2, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 3, 5, 1, 3, 1, 5, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 1, 3, 1, 1, 2, 4, 4, 2, 4, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 2, 4, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 5, 5, 5, 7, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 5, 3, 3, 1, 1, 3, 1, 1, 4, 4, 4, 2, 2, 2, 4, 2, 2, 4, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 5, 5, 3, 5, 3, 3, 1, 3, 5, 3, 3, 1, 3, 1, 3, 3, 3, 1, 3, 1, 1, 3, 4, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 5, 5, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 5, 4, 4, 4, 4, 4, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 8, 5, 5, 7, 5, 5, 3, 1, 1, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 5, 3, 1, 3, 1, 1, 3, 4, 2, 2, 2, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 5, 3, 5, 5, 3, 1, 3, 3, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 5, 3, 7, 5, 1, 3, 5, 3, 3, 1, 3, 3, 3, 1, 5, 3, 5, 1, 1, 1, 1, 3, 1, 2, 4, 4, 2, 4, 4, 4, 2, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 1, 5, 3, 3, 3, 1, 3, 3, 3, 3, 5, 3, 3, 5, 5, 3, 3, 3, 1, 3, 3, 3, 4, 6, 2, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 5, 3, 3, 5, 3, 5, 5, 5, 3, 1, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 5, 5, 3, 5, 5, 3, 3, 5, 3, 1, 3, 5, 3, 3, 5, 3, 3, 3, 1, 1, 3, 3, 5, 4, 6, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 5, 5, 5, 1, 5, 3, 3, 3, 3, 1, 1, 3, 3, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 3, 7, 3, 5, 3, 3, 3, 5, 1, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 2, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 3, 3, 3, 1, 1, 1, 3, 1, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 5, 5, 3, 5, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 4, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 7, 3, 7, 5, 5, 5, 1, 3, 5, 3, 3, 3, 3, 3, 5, 1, 3, 3, 3, 1, 1, 3, 3, 2, 4, 4, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 3, 5, 3, 5, 3, 5, 3, 3, 3, 5, 3, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 3, 2, 4, 4, 2, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 3, 7, 3, 3, 1, 3, 3, 3, 1, 5, 1, 1, 1, 5, 3, 1, 1, 3, 1, 3, 3, 3, 4, 4, 2, 4, 2, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 7, 7, 5, 5, 3, 5, 5, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 5, 3, 1, 1, 1, 3, 4, 6, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 3, 5, 5, 5, 5, 5, 3, 5, 3, 3, 5, 3, 3, 3, 3, 5, 3, 3, 3, 1, 1, 3, 1, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 3, 5, 3, 5, 5, 1, 3, 3, 3, 5, 5, 3, 3, 5, 5, 5, 3, 1, 1, 3, 3, 1, 2, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 5, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 4, 2, 4, 2, 4, 4, 6, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 3, 5, 7, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 1, 1, 1, 2, 2, 4, 2, 4, 2, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 5, 7, 5, 5, 7, 3, 3, 5, 3, 3, 3, 1, 1, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 2, 6, 4, 2, 4, 4, 6, 6, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 3, 5, 1, 3, 3, 1, 5, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 4, 4, 4, 2, 4, 4, 4, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 5, 7, 3, 7, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 3, 4, 4, 2, 2, 4, 2, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 5, 3, 7, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 4, 2, 4, 4, 4, 6, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 5, 7, 3, 7, 3, 1, 3, 3, 5, 3, 3, 3, 3, 1, 1, 3, 1, 3, 3, 1, 1, 3, 1, 3, 4, 4, 4, 2, 4, 4, 6, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 5, 7, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 5, 3, 3, 3, 1, 1, 1, 1, 4, 4, 4, 2, 4, 4, 6, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 3, 3, 7, 3, 3, 3, 3, 3, 3, 5, 1, 3, 1, 1, 3, 1, 3, 1, 3, 1, 1, 1, 3, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 7, 3, 5, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3, 5, 1, 3, 1, 1, 1, 1, 4, 4, 4, 2, 2, 2, 6, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 3, 7, 3, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 4, 4, 6, 4, 2, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 5, 5, 7, 3, 3, 3, 5, 5, 3, 3, 1, 3, 1, 3, 3, 5, 3, 1, 3, 1, 1, 3, 3, 4, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 7, 7, 5, 7, 3, 5, 3, 3, 3, 1, 3, 3, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1, 3, 4, 2, 4, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 5, 7, 5, 5, 3, 5, 5, 3, 3, 3, 1, 3, 3, 1, 1, 3, 1, 1, 3, 3, 1, 3, 1, 1, 4, 4, 4, 2, 2, 2, 6, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 7, 7, 3, 7, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 5, 1, 1, 1, 1, 3, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 5, 7, 7, 3, 7, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 4, 4, 4, 2, 4, 2, 4, 4, 4, 2, 2, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 3, 4, 4, 4, 2, 6, 2, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 7, 7, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 2, 4, 4, 2, 4, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 3, 7, 3, 5, 5, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 4, 4, 2, 2, 4, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 5, 5, 7, 3, 7, 3, 3, 3, 5, 3, 3, 1, 3, 3, 1, 3, 3, 3, 5, 3, 3, 1, 1, 1, 1, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 7, 7, 1, 3, 3, 5, 3, 1, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 1, 3, 1, 1, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 7, 7, 7, 7, 7, 5, 3, 5, 3, 1, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 1, 1, 1, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 7, 8, 5, 7, 3, 3, 3, 3, 3, 1, 5, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 7, 7, 5, 7, 5, 5, 3, 1, 3, 3, 1, 1, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 5, 7, 5, 5, 5, 3, 1, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 7, 7, 7, 7, 1, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 5, 5, 7, 3, 3, 1, 3, 3, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 5, 7, 3, 5, 5, 3, 3, 3, 3, 1, 3, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 3, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 5, 1, 3, 1, 1, 1, 1, 3, 1, 4, 2, 4, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, -7, 7, 7, 7, 3, 5, 3, 5, 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 3, 1, 3, 3, 4, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, -7, 7, 5, 5, 5, 5, 3, 5, 3, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 3, 3, 3, 5, 3, 3, 5, 5, 3, 1, 1, 5, 3, 3, 1, 3, 3, 1, 1, 1, 3, 3, 1, 1, 3, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 3, 3, 5, 3, 5, 1, 3, 5, 3, 3, 1, 3, 1, 3, 3, 1, 1, 3, 3, 1, 1, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 3, 5, 5, 5, 3, 5, 5, 3, 5, 5, 1, 3, 3, 5, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 4, 2, 2, 4, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 5, 5, 3, 5, 7, 5, 3, 3, 3, 3, 3, 3, 5, 3, 1, 3, 3, 1, 3, 3, 3, 1, 3, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 5, 5, 7, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 5, 1, 5, 3, 4, 2, 6, 4, 2, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 3, 7, 3, 5, 5, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 4, 4, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 5, 3, 5, 5, 3, 5, 3, 3, 1, 3, 3, 1, 1, 1, 1, 1, 3, 3, 3, 1, 3, 1, 4, 4, 2, 4, 2, 4, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 5, 5, 3, 5, 3, 5, 3, 5, 5, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 7, 3, 3, 3, 5, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 2, 2, 4, 4, 4, 6, 4, 4, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 3, 5, 5, 5, 3, 3, 1, 7, 3, 5, 5, 3, 3, 5, 3, 3, 1, 3, 3, 5, 3, 5, 3, 4, 4, 4, 6, 4, 4, 4, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 3, 3, 5, 5, 3, 7, 7, 3, 3, 3, 3, 5, 3, 5, 1, 3, 3, 5, 3, 7, 1, 6, 4, 4, 6, 4, 6, 6, 6, 2, 6, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 5, 3, 7, 5, 5, 5, 3, 3, 5, 7, 5, 5, 5, 7, 7, 4, 4, 4, 4, 6, 4, 6, 2, 4, 4, 6, 6, 6, 4, 2, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 3, 5, 7, 5, 3, 5, 5, 5, 7, 5, 5, 5, 7, 5, 7, 5, 5, 3, 5, 3, 3, 3, 5, 5, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 4, 4, 6, 6, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 5, 7, 7, 5, 7, 7, 7, 5, 5, 5, 5, 7, 3, 5, 5, 5, 3, 5, 7, 7, 5, 7, 5, 6, 7, 6, 6, 6, 2, 4, 6, 4, 4, 2, 6, 6, 6, 6, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 3, 5, 7, 5, 5, 7, 7, 5, 5, 7, 7, 5, 7, 5, 7, 5, 5, 5, 5, 5, 5, 5, 5, 7, 6, 4, 4, 6, 4, 6, 6, 7, 4, 4, 6, 6, 4, 6, 4, 2, 4, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 5, 7, 7, 7, 5, 3, 7, 5, 7, 3, 5, 7, 7, 5, 5, 5, 5, 5, 5, 3, 5, 7, 7, 3, 5, 3, 6, 6, 2, 6, 7, 6, 4, 4, 6, 4, 6, 6, 4, 6, 4, 2, 4, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 7, 5, 5, 5, 7, 7, 7, 5, 5, 5, 5, 3, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 7, 5, 6, 6, 2, 6, 6, 6, 6, 6, 4, 4, 6, 6, 6, 6, 4, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 7, 5, 3, 7, 5, 3, 5, 5, 5, 1, 5, 7, 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 6, 4, 6, 4, 4, 7, 6, 4, 2, 6, 6, 4, 6, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 7, 7, 5, 7, 5, 3, 7, 7, 5, 5, 7, 5, 3, 7, 5, 7, 5, 7, 5, 5, 5, 7, 5, 7, 3, 6, 7, 4, 6, 6, 6, 6, 6, 4, 2, 6, 6, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 7, 5, 7, 7, 3, 7, 7, 5, 3, 5, 5, 3, 7, 7, 7, 5, 5, 5, 5, 5, 7, 5, 7, 5, 6, 6, 2, 4, 4, 6, 6, 6, 4, 4, 4, 6, 2, 6, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 5, 7, 5, 3, 7, 7, 5, 5, 5, 5, 3, 7, 5, 5, 5, 5, 5, 5, 5, 5, 3, 7, 5, 7, 7, 2, 6, 6, 4, 4, 6, 4, 4, 4, 6, 2, 6, 2, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 5, 7, 3, 7, 3, 1, 5, 7, 5, 5, 7, 5, 7, 5, 5, 5, 7, 7, 7, 5, 7, 7, 6, 4, 2, 7, 7, 6, 4, 6, 4, 4, 6, 6, 6, 2, 4, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 5, 5, 3, 7, 5, 5, 7, 5, 5, 3, 7, 3, 7, 5, 5, 5, 7, 5, 5, 5, 7, 5, 7, 4, 4, 4, 4, 4, 6, 6, 4, 2, 6, 2, 2, 6, 2, 0, 4, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 3, 3, 5, 5, 7, 7, 7, 7, 7, 3, 5, 3, 3, 7, 7, 5, 5, 7, 5, 7, 5, 5, 5, 7, 6, 4, 6, 7, 4, 6, 6, 4, 4, 6, 4, 4, 4, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 7, 3, 3, 7, 7, 3, 7, 5, 3, 5, 3, 3, 7, 7, 5, 5, 7, 5, 7, 7, 7, 7, 6, 6, 4, 6, 6, 4, 6, 4, 2, 4, 6, 6, 4, 2, 2, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 3, 7, 3, 5, 7, 3, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 2, 4, 7, 4, 4, 4, 4, 4, 6, 4, 2, 4, 2, 0, 4, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 3, 7, 5, 5, 7, 7, 7, 7, 5, 3, 7, 7, 5, 7, 5, 7, 5, 7, 5, 7, 7, 7, 5, 6, 6, 2, 4, 6, 4, 6, 4, 4, 6, 6, 4, 2, 2, 2, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 3, 5, 7, 3, 7, 3, 5, 7, 7, 5, 5, 7, 3, 5, 5, 7, 7, 5, 7, 7, 7, 7, 5, 6, 6, 4, 6, 6, 2, 4, 4, 4, 6, 6, 2, 2, 2, 2, 0, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 3, 3, 5, 5, 5, 7, 5, 5, 5, 7, 5, 7, 5, 7, 7, 5, 5, 5, 5, 5, 7, 7, 6, 4, 6, 6, 2, 6, 4, 4, 4, 6, 4, 2, 2, 2, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 5, 5, 3, 7, 7, 5, 5, 5, 7, 5, 5, 5, 3, 7, 7, 7, 5, 5, 7, 7, 7, 5, 5, 6, 6, 4, 7, 6, 2, 4, 4, 4, 4, 4, 6, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 5, 7, 5, 7, 5, 7, 7, 5, 5, 5, 7, 5, 7, 3, 5, 7, 3, 5, 5, 7, 7, 5, 6, 6, 2, 6, 6, 2, 4, 6, 2, 4, 4, 4, 4, 2, 2, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 7, 7, 5, 7, 5, 7, 5, 5, 7, 7, 5, 5, 3, 3, 7, 5, 5, 7, 5, 5, 7, 5, 5, 5, 6, 4, 2, 4, 6, 4, 6, 6, 2, 4, 4, 6, 2, 2, 2, 0, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 7, 5, 3, 7, 3, 3, 7, 7, 3, 5, 5, 5, 5, 5, 5, 7, 3, 5, 7, 3, 5, 7, 6, 4, 2, 6, 6, 2, 6, 4, 2, 4, 2, 4, 2, 2, 2, 0, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 5, 5, 5, 7, 3, 3, 7, 5, 3, 3, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 4, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 3, 5, 5, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 5, 1, 3, 1, 4, 2, 6, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 7, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 4, 4, 4, 4, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 7, 3, 5, 3, 5, 1, 5, 1, 3, 3, 3, 3, 1, 3, 3, 5, 3, 1, 1, 3, 3, 3, 1, 6, 4, 4, 4, 6, 4, 6, 6, 2, 4, 4, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 5, 3, 3, 3, 6, 4, 4, 4, 4, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 5, 5, 5, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 1, 1, 4, 2, 4, 2, 6, 4, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 6, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 5, 3, 5, 5, 5, 3, 3, 5, 5, 5, 1, 5, 5, 3, 3, 3, 5, 3, 1, 3, 7, 3, 3, 5, 6, 2, 6, 4, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 7, 3, 5, 3, 3, 5, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 1, 3, 3, 3, 3, 1, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 7, 5, 5, 3, 3, 5, 5, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 6, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 6, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 7, 3, 3, 3, 3, 7, 3, 3, 1, 3, 3, 3, 3, 1, 3, 1, 1, 1, 7, 1, 3, 1, 6, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 5, 5, 5, 7, 5, 7, 5, 3, 3, 1, 7, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 5, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 7, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 5, 3, 5, 3, 3, 5, 3, 3, 3, 1, 5, 1, 3, 1, 1, 1, 1, 1, 5, 1, 1, 1, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 7, 5, 5, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 5, 5, 1, 1, 3, 3, 4, 4, 4, 4, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 4, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 7, 7, 7, 3, 3, 5, 3, 3, 3, 5, 1, 1, 3, 5, 1, 3, 5, 1, 1, 3, 3, 1, 1, 3, 6, 2, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 5, 3, 3, 5, 3, 1, 1, 3, 3, 3, 3, 5, 3, 1, 1, 1, 3, 3, 3, 3, 1, 1, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 3, 5, 1, 5, 3, 3, 1, 3, 1, 1, 3, 1, 3, 1, 3, 1, 1, 3, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 5, 5, 3, 5, 3, 5, 1, 3, 3, 3, 3, 3, 5, 1, 1, 3, 1, 3, 1, 5, 3, 3, 1, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 3, 5, 3, 3, 5, 1, 1, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 3, 1, 1, 1, 4, 2, 4, 6, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 5, 5, 3, 3, 3, 5, 3, 3, 1, 5, 3, 1, 3, 5, 3, 1, 3, 3, 3, 3, 5, 3, 1, 1, 6, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 6, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 5, 5, 3, 3, 5, 3, 5, 3, 1, 3, 3, 1, 3, 3, 3, 3, 5, 1, 1, 3, 3, 1, 3, 3, 2, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 3, 3, 5, 3, 3, 3, 1, 1, 3, 3, 3, 3, 5, 3, 3, 1, 3, 6, 2, 4, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 5, 3, 5, 3, 3, 1, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 3, 3, 3, 4, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 5, 7, 5, 5, 3, 3, 3, 3, 3, 3, 1, 5, 3, 3, 3, 1, 3, 1, 1, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 5, 3, 5, 5, 3, 7, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 6, 2, 4, 4, 4, 4, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 3, 3, 5, 5, 5, 5, 3, 5, 1, 3, 3, 5, 3, 1, 3, 1, 3, 3, 5, 3, 5, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 5, 3, 5, 5, 3, 5, 3, 5, 1, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 1, 6, 2, 4, 2, 4, 4, 4, 4, 4, 2, 4, 4, 2, 2, 4, 2, 6, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 5, 5, 5, 3, 5, 5, 1, 5, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 3, 3, 1, 3, 1, 2, 4, 4, 2, 2, 6, 4, 4, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 5, 5, 5, 5, 1, 3, 3, 3, 5, 3, 3, 5, 3, 3, 5, 3, 1, 3, 5, 1, 3, 3, 6, 2, 4, 2, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 7, 3, 5, 5, 3, 5, 3, 3, 1, 3, 1, 5, 1, 3, 3, 3, 1, 3, 5, 3, 3, 1, 4, 4, 4, 4, 4, 4, 4, 6, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 5, 3, 7, 5, 5, 5, 1, 7, 3, 5, 1, 1, 3, 5, 3, 1, 3, 1, 3, 1, 7, 1, 3, 3, 4, 4, 4, 4, 4, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 7, 5, 3, 7, 3, 5, 3, 3, 5, 3, 3, 1, 1, 3, 3, 3, 1, 3, 3, 1, 3, 7, 3, 1, 5, 4, 4, 4, 2, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 5, 3, 5, 5, 3, 5, 7, 3, 5, 3, 5, 1, 3, 3, 5, 3, 1, 1, 1, 1, 1, 7, 3, 3, 1, 6, 2, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 6, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 7, 7, 7, 3, 5, 3, 5, 3, 1, 3, 3, 5, 3, 3, 1, 1, 1, 1, 5, 1, 1, 1, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 7, 7, 5, 5, 7, 3, 5, 3, 1, 3, 3, 7, 1, 3, 1, 1, 3, 3, 5, 1, 3, 1, 4, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 7, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 1, 3, 5, 5, 1, 3, 1, 1, 3, 7, 1, 1, 1, 6, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 7, 7, 7, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 5, 1, 1, 3, 1, 3, 3, 5, 1, 1, 1, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 3, 5, 3, 3, 1, 3, 7, 3, 1, 1, 1, 1, 1, 5, 1, 1, 1, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 7, 3, 5, 3, 5, 3, 3, 3, 1, 3, 3, 7, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 6, 2, 4, 2, 4, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 7, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 5, 3, 5, 3, 6, 4, 4, 4, 4, 4, 4, 4, 2, 2, 4, 4, 4, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 7, 5, 5, 7, 5, 3, 3, 5, 5, 5, 3, 5, 3, 3, 3, 1, 3, 3, 3, 1, 1, 3, 4, 2, 4, 2, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 6, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 3, 1, 3, 1, 3, 3, 5, 1, 3, 3, 1, 3, 3, 5, 1, 1, 1, 4, 4, 4, 2, 2, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 7, 5, 5, 5, 5, 3, 1, 1, 1, 1, 3, 3, 3, 3, 3, 1, 3, 7, 3, 1, 1, 3, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 5, 5, 3, 3, 3, 6, 4, 4, 4, 4, 4, 2, 4, 4, 6, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 5, 5, 3, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 5, 3, 1, 3, 1, 3, 1, 5, 1, 3, 1, 4, 2, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 3, 5, 3, 5, 5, 5, 3, 1, 5, 5, 3, 3, 3, 3, 5, 3, 1, 5, 1, 3, 3, 3, 3, 3, 1, 6, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 5, 5, 5, 5, 3, 7, 3, 3, 5, 1, 3, 3, 3, 1, 3, 1, 3, 1, 3, 3, 3, 3, 6, 4, 4, 4, 4, 4, 2, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 7, 5, 5, 3, 5, 5, 3, 7, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 5, 3, 3, 1, 6, 2, 4, 2, 4, 6, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 5, 3, 3, 1, 7, 3, 3, 3, 1, 3, 5, 3, 1, 3, 1, 1, 3, 3, 3, 1, 1, 6, 2, 4, 4, 4, 6, 2, 6, 2, 6, 2, 2, 4, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 5, 5, 3, 5, 3, 7, 3, 3, 3, 3, 5, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 5, 7, 5, 3, 5, 3, 7, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 5, 1, 3, 1, 4, 2, 2, 2, 4, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 5, 5, 5, 5, 5, 1, 7, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 5, 1, 1, 3, 6, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 7, 5, 3, 5, 3, 7, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 7, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 5, 7, 5, 3, 5, 3, 7, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, 5, 1, 3, 1, 6, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 6, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 7, 5, 3, 7, 3, 3, 5, 1, 5, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 1, 1, 3, 3, 1, 1, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 7, 2, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 3, 5, 5, 5, 5, 5, 3, 3, 3, 1, 3, 5, 3, 5, 1, 5, 3, 1, 5, 3, 3, 3, 3, 4, 4, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 3, 5, 5, 3, 3, 3, 1, 3, 5, 3, 3, 3, 7, 5, 5, 5, 1, 3, 3, 5, 3, 3, 3, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 6, 2, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 3, 5, 5, 7, 3, 3, 3, 3, 3, 3, 1, 3, 3, 7, 1, 3, 3, 1, 1, 1, 7, 1, 3, 1, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 2, 7, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 5, 5, 5, 3, 3, 3, 3, 3, 3, 5, 3, 5, 3, 3, 3, 1, 1, 1, 3, 1, 1, 1, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 6, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 3, 3, 7, 3, 5, 3, 1, 1, 5, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3, 3, 5, 3, 3, 6, 2, 4, 4, 2, 4, 2, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 5, 7, 1, 3, 3, 1, 3, 3, 3, 1, 3, 5, 1, 1, 3, 1, 3, 1, 3, 3, 3, 3, 4, 4, 6, 4, 2, 2, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 7, 5, 7, 5, 5, 3, 1, 1, 3, 1, 3, 5, 7, 3, 3, 5, 3, 3, 3, 5, 3, 5, 5, 6, 6, 4, 2, 2, 6, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 6, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -7, 7, 7, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 1, 3, 1, 3, 5, 5, 1, 1, 5, 1, 1, 1, 3, 3, 3, 3, 4, 2, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 3, 5, 5, 5, 3, 3, 5, 1, 3, 3, 3, 3, 5, 3, 3, 3, 1, 1, 1, 3, 1, 1, 1, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 5, 5, 5, 3, 5, 3, 5, 5, 3, 1, 5, 5, 3, 3, 3, 5, 3, 1, 3, 3, 1, 3, 3, 3, 1, 3, 4, 2, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 5, 3, 5, 5, 3, 5, 5, 3, 3, 3, 1, 5, 1, 1, 3, 1, 1, 1, 3, 5, 3, 3, 4, 2, 6, 4, 6, 6, 4, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 3, 5, 5, 3, 3, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 4, 2, 4, 4, 4, 6, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 5, 3, 5, 5, 5, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 1, 6, 4, 4, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 3, 5, 3, 5, 5, 3, 7, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 1, 4, 2, 4, 2, 4, 4, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 5, 3, 5, 3, 5, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 3, 3, 3, 4, 4, 4, 2, 4, 4, 2, 6, 2, 2, 2, 6, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 7, 5, 5, 5, 3, 5, 3, 3, 1, 3, 1, 3, 3, 1, 1, 3, 1, 3, 3, 3, 5, 3, 6, 4, 4, 2, 4, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 0, 6, 0, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 5, 7, 5, 5, 5, 5, 5, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 3, 1, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 7, 7, 5, 7, 7, 5, 5, 1, 5, 1, 5, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 5, 1, 3, 3, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 0, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 5, 5, 5, 3, 3, 3, 3, 5, 5, 3, 3, 3, 3, 1, 3, 3, 1, 1, 5, 1, 1, 1, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 7, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 3, 5, 5, 3, 1, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 5, 7, 5, 3, 5, 5, 5, 5, 3, 3, 5, 1, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 2, 6, 2, 2, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 5, 5, 5, 5, 5, 1, 3, 1, 3, 3, 3, 5, 7, 5, 3, 3, 5, 3, 1, 5, 3, 5, 5, 4, 2, 4, 4, 4, 4, 4, 6, 2, 2, 2, 4, 2, 2, 2, 0, 4, 0, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 3, 5, 1, 5, 1, 3, 1, 3, 3, 3, 3, 7, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 5, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 4, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 7, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 7, 5, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 3, 5, 5, 3, 3, 3, 5, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 5, 3, 3, 3, 3, 3, 5, 5, 1, 3, 3, 1, 1, 3, 3, 1, 3, 3, 6, 2, 4, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 5, 5, 3, 1, 5, 1, 5, 5, 3, 1, 5, 1, 1, 3, 5, 1, 3, 1, 4, 2, 4, 4, 4, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 6, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 5, 5, 7, 3, 7, 7, 3, 3, 1, 3, 3, 5, 3, 1, 3, 1, 3, 1, 5, 3, 3, 3, 4, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 5, 7, 5, 5, 7, 1, 3, 3, 3, 5, 3, 3, 1, 5, 1, 3, 1, 7, 3, 3, 1, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 5, 3, 3, 5, 3, 3, 3, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 4, 4, 4, 2, 4, 2, 4, 4, 2, 2, 6, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 7, 1, 3, 3, 3, 1, 4, 2, 4, 2, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 5, 7, 7, 5, 3, 5, 5, 3, 3, 5, 5, 3, 1, 3, 3, 3, 3, 3, 1, 5, 3, 3, 3, 5, 1, 6, 4, 4, 4, 4, 6, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 5, 5, 5, 5, 3, 3, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 5, 3, 1, 3, 4, 4, 2, 4, 4, 6, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 5, 5, 5, 3, 3, 5, 3, 3, 5, 1, 3, 3, 5, 5, 3, 1, 3, 3, 3, 3, 3, 5, 5, 3, 4, 2, 6, 2, 4, 4, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 3, 3, 5, 3, 3, 7, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 3, 1, 7, 3, 1, 3, 6, 2, 4, 4, 4, 4, 4, 4, 2, 2, 4, 4, 4, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 7, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 5, 1, 3, 1, 5, 1, 3, 1, 5, 1, 3, 1, 4, 2, 2, 4, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 7, 7, 7, 3, 7, 3, 3, 3, 5, 3, 5, 3, 1, 5, 3, 5, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 1, 4, 2, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 3, 5, 5, 5, 5, 3, 1, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 3, 5, 1, 3, 3, 4, 2, 4, 4, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 7, 7, 7, 7, 5, 7, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 1, 1, 5, 1, 3, 1, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 1, 5, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 7, 2, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 7, 5, 5, 3, 5, 3, 1, 5, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 1, 7, 1, 1, 1, 6, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 6, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 5, 7, 5, 3, 3, 7, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 5, 1, 3, 4, 4, 6, 4, 4, 4, 4, 4, 2, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 7, 5, 3, 7, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 5, 1, 3, 3, 5, 3, 4, 4, 4, 6, 4, 4, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 4, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 5, 1, 3, 3, 5, 3, 3, 3, 6, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 7, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 5, 3, 1, 3, 1, 1, 3, 5, 3, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 3, 5, 5, 3, 3, 3, 3, 5, 3, 5, 3, 1, 3, 5, 3, 3, 5, 3, 3, 3, 3, 1, 1, 3, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 5, 3, 3, 5, 3, 1, 1, 3, 3, 5, 3, 5, 3, 3, 3, 5, 3, 3, 3, 1, 3, 1, 2, 2, 4, 4, 2, 4, 4, 4, 2, 2, 6, 2, 4, 2, 2, 2, 4, 0, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 4, 4, 6, 4, 2, 4, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 3, 5, 5, 5, 5, 3, 3, 1, 3, 3, 3, 3, 5, 3, 3, 5, 1, 3, 3, 3, 3, 5, 3, 6, 2, 4, 6, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 3, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 1, 3, 3, 3, 1, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 3, 5, 5, 5, 3, 5, 3, 5, 5, 3, 3, 5, 3, 1, 3, 1, 1, 1, 1, 3, 3, 3, 4, 2, 6, 4, 4, 2, 4, 4, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 3, 5, 3, 5, 3, 5, 3, 3, 5, 5, 3, 3, 3, 5, 3, 3, 7, 1, 3, 1, 5, 3, 3, 1, 4, 2, 4, 4, 2, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 3, 3, 5, 5, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 5, 3, 3, 3, 6, 2, 6, 4, 4, 6, 4, 4, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 3, 5, 3, 3, 3, 1, 3, 3, 5, 3, 3, 1, 5, 3, 1, 3, 1, 1, 1, 5, 3, 5, 3, 6, 4, 4, 4, 6, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 5, 5, 5, 3, 5, 5, 3, 3, 3, 3, 3, 1, 1, 5, 3, 1, 5, 1, 1, 1, 5, 1, 3, 1, 4, 2, 4, 4, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 1, 1, 3, 1, 3, 1, 3, 3, 4, 2, 2, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 3, 3, 3, 3, 5, 3, 3, 5, 7, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 3, 5, 1, 5, 1, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 5, 7, 7, 7, 3, 5, 5, 3, 3, 5, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 5, 7, 3, 7, 5, 3, 7, 5, 3, 3, 3, 3, 5, 3, 3, 3, 3, 1, 1, 5, 3, 1, 3, 6, 2, 6, 4, 4, 6, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 7, 3, 5, 3, 3, 7, 7, 3, 3, 3, 3, 5, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 6, 4, 4, 2, 4, 4, 2, 6, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 5, 3, 7, 7, 3, 7, 3, 3, 3, 3, 3, 5, 1, 1, 3, 3, 1, 1, 3, 1, 3, 1, 6, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 7, 5, 5, 5, 3, 1, 5, 3, 1, 3, 3, 5, 3, 5, 1, 3, 3, 3, 3, 3, 1, 3, 3, 6, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 8, 3, 5, 3, 7, 5, 7, 1, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 6, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 6, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 7, 5, 7, 5, 7, 3, 5, 5, 3, 3, 5, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 4, 2, 4, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 7, 3, 5, 7, 5, 1, 3, 3, 7, 1, 3, 3, 3, 1, 3, 1, 1, 3, 3, 3, 1, 1, 6, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 8, 7, 5, 5, 5, 7, 7, 3, 3, 5, 7, 3, 1, 3, 3, 1, 3, 1, 1, 1, 3, 1, 3, 3, 6, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 0, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 7, 7, 7, 1, 5, 7, 7, 5, 3, 5, 7, 1, 3, 1, 3, 1, 3, 1, 1, 1, 3, 1, 1, 3, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 7, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 5, 5, 5, 7, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 5, 5, 3, 3, 3, 4, 2, 4, 4, 2, 4, 2, 4, 2, 4, 4, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 8, 7, 5, 3, 3, 7, 7, 3, 5, 5, 7, 3, 3, 3, 3, 3, 5, 3, 3, 5, 5, 5, 3, 1, 4, 4, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 5, 3, 5, 5, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 1, 4, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 5, 8, 7, 7, 7, 5, 7, 7, 3, 3, 5, 7, 1, 3, 1, 3, 3, 3, 1, 1, 1, 5, 1, 3, 1, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 7, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 5, 3, 5, 7, 7, 1, 3, 3, 5, 1, 1, 1, 1, 3, 3, 1, 1, 3, 3, 1, 3, 3, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 7, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 4, 4, 4, 4, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 3, 3, 5, 5, 3, 3, 3, 3, 3, 1, 5, 5, 3, 3, 5, 3, 3, 1, 3, 1, 3, 1, 2, 2, 2, 4, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 5, 3, 3, 5, 3, 5, 3, 3, 3, 1, 5, 3, 3, 1, 3, 3, 5, 3, 3, 3, 3, 3, 4, 2, 4, 6, 4, 4, 2, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 3, 3, 3, 7, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 3, 3, 3, 4, 6, 4, 6, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 3, 5, 5, 5, 3, 7, 5, 3, 1, 5, 3, 3, 1, 1, 3, 1, 1, 3, 3, 1, 3, 3, 4, 2, 4, 4, 4, 4, 2, 4, 2, 6, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 8, 5, 5, 3, 5, 3, 7, 3, 3, 1, 3, 5, 3, 3, 1, 3, 1, 1, 3, 3, 1, 1, 1, 4, 4, 4, 4, 4, 4, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 5, 3, 3, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 1, 1, 1, 4, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 7, 7, 7, 5, 5, 3, 5, 3, 7, 3, 3, 3, 1, 1, 3, 3, 1, 5, 1, 1, 3, 3, 1, 1, 1, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 5, 5, 3, 7, 3, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 3, 3, 1, 1, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 7, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 3, 7, 5, 5, 3, 3, 1, 3, 3, 3, 1, 1, 5, 1, 1, 1, 3, 1, 3, 1, 6, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 5, 5, 5, 7, 3, 5, 1, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 3, 3, 1, 3, 1, 6, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 7, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 7, 7, 7, 5, 7, 3, 5, 5, 5, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 3, 3, 1, 1, 1, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 5, 7, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 1, 1, 3, 5, 3, 3, 5, 3, 3, 3, 5, 3, 3, 1, 4, 4, 4, 4, 4, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 5, 7, 7, 7, 3, 5, 1, 3, 1, 3, 3, 3, 3, 3, 5, 1, 1, 3, 3, 3, 1, 1, 4, 2, 4, 6, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 7, 7, 5, 5, 7, 3, 5, 3, 5, 3, 1, 3, 5, 3, 1, 3, 1, 3, 3, 5, 1, 3, 1, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 6, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 3, 7, 3, 3, 1, 3, 3, 3, 1, 5, 3, 3, 3, 3, 3, 5, 5, 3, 1, 1, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 6, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 7, 7, 7, 7, 5, 5, 7, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 5, 1, 1, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 7, 0, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 3, 5, 5, 5, 3, 1, 1, 5, 3, 3, 3, 3, 3, 1, 3, 3, 1, 5, 5, 3, 5, 5, 6, 4, 6, 4, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 7, 5, 5, 5, 5, 3, 3, 3, 5, 3, 1, 3, 3, 3, 1, 3, 1, 1, 3, 5, 3, 3, 3, 4, 4, 4, 6, 4, 4, 4, 6, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 5, 3, 5, 3, 3, 1, 3, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 4, 4, 4, 2, 4, 6, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 6, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 7, 7, 7, 5, 3, 5, 7, 1, 3, 3, 5, 3, 3, 1, 5, 1, 1, 3, 1, 1, 1, 5, 1, 3, 1, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 7, 5, 5, 5, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 3, 3, 3, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 5, 5, 3, 5, 5, 5, 3, 3, 3, 5, 5, 3, 3, 3, 5, 3, 1, 3, 1, 3, 3, 1, 1, 3, 5, 4, 2, 2, 6, 4, 2, 4, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 7, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 3, 1, 4, 2, 4, 6, 4, 4, 2, 6, 2, 4, 4, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 5, 3, 5, 3, 3, 3, 1, 5, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 1, 3, 1, 3, 1, 4, 2, 4, 4, 2, 6, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 3, 5, 3, 5, 5, 3, 5, 3, 5, 3, 3, 3, 5, 3, 3, 3, 1, 5, 5, 5, 1, 5, 3, 6, 4, 6, 6, 4, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 3, 5, 3, 3, 3, 5, 5, 5, 1, 3, 1, 1, 3, 3, 3, 3, 1, 4, 2, 4, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 3, 3, 5, 3, 3, 5, 3, 3, 1, 1, 1, 1, 3, 3, 5, 5, 1, 1, 2, 4, 4, 2, 4, 6, 2, 4, 2, 4, 4, 2, 2, 4, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 7, 5, 7, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 7, 5, 3, 5, 5, 3, 3, 3, 5, 3, 3, 3, 5, 1, 3, 1, 3, 3, 5, 3, 3, 3, 4, 6, 4, 2, 6, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 3, 5, 3, 3, 5, 1, 1, 3, 3, 5, 3, 1, 1, 3, 1, 3, 1, 3, 3, 3, 1, 2, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 3, 5, 3, 3, 3, 3, 3, 5, 3, 3, 1, 1, 5, 1, 1, 3, 3, 1, 3, 3, 4, 2, 4, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 7, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 5, 5, 3, 5, 3, 5, 1, 3, 3, 3, 3, 3, 1, 3, 5, 1, 3, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 5, 5, 3, 3, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 1, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 7, 7, 3, 5, 3, 3, 1, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 1, 4, 4, 4, 2, 6, 2, 2, 2, 4, 4, 4, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 5, 5, 5, 1, 4, 4, 4, 4, 2, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 6, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 7, 3, 3, 5, 1, 3, 5, 3, 1, 1, 1, 3, 3, 3, 3, 1, 1, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 5, 7, 5, 7, 3, 3, 5, 3, 3, 3, 1, 3, 3, 1, 1, 3, 3, 1, 1, 1, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 7, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 5, 7, 5, 7, 5, 7, 1, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 5, 1, 1, 1, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 7, 7, 3, 5, 5, 3, 3, 3, 3, 5, 5, 3, 5, 3, 3, 3, 3, 1, 3, 1, 5, 3, 3, 1, 4, 2, 4, 4, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 1, 1, 3, 3, 1, 3, 5, 3, 1, 3, 1, 1, 3, 3, 5, 3, 3, 6, 4, 4, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 7, 7, 7, 5, 7, 5, 3, 3, 3, 1, 5, 3, 5, 3, 1, 1, 5, 1, 3, 3, 5, 3, 3, 3, 4, 2, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 7, 7, 7, 7, 5, 3, 1, 5, 5, 3, 1, 3, 3, 3, 5, 1, 1, 3, 3, 3, 1, 3, 4, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 5, 3, 5, 3, 1, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 5, 3, 3, 1, 4, 2, 6, 4, 4, 2, 4, 4, 2, 6, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 5, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 1, 6, 2, 4, 6, 4, 4, 6, 6, 4, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, -7, 7, 7, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 5, 3, 1, 1, 3, 3, 1, 3, 1, 5, 1, 5, 1, 4, 4, 6, 4, 4, 6, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 7, 3, 5, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, 7, 3, 5, 3, 6, 4, 6, 4, 4, 6, 4, 4, 4, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 3, 5, 7, 5, 5, 5, 5, 1, 5, 3, 3, 3, 5, 3, 5, 3, 3, 3, 1, 1, 1, 5, 1, 3, 3, 6, 4, 2, 4, 2, 4, 4, 6, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 7, 5, 3, 3, 5, 3, 3, 3, 5, 1, 3, 3, 5, 3, 3, 3, 1, 3, 3, 5, 1, 3, 3, 4, 4, 4, 2, 4, 4, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 3, 7, 7, 5, 7, 5, 3, 3, 5, 3, 5, 3, 3, 3, 3, 1, 1, 3, 1, 3, 3, 5, 3, 3, 3, 6, 2, 4, 6, 4, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 3, 7, 3, 3, 3, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 1, 3, 1, 6, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 7, 5, 7, 7, 5, 3, 5, 3, 5, 3, 1, 3, 3, 3, 1, 3, 1, 1, 1, 3, 1, 3, 1, 7, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 1, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 5, 3, 1, 1, 6, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 7, 0, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 5, 7, 5, 7, 7, 3, 1, 5, 1, 5, 5, 3, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 1, 1, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 6, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 3, 7, 7, 5, 7, 5, 3, 3, 3, 5, 3, 1, 3, 5, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 4, 2, 4, 4, 4, 4, 4, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 7, 7, 5, 7, 7, 5, 3, 1, 3, 3, 5, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 1, 3, 3, 6, 4, 6, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 7, 5, 7, 5, 3, 3, 3, 3, 5, 1, 3, 3, 3, 1, 5, 1, 1, 3, 3, 3, 1, 3, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 3, 5, 7, 7, 7, 7, 5, 3, 5, 3, 5, 5, 3, 3, 3, 1, 1, 5, 1, 3, 3, 3, 3, 1, 3, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 7, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 5, 5, 5, 7, 5, 3, 3, 3, 3, 5, 3, 1, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 5, 1, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 7, 7, 7, 5, 5, 5, 3, 3, 1, 5, 1, 3, 3, 5, 3, 1, 3, 3, 3, 3, 5, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 6, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 7, 5, 7, 3, 3, 1, 5, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 4, 2, 2, 4, 4, 4, 4, 6, 4, 4, 6, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 3, 3, 1, 3, 3, 3, 3, 5, 5, 1, 5, 1, 3, 1, 5, 3, 5, 1, 2, 4, 4, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 3, 3, 3, 3, 3, 3, 5, 5, 3, 1, 1, 1, 3, 1, 3, 3, 3, 1, 4, 2, 2, 4, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 3, 7, 3, 5, 5, 5, 3, 5, 3, 3, 3, 3, 5, 3, 3, 3, 1, 1, 3, 1, 3, 3, 3, 3, 5, 3, 6, 2, 4, 4, 2, 4, 4, 4, 2, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 5, 3, 5, 5, 5, 1, 5, 1, 5, 3, 3, 3, 1, 1, 3, 1, 1, 1, 5, 1, 3, 1, 2, 4, 4, 4, 4, 6, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 7, 5, 5, 5, 5, 3, 5, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 5, 6, 2, 4, 4, 6, 6, 4, 6, 2, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 7, 7, 5, 3, 7, 5, 3, 3, 5, 5, 3, 3, 1, 5, 3, 1, 3, 1, 1, 3, 5, 1, 3, 1, 6, 2, 4, 4, 2, 4, 4, 4, 4, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 3, 1, 3, 1, 1, 3, 5, 1, 3, 3, 4, 2, 2, 4, 4, 4, 4, 2, 4, 6, 2, 4, 2, 4, 2, 2, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 5, 5, 3, 5, 3, 3, 3, 5, 3, 3, 3, 5, 3, 1, 3, 3, 1, 1, 3, 3, 3, 1, 6, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 3, 3, 7, 3, 3, 3, 3, 3, 5, 1, 3, 1, 1, 1, 3, 1, 3, 1, 4, 2, 4, 2, 4, 6, 2, 4, 2, 6, 6, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 3, 7, 7, 5, 3, 5, 5, 1, 3, 3, 5, 5, 5, 5, 5, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 6, 2, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 5, 7, 7, 5, 3, 5, 5, 3, 1, 3, 3, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 6, 2, 2, 2, 2, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 8, 5, 5, 7, 7, 1, 5, 3, 3, 3, 3, 3, 5, 3, 3, 5, 1, 3, 1, 3, 3, 3, 1, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 7, 7, 1, 7, 3, 5, 3, 5, 3, 5, 3, 3, 3, 1, 3, 3, 5, 3, 3, 1, 6, 2, 4, 2, 4, 4, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 4, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 7, 5, 3, 5, 3, 3, 5, 3, 3, 1, 1, 3, 5, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 4, 2, 4, 4, 2, 4, 2, 2, 4, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 3, 5, 3, 5, 7, 1, 3, 3, 1, 1, 3, 1, 3, 3, 3, 5, 1, 1, 2, 2, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 4, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 1, 7, 3, 5, 7, 3, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 4, 2, 4, 4, 4, 6, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 6, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 7, 5, 7, 7, 1, 7, 3, 5, 7, 3, 1, 3, 1, 1, 3, 1, 1, 1, 5, 3, 1, 3, 4, 2, 4, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 5, 7, 7, 7, 3, 7, 1, 7, 7, 3, 3, 3, 5, 5, 3, 1, 1, 1, 5, 1, 3, 1, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 1, 3, 3, 3, 5, 1, 5, 3, 5, 1, 3, 1, 3, 3, 3, 1, 3, 3, 4, 2, 2, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 7, 7, 7, 7, 5, 3, 3, 3, 5, 7, 1, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 1, 3, 6, 4, 4, 4, 4, 6, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 6, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 3, 1, 7, 7, 1, 3, 5, 1, 3, 1, 1, 1, 1, 3, 1, 3, 1, 7, 2, 4, 4, 2, 6, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 7, 7, 7, 5, 3, 3, 1, 5, 7, 3, 3, 3, 3, 1, 3, 1, 1, 5, 3, 3, 1, 1, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 1, 3, 1, 3, 7, 1, 3, 3, 1, 5, 1, 1, 1, 1, 3, 3, 3, 1, 6, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 7, 5, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 5, 1, 1, 3, 5, 3, 3, 3, 6, 4, 6, 6, 4, 6, 2, 4, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 3, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 5, 1, 3, 1, 5, 3, 3, 1, 4, 4, 4, 4, 4, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 5, 7, 5, 3, 5, 5, 3, 3, 3, 3, 1, 5, 3, 5, 3, 3, 7, 1, 3, 5, 5, 1, 3, 3, 6, 2, 4, 4, 4, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 5, 5, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 5, 1, 1, 3, 3, 3, 1, 1, 4, 4, 4, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 7, 3, 5, 3, 3, 5, 3, 1, 3, 1, 3, 3, 3, 1, 1, 3, 1, 1, 1, 3, 3, 3, 4, 2, 4, 4, 4, 4, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 3, 5, 3, 5, 5, 3, 5, 1, 1, 3, 3, 1, 1, 3, 1, 1, 3, 5, 3, 3, 1, 4, 2, 6, 4, 2, 6, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 7, 5, 7, 5, 1, 7, 3, 3, 3, 3, 3, 5, 3, 3, 3, 1, 1, 3, 5, 1, 3, 3, 6, 4, 6, 6, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 1, 7, 3, 3, 5, 3, 3, 1, 3, 1, 3, 1, 1, 3, 3, 1, 3, 1, 4, 2, 4, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 1, 7, 3, 3, 5, 3, 1, 3, 3, 1, 3, 1, 1, 1, 3, 1, 1, 1, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 7, 7, 7, 3, 3, 7, 1, 3, 3, 5, 3, 3, 3, 1, 1, 1, 1, 1, 3, 3, 1, 1, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 1, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 6, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 7, 5, 5, 5, 3, 1, 3, 3, 3, 3, 1, 3, 5, 3, 3, 1, 1, 3, 3, 1, 5, 3, 4, 2, 4, 6, 4, 4, 2, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 7, 3, 3, 1, 4, 2, 4, 6, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 8, 5, 5, 5, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 5, 3, 1, 1, 3, 3, 1, 3, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 7, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 8, 5, 7, 7, 5, 3, 1, 3, 5, 3, 3, 3, 5, 1, 1, 3, 1, 1, 3, 3, 3, 3, 3, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 5, 7, 5, 1, 3, 3, 3, 5, 5, 3, 1, 5, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 8, 5, 3, 3, 3, 5, 3, 5, 5, 1, 1, 5, 3, 5, 1, 3, 3, 3, 3, 5, 3, 5, 3, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 8, 7, 7, 5, 3, 3, 3, 5, 5, 1, 3, 3, 3, 3, 1, 3, 1, 1, 3, 5, 3, 3, 3, 4, 4, 4, 4, 4, 7, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 8, 7, 5, 5, 5, 3, 3, 1, 5, 5, 3, 1, 3, 1, 1, 3, 3, 1, 1, 3, 1, 3, 1, 4, 2, 4, 2, 2, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 7, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 8, 5, 7, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 3, 1, 1, 1, 5, 1, 3, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 3, 3, 1, 3, 3, 5, 1, 3, 7, 3, 1, 3, 1, 1, 1, 5, 1, 1, 1, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 5, 5, 3, 3, 5, 3, 3, 3, 3, 5, 5, 3, 5, 5, 3, 5, 1, 3, 5, 5, 1, 3, 1, 4, 2, 4, 4, 4, 2, 2, 4, 2, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 3, 5, 3, 7, 3, 3, 3, 5, 3, 5, 3, 3, 3, 1, 1, 1, 3, 3, 5, 5, 3, 1, 6, 4, 4, 4, 2, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 5, 5, 3, 3, 5, 5, 3, 3, 3, 3, 5, 3, 1, 3, 1, 1, 3, 3, 3, 3, 1, 4, 2, 4, 4, 4, 6, 2, 4, 2, 2, 4, 2, 2, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 3, 3, 5, 5, 1, 5, 3, 5, 3, 3, 3, 5, 1, 1, 3, 1, 1, 3, 3, 3, 3, 1, 4, 2, 4, 4, 2, 4, 2, 4, 2, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 5, 3, 5, 1, 7, 3, 5, 3, 1, 5, 3, 1, 1, 3, 1, 3, 3, 5, 1, 5, 1, 6, 2, 4, 4, 4, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 5, 3, 1, 3, 1, 3, 3, 5, 1, 1, 1, 6, 2, 4, 2, 4, 4, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 3, 5, 5, 3, 5, 5, 3, 3, 3, 5, 5, 5, 3, 3, 3, 1, 1, 3, 3, 1, 3, 3, 2, 2, 4, 4, 4, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 1, 3, 3, 3, 3, 3, 5, 3, 5, 1, 5, 1, 3, 3, 3, 3, 3, 3, 4, 4, 6, 4, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 5, 3, 3, 1, 5, 1, 3, 3, 3, 5, 5, 3, 3, 1, 1, 3, 3, 3, 1, 3, 1, 4, 2, 2, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 7, 5, 5, 3, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 1, 3, 3, 3, 1, 3, 3, 4, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 5, 5, 3, 3, 3, 3, 5, 1, 1, 3, 1, 1, 1, 5, 1, 3, 3, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 7, 3, 7, 3, 3, 3, 5, 3, 3, 5, 5, 3, 3, 3, 1, 1, 3, 1, 3, 5, 1, 3, 1, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 7, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 5, 7, 5, 3, 5, 3, 3, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 3, 5, 3, 4, 2, 6, 4, 2, 4, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 5, 3, 3, 5, 3, 5, 3, 1, 5, 5, 3, 1, 1, 1, 3, 1, 7, 3, 3, 3, 2, 2, 4, 4, 2, 4, 2, 4, 2, 4, 2, 4, 4, 4, 2, 2, 4, 2, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 3, 3, 3, 3, 3, 5, 1, 1, 3, 1, 3, 1, 5, 1, 1, 1, 4, 2, 2, 2, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 7, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 7, 5, 5, 3, 5, 5, 1, 1, 3, 3, 3, 7, 3, 1, 3, 1, 1, 3, 3, 1, 1, 1, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 6, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 3, 5, 3, 3, 5, 1, 3, 3, 1, 1, 5, 3, 3, 3, 1, 1, 1, 3, 1, 1, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 5, 3, 5, 5, 3, 3, 3, 5, 5, 5, 3, 3, 3, 1, 1, 3, 1, 3, 3, 3, 3, 1, 6, 2, 6, 6, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 3, 3, 3, 3, 3, 3, 5, 5, 1, 3, 3, 3, 3, 1, 3, 1, 5, 1, 4, 4, 4, 4, 4, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 5, 7, 3, 5, 3, 5, 3, 1, 3, 1, 3, 1, 1, 3, 5, 3, 3, 1, 4, 2, 2, 6, 4, 6, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 5, 5, 3, 4, 4, 4, 4, 2, 6, 2, 6, 2, 4, 2, 2, 4, 2, 2, 2, 6, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 5, 3, 3, 3, 1, 3, 3, 1, 1, 1, 3, 1, 5, 3, 6, 2, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 5, 5, 3, 5, 1, 3, 5, 3, 3, 1, 1, 3, 3, 1, 1, 1, 1, 5, 3, 1, 3, 1, 6, 2, 4, 4, 6, 4, 2, 2, 2, 6, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, -8, 8, 7, 5, 3, 5, 5, 5, 5, 5, 5, 3, 3, 7, 5, 3, 3, 3, 5, 1, 3, 1, 3, 3, 1, 3, 1, 5, 3, 4, 2, 4, 4, 4, 4, 4, 2, 2, 2, 4, 6, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 7, 3, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 1, 4, 2, 4, 2, 4, 6, 2, 4, 2, 4, 6, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 7, 5, 3, 3, 3, 7, 3, 5, 1, 3, 3, 3, 3, 1, 3, 1, 3, 1, 5, 1, 3, 1, 4, 2, 4, 2, 2, 7, 2, 6, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 7, 5, 5, 3, 3, 7, 5, 3, 3, 3, 3, 5, 3, 1, 5, 1, 3, 1, 5, 1, 3, 1, 2, 2, 4, 2, 2, 4, 4, 6, 2, 4, 2, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 5, 7, 5, 5, 3, 7, 3, 5, 1, 3, 3, 5, 1, 3, 3, 3, 5, 3, 3, 1, 3, 3, 6, 4, 4, 2, 4, 6, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 6, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 7, 5, 5, 5, 7, 5, 1, 7, 3, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 1, 3, 3, 3, 3, 4, 2, 4, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 1, 7, 3, 3, 5, 1, 3, 5, 3, 3, 5, 1, 3, 3, 3, 1, 1, 1, 4, 2, 4, 4, 2, 4, 2, 2, 4, 4, 2, 4, 4, 4, 2, 2, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 7, 7, 7, 3, 7, 3, 5, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 4, 2, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 3, 5, 3, 3, 5, 1, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 5, 1, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 5, 3, 3, 5, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 6, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 5, 7, 7, 5, 5, 5, 3, 1, 3, 3, 3, 3, 5, 3, 1, 3, 3, 1, 1, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 6, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 3, 3, 3, 3, 3, 1, 3, 5, 1, 3, 3, 3, 1, 3, 5, 1, 3, 3, 4, 2, 6, 6, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 1, 3, 1, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 5, 3, 3, 1, 6, 4, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 7, 5, 5, 7, 5, 5, 3, 5, 3, 1, 3, 3, 3, 1, 3, 1, 1, 1, 5, 1, 1, 3, 6, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 0, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 7, 5, 3, 3, 3, 1, 3, 5, 3, 1, 3, 3, 1, 1, 1, 3, 3, 3, 5, 5, 1, 5, 4, 6, 6, 4, 4, 6, 2, 2, 2, 4, 2, 6, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 5, 3, 1, 3, 6, 6, 6, 4, 4, 6, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 5, 5, 5, 5, 3, 1, 1, 5, 3, 3, 5, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 4, 4, 2, 2, 4, 4, 4, 6, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 5, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 4, 2, 4, 4, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 7, 5, 5, 5, 3, 3, 1, 5, 5, 3, 3, 5, 3, 3, 3, 1, 3, 1, 3, 1, 3, 1, 4, 4, 4, 6, 4, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 6, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 3, 5, 5, 3, 3, 1, 3, 3, 5, 3, 1, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 3, 6, 2, 6, 4, 4, 4, 2, 4, 2, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 5, 3, 5, 5, 3, 3, 5, 5, 5, 3, 3, 5, 5, 3, 3, 1, 3, 3, 5, 3, 3, 3, 6, 4, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 3, 5, 5, 5, 3, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 5, 1, 3, 1, 4, 2, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 5, 5, 5, 5, 3, 5, 3, 5, 1, 1, 1, 5, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 4, 2, 4, 2, 4, 6, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 3, 5, 3, 5, 5, 3, 5, 1, 3, 3, 3, 3, 5, 3, 1, 5, 1, 1, 3, 5, 1, 3, 1, 4, 4, 2, 2, 2, 4, 4, 4, 2, 6, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 5, 5, 3, 5, 3, 5, 1, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 5, 5, 3, 3, 3, 3, 5, 3, 3, 5, 3, 1, 3, 3, 3, 3, 5, 5, 3, 3, 3, 5, 1, 3, 3, 7, 2, 4, 6, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -7, 7, 7, 5, 5, 7, 7, 5, 5, 3, 5, 3, 3, 3, 3, 3, 5, 3, 5, 3, 1, 3, 1, 1, 3, 5, 1, 3, 1, 4, 2, 6, 6, 4, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 7, 5, 5, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 1, 1, 3, 3, 1, 5, 1, 4, 2, 6, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 7, 5, 3, 5, 1, 5, 3, 5, 1, 3, 3, 3, 3, 1, 3, 1, 3, 1, 7, 5, 5, 1, 6, 2, 4, 4, 4, 4, 4, 4, 2, 4, 4, 4, 4, 2, 2, 2, 4, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 3, 7, 5, 3, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 5, 3, 3, 1, 7, 4, 4, 4, 4, 6, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 7, 5, 3, 5, 3, 3, 3, 3, 1, 1, 3, 3, 5, 1, 3, 1, 1, 1, 5, 3, 3, 1, 4, 4, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 5, 3, 5, 1, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 1, 1, 3, 2, 2, 4, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 3, 3, 5, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 7, 1, 1, 1, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 7, 7, 5, 7, 5, 3, 7, 5, 5, 1, 3, 3, 3, 3, 1, 3, 1, 1, 3, 5, 1, 1, 1, 4, 2, 6, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 2, 2, 6, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 3, 7, 5, 5, 5, 5, 3, 3, 1, 3, 5, 3, 1, 1, 3, 3, 1, 3, 1, 1, 1, 5, 1, 1, 1, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 5, 7, 3, 5, 5, 3, 5, 5, 3, 3, 5, 3, 1, 3, 5, 3, 1, 1, 1, 3, 1, 3, 3, 3, 3, 4, 2, 4, 4, 4, 4, 2, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 7, 3, 5, 3, 7, 3, 3, 3, 3, 3, 3, 5, 5, 1, 3, 3, 3, 3, 5, 5, 5, 3, 4, 4, 4, 4, 2, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 7, 5, 7, 7, 7, 5, 5, 3, 3, 1, 3, 5, 3, 1, 1, 1, 1, 3, 3, 3, 3, 1, 4, 2, 4, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 6, 0, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 3, 7, 5, 7, 5, 5, 5, 7, 3, 3, 1, 3, 3, 1, 5, 3, 1, 3, 1, 1, 3, 5, 1, 3, 1, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 5, 3, 5, 5, 5, 3, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 1, 4, 4, 4, 2, 4, 2, 2, 6, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 3, 5, 5, 5, 3, 3, 5, 3, 3, 1, 3, 3, 5, 1, 5, 1, 3, 3, 3, 1, 3, 1, 6, 4, 4, 4, 4, 2, 4, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 3, 3, 3, 5, 3, 7, 3, 3, 3, 3, 3, 5, 3, 3, 3, 1, 1, 3, 1, 3, 1, 1, 4, 2, 4, 4, 2, 2, 4, 4, 2, 4, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 3, 5, 5, 3, 5, 5, 1, 5, 3, 3, 3, 3, 1, 3, 1, 1, 3, 3, 1, 3, 5, 3, 3, 5, 6, 4, 6, 4, 4, 6, 2, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 7, 5, 3, 3, 3, 3, 7, 5, 3, 1, 1, 3, 5, 3, 1, 1, 1, 3, 1, 1, 3, 3, 3, 6, 4, 4, 4, 4, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 3, 5, 3, 3, 5, 5, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 6, 2, 4, 2, 4, 2, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 3, 5, 5, 7, 5, 3, 3, 3, 7, 3, 5, 3, 3, 5, 3, 3, 1, 3, 1, 5, 1, 5, 3, 3, 3, 4, 2, 6, 2, 2, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 3, 5, 5, 3, 5, 3, 5, 3, 7, 5, 5, 3, 3, 1, 5, 3, 1, 3, 1, 3, 1, 3, 3, 1, 3, 6, 4, 4, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 7, 5, 3, 5, 3, 5, 1, 5, 3, 3, 1, 5, 3, 5, 3, 1, 3, 1, 1, 1, 3, 1, 3, 1, 6, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 3, 5, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 5, 3, 1, 1, 1, 1, 3, 3, 1, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 5, 5, 5, 5, 3, 5, 5, 3, 1, 3, 3, 1, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 5, 6, 4, 4, 4, 6, 6, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 3, 5, 5, 3, 3, 3, 3, 1, 1, 3, 5, 3, 3, 3, 3, 1, 1, 3, 3, 3, 1, 2, 4, 4, 2, 2, 6, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 5, 3, 1, 3, 1, 1, 3, 3, 1, 3, 5, 4, 4, 2, 6, 2, 2, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 5, 3, 3, 3, 3, 3, 1, 5, 3, 5, 3, 4, 4, 4, 4, 2, 2, 4, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 3, 5, 5, 3, 5, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 3, 3, 3, 3, 2, 2, 6, 4, 4, 4, 4, 2, 4, 6, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 7, 5, 5, 5, 5, 3, 5, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 5, 3, 5, 1, 6, 4, 4, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 5, 5, 5, 3, 5, 3, 3, 3, 1, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 4, 4, 4, 2, 4, 4, 2, 6, 2, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 5, 3, 5, 5, 5, 1, 5, 3, 5, 5, 5, 5, 5, 3, 1, 3, 1, 1, 3, 3, 3, 3, 3, 4, 2, 6, 4, 4, 4, 4, 6, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 5, 3, 5, 3, 1, 3, 5, 7, 5, 3, 5, 5, 3, 5, 1, 5, 5, 3, 5, 5, 3, 4, 6, 4, 4, 4, 4, 4, 4, 4, 6, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 3, 5, 3, 5, 5, 3, 1, 5, 7, 3, 5, 5, 3, 7, 3, 1, 3, 3, 5, 5, 3, 5, 3, 4, 4, 2, 4, 4, 4, 6, 4, 4, 4, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 3, 3, 5, 5, 5, 7, 7, 3, 7, 3, 3, 1, 5, 5, 5, 3, 7, 5, 6, 2, 4, 4, 4, 6, 6, 4, 4, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 5, 3, 5, 7, 5, 7, 5, 3, 5, 5, 7, 7, 5, 7, 5, 7, 5, 5, 7, 5, 5, 7, 3, 5, 3, 6, 2, 4, 4, 6, 4, 6, 6, 2, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 7, 3, 5, 5, 3, 5, 5, 7, 5, 3, 3, 3, 7, 5, 3, 3, 3, 3, 5, 3, 3, 3, 4, 4, 2, 4, 6, 4, 6, 4, 2, 4, 4, 4, 6, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 5, 7, 5, 3, 7, 7, 3, 3, 5, 7, 5, 3, 7, 3, 7, 5, 3, 5, 3, 5, 5, 3, 5, 3, 4, 6, 4, 4, 6, 6, 4, 6, 2, 2, 4, 4, 6, 6, 2, 2, 4, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 3, 5, 3, 5, 7, 7, 5, 5, 7, 5, 5, 5, 3, 7, 5, 5, 5, 5, 7, 5, 5, 5, 7, 4, 6, 2, 6, 6, 4, 4, 4, 4, 4, 2, 4, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 3, 7, 3, 7, 5, 5, 3, 3, 5, 5, 3, 5, 3, 7, 3, 3, 3, 3, 3, 3, 3, 5, 3, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 7, 3, 5, 5, 5, 5, 5, 7, 5, 3, 7, 3, 7, 3, 3, 5, 5, 7, 5, 5, 7, 5, 6, 6, 4, 6, 7, 4, 6, 6, 4, 6, 4, 4, 6, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 5, 7, 7, 7, 7, 7, 5, 5, 7, 7, 3, 5, 5, 5, 5, 5, 5, 7, 7, 5, 5, 5, 5, 6, 4, 4, 4, 6, 6, 6, 4, 6, 6, 4, 6, 4, 4, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 5, 5, 7, 7, 5, 3, 5, 7, 5, 3, 5, 5, 7, 3, 3, 5, 5, 5, 7, 3, 5, 3, 6, 6, 4, 6, 6, 7, 6, 4, 4, 6, 4, 4, 4, 2, 4, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 7, 5, 5, 5, 7, 7, 5, 5, 5, 7, 5, 5, 7, 3, 5, 5, 5, 7, 3, 5, 3, 3, 1, 3, 4, 4, 4, 4, 6, 4, 6, 6, 6, 6, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 7, 7, 7, 7, 3, 3, 3, 7, 7, 1, 5, 5, 5, 5, 5, 7, 5, 3, 5, 5, 5, 5, 7, 4, 6, 4, 6, 4, 6, 2, 4, 4, 2, 6, 4, 4, 2, 4, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 5, 7, 7, 7, 7, 5, 3, 5, 7, 5, 3, 7, 3, 7, 5, 3, 5, 3, 5, 7, 5, 5, 3, 4, 2, 4, 4, 4, 4, 7, 4, 4, 2, 2, 6, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 7, 7, 7, 7, 5, 5, 5, 7, 5, 1, 7, 3, 5, 5, 5, 3, 5, 5, 7, 3, 5, 5, 4, 2, 4, 4, 4, 4, 6, 2, 2, 4, 4, 2, 4, 6, 4, 4, 2, 6, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 7, 7, 5, 7, 5, 3, 5, 7, 5, 1, 5, 3, 3, 5, 7, 7, 5, 7, 7, 5, 3, 7, 2, 4, 2, 6, 4, 6, 4, 4, 4, 4, 4, 6, 4, 6, 4, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 7, 5, 5, 5, 7, 7, 3, 3, 7, 7, 5, 3, 5, 3, 7, 5, 7, 7, 5, 7, 7, 3, 7, 5, 4, 4, 4, 7, 6, 4, 6, 2, 2, 2, 2, 6, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 7, 5, 7, 5, 7, 7, 3, 5, 3, 7, 5, 1, 5, 5, 5, 7, 7, 7, 5, 5, 7, 5, 3, 7, 4, 4, 4, 6, 6, 4, 6, 4, 4, 2, 4, 6, 6, 6, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 7, 5, 7, 5, 5, 3, 7, 7, 7, 1, 7, 5, 7, 7, 5, 7, 5, 5, 7, 5, 3, 7, 4, 6, 4, 4, 4, 4, 6, 4, 6, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 3, 7, 5, 7, 7, 5, 1, 5, 7, 5, 1, 5, 1, 5, 3, 5, 3, 5, 3, 7, 3, 1, 5, 6, 4, 4, 6, 4, 4, 4, 6, 2, 2, 4, 4, 4, 4, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 7, 5, 7, 7, 3, 5, 7, 7, 5, 3, 5, 3, 7, 5, 5, 5, 5, 5, 5, 5, 5, 7, 4, 4, 4, 7, 4, 6, 7, 4, 4, 4, 4, 6, 4, 6, 4, 2, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 7, 5, 5, 3, 5, 7, 5, 3, 7, 5, 7, 7, 7, 7, 7, 3, 7, 5, 5, 5, 4, 6, 2, 7, 6, 2, 6, 4, 2, 4, 4, 4, 4, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 5, 5, 5, 7, 3, 3, 5, 5, 3, 5, 3, 3, 5, 5, 5, 3, 5, 5, 4, 4, 2, 4, 2, 4, 6, 4, 4, 4, 4, 6, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 5, 3, 5, 7, 3, 3, 5, 7, 3, 3, 5, 3, 5, 3, 5, 5, 3, 5, 5, 5, 7, 3, 6, 4, 2, 6, 4, 4, 4, 2, 2, 4, 4, 4, 4, 4, 2, 2, 4, 2, 4, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 7, 7, 5, 3, 5, 7, 5, 1, 3, 3, 3, 3, 3, 3, 3, 1, 5, 3, 3, 3, 2, 2, 4, 4, 6, 6, 4, 2, 4, 2, 2, 6, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 5, 3, 5, 1, 3, 3, 3, 1, 3, 3, 3, 1, 1, 3, 1, 3, 3, 5, 3, 3, 3, 2, 2, 6, 6, 4, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 5, 5, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 5, 3, 3, 3, 3, 6, 4, 6, 6, 4, 4, 4, 6, 2, 6, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 5, 1, 5, 3, 3, 3, 3, 3, 1, 5, 3, 5, 1, 3, 1, 4, 6, 4, 4, 6, 6, 4, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 3, 3, 5, 3, 1, 5, 5, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 1, 5, 1, 1, 1, 4, 2, 6, 2, 4, 6, 2, 4, 2, 4, 6, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 5, 5, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 5, 3, 1, 5, 1, 3, 3, 7, 3, 1, 1, 4, 2, 4, 4, 4, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 5, 3, 3, 3, 3, 7, 3, 5, 3, 1, 3, 5, 1, 1, 3, 1, 1, 1, 5, 1, 1, 1, 4, 2, 4, 2, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 6, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 3, 1, 1, 5, 3, 1, 3, 3, 3, 3, 5, 3, 3, 1, 5, 3, 3, 3, 4, 4, 4, 4, 4, 4, 2, 6, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 7, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 3, 1, 5, 3, 3, 3, 4, 4, 2, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 3, 7, 3, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 1, 5, 1, 1, 1, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 5, 3, 5, 5, 3, 1, 3, 3, 5, 1, 3, 3, 3, 3, 3, 1, 3, 3, 5, 3, 3, 3, 6, 4, 4, 6, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 1, 1, 3, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 5, 7, 5, 5, 5, 1, 3, 3, 5, 3, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 6, 4, 4, 2, 4, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 7, 5, 5, 7, 1, 3, 1, 3, 3, 1, 3, 5, 3, 3, 3, 1, 3, 1, 5, 3, 3, 1, 2, 4, 4, 4, 2, 6, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 5, 7, 7, 5, 7, 1, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 5, 1, 1, 1, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 3, 3, 7, 3, 3, 3, 3, 3, 5, 3, 5, 3, 1, 3, 3, 1, 1, 5, 1, 3, 3, 6, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 6, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 7, 5, 7, 5, 3, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 1, 5, 3, 1, 3, 4, 6, 4, 4, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 3, 5, 3, 5, 5, 3, 7, 1, 5, 5, 3, 3, 5, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 6, 4, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 7, 5, 3, 5, 5, 3, 5, 3, 3, 3, 3, 3, 5, 5, 3, 1, 3, 1, 3, 3, 1, 3, 3, 4, 2, 2, 4, 4, 4, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 4, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 7, 3, 7, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 3, 3, 3, 4, 4, 4, 4, 4, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 3, 7, 3, 5, 7, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 5, 3, 3, 3, 3, 5, 3, 3, 6, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 3, 3, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 5, 1, 1, 1, 4, 4, 4, 4, 4, 2, 2, 2, 4, 4, 4, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 3, 3, 3, 5, 3, 5, 5, 3, 3, 5, 5, 1, 3, 3, 3, 1, 3, 1, 5, 1, 3, 1, 4, 2, 2, 4, 4, 4, 4, 6, 2, 2, 6, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 3, 5, 3, 5, 7, 3, 3, 3, 3, 5, 3, 3, 5, 3, 1, 3, 1, 1, 1, 5, 1, 3, 1, 6, 4, 4, 6, 4, 6, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 5, 3, 5, 3, 3, 7, 3, 3, 1, 3, 5, 3, 5, 3, 5, 1, 3, 3, 5, 3, 3, 3, 6, 4, 4, 4, 4, 7, 4, 6, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 5, 3, 5, 5, 3, 5, 3, 7, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 5, 3, 3, 5, 5, 6, 4, 4, 4, 4, 4, 4, 4, 2, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 3, 5, 5, 5, 5, 5, 5, 3, 5, 5, 3, 3, 3, 5, 1, 1, 5, 3, 3, 3, 3, 1, 3, 5, 6, 4, 6, 4, 2, 2, 6, 4, 2, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 5, 5, 5, 3, 3, 7, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 1, 3, 3, 5, 3, 3, 1, 4, 4, 6, 6, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 3, 5, 5, 5, 5, 3, 7, 5, 3, 1, 3, 3, 5, 1, 1, 3, 3, 3, 3, 5, 1, 1, 1, 4, 4, 4, 2, 2, 4, 2, 6, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 3, 5, 5, 7, 5, 1, 5, 5, 3, 1, 1, 3, 7, 3, 3, 3, 3, 5, 3, 5, 5, 3, 1, 4, 4, 2, 4, 4, 4, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 3, 3, 7, 7, 5, 3, 7, 3, 3, 1, 3, 3, 3, 3, 1, 5, 1, 5, 3, 7, 1, 1, 1, 4, 2, 4, 4, 4, 6, 4, 4, 2, 4, 4, 4, 2, 2, 4, 2, 4, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 3, 5, 3, 5, 5, 5, 1, 5, 3, 3, 1, 3, 3, 3, 3, 1, 5, 1, 3, 1, 5, 1, 3, 1, 4, 4, 4, 2, 2, 4, 2, 2, 2, 4, 6, 2, 4, 2, 2, 2, 7, 2, 0, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 5, 5, 5, 3, 3, 5, 3, 5, 1, 3, 1, 3, 1, 1, 3, 3, 1, 3, 3, 1, 3, 3, 6, 4, 4, 2, 2, 6, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 5, 7, 5, 3, 5, 5, 3, 3, 3, 5, 3, 3, 3, 3, 5, 1, 5, 3, 3, 3, 1, 5, 1, 1, 3, 4, 4, 6, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 5, 7, 3, 3, 5, 3, 3, 1, 3, 3, 5, 3, 1, 3, 1, 1, 3, 3, 1, 5, 3, 2, 4, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 6, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 5, 3, 3, 5, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 3, 3, 1, 1, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 7, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 3, 7, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 3, 3, 1, 1, 1, 6, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 5, 3, 5, 5, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 3, 3, 1, 4, 4, 2, 4, 2, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 3, 7, 3, 5, 3, 3, 1, 3, 3, 1, 1, 3, 1, 1, 3, 1, 3, 3, 3, 3, 3, 1, 6, 4, 4, 6, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 3, 5, 7, 3, 5, 7, 5, 3, 3, 3, 3, 3, 5, 3, 3, 5, 3, 1, 3, 3, 3, 1, 1, 4, 2, 4, 6, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 7, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 3, 5, 3, 5, 7, 5, 5, 3, 1, 3, 3, 3, 1, 1, 3, 1, 1, 1, 3, 1, 3, 3, 6, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 5, 5, 5, 5, 3, 1, 3, 3, 3, 5, 5, 1, 3, 1, 3, 1, 3, 1, 3, 3, 1, 6, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 3, 5, 5, 5, 3, 3, 3, 3, 5, 3, 5, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 1, 4, 2, 4, 4, 6, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 5, 3, 3, 3, 1, 1, 6, 2, 4, 6, 4, 6, 4, 2, 2, 4, 4, 6, 2, 2, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 5, 3, 3, 1, 3, 1, 1, 5, 1, 3, 1, 5, 3, 5, 3, 6, 4, 6, 4, 6, 6, 4, 6, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 3, 3, 7, 5, 3, 7, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, 3, 5, 3, 6, 4, 4, 4, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 5, 3, 5, 5, 3, 7, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 3, 1, 5, 1, 5, 1, 4, 2, 4, 2, 4, 6, 6, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 5, 5, 3, 1, 3, 3, 5, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 1, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -7, 7, 7, 5, 5, 5, 3, 5, 3, 3, 5, 3, 5, 3, 3, 3, 1, 3, 5, 1, 1, 5, 3, 3, 3, 5, 1, 1, 1, 4, 4, 4, 6, 4, 4, 4, 4, 2, 2, 4, 2, 2, 4, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 5, 5, 5, 5, 5, 3, 3, 5, 3, 7, 3, 5, 3, 1, 1, 3, 1, 1, 3, 1, 1, 3, 5, 1, 3, 3, 7, 2, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 6, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 3, 5, 7, 5, 3, 3, 3, 5, 5, 3, 5, 3, 1, 1, 3, 1, 1, 3, 1, 3, 3, 3, 3, 3, 1, 6, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 3, 5, 1, 3, 1, 5, 1, 1, 3, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 3, 5, 5, 3, 3, 3, 3, 3, 1, 5, 3, 3, 1, 5, 5, 1, 1, 1, 3, 1, 3, 3, 1, 3, 3, 4, 2, 4, 2, 4, 4, 2, 4, 4, 4, 4, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 3, 5, 7, 5, 3, 7, 5, 3, 5, 1, 3, 3, 1, 3, 5, 3, 1, 3, 1, 3, 3, 5, 3, 3, 3, 4, 4, 4, 4, 4, 4, 2, 4, 2, 2, 6, 2, 2, 2, 2, 0, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 7, 3, 3, 5, 1, 3, 3, 3, 3, 5, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 4, 4, 4, 4, 2, 6, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 6, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 5, 3, 5, 5, 3, 5, 3, 3, 3, 1, 3, 5, 1, 3, 3, 1, 1, 1, 3, 1, 3, 1, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 5, 5, 5, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 5, 3, 4, 4, 6, 6, 4, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 3, 5, 5, 3, 5, 1, 1, 3, 3, 3, 3, 5, 3, 3, 3, 3, 1, 1, 5, 3, 3, 1, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 3, 5, 7, 3, 5, 5, 5, 3, 3, 1, 3, 3, 3, 3, 5, 1, 3, 3, 3, 1, 3, 5, 3, 3, 5, 6, 2, 4, 4, 2, 4, 2, 4, 2, 4, 6, 2, 4, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 7, 7, 5, 5, 3, 3, 1, 3, 1, 3, 3, 3, 5, 3, 3, 1, 1, 1, 1, 3, 3, 1, 3, 1, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 3, 5, 5, 5, 5, 3, 3, 3, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 5, 3, 5, 1, 5, 3, 6, 4, 7, 4, 4, 4, 2, 4, 2, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, -8, 7, 7, 5, 5, 5, 3, 5, 3, 5, 5, 3, 3, 5, 3, 3, 3, 5, 1, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 4, 2, 4, 4, 6, 4, 2, 4, 4, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 7, 3, 5, 5, 5, 3, 3, 3, 3, 3, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 6, 4, 6, 4, 4, 6, 2, 6, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 5, 5, 5, 3, 3, 7, 5, 5, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, 3, 5, 3, 3, 1, 6, 2, 4, 4, 2, 4, 4, 2, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 3, 3, 5, 5, 5, 3, 7, 3, 5, 1, 3, 3, 5, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 4, 2, 6, 2, 4, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 5, 7, 5, 5, 3, 7, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 6, 2, 4, 2, 2, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 5, 5, 7, 7, 5, 5, 3, 7, 5, 5, 3, 3, 3, 3, 1, 1, 1, 3, 3, 1, 3, 3, 3, 1, 4, 4, 6, 4, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 6, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 7, 7, 7, 5, 5, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 4, 2, 2, 4, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 5, 7, 3, 5, 7, 5, 5, 3, 1, 3, 1, 3, 1, 3, 3, 1, 1, 3, 3, 1, 3, 1, 4, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 3, 5, 7, 7, 3, 5, 3, 7, 3, 5, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 6, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 7, 7, 3, 5, 5, 5, 3, 3, 3, 5, 3, 5, 3, 1, 3, 3, 3, 1, 3, 3, 1, 3, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 0, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 3, 5, 5, 3, 3, 5, 1, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 6, 4, 4, 6, 4, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 5, 5, 7, 7, 5, 5, 5, 3, 1, 5, 5, 3, 1, 5, 5, 3, 3, 3, 3, 1, 1, 3, 3, 3, 1, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 5, 7, 7, 7, 3, 5, 5, 3, 1, 3, 3, 1, 3, 5, 1, 3, 3, 3, 1, 1, 5, 3, 3, 1, 4, 4, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 3, 5, 5, 5, 7, 5, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 1, 3, 3, 1, 1, 3, 1, 3, 1, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 3, 5, 5, 5, 3, 3, 5, 3, 3, 1, 3, 3, 5, 5, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 7, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 5, 3, 3, 3, 5, 7, 1, 3, 3, 5, 3, 3, 3, 3, 5, 3, 1, 1, 3, 3, 3, 3, 1, 1, 6, 2, 4, 2, 4, 4, 4, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 3, 3, 3, 5, 5, 3, 3, 3, 3, 1, 3, 1, 5, 1, 3, 3, 3, 5, 6, 2, 4, 6, 4, 6, 4, 6, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 7, 7, 5, 7, 7, 5, 5, 5, 1, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 5, 3, 3, 1, 4, 2, 4, 4, 2, 6, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 6, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 5, 7, 7, 7, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 1, 1, 5, 3, 3, 1, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 7, 7, 7, 5, 3, 3, 3, 5, 3, 3, 3, 3, 1, 1, 3, 1, 1, 3, 3, 1, 3, 1, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 6, 0, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 3, 5, 5, 5, 3, 3, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 4, 2, 2, 4, 4, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 3, 5, 5, 3, 5, 3, 3, 3, 5, 3, 3, 1, 3, 1, 3, 3, 1, 3, 3, 3, 1, 5, 3, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 7, 5, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 1, 3, 3, 3, 1, 4, 2, 4, 4, 4, 4, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 5, 5, 5, 3, 1, 7, 5, 3, 3, 3, 3, 5, 3, 1, 3, 1, 3, 1, 5, 1, 3, 3, 6, 2, 4, 2, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 3, 5, 5, 5, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 5, 1, 5, 3, 1, 5, 3, 7, 3, 5, 3, 6, 2, 6, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 3, 5, 3, 5, 5, 5, 3, 3, 3, 3, 3, 5, 5, 3, 3, 1, 1, 1, 3, 3, 3, 3, 6, 6, 4, 4, 4, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 5, 3, 5, 3, 3, 3, 5, 1, 1, 1, 3, 3, 3, 3, 1, 3, 1, 6, 2, 4, 4, 2, 6, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 6, 0, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 3, 3, 5, 5, 5, 3, 1, 3, 1, 5, 5, 5, 1, 1, 1, 3, 3, 3, 1, 1, 1, 4, 2, 4, 2, 2, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 7, 7, 7, 5, 5, 7, 5, 7, 5, 3, 1, 1, 5, 3, 3, 1, 5, 1, 1, 1, 3, 1, 3, 1, 6, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 7, 7, 5, 3, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 3, 5, 3, 1, 1, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 6, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 3, 5, 5, 5, 3, 5, 5, 3, 3, 3, 5, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 7, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 5, 5, 3, 5, 1, 3, 1, 5, 5, 3, 3, 4, 2, 4, 4, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 7, 5, 7, 5, 5, 5, 5, 3, 3, 3, 3, 1, 3, 5, 3, 3, 5, 3, 3, 3, 5, 1, 5, 3, 7, 2, 4, 4, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 6, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 5, 5, 3, 5, 3, 5, 5, 3, 1, 3, 3, 3, 3, 3, 5, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 6, 4, 4, 2, 4, 6, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 7, 3, 3, 5, 5, 3, 3, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 5, 6, 2, 4, 6, 4, 4, 4, 4, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 7, 5, 7, 3, 5, 5, 1, 3, 1, 5, 3, 3, 3, 5, 3, 3, 3, 1, 5, 1, 5, 5, 3, 3, 6, 2, 4, 6, 4, 6, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 7, 7, 5, 7, 3, 5, 5, 3, 3, 3, 3, 3, 5, 3, 5, 3, 3, 3, 1, 3, 1, 5, 1, 3, 1, 4, 4, 4, 4, 2, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 3, 5, 5, 3, 5, 5, 5, 3, 3, 3, 3, 5, 1, 3, 5, 3, 3, 3, 1, 3, 1, 1, 3, 1, 4, 2, 4, 4, 4, 6, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 5, 3, 5, 7, 3, 3, 3, 3, 1, 3, 3, 5, 3, 1, 5, 1, 1, 1, 5, 3, 5, 1, 4, 2, 2, 2, 4, 2, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 3, 5, 3, 5, 5, 5, 5, 3, 3, 3, 3, 3, 5, 1, 3, 3, 1, 5, 3, 5, 3, 3, 5, 7, 4, 4, 6, 4, 4, 4, 4, 4, 6, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 7, 3, 5, 3, 5, 5, 3, 5, 3, 5, 3, 3, 3, 5, 1, 5, 3, 1, 1, 1, 5, 1, 1, 3, 6, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 5, 3, 5, 3, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 1, 5, 1, 5, 1, 4, 2, 6, 4, 2, 4, 2, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 5, 3, 5, 5, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 3, 3, 4, 2, 6, 4, 6, 4, 6, 2, 2, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 5, 5, 5, 7, 3, 3, 7, 3, 5, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 3, 3, 1, 4, 2, 6, 2, 4, 6, 2, 4, 2, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 5, 5, 5, 3, 5, 5, 3, 7, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 3, 5, 1, 5, 3, 4, 4, 4, 4, 2, 6, 4, 4, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 5, 3, 7, 7, 3, 7, 3, 5, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 5, 1, 5, 1, 6, 2, 6, 4, 4, 4, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 7, 3, 5, 3, 5, 5, 1, 7, 5, 3, 1, 1, 3, 3, 3, 1, 3, 1, 3, 1, 7, 1, 3, 1, 6, 2, 2, 4, 4, 6, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 7, 5, 5, 5, 3, 3, 7, 3, 7, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 7, 1, 3, 1, 6, 2, 2, 2, 4, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 5, 5, 3, 5, 3, 5, 3, 5, 3, 3, 1, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 4, 2, 4, 4, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 3, 3, 1, 5, 5, 3, 7, 5, 3, 1, 3, 3, 3, 3, 1, 3, 1, 3, 1, 5, 1, 3, 3, 4, 2, 6, 4, 2, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 3, 7, 7, 5, 5, 5, 5, 3, 1, 7, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 3, 3, 5, 1, 1, 1, 4, 2, 4, 4, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 4, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 5, 5, 3, 5, 3, 1, 7, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 5, 1, 3, 1, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 7, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 3, 5, 3, 5, 5, 3, 7, 3, 3, 3, 1, 3, 1, 3, 1, 3, 1, 1, 1, 5, 1, 1, 1, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 7, 5, 5, 3, 5, 3, 5, 3, 3, 3, 5, 3, 1, 3, 5, 3, 1, 3, 1, 5, 3, 3, 3, 5, 3, 4, 4, 4, 2, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 3, 7, 1, 7, 5, 5, 1, 3, 3, 1, 1, 3, 3, 1, 1, 3, 3, 3, 3, 1, 5, 5, 4, 4, 4, 6, 4, 2, 2, 6, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 7, 7, 5, 5, 3, 7, 7, 5, 3, 1, 3, 3, 3, 5, 1, 3, 3, 5, 3, 3, 3, 3, 1, 3, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 6, 2, 4, 2, 4, 2, 6, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 5, 5, 7, 7, 5, 5, 1, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 7, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 3, 5, 3, 5, 7, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 5, 1, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 2, 2, 4, 2, 4, 4, 2, 4, 2, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -7, 7, 5, 7, 5, 5, 5, 5, 3, 5, 5, 3, 1, 3, 3, 3, 5, 3, 3, 3, 3, 5, 1, 3, 3, 5, 3, 5, 3, 6, 4, 6, 6, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 5, 5, 3, 5, 3, 5, 5, 3, 3, 3, 3, 5, 3, 5, 3, 3, 5, 5, 1, 5, 3, 3, 3, 1, 1, 4, 2, 4, 4, 2, 2, 2, 4, 2, 4, 4, 6, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 5, 3, 3, 3, 3, 5, 5, 7, 3, 3, 3, 3, 1, 5, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 3, 5, 3, 5, 5, 1, 5, 5, 3, 1, 3, 1, 3, 3, 1, 3, 1, 1, 3, 1, 1, 1, 1, 6, 2, 4, 2, 4, 4, 4, 4, 2, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 3, 5, 3, 5, 5, 3, 5, 3, 3, 1, 5, 1, 5, 3, 1, 3, 1, 3, 3, 5, 3, 3, 3, 4, 2, 6, 4, 2, 2, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 3, 3, 5, 3, 5, 5, 3, 5, 1, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 7, 3, 3, 3, 4, 2, 4, 4, 4, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 0, 6, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 7, 5, 5, 3, 3, 5, 3, 5, 3, 3, 3, 3, 1, 1, 1, 3, 3, 1, 1, 3, 5, 1, 1, 3, 6, 2, 4, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 7, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 1, 7, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 5, 3, 3, 3, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 3, 3, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 5, 1, 1, 1, 6, 2, 4, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 3, 3, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 1, 3, 1, 5, 1, 1, 1, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 6, 2, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 5, 5, 5, 3, 3, 3, 5, 5, 1, 1, 3, 5, 1, 3, 5, 3, 3, 3, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 7, 7, 3, 3, 5, 3, 5, 3, 5, 3, 3, 1, 3, 3, 1, 3, 3, 1, 1, 5, 3, 5, 5, 4, 4, 2, 4, 6, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 7, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 1, 5, 3, 3, 3, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 3, 5, 3, 3, 5, 3, 5, 5, 3, 3, 1, 1, 5, 1, 3, 3, 1, 3, 3, 3, 3, 3, 1, 4, 2, 2, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 5, 1, 1, 1, 1, 3, 5, 1, 3, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 3, 3, 5, 5, 5, 3, 3, 5, 1, 1, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 4, 2, 4, 4, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 3, 3, 3, 5, 3, 1, 3, 3, 3, 5, 1, 3, 3, 3, 3, 1, 1, 1, 5, 1, 3, 3, 6, 4, 6, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 3, 3, 3, 5, 3, 1, 1, 3, 5, 3, 3, 3, 1, 1, 3, 1, 1, 1, 5, 3, 3, 3, 4, 2, 6, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 0, 2, 2, 7, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 7, 5, 5, 5, 5, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 5, 3, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 3, 5, 3, 5, 5, 3, 3, 3, 1, 3, 5, 5, 3, 5, 3, 3, 3, 1, 3, 3, 1, 3, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 3, 5, 5, 3, 7, 5, 5, 3, 5, 3, 5, 1, 3, 3, 3, 1, 1, 1, 3, 1, 3, 3, 3, 1, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, -9, 8, 7, 5, 5, 3, 5, 5, 3, 5, 3, 3, 1, 3, 5, 3, 1, 3, 5, 5, 1, 5, 3, 1, 3, 3, 3, 5, 3, 4, 2, 6, 4, 2, 2, 2, 4, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 5, 5, 5, 3, 5, 1, 3, 3, 5, 3, 1, 5, 3, 3, 3, 3, 1, 5, 3, 3, 3, 5, 3, 6, 2, 6, 4, 6, 4, 4, 6, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 5, 3, 7, 3, 3, 5, 5, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 3, 3, 3, 1, 6, 4, 4, 6, 4, 2, 4, 4, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 7, 5, 5, 7, 5, 5, 3, 3, 3, 3, 3, 5, 1, 1, 3, 1, 3, 1, 5, 3, 3, 1, 7, 4, 6, 4, 6, 4, 4, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 7, 7, 7, 5, 7, 7, 3, 5, 5, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 3, 3, 3, 3, 3, 6, 2, 4, 2, 4, 4, 4, 4, 2, 6, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 7, 5, 7, 5, 3, 3, 5, 3, 3, 3, 3, 5, 3, 1, 3, 3, 1, 1, 1, 1, 3, 1, 6, 2, 4, 2, 2, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 6, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 7, 5, 7, 7, 7, 5, 7, 1, 3, 3, 3, 3, 5, 3, 1, 1, 1, 3, 3, 1, 3, 1, 7, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 7, 5, 5, 5, 7, 5, 7, 3, 5, 3, 3, 3, 5, 3, 3, 1, 5, 1, 3, 1, 5, 1, 3, 3, 6, 4, 4, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 3, 5, 7, 5, 7, 7, 7, 5, 5, 3, 3, 3, 3, 5, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 7, 5, 7, 7, 5, 5, 7, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 1, 7, 2, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 5, 5, 7, 5, 5, 3, 7, 3, 5, 5, 1, 5, 1, 3, 1, 1, 3, 1, 3, 3, 3, 1, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 3, 7, 7, 5, 5, 3, 5, 5, 5, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 4, 4, 4, 4, 4, 2, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 1, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 6, 4, 4, 6, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 7, 5, 5, 5, 5, 5, 3, 3, 1, 1, 3, 3, 3, 1, 1, 3, 3, 1, 1, 3, 1, 1, 6, 4, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 7, 5, 3, 3, 5, 5, 5, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 1, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 7, 3, 3, 5, 3, 3, 3, 3, 5, 3, 5, 1, 3, 1, 1, 3, 1, 3, 3, 3, 3, 5, 3, 4, 2, 4, 2, 2, 6, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 7, 3, 7, 5, 5, 5, 5, 3, 3, 3, 3, 1, 5, 3, 1, 3, 1, 1, 3, 5, 1, 3, 3, 4, 4, 7, 2, 4, 4, 4, 4, 4, 4, 6, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 8, 7, 7, 3, 5, 5, 3, 5, 3, 7, 5, 3, 5, 5, 3, 1, 3, 1, 1, 1, 7, 5, 3, 1, 6, 4, 4, 6, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 5, 3, 5, 5, 3, 3, 3, 7, 3, 3, 3, 5, 1, 1, 3, 1, 1, 1, 5, 3, 1, 1, 4, 2, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 5, 7, 5, 5, 5, 3, 3, 5, 3, 3, 1, 5, 1, 1, 3, 1, 1, 3, 5, 3, 1, 1, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 5, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 6, 2, 4, 4, 4, 4, 4, 4, 2, 4, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 5, 3, 5, 5, 5, 5, 3, 5, 1, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 1, 6, 2, 4, 4, 4, 4, 4, 2, 2, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 3, 3, 3, 6, 4, 4, 6, 4, 4, 4, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 3, 3, 5, 5, 5, 3, 7, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 3, 1, 3, 1, 4, 2, 4, 4, 2, 6, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 7, 5, 5, 3, 5, 3, 3, 3, 5, 3, 1, 3, 5, 1, 1, 1, 1, 3, 3, 3, 3, 3, 1, 4, 2, 4, 2, 4, 4, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 5, 3, 3, 3, 3, 3, 1, 5, 5, 5, 3, 3, 3, 6, 4, 6, 4, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 3, 5, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 4, 2, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 6, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 3, 7, 5, 7, 5, 7, 5, 3, 7, 3, 5, 3, 3, 3, 5, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 7, 5, 7, 5, 3, 5, 5, 5, 1, 1, 3, 5, 3, 1, 3, 1, 3, 3, 3, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 0, 7, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 7, 3, 7, 3, 3, 3, 1, 5, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, 1, 1, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 5, 7, 3, 7, 5, 3, 3, 3, 3, 3, 3, 5, 1, 3, 1, 1, 1, 1, 3, 3, 1, 1, 1, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 3, 5, 1, 3, 1, 3, 5, 1, 5, 3, 3, 5, 1, 3, 1, 3, 3, 3, 1, 3, 1, 4, 4, 6, 4, 6, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 5, 5, 7, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 5, 1, 7, 3, 3, 3, 1, 5, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 5, 1, 1, 3, 4, 2, 2, 2, 4, 6, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 6, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 5, 3, 5, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 5, 3, 1, 3, 1, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 7, 5, 5, 3, 5, 5, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 1, 3, 1, 4, 2, 4, 4, 2, 4, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 5, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 3, 1, 3, 3, 3, 3, 1, 4, 2, 4, 4, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 7, 3, 5, 3, 3, 5, 1, 5, 3, 1, 1, 3, 3, 1, 3, 1, 1, 1, 3, 1, 3, 1, 2, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 3, 5, 5, 5, 5, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 5, 3, 1, 3, 5, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 1, 1, 3, 3, 1, 3, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 3, 5, 3, 1, 1, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 6, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 5, 5, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 3, 1, 1, 1, 3, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 3, 3, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 3, 1, 3, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 6, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, 1, 3, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 5, 3, 5, 1, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 3, 1, 1, 3, 1, 3, 1, 1, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 3, 5, 3, 1, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 3, 3, 3, 1, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 6, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 1, 1, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 3, 5, 5, 1, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 1, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 6, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, -9, 5, 5, 1, 3, 5, 3, 3, 3, 3, 5, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 1, 3, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1, 3, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 5, 3, 1, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 3, 5, 3, 3, 3, 5, 3, 3, 3, 1, 1, 3, 1, 3, 5, 1, 1, 3, 1, 1, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 3, 3, 5, 1, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 1, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 6, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 3, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 5, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 5, 3, 5, 3, 3, 1, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 3, 5, 3, 5, 3, 5, 5, 3, 5, 3, 1, 1, 1, 5, 3, 1, 3, 3, 5, 3, 1, 1, 2, 2, 4, 2, 6, 2, 2, 2, 2, 6, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 3, 5, 3, 3, 3, 3, 3, 5, 3, 5, 1, 1, 3, 5, 5, 1, 1, 3, 5, 3, 1, 3, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 5, 3, 3, 5, 7, 3, 5, 5, 7, 5, 5, 3, 5, 3, 1, 3, 3, 3, 3, 3, 1, 5, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 6, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 7, 5, 7, 7, 7, 5, 7, 7, 7, 5, 7, 3, 7, 7, 7, 7, 7, 7, 3, 7, 5, 7, 5, 7, 1, 4, 4, 7, 6, 6, 6, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 5, 7, 7, 7, 7, 7, 3, 3, 7, 5, 7, 7, 3, 1, 2, 4, 6, 4, 2, 4, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 8, 1, 7, 7, 7, 7, 7, 3, 3, 7, 7, 7, 5, 3, 1, 2, 2, 4, 6, 4, 6, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 8, 5, 7, 7, 7, 3, 7, 7, 7, 7, 7, 5, 3, 7, 5, 5, 5, 3, 1, 2, 2, 4, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 5, 7, 5, 7, 7, 7, 5, 1, 5, 5, 3, 5, 3, 1, 2, 2, 4, 2, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 7, 7, 7, 7, 7, 8, 5, 7, 7, 7, 3, 7, 7, 7, 7, 7, 5, 1, 5, 7, 5, 5, 1, 1, 0, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 3, 7, 7, 7, 7, 5, 3, 1, 5, 5, 3, 3, 1, 1, 2, 2, 2, 2, 2, 6, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 7, 7, 8, 5, 7, 7, 7, 1, 7, 5, 7, 7, 7, 3, 1, 5, 5, 1, 1, 1, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 5, 7, 7, 7, 3, 7, 7, 7, 7, 7, 3, 3, 3, 5, 1, 3, 1, 1, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 7, 7, 7, 5, 7, 8, 5, 7, 5, 7, 3, 7, 5, 7, 7, 5, 1, 5, 5, 3, 3, 1, 3, 1, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 7, 3, 7, 5, 7, 7, 7, 1, 5, 5, 1, 1, 5, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 7, 1, 7, 7, 7, 7, 5, 1, 5, 3, 1, 3, 3, 3, 3, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 1, 7, 3, 7, 7, 5, 1, 1, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 1, 7, 5, 7, 3, 5, 1, 1, 3, 1, 1, 1, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 7, 7, 7, 8, 5, 7, 7, 7, 3, 7, 3, 7, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 5, 7, 7, 3, 7, 3, 7, 3, 3, 1, 3, 1, 1, 1, 3, 3, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 7, 1, 7, 5, 7, 3, 1, 1, 1, 1, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 7, 3, 7, 3, 7, 3, 3, 1, 1, 1, 3, 1, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 7, 5, 7, 3, 7, 3, 5, 1, 1, 1, 3, 1, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 7, 1, 7, 3, 5, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 7, 7, 7, 5, 7, 7, 7, 7, 5, 7, 3, 7, 5, 5, 3, 3, 3, 1, 3, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 7, 7, 7, 1, 5, 5, 3, 3, 1, 3, 1, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 7, 3, 5, 7, 7, 7, 7, 7, 1, 5, 3, 3, 1, 1, 1, 1, 1, 1, 3, 3, 1, 3, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 7, 3, 5, 3, 1, 1, 3, 3, 1, 3, 3, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 3, 5, 3, 1, 1, 3, 3, 1, 1, 3, 3, 1, 1, 1, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 7, 7, 7, 3, 5, 3, 3, 1, 3, 1, 3, 3, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 5, 3, 3, 1, 1, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 5, 5, 5, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 5, 7, 1, 3, 3, 1, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 7, 7, 7, 5, 5, 7, 7, 7, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 3, 7, 7, 5, 3, 3, 3, 1, 3, 3, 5, 3, 1, 3, 3, 3, 3, 1, 1, 1, 3, 2, 2, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 3, 7, 7, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 2, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 7, 7, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 1, 3, 1, 1, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 7, 7, 7, 7, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 5, 3, 3, 3, 1, 3, 1, 1, 3, 3, 5, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 3, 1, 1, 3, 3, 5, 5, 5, 1, 3, 3, 3, 5, 1, 1, 3, 3, 1, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 5, 3, 3, 3, 3, 5, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 7, 3, 5, 7, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 3, 1, 1, 1, 1, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 3, 1, 1, 3, 3, 3, 3, 5, 3, 3, 5, 3, 3, 1, 3, 3, 1, 3, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 1, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 5, 3, 1, 3, 3, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 5, 5, 5, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 1, 7, 3, 1, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 5, 3, 7, 7, 1, 3, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 1, 7, 5, 3, 3, 3, 5, 3, 3, 1, 1, 5, 3, 3, 3, 1, 3, 3, 3, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 3, 5, 5, 1, 3, 3, 3, 3, 1, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 7, 1, 7, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 3, 1, 3, 1, 2, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 3, 5, 7, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 3, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 7, 5, 5, 5, 5, 3, 7, 5, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 5, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 3, 5, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 3, 5, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 7, 3, 5, 5, 3, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 1, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 5, 7, 3, 5, 3, 3, 5, 3, 5, 3, 3, 3, 1, 3, 5, 1, 3, 3, 1, 1, 5, 3, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 3, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 3, 7, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 5, 3, 3, 3, 1, 3, 3, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 7, 5, 5, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 3, 3, 5, 3, 3, 1, 5, 3, 5, 3, 1, 3, 3, 1, 1, 3, 3, 1, 1, 1, 3, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 5, 7, 7, 5, 3, 3, 5, 5, 3, 3, 3, 3, 3, 5, 1, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 7, 7, 7, 7, 5, 3, 3, 1, 3, 5, 1, 3, 3, 1, 1, 1, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 1, 3, 5, 5, 1, 5, 3, 3, 1, 5, 3, 1, 3, 5, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 8, 7, 5, 7, 7, 3, 5, 7, 7, 3, 1, 5, 1, 1, 3, 3, 1, 3, 3, 1, 1, 5, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 5, 7, 7, 5, 3, 3, 1, 1, 3, 3, 1, 1, 3, 1, 1, 3, 2, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 5, 1, 7, 7, 7, 3, 3, 3, 1, 1, 1, 3, 1, 1, 3, 1, 1, 1, 2, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 1, 7, 7, 5, 3, 3, 3, 1, 1, 1, 3, 1, 1, 3, 3, 1, 3, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 1, 7, 5, 5, 5, 3, 3, 1, 3, 1, 1, 1, 3, 3, 3, 3, 1, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 7, 7, 7, 7, 3, 1, 1, 3, 1, 1, 1, 3, 3, 3, 3, 1, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 8, 7, 5, 7, 7, 7, 5, 7, 7, 1, 5, 1, 5, 5, 3, 1, 1, 1, 3, 3, 1, 3, 5, 1, 5, 3, 2, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 4, 6, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 5, 7, 8, 7, 7, 7, 5, 5, 7, 1, 7, 7, 7, 3, 1, 3, 5, 5, 5, 1, 1, 5, 1, 5, 6, 4, 2, 4, 4, 2, 2, 7, 6, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 5, 8, 8, 7, 7, 7, 7, 5, 7, 5, 7, 7, 7, 5, 3, 5, 7, 7, 5, 1, 1, 5, 1, 3, 4, 4, 2, 2, 2, 2, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 5, 7, 5, 7, 7, 7, 3, 1, 5, 7, 5, 3, 1, 1, 3, 1, 3, 2, 2, 2, 2, 4, 2, 4, 6, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 7, 8, 7, 7, 7, 8, 7, 7, 7, 1, 7, 7, 7, 3, 1, 3, 7, 5, 5, 1, 1, 5, 3, 3, 4, 2, 0, 2, 2, 4, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 7, 8, 7, 8, 7, 7, 1, 7, 1, 7, 7, 7, 3, 1, 3, 5, 5, 3, 3, 1, 3, 1, 5, 4, 2, 2, 2, 4, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 7, 8, 7, 7, 7, 7, 3, 7, 1, 7, 7, 7, 1, 1, 5, 5, 5, 5, 1, 1, 3, 1, 5, 2, 2, 2, 2, 2, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 8, 7, 7, 7, 7, 8, 8, 7, 3, 7, 3, 5, 5, 7, 3, 1, 5, 7, 5, 3, 1, 1, 3, 1, 3, 4, 2, 2, 4, 4, 4, 4, 6, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 8, 7, 7, 8, 7, 7, 8, 7, 3, 7, 3, 5, 5, 7, 5, 1, 5, 7, 5, 5, 1, 1, 3, 1, 1, 2, 2, 2, 4, 4, 2, 6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 8, 7, 7, 8, 7, 7, 8, 7, 3, 7, 3, 5, 5, 7, 3, 1, 3, 7, 5, 5, 1, 1, 5, 1, 3, 4, 2, 2, 2, 4, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 5, 7, 7, 7, 8, 7, 7, 8, 7, 5, 7, 3, 7, 7, 8, 3, 1, 5, 5, 5, 3, 1, 1, 3, 1, 3, 4, 2, 2, 4, 4, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 7, 5, 5, 7, 5, 1, 7, 3, 5, 3, 5, 3, 1, 1, 5, 5, 3, 3, 5, 5, 1, 3, 4, 2, 4, 4, 2, 2, 2, 4, 2, 4, 2, 4, 2, 4, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 8, 7, 5, 7, 7, 7, 7, 3, 7, 5, 5, 3, 7, 7, 7, 3, 7, 7, 7, 3, 3, 3, 3, 7, 6, 2, 6, 2, 4, 2, 4, 6, 2, 4, 2, 6, 2, 6, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 1, 7, 7, 5, 5, 7, 7, 7, 5, 5, 5, 3, 7, 6, 2, 6, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 8, 8, 7, 7, 7, 7, 8, 5, 7, 7, 5, 3, 7, 7, 5, 5, 5, 7, 7, 5, 7, 5, 1, 7, 7, 2, 6, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 8, 5, 7, 7, 3, 1, 7, 7, 7, 5, 5, 7, 7, 5, 5, 5, 3, 5, 6, 2, 6, 2, 2, 2, 4, 6, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 8, 8, 8, 7, 7, 7, 7, 7, 3, 7, 7, 7, 3, 7, 7, 3, 3, 5, 7, 7, 3, 3, 1, 3, 5, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 0, 2, 2, 4, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 8, 7, 7, 8, 7, 7, 7, 5, 7, 7, 5, 3, 5, 7, 5, 3, 7, 5, 7, 3, 5, 3, 3, 5, 6, 2, 6, 4, 2, 2, 4, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 8, 7, 7, 8, 7, 7, 8, 5, 7, 7, 7, 3, 7, 7, 5, 1, 5, 7, 7, 3, 3, 3, 3, 5, 6, 2, 7, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 8, 8, 3, 8, 7, 7, 8, 3, 7, 5, 5, 1, 7, 7, 5, 1, 5, 7, 7, 1, 3, 5, 5, 5, 6, 2, 6, 4, 2, 4, 4, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 5, 5, 3, 1, 7, 7, 3, 1, 5, 7, 5, 3, 3, 5, 1, 5, 6, 2, 6, 4, 2, 4, 6, 6, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 7, 5, 3, 3, 3, 5, 3, 5, 1, 1, 5, 5, 1, 1, 3, 5, 3, 3, 1, 1, 3, 1, 3, 2, 2, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 4, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 7, 7, 5, 7, 3, 7, 7, 5, 5, 5, 3, 3, 3, 5, 5, 7, 1, 3, 5, 5, 7, 4, 2, 6, 4, 4, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 3, 3, 5, 5, 1, 3, 5, 3, 3, 7, 6, 2, 4, 6, 6, 4, 4, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 8, 7, 7, 7, 8, 7, 7, 8, 8, 7, 7, 5, 5, 3, 5, 7, 7, 3, 3, 5, 5, 5, 5, 5, 7, 5, 6, 4, 2, 2, 4, 4, 2, 4, 2, 4, 2, 2, 4, 7, 4, 2, 0, 4, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 8, 7, 7, 7, 5, 7, 7, 7, 7, 5, 5, 7, 5, 5, 7, 5, 3, 3, 7, 5, 3, 5, 7, 7, 6, 6, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 8, 8, 8, 7, 8, 7, 7, 7, 5, 5, 5, 1, 5, 5, 3, 3, 3, 5, 5, 3, 3, 5, 5, 6, 2, 2, 4, 4, 4, 6, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 5, 5, 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 6, 2, 6, 2, 4, 6, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 8, 8, 8, 7, 7, 8, 7, 7, 7, 5, 7, 7, 5, 7, 7, 5, 3, 3, 5, 5, 3, 3, 3, 5, 6, 6, 2, 6, 4, 4, 4, 2, 6, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 8, 7, 8, 7, 7, 7, 7, 7, 5, 7, 3, 3, 5, 7, 1, 5, 5, 5, 5, 3, 5, 5, 3, 7, 4, 2, 6, 2, 6, 4, 4, 6, 2, 2, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 9, 7, 7, 8, 8, 8, 7, 7, 8, 7, 7, 7, 7, 5, 7, 3, 5, 7, 1, 5, 3, 7, 5, 3, 5, 3, 5, 7, 2, 2, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 9, 7, 7, 7, 8, 7, 7, 7, 7, 7, 3, 7, 5, 5, 5, 5, 3, 5, 1, 1, 3, 3, 3, 3, 3, 5, 5, 7, 4, 2, 2, 4, 2, 4, 4, 4, 2, 4, 4, 4, 4, 4, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 5, 7, 5, 7, 8, 5, 7, 7, 5, 7, 5, 3, 3, 5, 3, 5, 1, 3, 1, 3, 3, 3, 3, 1, 1, 6, 2, 4, 2, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 5, 5, 3, 3, 5, 3, 1, 1, 5, 5, 1, 3, 3, 5, 6, 2, 4, 2, 4, 6, 6, 2, 2, 6, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 5, 7, 7, 7, 7, 5, 7, 7, 5, 7, 5, 3, 3, 3, 3, 5, 3, 3, 5, 5, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 6, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 5, 7, 7, 7, 7, 5, 7, 7, 5, 7, 7, 7, 5, 7, 7, 7, 5, 8, 3, 5, 5, 5, 3, 6, 6, 6, 6, 6, 2, 6, 6, 2, 6, 4, 6, 6, 2, 2, 0, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 7, 7, 8, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8, 5, 7, 8, 7, 7, 8, 5, 7, 5, 7, 3, 7, 7, 7, 7, 4, 2, 4, 6, 4, 6, 6, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 8, 1, 7, 5, 5, 7, 7, 6, 4, 6, 6, 2, 6, 4, 2, 6, 4, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 5, 8, 7, 8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 7, 7, 7, 5, 8, 1, 5, 5, 5, 7, 6, 6, 4, 6, 4, 4, 6, 4, 4, 7, 4, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 7, 7, 8, 7, 7, 7, 8, 7, 8, 7, 7, 7, 5, 7, 7, 8, 5, 7, 7, 7, 5, 8, 1, 3, 5, 5, 5, 2, 6, 4, 4, 6, 2, 6, 2, 2, 2, 2, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 8, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 7, 7, 7, 7, 7, 1, 3, 7, 5, 7, 2, 4, 4, 6, 6, 2, 6, 4, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 8, 7, 7, 8, 5, 5, 8, 7, 7, 7, 3, 5, 7, 7, 5, 7, 7, 7, 7, 7, 3, 5, 5, 7, 5, 4, 7, 4, 6, 6, 2, 6, 6, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 8, 5, 5, 7, 8, 5, 7, 7, 3, 5, 7, 7, 5, 7, 7, 7, 5, 7, 1, 3, 5, 5, 7, 2, 6, 4, 7, 6, 4, 6, 6, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 7, 7, 5, 7, 7, 7, 3, 7, 7, 7, 5, 7, 1, 1, 5, 7, 3, 4, 4, 4, 6, 4, 2, 4, 4, 0, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 8, 7, 7, 7, 7, 8, 7, 7, 7, 3, 7, 7, 8, 3, 7, 7, 7, 7, 8, 1, 3, 7, 7, 3, 6, 6, 2, 4, 6, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 8, 3, 7, 7, 7, 7, 7, 1, 3, 5, 5, 5, 6, 6, 6, 6, 6, 4, 6, 6, 2, 2, 0, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 1, 5, 7, 8, 3, 7, 7, 5, 7, 7, 1, 5, 5, 7, 5, 4, 4, 6, 6, 6, 2, 6, 4, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 3, 5, 3, 8, 5, 7, 7, 7, 7, 7, 1, 3, 3, 5, 5, 4, 6, 2, 6, 6, 2, 6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 5, 1, 3, 7, 7, 3, 3, 3, 5, 5, 5, 1, 3, 3, 1, 3, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 7, 7, 3, 7, 7, 7, 7, 1, 7, 5, 5, 7, 7, 5, 7, 8, 7, 5, 7, 5, 7, 5, 7, 3, 7, 6, 4, 6, 6, 0, 4, 2, 4, 6, 2, 6, 2, 2, 4, 2, 2, 4, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 7, 8, 7, 8, 5, 8, 7, 7, 8, 7, 7, 7, 7, 5, 7, 7, 7, 1, 7, 5, 7, 3, 7, 7, 6, 6, 6, 7, 7, 4, 2, 4, 6, 2, 6, 2, 2, 0, 2, 2, 0, 2, 2, 0, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 7, 8, 7, 5, 7, 5, 5, 7, 7, 7, 7, 7, 7, 8, 7, 7, 1, 7, 3, 5, 3, 5, 7, 6, 7, 4, 6, 6, 4, 4, 2, 2, 4, 4, 2, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -7, 9, 8, 7, 8, 7, 8, 7, 7, 7, 7, 7, 5, 8, 7, 7, 7, 5, 7, 7, 7, 7, 5, 7, 5, 7, 5, 5, 5, 7, 6, 4, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 7, 5, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 5, 5, 5, 7, 5, 7, 6, 4, 7, 6, 2, 4, 2, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 7, 8, 5, 8, 5, 8, 7, 7, 7, 5, 5, 7, 7, 5, 7, 7, 7, 5, 5, 1, 5, 5, 7, 5, 7, 6, 2, 6, 6, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 7, 7, 8, 7, 8, 7, 7, 3, 7, 7, 7, 8, 7, 7, 7, 3, 7, 7, 7, 7, 3, 7, 5, 7, 5, 7, 3, 7, 6, 4, 6, 6, 2, 4, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 7, 3, 5, 3, 7, 3, 5, 5, 6, 6, 6, 6, 6, 4, 4, 4, 6, 2, 0, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 8, 7, 7, 7, 7, 5, 8, 7, 5, 7, 7, 5, 7, 7, 5, 7, 8, 7, 3, 7, 3, 5, 5, 7, 5, 7, 6, 4, 7, 6, 2, 4, 2, 4, 2, 0, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 7, 7, 5, 7, 8, 7, 7, 7, 7, 5, 7, 7, 3, 7, 7, 5, 3, 7, 5, 7, 7, 7, 3, 7, 6, 4, 6, 6, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 7, 7, 7, 7, 8, 7, 5, 7, 5, 3, 7, 7, 5, 7, 7, 5, 3, 5, 5, 7, 3, 5, 1, 6, 4, 6, 6, 6, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 5, 7, 7, 3, 7, 7, 5, 1, 5, 5, 7, 5, 7, 3, 7, 2, 2, 6, 6, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 7, 3, 7, 3, 5, 5, 7, 1, 7, 5, 3, 7, 7, 5, 3, 3, 7, 3, 3, 3, 3, 4, 2, 4, 2, 4, 4, 2, 2, 4, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 7, 5, 7, 7, 8, 5, 7, 8, 5, 5, 5, 7, 3, 7, 7, 7, 5, 7, 1, 5, 7, 7, 7, 4, 2, 2, 6, 6, 2, 2, 2, 2, 2, 2, 6, 6, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 5, 5, 7, 7, 5, 7, 7, 7, 5, 7, 1, 5, 7, 7, 5, 2, 2, 2, 2, 6, 2, 4, 2, 2, 4, 2, 2, 4, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 7, 7, 7, 7, 7, 7, 3, 7, 8, 5, 5, 7, 7, 3, 7, 7, 7, 7, 7, 3, 5, 7, 5, 3, 6, 2, 2, 4, 6, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 8, 7, 7, 7, 7, 5, 7, 7, 5, 3, 7, 5, 5, 7, 7, 7, 5, 5, 1, 5, 5, 3, 1, 4, 2, 2, 6, 4, 6, 6, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 7, 7, 7, 7, 8, 5, 5, 8, 7, 5, 7, 5, 5, 7, 7, 3, 3, 5, 1, 3, 5, 5, 3, 2, 2, 2, 4, 6, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 8, 8, 7, 7, 8, 3, 7, 7, 5, 5, 5, 5, 5, 7, 5, 5, 3, 5, 3, 3, 7, 5, 3, 4, 4, 4, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 7, 8, 7, 7, 8, 3, 5, 7, 3, 1, 3, 5, 3, 7, 5, 7, 5, 5, 3, 7, 3, 3, 1, 4, 4, 2, 4, 4, 4, 4, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 7, 7, 7, 7, 7, 8, 5, 7, 7, 3, 1, 5, 3, 3, 5, 5, 3, 3, 5, 5, 3, 5, 3, 3, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 7, 3, 5, 5, 5, 3, 7, 3, 5, 7, 3, 1, 3, 5, 3, 5, 3, 3, 3, 5, 1, 3, 2, 2, 2, 4, 2, 4, 2, 2, 4, 4, 4, 2, 2, 2, 6, 2, 2, 2, 4, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 8, 7, 7, 7, 7, 5, 7, 7, 5, 7, 7, 7, 7, 7, 5, 1, 5, 7, 3, 5, 3, 5, 3, 7, 3, 5, 4, 4, 6, 4, 7, 4, 2, 2, 2, 2, 4, 6, 2, 6, 6, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 5, 7, 7, 3, 7, 7, 5, 1, 7, 7, 1, 7, 5, 5, 4, 2, 6, 6, 4, 4, 2, 2, 0, 2, 2, 4, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 5, 7, 8, 7, 5, 5, 7, 1, 7, 7, 3, 1, 5, 7, 3, 7, 5, 3, 2, 2, 7, 4, 6, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 7, 7, 8, 7, 5, 7, 7, 7, 5, 7, 7, 3, 7, 7, 5, 1, 5, 7, 3, 3, 3, 1, 2, 2, 7, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 5, 7, 7, 7, 5, 5, 7, 3, 7, 7, 5, 3, 5, 5, 5, 3, 3, 1, 2, 2, 6, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 8, 5, 7, 7, 7, 3, 7, 8, 7, 5, 7, 7, 3, 7, 5, 1, 3, 1, 5, 3, 5, 1, 1, 2, 2, 6, 4, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 3, 7, 7, 7, 5, 5, 7, 3, 7, 5, 1, 3, 3, 3, 5, 5, 3, 1, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 8, 7, 7, 5, 7, 5, 7, 7, 5, 1, 1, 3, 5, 5, 5, 1, 2, 2, 6, 6, 4, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 5, 5, 5, 7, 1, 7, 7, 3, 1, 1, 5, 5, 5, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 7, 3, 7, 7, 3, 1, 1, 3, 5, 3, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 3, 7, 7, 7, 5, 7, 7, 1, 7, 7, 3, 3, 1, 3, 3, 5, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 8, 7, 5, 5, 7, 3, 7, 7, 7, 5, 7, 7, 5, 5, 7, 3, 1, 1, 1, 1, 5, 1, 1, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 3, 7, 7, 7, 5, 7, 7, 1, 5, 5, 1, 1, 1, 1, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 7, 5, 5, 7, 3, 7, 7, 7, 5, 5, 7, 3, 5, 5, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 7, 7, 5, 5, 5, 5, 1, 5, 1, 1, 3, 3, 1, 3, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 3, 7, 5, 5, 3, 5, 3, 1, 5, 3, 1, 1, 1, 1, 1, 1, 3, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 7, 7, 7, 5, 5, 5, 1, 3, 3, 3, 1, 1, 3, 1, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 5, 7, 3, 3, 3, 1, 1, 5, 1, 1, 1, 3, 3, 1, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 1, 3, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 7, 5, 7, 7, 1, 7, 5, 5, 3, 5, 5, 3, 3, 5, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 7, 7, 7, 5, 7, 7, 1, 7, 7, 3, 5, 5, 3, 1, 3, 3, 3, 1, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 1, 7, 5, 5, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 1, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 1, 7, 5, 3, 5, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 5, 5, 7, 7, 3, 5, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 3, 1, 1, 1, 5, 3, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 3, 5, 3, 1, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 1, 1, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 5, 5, 7, 5, 1, 5, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 5, 7, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 3, 5, 7, 5, 1, 3, 1, 1, 3, 5, 3, 1, 3, 3, 3, 1, 3, 1, 3, 1, 1, 3, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 5, 7, 5, 7, 5, 5, 3, 3, 5, 3, 3, 1, 3, 3, 3, 1, 1, 3, 3, 1, 3, 1, 3, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 5, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 5, 7, 7, 7, 1, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 3, 5, 5, 3, 3, 5, 1, 3, 3, 3, 1, 3, 3, 1, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 5, 5, 5, 1, 3, 3, 3, 3, 5, 3, 3, 1, 3, 1, 3, 3, 3, 1, 3, 3, 1, 4, 2, 2, 2, 2, 4, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 1, 3, 1, 3, 3, 3, 7, 7, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 4, 2, 2, 2, 4, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 3, 7, 5, 5, 1, 1, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 5, 5, 5, 3, 1, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 7, 5, 5, 5, 1, 3, 1, 3, 5, 5, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 7, 5, 3, 1, 3, 3, 3, 3, 5, 1, 3, 3, 1, 1, 1, 3, 3, 1, 1, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 7, 5, 7, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 3, 4, 4, 4, 2, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1, 3, 3, 3, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 5, 5, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 5, 1, 3, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 3, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 3, 5, 5, 3, 1, 3, 3, 3, 3, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 3, 5, 5, 3, 1, 1, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 3, 3, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 1, 3, 1, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 5, 5, 5, 3, 1, 1, 5, 1, 3, 5, 3, 1, 1, 1, 3, 3, 1, 3, 1, 1, 1, 1, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 3, 5, 3, 5, 3, 5, 5, 1, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 3, 3, 5, 3, 3, 3, 3, 1, 5, 3, 3, 1, 1, 3, 3, 1, 1, 3, 1, 1, 1, 1, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 5, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 3, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 3, 7, 3, 3, 3, 5, 3, 3, 3, 1, 3, 5, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 5, 3, 7, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 5, 5, 7, 7, 3, 3, 1, 3, 5, 1, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 3, 5, 5, 5, 5, 3, 3, 3, 3, 5, 3, 3, 5, 1, 1, 3, 3, 3, 3, 1, 3, 1, 3, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 5, 3, 7, 1, 3, 3, 3, 3, 3, 3, 5, 1, 3, 1, 3, 1, 3, 3, 1, 1, 3, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 3, 7, 3, 3, 5, 5, 3, 1, 3, 3, 5, 3, 5, 3, 5, 3, 3, 3, 3, 1, 3, 1, 3, 1, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 3, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 3, 7, 5, 5, 7, 5, 1, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 3, 5, 3, 3, 5, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 3, 3, 5, 5, 3, 3, 5, 3, 3, 1, 3, 3, 3, 1, 1, 3, 1, 3, 1, 3, 3, 1, 4, 2, 4, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 3, 5, 7, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 1, 1, 3, 1, 1, 4, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 3, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 5, 5, 5, 5, 3, 1, 3, 3, 3, 1, 5, 3, 3, 3, 5, 3, 3, 1, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 5, 5, 5, 7, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 1, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 5, 5, 3, 5, 3, 3, 1, 5, 3, 3, 3, 5, 5, 3, 5, 3, 3, 3, 5, 1, 3, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 3, 7, 7, 5, 8, 7, 3, 7, 7, 7, 7, 7, 7, 5, 7, 7, 8, 5, 7, 1, 3, 5, 7, 7, 6, 6, 4, 6, 4, 6, 2, 4, 4, 6, 6, 4, 6, 2, 0, 0, 2, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 8, 8, 5, 7, 8, 7, 8, 7, 1, 7, 7, 8, 7, 3, 8, 7, 7, 7, 8, 5, 7, 5, 3, 1, 7, 3, 6, 7, 2, 4, 4, 2, 2, 6, 2, 6, 4, 6, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 9, 7, 8, 7, 7, 7, 7, 7, 8, 7, 3, 7, 7, 8, 7, 7, 8, 7, 7, 7, 7, 7, 7, 5, 1, 1, 7, 3, 6, 6, 2, 6, 6, 4, 2, 2, 2, 4, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 8, 7, 5, 7, 8, 7, 8, 7, 1, 7, 7, 7, 7, 7, 8, 5, 7, 7, 7, 8, 7, 5, 5, 3, 7, 3, 7, 4, 2, 4, 4, 4, 2, 6, 2, 6, 6, 4, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 5, 8, 8, 7, 7, 7, 1, 7, 7, 7, 5, 7, 8, 7, 7, 7, 7, 7, 7, 3, 3, 3, 7, 5, 4, 6, 4, 4, 2, 4, 2, 6, 2, 6, 4, 2, 4, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 3, 7, 7, 5, 7, 5, 1, 7, 3, 5, 5, 5, 7, 7, 7, 7, 7, 5, 7, 7, 1, 1, 7, 7, 7, 2, 4, 6, 6, 2, 4, 4, 2, 2, 4, 4, 2, 2, 6, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 5, 7, 5, 7, 7, 1, 7, 7, 7, 7, 5, 7, 3, 7, 7, 7, 7, 7, 3, 5, 7, 5, 5, 4, 7, 2, 2, 7, 2, 0, 4, 2, 2, 2, 4, 2, 6, 4, 4, 4, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 7, 7, 8, 7, 1, 7, 7, 7, 7, 3, 7, 5, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 4, 7, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 1, 7, 7, 5, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 3, 5, 5, 5, 6, 6, 4, 4, 6, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 5, 7, 7, 7, 7, 8, 7, 1, 7, 8, 7, 7, 5, 7, 5, 7, 7, 7, 5, 5, 3, 3, 5, 5, 5, 2, 6, 2, 6, 4, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 7, 7, 7, 7, 8, 7, 1, 7, 7, 7, 5, 7, 7, 5, 5, 7, 7, 7, 7, 7, 5, 7, 5, 3, 2, 4, 2, 4, 6, 4, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 1, 7, 7, 5, 5, 5, 7, 7, 5, 7, 7, 7, 7, 3, 1, 3, 3, 5, 4, 4, 4, 6, 6, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 5, 5, 7, 7, 5, 5, 7, 7, 7, 5, 5, 3, 7, 5, 5, 6, 2, 4, 7, 6, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 8, 7, 5, 7, 7, 7, 1, 7, 7, 5, 3, 3, 7, 3, 5, 7, 7, 7, 5, 5, 3, 5, 5, 3, 4, 6, 2, 4, 6, 2, 4, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 3, 3, 5, 7, 5, 3, 5, 7, 5, 3, 3, 5, 3, 1, 5, 3, 5, 1, 1, 3, 5, 3, 3, 4, 4, 2, 4, 2, 2, 2, 4, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 8, 7, 7, 3, 8, 8, 7, 1, 7, 7, 7, 7, 5, 7, 1, 7, 7, 7, 3, 7, 1, 1, 7, 7, 7, 2, 2, 4, 0, 6, 6, 0, 2, 2, 2, 6, 4, 2, 4, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 3, 8, 7, 8, 1, 8, 8, 7, 1, 7, 8, 7, 7, 5, 7, 1, 7, 7, 8, 5, 7, 3, 1, 7, 7, 5, 6, 6, 2, 0, 4, 2, 0, 2, 2, 4, 4, 2, 2, 4, 4, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 5, 8, 8, 7, 3, 7, 8, 8, 1, 7, 8, 8, 7, 5, 7, 1, 5, 7, 7, 5, 7, 1, 3, 7, 7, 5, 6, 2, 4, 0, 7, 6, 0, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 3, 8, 8, 8, 3, 8, 8, 7, 1, 7, 8, 7, 7, 7, 7, 1, 5, 7, 7, 3, 7, 1, 1, 7, 7, 5, 6, 4, 4, 2, 6, 4, 0, 2, 0, 4, 2, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 8, 7, 8, 3, 8, 8, 7, 3, 5, 8, 8, 5, 7, 7, 1, 5, 7, 8, 7, 7, 3, 1, 7, 7, 7, 6, 2, 2, 2, 6, 6, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 5, 8, 7, 8, 3, 8, 8, 8, 1, 5, 7, 7, 7, 7, 7, 1, 7, 7, 8, 5, 5, 1, 1, 7, 7, 5, 6, 4, 4, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 8, 7, 7, 5, 7, 7, 8, 5, 5, 8, 7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 1, 3, 7, 7, 3, 6, 4, 6, 2, 6, 4, 0, 0, 0, 0, 2, 2, 0, 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 8, 5, 7, 3, 7, 8, 7, 3, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 3, 5, 7, 3, 7, 1, 1, 0, 4, 6, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 7, 0, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 3, 8, 7, 8, 1, 7, 7, 8, 3, 7, 7, 7, 7, 7, 7, 1, 7, 7, 7, 3, 5, 7, 1, 7, 3, 1, 2, 4, 4, 2, 2, 4, 4, 2, 2, 0, 2, 4, 2, 6, 6, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 8, 7, 8, 1, 8, 7, 7, 3, 8, 8, 7, 7, 7, 7, 1, 7, 7, 5, 7, 5, 7, 1, 7, 1, 1, 2, 4, 4, 2, 4, 4, 2, 4, 4, 2, 2, 4, 2, 4, 6, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 3, 8, 8, 7, 1, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 1, 5, 7, 5, 5, 5, 5, 3, 7, 3, 1, 4, 4, 6, 2, 6, 4, 2, 2, 4, 2, 2, 4, 2, 4, 6, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 3, 8, 8, 8, 3, 8, 7, 7, 3, 7, 7, 7, 5, 7, 7, 1, 7, 7, 5, 3, 3, 5, 1, 7, 3, 1, 2, 4, 4, 2, 4, 2, 4, 4, 4, 2, 4, 2, 2, 4, 4, 0, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 3, 8, 7, 7, 5, 8, 7, 7, 1, 7, 8, 7, 5, 7, 7, 1, 5, 7, 7, 3, 5, 5, 1, 7, 1, 1, 2, 2, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 4, 4, 0, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 8, 7, 8, 1, 7, 7, 8, 1, 7, 7, 5, 7, 5, 5, 3, 3, 5, 5, 1, 1, 5, 3, 7, 3, 1, 2, 6, 4, 6, 4, 2, 2, 4, 2, 2, 2, 0, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 3, 7, 5, 5, 7, 7, 3, 7, 5, 7, 1, 5, 3, 5, 5, 5, 7, 3, 3, 1, 3, 5, 1, 5, 6, 7, 6, 7, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 4, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 5, 8, 7, 7, 7, 7, 1, 7, 7, 7, 5, 7, 5, 5, 5, 7, 7, 5, 5, 5, 3, 7, 1, 3, 6, 6, 2, 6, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 5, 7, 7, 8, 7, 7, 1, 7, 7, 7, 5, 7, 3, 3, 7, 7, 7, 5, 5, 5, 3, 5, 3, 1, 4, 6, 6, 6, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 7, 7, 7, 7, 7, 1, 7, 8, 7, 5, 5, 5, 5, 5, 7, 7, 5, 5, 5, 1, 7, 3, 3, 2, 2, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 5, 7, 7, 7, 7, 7, 1, 7, 7, 7, 5, 7, 5, 7, 7, 7, 5, 5, 5, 7, 3, 7, 5, 1, 4, 6, 6, 4, 4, 4, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 3, 7, 7, 7, 7, 7, 3, 7, 7, 5, 5, 5, 5, 3, 3, 5, 5, 3, 3, 5, 1, 7, 3, 1, 2, 4, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 3, 7, 7, 7, 5, 7, 3, 7, 5, 5, 3, 5, 3, 3, 3, 3, 5, 1, 1, 3, 3, 3, 1, 5, 6, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 8, 5, 7, 7, 7, 8, 7, 3, 5, 8, 7, 8, 3, 7, 3, 7, 7, 7, 3, 7, 1, 7, 7, 7, 7, 6, 2, 2, 2, 6, 4, 2, 2, 2, 4, 6, 4, 6, 4, 0, 0, 2, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 5, 7, 8, 7, 8, 7, 1, 7, 7, 7, 7, 7, 5, 7, 7, 7, 8, 7, 7, 3, 7, 7, 7, 5, 4, 2, 2, 2, 6, 6, 4, 2, 2, 6, 6, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 7, 7, 7, 8, 7, 8, 8, 3, 7, 7, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 1, 7, 7, 3, 7, 6, 4, 2, 2, 4, 4, 6, 4, 2, 2, 6, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 8, 5, 7, 8, 7, 8, 7, 3, 7, 7, 8, 7, 7, 5, 5, 7, 7, 7, 5, 7, 3, 7, 5, 5, 7, 6, 2, 2, 2, 6, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 8, 7, 7, 3, 7, 7, 7, 8, 7, 1, 7, 8, 8, 5, 7, 5, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 3, 6, 2, 2, 2, 6, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 8, 7, 8, 7, 3, 5, 7, 8, 7, 7, 7, 5, 7, 7, 7, 5, 7, 3, 5, 7, 5, 5, 4, 2, 2, 4, 6, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 7, 5, 7, 7, 5, 7, 8, 5, 7, 7, 8, 7, 7, 7, 5, 7, 7, 7, 5, 7, 1, 5, 7, 7, 5, 6, 0, 2, 2, 6, 6, 2, 2, 0, 0, 4, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 5, 7, 5, 7, 7, 7, 5, 7, 7, 7, 5, 7, 5, 5, 7, 5, 5, 5, 1, 3, 5, 5, 3, 6, 6, 6, 6, 6, 4, 2, 2, 2, 4, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 7, 8, 7, 8, 7, 7, 7, 8, 7, 1, 7, 7, 7, 7, 7, 5, 7, 1, 7, 7, 7, 5, 6, 7, 6, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 7, 7, 7, 8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 7, 1, 5, 7, 3, 5, 4, 6, 4, 4, 4, 6, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 7, 7, 5, 7, 7, 7, 8, 7, 7, 7, 7, 7, 5, 7, 5, 7, 7, 5, 5, 7, 1, 7, 5, 3, 5, 4, 2, 2, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 7, 7, 7, 3, 5, 1, 3, 3, 5, 1, 4, 6, 6, 4, 6, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 7, 7, 7, 8, 7, 7, 8, 7, 7, 5, 7, 7, 3, 5, 7, 7, 7, 7, 5, 7, 1, 3, 5, 7, 3, 2, 4, 4, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 5, 1, 5, 3, 5, 3, 5, 1, 3, 1, 3, 5, 1, 1, 6, 4, 6, 2, 4, 4, 2, 6, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 7, 5, 5, 5, 5, 5, 3, 1, 3, 3, 1, 1, 6, 2, 2, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 8, 7, 5, 5, 7, 5, 7, 7, 7, 3, 7, 5, 1, 7, 7, 3, 7, 7, 2, 2, 6, 4, 2, 6, 0, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 7, 8, 8, 8, 5, 7, 7, 7, 7, 7, 1, 7, 7, 7, 7, 7, 7, 5, 7, 1, 1, 5, 5, 3, 7, 6, 4, 2, 7, 2, 2, 2, 2, 2, 0, 4, 7, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 7, 8, 8, 7, 3, 8, 7, 7, 7, 7, 5, 7, 7, 7, 8, 7, 7, 1, 7, 1, 1, 5, 5, 7, 6, 4, 2, 2, 6, 2, 2, 4, 0, 0, 0, 2, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 7, 8, 7, 5, 7, 7, 7, 7, 7, 5, 5, 7, 7, 7, 7, 7, 3, 7, 1, 3, 3, 5, 5, 7, 6, 2, 2, 6, 2, 2, 6, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 7, 7, 8, 7, 7, 7, 7, 5, 8, 7, 7, 8, 5, 5, 7, 7, 7, 7, 7, 7, 3, 7, 1, 1, 7, 5, 3, 6, 4, 2, 4, 4, 6, 2, 6, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 8, 7, 7, 7, 3, 7, 7, 7, 8, 5, 5, 1, 5, 5, 7, 7, 7, 1, 7, 3, 1, 5, 5, 3, 6, 6, 2, 2, 6, 2, 2, 6, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 8, 7, 7, 8, 7, 1, 7, 7, 7, 7, 7, 5, 3, 5, 5, 7, 7, 5, 1, 7, 1, 1, 7, 3, 3, 6, 7, 2, 2, 6, 4, 4, 6, 2, 2, 0, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 7, 7, 7, 5, 7, 5, 7, 7, 3, 7, 5, 5, 5, 7, 7, 7, 5, 7, 3, 1, 5, 5, 3, 6, 7, 2, 2, 4, 4, 2, 6, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 5, 7, 7, 5, 7, 7, 5, 7, 3, 5, 3, 7, 5, 7, 7, 7, 5, 7, 1, 3, 5, 3, 3, 4, 6, 2, 2, 7, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 5, 8, 7, 5, 7, 3, 3, 5, 7, 7, 5, 5, 7, 5, 7, 5, 5, 7, 7, 3, 2, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 5, 3, 5, 7, 7, 7, 7, 7, 5, 7, 3, 7, 5, 3, 3, 6, 6, 2, 2, 7, 2, 2, 4, 2, 0, 0, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 8, 8, 7, 7, 7, 8, 7, 5, 8, 5, 5, 5, 5, 7, 7, 7, 7, 1, 7, 3, 7, 5, 5, 1, 6, 6, 2, 2, 6, 4, 2, 7, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 8, 7, 7, 7, 8, 7, 3, 7, 5, 3, 5, 5, 7, 7, 7, 7, 5, 7, 3, 5, 5, 5, 1, 6, 6, 2, 4, 6, 4, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 8, 7, 7, 7, 8, 7, 5, 7, 5, 3, 5, 3, 7, 7, 7, 7, 5, 7, 3, 5, 5, 3, 3, 6, 4, 2, 2, 6, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 7, 8, 7, 7, 7, 7, 7, 7, 5, 7, 3, 5, 5, 3, 7, 5, 3, 5, 3, 7, 5, 3, 5, 1, 3, 2, 4, 4, 4, 2, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 5, 7, 5, 5, 3, 3, 3, 3, 7, 3, 3, 7, 7, 3, 1, 1, 5, 5, 1, 3, 5, 3, 5, 5, 2, 2, 4, 2, 6, 4, 2, 2, 2, 4, 2, 2, 4, 4, 2, 4, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 5, 8, 5, 5, 5, 7, 7, 5, 7, 7, 3, 3, 3, 5, 5, 1, 5, 3, 5, 1, 3, 5, 5, 5, 2, 4, 4, 2, 6, 4, 4, 4, 4, 6, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 5, 7, 7, 7, 5, 3, 8, 7, 1, 7, 7, 7, 5, 7, 7, 5, 1, 7, 5, 7, 7, 5, 5, 5, 5, 2, 4, 4, 4, 2, 2, 4, 2, 4, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 8, 5, 7, 8, 7, 7, 7, 7, 7, 1, 7, 7, 7, 5, 5, 7, 5, 3, 7, 3, 5, 5, 7, 3, 5, 1, 2, 2, 2, 2, 4, 4, 2, 6, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 5, 7, 8, 7, 3, 5, 8, 7, 1, 7, 7, 7, 5, 3, 5, 3, 1, 1, 3, 5, 3, 5, 3, 1, 3, 2, 2, 2, 2, 4, 4, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 5, 7, 8, 8, 5, 7, 7, 7, 1, 7, 7, 5, 3, 3, 5, 1, 3, 3, 7, 7, 3, 5, 3, 5, 1, 2, 4, 4, 2, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 7, 8, 7, 5, 7, 7, 7, 3, 7, 5, 3, 3, 3, 3, 1, 5, 7, 7, 7, 5, 5, 7, 3, 1, 2, 4, 2, 4, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 5, 7, 7, 7, 3, 3, 7, 7, 1, 7, 3, 5, 3, 5, 1, 3, 3, 1, 3, 7, 3, 3, 5, 3, 1, 2, 2, 4, 2, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 3, 5, 5, 5, 1, 3, 5, 7, 7, 5, 7, 5, 3, 5, 5, 1, 7, 7, 7, 6, 6, 2, 6, 2, 4, 6, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 3, 3, 7, 7, 7, 7, 7, 7, 7, 5, 5, 1, 1, 7, 7, 7, 2, 6, 2, 6, 0, 4, 2, 2, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 3, 7, 7, 7, 3, 3, 7, 7, 5, 5, 1, 5, 5, 7, 6, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 8, 7, 7, 3, 7, 7, 7, 3, 7, 5, 5, 5, 1, 7, 7, 5, 1, 1, 1, 5, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 1, 3, 1, 3, 1, 1, 3, 7, 3, 1, 1, 3, 5, 6, 2, 6, 4, 4, 2, 2, 4, 2, 6, 6, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 5, 7, 5, 3, 7, 3, 7, 3, 7, 7, 7, 3, 1, 1, 1, 3, 6, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 5, 7, 5, 7, 3, 3, 7, 7, 5, 1, 7, 1, 5, 1, 3, 3, 5, 1, 1, 1, 1, 5, 6, 2, 4, 2, 2, 2, 2, 6, 2, 2, 4, 2, 4, 4, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 8, 7, 7, 7, 7, 5, 5, 5, 7, 5, 3, 7, 3, 7, 5, 3, 5, 5, 1, 1, 3, 3, 3, 4, 0, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 8, 7, 8, 7, 7, 7, 7, 3, 5, 5, 7, 3, 1, 7, 1, 5, 1, 1, 3, 5, 3, 1, 1, 3, 5, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 7, 7, 5, 3, 7, 1, 5, 3, 1, 5, 5, 1, 1, 1, 1, 3, 6, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 7, 3, 7, 1, 7, 3, 1, 3, 5, 1, 1, 1, 3, 3, 6, 2, 6, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 8, 7, 5, 7, 7, 3, 3, 5, 5, 5, 3, 7, 1, 7, 1, 1, 3, 5, 3, 1, 1, 1, 5, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 7, 7, 5, 3, 5, 1, 7, 3, 1, 3, 5, 1, 1, 1, 3, 3, 6, 0, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 3, 3, 5, 7, 3, 1, 7, 1, 7, 3, 1, 5, 5, 3, 1, 1, 1, 5, 6, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 3, 3, 7, 5, 1, 3, 1, 3, 1, 1, 1, 5, 1, 1, 1, 1, 5, 4, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 1, 5, 7, 5, 3, 3, 1, 3, 1, 1, 3, 5, 3, 3, 1, 3, 3, 4, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 8, 7, 7, 7, 5, 3, 3, 5, 7, 3, 3, 5, 1, 3, 1, 1, 1, 5, 1, 1, 3, 1, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 5, 7, 3, 1, 5, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 3, 3, 7, 5, 3, 1, 5, 1, 1, 1, 1, 3, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 5, 5, 3, 3, 3, 1, 3, 1, 3, 1, 3, 3, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 1, 1, 7, 3, 3, 3, 1, 1, 1, 3, 5, 3, 1, 3, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 8, 7, 7, 7, 7, 3, 3, 3, 5, 3, 1, 1, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 3, 3, 3, 5, 1, 3, 3, 3, 1, 1, 3, 3, 1, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 3, 5, 1, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 1, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 1, 1, 1, 5, 5, 3, 3, 1, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 2, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3, 3, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 1, 1, 3, 3, 3, 1, 3, 1, 3, 3, 1, 1, 5, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 3, 1, 3, 3, 3, 1, 3, 1, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 4, 4, 4, 2, 4, 2, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 1, 3, 3, 5, 5, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 5, 1, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 7, 5, 7, 5, 3, 1, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 7, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 2, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 5, 7, 7, 5, 3, 3, 1, 3, 3, 5, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 7, 7, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 1, 3, 3, 3, 5, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 2, 2, 2, 2, 4, 2, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 4, 2, 2, 2, 4, 0, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 3, 7, 7, 5, 7, 5, 5, 3, 1, 3, 3, 5, 5, 3, 1, 3, 5, 1, 3, 1, 3, 1, 3, 3, 3, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 7, 5, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 3, 1, 1, 3, 3, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 3, 5, 5, 5, 3, 3, 3, 1, 3, 3, 3, 1, 1, 5, 3, 1, 3, 1, 3, 3, 1, 3, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 3, 7, 5, 5, 3, 3, 3, 3, 3, 5, 3, 1, 3, 3, 1, 3, 1, 3, 3, 1, 1, 1, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 3, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 5, 3, 5, 3, 1, 1, 3, 1, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 3, 7, 3, 5, 3, 1, 3, 3, 3, 3, 3, 5, 3, 3, 5, 3, 3, 3, 1, 1, 3, 3, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 7, 7, 5, 5, 5, 3, 5, 3, 1, 3, 3, 5, 1, 5, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 3, 5, 1, 3, 5, 1, 5, 1, 3, 3, 1, 3, 3, 3, 1, 1, 3, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 3, 3, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 5, 5, 3, 5, 3, 1, 3, 1, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 5, 7, 5, 5, 5, 1, 3, 3, 3, 1, 3, 1, 3, 5, 3, 3, 1, 3, 1, 1, 3, 3, 1, 3, 1, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 1, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 3, 3, 5, 3, 7, 3, 3, 3, 3, 1, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 5, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 3, 5, 5, 5, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 3, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 5, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 7, 5, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 1, 3, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 3, 5, 7, 1, 5, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 1, 3, 3, 1, 1, 1, 3, 3, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 5, 3, 5, 3, 3, 3, 1, 3, 3, 7, 3, 5, 3, 1, 1, 3, 1, 1, 3, 1, 5, 3, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 7, 3, 7, 3, 1, 5, 3, 7, 3, 3, 7, 3, 3, 1, 3, 1, 1, 1, 3, 1, 1, 3, 1, 1, 3, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 5, 1, 3, 3, 1, 1, 3, 1, 1, 1, 3, 1, 1, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 3, 1, 1, 3, 1, 1, 1, 4, 4, 2, 4, 2, 6, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 5, 3, 5, 5, 1, 3, 3, 5, 1, 3, 3, 1, 3, 1, 5, 1, 1, 3, 1, 3, 3, 1, 3, 1, 1, 4, 4, 2, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 4, 4, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 3, 5, 5, 3, 3, 1, 5, 3, 1, 3, 1, 3, 5, 3, 5, 1, 3, 1, 1, 1, 3, 1, 3, 1, 4, 2, 2, 2, 2, 4, 2, 4, 2, 4, 2, 2, 4, 4, 2, 2, 4, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 7, 5, 3, 3, 5, 3, 5, 7, 1, 1, 3, 3, 5, 5, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 6, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 7, 7, 3, 7, 3, 5, 5, 1, 7, 3, 1, 7, 5, 1, 3, 5, 5, 5, 5, 5, 1, 3, 5, 5, 6, 4, 4, 2, 4, 4, 4, 6, 4, 4, 2, 6, 4, 4, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 3, 3, 5, 5, 5, 7, 6, 4, 6, 2, 4, 4, 4, 4, 6, 4, 2, 6, 4, 4, 2, 2, 2, 2, 4, 4, 4, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 7, 3, 7, 7, 7, 7, 7, 7, 7, 7, 3, 5, 1, 5, 5, 7, 7, 5, 3, 3, 5, 5, 6, 4, 4, 2, 4, 6, 6, 6, 4, 4, 2, 4, 4, 2, 2, 2, 2, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 8, 7, 5, 7, 8, 7, 7, 7, 7, 7, 8, 7, 7, 3, 7, 3, 7, 7, 5, 3, 7, 3, 7, 7, 7, 7, 6, 2, 2, 6, 6, 2, 2, 2, 2, 4, 2, 6, 2, 2, 0, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 7, 8, 7, 7, 8, 5, 5, 7, 7, 7, 5, 7, 3, 7, 7, 7, 7, 7, 1, 7, 5, 5, 7, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 7, 7, 7, 7, 7, 5, 7, 8, 7, 7, 5, 7, 7, 7, 7, 7, 3, 7, 5, 5, 7, 5, 5, 6, 2, 2, 6, 4, 4, 6, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 8, 7, 7, 7, 7, 5, 8, 3, 7, 7, 7, 5, 7, 3, 3, 8, 7, 5, 5, 5, 3, 7, 7, 7, 7, 6, 2, 2, 2, 6, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 7, 8, 7, 7, 7, 5, 7, 8, 7, 7, 5, 7, 3, 7, 7, 3, 3, 5, 1, 5, 7, 7, 7, 6, 2, 2, 6, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 7, 7, 5, 8, 3, 3, 7, 5, 5, 3, 5, 5, 7, 7, 3, 3, 3, 1, 3, 3, 5, 5, 6, 2, 2, 6, 6, 4, 4, 4, 2, 2, 0, 2, 2, 4, 2, 2, 4, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 7, 7, 3, 3, 7, 5, 3, 7, 5, 5, 5, 3, 5, 7, 7, 3, 1, 3, 1, 3, 7, 7, 3, 4, 4, 2, 4, 6, 4, 4, 4, 2, 6, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 3, 7, 7, 5, 7, 7, 1, 5, 7, 7, 5, 3, 7, 7, 7, 7, 5, 1, 7, 7, 7, 5, 5, 3, 6, 7, 2, 4, 2, 2, 2, 6, 4, 6, 2, 4, 4, 6, 2, 2, 2, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 8, 5, 7, 8, 1, 7, 7, 7, 7, 5, 8, 5, 7, 7, 5, 5, 5, 7, 7, 5, 5, 3, 2, 7, 2, 4, 2, 2, 4, 4, 6, 6, 2, 2, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 7, 5, 8, 8, 5, 7, 8, 5, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 1, 7, 7, 7, 5, 7, 3, 4, 7, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 3, 5, 7, 7, 7, 5, 7, 3, 7, 7, 5, 1, 7, 7, 7, 7, 5, 3, 6, 7, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 5, 7, 7, 3, 5, 5, 3, 3, 3, 5, 3, 3, 5, 3, 3, 5, 3, 3, 3, 5, 3, 1, 3, 1, 6, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 3, 7, 7, 7, 7, 7, 7, 5, 5, 5, 3, 1, 7, 7, 7, 5, 7, 1, 6, 6, 4, 4, 2, 2, 4, 4, 4, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 3, 7, 7, 7, 3, 7, 7, 7, 1, 7, 8, 5, 7, 5, 7, 1, 7, 7, 7, 7, 7, 5, 1, 7, 7, 3, 7, 2, 2, 2, 6, 6, 2, 4, 0, 2, 2, 4, 2, 7, 2, 0, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 8, 7, 8, 7, 8, 8, 7, 1, 7, 8, 5, 7, 7, 7, 3, 7, 8, 7, 7, 7, 5, 3, 7, 7, 1, 7, 2, 2, 0, 4, 4, 0, 4, 0, 0, 2, 2, 2, 6, 4, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 8, 7, 8, 7, 7, 8, 7, 3, 7, 8, 3, 7, 7, 7, 3, 7, 7, 7, 7, 7, 5, 3, 7, 7, 0, 6, 2, 2, 2, 6, 6, 2, 2, 0, 0, 2, 2, 0, 6, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 3, 8, 7, 8, 3, 7, 8, 7, 5, 8, 8, 5, 7, 5, 5, 3, 7, 7, 5, 7, 7, 5, 5, 7, 5, 1, 6, 4, 2, 2, 6, 6, 2, 6, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 5, 8, 7, 8, 3, 7, 7, 7, 1, 8, 8, 5, 5, 7, 7, 1, 7, 7, 7, 7, 7, 5, 3, 7, 7, 3, 7, 4, 2, 2, 6, 6, 2, 6, 2, 2, 2, 2, 2, 4, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 8, 8, 3, 8, 7, 7, 3, 7, 8, 3, 3, 5, 7, 1, 5, 7, 5, 7, 7, 5, 1, 5, 5, 1, 7, 2, 2, 2, 6, 6, 2, 4, 0, 0, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 5, 8, 7, 8, 3, 8, 8, 7, 3, 8, 8, 5, 7, 7, 7, 3, 7, 7, 7, 3, 7, 5, 1, 5, 7, 1, 7, 2, 2, 2, 6, 6, 2, 6, 0, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 3, 8, 7, 8, 3, 8, 7, 7, 3, 7, 8, 1, 5, 5, 7, 1, 7, 7, 7, 5, 3, 5, 1, 5, 5, 1, 7, 2, 2, 2, 6, 7, 2, 6, 2, 0, 2, 2, 0, 4, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 8, 5, 8, 8, 7, 3, 7, 8, 3, 3, 3, 3, 3, 3, 7, 3, 5, 1, 1, 1, 3, 5, 1, 6, 2, 2, 2, 6, 6, 2, 6, 4, 2, 2, 4, 4, 4, 2, 2, 0, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 5, 7, 7, 8, 3, 7, 8, 5, 3, 7, 8, 1, 5, 3, 5, 3, 3, 7, 5, 7, 5, 7, 1, 5, 5, 3, 7, 4, 2, 2, 6, 4, 2, 4, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 7, 5, 5, 5, 5, 8, 5, 3, 3, 5, 5, 5, 5, 7, 3, 7, 7, 7, 3, 5, 5, 5, 7, 5, 3, 7, 2, 2, 2, 2, 7, 4, 2, 6, 7, 6, 4, 4, 4, 2, 0, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 7, 7, 7, 7, 7, 8, 7, 3, 7, 8, 7, 8, 7, 7, 3, 7, 7, 3, 7, 7, 5, 7, 5, 7, 1, 7, 4, 2, 4, 2, 4, 2, 4, 4, 2, 2, 0, 4, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 7, 7, 8, 7, 7, 7, 7, 8, 7, 3, 7, 7, 7, 8, 5, 7, 1, 7, 7, 5, 7, 5, 3, 7, 5, 7, 1, 7, 4, 4, 7, 6, 6, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 7, 5, 7, 7, 7, 8, 7, 3, 7, 7, 7, 7, 7, 7, 1, 7, 7, 7, 7, 5, 3, 5, 3, 7, 1, 6, 2, 4, 6, 4, 4, 4, 6, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 7, 7, 8, 7, 7, 7, 5, 8, 7, 3, 7, 7, 5, 7, 7, 7, 1, 7, 5, 5, 7, 3, 3, 3, 5, 3, 1, 4, 4, 2, 6, 2, 6, 4, 6, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 8, 7, 7, 7, 7, 8, 7, 3, 7, 7, 3, 7, 7, 7, 3, 7, 5, 7, 3, 5, 3, 3, 5, 3, 1, 6, 2, 4, 4, 2, 6, 4, 6, 4, 4, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 8, 5, 7, 7, 7, 8, 5, 5, 7, 7, 5, 7, 1, 7, 1, 7, 7, 3, 1, 3, 3, 3, 3, 3, 1, 7, 2, 2, 6, 2, 6, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 7, 3, 5, 5, 7, 1, 5, 3, 3, 5, 7, 3, 5, 1, 5, 3, 3, 1, 3, 1, 1, 3, 5, 1, 4, 4, 2, 2, 4, 4, 2, 2, 4, 2, 4, 6, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 7, 5, 5, 7, 7, 7, 5, 5, 5, 5, 3, 7, 5, 7, 1, 3, 7, 5, 1, 3, 3, 3, 5, 3, 1, 6, 4, 2, 4, 4, 6, 4, 6, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 5, 7, 3, 7, 7, 5, 8, 7, 3, 7, 7, 7, 7, 3, 5, 5, 7, 7, 7, 1, 3, 3, 5, 5, 5, 5, 7, 6, 2, 4, 6, 4, 2, 2, 4, 4, 6, 6, 6, 2, 2, 2, 2, 4, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 7, 5, 8, 7, 5, 8, 8, 1, 7, 7, 7, 8, 5, 7, 5, 7, 8, 7, 7, 5, 5, 7, 1, 7, 7, 7, 6, 2, 2, 4, 6, 2, 2, 2, 2, 6, 4, 6, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 7, 7, 8, 8, 7, 8, 8, 3, 7, 7, 8, 8, 3, 7, 7, 7, 8, 7, 7, 7, 3, 7, 3, 7, 7, 7, 6, 4, 4, 4, 6, 2, 2, 2, 4, 4, 4, 4, 4, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 7, 5, 8, 8, 7, 7, 8, 3, 7, 7, 7, 7, 1, 7, 5, 7, 7, 7, 7, 5, 5, 7, 3, 7, 3, 4, 4, 2, 2, 7, 6, 4, 2, 4, 4, 6, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 7, 5, 9, 8, 7, 8, 8, 3, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 5, 3, 3, 7, 3, 5, 3, 4, 4, 4, 6, 6, 7, 2, 2, 4, 2, 4, 4, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 8, 7, 3, 8, 8, 7, 8, 8, 3, 7, 5, 8, 7, 5, 7, 7, 7, 7, 5, 7, 5, 3, 3, 5, 3, 5, 4, 4, 4, 4, 6, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 5, 7, 7, 5, 7, 7, 5, 5, 7, 7, 7, 7, 7, 1, 7, 7, 5, 5, 3, 3, 3, 1, 5, 3, 6, 4, 2, 7, 6, 6, 6, 4, 4, 4, 2, 6, 4, 6, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 8, 7, 7, 8, 7, 7, 7, 5, 7, 7, 5, 7, 5, 7, 7, 5, 7, 5, 7, 5, 3, 5, 3, 4, 4, 4, 6, 4, 6, 4, 4, 6, 4, 2, 4, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 7, 7, 7, 7, 7, 8, 8, 7, 5, 5, 7, 7, 5, 5, 5, 7, 7, 5, 5, 5, 7, 7, 5, 5, 5, 6, 6, 2, 4, 6, 4, 2, 2, 4, 2, 2, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 8, 7, 7, 7, 7, 5, 7, 5, 7, 7, 5, 7, 5, 7, 7, 7, 5, 5, 5, 5, 5, 5, 3, 7, 4, 2, 4, 6, 4, 2, 2, 4, 0, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 8, 7, 8, 7, 7, 7, 7, 7, 5, 7, 7, 1, 7, 5, 7, 7, 7, 5, 3, 5, 3, 1, 3, 7, 7, 6, 2, 4, 6, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 7, 7, 7, 7, 8, 7, 5, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 8, 7, 5, 7, 3, 7, 7, 5, 5, 5, 6, 4, 2, 4, 6, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 7, 7, 5, 5, 7, 5, 7, 5, 7, 7, 5, 5, 5, 1, 3, 5, 6, 4, 4, 4, 6, 4, 4, 2, 6, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 7, 7, 7, 7, 7, 7, 8, 5, 3, 7, 7, 7, 3, 3, 3, 7, 7, 7, 5, 3, 3, 3, 3, 3, 3, 2, 2, 2, 4, 4, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 7, 7, 5, 7, 5, 5, 7, 3, 5, 5, 7, 3, 1, 7, 3, 5, 5, 1, 5, 3, 3, 1, 1, 3, 3, 2, 2, 2, 4, 4, 4, 4, 6, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 7, 7, 5, 7, 5, 5, 7, 7, 5, 3, 7, 7, 8, 7, 3, 3, 5, 5, 5, 5, 3, 5, 6, 6, 6, 4, 2, 2, 6, 6, 7, 2, 4, 2, 6, 4, 2, 0, 0, 2, 4, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 8, 7, 7, 7, 8, 7, 7, 8, 7, 5, 1, 7, 7, 7, 7, 3, 3, 1, 7, 7, 3, 3, 7, 2, 4, 4, 6, 6, 2, 4, 6, 6, 4, 4, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 8, 8, 8, 7, 7, 7, 5, 7, 8, 7, 5, 3, 5, 7, 7, 7, 1, 1, 5, 7, 3, 5, 3, 5, 6, 4, 2, 4, 4, 2, 4, 6, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 5, 1, 3, 7, 7, 7, 1, 1, 3, 7, 5, 3, 1, 5, 2, 2, 4, 4, 6, 4, 4, 6, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 8, 7, 8, 7, 7, 7, 7, 7, 7, 8, 7, 3, 3, 7, 7, 7, 7, 1, 3, 3, 7, 5, 5, 3, 3, 2, 4, 2, 4, 4, 4, 6, 6, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 7, 5, 7, 7, 1, 1, 3, 5, 3, 5, 1, 3, 2, 4, 2, 4, 4, 4, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 5, 1, 5, 7, 7, 7, 1, 3, 5, 5, 1, 1, 5, 5, 2, 0, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 8, 7, 7, 5, 7, 7, 7, 7, 5, 5, 1, 7, 7, 7, 7, 1, 3, 1, 3, 1, 3, 3, 3, 6, 4, 2, 2, 2, 4, 2, 4, 4, 4, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 3, 5, 5, 5, 7, 5, 3, 5, 3, 3, 3, 5, 3, 5, 3, 5, 1, 5, 3, 1, 3, 5, 5, 6, 2, 2, 4, 4, 6, 2, 2, 2, 4, 4, 6, 2, 2, 2, 2, 4, 4, 4, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 7, 7, 8, 7, 7, 7, 5, 5, 7, 7, 3, 7, 3, 7, 7, 7, 5, 1, 1, 7, 7, 7, 5, 3, 2, 2, 2, 6, 4, 2, 0, 4, 6, 4, 0, 0, 2, 6, 2, 2, 4, 4, 2, 4, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 7, 8, 7, 7, 7, 5, 7, 7, 7, 3, 1, 5, 7, 7, 7, 3, 1, 3, 7, 7, 7, 5, 1, 2, 2, 2, 6, 4, 4, 2, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 8, 5, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 3, 5, 5, 7, 5, 3, 1, 5, 5, 5, 5, 3, 3, 2, 2, 2, 4, 4, 6, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 1, 5, 5, 5, 7, 7, 3, 3, 5, 5, 5, 5, 3, 3, 2, 2, 2, 2, 4, 6, 6, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 7, 7, 7, 7, 5, 7, 5, 5, 7, 7, 5, 5, 5, 3, 7, 5, 5, 1, 3, 1, 3, 5, 3, 1, 4, 2, 2, 4, 4, 6, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 5, 7, 7, 7, 7, 7, 7, 7, 3, 7, 5, 5, 3, 5, 3, 7, 5, 3, 5, 3, 3, 5, 3, 3, 2, 2, 2, 2, 4, 6, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 5, 7, 7, 7, 7, 7, 5, 7, 5, 7, 3, 3, 5, 5, 3, 5, 3, 1, 3, 5, 3, 5, 1, 1, 2, 2, 2, 4, 4, 2, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 5, 7, 7, 7, 1, 7, 5, 3, 5, 5, 3, 1, 5, 5, 7, 3, 1, 1, 3, 3, 1, 5, 1, 3, 2, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 7, 7, 7, 7, 5, 7, 5, 5, 5, 7, 1, 3, 3, 5, 3, 3, 3, 3, 1, 1, 1, 5, 1, 1, 2, 2, 4, 6, 4, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 3, 5, 7, 7, 7, 7, 7, 5, 3, 3, 5, 3, 1, 1, 1, 3, 1, 5, 3, 3, 5, 3, 3, 1, 2, 6, 4, 2, 7, 4, 2, 4, 4, 4, 4, 4, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 5, 5, 7, 7, 5, 5, 7, 5, 5, 5, 3, 3, 5, 1, 5, 5, 5, 5, 5, 5, 3, 5, 1, 1, 2, 4, 2, 4, 6, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 3, 5, 3, 5, 1, 1, 1, 3, 1, 3, 5, 3, 3, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 7, 5, 7, 7, 5, 5, 5, 3, 5, 5, 3, 1, 3, 5, 3, 3, 3, 3, 3, 5, 3, 1, 3, 2, 4, 4, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 5, 5, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, 2, 2, 4, 2, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 7, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 5, 2, 2, 2, 4, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 3, 7, 3, 5, 5, 7, 5, 3, 3, 5, 5, 1, 3, 1, 5, 3, 3, 1, 3, 5, 3, 1, 5, 4, 6, 2, 4, 4, 4, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 7, 7, 5, 7, 7, 7, 5, 5, 5, 3, 5, 7, 5, 7, 3, 5, 5, 5, 5, 5, 7, 5, 3, 3, 5, 6, 6, 4, 6, 6, 6, 6, 7, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 5, 7, 7, 7, 7, 5, 5, 7, 5, 5, 7, 7, 7, 5, 3, 1, 6, 4, 6, 6, 6, 2, 6, 7, 6, 6, 4, 6, 6, 2, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 3, 5, 7, 7, 7, 7, 7, 7, 7, 5, 1, 7, 7, 5, 5, 1, 1, 7, 2, 7, 6, 6, 2, 2, 4, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 7, 7, 3, 5, 1, 1, 4, 2, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 5, 7, 7, 5, 7, 7, 7, 7, 7, 7, 1, 5, 7, 3, 7, 1, 1, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 7, 7, 5, 1, 7, 3, 1, 5, 1, 1, 4, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 3, 7, 5, 7, 7, 7, 5, 1, 7, 3, 1, 5, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 3, 7, 7, 3, 7, 7, 7, 5, 7, 5, 1, 5, 5, 1, 3, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 7, 7, 3, 5, 7, 7, 5, 5, 3, 1, 5, 1, 3, 5, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 3, 5, 7, 3, 7, 3, 7, 3, 7, 5, 1, 3, 3, 1, 3, 1, 3, 2, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 7, 7, 3, 7, 7, 7, 5, 7, 3, 1, 1, 3, 1, 3, 3, 3, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 5, 7, 7, 3, 7, 5, 7, 3, 5, 3, 1, 3, 1, 1, 1, 1, 3, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 3, 7, 5, 7, 1, 5, 1, 1, 1, 1, 3, 1, 3, 3, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 7, 5, 8, 7, 5, 7, 7, 3, 7, 7, 7, 3, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 3, 7, 3, 3, 3, 1, 1, 3, 1, 1, 3, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 7, 7, 3, 5, 5, 7, 1, 1, 3, 1, 3, 1, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 5, 7, 7, 3, 5, 3, 7, 1, 3, 3, 3, 3, 3, 3, 1, 3, 1, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 1, 5, 3, 5, 3, 3, 1, 3, 1, 3, 3, 1, 3, 1, 2, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 7, 7, 5, 7, 7, 5, 5, 7, 1, 5, 3, 3, 3, 1, 3, 1, 3, 3, 3, 1, 3, 1, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 3, 5, 3, 3, 1, 3, 1, 1, 3, 1, 1, 1, 1, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 7, 5, 7, 7, 7, 5, 5, 7, 3, 5, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 9, 7, 7, 7, 7, 5, 7, 7, 5, 7, 7, 3, 3, 7, 5, 3, 3, 1, 3, 3, 1, 3, 1, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 3, 5, 5, 3, 3, 3, 3, 1, 1, 3, 1, 1, 3, 1, 1, 1, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 5, 3, 3, 3, 1, 3, 1, 1, 1, 3, 1, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 7, 5, 5, 7, 7, 3, 3, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 5, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 3, 3, 1, 3, 5, 1, 3, 1, 3, 3, 1, 1, 1, 3, 3, 3, 1, 4, 2, 6, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 3, 5, 7, 7, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 5, 7, 7, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 3, 3, 7, 5, 1, 3, 3, 3, 5, 3, 1, 5, 3, 5, 3, 1, 3, 3, 3, 3, 3, 4, 2, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 8, 5, 5, 5, 3, 7, 5, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 5, 3, 3, 3, 1, 1, 3, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 5, 7, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 7, 5, 5, 7, 5, 1, 3, 1, 5, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 3, 4, 2, 2, 4, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 5, 5, 7, 5, 1, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 7, 5, 3, 7, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 3, 3, 1, 1, 3, 3, 3, 3, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 3, 7, 3, 3, 7, 5, 1, 3, 5, 3, 3, 3, 5, 1, 3, 3, 3, 3, 3, 1, 1, 3, 3, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 7, 3, 3, 7, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 1, 3, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 5, 7, 5, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 5, 3, 7, 3, 3, 3, 5, 5, 3, 1, 3, 1, 1, 1, 3, 3, 3, 1, 3, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 5, 3, 3, 5, 5, 3, 3, 1, 3, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 9, 7, 7, 5, 7, 5, 5, 3, 5, 5, 3, 3, 3, 3, 3, 5, 1, 5, 3, 3, 3, 3, 3, 5, 1, 3, 3, 3, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 7, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 3, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 7, 7, 3, 3, 5, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 1, 3, 3, 3, 3, 3, 3, 3, 5, 5, 3, 3, 1, 3, 5, 1, 1, 3, 1, 1, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 3, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 5, 3, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 5, 3, 3, 5, 3, 3, 3, 1, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 3, 3, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 3, 3, 1, 4, 2, 2, 2, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 3, 5, 3, 5, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 3, 1, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 5, 3, 3, 1, 3, 3, 3, 5, 3, 1, 3, 1, 3, 3, 3, 1, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 5, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 3, 3, 5, 3, 5, 3, 3, 1, 3, 3, 3, 5, 3, 1, 5, 1, 3, 3, 1, 3, 1, 3, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 3, 1, 4, 2, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 7, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 5, 5, 3, 5, 3, 5, 3, 3, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 3, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 5, 3, 3, 5, 3, 3, 5, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 3, 3, 1, 1, 4, 2, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 3, 3, 5, 3, 5, 3, 3, 3, 3, 5, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 5, 5, 3, 3, 3, 3, 5, 3, 3, 3, 3, 5, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 5, 5, 5, 5, 3, 3, 3, 3, 5, 3, 1, 3, 5, 3, 1, 3, 3, 1, 1, 3, 3, 1, 3, 3, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 7, 7, 1, 3, 5, 1, 1, 5, 3, 3, 1, 3, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 5, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 7, 5, 1, 5, 3, 3, 1, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 7, 5, 7, 3, 3, 1, 3, 3, 1, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 3, 1, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 5, 3, 1, 3, 3, 3, 3, 3, 5, 3, 1, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 3, 2, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 3, 3, 1, 5, 3, 3, 3, 3, 1, 3, 5, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 1, 1, 3, 3, 1, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, 3, 1, 1, 3, 3, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3, 1, 1, 5, 3, 3, 3, 1, 3, 3, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 8, 3, 5, 7, 7, 1, 7, 3, 3, 3, 3, 1, 1, 1, 1, 3, 5, 3, 1, 5, 3, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 7, 7, 7, 7, 7, 7, 5, 7, 8, 3, 3, 7, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 8, 5, 5, 7, 5, 1, 7, 5, 3, 5, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 8, 7, 7, 7, 7, 5, 7, 5, 1, 7, 3, 3, 5, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 8, 7, 7, 7, 7, 7, 5, 7, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 3, 1, 1, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 3, 1, 5, 3, 1, 3, 3, 1, 3, 5, 3, 3, 1, 1, 1, 3, 3, 5, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 7, 5, 3, 5, 5, 1, 7, 3, 3, 3, 3, 1, 1, 3, 5, 3, 3, 1, 1, 1, 5, 3, 2, 2, 2, 2, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 1, 7, 7, 7, 1, 8, 7, 3, 7, 5, 7, 7, 5, 5, 7, 1, 1, 2, 6, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 4, 4, 2, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 7, 7, 7, 8, 7, 8, 7, 7, 7, 7, 7, 5, 3, 7, 7, 3, 3, 7, 7, 7, 5, 7, 7, 1, 1, 2, 2, 2, 2, 2, 4, 2, 6, 4, 6, 4, 2, 6, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 8, 7, 8, 7, 8, 8, 7, 7, 8, 7, 7, 3, 7, 5, 1, 5, 7, 7, 7, 5, 7, 7, 1, 1, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 6, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 8, 7, 8, 8, 7, 3, 7, 7, 7, 1, 7, 5, 1, 7, 7, 7, 7, 3, 7, 5, 1, 3, 2, 4, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 7, 7, 7, 7, 8, 5, 3, 7, 7, 7, 1, 7, 5, 3, 5, 7, 7, 5, 5, 5, 7, 1, 3, 2, 6, 2, 4, 2, 2, 4, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 7, 8, 7, 8, 8, 7, 3, 8, 7, 5, 3, 7, 5, 1, 3, 5, 5, 7, 3, 3, 5, 3, 3, 2, 6, 2, 2, 2, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 7, 7, 8, 7, 7, 7, 7, 5, 7, 7, 7, 1, 7, 5, 1, 5, 5, 5, 7, 3, 5, 7, 1, 3, 2, 4, 4, 2, 2, 2, 4, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 7, 7, 7, 7, 5, 5, 7, 3, 3, 5, 5, 3, 3, 7, 3, 3, 3, 1, 3, 5, 5, 3, 5, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 5, 8, 3, 5, 7, 5, 5, 7, 3, 5, 1, 7, 3, 1, 1, 3, 5, 7, 5, 3, 5, 1, 1, 2, 4, 4, 4, 2, 2, 2, 6, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 5, 3, 1, 7, 7, 3, 1, 7, 7, 7, 1, 1, 5, 1, 3, 6, 2, 7, 4, 4, 6, 2, 2, 0, 2, 6, 4, 6, 4, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 7, 7, 1, 3, 7, 5, 7, 1, 5, 7, 5, 5, 4, 2, 7, 4, 2, 2, 2, 6, 0, 2, 7, 6, 4, 2, 4, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 8, 8, 7, 7, 7, 7, 5, 7, 8, 7, 5, 3, 8, 7, 3, 3, 5, 7, 7, 5, 7, 7, 7, 3, 4, 2, 4, 2, 6, 4, 2, 2, 2, 2, 6, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 7, 7, 7, 3, 7, 7, 1, 5, 3, 3, 7, 3, 5, 7, 5, 3, 4, 2, 6, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 7, 3, 5, 5, 5, 1, 5, 5, 5, 1, 1, 5, 3, 1, 3, 5, 5, 7, 5, 3, 3, 1, 1, 4, 4, 4, 2, 4, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 5, 5, 3, 5, 5, 5, 5, 1, 7, 7, 1, 1, 3, 5, 5, 3, 3, 3, 1, 1, 2, 2, 4, 2, 2, 4, 4, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 5, 7, 7, 3, 1, 7, 7, 1, 3, 7, 5, 7, 1, 3, 5, 1, 3, 6, 4, 6, 4, 6, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 7, 5, 7, 7, 5, 7, 8, 3, 3, 7, 7, 5, 3, 7, 7, 5, 7, 5, 3, 7, 3, 5, 5, 7, 3, 6, 2, 6, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 5, 3, 5, 7, 7, 5, 3, 7, 7, 7, 7, 5, 3, 7, 5, 5, 3, 5, 1, 6, 2, 6, 4, 4, 2, 2, 4, 2, 4, 6, 4, 4, 6, 4, 2, 2, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 7, 5, 5, 3, 3, 1, 4, 2, 6, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 7, 5, 3, 5, 7, 5, 3, 5, 3, 7, 3, 5, 5, 3, 1, 4, 2, 6, 4, 4, 4, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 7, 7, 5, 5, 5, 7, 7, 7, 5, 7, 7, 5, 7, 7, 5, 3, 5, 5, 5, 7, 5, 5, 5, 5, 3, 4, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 7, 5, 7, 5, 5, 7, 7, 3, 7, 5, 3, 5, 5, 3, 4, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 7, 5, 7, 7, 5, 5, 7, 5, 5, 3, 7, 7, 5, 5, 7, 3, 7, 3, 3, 1, 3, 1, 4, 2, 6, 4, 4, 4, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 8, 5, 7, 7, 7, 7, 7, 5, 5, 7, 5, 3, 1, 3, 5, 3, 7, 5, 3, 7, 3, 3, 7, 3, 1, 4, 2, 6, 4, 2, 2, 4, 4, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 5, 5, 7, 7, 7, 7, 5, 5, 5, 5, 3, 1, 1, 5, 1, 5, 5, 3, 7, 3, 5, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 7, 7, 5, 7, 5, 5, 1, 5, 7, 3, 3, 5, 5, 3, 7, 5, 3, 7, 3, 3, 5, 3, 1, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 7, 7, 5, 7, 5, 5, 7, 7, 5, 3, 5, 7, 5, 7, 5, 1, 7, 5, 5, 3, 3, 1, 4, 2, 4, 2, 2, 2, 4, 4, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 5, 5, 1, 5, 3, 5, 5, 5, 1, 7, 3, 5, 5, 5, 3, 4, 2, 6, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 3, 3, 5, 5, 3, 1, 5, 5, 5, 5, 5, 3, 7, 5, 5, 5, 3, 3, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 5, 3, 1, 5, 5, 5, 5, 3, 7, 3, 3, 3, 3, 1, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 5, 7, 7, 5, 7, 5, 3, 5, 7, 5, 1, 3, 3, 5, 1, 3, 3, 1, 5, 3, 1, 1, 3, 5, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 7, 7, 3, 7, 5, 3, 3, 7, 3, 3, 3, 1, 1, 1, 5, 5, 1, 3, 1, 1, 1, 3, 5, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 7, 5, 1, 1, 5, 3, 3, 5, 5, 5, 7, 5, 3, 5, 1, 5, 6, 2, 2, 6, 2, 2, 4, 4, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 3, 8, 8, 7, 8, 7, 7, 7, 7, 7, 5, 1, 7, 1, 1, 3, 3, 3, 7, 5, 1, 3, 1, 5, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 8, 5, 7, 5, 5, 7, 7, 7, 3, 1, 3, 1, 1, 3, 3, 3, 3, 3, 1, 3, 1, 3, 4, 2, 4, 2, 2, 2, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 8, 5, 7, 7, 7, 7, 7, 5, 5, 1, 5, 3, 1, 1, 3, 3, 5, 3, 3, 1, 3, 3, 2, 2, 4, 4, 4, 2, 4, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 8, 5, 7, 7, 7, 5, 7, 5, 3, 1, 3, 1, 1, 3, 5, 3, 5, 3, 3, 3, 1, 3, 4, 2, 4, 4, 2, 2, 4, 4, 4, 4, 2, 2, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 5, 7, 8, 5, 7, 7, 7, 7, 7, 5, 3, 1, 3, 1, 1, 1, 1, 1, 5, 1, 1, 3, 1, 5, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 7, 5, 8, 7, 7, 7, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 5, 3, 3, 3, 1, 3, 3, 3, 3, 4, 2, 2, 6, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 7, 5, 7, 7, 3, 3, 1, 3, 1, 5, 5, 1, 3, 3, 1, 1, 3, 3, 3, 1, 3, 3, 5, 1, 1, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 5, 7, 7, 5, 7, 7, 5, 5, 7, 7, 1, 3, 3, 1, 3, 5, 7, 7, 3, 3, 5, 5, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 3, 5, 7, 7, 5, 5, 7, 7, 5, 3, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 8, 7, 7, 7, 8, 5, 7, 7, 7, 3, 5, 7, 3, 3, 1, 3, 5, 3, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 8, 7, 7, 8, 7, 7, 7, 7, 7, 1, 5, 5, 1, 1, 5, 5, 5, 1, 1, 3, 5, 1, 1, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 3, 5, 1, 1, 3, 7, 5, 5, 1, 3, 5, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 8, 7, 7, 7, 7, 5, 7, 5, 7, 1, 3, 5, 1, 1, 3, 3, 3, 1, 1, 3, 5, 1, 1, 2, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 8, 5, 7, 7, 7, 3, 5, 5, 7, 1, 3, 5, 1, 1, 3, 3, 3, 1, 1, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 1, 5, 3, 3, 1, 3, 3, 1, 3, 3, 7, 3, 1, 3, 3, 3, 1, 1, 2, 2, 4, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 7, 7, 3, 1, 1, 5, 3, 3, 1, 3, 1, 3, 1, 3, 3, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 5, 1, 1, 5, 1, 3, 5, 3, 5, 1, 3, 3, 3, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 5, 7, 7, 3, 5, 5, 5, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 7, 3, 1, 3, 1, 1, 3, 5, 1, 1, 1, 3, 3, 3, 3, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 8, 7, 7, 7, 7, 3, 5, 7, 5, 1, 1, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -7, 7, 7, 5, 8, 7, 8, 5, 7, 7, 7, 1, 5, 5, 3, 1, 3, 5, 1, 1, 3, 3, 1, 3, 1, 1, 1, 3, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 7, 7, 7, 7, 7, 3, 5, 5, 5, 1, 3, 5, 3, 3, 3, 3, 1, 3, 3, 5, 1, 3, 3, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 1, 3, 5, 3, 3, 1, 1, 1, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 5, 5, 7, 7, 1, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 5, 7, 7, 7, 7, 7, 7, 7, 1, 3, 1, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 5, 2, 2, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 5, 7, 7, 7, 1, 3, 3, 3, 1, 1, 1, 3, 1, 1, 3, 3, 1, 3, 1, 1, 1, 1, 4, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 7, 7, 7, 7, 3, 7, 7, 1, 5, 3, 3, 3, 1, 5, 1, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -7, 8, 8, 7, 7, 7, 7, 5, 3, 7, 7, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 9, 8, 3, 7, 7, 7, 7, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 1, 2, 2, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 3, 3, 3, 3, 3, 7, 3, 5, 5, 3, 5, 1, 1, 5, 3, 3, 3, 1, 3, 3, 3, 5, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 7, 7, 5, 3, 3, 5, 3, 7, 7, 3, 7, 5, 3, 5, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 9, 8, 5, 7, 5, 7, 5, 3, 3, 3, 5, 5, 5, 5, 3, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 3, 1, 4, 4, 4, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 3, 5, 3, 7, 1, 3, 3, 1, 3, 1, 3, 5, 3, 1, 3, 3, 1, 5, 3, 5, 3, 3, 1, 1, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 5, 3, 3, 1, 1, 1, 3, 5, 3, 1, 3, 3, 3, 1, 3, 3, 1, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 5, 5, 5, 5, 5, 3, 3, 5, 5, 5, 3, 5, 3, 1, 1, 3, 3, 3, 3, 3, 5, 3, 1, 5, 3, 5, 1, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 5, 7, 7, 5, 7, 5, 3, 7, 5, 5, 1, 5, 5, 3, 5, 1, 5, 5, 3, 1, 3, 3, 1, 5, 1, 5, 1, 2, 2, 4, 6, 6, 2, 2, 2, 6, 4, 4, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 5, 7, 7, 7, 5, 7, 3, 7, 7, 5, 1, 7, 5, 1, 3, 3, 5, 5, 7, 3, 5, 5, 1, 5, 1, 7, 1, 2, 2, 4, 6, 6, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 3, 3, 7, 7, 7, 7, 7, 5, 5, 7, 7, 5, 7, 7, 3, 5, 3, 5, 5, 7, 3, 1, 5, 1, 7, 1, 7, 1, 2, 2, 6, 7, 6, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 3, 7, 8, 5, 7, 5, 7, 7, 7, 5, 5, 5, 7, 3, 5, 3, 7, 5, 7, 3, 3, 7, 3, 5, 5, 7, 1, 2, 2, 4, 4, 4, 6, 2, 2, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 5, 7, 7, 7, 7, 7, 7, 5, 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 5, 5, 1, 3, 3, 5, 3, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 8, 7, 7, 7, 7, 7, 7, 3, 5, 7, 7, 3, 3, 5, 5, 1, 7, 5, 1, 3, 1, 3, 1, 3, 1, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 5, 7, 7, 5, 7, 7, 7, 3, 3, 3, 5, 3, 7, 1, 1, 3, 1, 3, 1, 3, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 5, 5, 7, 5, 7, 7, 5, 3, 7, 5, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 1, 1, 3, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 5, 3, 7, 7, 5, 3, 5, 5, 1, 1, 1, 1, 7, 3, 3, 1, 5, 1, 1, 3, 1, 1, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 3, 7, 7, 7, 7, 5, 5, 5, 7, 5, 5, 5, 7, 5, 7, 5, 7, 7, 7, 3, 1, 5, 1, 1, 3, 5, 3, 6, 7, 2, 4, 4, 2, 6, 4, 6, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 7, 7, 7, 7, 3, 7, 7, 5, 3, 7, 5, 5, 5, 7, 5, 7, 5, 5, 1, 7, 5, 1, 1, 5, 1, 2, 4, 2, 2, 6, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 7, 7, 7, 7, 5, 7, 7, 7, 3, 7, 7, 5, 7, 7, 5, 5, 7, 1, 1, 5, 1, 1, 1, 5, 1, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 1, 7, 7, 7, 7, 7, 7, 5, 7, 5, 3, 5, 7, 3, 5, 3, 3, 1, 5, 1, 1, 1, 1, 1, 1, 1, 3, 2, 4, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 7, 7, 5, 5, 5, 5, 5, 3, 3, 5, 5, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 5, 4, 4, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 5, 3, 5, 5, 7, 7, 5, 5, 7, 5, 3, 7, 1, 1, 1, 3, 3, 1, 1, 3, 1, 3, 1, 3, 4, 2, 2, 2, 4, 2, 4, 4, 2, 2, 4, 2, 6, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 3, 5, 5, 3, 3, 1, 3, 1, 1, 3, 3, 5, 3, 3, 1, 3, 1, 3, 1, 1, 3, 3, 3, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 7, 7, 5, 5, 3, 5, 5, 3, 3, 3, 5, 5, 3, 3, 5, 1, 3, 1, 3, 1, 1, 1, 3, 3, 1, 4, 4, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 3, 7, 7, 3, 3, 5, 7, 1, 3, 3, 1, 3, 3, 3, 3, 1, 5, 5, 3, 3, 3, 3, 3, 1, 4, 2, 4, 2, 2, 2, 4, 2, 4, 2, 4, 4, 4, 4, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 1, 7, 5, 7, 7, 7, 3, 5, 7, 7, 1, 5, 7, 3, 5, 3, 7, 7, 1, 5, 1, 5, 3, 1, 3, 3, 5, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 5, 7, 7, 7, 5, 7, 7, 5, 1, 3, 7, 3, 1, 5, 7, 5, 7, 5, 1, 3, 1, 3, 1, 1, 3, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 3, 5, 7, 3, 3, 3, 5, 1, 1, 3, 3, 5, 1, 1, 1, 1, 1, 1, 1, 3, 5, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 3, 3, 7, 7, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 1, 1, 3, 1, 1, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 5, 5, 7, 7, 5, 3, 3, 1, 5, 3, 3, 1, 3, 5, 3, 3, 1, 1, 3, 1, 1, 4, 2, 4, 2, 4, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 3, 7, 7, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 7, 7, 7, 3, 7, 7, 5, 5, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 3, 1, 3, 4, 4, 2, 2, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 5, 5, 5, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 5, 3, 3, 3, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 7, 5, 5, 3, 3, 1, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 3, 5, 3, 3, 1, 3, 2, 2, 2, 2, 4, 4, 2, 2, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 8, 5, 7, 7, 5, 5, 7, 5, 3, 3, 5, 5, 7, 5, 7, 1, 3, 5, 3, 7, 5, 5, 3, 7, 3, 6, 6, 6, 2, 4, 2, 6, 4, 6, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 3, 3, 7, 3, 7, 7, 7, 5, 7, 5, 5, 7, 5, 5, 5, 7, 5, 6, 7, 6, 2, 4, 4, 6, 4, 6, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 3, 7, 7, 5, 7, 7, 7, 3, 7, 7, 5, 7, 1, 3, 3, 7, 1, 6, 6, 4, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 5, 7, 3, 7, 7, 7, 3, 3, 5, 5, 7, 3, 3, 5, 3, 1, 4, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 3, 1, 3, 7, 3, 5, 7, 7, 3, 7, 7, 1, 7, 1, 3, 3, 3, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 3, 3, 5, 3, 7, 5, 7, 3, 7, 7, 3, 7, 1, 1, 5, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 8, 7, 7, 7, 7, 7, 7, 3, 3, 3, 7, 3, 7, 7, 7, 1, 5, 5, 1, 7, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 7, 3, 7, 7, 5, 5, 5, 7, 3, 7, 7, 7, 3, 5, 5, 1, 7, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 1, 5, 7, 3, 5, 7, 7, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 3, 3, 5, 7, 5, 3, 7, 7, 5, 7, 3, 7, 7, 5, 5, 3, 1, 3, 3, 5, 1, 3, 2, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 3, 7, 7, 7, 7, 7, 5, 7, 7, 5, 7, 3, 7, 3, 7, 3, 7, 7, 5, 5, 1, 1, 3, 5, 1, 1, 1, 4, 4, 2, 2, 2, 4, 2, 2, 6, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 3, 3, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 5, 3, 5, 5, 5, 7, 3, 5, 1, 1, 1, 5, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 1, 7, 7, 5, 7, 7, 5, 7, 7, 5, 3, 5, 5, 3, 5, 3, 5, 7, 1, 1, 1, 3, 1, 5, 1, 1, 3, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 3, 7, 7, 7, 5, 5, 5, 3, 5, 1, 3, 3, 5, 3, 3, 3, 3, 1, 1, 1, 1, 1, 3, 3, 1, 3, 3, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 1, 7, 7, 5, 5, 7, 3, 7, 7, 3, 3, 5, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 7, 5, 7, 3, 5, 5, 3, 5, 1, 3, 3, 1, 3, 3, 5, 1, 1, 1, 3, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 5, 3, 3, 3, 1, 3, 3, 1, 1, 3, 3, 1, 3, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 5, 3, 7, 7, 5, 3, 8, 5, 3, 3, 7, 5, 3, 5, 3, 7, 7, 5, 5, 5, 1, 3, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 8, 7, 7, 7, 7, 5, 1, 7, 7, 3, 5, 8, 5, 3, 5, 5, 5, 7, 3, 5, 5, 3, 1, 6, 4, 4, 6, 4, 4, 7, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 8, 7, 7, 7, 7, 8, 5, 1, 7, 5, 3, 5, 7, 5, 3, 3, 3, 5, 5, 5, 5, 5, 1, 1, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 8, 7, 7, 7, 8, 3, 1, 7, 5, 3, 3, 7, 5, 1, 3, 3, 7, 7, 5, 5, 3, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 5, 3, 3, 3, 7, 3, 1, 1, 5, 5, 5, 5, 3, 3, 3, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 3, 3, 5, 3, 1, 5, 7, 3, 3, 3, 3, 5, 5, 1, 3, 3, 1, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 8, 7, 7, 7, 7, 5, 5, 7, 5, 5, 3, 7, 5, 3, 3, 5, 7, 7, 1, 3, 3, 1, 5, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 5, 7, 3, 3, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 4, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 1, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 5, 5, 3, 5, 3, 3, 3, 3, 1, 3, 3, 5, 3, 3, 3, 3, 5, 3, 1, 1, 5, 3, 4, 6, 2, 4, 6, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 3, 5, 5, 5, 3, 3, 3, 3, 3, 5, 3, 3, 1, 1, 1, 3, 1, 3, 1, 3, 1, 4, 6, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 3, 1, 3, 5, 3, 3, 3, 3, 3, 5, 1, 3, 1, 3, 1, 3, 3, 1, 2, 4, 4, 4, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 3, 5, 5, 3, 3, 3, 3, 1, 5, 3, 5, 1, 3, 1, 1, 3, 3, 3, 1, 3, 1, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 8, 7, 3, 5, 7, 3, 3, 3, 5, 1, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 2, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 8, 7, 5, 5, 7, 3, 3, 3, 3, 3, 3, 5, 3, 1, 1, 1, 1, 3, 1, 3, 3, 3, 3, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 5, 5, 3, 5, 7, 3, 5, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 1, 3, 3, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 3, 7, 7, 5, 3, 3, 5, 3, 1, 5, 3, 1, 1, 1, 1, 3, 3, 3, 3, 1, 3, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 5, 5, 7, 7, 5, 5, 5, 5, 1, 3, 1, 3, 7, 5, 3, 3, 1, 3, 5, 3, 5, 5, 1, 1, 4, 4, 2, 6, 2, 2, 2, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 8, 5, 5, 5, 5, 5, 5, 5, 3, 7, 1, 3, 7, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 1, 2, 7, 4, 4, 4, 2, 6, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 5, 7, 7, 7, 5, 7, 5, 5, 1, 3, 5, 3, 3, 7, 3, 5, 3, 3, 1, 3, 3, 1, 1, 1, 1, 2, 6, 4, 4, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 5, 3, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 1, 3, 2, 4, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 3, 5, 3, 7, 5, 3, 3, 5, 1, 1, 5, 3, 1, 5, 3, 3, 3, 3, 3, 3, 3, 1, 2, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 3, 5, 7, 7, 7, 3, 5, 7, 7, 5, 3, 5, 7, 3, 1, 5, 3, 3, 3, 1, 1, 3, 1, 3, 3, 1, 3, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 7, 5, 5, 5, 3, 3, 5, 3, 1, 3, 5, 5, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 1, 5, 3, 3, 1, 3, 1, 3, 3, 1, 3, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 5, 5, 5, 5, 5, 7, 5, 5, 1, 3, 1, 5, 5, 5, 1, 1, 3, 1, 3, 3, 5, 3, 3, 3, 3, 4, 2, 4, 2, 4, 4, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 5, 3, 5, 3, 5, 3, 3, 5, 1, 7, 5, 3, 7, 7, 3, 5, 7, 5, 3, 1, 7, 3, 4, 6, 2, 4, 4, 4, 6, 2, 2, 2, 4, 6, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 1, 5, 5, 3, 1, 3, 5, 1, 5, 3, 5, 3, 5, 7, 1, 7, 1, 5, 3, 7, 3, 6, 6, 2, 6, 2, 4, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 5, 7, 7, 5, 3, 5, 7, 3, 7, 1, 3, 3, 5, 1, 1, 7, 3, 3, 3, 5, 3, 4, 6, 2, 4, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 3, 5, 3, 4, 6, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 5, 5, 7, 7, 5, 8, 7, 5, 5, 7, 3, 5, 7, 5, 3, 7, 5, 5, 3, 1, 5, 5, 3, 3, 4, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 5, 5, 7, 7, 3, 3, 5, 5, 3, 5, 3, 1, 3, 1, 3, 3, 1, 1, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 5, 7, 7, 5, 5, 5, 7, 3, 3, 5, 5, 5, 7, 5, 1, 3, 1, 1, 5, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 7, 7, 3, 7, 7, 3, 5, 7, 5, 3, 5, 3, 5, 5, 7, 3, 3, 3, 1, 3, 5, 3, 1, 2, 2, 2, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 3, 7, 7, 7, 3, 1, 5, 3, 3, 5, 3, 1, 5, 3, 1, 5, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 3, 3, 7, 5, 5, 3, 5, 1, 5, 7, 5, 3, 7, 3, 5, 5, 5, 3, 1, 3, 1, 4, 6, 2, 4, 4, 2, 4, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 5, 7, 7, 3, 5, 3, 7, 5, 7, 7, 7, 3, 5, 3, 1, 7, 3, 1, 3, 5, 3, 6, 7, 2, 2, 4, 2, 7, 4, 6, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 7, 5, 7, 5, 7, 7, 7, 5, 5, 7, 3, 7, 7, 7, 1, 7, 5, 3, 5, 3, 3, 3, 3, 3, 6, 7, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 7, 3, 7, 7, 3, 7, 7, 3, 7, 7, 7, 7, 7, 7, 7, 1, 5, 1, 1, 5, 1, 1, 3, 5, 1, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 5, 5, 3, 5, 7, 3, 5, 5, 5, 3, 3, 5, 7, 7, 5, 5, 5, 5, 3, 7, 3, 1, 3, 6, 6, 6, 4, 2, 2, 6, 2, 4, 2, 4, 2, 6, 4, 6, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 7, 7, 5, 7, 7, 7, 7, 3, 7, 5, 5, 1, 3, 5, 7, 7, 5, 7, 5, 7, 1, 7, 1, 3, 1, 4, 7, 6, 4, 2, 2, 2, 2, 4, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 5, 7, 7, 7, 7, 3, 3, 7, 7, 3, 7, 7, 7, 5, 1, 5, 7, 5, 5, 3, 5, 5, 1, 7, 3, 1, 3, 4, 7, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 7, 7, 3, 5, 5, 5, 3, 3, 3, 5, 5, 1, 3, 3, 5, 7, 1, 3, 5, 5, 5, 1, 1, 1, 1, 2, 4, 4, 2, 2, 4, 4, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 5, 5, 7, 7, 7, 3, 7, 5, 5, 3, 3, 5, 1, 3, 3, 5, 5, 3, 1, 1, 3, 3, 1, 1, 1, 3, 4, 6, 4, 4, 2, 2, 4, 4, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 5, 3, 3, 5, 3, 3, 1, 5, 3, 1, 1, 1, 3, 1, 3, 1, 1, 1, 4, 6, 4, 4, 2, 2, 2, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 5, 1, 5, 5, 1, 5, 3, 7, 5, 3, 1, 1, 1, 1, 1, 1, 3, 1, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 7, 7, 7, 5, 7, 7, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 1, 5, 1, 1, 1, 1, 3, 2, 4, 4, 4, 2, 4, 2, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 5, 5, 7, 5, 5, 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 3, 3, 1, 3, 3, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 5, 3, 3, 3, 3, 3, 1, 5, 3, 3, 1, 1, 1, 1, 1, 3, 3, 3, 1, 4, 2, 4, 2, 2, 4, 2, 2, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 5, 7, 7, 5, 1, 3, 5, 5, 1, 3, 3, 1, 3, 1, 1, 1, 3, 1, 3, 3, 1, 4, 6, 4, 4, 4, 4, 2, 2, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 7, 7, 5, 7, 7, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 1, 3, 3, 3, 3, 3, 6, 2, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 3, 5, 3, 3, 3, 1, 3, 1, 3, 1, 3, 3, 3, 3, 5, 3, 5, 3, 3, 5, 5, 3, 3, 5, 4, 2, 6, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 3, 5, 7, 5, 3, 3, 3, 3, 7, 5, 7, 3, 5, 7, 1, 7, 1, 7, 3, 5, 1, 6, 7, 6, 6, 2, 2, 4, 4, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 5, 7, 7, 7, 1, 3, 7, 5, 5, 7, 7, 3, 5, 3, 5, 7, 3, 7, 1, 5, 5, 4, 7, 4, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 8, 7, 8, 7, 7, 7, 7, 5, 1, 3, 7, 3, 7, 7, 7, 7, 7, 5, 1, 7, 1, 7, 1, 1, 1, 2, 6, 4, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 7, 3, 7, 7, 7, 3, 3, 3, 3, 7, 1, 7, 3, 5, 3, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 7, 7, 7, 7, 7, 7, 7, 5, 1, 3, 7, 3, 5, 5, 7, 3, 5, 3, 3, 5, 1, 5, 1, 1, 3, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 5, 7, 5, 5, 7, 7, 3, 5, 3, 1, 5, 1, 7, 3, 3, 5, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 3, 7, 7, 7, 7, 7, 3, 7, 7, 5, 3, 5, 5, 1, 3, 7, 5, 1, 5, 3, 3, 5, 1, 3, 1, 1, 5, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 3, 7, 7, 5, 3, 3, 7, 1, 5, 7, 5, 1, 3, 3, 3, 3, 3, 3, 1, 1, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 3, 7, 3, 8, 8, 3, 7, 8, 3, 7, 7, 3, 7, 8, 5, 7, 3, 7, 5, 1, 7, 7, 1, 2, 6, 7, 6, 0, 4, 6, 0, 4, 2, 4, 2, 4, 4, 0, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 5, 8, 1, 8, 8, 1, 7, 8, 1, 7, 7, 3, 7, 8, 1, 7, 3, 3, 7, 1, 7, 7, 1, 2, 2, 4, 4, 0, 2, 6, 0, 2, 2, 6, 4, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 8, 8, 3, 7, 9, 1, 8, 7, 1, 7, 8, 1, 8, 7, 1, 7, 8, 3, 7, 1, 7, 7, 1, 7, 7, 3, 2, 2, 6, 6, 0, 2, 6, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 3, 7, 7, 3, 7, 7, 1, 7, 8, 1, 7, 7, 3, 8, 7, 3, 7, 1, 5, 7, 3, 7, 7, 3, 2, 7, 6, 6, 2, 4, 7, 2, 2, 4, 2, 2, 0, 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 8, 5, 8, 7, 1, 7, 8, 1, 7, 7, 1, 7, 7, 1, 7, 1, 3, 5, 1, 5, 7, 1, 4, 6, 7, 6, 0, 6, 6, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 5, 7, 8, 3, 7, 7, 1, 7, 7, 1, 7, 5, 1, 7, 7, 7, 7, 3, 5, 5, 1, 7, 5, 1, 4, 6, 7, 6, 2, 4, 6, 2, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 7, 7, 5, 7, 7, 5, 8, 3, 7, 3, 7, 7, 7, 7, 7, 5, 3, 5, 1, 5, 5, 3, 7, 4, 7, 2, 6, 6, 4, 6, 2, 6, 0, 2, 2, 4, 2, 4, 0, 4, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 3, 7, 7, 5, 7, 7, 3, 5, 7, 1, 7, 5, 7, 7, 7, 5, 7, 5, 1, 7, 1, 5, 1, 1, 4, 4, 6, 2, 6, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 7, 5, 8, 5, 7, 3, 7, 5, 7, 7, 3, 7, 1, 7, 7, 5, 7, 1, 7, 3, 7, 7, 7, 5, 0, 7, 2, 7, 2, 6, 0, 2, 2, 0, 2, 2, 2, 2, 6, 2, 6, 0, 6, 0, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 5, 7, 5, 8, 3, 7, 7, 7, 7, 3, 7, 3, 7, 7, 5, 7, 5, 7, 1, 7, 5, 5, 3, 1, 7, 2, 7, 2, 7, 2, 4, 4, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 3, 7, 5, 7, 8, 5, 8, 3, 7, 7, 7, 8, 3, 7, 3, 7, 7, 7, 7, 3, 5, 3, 7, 3, 3, 5, 1, 6, 4, 7, 2, 4, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 8, 7, 8, 5, 7, 8, 3, 7, 3, 7, 5, 7, 5, 7, 7, 5, 5, 3, 7, 5, 3, 5, 1, 6, 4, 7, 2, 6, 2, 4, 4, 2, 2, 6, 0, 0, 4, 0, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 8, 5, 8, 7, 7, 7, 7, 7, 3, 7, 5, 7, 5, 3, 8, 5, 7, 3, 7, 5, 3, 3, 0, 7, 2, 7, 2, 6, 2, 2, 2, 2, 2, 2, 0, 0, 4, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 5, 7, 7, 7, 7, 5, 7, 1, 5, 7, 7, 7, 3, 7, 3, 7, 7, 5, 7, 3, 5, 3, 7, 5, 3, 3, 1, 4, 2, 6, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 5, 5, 3, 5, 7, 7, 7, 1, 7, 5, 5, 5, 3, 7, 1, 1, 7, 5, 3, 5, 3, 1, 6, 2, 6, 2, 2, 2, 2, 4, 2, 0, 2, 6, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 5, 7, 5, 7, 7, 7, 7, 5, 7, 3, 8, 1, 7, 1, 7, 5, 7, 7, 5, 7, 3, 5, 1, 7, 1, 2, 0, 6, 2, 6, 2, 0, 0, 4, 2, 0, 2, 4, 4, 6, 0, 6, 2, 4, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 7, 7, 3, 7, 5, 3, 7, 3, 7, 3, 5, 5, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 1, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 7, 3, 7, 7, 3, 3, 3, 5, 1, 3, 3, 5, 1, 3, 5, 3, 3, 1, 3, 3, 7, 3, 6, 4, 6, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 8, 7, 7, 7, 8, 3, 7, 7, 3, 7, 3, 7, 3, 5, 3, 1, 3, 5, 3, 1, 3, 1, 3, 3, 5, 1, 4, 4, 6, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 5, 7, 7, 7, 7, 8, 5, 7, 5, 3, 3, 3, 7, 3, 5, 3, 5, 3, 5, 3, 1, 3, 1, 3, 3, 5, 1, 4, 2, 6, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 7, 5, 7, 5, 3, 5, 3, 5, 1, 1, 3, 3, 3, 5, 3, 1, 3, 1, 3, 1, 5, 1, 2, 4, 6, 4, 6, 6, 4, 6, 4, 4, 4, 6, 4, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 5, 7, 7, 7, 7, 1, 3, 1, 7, 3, 3, 5, 5, 1, 5, 3, 1, 3, 3, 3, 3, 5, 1, 2, 4, 6, 2, 6, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 8, 3, 7, 7, 1, 7, 3, 7, 1, 3, 3, 5, 3, 3, 1, 1, 1, 1, 3, 1, 7, 3, 4, 2, 6, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 7, 7, 5, 7, 8, 7, 7, 7, 7, 3, 7, 7, 3, 7, 1, 7, 1, 7, 3, 0, 3, 0, 7, 2, 7, 2, 6, 6, 2, 4, 0, 2, 4, 6, 0, 2, 2, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 3, 5, 7, 5, 7, 5, 7, 7, 7, 7, 5, 1, 5, 5, 7, 5, 7, 3, 5, 1, 7, 3, 1, 5, 1, 6, 2, 7, 2, 4, 2, 4, 2, 2, 2, 6, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 5, 5, 5, 7, 7, 7, 7, 7, 5, 5, 7, 1, 5, 3, 3, 1, 5, 5, 3, 3, 5, 3, 1, 3, 1, 6, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 3, 7, 7, 7, 5, 7, 7, 5, 7, 7, 5, 7, 7, 5, 7, 5, 7, 1, 5, 3, 7, 7, 5, 1, 1, 3, 5, 6, 7, 6, 2, 4, 6, 4, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 1, 7, 7, 7, 1, 7, 3, 5, 7, 7, 5, 1, 3, 1, 4, 6, 6, 2, 4, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 5, 7, 3, 7, 7, 5, 7, 5, 5, 8, 7, 7, 7, 5, 3, 7, 5, 3, 5, 1, 5, 3, 7, 3, 3, 5, 1, 7, 2, 6, 2, 7, 2, 2, 4, 2, 6, 2, 6, 2, 6, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 3, 7, 7, 7, 7, 7, 7, 5, 7, 5, 7, 5, 5, 5, 3, 5, 5, 3, 5, 3, 5, 3, 7, 1, 1, 3, 3, 7, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 7, 7, 7, 7, 3, 3, 7, 5, 7, 3, 3, 3, 7, 7, 5, 5, 3, 1, 7, 5, 5, 3, 5, 3, 6, 7, 4, 6, 4, 2, 6, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 5, 7, 7, 7, 7, 5, 5, 5, 3, 5, 5, 5, 5, 3, 3, 3, 3, 3, 5, 3, 5, 1, 5, 5, 6, 7, 4, 4, 6, 2, 4, 4, 2, 2, 2, 4, 4, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 5, 5, 7, 7, 7, 5, 7, 7, 5, 7, 7, 5, 5, 7, 5, 5, 5, 5, 5, 3, 7, 3, 5, 7, 1, 6, 7, 6, 6, 4, 2, 2, 2, 4, 2, 4, 6, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 7, 7, 3, 7, 7, 5, 7, 7, 5, 7, 5, 7, 7, 5, 5, 5, 5, 7, 5, 5, 5, 1, 7, 6, 6, 7, 2, 4, 4, 2, 6, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 3, 7, 7, 5, 5, 5, 5, 3, 5, 5, 5, 3, 5, 3, 1, 1, 3, 1, 1, 3, 3, 5, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 3, 7, 5, 5, 3, 3, 5, 3, 3, 5, 5, 3, 3, 1, 5, 3, 3, 3, 1, 3, 3, 1, 1, 3, 4, 4, 4, 2, 2, 2, 4, 4, 2, 2, 4, 6, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 3, 5, 5, 7, 3, 5, 3, 5, 1, 7, 1, 5, 3, 3, 1, 5, 5, 5, 3, 5, 3, 6, 7, 4, 2, 4, 4, 2, 2, 4, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 3, 7, 7, 7, 7, 7, 5, 7, 5, 7, 3, 5, 3, 3, 5, 7, 3, 3, 1, 3, 3, 3, 5, 3, 1, 5, 1, 4, 6, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 8, 5, 7, 7, 5, 3, 7, 3, 5, 1, 7, 3, 3, 1, 3, 5, 3, 5, 3, 1, 3, 1, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 8, 3, 7, 5, 5, 5, 7, 3, 5, 3, 7, 5, 3, 1, 3, 3, 5, 3, 5, 3, 3, 1, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 3, 5, 7, 3, 5, 5, 3, 3, 5, 7, 3, 5, 1, 3, 3, 3, 5, 3, 3, 1, 1, 4, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 8, 7, 7, 7, 7, 5, 7, 5, 3, 5, 3, 5, 1, 7, 3, 3, 1, 3, 3, 5, 3, 3, 1, 3, 3, 6, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 5, 3, 5, 7, 3, 3, 3, 5, 1, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 7, 4, 4, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 5, 5, 7, 3, 8, 3, 7, 8, 5, 7, 3, 7, 1, 1, 8, 7, 7, 3, 5, 1, 7, 3, 7, 7, 1, 2, 0, 6, 2, 6, 0, 2, 2, 2, 6, 2, 6, 0, 2, 0, 6, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 3, 7, 5, 3, 8, 5, 8, 1, 7, 7, 5, 8, 1, 7, 1, 3, 8, 3, 7, 3, 5, 3, 5, 5, 5, 7, 3, 2, 2, 2, 2, 6, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 1, 7, 5, 7, 7, 3, 8, 1, 7, 5, 7, 8, 1, 7, 1, 5, 8, 5, 7, 1, 3, 3, 7, 5, 5, 7, 3, 6, 4, 6, 2, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 3, 7, 7, 7, 8, 5, 8, 1, 7, 8, 5, 7, 1, 7, 1, 5, 7, 7, 7, 1, 7, 5, 7, 5, 7, 5, 1, 4, 2, 6, 2, 6, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 7, 8, 5, 8, 1, 7, 7, 7, 7, 3, 7, 1, 5, 8, 3, 7, 1, 5, 1, 7, 5, 7, 5, 1, 4, 2, 6, 2, 6, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 5, 5, 8, 5, 8, 1, 7, 8, 7, 7, 1, 7, 3, 3, 7, 3, 7, 1, 5, 1, 5, 5, 7, 7, 1, 2, 0, 6, 2, 6, 2, 0, 2, 0, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 1, 7, 7, 7, 8, 3, 8, 3, 7, 7, 7, 8, 1, 7, 1, 1, 7, 5, 7, 1, 5, 1, 5, 5, 7, 5, 1, 2, 2, 6, 2, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 3, 7, 7, 5, 8, 5, 7, 3, 7, 7, 5, 7, 3, 7, 1, 3, 7, 5, 7, 3, 5, 1, 3, 7, 5, 5, 1, 2, 2, 7, 2, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 5, 7, 5, 7, 8, 3, 7, 1, 7, 7, 7, 7, 3, 7, 1, 1, 8, 5, 7, 3, 3, 1, 3, 5, 7, 7, 1, 4, 2, 6, 2, 4, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 5, 5, 7, 3, 8, 1, 7, 3, 5, 7, 5, 5, 3, 3, 7, 7, 7, 1, 5, 5, 5, 5, 7, 5, 3, 4, 4, 4, 2, 6, 2, 2, 4, 2, 2, 4, 2, 6, 4, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 1, 7, 5, 5, 7, 5, 7, 3, 7, 7, 3, 7, 1, 7, 3, 5, 7, 3, 7, 1, 3, 3, 5, 5, 5, 3, 1, 4, 2, 2, 2, 6, 2, 2, 4, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 5, 7, 8, 5, 7, 3, 7, 7, 1, 7, 3, 7, 3, 3, 5, 3, 5, 1, 1, 3, 5, 3, 3, 3, 1, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 4, 6, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 5, 5, 8, 3, 8, 5, 5, 7, 5, 7, 3, 3, 5, 5, 7, 5, 5, 1, 3, 3, 5, 5, 5, 3, 1, 4, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 5, 5, 7, 3, 8, 1, 5, 7, 7, 7, 3, 7, 1, 3, 7, 3, 5, 3, 3, 3, 5, 3, 7, 5, 3, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 3, 7, 1, 7, 5, 5, 7, 3, 3, 1, 1, 7, 5, 7, 3, 3, 7, 7, 3, 3, 1, 1, 4, 4, 4, 2, 4, 2, 4, 4, 2, 4, 4, 4, 4, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 5, 7, 7, 5, 8, 5, 7, 3, 7, 7, 5, 7, 3, 5, 1, 3, 7, 1, 5, 1, 3, 3, 3, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 5, 7, 7, 5, 8, 3, 7, 1, 7, 5, 3, 1, 3, 3, 3, 3, 3, 1, 5, 1, 1, 1, 1, 1, 1, 3, 3, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 5, 7, 3, 7, 1, 7, 5, 3, 5, 3, 5, 1, 3, 3, 5, 3, 1, 1, 1, 1, 1, 3, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 5, 7, 3, 7, 3, 5, 5, 5, 5, 3, 7, 1, 3, 5, 1, 3, 1, 1, 3, 3, 1, 3, 1, 3, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 5, 7, 7, 1, 7, 7, 7, 3, 7, 7, 3, 5, 7, 5, 7, 3, 7, 7, 7, 3, 7, 7, 7, 1, 3, 4, 2, 6, 0, 2, 7, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 3, 5, 7, 7, 5, 7, 5, 1, 3, 3, 3, 3, 3, 1, 3, 3, 5, 5, 5, 1, 1, 3, 4, 4, 6, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 7, 5, 7, 8, 5, 3, 5, 7, 3, 7, 3, 7, 5, 7, 3, 3, 5, 7, 5, 3, 1, 5, 1, 6, 6, 7, 4, 2, 4, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 8, 7, 3, 7, 7, 5, 3, 5, 7, 5, 5, 3, 7, 5, 7, 3, 5, 5, 7, 7, 5, 5, 5, 1, 4, 6, 7, 6, 2, 2, 0, 4, 4, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 5, 7, 7, 5, 5, 3, 7, 3, 7, 3, 3, 5, 7, 5, 5, 3, 5, 1, 4, 2, 7, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 3, 7, 8, 7, 5, 5, 7, 1, 7, 5, 7, 1, 7, 3, 3, 5, 5, 3, 5, 3, 1, 1, 4, 2, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 3, 7, 7, 7, 3, 3, 7, 1, 3, 5, 7, 5, 7, 1, 5, 3, 3, 3, 3, 3, 1, 1, 4, 2, 4, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 8, 7, 1, 7, 8, 7, 3, 5, 7, 1, 5, 5, 7, 7, 7, 7, 3, 3, 3, 3, 3, 3, 1, 1, 2, 2, 4, 2, 2, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 1, 7, 7, 7, 5, 5, 7, 1, 3, 5, 7, 7, 7, 5, 7, 3, 5, 5, 5, 3, 1, 1, 2, 2, 2, 0, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 5, 7, 7, 3, 5, 5, 7, 5, 7, 3, 3, 5, 1, 1, 5, 3, 1, 1, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 5, 3, 5, 7, 7, 1, 3, 7, 3, 3, 3, 5, 3, 7, 5, 5, 5, 1, 3, 3, 3, 1, 1, 2, 2, 6, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 7, 5, 5, 5, 5, 5, 3, 1, 5, 1, 3, 3, 3, 3, 5, 3, 1, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 6, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 7, 7, 5, 3, 7, 7, 3, 3, 5, 5, 3, 3, 7, 7, 5, 5, 1, 1, 3, 3, 1, 6, 4, 4, 2, 2, 4, 2, 6, 2, 2, 4, 4, 0, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 5, 1, 5, 5, 5, 7, 3, 5, 1, 3, 1, 5, 5, 5, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 3, 1, 3, 5, 5, 5, 3, 5, 3, 5, 1, 5, 5, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 3, 7, 7, 3, 1, 5, 3, 5, 5, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 3, 1, 3, 4, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 3, 3, 3, 3, 5, 3, 1, 3, 3, 1, 1, 1, 3, 3, 1, 3, 1, 1, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 7, 5, 3, 1, 3, 5, 1, 5, 3, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 3, 3, 5, 3, 3, 5, 3, 3, 1, 3, 1, 3, 3, 3, 1, 3, 1, 5, 1, 3, 3, 1, 1, 2, 2, 2, 0, 2, 2, 4, 2, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 5, 5, 5, 3, 5, 3, 5, 3, 1, 3, 5, 1, 3, 1, 1, 1, 3, 5, 1, 1, 1, 1, 3, 1, 2, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 1, 3, 7, 5, 5, 1, 7, 7, 7, 5, 7, 5, 3, 5, 5, 1, 2, 2, 4, 4, 6, 4, 2, 2, 2, 0, 4, 2, 2, 4, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 7, 7, 5, 3, 3, 1, 3, 1, 3, 5, 3, 3, 1, 5, 3, 3, 3, 5, 3, 1, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 7, 7, 7, 7, 5, 7, 3, 3, 3, 1, 3, 3, 5, 1, 5, 1, 7, 3, 5, 1, 3, 5, 1, 1, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 7, 5, 7, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 1, 1, 1, 1, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 7, 7, 5, 7, 5, 5, 7, 3, 3, 3, 1, 7, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 7, 7, 7, 7, 3, 3, 3, 3, 3, 3, 1, 3, 5, 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 5, 3, 3, 5, 3, 5, 1, 5, 3, 5, 5, 3, 5, 3, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 6, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 7, 3, 5, 5, 5, 3, 5, 3, 5, 5, 3, 3, 1, 5, 1, 1, 3, 1, 1, 3, 3, 1, 3, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 5, 5, 5, 7, 3, 5, 5, 5, 3, 3, 5, 3, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 4, 6, 4, 2, 4, 4, 2, 4, 2, 4, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 8, 5, 7, 5, 3, 5, 5, 3, 3, 1, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 7, 5, 5, 5, 5, 3, 7, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 5, 3, 4, 4, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 5, 7, 5, 5, 5, 7, 3, 3, 3, 3, 3, 1, 5, 3, 3, 3, 3, 1, 1, 1, 1, 1, 3, 3, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 5, 7, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 5, 3, 1, 1, 1, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 7, 5, 7, 3, 7, 7, 5, 3, 3, 3, 5, 3, 1, 5, 3, 3, 3, 1, 1, 3, 1, 1, 3, 3, 3, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 5, 5, 5, 7, 5, 5, 5, 3, 3, 3, 3, 3, 5, 3, 1, 5, 3, 3, 1, 1, 1, 1, 3, 3, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 5, 5, 5, 5, 3, 3, 3, 3, 5, 3, 5, 1, 1, 3, 3, 3, 1, 3, 1, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 7, 5, 5, 5, 5, 5, 3, 5, 3, 3, 1, 3, 3, 3, 1, 3, 5, 5, 3, 3, 3, 1, 3, 2, 2, 4, 2, 2, 2, 4, 4, 4, 4, 2, 2, 4, 6, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 5, 7, 5, 5, 7, 5, 5, 5, 1, 3, 5, 3, 5, 1, 3, 1, 3, 3, 5, 5, 3, 3, 3, 3, 6, 7, 4, 4, 2, 2, 2, 2, 6, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 7, 7, 7, 7, 5, 7, 7, 5, 5, 5, 3, 5, 3, 7, 1, 1, 3, 3, 3, 5, 7, 1, 1, 7, 1, 7, 6, 4, 2, 0, 4, 2, 4, 4, 2, 0, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 3, 7, 7, 3, 7, 3, 3, 5, 3, 7, 3, 1, 3, 5, 3, 5, 7, 1, 1, 3, 1, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 7, 5, 7, 7, 5, 7, 7, 3, 5, 7, 5, 7, 1, 5, 3, 7, 7, 5, 3, 5, 7, 1, 3, 1, 1, 4, 6, 6, 2, 4, 6, 2, 6, 4, 2, 2, 2, 2, 6, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 5, 7, 7, 7, 7, 7, 5, 5, 7, 7, 7, 1, 7, 1, 7, 7, 5, 3, 7, 7, 3, 7, 3, 1, 6, 4, 6, 4, 2, 2, 2, 6, 4, 4, 2, 2, 2, 4, 6, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 3, 5, 7, 7, 7, 7, 7, 5, 3, 3, 7, 3, 7, 3, 7, 3, 5, 3, 7, 7, 1, 5, 1, 3, 4, 4, 6, 4, 4, 4, 2, 4, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 5, 5, 5, 7, 3, 3, 5, 5, 3, 1, 7, 3, 7, 5, 1, 3, 5, 5, 3, 5, 3, 1, 4, 2, 6, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 3, 5, 5, 5, 5, 3, 5, 3, 3, 1, 7, 3, 5, 1, 3, 1, 3, 3, 5, 5, 3, 3, 1, 3, 2, 4, 4, 4, 2, 2, 4, 4, 2, 4, 2, 4, 4, 6, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 5, 7, 7, 7, 3, 5, 5, 7, 3, 5, 3, 3, 3, 3, 5, 5, 7, 5, 1, 5, 3, 6, 7, 4, 4, 2, 6, 2, 6, 6, 2, 2, 2, 6, 6, 6, 2, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 5, 7, 5, 5, 7, 7, 7, 1, 7, 7, 7, 5, 5, 3, 3, 7, 7, 5, 7, 7, 3, 1, 5, 3, 7, 6, 6, 4, 2, 4, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 3, 7, 5, 7, 5, 7, 3, 1, 3, 7, 5, 7, 7, 1, 1, 5, 7, 6, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 8, 7, 7, 7, 5, 7, 7, 5, 3, 7, 5, 7, 3, 7, 1, 3, 1, 5, 7, 5, 3, 1, 1, 3, 1, 4, 4, 4, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 5, 7, 5, 3, 7, 7, 3, 1, 5, 3, 5, 3, 5, 1, 1, 3, 5, 3, 7, 5, 1, 3, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 8, 7, 7, 7, 5, 7, 7, 5, 3, 7, 5, 7, 5, 7, 1, 3, 1, 5, 3, 3, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 7, 7, 7, 1, 3, 7, 5, 7, 3, 3, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 4, 4, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 8, 5, 7, 5, 7, 7, 7, 3, 1, 7, 5, 3, 1, 5, 3, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 6, 4, 2, 2, 6, 6, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 5, 5, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 5, 3, 3, 3, 1, 3, 4, 2, 4, 4, 4, 2, 2, 4, 2, 2, 4, 4, 4, 4, 2, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 7, 3, 7, 7, 5, 5, 5, 5, 5, 3, 1, 5, 3, 5, 1, 1, 3, 3, 3, 7, 3, 3, 3, 3, 5, 7, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 4, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 7, 5, 7, 3, 3, 3, 3, 3, 7, 3, 3, 3, 1, 3, 6, 4, 4, 2, 6, 2, 2, 0, 2, 0, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 5, 7, 7, 5, 5, 7, 5, 5, 3, 5, 5, 1, 7, 1, 3, 3, 3, 3, 7, 1, 1, 3, 1, 5, 6, 2, 2, 2, 6, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 7, 7, 7, 7, 5, 7, 5, 5, 7, 5, 7, 3, 3, 7, 3, 7, 3, 5, 5, 1, 3, 7, 1, 1, 1, 1, 3, 4, 4, 2, 2, 4, 2, 6, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 5, 7, 3, 7, 3, 5, 1, 3, 3, 1, 3, 3, 7, 3, 5, 1, 1, 1, 5, 1, 3, 5, 3, 3, 4, 2, 2, 2, 4, 2, 6, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 7, 3, 5, 5, 5, 1, 5, 1, 3, 1, 3, 5, 1, 3, 3, 1, 1, 1, 1, 3, 1, 1, 1, 6, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 5, 7, 3, 5, 3, 5, 3, 3, 3, 3, 5, 3, 1, 1, 1, 1, 5, 1, 1, 3, 1, 3, 6, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 5, 3, 7, 5, 5, 5, 5, 3, 5, 1, 3, 1, 1, 7, 3, 3, 1, 1, 1, 5, 1, 1, 3, 1, 3, 2, 2, 4, 4, 4, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 7, 7, 7, 7, 7, 1, 7, 7, 3, 3, 5, 5, 3, 3, 7, 3, 5, 5, 3, 1, 1, 5, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 8, 7, 3, 7, 7, 7, 3, 7, 7, 5, 3, 1, 1, 3, 1, 1, 3, 3, 3, 3, 1, 1, 3, 4, 2, 4, 2, 4, 6, 2, 4, 2, 4, 4, 4, 4, 6, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 5, 7, 7, 7, 3, 5, 7, 5, 5, 3, 3, 3, 3, 5, 5, 5, 3, 3, 1, 3, 3, 4, 2, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 0, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 5, 3, 5, 3, 3, 5, 1, 3, 7, 5, 5, 3, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 5, 7, 7, 7, 1, 7, 7, 5, 7, 5, 5, 5, 3, 7, 3, 5, 5, 3, 1, 1, 3, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 1, 5, 7, 5, 3, 3, 3, 3, 1, 1, 1, 3, 3, 5, 1, 1, 5, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 5, 1, 7, 7, 3, 3, 5, 3, 1, 1, 1, 3, 5, 5, 3, 3, 1, 3, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 5, 7, 7, 5, 5, 5, 7, 1, 5, 7, 3, 3, 1, 1, 1, 1, 5, 3, 5, 5, 3, 3, 1, 1, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 7, 5, 3, 5, 7, 1, 3, 5, 3, 3, 1, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 2, 6, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 7, 7, 7, 7, 8, 1, 5, 3, 1, 3, 1, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 5, 7, 7, 7, 7, 7, 5, 7, 5, 1, 3, 3, 5, 3, 3, 5, 1, 1, 5, 5, 5, 7, 7, 5, 3, 3, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 7, 8, 7, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 5, 5, 7, 5, 5, 1, 1, 2, 4, 6, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 5, 7, 7, 7, 7, 8, 7, 7, 3, 5, 5, 3, 5, 1, 5, 3, 3, 1, 1, 5, 5, 5, 5, 3, 1, 3, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 8, 7, 8, 5, 7, 5, 3, 5, 3, 5, 5, 7, 3, 7, 3, 7, 7, 7, 5, 5, 3, 1, 3, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 8, 5, 5, 3, 5, 3, 1, 3, 1, 5, 1, 3, 3, 5, 5, 5, 5, 5, 3, 1, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 7, 8, 8, 5, 5, 5, 1, 5, 3, 3, 3, 5, 3, 5, 3, 3, 7, 5, 5, 5, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 2, 4, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 5, 5, 3, 3, 5, 5, 1, 1, 1, 3, 7, 5, 5, 3, 1, 1, 3, 2, 2, 2, 4, 4, 4, 2, 2, 0, 2, 2, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 3, 7, 7, 7, 7, 5, 3, 3, 3, 1, 3, 5, 3, 1, 1, 3, 3, 5, 7, 5, 3, 1, 1, 3, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 7, 7, 7, 8, 5, 7, 5, 1, 3, 5, 7, 5, 3, 3, 1, 1, 3, 5, 3, 1, 3, 3, 1, 3, 2, 4, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 8, 7, 7, 5, 5, 5, 5, 3, 5, 5, 3, 1, 1, 1, 1, 1, 3, 3, 1, 3, 3, 3, 1, 4, 4, 4, 4, 2, 4, 2, 2, 4, 2, 4, 6, 4, 4, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 5, 7, 7, 8, 5, 5, 7, 3, 5, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 1, 7, 1, 1, 2, 4, 4, 4, 6, 4, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 3, 5, 5, 5, 1, 7, 5, 3, 1, 3, 5, 3, 5, 1, 5, 1, 5, 5, 5, 3, 3, 3, 3, 1, 2, 2, 2, 4, 2, 6, 2, 2, 2, 2, 2, 2, 6, 6, 2, 4, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 5, 7, 5, 7, 7, 7, 7, 7, 7, 1, 3, 5, 5, 3, 3, 3, 3, 3, 5, 5, 5, 3, 1, 5, 3, 3, 2, 4, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 8, 7, 5, 7, 3, 1, 3, 5, 3, 3, 3, 1, 3, 5, 5, 1, 1, 1, 3, 1, 3, 4, 6, 4, 4, 4, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 5, 7, 7, 7, 7, 7, 5, 1, 3, 5, 5, 3, 3, 1, 1, 1, 3, 5, 5, 3, 1, 1, 3, 1, 2, 4, 6, 4, 6, 4, 4, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 3, 3, 3, 5, 5, 5, 3, 1, 5, 5, 5, 5, 1, 3, 1, 1, 1, 2, 4, 6, 6, 6, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 7, 7, 3, 7, 5, 1, 3, 5, 7, 3, 5, 3, 3, 5, 5, 3, 5, 5, 1, 3, 1, 1, 4, 2, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 8, 7, 7, 7, 5, 7, 7, 5, 5, 1, 3, 5, 5, 3, 5, 3, 1, 3, 3, 5, 3, 3, 3, 1, 1, 1, 4, 4, 6, 4, 6, 6, 6, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 5, 5, 7, 3, 3, 3, 1, 3, 5, 5, 1, 1, 3, 5, 5, 3, 3, 3, 1, 3, 3, 3, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 5, 5, 3, 3, 5, 5, 3, 3, 3, 3, 5, 5, 1, 5, 1, 3, 3, 1, 3, 6, 2, 2, 2, 4, 6, 2, 4, 4, 4, 4, 6, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 8, 7, 7, 7, 7, 5, 7, 5, 5, 7, 5, 7, 3, 7, 5, 5, 5, 3, 3, 5, 7, 7, 1, 6, 2, 6, 6, 6, 6, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 5, 7, 7, 7, 5, 7, 1, 7, 7, 7, 5, 7, 1, 1, 5, 5, 3, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 5, 7, 5, 5, 7, 3, 5, 3, 3, 7, 3, 7, 1, 5, 3, 5, 1, 5, 1, 1, 5, 3, 3, 4, 2, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 7, 3, 5, 1, 3, 3, 1, 5, 3, 3, 3, 3, 3, 5, 3, 3, 1, 1, 3, 3, 3, 4, 2, 4, 2, 2, 4, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 7, 8, 3, 7, 7, 3, 7, 7, 5, 3, 7, 3, 3, 5, 3, 1, 3, 3, 3, 1, 3, 5, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 6, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 5, 8, 5, 7, 8, 8, 5, 7, 7, 1, 7, 5, 3, 5, 7, 3, 5, 3, 1, 1, 3, 5, 3, 3, 3, 1, 4, 4, 2, 4, 4, 2, 4, 2, 2, 2, 6, 6, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 5, 7, 7, 7, 5, 7, 7, 5, 7, 5, 5, 1, 7, 3, 3, 3, 1, 1, 5, 3, 5, 3, 1, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 4, 4, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 5, 5, 5, 5, 3, 3, 3, 3, 1, 3, 3, 5, 5, 3, 3, 3, 3, 3, 3, 5, 3, 3, 1, 1, 4, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 5, 7, 5, 7, 3, 5, 5, 3, 3, 5, 5, 3, 5, 5, 3, 3, 3, 3, 5, 5, 1, 3, 1, 1, 4, 2, 2, 4, 4, 6, 2, 4, 2, 4, 2, 4, 4, 6, 4, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 5, 7, 5, 7, 7, 7, 7, 5, 3, 3, 3, 3, 5, 5, 3, 3, 1, 3, 1, 1, 5, 5, 3, 3, 7, 1, 7, 4, 2, 2, 4, 6, 2, 4, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 5, 7, 7, 7, 8, 7, 7, 5, 5, 5, 3, 7, 1, 5, 5, 3, 3, 3, 1, 3, 1, 5, 3, 3, 3, 3, 3, 6, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 7, 7, 5, 5, 3, 5, 3, 7, 5, 5, 5, 3, 1, 3, 1, 5, 5, 5, 3, 5, 3, 6, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 7, 3, 5, 5, 7, 7, 3, 3, 1, 3, 3, 5, 3, 3, 3, 3, 1, 3, 1, 1, 5, 3, 3, 1, 1, 4, 2, 2, 2, 4, 6, 2, 2, 0, 2, 2, 2, 4, 6, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 3, 5, 7, 5, 7, 5, 5, 3, 3, 1, 3, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 4, 4, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 7, 7, 3, 7, 3, 3, 3, 3, 5, 5, 3, 3, 3, 3, 1, 3, 1, 5, 3, 3, 3, 4, 2, 2, 2, 2, 6, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 5, 7, 7, 7, 5, 5, 7, 5, 5, 7, 1, 3, 3, 5, 5, 5, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 5, 7, 5, 7, 3, 5, 3, 3, 3, 3, 5, 5, 5, 1, 5, 5, 5, 5, 3, 5, 5, 3, 3, 3, 6, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 3, 5, 5, 1, 1, 5, 7, 1, 5, 3, 5, 3, 3, 1, 5, 3, 3, 3, 1, 3, 6, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 7, 5, 7, 5, 7, 5, 5, 3, 3, 5, 3, 5, 7, 3, 5, 5, 3, 3, 1, 3, 1, 3, 1, 3, 1, 4, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 3, 1, 5, 1, 3, 5, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 5, 7, 3, 7, 3, 3, 3, 3, 5, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 3, 5, 7, 5, 1, 1, 5, 7, 7, 5, 3, 7, 5, 7, 1, 1, 3, 7, 3, 6, 2, 6, 6, 7, 2, 4, 2, 4, 7, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 8, 7, 7, 7, 7, 3, 5, 7, 7, 7, 7, 1, 7, 7, 8, 7, 5, 7, 7, 7, 3, 1, 3, 7, 5, 7, 4, 2, 6, 4, 6, 2, 0, 2, 4, 2, 2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 3, 1, 5, 7, 7, 5, 5, 7, 1, 7, 1, 1, 3, 7, 5, 6, 2, 2, 4, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 5, 5, 3, 7, 3, 7, 7, 7, 1, 3, 7, 7, 3, 3, 3, 7, 5, 1, 3, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 6, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 8, 7, 5, 5, 7, 5, 5, 5, 3, 5, 5, 5, 5, 3, 1, 1, 5, 3, 1, 3, 1, 3, 3, 3, 1, 1, 1, 4, 4, 2, 2, 4, 4, 4, 2, 2, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 5, 7, 5, 7, 7, 7, 5, 7, 5, 3, 3, 7, 3, 7, 3, 5, 5, 5, 3, 3, 7, 3, 3, 5, 5, 3, 6, 4, 4, 4, 4, 2, 6, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 8, 7, 8, 7, 7, 7, 5, 7, 7, 3, 1, 3, 7, 3, 7, 5, 3, 5, 7, 7, 3, 7, 1, 3, 3, 7, 3, 6, 6, 4, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 5, 1, 5, 7, 5, 7, 7, 3, 3, 7, 5, 3, 7, 5, 3, 5, 7, 3, 6, 6, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 3, 1, 3, 7, 5, 7, 7, 5, 5, 7, 5, 3, 7, 1, 1, 1, 5, 1, 7, 2, 4, 2, 4, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 5, 3, 5, 7, 5, 7, 5, 5, 5, 5, 3, 5, 7, 1, 1, 5, 5, 3, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 8, 5, 7, 7, 5, 7, 7, 3, 1, 5, 7, 3, 5, 7, 5, 3, 7, 5, 5, 7, 1, 1, 3, 3, 1, 2, 4, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 8, 7, 7, 5, 5, 7, 7, 3, 3, 5, 5, 1, 5, 5, 5, 3, 5, 5, 5, 5, 3, 1, 3, 3, 1, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 5, 5, 7, 7, 3, 1, 5, 7, 3, 7, 7, 3, 3, 7, 3, 5, 5, 1, 1, 1, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 3, 3, 5, 7, 3, 5, 3, 3, 3, 5, 5, 3, 5, 1, 1, 3, 1, 3, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 3, 3, 5, 5, 1, 5, 5, 3, 3, 5, 1, 3, 3, 1, 1, 3, 3, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 8, 5, 1, 3, 5, 3, 5, 3, 3, 1, 1, 1, 1, 3, 3, 3, 1, 1, 3, 4, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 5, 7, 7, 3, 7, 8, 3, 3, 5, 7, 3, 5, 3, 3, 1, 3, 1, 3, 3, 1, 3, 1, 3, 1, 4, 4, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 3, 1, 7, 7, 3, 5, 5, 3, 3, 1, 1, 5, 3, 1, 1, 3, 1, 5, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 7, 3, 7, 7, 3, 1, 3, 5, 3, 3, 5, 5, 3, 3, 3, 1, 1, 1, 1, 1, 3, 3, 4, 4, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 5, 3, 5, 7, 1, 3, 3, 1, 3, 5, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 3, 3, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 5, 7, 7, 3, 5, 7, 3, 3, 3, 5, 1, 3, 3, 3, 3, 3, 1, 1, 3, 1, 3, 3, 3, 3, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 4, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 5, 3, 5, 7, 3, 3, 1, 1, 5, 3, 1, 5, 3, 3, 1, 1, 1, 1, 3, 3, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 7, 5, 7, 5, 7, 5, 5, 5, 1, 3, 7, 5, 5, 3, 3, 5, 3, 3, 5, 5, 1, 1, 2, 6, 4, 4, 4, 4, 6, 2, 4, 4, 2, 4, 6, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 5, 7, 7, 7, 3, 5, 7, 3, 7, 7, 5, 5, 7, 5, 3, 7, 3, 3, 3, 5, 1, 6, 7, 4, 4, 6, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 5, 7, 5, 7, 7, 7, 5, 7, 5, 3, 5, 3, 3, 3, 3, 1, 2, 7, 2, 4, 4, 2, 4, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 5, 7, 7, 7, 5, 3, 5, 5, 3, 3, 5, 1, 3, 5, 3, 3, 3, 1, 1, 3, 1, 1, 1, 3, 3, 4, 4, 2, 4, 6, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 5, 7, 3, 3, 7, 5, 3, 1, 3, 3, 5, 5, 3, 3, 1, 1, 1, 1, 1, 3, 1, 1, 3, 6, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 3, 7, 7, 5, 3, 3, 5, 5, 1, 5, 3, 5, 3, 1, 1, 1, 3, 1, 1, 3, 3, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 5, 7, 7, 8, 7, 5, 7, 7, 5, 1, 3, 3, 1, 3, 5, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 7, 8, 7, 5, 7, 7, 5, 3, 1, 3, 3, 3, 5, 3, 1, 3, 3, 1, 5, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 3, 7, 3, 5, 3, 5, 3, 1, 3, 5, 5, 3, 1, 1, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 2, 2, 4, 2, 2, 4, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 7, 7, 3, 3, 5, 1, 5, 3, 5, 3, 3, 3, 3, 5, 3, 5, 3, 3, 1, 2, 6, 4, 6, 6, 4, 6, 2, 4, 6, 2, 6, 4, 2, 0, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 3, 5, 1, 3, 5, 3, 3, 1, 3, 3, 7, 3, 7, 3, 3, 1, 2, 4, 6, 6, 4, 4, 2, 2, 2, 6, 2, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 5, 3, 1, 5, 7, 7, 3, 3, 1, 3, 5, 1, 7, 3, 1, 1, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 5, 7, 8, 7, 5, 3, 5, 3, 5, 5, 7, 5, 3, 1, 3, 7, 1, 7, 1, 1, 1, 2, 2, 6, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 8, 5, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 7, 5, 1, 3, 1, 3, 5, 1, 5, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 5, 7, 7, 3, 5, 7, 7, 1, 5, 7, 5, 5, 1, 1, 3, 5, 1, 5, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 5, 7, 7, 5, 3, 3, 3, 3, 5, 5, 5, 3, 3, 1, 1, 7, 1, 5, 5, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 5, 5, 3, 3, 7, 5, 1, 3, 1, 3, 5, 1, 1, 3, 3, 1, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 7, 7, 7, 5, 7, 3, 5, 5, 1, 1, 3, 3, 5, 1, 1, 1, 3, 3, 3, 1, 1, 1, 3, 4, 4, 2, 2, 4, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 3, 5, 8, 5, 5, 5, 5, 1, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 4, 2, 4, 4, 2, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 8, 7, 7, 5, 5, 7, 7, 3, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 5, 3, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 7, 7, 7, 7, 5, 7, 7, 5, 7, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 3, 1, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 3, 5, 7, 7, 5, 5, 5, 3, 3, 5, 3, 5, 1, 3, 3, 1, 1, 1, 3, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 3, 3, 7, 5, 5, 3, 1, 3, 3, 5, 5, 5, 3, 5, 3, 3, 1, 3, 1, 1, 3, 1, 5, 6, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 3, 5, 5, 3, 3, 3, 3, 5, 5, 5, 3, 3, 3, 1, 1, 3, 3, 5, 3, 3, 1, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 5, 5, 7, 7, 7, 7, 5, 7, 7, 5, 3, 3, 5, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 6, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 3, 3, 3, 3, 5, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 1, 5, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 5, 1, 4, 2, 2, 6, 6, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 0, 4, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 5, 3, 5, 3, 5, 3, 3, 1, 7, 3, 3, 1, 3, 3, 4, 4, 2, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 5, 7, 7, 7, 5, 5, 7, 5, 7, 3, 3, 5, 5, 1, 3, 5, 3, 3, 3, 1, 3, 5, 1, 3, 1, 1, 1, 4, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 7, 3, 5, 1, 5, 3, 3, 3, 5, 3, 1, 3, 3, 3, 7, 1, 3, 3, 3, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 3, 7, 5, 7, 7, 7, 7, 1, 7, 3, 7, 1, 7, 5, 7, 7, 5, 7, 1, 7, 5, 7, 5, 3, 7, 2, 6, 2, 4, 2, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 3, 7, 3, 7, 3, 7, 7, 1, 7, 3, 7, 3, 7, 3, 7, 8, 3, 5, 1, 7, 0, 3, 3, 3, 3, 7, 4, 6, 4, 6, 4, 2, 2, 2, 2, 2, 0, 2, 0, 2, 4, 6, 4, 6, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 3, 7, 5, 7, 7, 7, 7, 3, 8, 0, 7, 1, 5, 3, 8, 7, 8, 1, 0, 7, 0, 5, 0, 1, 0, 7, 0, 6, 0, 2, 2, 6, 0, 2, 2, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 1, 7, 3, 7, 7, 8, 3, 7, 5, 3, 8, 1, 7, 1, 5, 1, 7, 5, 7, 3, 3, 7, 1, 7, 3, 1, 1, 7, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 7, 5, 7, 3, 3, 5, 3, 5, 3, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 7, 7, 5, 7, 5, 7, 7, 3, 7, 3, 7, 3, 7, 3, 5, 3, 7, 7, 3, 7, 3, 5, 1, 7, 3, 4, 2, 4, 2, 4, 2, 4, 0, 4, 4, 6, 0, 2, 0, 2, 0, 4, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 3, 7, 3, 8, 7, 7, 7, 3, 7, 3, 7, 3, 7, 3, 7, 1, 7, 5, 1, 5, 1, 5, 1, 7, 1, 6, 4, 7, 2, 6, 4, 2, 2, 4, 6, 6, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 5, 7, 5, 7, 5, 8, 3, 8, 7, 5, 8, 3, 8, 3, 7, 5, 7, 3, 7, 7, 1, 7, 1, 5, 3, 7, 1, 7, 4, 6, 2, 4, 2, 4, 2, 2, 6, 6, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 3, 8, 5, 8, 7, 3, 8, 3, 7, 3, 7, 5, 7, 3, 7, 5, 1, 3, 1, 3, 1, 7, 1, 6, 2, 6, 2, 6, 2, 6, 2, 2, 4, 4, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 3, 7, 7, 7, 3, 8, 3, 8, 7, 3, 7, 3, 8, 3, 7, 3, 5, 5, 7, 7, 1, 5, 1, 3, 1, 7, 3, 4, 2, 6, 2, 6, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 0, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 5, 8, 5, 8, 7, 3, 7, 3, 7, 1, 7, 3, 3, 5, 7, 5, 1, 3, 1, 5, 1, 7, 1, 2, 2, 6, 2, 4, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 3, 8, 7, 7, 7, 8, 7, 7, 7, 3, 7, 3, 7, 3, 5, 3, 7, 5, 7, 3, 3, 5, 1, 3, 1, 7, 1, 6, 2, 6, 2, 6, 4, 6, 2, 2, 2, 6, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 7, 8, 7, 8, 7, 1, 7, 3, 5, 3, 7, 3, 7, 7, 7, 5, 3, 7, 3, 1, 1, 7, 1, 4, 2, 6, 2, 6, 4, 4, 2, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 5, 7, 7, 7, 5, 8, 5, 8, 7, 3, 7, 5, 7, 3, 7, 5, 5, 5, 7, 5, 3, 1, 1, 3, 3, 7, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 5, 8, 7, 7, 7, 5, 7, 3, 8, 3, 7, 3, 7, 5, 7, 7, 3, 3, 3, 5, 3, 7, 3, 4, 2, 4, 2, 6, 4, 2, 2, 4, 2, 2, 2, 4, 4, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 1, 7, 7, 5, 3, 7, 5, 7, 7, 5, 7, 1, 7, 1, 7, 3, 5, 1, 7, 5, 1, 3, 1, 5, 1, 7, 1, 6, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4, 4, 4, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 7, 7, 3, 8, 3, 7, 7, 3, 7, 3, 7, 3, 5, 3, 5, 1, 3, 3, 1, 1, 1, 3, 3, 5, 1, 4, 4, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 3, 7, 5, 7, 5, 7, 3, 7, 7, 1, 7, 1, 7, 3, 7, 3, 5, 1, 5, 5, 1, 1, 1, 3, 1, 5, 1, 4, 4, 6, 2, 4, 2, 4, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 5, 7, 5, 7, 5, 7, 7, 1, 7, 3, 7, 3, 3, 3, 5, 1, 3, 3, 1, 3, 1, 3, 1, 7, 1, 4, 2, 4, 2, 6, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 7, 5, 7, 5, 3, 5, 3, 5, 1, 5, 3, 3, 3, 1, 1, 3, 1, 1, 3, 3, 3, 3, 4, 2, 2, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 5, 7, 5, 8, 3, 7, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 2, 2, 4, 4, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 3, 7, 7, 7, 3, 7, 7, 3, 5, 5, 5, 5, 3, 5, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 5, 3, 5, 7, 7, 7, 5, 3, 3, 3, 3, 5, 3, 3, 3, 1, 5, 5, 5, 3, 3, 5, 3, 1, 1, 4, 4, 4, 4, 4, 4, 2, 2, 2, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 3, 5, 1, 3, 5, 3, 5, 5, 5, 3, 3, 1, 3, 5, 3, 7, 3, 3, 1, 4, 4, 6, 7, 6, 2, 2, 2, 4, 4, 2, 4, 4, 2, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 8, 7, 7, 7, 7, 5, 7, 7, 5, 7, 3, 5, 5, 3, 7, 7, 7, 7, 1, 5, 5, 7, 3, 7, 3, 3, 1, 6, 4, 6, 6, 4, 2, 2, 2, 2, 2, 4, 4, 2, 6, 2, 2, 2, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 5, 3, 5, 5, 3, 3, 5, 5, 5, 1, 3, 5, 7, 1, 5, 3, 3, 3, 4, 4, 6, 4, 2, 2, 2, 2, 0, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 7, 7, 5, 7, 7, 7, 3, 3, 7, 3, 3, 7, 5, 5, 3, 1, 1, 5, 1, 7, 5, 3, 3, 6, 4, 6, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 8, 7, 7, 7, 5, 7, 7, 5, 1, 3, 5, 3, 5, 5, 5, 5, 1, 3, 1, 7, 3, 3, 3, 1, 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 5, 7, 7, 5, 3, 5, 5, 1, 5, 5, 3, 5, 3, 1, 1, 5, 1, 5, 3, 1, 3, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 5, 5, 3, 3, 7, 5, 5, 1, 1, 1, 5, 1, 3, 3, 1, 3, 2, 6, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 6, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 1, 3, 3, 3, 5, 3, 5, 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 5, 3, 5, 7, 5, 3, 3, 7, 3, 5, 1, 3, 7, 1, 5, 1, 5, 3, 5, 3, 1, 3, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 8, 5, 7, 7, 3, 3, 7, 3, 3, 3, 5, 5, 5, 1, 7, 3, 3, 3, 1, 5, 7, 5, 1, 5, 3, 4, 7, 6, 2, 4, 6, 2, 6, 2, 6, 2, 2, 2, 2, 4, 4, 2, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 5, 5, 7, 3, 3, 3, 5, 3, 1, 3, 7, 3, 5, 1, 1, 5, 7, 3, 1, 5, 3, 6, 6, 6, 2, 6, 4, 4, 6, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 7, 7, 7, 7, 5, 1, 5, 5, 5, 5, 3, 7, 3, 3, 1, 3, 5, 5, 3, 1, 3, 1, 2, 4, 6, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 3, 5, 5, 3, 3, 5, 5, 1, 1, 7, 7, 7, 3, 5, 5, 7, 1, 7, 1, 7, 5, 4, 6, 2, 4, 6, 2, 4, 2, 2, 6, 4, 4, 6, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 8, 7, 7, 3, 3, 7, 5, 3, 7, 5, 3, 1, 3, 5, 5, 5, 3, 5, 3, 7, 1, 3, 1, 7, 3, 7, 6, 2, 6, 7, 2, 4, 2, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 7, 5, 3, 7, 5, 5, 3, 3, 7, 7, 5, 1, 3, 3, 5, 3, 5, 3, 7, 1, 6, 6, 2, 2, 6, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 8, 3, 8, 3, 7, 8, 5, 7, 3, 5, 1, 7, 8, 1, 7, 1, 5, 3, 7, 5, 0, 3, 1, 7, 2, 7, 0, 0, 6, 2, 2, 0, 2, 2, 0, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 3, 7, 7, 7, 7, 1, 8, 1, 7, 7, 3, 7, 5, 7, 7, 7, 8, 3, 7, 3, 5, 3, 7, 5, 1, 5, 0, 6, 2, 7, 2, 2, 6, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 5, 7, 3, 7, 1, 7, 7, 7, 7, 3, 5, 5, 7, 8, 3, 7, 1, 5, 3, 7, 5, 1, 3, 1, 7, 2, 6, 2, 2, 4, 4, 2, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 3, 7, 7, 7, 7, 3, 8, 5, 7, 8, 7, 7, 3, 7, 5, 7, 7, 1, 7, 1, 7, 3, 7, 3, 1, 5, 1, 7, 2, 7, 2, 2, 4, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 3, 8, 5, 7, 8, 5, 7, 5, 5, 3, 7, 7, 1, 7, 3, 7, 5, 7, 5, 1, 7, 3, 7, 4, 6, 2, 4, 7, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 5, 8, 3, 7, 3, 7, 7, 7, 7, 3, 5, 1, 7, 7, 3, 7, 1, 3, 3, 7, 1, 1, 3, 1, 7, 2, 6, 2, 2, 6, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 5, 5, 7, 3, 8, 5, 7, 8, 7, 7, 3, 5, 5, 5, 7, 3, 7, 1, 5, 5, 7, 3, 1, 3, 1, 7, 2, 6, 0, 2, 6, 2, 2, 0, 0, 2, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 7, 7, 3, 5, 7, 7, 7, 1, 3, 1, 3, 5, 3, 5, 1, 1, 3, 5, 1, 1, 3, 3, 6, 2, 6, 4, 2, 6, 2, 2, 2, 4, 4, 2, 6, 6, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 5, 7, 3, 7, 3, 7, 8, 5, 7, 3, 5, 1, 7, 7, 3, 5, 3, 3, 3, 7, 5, 1, 3, 1, 6, 4, 7, 2, 6, 6, 2, 2, 2, 6, 6, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 5, 7, 3, 7, 5, 8, 7, 7, 7, 3, 7, 5, 8, 3, 3, 1, 7, 5, 7, 5, 1, 5, 1, 7, 1, 3, 1, 6, 4, 7, 4, 6, 2, 4, 2, 6, 4, 2, 2, 4, 4, 4, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 8, 5, 5, 5, 7, 7, 7, 5, 5, 3, 1, 7, 3, 3, 3, 7, 7, 1, 3, 5, 3, 3, 1, 1, 3, 1, 2, 4, 6, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 6, 4, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 8, 5, 8, 7, 5, 7, 3, 7, 5, 5, 5, 7, 7, 3, 3, 5, 5, 1, 7, 3, 7, 5, 6, 7, 4, 6, 6, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 8, 7, 7, 7, 5, 7, 3, 7, 3, 5, 7, 7, 7, 3, 5, 3, 7, 3, 7, 3, 7, 3, 6, 7, 7, 7, 6, 4, 6, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 8, 5, 8, 7, 5, 7, 3, 7, 3, 5, 7, 7, 7, 7, 7, 3, 7, 3, 5, 1, 5, 3, 4, 4, 6, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 8, 7, 7, 7, 8, 7, 8, 7, 5, 7, 5, 7, 1, 7, 7, 7, 7, 7, 3, 3, 7, 1, 7, 1, 5, 1, 6, 6, 7, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 3, 8, 1, 5, 3, 7, 7, 7, 1, 3, 5, 3, 7, 1, 3, 1, 6, 4, 7, 2, 6, 2, 4, 2, 4, 2, 0, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 8, 7, 7, 7, 5, 5, 3, 7, 1, 5, 1, 7, 7, 5, 3, 1, 5, 1, 5, 3, 3, 1, 2, 2, 4, 4, 2, 2, 4, 4, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 5, 5, 7, 3, 7, 3, 3, 8, 3, 7, 3, 7, 1, 7, 7, 1, 7, 1, 3, 3, 7, 7, 5, 3, 0, 7, 2, 7, 0, 2, 7, 6, 2, 0, 4, 0, 4, 0, 4, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 8, 7, 8, 7, 7, 7, 7, 5, 5, 7, 5, 3, 7, 5, 7, 3, 3, 3, 7, 5, 1, 5, 1, 7, 2, 6, 2, 2, 6, 4, 2, 0, 2, 2, 4, 2, 2, 4, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 3, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 8, 7, 7, 5, 3, 5, 7, 7, 1, 7, 1, 7, 2, 7, 2, 2, 2, 7, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 3, 7, 7, 7, 7, 7, 5, 7, 7, 8, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 5, 5, 7, 7, 5, 5, 1, 7, 2, 7, 0, 2, 6, 6, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 3, 7, 7, 7, 7, 7, 7, 5, 7, 5, 7, 7, 5, 3, 3, 7, 7, 1, 7, 1, 3, 1, 7, 7, 1, 3, 1, 7, 4, 6, 2, 4, 6, 6, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 5, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 3, 7, 1, 7, 1, 7, 7, 5, 5, 1, 7, 2, 7, 0, 2, 6, 7, 2, 0, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 1, 7, 7, 7, 8, 7, 7, 5, 7, 7, 7, 7, 3, 7, 5, 5, 7, 3, 7, 1, 3, 3, 7, 5, 1, 3, 1, 6, 2, 6, 2, 0, 4, 6, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 3, 7, 7, 7, 7, 5, 7, 3, 3, 7, 7, 5, 3, 7, 5, 5, 7, 1, 7, 1, 5, 3, 7, 7, 1, 3, 1, 7, 2, 7, 2, 2, 4, 7, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 5, 7, 5, 7, 3, 7, 7, 5, 7, 3, 5, 5, 7, 5, 5, 7, 1, 5, 5, 5, 7, 5, 5, 1, 7, 2, 6, 2, 2, 6, 6, 2, 2, 0, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 5, 7, 7, 7, 7, 3, 7, 7, 7, 3, 7, 7, 7, 7, 7, 7, 1, 3, 5, 7, 5, 7, 5, 1, 7, 2, 7, 2, 2, 6, 6, 2, 2, 2, 0, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 7, 3, 5, 1, 7, 5, 3, 7, 1, 5, 3, 7, 5, 7, 3, 1, 7, 2, 6, 0, 2, 6, 6, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 7, 7, 5, 5, 3, 5, 5, 3, 1, 3, 5, 5, 1, 3, 3, 1, 3, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 8, 5, 7, 7, 7, 5, 7, 7, 5, 3, 5, 3, 3, 3, 7, 1, 3, 1, 3, 3, 3, 5, 1, 3, 3, 4, 2, 4, 4, 2, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 5, 3, 3, 7, 7, 5, 7, 3, 3, 5, 3, 5, 1, 5, 1, 7, 4, 6, 2, 2, 4, 4, 2, 4, 2, 2, 4, 4, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 7, 3, 5, 7, 7, 5, 5, 5, 5, 7, 5, 3, 1, 5, 1, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 7, 3, 7, 3, 5, 7, 7, 5, 5, 5, 3, 7, 5, 3, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 3, 5, 7, 3, 5, 3, 3, 1, 3, 5, 7, 3, 3, 1, 1, 1, 1, 1, 1, 3, 3, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 3, 7, 5, 5, 7, 3, 5, 3, 5, 1, 3, 3, 7, 3, 1, 1, 3, 3, 1, 3, 1, 3, 3, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 5, 7, 3, 3, 5, 3, 7, 1, 3, 3, 1, 7, 3, 7, 1, 3, 3, 3, 3, 1, 3, 1, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 8, 5, 5, 7, 7, 7, 5, 7, 3, 3, 5, 3, 1, 3, 3, 5, 5, 5, 1, 5, 1, 3, 3, 1, 3, 3, 2, 4, 4, 2, 2, 2, 4, 2, 2, 4, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 7, 3, 7, 5, 5, 5, 1, 7, 3, 3, 3, 3, 5, 1, 3, 1, 1, 5, 3, 5, 3, 5, 3, 4, 6, 6, 6, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 7, 7, 7, 5, 7, 7, 3, 3, 3, 5, 5, 5, 5, 3, 5, 3, 3, 5, 3, 5, 3, 3, 3, 2, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 3, 1, 7, 1, 3, 5, 5, 7, 3, 1, 1, 1, 5, 3, 5, 3, 3, 1, 4, 2, 2, 2, 6, 2, 2, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 7, 7, 7, 3, 7, 5, 7, 5, 3, 7, 3, 5, 3, 3, 7, 3, 5, 1, 3, 3, 3, 3, 3, 3, 1, 4, 2, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 5, 7, 5, 7, 5, 7, 5, 3, 5, 3, 3, 3, 3, 5, 1, 5, 1, 1, 3, 3, 5, 3, 5, 3, 2, 2, 7, 2, 6, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 8, 7, 7, 5, 7, 3, 5, 7, 3, 1, 3, 3, 5, 3, 5, 3, 3, 1, 1, 5, 3, 3, 3, 4, 2, 4, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 7, 7, 5, 3, 5, 3, 5, 3, 1, 5, 5, 5, 3, 7, 1, 3, 3, 1, 5, 1, 5, 1, 4, 4, 6, 2, 4, 2, 2, 4, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 8, 7, 7, 5, 7, 7, 3, 5, 5, 5, 5, 3, 7, 3, 5, 1, 3, 1, 1, 7, 3, 5, 3, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 3, 5, 5, 3, 3, 3, 3, 1, 3, 1, 3, 5, 3, 3, 1, 3, 3, 5, 5, 1, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 9, 7, 7, 7, 7, 7, 7, 5, 3, 7, 7, 7, 3, 5, 1, 3, 5, 5, 1, 3, 3, 5, 7, 3, 5, 3, 1, 1, 6, 7, 6, 2, 2, 2, 4, 4, 4, 6, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 3, 5, 7, 7, 5, 1, 5, 3, 3, 7, 3, 1, 3, 5, 5, 4, 7, 6, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 3, 7, 5, 7, 5, 7, 5, 5, 3, 7, 7, 7, 3, 1, 3, 3, 3, 3, 5, 1, 5, 1, 4, 6, 6, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 3, 7, 7, 5, 3, 1, 7, 7, 7, 7, 3, 5, 7, 1, 7, 1, 3, 1, 4, 7, 6, 2, 6, 4, 4, 2, 4, 2, 0, 2, 6, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 5, 7, 3, 7, 3, 7, 3, 7, 7, 7, 3, 3, 7, 7, 7, 7, 1, 7, 7, 1, 7, 3, 3, 1, 6, 6, 6, 2, 4, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 3, 3, 3, 7, 7, 7, 7, 3, 3, 7, 3, 7, 1, 1, 1, 6, 6, 4, 2, 2, 6, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 5, 5, 1, 1, 5, 7, 5, 5, 3, 3, 5, 3, 5, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 3, 5, 5, 5, 5, 3, 5, 3, 3, 1, 3, 5, 1, 3, 3, 3, 3, 1, 5, 3, 3, 1, 2, 2, 2, 2, 2, 4, 4, 2, 2, 4, 2, 4, 2, 6, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 3, 3, 5, 1, 7, 3, 3, 3, 5, 5, 3, 7, 5, 5, 1, 3, 5, 5, 3, 7, 7, 5, 1, 2, 6, 6, 7, 4, 2, 2, 2, 2, 2, 2, 6, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 5, 5, 3, 7, 5, 7, 3, 7, 3, 3, 7, 7, 7, 1, 5, 1, 7, 5, 7, 7, 1, 1, 2, 4, 4, 6, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 3, 7, 3, 7, 3, 5, 7, 7, 5, 3, 3, 3, 7, 5, 7, 5, 1, 3, 4, 6, 4, 6, 2, 2, 2, 2, 2, 2, 0, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 8, 7, 7, 7, 5, 5, 8, 5, 7, 5, 7, 3, 7, 5, 7, 3, 1, 5, 5, 7, 1, 5, 5, 1, 1, 2, 6, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 7, 5, 7, 5, 5, 5, 7, 5, 1, 5, 1, 7, 1, 5, 3, 3, 1, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 8, 7, 7, 5, 7, 7, 7, 7, 5, 5, 5, 5, 3, 5, 5, 5, 7, 1, 5, 3, 5, 3, 3, 5, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 7, 5, 7, 5, 3, 3, 3, 5, 7, 3, 1, 1, 3, 3, 1, 5, 3, 1, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 5, 5, 7, 1, 7, 5, 5, 1, 3, 5, 7, 5, 3, 1, 3, 5, 1, 1, 3, 1, 1, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 7, 5, 7, 7, 3, 7, 5, 3, 3, 1, 3, 1, 5, 1, 3, 3, 5, 1, 5, 5, 1, 1, 4, 4, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 3, 5, 5, 7, 5, 5, 3, 5, 3, 1, 5, 5, 5, 3, 5, 3, 3, 1, 5, 5, 1, 1, 4, 4, 4, 4, 4, 2, 4, 4, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 5, 5, 3, 5, 5, 7, 5, 7, 3, 5, 5, 5, 3, 5, 3, 1, 5, 5, 7, 5, 1, 1, 4, 6, 2, 6, 2, 0, 2, 2, 4, 2, 2, 2, 4, 2, 4, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 8, 7, 7, 7, 7, 7, 7, 5, 7, 3, 7, 3, 7, 5, 7, 7, 5, 5, 7, 3, 1, 7, 5, 7, 5, 1, 1, 2, 6, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 8, 8, 3, 7, 7, 5, 7, 7, 7, 1, 7, 3, 7, 7, 7, 7, 7, 1, 1, 7, 3, 7, 3, 1, 1, 4, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 5, 8, 7, 5, 7, 3, 7, 1, 7, 3, 7, 7, 5, 7, 5, 3, 1, 7, 3, 5, 5, 1, 1, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 7, 7, 5, 7, 5, 7, 1, 3, 3, 3, 3, 1, 5, 5, 1, 1, 3, 1, 5, 5, 1, 1, 4, 4, 2, 2, 4, 4, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 3, 7, 5, 3, 7, 3, 7, 1, 3, 1, 3, 5, 5, 1, 3, 3, 1, 3, 1, 3, 5, 3, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 3, 7, 7, 5, 7, 3, 7, 3, 3, 1, 1, 3, 3, 1, 3, 3, 3, 1, 1, 3, 3, 1, 1, 2, 4, 2, 4, 2, 2, 2, 2, 2, 4, 4, 4, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 3, 7, 8, 3, 7, 7, 3, 7, 7, 7, 7, 7, 3, 5, 8, 7, 3, 7, 3, 1, 7, 5, 1, 5, 7, 1, 7, 6, 2, 0, 6, 2, 0, 0, 0, 2, 2, 2, 4, 2, 4, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 3, 8, 8, 1, 7, 7, 1, 7, 8, 7, 8, 7, 1, 1, 8, 7, 1, 7, 7, 0, 7, 7, 0, 5, 3, 0, 7, 6, 0, 2, 6, 2, 2, 0, 2, 2, 0, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 1, 8, 8, 1, 8, 8, 3, 7, 8, 5, 8, 7, 5, 1, 7, 7, 1, 7, 3, 1, 7, 5, 1, 5, 5, 0, 7, 6, 2, 0, 4, 2, 2, 0, 2, 2, 0, 0, 4, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 3, 7, 8, 1, 7, 7, 3, 7, 7, 7, 8, 7, 5, 3, 8, 7, 1, 7, 5, 1, 7, 7, 1, 5, 3, 1, 7, 6, 2, 2, 7, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 3, 7, 8, 1, 7, 7, 3, 7, 7, 7, 7, 7, 5, 3, 7, 7, 1, 7, 5, 3, 7, 7, 5, 7, 5, 1, 7, 6, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 3, 8, 8, 1, 8, 7, 3, 7, 7, 8, 8, 7, 3, 3, 7, 7, 1, 5, 1, 1, 7, 7, 1, 5, 5, 1, 7, 7, 2, 0, 6, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 3, 8, 8, 1, 8, 8, 3, 7, 7, 8, 8, 7, 3, 1, 7, 7, 1, 7, 5, 3, 7, 7, 3, 7, 7, 1, 7, 6, 2, 2, 6, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 3, 8, 8, 1, 7, 7, 5, 7, 7, 8, 8, 7, 5, 1, 7, 5, 1, 7, 7, 3, 7, 7, 1, 7, 7, 1, 7, 4, 2, 2, 6, 4, 2, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 5, 7, 7, 5, 7, 7, 7, 8, 7, 3, 3, 7, 7, 1, 7, 3, 3, 7, 5, 1, 5, 5, 1, 7, 6, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 7, 5, 5, 5, 3, 7, 3, 1, 5, 3, 1, 1, 3, 3, 3, 5, 3, 3, 3, 3, 5, 5, 3, 1, 4, 2, 2, 2, 6, 4, 4, 2, 2, 6, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 7, 7, 7, 5, 7, 3, 7, 3, 3, 7, 7, 7, 5, 5, 5, 5, 7, 3, 7, 5, 5, 7, 7, 5, 1, 7, 3, 4, 4, 7, 4, 6, 2, 4, 4, 4, 4, 2, 2, 2, 2, 6, 4, 4, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 8, 5, 8, 5, 7, 7, 7, 7, 5, 5, 7, 7, 8, 7, 7, 7, 5, 7, 7, 5, 3, 5, 5, 6, 2, 7, 2, 6, 4, 2, 4, 2, 2, 2, 4, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 7, 3, 8, 3, 5, 8, 3, 7, 7, 5, 5, 7, 7, 7, 7, 7, 5, 8, 7, 5, 3, 5, 3, 6, 2, 6, 2, 6, 4, 2, 4, 2, 6, 2, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 8, 1, 7, 7, 7, 7, 3, 7, 5, 5, 7, 7, 8, 7, 7, 7, 7, 5, 5, 5, 1, 4, 2, 6, 2, 6, 2, 2, 2, 2, 7, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 7, 7, 7, 7, 7, 3, 7, 1, 3, 7, 5, 7, 3, 5, 3, 5, 7, 3, 7, 5, 3, 5, 7, 7, 3, 7, 1, 2, 2, 6, 2, 6, 2, 2, 6, 2, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 5, 7, 7, 3, 7, 3, 7, 7, 5, 7, 5, 5, 3, 5, 7, 1, 7, 1, 3, 3, 5, 5, 1, 5, 1, 6, 2, 6, 4, 6, 2, 4, 4, 2, 6, 0, 4, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 8, 1, 7, 7, 5, 7, 5, 5, 3, 5, 7, 3, 7, 1, 3, 3, 5, 7, 5, 5, 1, 4, 2, 6, 2, 6, 2, 2, 6, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 5, 5, 7, 3, 8, 1, 7, 7, 5, 7, 3, 7, 3, 7, 7, 1, 7, 1, 5, 3, 7, 5, 5, 3, 0, 7, 2, 7, 2, 2, 2, 6, 2, 2, 6, 2, 6, 2, 2, 2, 4, 0, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 3, 7, 5, 7, 7, 1, 7, 1, 7, 7, 7, 7, 1, 7, 5, 7, 7, 3, 7, 1, 3, 1, 7, 3, 1, 5, 0, 6, 0, 7, 2, 2, 4, 4, 2, 0, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 5, 7, 5, 7, 7, 1, 8, 1, 5, 7, 7, 7, 1, 7, 3, 7, 7, 7, 7, 1, 5, 3, 7, 1, 1, 7, 1, 6, 2, 6, 2, 2, 6, 4, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 3, 7, 7, 1, 5, 3, 3, 7, 5, 1, 5, 7, 1, 7, 2, 6, 4, 6, 2, 4, 6, 2, 2, 2, 4, 4, 2, 2, 6, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 8, 5, 3, 7, 3, 7, 7, 7, 7, 7, 5, 1, 7, 7, 1, 7, 3, 3, 5, 3, 5, 7, 7, 1, 6, 4, 6, 2, 7, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 8, 5, 3, 7, 5, 7, 7, 7, 5, 3, 5, 1, 7, 7, 3, 7, 1, 3, 7, 7, 5, 5, 5, 1, 7, 2, 6, 2, 2, 4, 4, 2, 2, 2, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 8, 7, 3, 7, 5, 7, 7, 7, 7, 5, 5, 3, 5, 7, 5, 5, 1, 3, 5, 7, 3, 5, 5, 1, 7, 2, 7, 2, 4, 6, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 8, 7, 5, 7, 3, 7, 7, 7, 7, 5, 7, 3, 7, 7, 1, 7, 1, 3, 3, 5, 5, 5, 3, 3, 7, 4, 6, 2, 2, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 8, 7, 5, 8, 1, 7, 7, 7, 7, 5, 5, 1, 7, 7, 3, 3, 1, 1, 3, 7, 1, 1, 3, 1, 7, 2, 6, 2, 4, 2, 6, 4, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 8, 7, 5, 7, 1, 7, 5, 7, 3, 3, 3, 1, 5, 5, 3, 3, 1, 1, 1, 3, 3, 3, 3, 1, 6, 2, 6, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 8, 7, 3, 7, 3, 5, 5, 5, 5, 3, 1, 3, 5, 3, 1, 1, 3, 3, 3, 1, 3, 1, 3, 1, 4, 2, 4, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 8, 7, 5, 7, 3, 5, 5, 7, 5, 5, 5, 5, 5, 5, 3, 3, 1, 3, 3, 3, 3, 1, 5, 1, 6, 4, 2, 6, 4, 2, 4, 2, 2, 2, 2, 6, 2, 6, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 7, 3, 5, 5, 7, 3, 3, 1, 3, 5, 1, 5, 5, 3, 3, 5, 1, 1, 1, 1, 3, 4, 2, 7, 2, 4, 2, 2, 4, 4, 2, 6, 6, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 3, 7, 3, 3, 3, 7, 3, 5, 3, 1, 7, 5, 1, 3, 1, 3, 1, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 3, 5, 5, 5, 3, 5, 5, 3, 3, 3, 3, 1, 1, 3, 1, 1, 3, 3, 1, 3, 3, 1, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 5, 3, 5, 3, 7, 5, 5, 3, 3, 5, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 3, 2, 2, 4, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 5, 7, 7, 5, 7, 3, 7, 7, 7, 5, 3, 3, 7, 3, 7, 5, 5, 3, 7, 3, 7, 7, 0, 0, 6, 2, 7, 6, 0, 0, 4, 0, 2, 2, 4, 2, 0, 6, 4, 2, 2, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 8, 3, 3, 5, 7, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 3, 1, 3, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 7, 5, 5, 3, 7, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 1, 1, 3, 3, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 8, 7, 7, 5, 5, 3, 3, 3, 5, 5, 3, 1, 5, 3, 5, 1, 3, 1, 1, 5, 3, 1, 3, 1, 1, 4, 4, 2, 4, 4, 2, 6, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 5, 5, 7, 5, 3, 3, 5, 3, 5, 3, 1, 5, 1, 5, 3, 3, 3, 1, 1, 1, 1, 1, 3, 3, 4, 4, 4, 6, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 5, 8, 5, 3, 7, 5, 3, 5, 5, 5, 7, 3, 1, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 3, 3, 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 8, 7, 5, 7, 7, 3, 5, 3, 5, 7, 5, 5, 5, 5, 3, 5, 3, 1, 3, 1, 3, 1, 1, 3, 3, 4, 4, 2, 6, 6, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 5, 7, 7, 5, 7, 1, 7, 3, 5, 1, 3, 3, 5, 3, 3, 3, 1, 1, 3, 1, 1, 5, 5, 4, 4, 4, 2, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 5, 7, 7, 7, 5, 5, 3, 7, 7, 5, 3, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 5, 3, 1, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 7, 7, 1, 5, 1, 7, 7, 5, 3, 1, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 3, 4, 4, 2, 6, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 7, 7, 5, 7, 7, 5, 7, 7, 5, 5, 3, 3, 3, 5, 1, 3, 3, 3, 5, 5, 5, 1, 5, 3, 7, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 4, 6, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 5, 7, 5, 7, 7, 7, 5, 7, 5, 1, 3, 7, 3, 3, 3, 3, 3, 7, 1, 1, 1, 3, 7, 4, 2, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 3, 5, 7, 7, 7, 7, 7, 5, 5, 3, 1, 5, 3, 3, 1, 3, 1, 5, 1, 3, 3, 3, 5, 6, 4, 2, 4, 2, 2, 4, 2, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 8, 7, 8, 7, 7, 5, 5, 7, 7, 7, 5, 7, 3, 3, 3, 5, 3, 1, 1, 3, 1, 3, 1, 1, 1, 1, 3, 6, 6, 2, 2, 6, 2, 2, 2, 4, 2, 4, 4, 4, 4, 2, 2, 4, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 3, 7, 5, 7, 7, 7, 7, 3, 3, 3, 1, 3, 1, 1, 3, 3, 1, 3, 1, 1, 1, 1, 5, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 8, 5, 7, 3, 5, 7, 5, 3, 5, 3, 3, 3, 5, 5, 1, 1, 1, 5, 5, 1, 1, 3, 1, 7, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 8, 7, 8, 8, 5, 7, 7, 7, 7, 7, 3, 5, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 3, 3, 3, 5, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 8, 7, 5, 7, 3, 7, 7, 5, 5, 3, 3, 3, 5, 3, 1, 1, 1, 3, 3, 3, 3, 3, 1, 5, 6, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 3, 7, 7, 5, 7, 7, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 5, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 8, 7, 3, 5, 5, 7, 7, 5, 1, 7, 3, 3, 5, 3, 3, 1, 1, 1, 3, 5, 1, 1, 3, 1, 7, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 5, 7, 7, 5, 3, 5, 3, 3, 5, 3, 1, 5, 1, 3, 5, 1, 3, 1, 1, 5, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 6, 6, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 8, 7, 5, 5, 5, 5, 5, 5, 1, 3, 3, 1, 3, 3, 5, 1, 3, 1, 3, 3, 1, 3, 1, 3, 1, 4, 4, 2, 2, 2, 4, 4, 4, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 4, 4, 2, 2, 4, 4, 4, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 3, 7, 5, 3, 1, 3, 5, 5, 3, 5, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 4, 4, 2, 2, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 5, 7, 7, 7, 7, 7, 3, 7, 5, 5, 5, 3, 1, 1, 5, 3, 1, 5, 3, 1, 1, 1, 1, 3, 3, 3, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 7, 5, 7, 5, 7, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 5, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 5, 8, 7, 5, 5, 7, 3, 7, 3, 3, 3, 3, 3, 3, 5, 5, 3, 3, 1, 1, 3, 1, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 7, 5, 7, 7, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 5, 8, 7, 7, 5, 7, 3, 7, 3, 3, 1, 3, 3, 3, 5, 3, 1, 3, 3, 3, 3, 1, 3, 1, 3, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 5, 7, 3, 7, 3, 3, 3, 1, 3, 5, 5, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 5, 5, 5, 3, 5, 1, 3, 3, 3, 1, 3, 3, 3, 1, 5, 3, 3, 5, 5, 3, 3, 1, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 7, 5, 7, 5, 7, 7, 5, 3, 5, 5, 3, 3, 3, 3, 3, 5, 3, 7, 5, 3, 3, 2, 6, 4, 7, 4, 4, 6, 2, 2, 4, 2, 2, 4, 4, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 5, 7, 5, 5, 5, 7, 5, 3, 1, 5, 1, 5, 3, 7, 3, 5, 3, 4, 6, 4, 6, 2, 4, 2, 2, 2, 2, 2, 4, 6, 6, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 3, 5, 7, 5, 3, 5, 7, 7, 5, 1, 3, 3, 5, 1, 7, 5, 5, 1, 4, 6, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 8, 7, 5, 5, 7, 5, 7, 7, 5, 5, 5, 7, 5, 3, 3, 1, 3, 3, 1, 7, 3, 5, 3, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 1, 5, 7, 7, 5, 1, 3, 1, 5, 3, 5, 5, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 8, 7, 7, 7, 3, 3, 5, 7, 7, 3, 1, 3, 3, 3, 3, 5, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 3, 7, 8, 5, 7, 7, 5, 3, 3, 7, 7, 3, 1, 3, 3, 5, 3, 5, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 7, 7, 1, 5, 7, 5, 5, 5, 1, 1, 3, 3, 5, 3, 1, 1, 1, 3, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 5, 5, 3, 7, 5, 3, 5, 3, 3, 3, 1, 3, 3, 3, 1, 1, 5, 3, 3, 3, 3, 3, 4, 2, 2, 6, 4, 4, 4, 2, 2, 2, 4, 2, 6, 6, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 7, 3, 5, 5, 3, 5, 5, 1, 5, 7, 5, 3, 5, 3, 3, 3, 3, 3, 2, 4, 2, 7, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 7, 7, 5, 5, 7, 7, 5, 3, 7, 7, 3, 5, 3, 1, 3, 3, 3, 1, 1, 3, 3, 1, 1, 3, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 7, 5, 5, 5, 5, 5, 3, 5, 5, 3, 5, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 2, 2, 4, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 1, 3, 3, 5, 5, 3, 3, 3, 1, 1, 3, 1, 3, 1, 1, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 3, 7, 3, 3, 3, 3, 5, 3, 5, 3, 1, 3, 1, 3, 3, 1, 1, 1, 1, 3, 3, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 3, 7, 3, 5, 3, 5, 3, 3, 3, 1, 1, 1, 1, 1, 3, 1, 1, 3, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 7, 7, 5, 3, 3, 7, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 3, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 1, 1, 3, 1, 3, 2, 2, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 5, 5, 3, 5, 5, 5, 3, 5, 3, 3, 3, 3, 1, 1, 3, 1, 1, 3, 5, 3, 1, 3, 3, 3, 1, 2, 2, 6, 4, 2, 2, 2, 2, 6, 2, 4, 4, 4, 2, 4, 2, 4, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 5, 7, 7, 7, 5, 5, 7, 5, 3, 5, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 1, 3, 1, 1, 3, 4, 4, 6, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 5, 7, 5, 5, 5, 5, 7, 3, 3, 3, 3, 3, 3, 3, 7, 3, 3, 1, 1, 3, 1, 3, 1, 1, 1, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 5, 7, 7, 7, 7, 5, 5, 3, 7, 3, 3, 1, 5, 3, 3, 5, 5, 1, 3, 3, 1, 1, 1, 1, 3, 1, 1, 4, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 5, 7, 7, 7, 5, 1, 5, 3, 3, 3, 3, 5, 3, 3, 3, 3, 1, 1, 1, 3, 1, 3, 3, 1, 1, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 5, 5, 5, 3, 7, 3, 3, 3, 5, 1, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 8, 7, 7, 5, 1, 7, 3, 3, 3, 3, 5, 3, 5, 5, 1, 3, 3, 1, 1, 1, 1, 1, 3, 3, 2, 4, 2, 4, 2, 2, 4, 2, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 5, 7, 5, 3, 5, 3, 3, 1, 3, 1, 3, 5, 5, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 3, 7, 3, 5, 3, 3, 5, 3, 3, 1, 3, 1, 3, 5, 3, 3, 3, 1, 1, 1, 1, 3, 1, 3, 3, 4, 4, 2, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 7, 5, 3, 5, 5, 5, 1, 5, 5, 3, 3, 3, 1, 3, 3, 3, 7, 3, 7, 3, 1, 1, 3, 2, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 5, 7, 7, 3, 7, 5, 5, 5, 7, 5, 5, 5, 7, 5, 5, 3, 5, 5, 5, 5, 5, 3, 1, 3, 6, 6, 6, 6, 4, 2, 2, 4, 4, 6, 2, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 7, 5, 7, 7, 7, 3, 7, 5, 5, 5, 7, 5, 3, 3, 3, 5, 5, 3, 5, 5, 1, 5, 6, 6, 2, 6, 2, 2, 2, 2, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 5, 7, 7, 7, 7, 7, 5, 7, 7, 5, 5, 7, 5, 5, 5, 7, 5, 3, 3, 5, 3, 7, 3, 5, 5, 3, 1, 4, 6, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 6, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 5, 7, 1, 3, 7, 5, 3, 1, 5, 3, 7, 5, 5, 5, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 3, 5, 7, 7, 3, 5, 7, 5, 3, 5, 3, 5, 7, 3, 5, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 3, 5, 7, 7, 3, 5, 7, 5, 5, 3, 3, 3, 5, 5, 5, 3, 1, 3, 4, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 3, 7, 8, 3, 5, 7, 5, 5, 3, 5, 7, 1, 5, 3, 3, 5, 3, 3, 3, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 5, 7, 5, 1, 3, 5, 5, 1, 1, 3, 3, 7, 3, 3, 3, 1, 1, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 7, 7, 3, 3, 5, 3, 3, 3, 3, 3, 3, 5, 3, 5, 3, 1, 3, 3, 1, 1, 3, 3, 1, 4, 2, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 7, 7, 5, 7, 3, 7, 3, 3, 3, 5, 7, 1, 5, 1, 3, 5, 5, 5, 3, 3, 3, 1, 3, 2, 2, 2, 4, 2, 4, 2, 4, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 7, 7, 8, 7, 7, 5, 8, 5, 7, 7, 7, 5, 3, 7, 5, 7, 3, 3, 3, 3, 7, 1, 5, 3, 1, 1, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 7, 3, 7, 3, 5, 7, 1, 7, 1, 1, 3, 3, 3, 1, 3, 3, 1, 1, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 7, 7, 5, 8, 5, 7, 7, 7, 5, 3, 7, 1, 7, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 2, 4, 4, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 5, 7, 5, 3, 3, 1, 7, 3, 5, 1, 3, 1, 3, 1, 1, 1, 3, 3, 3, 2, 4, 2, 4, 2, 4, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 7, 3, 7, 7, 7, 7, 5, 5, 5, 5, 3, 7, 1, 3, 1, 5, 3, 1, 3, 3, 3, 1, 4, 4, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 8, 7, 7, 5, 7, 7, 7, 5, 7, 7, 7, 7, 3, 5, 3, 7, 5, 5, 3, 1, 3, 3, 1, 1, 3, 1, 3, 3, 2, 2, 4, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 7, 3, 7, 7, 7, 7, 7, 3, 5, 7, 3, 5, 3, 1, 1, 3, 3, 1, 5, 3, 1, 3, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 1, 3, 3, 5, 7, 3, 3, 3, 1, 3, 1, 3, 3, 5, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 5, 3, 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 7, 3, 3, 3, 3, 5, 1, 1, 1, 5, 5, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 1, 5, 3, 1, 1, 1, 5, 1, 1, 3, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 5, 5, 3, 3, 3, 3, 3, 1, 1, 5, 3, 1, 1, 3, 3, 1, 3, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 5, 3, 3, 3, 3, 3, 1, 3, 7, 3, 3, 1, 3, 1, 1, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 3, 3, 7, 3, 5, 3, 1, 3, 1, 1, 3, 5, 3, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 5, 3, 3, 3, 1, 1, 1, 5, 3, 1, 3, 3, 5, 3, 1, 3, 1, 1, 1, 1, 2, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 5, 5, 3, 1, 3, 1, 1, 1, 5, 3, 1, 1, 1, 3, 1, 1, 3, 1, 1, 1, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 5, 5, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 3, 5, 3, 3, 3, 3, 1, 5, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 3, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 3, 3, 1, 3, 1, 1, 1, 5, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 5, 3, 1, 1, 1, 5, 1, 1, 1, 1, 3, 3, 1, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 1, 1, 1, 1, 7, 5, 1, 1, 3, 5, 1, 3, 3, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 5, 3, 3, 3, 3, 1, 3, 1, 5, 3, 1, 1, 3, 3, 1, 3, 3, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 5, 5, 3, 1, 3, 3, 1, 3, 5, 5, 1, 1, 1, 3, 1, 1, 1, 1, 3, 1, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 7, 3, 5, 3, 1, 3, 1, 1, 3, 5, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 4, 4, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 7, 5, 3, 5, 3, 1, 1, 1, 3, 1, 5, 1, 1, 3, 1, 3, 1, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 1, 1, 3, 1, 5, 3, 1, 5, 1, 3, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 3, 5, 3, 5, 3, 3, 3, 3, 1, 1, 1, 1, 7, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 3, 3, 7, 3, 5, 3, 1, 1, 1, 3, 1, 5, 3, 1, 1, 3, 3, 1, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 1, 3, 1, 3, 1, 7, 5, 1, 1, 3, 3, 1, 1, 1, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 1, 5, 3, 1, 1, 3, 5, 1, 3, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 5, 5, 3, 3, 1, 1, 1, 1, 3, 7, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 5, 3, 3, 1, 3, 1, 1, 3, 7, 3, 1, 1, 3, 5, 3, 1, 1, 1, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 7, 3, 5, 3, 3, 1, 1, 3, 3, 7, 3, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 5, 3, 5, 3, 3, 3, 1, 1, 3, 7, 3, 1, 3, 3, 3, 3, 1, 3, 1, 1, 1, 3, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 3, 5, 3, 5, 7, 5, 5, 5, 1, 1, 1, 3, 1, 5, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 7, 3, 3, 5, 5, 3, 1, 3, 1, 5, 3, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 5, 3, 3, 3, 3, 1, 1, 1, 3, 5, 3, 1, 1, 1, 3, 1, 1, 1, 1, 3, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 5, 3, 3, 1, 3, 1, 3, 3, 5, 3, 1, 1, 5, 3, 3, 3, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 7, 3, 5, 3, 3, 3, 1, 3, 1, 1, 1, 5, 3, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 1, 1, 1, 1, 1, 5, 5, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 5, 3, 3, 3, 1, 1, 1, 3, 5, 5, 1, 1, 3, 3, 1, 3, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 3, 3, 1, 3, 1, 1, 3, 7, 5, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 7, 3, 5, 3, 1, 3, 1, 3, 5, 5, 3, 1, 1, 1, 3, 3, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 5, 5, 3, 1, 1, 3, 1, 5, 3, 1, 1, 3, 3, 3, 1, 1, 3, 1, 1, 1, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 7, 7, 5, 3, 3, 3, 1, 1, 3, 3, 5, 3, 1, 1, 1, 3, 1, 1, 3, 1, 1, 1, 1, 2, 2, 4, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 7, 3, 3, 3, 3, 3, 1, 1, 1, 7, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 3, 3, 5, 3, 1, 1, 3, 1, 5, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 7, 3, 5, 5, 3, 3, 1, 1, 3, 5, 3, 1, 1, 3, 3, 1, 1, 3, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 3, 1, 3, 3, 1, 1, 1, 5, 3, 1, 1, 3, 3, 3, 1, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 1, 7, 3, 1, 1, 1, 5, 3, 1, 1, 1, 5, 5, 0, 0, 0, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 1, 1, 1, 1, 5, 3, 1, 1, 3, 3, 1, 1, 3, 3, 3, 5, 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 5, 3, 3, 1, 1, 1, 1, 1, 5, 3, 1, 1, 3, 3, 1, 3, 3, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 7, 3, 3, 5, 5, 3, 3, 1, 3, 1, 1, 3, 7, 5, 1, 1, 3, 3, 1, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 5, 3, 3, 3, 1, 3, 1, 7, 3, 1, 1, 1, 3, 3, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 5, 3, 3, 3, 3, 1, 3, 5, 3, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 3, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 7, 3, 3, 3, 1, 1, 1, 1, 1, 5, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 3, 3, 7, 3, 3, 3, 3, 1, 1, 1, 3, 5, 3, 1, 5, 3, 1, 1, 1, 1, 1, 3, 1, 3, 2, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 3, 5, 3, 3, 3, 3, 1, 3, 1, 1, 5, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, 1, 1, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 5, 3, 3, 3, 3, 1, 1, 3, 5, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 2, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 3, 5, 3, 3, 3, 1, 3, 1, 1, 1, 7, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 5, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 1, 1, 5, 5, 1, 1, 1, 5, 1, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 5, 3, 3, 3, 1, 1, 3, 1, 7, 3, 1, 3, 1, 3, 1, 1, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 3, 3, 1, 3, 1, 1, 3, 5, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 5, 3, 3, 3, 1, 3, 3, 7, 3, 1, 1, 1, 5, 1, 1, 1, 1, 5, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 5, 3, 3, 1, 1, 1, 1, 5, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 7, 7, 3, 5, 3, 1, 3, 1, 1, 3, 5, 3, 1, 1, 1, 1, 1, 3, 1, 1, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 7, 5, 3, 3, 3, 3, 1, 1, 3, 5, 3, 1, 1, 3, 1, 3, 1, 1, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 1, 1, 3, 1, 7, 1, 1, 1, 1, 3, 3, 1, 3, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 5, 3, 3, 3, 3, 1, 1, 1, 5, 3, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 3, 3, 5, 1, 3, 3, 1, 1, 3, 5, 3, 1, 1, 3, 3, 3, 1, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 1, 5, 3, 3, 5, 1, 1, 1, 1, 1, 7, 3, 1, 1, 1, 5, 1, 1, 1, 1, 3, 3, 1, 0, 2, 2, 0, 0, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 1, 1, 5, 5, 1, 1, 3, 3, 1, 1, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 3, 3, 3, 1, 1, 1, 1, 3, 7, 3, 1, 1, 3, 3, 1, 3, 3, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 5, 3, 3, 3, 3, 3, 1, 3, 5, 3, 1, 1, 3, 3, 3, 3, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 5, 3, 3, 3, 5, 1, 3, 5, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 7, 5, 3, 3, 5, 1, 3, 1, 3, 1, 5, 3, 1, 3, 3, 1, 3, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 7, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 3, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 3, 3, 3, 3, 1, 1, 1, 1, 5, 3, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 5, 3, 3, 3, 1, 1, 3, 5, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 3, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 5, 3, 5, 3, 3, 5, 1, 1, 1, 3, 3, 5, 3, 1, 1, 3, 3, 1, 1, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 7, 3, 3, 3, 3, 3, 1, 1, 1, 5, 5, 1, 1, 3, 5, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 4, 4, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 5, 3, 3, 1, 3, 1, 1, 1, 7, 3, 1, 1, 3, 3, 1, 1, 3, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 3, 3, 1, 1, 1, 1, 3, 5, 5, 1, 1, 3, 3, 1, 3, 3, 3, 3, 1, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 1, 5, 3, 3, 1, 1, 3, 3, 7, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 5, 5, 3, 3, 3, 3, 1, 3, 5, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 7, 5, 3, 5, 3, 1, 1, 1, 1, 1, 7, 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 3, 3, 3, 3, 1, 3, 3, 7, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 5, 5, 3, 3, 3, 3, 1, 1, 1, 1, 5, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1, 3, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3, 3, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 3, 3, 1, 3, 1, 1, 1, 7, 5, 1, 0, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 1, 1, 1, 5, 3, 1, 1, 3, 3, 1, 3, 3, 1, 3, 1, 3, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 5, 3, 3, 1, 1, 1, 1, 1, 7, 5, 1, 1, 3, 3, 1, 1, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 7, 5, 3, 3, 3, 1, 1, 1, 5, 5, 5, 1, 1, 3, 3, 1, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 5, 3, 3, 1, 1, 1, 3, 7, 3, 1, 1, 3, 3, 1, 1, 3, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 4, 2, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 3, 5, 3, 3, 3, 3, 1, 3, 5, 3, 1, 5, 3, 1, 3, 1, 1, 1, 1, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 7, 7, 3, 3, 3, 3, 3, 1, 1, 1, 5, 1, 1, 3, 3, 3, 1, 1, 1, 1, 3, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 3, 3, 3, 1, 3, 3, 1, 5, 3, 1, 3, 1, 3, 3, 1, 1, 1, 1, 1, 3, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 1, 3, 1, 1, 5, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 1, 5, 3, 3, 3, 3, 3, 1, 1, 3, 5, 3, 1, 1, 1, 3, 1, 3, 1, 1, 1, 3, 1, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 3, 5, 3, 7, 3, 3, 3, 3, 3, 1, 1, 0, 7, 5, 1, 1, 3, 5, 1, 1, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 3, 5, 3, 5, 1, 3, 3, 1, 1, 3, 5, 3, 1, 1, 3, 5, 1, 3, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 5, 5, 3, 1, 1, 1, 1, 1, 7, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 4, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 7, 5, 3, 3, 3, 3, 1, 3, 3, 5, 3, 1, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 5, 3, 3, 3, 1, 3, 3, 5, 3, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 0, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 7, 3, 5, 3, 3, 3, 1, 1, 3, 7, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 5, 3, 3, 3, 1, 3, 1, 5, 3, 1, 1, 1, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 7, 5, 5, 3, 1, 1, 1, 1, 1, 5, 5, 1, 1, 3, 3, 3, 1, 1, 3, 1, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 3, 5, 3, 3, 1, 3, 3, 3, 5, 3, 1, 1, 1, 5, 1, 3, 1, 1, 1, 3, 3, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 5, 3, 3, 3, 3, 1, 1, 3, 5, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 3, 3, 3, 3, 3, 1, 1, 5, 1, 1, 1, 1, 3, 3, 1, 1, 3, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 3, 7, 1, 3, 5, 3, 3, 3, 1, 1, 5, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 3, 1, 1, 1, 5, 3, 1, 3, 3, 3, 1, 1, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 5, 3, 3, 3, 1, 1, 1, 3, 1, 5, 3, 1, 3, 3, 3, 1, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 3, 3, 3, 1, 1, 3, 1, 7, 5, 1, 1, 1, 3, 3, 1, 1, 1, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 5, 3, 3, 1, 1, 1, 3, 7, 3, 1, 3, 1, 3, 1, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 3, 5, 3, 7, 3, 5, 3, 5, 1, 1, 1, 3, 5, 3, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 5, 5, 3, 1, 1, 1, 1, 3, 5, 3, 1, 5, 3, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 3, 5, 1, 1, 1, 1, 1, 3, 5, 3, 1, 3, 3, 3, 3, 1, 1, 1, 3, 1, 1, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 7, 3, 5, 3, 3, 1, 1, 3, 1, 5, 3, 1, 3, 1, 3, 1, 1, 3, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 3, 7, 3, 3, 3, 3, 3, 1, 3, 1, 5, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 1, 1, 1, 3, 5, 5, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 5, 3, 3, 3, 3, 1, 1, 3, 1, 5, 3, 1, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 3, 7, 5, 3, 3, 3, 1, 1, 1, 3, 5, 3, 1, 1, 3, 3, 1, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 1, 5, 3, 3, 1, 1, 3, 3, 7, 3, 1, 1, 1, 3, 3, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 3, 3, 3, 3, 1, 1, 3, 7, 3, 1, 1, 3, 3, 1, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 3, 3, 3, 1, 1, 1, 3, 3, 5, 3, 1, 1, 3, 3, 1, 1, 1, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 7, 5, 5, 3, 1, 1, 1, 1, 3, 5, 3, 1, 1, 3, 3, 3, 1, 1, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 3, 5, 3, 3, 1, 1, 3, 3, 5, 3, 1, 1, 3, 3, 3, 3, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 5, 5, 3, 1, 3, 1, 1, 3, 5, 5, 1, 1, 3, 3, 3, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 5, 3, 3, 3, 3, 3, 1, 1, 3, 5, 1, 1, 1, 1, 3, 3, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 5, 3, 3, 7, 3, 3, 3, 3, 3, 3, 1, 1, 7, 5, 1, 1, 3, 3, 3, 1, 3, 1, 3, 3, 3, 2, 2, 0, 2, 2, 2, 4, 4, 4, 2, 2, 4, 4, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 7, 3, 5, 7, 3, 3, 3, 3, 1, 1, 3, 3, 7, 3, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 4, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 5, 3, 3, 3, 3, 1, 1, 1, 3, 5, 5, 1, 3, 3, 3, 1, 1, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 5, 3, 3, 3, 3, 3, 1, 1, 7, 5, 1, 1, 3, 3, 3, 1, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 5, 3, 3, 3, 1, 3, 3, 5, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 3, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 7, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 3, 7, 7, 3, 5, 3, 3, 3, 1, 1, 3, 5, 3, 1, 1, 3, 5, 1, 1, 1, 1, 1, 3, 3, 2, 2, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 7, 3, 5, 3, 3, 1, 1, 3, 3, 5, 1, 1, 1, 1, 3, 3, 1, 1, 1, 3, 1, 1, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 5, 3, 5, 3, 3, 1, 3, 1, 1, 5, 3, 1, 1, 3, 3, 1, 1, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 5, 3, 5, 3, 3, 1, 1, 3, 5, 3, 3, 3, 5, 3, 3, 1, 1, 1, 1, 3, 3, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 1, 1, 1, 1, 7, 5, 1, 1, 1, 3, 3, 1, 1, 1, 5, 5, 1, 2, 2, 0, 2, 2, 2, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 3, 5, 3, 5, 3, 3, 1, 1, 1, 1, 5, 5, 1, 1, 3, 3, 3, 3, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 3, 3, 3, 3, 1, 3, 1, 5, 3, 1, 1, 3, 1, 1, 3, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 5, 3, 3, 3, 3, 1, 1, 3, 5, 5, 1, 1, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 3, 3, 3, 1, 3, 1, 1, 5, 1, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 7, 5, 3, 5, 3, 1, 3, 1, 1, 1, 5, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 3, 3, 3, 3, 3, 1, 1, 1, 5, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 4, 2, 4, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 1, 1, 5, 3, 1, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 7, 3, 3, 5, 3, 3, 1, 3, 3, 5, 1, 1, 3, 3, 3, 1, 3, 1, 1, 1, 1, 3, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 3, 5, 5, 3, 1, 3, 3, 3, 3, 3, 5, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 7, 3, 3, 3, 3, 3, 1, 1, 1, 5, 3, 1, 1, 1, 3, 3, 1, 3, 3, 1, 3, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 5, 3, 3, 3, 1, 1, 1, 5, 3, 1, 1, 3, 3, 3, 3, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 1, 7, 3, 1, 1, 3, 3, 1, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 5, 5, 3, 1, 3, 1, 1, 3, 5, 5, 1, 1, 3, 3, 1, 3, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 7, 1, 5, 3, 3, 5, 5, 1, 3, 5, 1, 1, 3, 1, 1, 3, 1, 1, 1, 3, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 1, 5, 3, 3, 5, 3, 5, 3, 3, 3, 1, 1, 3, 7, 3, 1, 3, 3, 3, 3, 1, 1, 1, 3, 3, 1, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 5, 5, 1, 1, 1, 1, 1, 1, 5, 3, 1, 3, 1, 3, 3, 1, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 3, 3, 3, 3, 1, 1, 3, 1, 5, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 5, 3, 3, 3, 3, 1, 1, 1, 3, 5, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 7, 5, 1, 1, 1, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 5, 3, 3, 3, 1, 1, 3, 5, 5, 1, 1, 3, 5, 3, 3, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 3, 3, 3, 3, 1, 1, 1, 1, 1, 7, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 5, 3, 1, 1, 1, 1, 1, 5, 5, 3, 1, 1, 3, 3, 1, 1, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 7, 5, 3, 7, 3, 3, 3, 3, 3, 1, 3, 1, 7, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 3, 7, 5, 5, 3, 3, 1, 1, 1, 1, 7, 3, 1, 1, 3, 3, 1, 1, 1, 3, 3, 1, 1, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 7, 5, 3, 5, 3, 3, 3, 1, 3, 1, 5, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 5, 3, 1, 1, 3, 3, 3, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 5, 3, 3, 3, 3, 1, 1, 1, 3, 5, 3, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 3, 5, 3, 1, 1, 1, 3, 5, 3, 1, 1, 5, 3, 3, 3, 1, 3, 3, 3, 3, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 1, 5, 3, 3, 3, 1, 3, 1, 7, 3, 1, 1, 1, 5, 1, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 7, 5, 5, 3, 5, 3, 3, 3, 1, 1, 1, 7, 5, 1, 1, 3, 3, 1, 3, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 5, 5, 3, 1, 3, 1, 1, 1, 7, 3, 1, 1, 3, 3, 1, 3, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 7, 5, 3, 3, 3, 1, 1, 1, 1, 5, 5, 1, 1, 1, 3, 1, 3, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 1, 5, 3, 3, 3, 3, 1, 3, 5, 3, 1, 3, 1, 1, 1, 1, 3, 1, 1, 1, 3, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 5, 5, 3, 3, 3, 1, 1, 3, 5, 1, 1, 1, 1, 5, 1, 1, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 5, 3, 3, 1, 3, 1, 1, 1, 5, 3, 1, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 3, 5, 3, 3, 3, 1, 1, 3, 7, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 3, 2, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 5, 3, 3, 7, 3, 3, 5, 3, 3, 1, 1, 3, 5, 3, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 4, 2, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 3, 3, 7, 3, 5, 5, 3, 1, 1, 1, 3, 5, 3, 1, 3, 1, 3, 1, 3, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 1, 3, 1, 7, 3, 1, 1, 3, 3, 1, 3, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 5, 3, 5, 3, 1, 1, 1, 1, 3, 7, 5, 1, 1, 3, 3, 1, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 5, 3, 3, 3, 3, 1, 1, 1, 1, 7, 5, 1, 1, 1, 3, 1, 3, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 5, 1, 1, 1, 1, 1, 3, 7, 3, 1, 1, 3, 3, 1, 1, 3, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 3, 5, 3, 3, 5, 1, 1, 3, 7, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 5, 3, 3, 3, 3, 1, 1, 3, 7, 3, 1, 1, 1, 3, 1, 1, 3, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 5, 5, 3, 1, 1, 1, 1, 1, 5, 3, 1, 1, 1, 3, 1, 3, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 7, 5, 5, 3, 3, 1, 1, 3, 1, 5, 3, 1, 1, 3, 1, 3, 1, 1, 1, 1, 3, 3, 2, 4, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 5, 3, 3, 3, 3, 1, 1, 1, 3, 5, 3, 1, 3, 3, 1, 1, 1, 3, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 5, 3, 1, 3, 1, 1, 3, 5, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 5, 3, 3, 1, 1, 1, 3, 1, 7, 3, 1, 1, 3, 5, 1, 1, 1, 1, 5, 5, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 4, 4, 2, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 1, 1, 1, 1, 5, 5, 1, 1, 3, 5, 3, 3, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 3, 3, 3, 3, 1, 1, 3, 1, 5, 3, 1, 1, 3, 3, 1, 1, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 7, 5, 3, 3, 1, 3, 1, 1, 3, 5, 5, 1, 1, 3, 3, 1, 3, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 5, 3, 1, 3, 1, 3, 1, 7, 5, 1, 1, 3, 3, 1, 3, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 7, 3, 7, 3, 7, 1, 3, 3, 3, 3, 1, 5, 3, 5, 3, 1, 3, 3, 1, 1, 1, 1, 1, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 3, 7, 7, 3, 5, 3, 3, 1, 1, 1, 1, 5, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 7, 5, 5, 7, 3, 3, 3, 1, 3, 3, 3, 1, 5, 3, 1, 3, 3, 5, 3, 1, 1, 3, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 5, 3, 3, 1, 1, 1, 3, 5, 3, 3, 3, 1, 1, 3, 1, 3, 1, 1, 1, 3, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 3, 7, 3, 3, 3, 5, 3, 1, 1, 3, 5, 1, 1, 3, 3, 3, 1, 1, 1, 1, 3, 1, 1, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 3, 5, 3, 5, 3, 1, 3, 1, 1, 3, 5, 1, 1, 3, 1, 1, 3, 1, 1, 1, 1, 1, 3, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 3, 5, 3, 3, 5, 1, 3, 1, 1, 1, 5, 5, 1, 1, 1, 3, 3, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 3, 3, 5, 5, 5, 3, 3, 3, 1, 1, 3, 1, 5, 3, 1, 1, 3, 3, 1, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 5, 3, 3, 3, 1, 1, 1, 1, 7, 3, 1, 1, 3, 3, 1, 1, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 3, 5, 3, 5, 5, 3, 3, 3, 3, 1, 3, 3, 7, 5, 1, 1, 1, 5, 1, 3, 1, 1, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 3, 5, 5, 1, 3, 1, 3, 1, 7, 3, 1, 1, 1, 1, 3, 3, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 7, 3, 3, 7, 3, 5, 1, 3, 3, 3, 1, 1, 5, 1, 1, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 3, 5, 3, 5, 7, 3, 5, 3, 1, 1, 1, 1, 1, 5, 3, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 3, 3, 3, 3, 1, 3, 3, 5, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 3, 3, 3, 3, 1, 1, 1, 1, 5, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 3, 3, 3, 1, 1, 1, 3, 5, 3, 1, 5, 1, 1, 1, 1, 1, 1, 3, 1, 1, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 5, 3, 1, 1, 1, 1, 3, 5, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 5, 3, 5, 3, 3, 1, 1, 1, 5, 3, 1, 1, 1, 5, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 5, 3, 3, 1, 3, 1, 1, 1, 5, 7, 1, 1, 3, 5, 1, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 1, 1, 1, 5, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 7, 5, 3, 3, 1, 1, 1, 1, 3, 7, 3, 1, 1, 3, 5, 3, 3, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 5, 3, 1, 3, 1, 3, 3, 7, 3, 1, 1, 1, 3, 3, 1, 1, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 5, 5, 3, 1, 3, 5, 1, 3, 5, 3, 1, 1, 1, 3, 1, 3, 3, 1, 1, 1, 1, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 7, 3, 3, 3, 1, 3, 1, 1, 3, 5, 3, 1, 1, 3, 3, 1, 1, 3, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 7, 3, 3, 3, 1, 3, 1, 1, 1, 5, 3, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 1, 1, 1, 3, 5, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 7, 3, 7, 5, 3, 3, 1, 1, 1, 1, 3, 5, 1, 1, 3, 1, 3, 3, 1, 3, 1, 1, 1, 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 1, 5, 5, 1, 3, 3, 3, 1, 1, 1, 5, 1, 1, 3, 1, 3, 1, 1, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 5, 3, 1, 3, 1, 3, 3, 7, 5, 0, 3, 1, 5, 1, 1, 1, 1, 3, 3, 1, 2, 2, 0, 2, 2, 2, 4, 2, 6, 4, 4, 4, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 5, 5, 1, 1, 3, 3, 1, 3, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 7, 3, 5, 1, 1, 1, 1, 1, 1, 5, 3, 1, 1, 3, 1, 1, 1, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 3, 5, 5, 5, 5, 3, 1, 1, 1, 3, 1, 7, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 7, 3, 5, 3, 1, 1, 1, 3, 5, 5, 1, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 7, 3, 3, 3, 3, 3, 1, 3, 3, 7, 5, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 3, 5, 3, 5, 3, 1, 3, 1, 1, 5, 5, 1, 1, 1, 1, 3, 3, 1, 3, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 5, 7, 5, 5, 3, 1, 3, 1, 1, 3, 5, 3, 1, 1, 3, 3, 3, 1, 1, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 3, 3, 1, 1, 1, 3, 1, 5, 3, 1, 1, 3, 3, 3, 3, 3, 1, 1, 1, 3, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 7, 3, 5, 3, 3, 7, 5, 3, 3, 3, 3, 1, 1, 1, 5, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 3, 3, 1, 3, 1, 1, 3, 5, 1, 1, 1, 3, 3, 3, 3, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 3, 3, 5, 3, 3, 3, 1, 1, 1, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 0, 0, 2, 2, 0, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 5, 5, 1, 3, 3, 1, 1, 1, 1, 5, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 3, 3, 5, 3, 5, 3, 1, 1, 1, 1, 1, 5, 3, 1, 1, 3, 1, 3, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 7, 5, 3, 7, 3, 5, 3, 1, 1, 1, 1, 3, 7, 3, 1, 1, 3, 3, 3, 3, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 3, 3, 7, 5, 5, 3, 1, 1, 1, 1, 1, 7, 5, 1, 1, 3, 3, 3, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 7, 5, 5, 3, 3, 3, 1, 1, 3, 5, 1, 1, 5, 1, 1, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 3, 5, 5, 3, 5, 5, 3, 3, 1, 3, 1, 1, 1, 5, 1, 1, 3, 3, 3, 1, 3, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 7, 3, 3, 7, 3, 5, 3, 1, 3, 1, 3, 3, 7, 1, 1, 5, 1, 3, 1, 1, 3, 1, 3, 1, 3, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 1, 1, 1, 1, 1, 5, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 5, 3, 5, 5, 3, 3, 1, 3, 1, 1, 3, 5, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 3, 5, 3, 3, 1, 1, 3, 7, 5, 1, 1, 1, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 3, 5, 3, 1, 1, 1, 1, 1, 5, 3, 1, 3, 3, 3, 1, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 3, 1, 1, 1, 1, 1, 1, 5, 3, 1, 1, 3, 3, 1, 1, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 1, 1, 1, 3, 3, 7, 5, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 3, 5, 5, 1, 3, 3, 5, 1, 3, 3, 5, 5, 5, 3, 1, 3, 1, 1, 1, 1, 3, 3, 3, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 5, 5, 7, 5, 3, 3, 5, 3, 3, 1, 5, 5, 3, 1, 3, 5, 1, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 5, 3, 7, 5, 3, 3, 3, 5, 1, 1, 1, 5, 3, 1, 3, 3, 1, 1, 1, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 5, 3, 3, 3, 5, 1, 1, 3, 5, 5, 1, 3, 3, 3, 1, 1, 3, 1, 1, 1, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 5, 3, 5, 5, 3, 3, 3, 3, 3, 1, 3, 5, 5, 3, 3, 5, 1, 1, 1, 1, 1, 1, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 5, 3, 3, 3, 5, 1, 1, 3, 5, 5, 3, 3, 3, 3, 1, 1, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 3, 5, 3, 5, 3, 1, 3, 5, 5, 1, 1, 3, 7, 5, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 3, 5, 5, 3, 5, 5, 3, 3, 3, 3, 1, 1, 1, 5, 5, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 3, 5, 5, 3, 1, 1, 3, 1, 1, 1, 5, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 3, 3, 1, 3, 1, 1, 1, 7, 5, 1, 3, 3, 3, 3, 1, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 7, 3, 7, 5, 5, 3, 1, 5, 1, 1, 3, 5, 3, 1, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 3, 3, 3, 3, 1, 1, 5, 5, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 5, 5, 3, 1, 3, 1, 1, 1, 5, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 1, 1, 1, 7, 3, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 7, 5, 3, 7, 3, 3, 3, 3, 3, 1, 1, 1, 5, 1, 1, 5, 1, 3, 1, 1, 1, 1, 3, 1, 3, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 5, 3, 1, 3, 1, 3, 1, 5, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 3, 3, 3, 3, 1, 1, 1, 7, 3, 1, 1, 1, 3, 3, 1, 1, 1, 3, 5, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 3, 5, 5, 3, 3, 3, 1, 3, 1, 1, 1, 5, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 3, 3, 3, 1, 1, 3, 1, 7, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 7, 3, 1, 1, 3, 3, 1, 1, 3, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 3, 5, 3, 3, 3, 3, 1, 3, 5, 3, 1, 1, 1, 3, 1, 1, 3, 1, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 5, 3, 3, 1, 1, 1, 1, 5, 7, 3, 1, 1, 1, 3, 1, 3, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 7, 3, 5, 3, 1, 1, 1, 3, 1, 5, 1, 1, 3, 3, 5, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 7, 5, 3, 3, 3, 1, 1, 3, 1, 5, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 5, 3, 1, 1, 3, 5, 3, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 7, 5, 3, 5, 1, 1, 1, 1, 3, 5, 1, 1, 3, 3, 3, 1, 1, 3, 1, 1, 3, 3, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 3, 5, 3, 5, 3, 3, 3, 1, 1, 3, 7, 3, 0, 0, 1, 3, 1, 1, 1, 0, 1, 1, 1, 2, 2, 0, 2, 2, 2, 2, 2, 4, 2, 2, 4, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 5, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 1, 1, 2, 2, 0, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 3, 5, 1, 3, 1, 1, 3, 1, 5, 3, 1, 1, 3, 5, 1, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 7, 3, 3, 7, 3, 3, 3, 1, 3, 1, 3, 3, 5, 3, 1, 1, 3, 5, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 3, 5, 7, 3, 5, 3, 3, 3, 3, 3, 1, 5, 3, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 1, 3, 3, 5, 7, 3, 5, 3, 3, 1, 1, 1, 3, 5, 3, 1, 1, 3, 3, 3, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 3, 5, 7, 5, 5, 3, 1, 1, 1, 1, 3, 5, 1, 1, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 5, 3, 3, 3, 3, 1, 3, 1, 5, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 1, 1, 1, 1, 5, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 3, 3, 1, 3, 1, 1, 3, 5, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 3, 1, 3, 3, 1, 3, 1, 3, 5, 5, 1, 1, 1, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 5, 3, 3, 1, 1, 1, 3, 1, 5, 5, 1, 1, 5, 3, 1, 1, 1, 1, 1, 3, 1, 0, 2, 2, 2, 2, 2, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 7, 3, 7, 5, 3, 3, 3, 1, 1, 1, 1, 5, 3, 1, 1, 3, 3, 1, 1, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 5, 5, 3, 1, 1, 1, 1, 3, 7, 3, 1, 1, 3, 3, 3, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 5, 3, 1, 3, 1, 3, 5, 5, 3, 1, 1, 3, 1, 1, 1, 1, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 3, 3, 3, 1, 1, 1, 3, 7, 5, 1, 1, 1, 3, 1, 1, 1, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 3, 3, 3, 1, 3, 1, 1, 5, 5, 1, 1, 1, 3, 3, 1, 1, 3, 3, 3, 5, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 5, 5, 3, 1, 1, 1, 3, 1, 5, 3, 1, 1, 3, 3, 1, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 7, 3, 5, 3, 3, 1, 1, 3, 3, 5, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 5, 1, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 7, 3, 5, 3, 3, 3, 1, 1, 3, 5, 3, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 5, 5, 3, 3, 3, 3, 1, 1, 1, 7, 3, 1, 1, 1, 3, 1, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 1, 1, 3, 1, 5, 3, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 5, 3, 1, 1, 1, 1, 1, 1, 5, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 3, 3, 7, 3, 3, 3, 3, 3, 1, 1, 3, 7, 3, 1, 1, 3, 5, 3, 3, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 5, 3, 5, 3, 3, 3, 1, 3, 1, 5, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 0, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 5, 3, 3, 3, 5, 1, 3, 7, 3, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 7, 3, 5, 3, 1, 1, 1, 3, 1, 5, 1, 1, 3, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 3, 3, 7, 3, 5, 5, 1, 1, 1, 3, 1, 5, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 3, 5, 3, 3, 1, 1, 1, 5, 3, 1, 5, 1, 1, 1, 1, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 5, 3, 3, 1, 1, 1, 3, 5, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 7, 3, 5, 3, 3, 3, 3, 1, 1, 3, 1, 7, 5, 3, 5, 1, 3, 1, 3, 1, 1, 1, 1, 3, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 5, 3, 3, 3, 3, 3, 1, 1, 3, 5, 5, 1, 3, 3, 3, 1, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 5, 3, 3, 3, 3, 1, 3, 1, 5, 3, 1, 1, 3, 3, 1, 1, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 5, 3, 3, 3, 1, 1, 1, 3, 5, 3, 1, 1, 3, 3, 1, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 7, 3, 5, 3, 1, 3, 1, 3, 3, 7, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 7, 3, 5, 5, 1, 3, 3, 5, 1, 3, 3, 1, 3, 1, 1, 1, 3, 3, 3, 3, 1, 5, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 3, 5, 3, 5, 5, 1, 3, 3, 5, 3, 1, 3, 3, 5, 1, 3, 3, 1, 1, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 7, 3, 7, 3, 3, 3, 3, 3, 1, 1, 3, 1, 3, 1, 3, 3, 5, 1, 1, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 3, 5, 7, 5, 7, 5, 3, 5, 3, 3, 1, 3, 3, 3, 5, 1, 3, 3, 3, 1, 1, 1, 1, 1, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 5, 7, 3, 7, 5, 3, 3, 3, 5, 1, 1, 3, 3, 5, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 5, 5, 5, 5, 3, 1, 1, 3, 3, 7, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 3, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 1, 3, 3, 5, 1, 3, 3, 5, 3, 1, 3, 5, 3, 1, 1, 1, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 5, 3, 3, 1, 3, 1, 3, 1, 5, 3, 1, 1, 3, 3, 1, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 5, 3, 3, 3, 3, 1, 1, 1, 5, 5, 1, 1, 5, 3, 1, 1, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 7, 3, 1, 3, 3, 3, 1, 3, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 7, 5, 5, 3, 3, 1, 1, 3, 5, 7, 3, 1, 1, 3, 3, 3, 1, 1, 3, 1, 3, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 3, 5, 5, 5, 7, 3, 5, 3, 5, 3, 3, 1, 5, 7, 3, 1, 5, 1, 3, 1, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 3, 5, 3, 3, 3, 1, 3, 1, 5, 3, 1, 5, 1, 3, 1, 1, 3, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 1, 7, 5, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 5, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 1, 3, 3, 1, 3, 5, 3, 1, 5, 1, 3, 1, 1, 3, 1, 1, 1, 3, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 1, 1, 1, 1, 1, 7, 5, 1, 1, 3, 5, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 3, 5, 5, 5, 3, 1, 1, 1, 1, 1, 5, 5, 1, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 3, 3, 3, 1, 1, 3, 1, 7, 5, 1, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 5, 3, 3, 3, 1, 3, 1, 1, 3, 7, 3, 1, 1, 1, 3, 1, 3, 1, 1, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 5, 3, 5, 3, 3, 1, 3, 3, 5, 3, 1, 1, 1, 3, 3, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 7, 3, 1, 3, 1, 3, 3, 1, 1, 1, 3, 3, 1, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 5, 5, 3, 1, 3, 1, 3, 1, 5, 1, 3, 1, 3, 3, 1, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 3, 7, 3, 5, 3, 3, 1, 1, 3, 3, 5, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, 3, 3, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 3, 3, 5, 3, 3, 5, 3, 1, 1, 3, 1, 5, 3, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 3, 3, 3, 1, 1, 1, 3, 7, 1, 1, 1, 3, 3, 1, 1, 1, 3, 1, 3, 1, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 3, 5, 5, 3, 3, 1, 1, 1, 3, 1, 5, 5, 1, 1, 1, 5, 1, 1, 3, 3, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 5, 3, 3, 1, 1, 1, 3, 1, 5, 3, 1, 1, 3, 3, 1, 3, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 3, 3, 1, 1, 1, 1, 3, 7, 5, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 5, 5, 3, 3, 1, 1, 1, 3, 1, 5, 3, 1, 1, 3, 3, 1, 1, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 3, 3, 3, 3, 3, 1, 1, 5, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 1, 5, 3, 5, 5, 3, 5, 3, 1, 1, 1, 3, 5, 5, 3, 1, 1, 1, 3, 1, 3, 3, 1, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 3, 5, 1, 1, 1, 1, 1, 3, 5, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 3, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 5, 5, 7, 3, 5, 3, 1, 1, 1, 3, 1, 5, 3, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 3, 3, 3, 3, 3, 1, 3, 5, 3, 0, 1, 3, 3, 1, 1, 1, 3, 1, 1, 1, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 7, 3, 5, 3, 3, 5, 1, 3, 1, 1, 1, 5, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 1, 1, 1, 1, 5, 3, 1, 1, 3, 3, 1, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 5, 5, 3, 3, 1, 1, 3, 1, 7, 1, 1, 3, 3, 3, 1, 3, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 3, 5, 3, 1, 1, 1, 3, 1, 5, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 5, 5, 3, 1, 3, 1, 3, 3, 7, 3, 1, 3, 1, 3, 1, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 7, 3, 5, 5, 3, 1, 1, 5, 1, 7, 3, 1, 1, 3, 3, 1, 3, 3, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 7, 5, 7, 3, 5, 3, 3, 1, 1, 3, 3, 7, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 7, 3, 3, 3, 3, 3, 1, 3, 3, 5, 1, 1, 3, 3, 3, 1, 1, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 5, 3, 3, 1, 1, 3, 3, 5, 1, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 3, 3, 5, 5, 3, 3, 5, 3, 1, 1, 3, 1, 5, 3, 1, 1, 1, 1, 3, 1, 3, 3, 3, 1, 3, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 3, 3, 3, 1, 1, 1, 3, 5, 3, 1, 1, 1, 3, 1, 3, 1, 1, 3, 1, 3, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 5, 3, 3, 3, 1, 1, 3, 1, 5, 5, 1, 1, 3, 3, 1, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 7, 5, 7, 3, 5, 3, 1, 3, 1, 1, 1, 7, 5, 3, 1, 5, 3, 1, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 3, 3, 7, 3, 5, 3, 1, 3, 1, 3, 3, 5, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 1, 1, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 5, 5, 5, 3, 1, 1, 3, 3, 5, 3, 1, 3, 1, 3, 3, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 5, 3, 7, 3, 3, 3, 3, 3, 5, 3, 3, 5, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 7, 3, 3, 3, 1, 3, 1, 3, 3, 7, 1, 1, 3, 1, 3, 1, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 5, 3, 3, 1, 1, 1, 3, 3, 5, 3, 1, 3, 1, 3, 1, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 3, 5, 5, 3, 1, 1, 3, 1, 5, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 1, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 3, 3, 3, 3, 1, 1, 3, 5, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 3, 5, 5, 5, 3, 3, 1, 3, 3, 1, 5, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 5, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 5, 3, 3, 1, 1, 3, 1, 5, 5, 3, 1, 3, 1, 3, 3, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 5, 3, 5, 1, 1, 1, 1, 3, 1, 5, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 1, 1, 0, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 5, 7, 5, 3, 1, 1, 1, 1, 3, 1, 7, 3, 1, 1, 3, 3, 3, 3, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 7, 5, 3, 5, 5, 3, 1, 3, 5, 1, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 3, 3, 1, 3, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 5, 5, 5, 3, 3, 1, 3, 3, 1, 1, 3, 5, 3, 1, 5, 3, 1, 3, 1, 3, 1, 3, 1, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 3, 5, 7, 5, 7, 5, 3, 3, 3, 5, 1, 1, 3, 5, 5, 1, 3, 3, 3, 1, 1, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 3, 1, 3, 5, 1, 3, 3, 3, 5, 1, 3, 3, 3, 1, 1, 1, 1, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 5, 5, 3, 5, 5, 3, 3, 3, 3, 1, 3, 3, 3, 5, 3, 5, 3, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 5, 5, 3, 5, 5, 1, 1, 3, 5, 5, 1, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 5, 3, 3, 3, 3, 1, 1, 1, 5, 5, 1, 3, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 3, 3, 3, 3, 1, 3, 3, 5, 3, 1, 1, 1, 3, 3, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 3, 5, 7, 3, 5, 5, 3, 3, 3, 3, 1, 3, 3, 5, 5, 1, 3, 1, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 1, 1, 7, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 5, 5, 3, 3, 3, 1, 3, 5, 5, 3, 1, 5, 1, 3, 3, 1, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 5, 3, 5, 3, 1, 5, 3, 7, 3, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 3, 5, 5, 5, 7, 3, 5, 3, 3, 3, 1, 1, 3, 5, 3, 5, 3, 1, 1, 1, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 3, 5, 5, 7, 3, 3, 3, 3, 3, 1, 1, 1, 5, 1, 1, 3, 1, 3, 3, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 5, 3, 5, 3, 3, 3, 1, 5, 1, 3, 1, 1, 5, 1, 3, 1, 1, 1, 1, 1, 1, 3, 2, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 5, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 3, 3, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 7, 3, 5, 3, 1, 3, 1, 1, 3, 5, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 3, 5, 5, 3, 3, 3, 1, 1, 1, 1, 5, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 1, 3, 1, 7, 3, 1, 1, 3, 3, 1, 3, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 6, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 7, 3, 5, 3, 1, 3, 1, 3, 3, 5, 3, 1, 1, 3, 3, 1, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 5, 3, 1, 3, 1, 3, 1, 3, 7, 5, 1, 1, 3, 3, 1, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 7, 3, 5, 3, 3, 1, 1, 3, 3, 5, 3, 1, 1, 1, 3, 3, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 3, 5, 7, 3, 5, 5, 3, 3, 3, 1, 1, 5, 1, 1, 5, 1, 3, 3, 3, 1, 1, 1, 3, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 7, 3, 5, 3, 3, 3, 1, 3, 1, 5, 1, 1, 3, 1, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 1, 5, 1, 3, 1, 1, 1, 1, 3, 3, 1, 1, 1, 3, 1, 1, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 5, 3, 3, 5, 1, 1, 3, 1, 1, 5, 3, 1, 3, 1, 3, 3, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 3, 3, 5, 5, 3, 3, 3, 3, 1, 1, 1, 5, 3, 1, 5, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 3, 5, 3, 3, 5, 3, 3, 5, 3, 1, 3, 3, 1, 7, 1, 1, 1, 1, 5, 5, 1, 1, 1, 3, 3, 1, 0, 2, 0, 2, 0, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 5, 3, 3, 1, 1, 3, 1, 7, 3, 1, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 4, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 5, 3, 3, 3, 3, 1, 3, 1, 5, 3, 1, 3, 3, 1, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 5, 3, 3, 3, 3, 1, 1, 3, 1, 5, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 5, 5, 3, 3, 3, 1, 3, 1, 7, 5, 1, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 3, 5, 3, 3, 7, 3, 5, 5, 1, 3, 3, 1, 1, 5, 3, 1, 3, 1, 3, 3, 1, 3, 1, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 5, 3, 3, 3, 3, 1, 1, 3, 1, 5, 3, 1, 3, 1, 3, 3, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 3, 5, 7, 3, 5, 3, 1, 1, 1, 1, 1, 5, 3, 1, 1, 1, 3, 3, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 3, 5, 3, 5, 3, 3, 1, 1, 3, 1, 5, 3, 1, 1, 3, 3, 1, 3, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 5, 5, 3, 1, 1, 1, 3, 1, 5, 3, 1, 3, 1, 3, 3, 1, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 5, 3, 5, 3, 5, 3, 1, 1, 1, 5, 1, 5, 1, 1, 1, 3, 5, 3, 1, 1, 1, 5, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 6, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 3, 3, 3, 3, 3, 1, 1, 1, 5, 1, 1, 1, 3, 3, 1, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 7, 5, 3, 3, 3, 3, 3, 1, 1, 3, 3, 5, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 7, 5, 3, 3, 3, 3, 1, 1, 1, 5, 5, 1, 1, 1, 5, 3, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 7, 3, 5, 3, 1, 3, 3, 3, 3, 5, 3, 1, 1, 3, 1, 3, 3, 1, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 4, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 5, 1, 3, 3, 1, 1, 1, 5, 3, 1, 1, 3, 3, 3, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 7, 3, 5, 7, 5, 7, 3, 5, 3, 3, 1, 1, 3, 3, 5, 1, 1, 1, 3, 3, 1, 1, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 7, 5, 7, 3, 3, 3, 3, 3, 1, 3, 1, 5, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 5, 3, 1, 1, 1, 3, 1, 5, 5, 1, 1, 1, 3, 1, 5, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 3, 5, 3, 3, 1, 1, 3, 3, 5, 3, 1, 1, 3, 3, 1, 3, 1, 3, 3, 3, 1, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 3, 5, 7, 3, 3, 3, 1, 3, 1, 3, 3, 5, 1, 1, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 8, 3, 5, 5, 3, 3, 3, 7, 1, 7, 1, 1, 3, 3, 5, 3, 1, 1, 1, 5, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 6, 6, 2, 4, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 5, 3, 3, 3, 3, 3, 1, 1, 1, 5, 5, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 3, 1, 3, 1, 1, 3, 1, 7, 5, 1, 1, 3, 3, 1, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 5, 5, 3, 3, 1, 3, 1, 3, 7, 3, 1, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 5, 5, 3, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 3, 4, 4, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 3, 5, 5, 7, 7, 5, 3, 1, 1, 1, 1, 1, 1, 5, 3, 1, 3, 1, 3, 3, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 3, 3, 5, 5, 5, 3, 3, 3, 1, 3, 1, 5, 3, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 3, 5, 3, 3, 1, 1, 3, 3, 5, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 3, 5, 5, 1, 3, 1, 3, 3, 5, 3, 1, 5, 1, 1, 1, 1, 1, 3, 1, 1, 3, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 3, 7, 3, 3, 3, 3, 1, 1, 1, 3, 5, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 5, 3, 1, 1, 3, 3, 3, 1, 1, 3, 3, 3, 1, 2, 0, 0, 2, 2, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 5, 5, 3, 1, 1, 1, 3, 1, 7, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 7, 3, 5, 3, 3, 3, 5, 5, 1, 3, 3, 3, 5, 1, 3, 3, 1, 3, 1, 1, 1, 3, 3, 1, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 7, 7, 7, 7, 5, 3, 3, 5, 5, 3, 1, 3, 3, 5, 3, 5, 3, 1, 1, 1, 1, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 7, 3, 5, 5, 3, 3, 3, 5, 1, 1, 3, 3, 5, 3, 3, 3, 3, 1, 1, 1, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 5, 3, 3, 3, 3, 5, 1, 1, 3, 3, 3, 1, 3, 3, 3, 1, 1, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 5, 5, 1, 3, 3, 3, 3, 1, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 5, 3, 1, 3, 3, 1, 1, 1, 5, 5, 1, 3, 3, 3, 1, 3, 1, 1, 3, 3, 1, 2, 2, 0, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 3, 1, 5, 3, 1, 1, 1, 5, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 3, 3, 3, 5, 3, 1, 3, 1, 5, 5, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 5, 5, 7, 3, 3, 3, 3, 1, 1, 1, 3, 5, 3, 1, 1, 1, 3, 3, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 5, 3, 1, 1, 3, 5, 3, 1, 1, 3, 5, 1, 1, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 3, 3, 5, 5, 7, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 5, 1, 3, 1, 1, 1, 1, 1, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 5, 5, 3, 3, 3, 3, 3, 1, 5, 3, 1, 3, 1, 3, 1, 1, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 5, 3, 3, 3, 5, 1, 3, 3, 5, 3, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 3, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 5, 3, 3, 3, 1, 3, 1, 5, 3, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 3, 7, 3, 3, 3, 1, 1, 1, 3, 1, 5, 3, 1, 1, 1, 3, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 3, 7, 5, 3, 3, 1, 1, 1, 3, 1, 5, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 3, 7, 5, 5, 3, 3, 3, 1, 1, 1, 5, 3, 1, 1, 3, 3, 3, 3, 1, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 5, 3, 1, 1, 3, 3, 3, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 7, 3, 5, 3, 3, 3, 1, 3, 3, 5, 3, 1, 1, 3, 3, 3, 1, 3, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 7, 3, 3, 1, 3, 3, 1, 1, 3, 5, 3, 1, 1, 1, 3, 3, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 7, 3, 3, 3, 1, 3, 3, 1, 1, 5, 1, 1, 3, 1, 1, 3, 1, 1, 1, 1, 3, 1, 4, 2, 4, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 7, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 3, 1, 3, 3, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 5, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 5, 3, 3, 1, 1, 3, 3, 1, 5, 3, 3, 1, 3, 3, 3, 1, 1, 1, 1, 3, 3, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 3, 3, 7, 3, 3, 5, 1, 3, 1, 5, 1, 5, 3, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 2, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 3, 3, 3, 1, 1, 1, 1, 5, 1, 1, 1, 3, 3, 1, 5, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 1, 1, 1, 5, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 7, 5, 3, 3, 1, 1, 1, 3, 1, 7, 3, 1, 1, 3, 1, 3, 3, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 7, 3, 3, 3, 3, 1, 1, 3, 3, 5, 3, 1, 1, 1, 3, 1, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 7, 3, 5, 3, 3, 3, 1, 3, 3, 5, 3, 1, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 3, 3, 3, 3, 3, 1, 3, 5, 1, 1, 5, 1, 3, 3, 1, 1, 3, 1, 1, 1, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 7, 3, 3, 3, 3, 3, 1, 3, 1, 5, 1, 1, 3, 1, 3, 3, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 5, 3, 5, 3, 3, 1, 1, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 1, 3, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 3, 3, 3, 1, 3, 1, 3, 1, 5, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 5, 3, 3, 1, 3, 3, 3, 3, 5, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 5, 5, 3, 5, 3, 5, 3, 3, 3, 1, 3, 1, 5, 3, 1, 3, 1, 3, 1, 1, 1, 1, 5, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 5, 3, 3, 1, 1, 1, 1, 1, 5, 3, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 5, 5, 5, 3, 3, 3, 1, 3, 1, 7, 3, 3, 1, 3, 3, 1, 1, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 7, 5, 3, 3, 3, 1, 1, 3, 3, 5, 3, 1, 1, 3, 5, 1, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 7, 3, 5, 3, 1, 3, 1, 3, 3, 5, 5, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 7, 1, 3, 3, 3, 3, 1, 1, 3, 5, 3, 1, 1, 3, 3, 3, 1, 1, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 7, 5, 5, 7, 3, 3, 3, 3, 1, 1, 1, 3, 5, 3, 1, 1, 3, 3, 1, 1, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 7, 3, 5, 1, 3, 1, 1, 3, 3, 5, 1, 1, 1, 3, 3, 3, 1, 1, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 7, 3, 5, 5, 3, 5, 3, 5, 3, 3, 1, 1, 3, 3, 5, 3, 1, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 5, 5, 3, 5, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 5, 5, 3, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 3, 1, 1, 1, 3, 1, 3, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 3, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 3, 3, 5, 3, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 1, 1, 3, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 3, 1, 3, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 3, 5, 3, 1, 3, 3, 3, 5, 1, 1, 1, 1, 3, 1, 3, 1, 1, 3, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 3, 3, 5, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 3, 5, 5, 3, 1, 5, 3, 3, 3, 1, 3, 3, 3, 5, 3, 1, 1, 1, 1, 3, 5, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 3, 5, 3, 3, 5, 3, 3, 3, 1, 1, 3, 3, 5, 3, 1, 1, 3, 3, 3, 1, 1, 3, 3, 3, 1, 2, 2, 4, 6, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 3, 5, 5, 3, 5, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 4, 2, 2, 2, 7, 4, 0, 2, 0, 2, 2, 2, 0, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 3, 3, 5, 5, 1, 3, 1, 5, 3, 1, 3, 5, 3, 1, 3, 1, 3, 1, 3, 3, 3, 3, 4, 0, 2, 2, 6, 6, 4, 6, 2, 6, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 3, 5, 5, 3, 3, 5, 3, 3, 3, 1, 3, 3, 5, 1, 3, 1, 1, 1, 3, 1, 3, 3, 3, 1, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 6, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 5, 5, 5, 3, 1, 1, 1, 3, 7, 5, 1, 1, 3, 1, 3, 5, 3, 3, 5, 1, 1, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 5, 3, 5, 5, 3, 5, 3, 3, 3, 3, 5, 3, 5, 1, 1, 3, 1, 1, 3, 3, 1, 3, 1, 1, 2, 4, 4, 6, 6, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 5, 5, 7, 3, 3, 3, 3, 3, 1, 3, 5, 5, 1, 1, 3, 1, 3, 3, 5, 5, 3, 3, 1, 2, 2, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 5, 7, 5, 5, 3, 3, 1, 3, 3, 1, 5, 5, 3, 1, 1, 3, 1, 1, 3, 5, 3, 3, 3, 1, 2, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 7, 5, 5, 7, 5, 1, 3, 3, 3, 3, 1, 5, 3, 3, 3, 1, 1, 1, 5, 3, 1, 3, 3, 5, 3, 2, 4, 6, 6, 4, 6, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 5, 7, 3, 3, 3, 3, 3, 3, 5, 3, 3, 1, 1, 3, 1, 3, 3, 3, 3, 3, 3, 1, 2, 2, 4, 7, 6, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 5, 3, 7, 3, 3, 3, 3, 1, 1, 3, 5, 3, 1, 3, 3, 3, 1, 3, 3, 3, 5, 3, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 5, 7, 5, 3, 3, 3, 5, 3, 1, 5, 5, 5, 1, 1, 1, 3, 3, 5, 5, 5, 3, 3, 3, 4, 2, 2, 6, 4, 2, 2, 2, 2, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 3, 5, 7, 5, 5, 3, 1, 5, 3, 3, 3, 5, 3, 1, 1, 1, 5, 3, 5, 5, 3, 3, 3, 3, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 4, 6, 4, 2, 4, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 5, 5, 5, 3, 3, 3, 5, 3, 1, 5, 7, 3, 1, 1, 1, 5, 5, 5, 7, 3, 7, 7, 3, 2, 6, 6, 6, 4, 2, 2, 2, 2, 0, 0, 0, 2, 6, 6, 6, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 5, 7, 3, 5, 5, 5, 3, 3, 1, 5, 3, 3, 5, 5, 3, 1, 3, 1, 3, 3, 5, 5, 3, 5, 3, 1, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 6, 4, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 3, 5, 5, 3, 3, 3, 1, 5, 1, 1, 5, 7, 5, 1, 1, 1, 3, 1, 3, 3, 1, 3, 3, 3, 2, 2, 4, 4, 4, 2, 0, 2, 2, 4, 2, 2, 6, 7, 2, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 5, 7, 5, 5, 3, 5, 3, 3, 1, 5, 1, 1, 5, 5, 3, 1, 3, 1, 3, 3, 3, 5, 3, 3, 5, 3, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 6, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 3, 5, 5, 3, 1, 1, 5, 3, 1, 3, 5, 5, 3, 1, 1, 7, 7, 3, 3, 3, 3, 1, 5, 2, 2, 4, 4, 2, 6, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 5, 3, 5, 5, 1, 3, 7, 3, 3, 5, 3, 7, 5, 3, 1, 3, 7, 1, 3, 3, 3, 1, 3, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 5, 5, 3, 5, 1, 3, 3, 1, 1, 5, 5, 7, 5, 3, 1, 1, 3, 1, 5, 5, 5, 3, 1, 2, 4, 2, 2, 4, 2, 0, 2, 2, 4, 2, 4, 4, 6, 6, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 7, 5, 5, 1, 3, 5, 1, 3, 5, 3, 5, 5, 3, 1, 1, 1, 1, 3, 5, 7, 5, 3, 2, 4, 4, 4, 4, 2, 2, 0, 4, 2, 2, 2, 4, 6, 6, 2, 0, 2, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 5, 5, 5, 3, 1, 3, 3, 1, 3, 1, 3, 7, 3, 3, 1, 1, 3, 3, 3, 7, 5, 3, 3, 2, 2, 2, 4, 2, 2, 2, 0, 2, 4, 2, 6, 4, 4, 6, 4, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 5, 3, 5, 5, 1, 1, 1, 3, 3, 5, 5, 1, 3, 1, 3, 3, 1, 5, 5, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 4, 6, 6, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 7, 5, 5, 5, 1, 3, 5, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 3, 5, 1, 1, 2, 4, 4, 2, 4, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 5, 3, 5, 3, 3, 5, 5, 3, 3, 1, 3, 5, 3, 3, 1, 1, 1, 3, 1, 3, 3, 1, 1, 1, 1, 1, 2, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 7, 7, 5, 5, 5, 3, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1, 3, 3, 1, 3, 2, 4, 4, 4, 2, 4, 4, 4, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 3, 3, 5, 3, 3, 3, 3, 1, 3, 5, 3, 5, 3, 3, 3, 3, 1, 1, 3, 5, 3, 3, 2, 2, 4, 2, 4, 4, 6, 4, 2, 0, 2, 2, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 3, 5, 7, 3, 3, 3, 3, 1, 3, 3, 5, 1, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 3, 3, 5, 5, 1, 3, 3, 1, 3, 5, 5, 3, 5, 3, 1, 3, 1, 3, 1, 1, 3, 1, 4, 2, 4, 4, 6, 4, 2, 2, 0, 2, 2, 6, 6, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 3, 3, 7, 3, 5, 3, 5, 1, 3, 3, 5, 3, 3, 1, 1, 3, 3, 1, 1, 3, 3, 3, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 5, 7, 3, 3, 5, 5, 3, 3, 5, 7, 1, 3, 5, 5, 3, 3, 3, 1, 1, 3, 1, 1, 3, 3, 3, 4, 2, 4, 2, 4, 2, 2, 0, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 7, 7, 7, 7, 7, 5, 1, 5, 3, 1, 3, 3, 3, 1, 3, 3, 1, 1, 3, 3, 5, 7, 3, 1, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 7, 7, 7, 5, 3, 7, 5, 3, 5, 5, 5, 1, 3, 3, 3, 1, 1, 3, 3, 7, 5, 1, 2, 0, 4, 2, 2, 4, 2, 2, 2, 6, 4, 6, 4, 6, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 7, 7, 7, 7, 5, 3, 1, 7, 3, 3, 3, 5, 1, 3, 3, 3, 3, 3, 3, 3, 5, 5, 7, 3, 0, 0, 2, 2, 0, 4, 2, 2, 2, 4, 4, 6, 6, 6, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 7, 7, 7, 7, 7, 3, 1, 5, 5, 3, 3, 5, 3, 1, 3, 3, 1, 1, 3, 3, 5, 5, 7, 5, 2, 0, 0, 2, 2, 2, 2, 2, 2, 6, 6, 6, 6, 6, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 7, 7, 7, 3, 1, 3, 5, 5, 7, 3, 5, 1, 3, 3, 3, 1, 3, 3, 5, 5, 5, 3, 2, 0, 0, 2, 2, 4, 2, 2, 2, 4, 4, 6, 6, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 5, 7, 7, 7, 7, 7, 1, 3, 5, 5, 3, 5, 3, 3, 1, 3, 5, 1, 1, 3, 3, 3, 7, 7, 5, 0, 0, 2, 2, 2, 4, 0, 2, 2, 4, 4, 6, 4, 4, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 7, 7, 5, 7, 7, 7, 7, 7, 1, 3, 3, 5, 1, 5, 5, 3, 1, 3, 3, 1, 1, 3, 5, 3, 3, 5, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 6, 4, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 7, 7, 7, 7, 7, 1, 3, 5, 7, 3, 3, 5, 3, 3, 3, 1, 3, 3, 3, 1, 5, 5, 5, 3, 2, 2, 2, 2, 6, 4, 2, 0, 2, 4, 4, 2, 4, 6, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 5, 7, 7, 7, 7, 7, 1, 1, 3, 5, 1, 3, 3, 7, 1, 1, 3, 1, 1, 5, 5, 3, 7, 5, 3, 4, 2, 2, 2, 4, 2, 2, 0, 2, 2, 4, 2, 2, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 3, 1, 2, 4, 2, 4, 4, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 3, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 5, 3, 1, 1, 1, 7, 3, 1, 1, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 3, 5, 7, 7, 7, 5, 7, 1, 3, 5, 5, 5, 3, 1, 5, 3, 3, 3, 3, 1, 1, 3, 7, 7, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 6, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 7, 5, 7, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 5, 1, 1, 3, 1, 1, 3, 1, 3, 5, 5, 1, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 7, 7, 7, 7, 7, 7, 3, 5, 3, 5, 1, 1, 5, 1, 1, 5, 1, 1, 3, 3, 1, 5, 5, 3, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 1, 3, 3, 7, 5, 7, 7, 5, 3, 7, 3, 5, 1, 3, 3, 1, 3, 5, 1, 3, 5, 1, 3, 5, 5, 3, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 3, 5, 3, 1, 1, 3, 7, 7, 5, 3, 3, 7, 3, 3, 1, 3, 3, 1, 3, 3, 1, 1, 3, 1, 5, 1, 1, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 6, 6, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 1, 3, 3, 1, 5, 5, 7, 7, 7, 3, 3, 7, 3, 5, 3, 3, 3, 1, 1, 3, 3, 1, 5, 1, 3, 1, 3, 1, 2, 4, 6, 2, 2, 2, 2, 2, 2, 6, 4, 6, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 1, 1, 3, 1, 5, 5, 7, 7, 7, 3, 7, 3, 3, 5, 3, 3, 3, 1, 1, 1, 1, 1, 3, 3, 5, 3, 1, 1, 2, 2, 6, 2, 0, 2, 2, 2, 2, 4, 4, 4, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 1, 1, 1, 1, 5, 5, 7, 3, 5, 1, 3, 1, 5, 5, 3, 3, 3, 1, 1, 1, 1, 1, 3, 3, 5, 3, 3, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 6, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 1, 1, 1, 3, 3, 5, 5, 5, 5, 3, 3, 3, 5, 5, 1, 3, 5, 1, 3, 3, 1, 3, 3, 3, 5, 1, 1, 1, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 4, 6, 4, 2, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 5, 5, 3, 5, 5, 5, 1, 1, 3, 3, 5, 3, 1, 3, 3, 3, 1, 1, 1, 5, 5, 3, 3, 5, 1, 2, 6, 4, 2, 0, 2, 0, 0, 2, 2, 2, 4, 4, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 3, 5, 3, 1, 1, 3, 3, 3, 1, 3, 5, 1, 1, 1, 1, 3, 3, 1, 3, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 7, 3, 3, 3, 1, 1, 5, 3, 1, 5, 5, 1, 5, 1, 3, 3, 1, 3, 3, 3, 5, 5, 3, 2, 2, 2, 4, 2, 0, 0, 2, 4, 2, 4, 4, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 5, 3, 3, 5, 3, 1, 5, 1, 3, 5, 5, 1, 3, 1, 3, 1, 3, 3, 3, 1, 5, 7, 3, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 7, 3, 3, 5, 3, 1, 5, 1, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 5, 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 6, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 3, 7, 3, 1, 5, 1, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 5, 5, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 6, 2, 4, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 5, 3, 5, 1, 7, 1, 1, 5, 3, 3, 3, 3, 5, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 5, 5, 3, 5, 3, 5, 3, 3, 5, 1, 5, 3, 3, 1, 3, 1, 3, 3, 5, 3, 3, 3, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 6, 4, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 5, 7, 7, 3, 3, 3, 5, 3, 3, 7, 1, 3, 1, 3, 1, 3, 3, 3, 3, 5, 5, 3, 5, 3, 1, 3, 2, 2, 2, 0, 2, 2, 0, 2, 2, 4, 6, 6, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 3, 7, 7, 7, 3, 5, 3, 5, 3, 3, 5, 1, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 3, 5, 3, 1, 3, 2, 2, 2, 0, 4, 4, 2, 2, 2, 4, 6, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 5, 5, 3, 5, 1, 1, 5, 1, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 2, 2, 2, 0, 4, 4, 0, 2, 2, 4, 6, 6, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 5, 7, 5, 3, 7, 5, 5, 3, 3, 3, 3, 3, 1, 1, 3, 5, 7, 7, 1, 3, 3, 3, 5, 3, 3, 3, 2, 2, 2, 2, 2, 4, 6, 2, 4, 6, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 7, 7, 3, 7, 5, 3, 5, 5, 1, 1, 5, 3, 1, 3, 3, 3, 3, 1, 3, 1, 3, 5, 3, 5, 3, 2, 2, 7, 6, 2, 6, 4, 2, 2, 6, 2, 2, 2, 6, 2, 2, 4, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 7, 5, 3, 7, 5, 3, 5, 5, 1, 3, 5, 3, 1, 5, 3, 3, 5, 1, 5, 3, 1, 5, 3, 5, 1, 2, 2, 2, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 3, 3, 3, 7, 3, 3, 3, 3, 1, 3, 5, 1, 3, 3, 3, 5, 3, 3, 3, 5, 1, 2, 2, 4, 6, 6, 2, 4, 2, 6, 6, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 5, 5, 1, 5, 3, 3, 5, 3, 3, 1, 1, 5, 3, 1, 5, 5, 5, 1, 5, 5, 5, 1, 2, 2, 2, 2, 4, 6, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 3, 3, 3, 3, 1, 5, 3, 3, 1, 3, 5, 3, 1, 3, 1, 3, 1, 5, 5, 5, 1, 2, 2, 2, 2, 4, 6, 2, 2, 2, 2, 4, 6, 4, 6, 2, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 7, 7, 5, 3, 5, 3, 5, 3, 3, 1, 3, 5, 3, 1, 1, 1, 3, 3, 5, 7, 5, 3, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 5, 5, 3, 1, 5, 3, 5, 3, 3, 1, 1, 5, 3, 7, 1, 5, 3, 5, 3, 3, 3, 3, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 5, 5, 7, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 1, 1, 1, 3, 7, 7, 3, 1, 2, 2, 2, 2, 6, 6, 4, 2, 2, 2, 4, 6, 2, 4, 4, 2, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 5, 5, 3, 3, 5, 3, 3, 5, 3, 1, 3, 3, 3, 3, 3, 1, 1, 1, 7, 7, 5, 3, 2, 2, 2, 2, 2, 4, 4, 2, 2, 4, 6, 4, 2, 4, 4, 2, 0, 0, 0, 0, 2, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 7, 5, 5, 5, 5, 3, 3, 5, 1, 5, 7, 3, 1, 1, 5, 5, 7, 5, 3, 1, 3, 7, 7, 5, 3, 2, 2, 2, 2, 4, 4, 6, 0, 2, 2, 4, 6, 2, 4, 2, 2, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 7, 5, 7, 7, 7, 5, 1, 5, 3, 3, 7, 1, 1, 3, 5, 3, 7, 3, 1, 1, 1, 7, 7, 7, 1, 2, 2, 2, 0, 4, 4, 2, 0, 2, 6, 4, 4, 4, 6, 2, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 5, 7, 7, 5, 7, 5, 5, 3, 3, 5, 5, 5, 5, 3, 1, 3, 3, 1, 5, 1, 1, 3, 1, 5, 5, 5, 3, 2, 2, 2, 2, 6, 4, 2, 2, 2, 6, 2, 2, 4, 6, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 8, 5, 7, 5, 3, 5, 5, 7, 5, 1, 3, 3, 1, 3, 3, 1, 5, 3, 3, 1, 3, 5, 3, 5, 3, 4, 2, 2, 2, 4, 4, 2, 2, 2, 6, 2, 2, 4, 4, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 7, 3, 7, 7, 5, 5, 3, 5, 5, 1, 3, 7, 1, 3, 3, 1, 7, 3, 1, 1, 7, 5, 5, 5, 3, 2, 2, 2, 2, 6, 6, 2, 2, 2, 2, 2, 4, 6, 4, 4, 4, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 3, 5, 8, 5, 7, 5, 5, 5, 5, 5, 7, 1, 5, 7, 3, 3, 3, 1, 1, 7, 1, 1, 5, 7, 5, 5, 3, 2, 2, 2, 4, 4, 6, 2, 2, 2, 4, 6, 4, 6, 4, 6, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 3, 5, 8, 7, 7, 7, 5, 5, 3, 3, 3, 3, 3, 5, 1, 5, 3, 1, 1, 7, 5, 1, 3, 7, 5, 3, 5, 4, 2, 2, 2, 4, 4, 0, 2, 0, 4, 4, 4, 6, 4, 2, 2, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 3, 5, 8, 7, 7, 7, 5, 5, 3, 5, 5, 1, 5, 5, 1, 5, 3, 1, 1, 5, 3, 1, 5, 5, 5, 3, 1, 4, 4, 2, 2, 4, 4, 0, 2, 2, 4, 4, 6, 6, 4, 2, 0, 0, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 5, 7, 7, 5, 7, 5, 3, 3, 7, 3, 3, 5, 1, 1, 5, 1, 3, 5, 3, 1, 5, 5, 7, 5, 3, 5, 4, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 5, 7, 8, 5, 7, 5, 3, 3, 3, 3, 3, 3, 1, 5, 3, 3, 3, 5, 1, 1, 1, 5, 5, 3, 5, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 5, 5, 3, 3, 1, 5, 3, 1, 3, 3, 3, 1, 3, 5, 1, 1, 1, 3, 5, 3, 3, 3, 2, 2, 2, 2, 6, 2, 2, 2, 6, 4, 2, 6, 6, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 1, 3, 7, 5, 5, 7, 5, 1, 1, 5, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 3, 3, 7, 5, 5, 1, 2, 2, 2, 2, 4, 2, 4, 2, 6, 6, 6, 6, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 7, 3, 3, 5, 1, 5, 3, 1, 3, 1, 1, 5, 1, 3, 3, 3, 1, 1, 3, 7, 7, 3, 5, 2, 2, 2, 2, 2, 2, 4, 2, 4, 6, 4, 4, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 3, 7, 7, 7, 3, 5, 5, 1, 3, 5, 1, 5, 3, 1, 5, 3, 3, 1, 3, 1, 3, 3, 3, 5, 5, 5, 2, 4, 2, 4, 2, 2, 6, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 1, 7, 7, 7, 5, 5, 7, 5, 7, 7, 1, 7, 7, 1, 7, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 4, 6, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 1, 5, 7, 7, 7, 7, 7, 7, 5, 7, 3, 7, 5, 3, 7, 1, 3, 1, 5, 3, 5, 3, 3, 5, 5, 1, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 4, 4, 6, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 3, 3, 7, 5, 5, 7, 7, 7, 5, 7, 3, 7, 3, 1, 5, 3, 5, 3, 1, 1, 3, 3, 5, 5, 3, 3, 2, 4, 4, 2, 0, 2, 2, 4, 2, 4, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 7, 3, 1, 5, 3, 5, 5, 7, 5, 5, 7, 3, 3, 3, 1, 3, 1, 3, 5, 3, 3, 3, 1, 5, 5, 3, 5, 4, 2, 2, 4, 2, 2, 2, 4, 4, 2, 4, 6, 4, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 1, 3, 3, 1, 1, 5, 7, 5, 5, 3, 1, 5, 3, 3, 1, 1, 1, 5, 3, 3, 1, 3, 3, 1, 3, 3, 3, 1, 4, 4, 4, 2, 0, 2, 2, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 1, 1, 3, 1, 1, 5, 5, 7, 5, 1, 3, 3, 5, 5, 1, 1, 1, 3, 3, 3, 1, 3, 3, 1, 5, 7, 3, 3, 2, 2, 2, 2, 2, 2, 4, 4, 6, 4, 4, 4, 4, 4, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 3, 5, 3, 5, 3, 5, 1, 1, 3, 5, 5, 3, 1, 5, 1, 3, 3, 3, 3, 1, 3, 5, 5, 5, 3, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 6, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 3, 5, 5, 3, 3, 3, 5, 5, 3, 1, 1, 3, 1, 1, 5, 3, 3, 3, 3, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 3, 3, 1, 1, 3, 3, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 3, 3, 3, 5, 5, 3, 1, 1, 3, 3, 3, 1, 3, 3, 3, 1, 1, 3, 1, 1, 3, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 7, 3, 5, 3, 3, 3, 3, 3, 1, 5, 3, 3, 3, 3, 3, 1, 0, 1, 5, 7, 7, 5, 1, 0, 0, 2, 4, 6, 4, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 5, 5, 3, 3, 3, 1, 1, 1, 5, 5, 5, 5, 3, 2, 0, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 3, 5, 3, 3, 3, 3, 3, 5, 3, 5, 5, 3, 3, 3, 1, 1, 0, 1, 3, 5, 5, 5, 1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 5, 7, 5, 3, 5, 3, 3, 1, 5, 3, 1, 5, 5, 1, 3, 3, 3, 1, 1, 3, 5, 5, 5, 3, 1, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 3, 5, 5, 3, 3, 3, 3, 3, 1, 5, 5, 5, 3, 3, 3, 1, 1, 1, 5, 5, 5, 5, 1, 2, 2, 2, 2, 4, 2, 2, 4, 2, 0, 2, 0, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 5, 5, 3, 5, 7, 3, 1, 3, 3, 1, 3, 3, 5, 3, 1, 3, 1, 1, 1, 7, 5, 5, 5, 1, 2, 2, 2, 2, 4, 2, 4, 4, 4, 2, 0, 0, 4, 2, 2, 2, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 3, 3, 5, 3, 1, 5, 5, 1, 3, 5, 5, 5, 1, 3, 1, 1, 3, 5, 5, 5, 3, 1, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 7, 5, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 3, 1, 1, 1, 3, 5, 3, 5, 1, 0, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 5, 7, 3, 5, 5, 5, 3, 3, 3, 3, 3, 5, 3, 1, 5, 1, 1, 3, 3, 3, 3, 3, 1, 3, 1, 5, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 4, 4, 4, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 3, 7, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 5, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 5, 5, 5, 3, 3, 3, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 7, 7, 5, 5, 5, 5, 1, 3, 5, 5, 3, 5, 1, 1, 5, 7, 3, 1, 3, 7, 5, 1, 5, 3, 1, 4, 2, 2, 0, 2, 2, 4, 4, 2, 2, 4, 4, 6, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 8, 7, 7, 7, 7, 3, 3, 5, 5, 1, 5, 1, 1, 5, 5, 5, 1, 0, 3, 5, 3, 7, 5, 3, 2, 2, 2, 0, 2, 2, 2, 4, 2, 2, 4, 4, 6, 4, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 7, 3, 3, 5, 5, 3, 5, 1, 1, 7, 7, 5, 1, 0, 3, 5, 5, 3, 5, 1, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 4, 4, 6, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 5, 7, 7, 3, 1, 7, 7, 7, 3, 1, 3, 5, 3, 5, 7, 5, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 6, 6, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 3, 5, 7, 5, 3, 7, 5, 1, 3, 7, 5, 1, 1, 1, 5, 3, 5, 5, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 6, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 3, 5, 7, 7, 7, 7, 3, 1, 7, 7, 1, 1, 3, 7, 5, 7, 5, 3, 0, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 3, 5, 3, 5, 3, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 1, 1, 3, 3, 5, 3, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 3, 5, 3, 5, 5, 5, 1, 1, 3, 5, 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, 3, 1, 3, 3, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 5, 5, 7, 5, 3, 3, 5, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 1, 1, 1, 3, 1, 3, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 7, 3, 3, 5, 3, 3, 1, 5, 3, 1, 5, 1, 3, 3, 1, 1, 1, 3, 3, 3, 3, 5, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 1, 5, 5, 3, 7, 5, 3, 1, 5, 5, 3, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 3, 3, 1, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 3, 7, 5, 3, 5, 5, 3, 3, 3, 5, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 1, 3, 3, 3, 1, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 5, 7, 8, 7, 7, 7, 5, 3, 3, 5, 5, 5, 7, 3, 5, 1, 3, 1, 1, 1, 1, 7, 7, 5, 1, 3, 4, 2, 0, 2, 4, 6, 4, 2, 0, 0, 0, 2, 2, 4, 4, 6, 6, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 5, 7, 7, 7, 7, 1, 7, 5, 5, 5, 3, 5, 3, 5, 5, 3, 3, 0, 0, 1, 5, 7, 5, 3, 1, 4, 2, 2, 0, 2, 4, 2, 2, 0, 0, 0, 0, 2, 0, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 7, 3, 5, 5, 5, 3, 3, 5, 3, 5, 5, 3, 3, 1, 1, 1, 1, 7, 7, 7, 1, 2, 2, 2, 2, 4, 4, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 6, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 3, 3, 3, 1, 1, 5, 3, 3, 1, 1, 3, 1, 5, 7, 1, 1, 2, 2, 4, 2, 6, 4, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 8, 7, 7, 7, 5, 5, 7, 7, 3, 5, 7, 5, 1, 3, 3, 3, 1, 1, 1, 3, 7, 7, 5, 1, 0, 0, 2, 2, 4, 4, 2, 2, 2, 0, 0, 2, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 8, 7, 5, 7, 3, 7, 7, 5, 3, 5, 5, 3, 1, 3, 3, 3, 1, 1, 3, 1, 5, 7, 5, 3, 2, 2, 2, 4, 6, 6, 6, 4, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 8, 7, 3, 7, 3, 7, 7, 7, 5, 3, 5, 5, 1, 3, 3, 3, 3, 1, 3, 1, 5, 7, 5, 3, 2, 2, 2, 2, 4, 2, 4, 2, 2, 0, 0, 2, 2, 4, 4, 2, 2, 2, 4, 4, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 5, 5, 5, 5, 5, 7, 5, 5, 7, 5, 1, 3, 3, 5, 3, 1, 3, 1, 3, 5, 3, 1, 2, 4, 2, 2, 2, 6, 4, 2, 2, 0, 0, 2, 2, 4, 4, 2, 2, 4, 2, 6, 4, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 5, 7, 3, 3, 3, 3, 3, 3, 3, 1, 3, 7, 3, 1, 3, 3, 5, 1, 1, 1, 3, 7, 5, 7, 1, 2, 4, 2, 2, 4, 6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 5, 7, 3, 3, 5, 5, 3, 3, 3, 1, 3, 3, 5, 1, 3, 3, 3, 1, 1, 1, 1, 5, 5, 3, 1, 2, 2, 2, 4, 2, 6, 2, 2, 2, 0, 2, 2, 2, 4, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 3, 5, 3, 3, 3, 1, 5, 1, 3, 3, 1, 3, 1, 3, 3, 3, 1, 3, 5, 5, 5, 1, 1, 2, 2, 4, 2, 2, 4, 2, 2, 2, 4, 4, 4, 2, 6, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 3, 7, 3, 5, 7, 3, 3, 5, 1, 3, 3, 1, 1, 5, 3, 3, 1, 3, 3, 1, 5, 7, 5, 5, 3, 2, 2, 2, 2, 2, 4, 2, 2, 4, 0, 0, 2, 2, 4, 6, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 3, 5, 3, 5, 5, 3, 3, 5, 3, 5, 5, 3, 3, 5, 3, 3, 3, 1, 1, 1, 3, 7, 7, 3, 1, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 4, 6, 6, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 5, 5, 7, 1, 5, 7, 3, 1, 3, 1, 1, 5, 5, 3, 1, 1, 1, 1, 5, 7, 7, 5, 1, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 6, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 5, 7, 7, 5, 3, 3, 5, 1, 1, 3, 1, 3, 5, 3, 3, 3, 1, 1, 1, 5, 7, 5, 5, 1, 2, 6, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 7, 7, 7, 5, 3, 3, 5, 1, 3, 7, 1, 3, 5, 3, 3, 5, 1, 1, 1, 5, 7, 5, 5, 3, 2, 4, 2, 2, 2, 4, 2, 2, 0, 2, 2, 2, 2, 2, 4, 7, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 7, 5, 3, 3, 5, 1, 3, 7, 1, 5, 3, 1, 5, 5, 1, 1, 3, 1, 7, 5, 5, 1, 2, 2, 4, 2, 2, 2, 4, 2, 2, 0, 2, 2, 2, 2, 4, 6, 4, 2, 2, 4, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 3, 3, 7, 1, 3, 5, 3, 3, 5, 1, 1, 1, 3, 5, 7, 3, 1, 2, 4, 2, 2, 2, 4, 4, 4, 2, 2, 0, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 5, 3, 5, 3, 3, 3, 5, 1, 1, 5, 3, 3, 5, 1, 5, 5, 0, 3, 1, 3, 3, 5, 3, 1, 2, 4, 2, 2, 2, 6, 6, 4, 2, 2, 0, 2, 2, 2, 0, 4, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 3, 5, 5, 3, 7, 5, 3, 3, 5, 5, 1, 5, 3, 1, 3, 5, 5, 3, 1, 1, 1, 3, 3, 5, 5, 1, 0, 2, 2, 2, 2, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 5, 3, 1, 3, 1, 1, 5, 3, 1, 1, 5, 5, 3, 1, 1, 3, 3, 1, 5, 5, 1, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 5, 5, 5, 1, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 4, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 5, 5, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 3, 1, 3, 3, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 5, 3, 5, 3, 3, 3, 3, 1, 5, 3, 3, 1, 5, 7, 1, 1, 1, 1, 1, 5, 5, 5, 1, 2, 0, 2, 2, 2, 4, 6, 2, 2, 2, 0, 2, 2, 2, 4, 2, 2, 2, 4, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 5, 3, 5, 5, 1, 3, 3, 3, 3, 5, 3, 1, 3, 5, 1, 1, 1, 1, 1, 5, 5, 5, 5, 0, 0, 2, 4, 2, 4, 6, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 3, 7, 3, 3, 3, 3, 3, 3, 5, 5, 1, 3, 5, 1, 1, 1, 1, 1, 5, 5, 5, 7, 2, 2, 2, 2, 4, 6, 6, 2, 6, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 8, 7, 7, 5, 7, 7, 5, 3, 5, 1, 3, 5, 3, 3, 3, 3, 3, 1, 1, 1, 1, 5, 7, 5, 3, 2, 2, 2, 2, 2, 6, 4, 4, 6, 6, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 5, 3, 5, 7, 5, 5, 5, 1, 3, 3, 3, 1, 5, 3, 5, 1, 0, 1, 1, 7, 5, 5, 5, 2, 2, 2, 0, 2, 4, 4, 4, 6, 6, 2, 0, 0, 2, 0, 2, 2, 4, 2, 4, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 8, 7, 7, 5, 5, 7, 5, 5, 7, 1, 5, 7, 5, 3, 5, 1, 3, 3, 0, 1, 1, 3, 5, 7, 5, 2, 2, 2, 2, 2, 4, 6, 4, 4, 6, 4, 2, 2, 2, 0, 0, 2, 2, 0, 2, 4, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 5, 5, 3, 5, 7, 5, 3, 5, 3, 3, 5, 3, 1, 3, 1, 5, 3, 0, 1, 1, 3, 3, 5, 3, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 7, 3, 3, 5, 3, 5, 3, 3, 5, 3, 3, 1, 3, 3, 1, 3, 3, 5, 3, 3, 1, 3, 3, 3, 1, 4, 4, 2, 2, 2, 2, 4, 2, 4, 6, 2, 2, 2, 2, 2, 4, 4, 2, 2, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 1, 7, 3, 7, 5, 3, 5, 1, 3, 5, 1, 3, 3, 1, 1, 1, 3, 3, 1, 1, 3, 1, 3, 3, 5, 3, 2, 2, 2, 2, 2, 4, 2, 4, 6, 6, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 3, 5, 3, 3, 5, 3, 3, 5, 1, 3, 3, 3, 1, 3, 3, 3, 1, 1, 5, 3, 1, 3, 5, 1, 2, 2, 2, 2, 4, 4, 2, 2, 6, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 3, 5, 3, 3, 5, 1, 3, 5, 3, 3, 3, 1, 5, 3, 3, 1, 1, 1, 3, 1, 5, 3, 5, 1, 2, 2, 2, 2, 2, 6, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 4, 0, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 5, 7, 5, 5, 1, 5, 3, 3, 5, 1, 1, 3, 3, 3, 3, 3, 1, 3, 3, 5, 5, 5, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 6, 4, 4, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 3, 5, 3, 5, 3, 3, 3, 3, 1, 5, 5, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 3, 3, 3, 3, 7, 1, 5, 5, 3, 3, 3, 1, 1, 3, 3, 3, 5, 1, 1, 1, 1, 3, 3, 3, 4, 2, 0, 2, 4, 6, 4, 4, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 5, 5, 7, 5, 5, 1, 5, 3, 1, 5, 3, 1, 1, 3, 3, 5, 1, 1, 1, 1, 1, 7, 5, 3, 6, 2, 0, 2, 6, 6, 6, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 8, 5, 7, 5, 5, 3, 5, 7, 5, 1, 3, 5, 3, 3, 1, 3, 3, 1, 3, 5, 3, 3, 4, 2, 2, 2, 2, 6, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 7, 7, 1, 1, 3, 3, 7, 1, 3, 1, 1, 5, 7, 7, 3, 4, 2, 2, 2, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 7, 5, 7, 7, 3, 3, 1, 3, 5, 1, 0, 1, 1, 7, 7, 7, 5, 4, 2, 0, 2, 2, 6, 6, 2, 2, 2, 2, 0, 2, 4, 2, 0, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 8, 7, 7, 7, 7, 7, 5, 7, 7, 7, 5, 7, 7, 1, 5, 3, 3, 1, 1, 5, 1, 1, 3, 7, 3, 3, 4, 2, 2, 4, 2, 6, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 3, 5, 3, 7, 3, 5, 7, 7, 1, 7, 5, 1, 1, 1, 7, 1, 1, 1, 5, 5, 3, 2, 2, 2, 4, 2, 6, 4, 2, 2, 2, 2, 2, 2, 4, 6, 2, 4, 2, 2, 0, 0, 2, 2, 6, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 7, 7, 5, 5, 3, 5, 3, 3, 3, 5, 5, 1, 1, 3, 1, 3, 5, 3, 3, 1, 5, 5, 5, 3, 2, 2, 0, 2, 4, 2, 2, 2, 2, 2, 6, 6, 2, 2, 2, 2, 2, 2, 2, 4, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 8, 8, 7, 7, 5, 3, 3, 5, 3, 3, 5, 5, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 5, 7, 1, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 4, 2, 2, 0, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 7, 7, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 7, 7, 1, 3, 7, 7, 7, 3, 4, 2, 2, 2, 2, 6, 2, 2, 2, 6, 2, 2, 0, 2, 4, 4, 4, 2, 4, 4, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, -9, 5, 7, 5, 3, 5, 3, 5, 3, 3, 1, 3, 7, 3, 5, 1, 3, 5, 1, 3, 1, 5, 7, 3, 3, 7, 5, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 3, 5, 3, 3, 1, 5, 3, 3, 1, 1, 3, 1, 1, 5, 1, 1, 1, 5, 5, 5, 5, 1, 2, 2, 2, 2, 4, 4, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 5, 1, 5, 3, 3, 3, 3, 1, 3, 3, 1, 1, 5, 1, 1, 3, 3, 5, 5, 3, 1, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 3, 7, 5, 5, 3, 5, 3, 3, 5, 3, 3, 3, 1, 1, 1, 7, 5, 3, 1, 5, 5, 3, 1, 2, 2, 4, 4, 2, 6, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 5, 7, 5, 7, 1, 7, 3, 3, 3, 1, 3, 5, 3, 7, 5, 1, 1, 7, 7, 1, 1, 5, 5, 3, 1, 2, 2, 6, 4, 2, 7, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 5, 5, 3, 5, 3, 5, 1, 3, 3, 5, 3, 7, 5, 1, 3, 3, 5, 3, 1, 5, 7, 3, 3, 2, 2, 2, 2, 2, 6, 4, 4, 2, 2, 2, 2, 4, 4, 2, 0, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 5, 3, 3, 7, 1, 3, 1, 3, 1, 5, 1, 5, 3, 1, 3, 1, 5, 1, 1, 5, 5, 5, 3, 2, 2, 2, 2, 2, 4, 6, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 7, 3, 7, 1, 5, 3, 3, 3, 7, 1, 5, 1, 3, 1, 1, 1, 1, 1, 3, 3, 1, 3, 2, 4, 4, 2, 2, 6, 4, 4, 4, 4, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 3, 7, 5, 3, 5, 3, 3, 5, 1, 1, 3, 1, 5, 3, 1, 3, 3, 3, 1, 1, 3, 1, 3, 1, 1, 2, 4, 4, 6, 4, 4, 6, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 3, 5, 5, 3, 5, 5, 1, 3, 1, 1, 3, 3, 3, 1, 3, 1, 3, 3, 5, 1, 1, 1, 3, 5, 1, 2, 2, 2, 6, 4, 6, 6, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 5, 3, 5, 1, 1, 3, 3, 1, 3, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 5, 3, 5, 5, 5, 3, 1, 3, 5, 5, 5, 3, 1, 1, 3, 3, 1, 3, 1, 3, 1, 3, 3, 2, 2, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 3, 5, 3, 3, 1, 3, 1, 1, 3, 3, 3, 3, 1, 1, 3, 1, 1, 3, 3, 3, 1, 5, 3, 4, 4, 2, 2, 2, 2, 4, 4, 6, 4, 4, 2, 2, 2, 4, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 3, 5, 5, 3, 5, 3, 3, 3, 3, 5, 3, 3, 1, 3, 3, 3, 1, 1, 3, 3, 5, 3, 4, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 5, 5, 5, 3, 3, 1, 3, 3, 5, 3, 1, 5, 1, 1, 3, 1, 3, 3, 3, 5, 1, 2, 2, 4, 2, 2, 2, 2, 6, 4, 2, 2, 2, 4, 6, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 5, 3, 5, 5, 5, 3, 1, 3, 1, 1, 5, 5, 3, 5, 1, 1, 3, 3, 1, 1, 1, 3, 1, 2, 2, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 3, 5, 5, 3, 3, 1, 1, 3, 1, 3, 5, 5, 1, 1, 3, 3, 1, 1, 5, 5, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 5, 5, 3, 5, 3, 1, 3, 5, 3, 3, 5, 3, 3, 1, 1, 1, 1, 5, 5, 3, 3, 1, 3, 3, 2, 2, 6, 4, 4, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 0, 0, 0, 2, 4, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 7, 7, 5, 3, 5, 3, 3, 3, 3, 1, 3, 5, 3, 3, 3, 1, 1, 1, 5, 3, 5, 3, 1, 3, 1, 2, 4, 4, 4, 6, 2, 2, 4, 2, 6, 6, 4, 4, 2, 0, 0, 0, 0, 2, 4, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 7, 7, 5, 3, 5, 3, 3, 3, 3, 1, 1, 5, 3, 1, 1, 3, 1, 1, 5, 5, 5, 5, 3, 1, 1, 4, 2, 4, 4, 4, 4, 2, 2, 4, 4, 4, 4, 4, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 3, 5, 5, 3, 3, 5, 3, 3, 3, 3, 3, 1, 1, 3, 0, 3, 7, 5, 3, 3, 5, 1, 2, 2, 2, 2, 4, 6, 4, 2, 2, 4, 4, 2, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 7, 5, 5, 5, 1, 5, 3, 5, 1, 1, 3, 3, 3, 3, 1, 5, 1, 1, 3, 5, 3, 3, 3, 1, 2, 2, 4, 4, 2, 2, 2, 2, 4, 4, 4, 2, 2, 0, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 5, 7, 5, 5, 3, 5, 1, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 5, 3, 3, 5, 1, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 7, 7, 7, 3, 3, 3, 5, 1, 1, 3, 5, 1, 3, 1, 1, 1, 5, 5, 3, 3, 3, 1, 1, 4, 4, 2, 2, 4, 4, 2, 2, 2, 0, 4, 2, 0, 0, 2, 2, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 8, 7, 5, 5, 7, 3, 1, 3, 3, 3, 1, 5, 5, 5, 1, 1, 1, 3, 3, 5, 3, 1, 3, 1, 1, 2, 6, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 5, 5, 3, 3, 3, 5, 1, 1, 5, 5, 3, 3, 1, 1, 3, 5, 5, 3, 3, 3, 3, 3, 6, 4, 2, 2, 4, 2, 2, 2, 2, 6, 4, 2, 0, 0, 4, 4, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 5, 3, 5, 3, 3, 3, 5, 3, 1, 5, 3, 5, 3, 1, 1, 5, 5, 5, 5, 3, 3, 5, 1, 4, 4, 2, 2, 4, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 4, 6, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 7, 5, 5, 5, 5, 5, 3, 1, 5, 1, 1, 3, 5, 5, 3, 0, 1, 5, 1, 3, 3, 3, 5, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 5, 7, 5, 5, 5, 5, 3, 3, 3, 5, 1, 1, 5, 5, 7, 5, 1, 1, 3, 1, 3, 5, 3, 5, 3, 1, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 7, 5, 5, 5, 3, 3, 7, 3, 1, 5, 3, 5, 5, 1, 1, 3, 1, 1, 3, 5, 5, 5, 1, 2, 4, 4, 2, 2, 2, 2, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 5, 3, 3, 3, 3, 5, 3, 7, 3, 7, 7, 1, 1, 3, 0, 1, 5, 5, 5, 3, 3, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 6, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 7, 7, 3, 3, 5, 3, 1, 5, 3, 5, 5, 3, 1, 1, 1, 1, 5, 5, 3, 3, 1, 0, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 8, 7, 7, 7, 3, 3, 5, 1, 3, 7, 3, 5, 3, 3, 1, 1, 1, 5, 5, 7, 5, 5, 3, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 4, 2, 6, 6, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 1, 3, 5, 1, 5, 7, 3, 7, 7, 1, 1, 1, 1, 3, 3, 5, 5, 5, 1, 0, 4, 4, 2, 2, 6, 4, 4, 2, 2, 2, 2, 2, 0, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 7, 7, 7, 3, 3, 3, 3, 1, 3, 5, 3, 7, 5, 3, 1, 1, 1, 3, 3, 5, 5, 3, 1, 2, 4, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 0, 2, 2, 4, 6, 4, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 3, 7, 7, 5, 5, 5, 7, 1, 3, 3, 5, 1, 7, 5, 1, 1, 1, 3, 3, 1, 5, 3, 3, 1, 2, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 3, 5, 7, 7, 5, 3, 5, 1, 3, 1, 3, 5, 3, 3, 1, 1, 3, 3, 3, 1, 3, 5, 5, 3, 2, 4, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 5, 7, 3, 3, 5, 3, 1, 5, 5, 3, 3, 1, 3, 3, 3, 5, 1, 1, 5, 3, 1, 2, 4, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 0, 2, 4, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 3, 7, 1, 3, 5, 3, 3, 3, 3, 5, 1, 1, 3, 3, 5, 5, 3, 5, 7, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 6, 4, 2, 2, 4, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 7, 7, 3, 5, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 5, 3, 1, 2, 2, 2, 2, 2, 4, 2, 2, 6, 7, 4, 2, 6, 4, 2, 0, 2, 0, 0, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 7, 7, 5, 3, 1, 3, 1, 5, 3, 3, 3, 5, 5, 1, 3, 3, 3, 3, 1, 5, 3, 3, 1, 2, 2, 2, 2, 2, 4, 2, 2, 7, 6, 2, 2, 6, 6, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 7, 7, 7, 3, 3, 3, 1, 7, 3, 1, 3, 3, 1, 1, 3, 1, 3, 5, 1, 3, 3, 1, 1, 2, 2, 4, 2, 4, 4, 4, 4, 4, 2, 2, 2, 4, 4, 6, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 3, 3, 5, 3, 1, 3, 3, 5, 5, 5, 1, 3, 1, 3, 3, 1, 1, 1, 1, 7, 5, 3, 1, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 2, 4, 6, 6, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 5, 7, 7, 5, 5, 3, 7, 3, 5, 7, 5, 3, 3, 3, 3, 3, 1, 1, 3, 7, 7, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 6, 4, 4, 2, 2, 0, 2, 2, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 5, 7, 7, 7, 7, 5, 3, 3, 7, 7, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 5, 3, 5, 3, 4, 2, 2, 4, 2, 6, 2, 2, 0, 0, 2, 2, 6, 4, 2, 2, 2, 0, 2, 2, 4, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 5, 5, 7, 7, 5, 7, 5, 7, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 3, 1, 1, 3, 5, 5, 3, 1, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 3, 5, 7, 8, 7, 7, 5, 3, 3, 5, 5, 1, 5, 3, 3, 3, 5, 1, 1, 1, 3, 3, 5, 7, 7, 5, 2, 2, 2, 2, 2, 2, 4, 6, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 3, 5, 7, 8, 7, 7, 5, 5, 1, 3, 5, 3, 3, 3, 3, 5, 3, 1, 3, 1, 1, 5, 5, 7, 5, 5, 2, 0, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 6, 6, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 5, 5, 7, 7, 7, 7, 5, 3, 1, 5, 3, 1, 5, 3, 3, 3, 3, 3, 1, 1, 1, 3, 7, 5, 5, 5, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 8, 7, 7, 5, 3, 5, 7, 3, 3, 3, 1, 1, 7, 7, 1, 1, 1, 1, 3, 3, 3, 3, 4, 2, 2, 2, 4, 4, 6, 4, 2, 6, 2, 2, 6, 4, 4, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 7, 7, 7, 5, 7, 3, 3, 3, 3, 5, 3, 3, 1, 1, 3, 7, 5, 1, 3, 1, 3, 5, 5, 5, 3, 4, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 6, 4, 4, 2, 4, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 7, 3, 3, 5, 3, 3, 1, 3, 3, 1, 3, 3, 3, 5, 3, 1, 1, 1, 3, 7, 5, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 6, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 8, 5, 7, 5, 3, 5, 5, 5, 3, 5, 3, 1, 5, 3, 3, 3, 1, 1, 3, 5, 5, 3, 1, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 2, 6, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 8, 7, 7, 7, 3, 3, 7, 5, 3, 5, 5, 1, 3, 5, 7, 3, 3, 3, 3, 7, 3, 3, 1, 2, 4, 6, 6, 4, 2, 4, 4, 4, 2, 0, 2, 6, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 7, 5, 5, 3, 5, 7, 3, 3, 5, 5, 5, 3, 1, 3, 1, 1, 5, 3, 5, 1, 5, 1, 2, 4, 4, 4, 4, 2, 4, 4, 4, 4, 2, 2, 4, 6, 4, 2, 2, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 7, 7, 5, 5, 3, 3, 7, 1, 5, 5, 7, 5, 3, 1, 1, 5, 3, 3, 1, 1, 3, 3, 3, 4, 6, 6, 6, 4, 4, 4, 2, 4, 2, 2, 4, 2, 4, 4, 4, 4, 0, 2, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 1, 3, 7, 7, 7, 3, 3, 1, 5, 1, 7, 5, 5, 5, 1, 3, 1, 5, 5, 3, 3, 1, 3, 5, 3, 2, 4, 4, 4, 6, 4, 6, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 2, 2, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, -9, 1, 5, 5, 3, 5, 7, 7, 5, 3, 3, 1, 3, 5, 3, 7, 3, 5, 3, 1, 3, 3, 3, 5, 1, 3, 1, 1, 3, 2, 2, 4, 4, 4, 4, 4, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 5, 7, 7, 3, 7, 7, 5, 3, 5, 3, 3, 5, 7, 7, 5, 3, 5, 3, 1, 3, 1, 3, 5, 1, 1, 3, 1, 1, 2, 2, 4, 4, 2, 4, 2, 4, 2, 4, 4, 6, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 3, 5, 3, 3, 3, 3, 3, 3, 5, 1, 1, 3, 3, 1, 7, 1, 5, 5, 5, 1, 0, 1, 1, 4, 2, 6, 6, 2, 4, 6, 2, 4, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 3, 3, 3, 5, 3, 1, 3, 5, 1, 1, 5, 3, 1, 3, 5, 3, 1, 1, 1, 3, 3, 5, 3, 3, 2, 4, 6, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 4, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 5, 5, 3, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 3, 5, 3, 1, 3, 5, 3, 5, 5, 1, 2, 2, 2, 2, 2, 4, 2, 2, 4, 6, 2, 2, 2, 2, 0, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 5, 5, 7, 3, 5, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 1, 3, 5, 3, 1, 4, 2, 2, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 3, 7, 5, 5, 7, 3, 1, 1, 5, 5, 3, 3, 1, 3, 5, 1, 1, 7, 7, 3, 3, 3, 5, 5, 1, 2, 2, 2, 2, 6, 6, 4, 2, 2, 0, 7, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 7, 5, 5, 7, 7, 3, 1, 3, 5, 3, 1, 3, 3, 3, 3, 1, 7, 7, 3, 3, 5, 5, 3, 1, 2, 4, 2, 2, 4, 6, 4, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 7, 3, 5, 5, 3, 3, 1, 5, 5, 1, 3, 3, 3, 5, 5, 1, 5, 1, 1, 3, 5, 5, 5, 1, 2, 2, 0, 2, 4, 6, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 5, 3, 5, 5, 3, 3, 1, 5, 3, 1, 3, 3, 3, 1, 5, 3, 3, 3, 1, 1, 1, 1, 3, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 3, 5, 5, 3, 5, 1, 5, 1, 3, 5, 1, 3, 1, 3, 3, 1, 1, 1, 3, 3, 1, 1, 3, 3, 3, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 4, 6, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 3, 5, 3, 5, 3, 3, 1, 3, 3, 1, 3, 1, 3, 3, 3, 3, 5, 3, 3, 1, 1, 1, 3, 3, 4, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 6, 4, 2, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 3, 7, 3, 5, 5, 3, 1, 3, 3, 3, 1, 3, 3, 3, 1, 3, 5, 7, 3, 3, 1, 1, 3, 1, 1, 2, 2, 2, 6, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 5, 5, 3, 3, 3, 3, 1, 1, 3, 1, 3, 5, 3, 1, 1, 1, 1, 1, 5, 7, 5, 3, 2, 2, 2, 2, 4, 7, 6, 2, 2, 2, 0, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 5, 3, 5, 3, 3, 5, 3, 3, 3, 3, 1, 3, 5, 5, 1, 1, 1, 1, 3, 5, 7, 5, 1, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 0, 0, 0, 2, 4, 2, 4, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 5, 7, 5, 3, 5, 3, 3, 3, 3, 1, 1, 5, 5, 1, 1, 1, 1, 3, 7, 5, 3, 1, 2, 2, 2, 2, 4, 4, 6, 6, 4, 2, 0, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 5, 3, 3, 3, 1, 5, 3, 1, 5, 7, 3, 1, 3, 3, 1, 5, 7, 7, 1, 3, 2, 0, 2, 2, 4, 4, 6, 4, 4, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 5, 7, 3, 7, 5, 3, 5, 1, 1, 3, 3, 1, 3, 5, 1, 1, 3, 3, 1, 1, 7, 7, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 3, 5, 5, 5, 3, 5, 1, 3, 3, 3, 1, 3, 7, 1, 1, 1, 1, 1, 5, 7, 7, 5, 3, 2, 0, 2, 2, 2, 4, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 7, 5, 5, 7, 3, 5, 5, 1, 1, 3, 5, 3, 3, 5, 3, 1, 1, 1, 3, 3, 5, 7, 5, 3, 2, 2, 0, 2, 2, 6, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 3, 7, 5, 3, 3, 3, 3, 1, 3, 1, 1, 5, 5, 3, 1, 1, 3, 1, 3, 7, 7, 5, 3, 0, 2, 2, 0, 4, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 3, 5, 7, 7, 5, 3, 5, 3, 3, 1, 5, 3, 3, 3, 1, 3, 3, 1, 1, 1, 3, 5, 5, 5, 7, 1, 3, 4, 2, 0, 0, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 5, 3, 5, 7, 3, 5, 5, 5, 1, 3, 3, 7, 3, 3, 1, 3, 1, 3, 3, 3, 1, 1, 3, 3, 3, 5, 1, 3, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, -9, 7, 5, 7, 5, 5, 5, 3, 5, 3, 3, 3, 3, 5, 3, 1, 3, 1, 3, 3, 3, 1, 1, 3, 1, 3, 1, 3, 3, 2, 4, 2, 2, 2, 2, 4, 2, 4, 4, 6, 2, 2, 4, 4, 6, 4, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 5, 5, 1, 5, 1, 3, 3, 3, 5, 3, 1, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 1, 5, 5, 3, 5, 3, 3, 5, 5, 5, 5, 1, 1, 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 2, 4, 6, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 7, 7, 7, 1, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 1, 1, 1, 1, 7, 5, 5, 5, 2, 2, 2, 2, 6, 6, 4, 4, 2, 2, 2, 4, 4, 4, 2, 4, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 7, 7, 5, 3, 5, 1, 5, 3, 5, 3, 3, 1, 3, 3, 3, 1, 1, 5, 7, 7, 3, 3, 2, 0, 2, 2, 4, 2, 4, 4, 4, 0, 2, 4, 4, 4, 4, 4, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 5, 3, 1, 3, 5, 3, 1, 1, 3, 7, 7, 7, 5, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 6, 4, 2, 2, 4, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 8, 7, 8, 8, 7, 7, 7, 7, 7, 5, 7, 1, 3, 1, 3, 1, 1, 1, 0, 1, 7, 7, 3, 3, 4, 4, 0, 2, 2, 2, 4, 4, 2, 0, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 8, 7, 7, 7, 8, 7, 5, 5, 7, 5, 7, 7, 3, 5, 3, 3, 3, 0, 1, 0, 3, 7, 7, 5, 1, 4, 4, 2, 2, 2, 4, 6, 4, 2, 2, 2, 4, 6, 2, 2, 6, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 8, 7, 7, 5, 7, 7, 3, 7, 5, 3, 1, 3, 3, 1, 1, 1, 3, 7, 7, 3, 5, 6, 6, 2, 0, 2, 2, 4, 4, 2, 2, 0, 4, 4, 2, 2, 4, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 3, 7, 7, 7, 1, 1, 1, 3, 1, 0, 1, 5, 7, 7, 3, 3, 4, 2, 0, 2, 2, 4, 4, 4, 2, 0, 0, 2, 6, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 1, 1, 1, 3, 1, 0, 1, 5, 7, 7, 3, 3, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 0, 4, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 9, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 1, 1, 5, 5, 1, 0, 1, 5, 7, 7, 3, 5, 6, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 1, 1, 5, 7, 3, 1, 1, 3, 7, 7, 7, 3, 4, 4, 2, 0, 2, 2, 4, 2, 2, 0, 0, 2, 6, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 5, 7, 7, 5, 5, 1, 3, 3, 1, 3, 5, 3, 3, 1, 1, 3, 1, 1, 1, 1, 5, 5, 3, 3, 4, 2, 2, 2, 2, 4, 6, 2, 4, 2, 2, 0, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 5, 7, 5, 5, 3, 3, 5, 5, 3, 3, 3, 3, 3, 1, 5, 5, 1, 3, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 5, 3, 3, 1, 3, 5, 3, 3, 3, 1, 1, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 5, 3, 5, 5, 3, 1, 3, 3, 3, 3, 5, 3, 3, 1, 1, 3, 5, 3, 5, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 3, 5, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 1, 5, 5, 3, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 5, 5, 3, 5, 3, 1, 3, 3, 5, 3, 1, 3, 3, 5, 3, 1, 3, 1, 1, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 3, 3, 3, 5, 3, 5, 3, 1, 3, 5, 3, 1, 3, 5, 3, 3, 3, 1, 1, 1, 1, 3, 3, 2, 4, 2, 4, 2, 2, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 3, 5, 3, 3, 5, 3, 5, 3, 3, 1, 1, 3, 1, 3, 3, 1, 3, 5, 1, 3, 5, 3, 2, 2, 2, 2, 2, 4, 4, 4, 2, 4, 4, 6, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 5, 7, 3, 3, 5, 5, 5, 7, 3, 1, 5, 3, 3, 1, 1, 3, 3, 5, 3, 1, 3, 1, 3, 5, 1, 2, 2, 0, 2, 2, 2, 6, 2, 4, 2, 6, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 8, 7, 5, 7, 7, 7, 7, 5, 3, 5, 5, 3, 3, 3, 3, 3, 1, 1, 5, 5, 1, 1, 3, 1, 5, 7, 5, 4, 2, 0, 2, 2, 4, 6, 4, 2, 4, 6, 4, 2, 2, 0, 2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 3, 5, 7, 3, 3, 5, 3, 1, 3, 3, 5, 3, 1, 1, 5, 5, 3, 1, 3, 3, 3, 7, 3, 4, 2, 0, 2, 2, 2, 4, 2, 2, 2, 6, 6, 2, 2, 0, 2, 2, 0, 0, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 3, 5, 5, 5, 3, 3, 3, 1, 3, 3, 5, 3, 1, 1, 5, 3, 5, 1, 3, 1, 3, 5, 3, 4, 2, 0, 2, 2, 4, 2, 2, 2, 4, 4, 6, 2, 2, 0, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 3, 7, 5, 3, 3, 5, 3, 1, 3, 5, 5, 3, 1, 1, 1, 5, 1, 1, 5, 5, 3, 3, 3, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 5, 5, 7, 5, 3, 3, 3, 5, 1, 1, 5, 5, 3, 1, 3, 3, 3, 0, 1, 5, 7, 5, 3, 3, 2, 2, 0, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 4, 2, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 7, 7, 5, 3, 7, 5, 1, 3, 3, 3, 3, 1, 3, 5, 5, 0, 3, 3, 1, 5, 5, 3, 2, 2, 0, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 2, 0, 0, 0, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 8, 7, 7, 7, 7, 7, 5, 7, 5, 3, 3, 5, 3, 3, 5, 3, 1, 1, 3, 3, 1, 3, 5, 1, 3, 3, 3, 3, 2, 0, 2, 4, 4, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 5, 3, 5, 5, 3, 1, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 5, 3, 1, 3, 3, 3, 2, 0, 2, 4, 2, 2, 2, 4, 2, 2, 6, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 5, 7, 3, 3, 3, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 1, 5, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 5, 3, 5, 5, 3, 1, 1, 5, 3, 3, 5, 3, 1, 3, 3, 1, 1, 3, 1, 3, 3, 5, 3, 3, 2, 2, 0, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 4, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 7, 3, 3, 3, 3, 3, 3, 3, 5, 3, 1, 5, 3, 1, 1, 5, 3, 3, 1, 3, 5, 5, 5, 5, 5, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 6, 6, 4, 2, 2, 2, 2, 2, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 8, 7, 7, 3, 5, 3, 3, 5, 3, 1, 1, 3, 5, 1, 3, 3, 3, 1, 1, 3, 5, 3, 3, 5, 5, 2, 2, 0, 2, 4, 2, 2, 2, 0, 2, 2, 4, 2, 4, 6, 4, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 8, 7, 7, 7, 7, 7, 5, 7, 5, 5, 3, 3, 5, 3, 1, 5, 3, 3, 3, 1, 1, 3, 5, 3, 5, 5, 2, 0, 2, 2, 4, 6, 4, 2, 0, 0, 2, 0, 2, 4, 6, 6, 6, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 8, 3, 7, 7, 5, 7, 7, 7, 7, 3, 5, 5, 3, 5, 5, 5, 5, 5, 5, 7, 5, 4, 0, 0, 2, 4, 4, 4, 2, 0, 0, 2, 2, 0, 4, 6, 6, 6, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 7, 3, 7, 7, 5, 5, 7, 7, 3, 1, 5, 3, 1, 1, 3, 3, 1, 3, 7, 5, 5, 2, 0, 0, 2, 4, 4, 4, 2, 2, 2, 2, 2, 0, 2, 6, 4, 2, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 8, 7, 7, 7, 7, 7, 7, 5, 7, 5, 3, 7, 7, 5, 3, 3, 3, 3, 1, 3, 5, 3, 7, 5, 3, 3, 2, 0, 2, 2, 4, 4, 4, 4, 2, 2, 4, 4, 2, 0, 4, 4, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 7, 7, 5, 3, 5, 3, 3, 1, 5, 3, 5, 3, 3, 1, 1, 3, 3, 1, 5, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 6, 4, 2, 6, 6, 2, 0, 2, 4, 2, 2, 2, 4, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, -9, 1, 1, 7, 5, 5, 3, 5, 5, 1, 3, 3, 1, 3, 1, 5, 1, 3, 3, 1, 1, 1, 1, 3, 1, 5, 5, 1, 1, 4, 2, 4, 2, 2, 2, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 1, 1, 1, 5, 3, 5, 5, 5, 1, 5, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 7, 1, 1, 2, 2, 4, 2, 2, 2, 4, 6, 6, 4, 2, 4, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 1, 1, 1, 5, 3, 5, 3, 7, 1, 3, 5, 1, 1, 5, 5, 3, 3, 1, 3, 3, 3, 3, 5, 5, 7, 5, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 6, 4, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 3, 7, 3, 7, 5, 7, 1, 5, 3, 1, 3, 5, 7, 3, 3, 1, 3, 5, 1, 3, 3, 3, 5, 7, 1, 1, 6, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 6, 6, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 5, 5, 7, 7, 7, 7, 1, 7, 5, 5, 3, 5, 7, 3, 3, 3, 1, 3, 5, 3, 1, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 6, 4, 4, 2, 4, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 3, 5, 7, 5, 5, 5, 0, 7, 7, 3, 3, 5, 7, 3, 5, 1, 4, 2, 2, 2, 4, 4, 2, 2, 2, 4, 2, 0, 2, 6, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 7, 7, 3, 5, 3, 7, 5, 1, 7, 5, 5, 5, 1, 5, 5, 1, 1, 3, 5, 3, 1, 1, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 4, 2, 2, 6, 4, 0, 2, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 8, 7, 7, 7, 7, 5, 7, 3, 1, 7, 7, 5, 5, 1, 3, 1, 1, 1, 3, 5, 5, 1, 1, 4, 4, 4, 4, 4, 6, 6, 6, 2, 2, 4, 0, 2, 6, 2, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 9, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 1, 3, 7, 7, 5, 5, 1, 3, 3, 1, 1, 3, 5, 3, 1, 1, 2, 2, 4, 2, 2, 6, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 3, 5, 7, 3, 5, 5, 3, 1, 5, 1, 3, 5, 7, 7, 5, 1, 0, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 5, 3, 7, 5, 3, 5, 1, 3, 5, 3, 5, 3, 1, 1, 1, 1, 3, 1, 5, 5, 3, 1, 2, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 4, 4, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 7, 5, 7, 7, 5, 5, 1, 3, 5, 3, 3, 3, 3, 0, 3, 3, 3, 5, 5, 7, 5, 1, 2, 2, 2, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 5, 7, 7, 7, 7, 5, 7, 5, 3, 5, 1, 5, 5, 3, 1, 1, 1, 1, 5, 3, 7, 7, 5, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 3, 5, 3, 5, 3, 1, 5, 3, 1, 3, 3, 3, 3, 5, 1, 1, 1, 1, 1, 5, 5, 5, 1, 0, 2, 0, 2, 2, 2, 2, 2, 6, 4, 2, 4, 6, 4, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 3, 5, 1, 5, 5, 5, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 3, 1, 1, 3, 3, 3, 2, 2, 4, 4, 4, 4, 2, 4, 2, 2, 4, 2, 4, 4, 4, 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 3, 5, 5, 3, 5, 3, 1, 3, 3, 3, 5, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 1, 3, 3, 1, 2, 2, 2, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 4, 4, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 5, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 3, 3, 3, 3, 2, 2, 2, 2, 6, 6, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 8, 5, 3, 5, 1, 7, 5, 3, 5, 5, 7, 5, 1, 7, 7, 5, 1, 5, 7, 3, 1, 7, 7, 7, 3, 4, 2, 2, 2, 2, 6, 4, 4, 4, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 0, 0, 0, 2, 4, 2, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 7, 7, 3, 7, 7, 7, 5, 3, 5, 5, 7, 5, 1, 3, 1, 1, 3, 3, 5, 3, 1, 3, 5, 7, 3, 2, 2, 2, 2, 2, 4, 4, 6, 6, 4, 2, 2, 4, 2, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 5, 3, 5, 5, 3, 1, 3, 7, 5, 3, 3, 3, 1, 1, 3, 1, 3, 1, 1, 3, 5, 7, 1, 4, 2, 2, 2, 2, 2, 4, 6, 6, 4, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 3, 3, 5, 3, 3, 5, 5, 3, 1, 1, 3, 3, 1, 3, 3, 1, 1, 5, 3, 3, 1, 3, 1, 5, 5, 2, 2, 4, 4, 6, 4, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 3, 5, 5, 5, 3, 7, 5, 1, 3, 3, 3, 5, 1, 3, 5, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 2, 2, 2, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 5, 5, 5, 7, 5, 5, 5, 3, 5, 3, 5, 7, 1, 3, 3, 1, 1, 5, 3, 3, 1, 5, 5, 5, 5, 2, 2, 0, 6, 6, 2, 2, 2, 2, 2, 6, 6, 0, 0, 2, 2, 2, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 5, 5, 5, 5, 7, 5, 7, 7, 5, 1, 1, 3, 3, 5, 7, 1, 1, 7, 7, 5, 7, 4, 2, 2, 4, 2, 6, 2, 2, 2, 2, 4, 2, 0, 0, 4, 4, 2, 4, 2, 2, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 5, 5, 7, 5, 7, 5, 5, 7, 7, 3, 3, 1, 1, 7, 7, 1, 1, 7, 5, 5, 5, 4, 2, 2, 2, 2, 6, 6, 2, 2, 2, 2, 2, 0, 2, 4, 7, 4, 2, 4, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 5, 3, 1, 1, 3, 1, 5, 1, 3, 7, 7, 5, 5, 4, 2, 0, 2, 2, 6, 4, 2, 2, 0, 0, 0, 2, 0, 2, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 8, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 3, 5, 7, 5, 1, 1, 1, 3, 1, 3, 1, 5, 5, 7, 5, 3, 2, 2, 2, 2, 4, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 6, 4, 6, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 8, 7, 7, 5, 5, 5, 7, 3, 3, 3, 5, 1, 3, 7, 3, 3, 1, 1, 3, 3, 3, 1, 3, 5, 3, 3, 5, 4, 2, 0, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 6, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 3, 5, 5, 3, 3, 3, 1, 1, 3, 3, 7, 3, 1, 1, 1, 3, 5, 3, 1, 3, 1, 3, 2, 2, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 5, 5, 5, 3, 5, 5, 1, 3, 5, 7, 1, 5, 3, 1, 3, 1, 1, 1, 3, 3, 5, 3, 3, 1, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 9, 7, 7, 7, 7, 5, 5, 5, 5, 1, 3, 7, 3, 3, 5, 3, 1, 3, 5, 1, 1, 1, 5, 5, 5, 3, 5, 5, 2, 2, 2, 2, 2, 6, 4, 4, 4, 4, 4, 6, 2, 2, 6, 0, 0, 2, 0, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 7, 5, 3, 5, 3, 3, 7, 3, 3, 1, 5, 3, 3, 1, 1, 3, 1, 1, 1, 7, 3, 1, 5, 1, 1, 3, 6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 3, 3, 5, 7, 1, 3, 5, 1, 3, 5, 5, 1, 5, 3, 1, 3, 7, 1, 1, 3, 3, 1, 3, 2, 2, 2, 2, 2, 4, 6, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 5, 7, 3, 5, 7, 5, 3, 3, 3, 5, 1, 3, 3, 3, 1, 1, 3, 5, 1, 3, 1, 3, 5, 5, 5, 3, 2, 2, 0, 2, 4, 4, 6, 4, 2, 2, 0, 2, 2, 2, 4, 2, 4, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 7, 7, 3, 5, 7, 7, 5, 5, 5, 5, 1, 1, 1, 3, 3, 3, 1, 1, 5, 5, 3, 3, 2, 2, 2, 2, 4, 4, 6, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 3, 5, 7, 5, 3, 3, 1, 3, 1, 5, 1, 1, 7, 7, 3, 3, 2, 2, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 7, 5, 7, 7, 3, 7, 3, 5, 5, 5, 3, 1, 3, 3, 1, 1, 1, 1, 5, 7, 7, 3, 2, 2, 2, 2, 2, 6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 7, 7, 7, 7, 5, 5, 7, 3, 5, 3, 3, 5, 5, 1, 1, 5, 3, 1, 5, 1, 0, 3, 5, 3, 1, 2, 2, 4, 4, 4, 6, 6, 4, 2, 0, 2, 2, 0, 2, 4, 4, 4, 7, 2, 2, 2, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, -9, 7, 9, 7, 7, 7, 7, 8, 7, 7, 5, 7, 5, 3, 7, 5, 5, 1, 3, 1, 3, 3, 5, 1, 1, 5, 7, 5, 1, 2, 2, 4, 6, 4, 6, 7, 6, 2, 0, 2, 0, 2, 2, 2, 4, 6, 4, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 9, 7, 8, 7, 7, 8, 7, 7, 5, 7, 5, 3, 3, 7, 5, 3, 1, 3, 5, 1, 1, 1, 1, 5, 5, 5, 3, 2, 2, 2, 2, 4, 6, 6, 4, 2, 2, 2, 2, 2, 2, 2, 2, 6, 4, 2, 2, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 7, 7, 7, 7, 5, 5, 3, 3, 3, 1, 3, 3, 3, 5, 1, 1, 3, 1, 5, 3, 1, 1, 7, 5, 3, 2, 2, 2, 2, 2, 6, 4, 4, 2, 0, 2, 2, 0, 2, 4, 4, 2, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 8, 7, 5, 3, 3, 5, 5, 3, 1, 5, 3, 1, 3, 3, 3, 3, 1, 3, 1, 1, 3, 3, 3, 1, 1, 1, 1, 4, 4, 2, 4, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 3, 3, 3, 3, 1, 3, 5, 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 5, 3, 3, 3, 1, 1, 1, 5, 3, 3, 1, 3, 1, 2, 2, 2, 4, 2, 2, 4, 4, 4, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 8, 7, 3, 5, 3, 5, 5, 3, 3, 3, 1, 3, 1, 3, 5, 3, 3, 3, 3, 3, 3, 3, 5, 3, 1, 1, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 3, 5, 3, 3, 5, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 5, 3, 3, 5, 3, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 8, 3, 5, 5, 7, 7, 7, 5, 5, 7, 3, 7, 3, 3, 7, 5, 1, 3, 5, 7, 1, 1, 3, 3, 5, 5, 7, 5, 2, 2, 0, 2, 2, 4, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 3, 7, 7, 5, 5, 5, 5, 5, 3, 3, 7, 5, 5, 7, 5, 1, 3, 5, 3, 1, 1, 5, 3, 5, 7, 7, 5, 2, 4, 2, 2, 2, 2, 0, 2, 2, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 3, 5, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 5, 7, 3, 1, 5, 5, 5, 3, 1, 3, 3, 5, 5, 7, 5, 0, 2, 2, 2, 4, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 5, 7, 5, 7, 7, 7, 7, 7, 1, 3, 7, 7, 5, 7, 3, 1, 3, 5, 3, 3, 1, 3, 3, 3, 5, 5, 5, 2, 2, 0, 2, 2, 0, 2, 6, 6, 6, 4, 6, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 3, 7, 7, 7, 7, 7, 7, 7, 5, 5, 7, 7, 5, 7, 3, 1, 5, 3, 3, 3, 3, 3, 3, 3, 5, 5, 3, 2, 2, 0, 2, 2, 2, 2, 4, 6, 6, 4, 4, 4, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 7, 5, 7, 7, 7, 3, 3, 7, 3, 3, 5, 5, 3, 1, 1, 3, 3, 3, 1, 5, 3, 5, 5, 5, 4, 2, 0, 2, 2, 0, 4, 4, 4, 4, 2, 2, 4, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 1, 3, 5, 1, 7, 3, 3, 3, 3, 3, 1, 1, 5, 3, 1, 3, 5, 3, 1, 3, 1, 1, 1, 3, 2, 2, 4, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 5, 3, 7, 3, 3, 1, 3, 3, 3, 3, 5, 3, 3, 3, 3, 5, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -7, 7, 5, 3, 5, 3, 5, 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, 5, 1, 3, 5, 5, 1, 1, 3, 1, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -7, 7, 5, 5, 3, 3, 3, 3, 3, 7, 1, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 5, 3, 3, 3, 1, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 8, 7, 5, 5, 3, 3, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 5, 3, 3, 3, 1, 1, 1, 3, 3, 1, 2, 2, 6, 2, 2, 4, 2, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, -7, 7, 5, 5, 5, 3, 3, 3, 5, 3, 5, 3, 3, 3, 3, 3, 1, 5, 1, 1, 3, 1, 3, 3, 1, 1, 1, 1, 1, 2, 2, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -7, 5, 7, 5, 5, 5, 3, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 5, 7, 5, 5, 5, 3, 3, 5, 5, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 3, 3, 1, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 3, 3, 3, 5, 5, 5, 3, 7, 5, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 1, 1, 1, 3, 5, 5, 1, 3, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, -7, 5, 1, 1, 5, 5, 3, 7, 5, 3, 5, 5, 5, 3, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1, 3, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -7, 7, 7, 5, 5, 3, 3, 5, 5, 3, 5, 5, 5, 5, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 5, 5, 1, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 5, 3, 1, 3, 3, 1, 3, 1, 4, 4, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 0, 1, 3, 5, 5, 5, 5, 3, 3, 3, 5, 3, 1, 3, 3, 3, 1, 1, 3, 3, 5, 3, 5, 1, 3, 1, 2, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 5, 0, 1, 1, 5, 5, 3, 5, 3, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 1, 3, 5, 3, 3, 3, 1, 3, 3, 4, 2, 2, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -7, 1, 5, 3, 3, 5, 7, 5, 3, 5, 5, 5, 7, 5, 3, 5, 3, 3, 3, 1, 5, 3, 3, 3, 3, 3, 3, 3, 3, 4, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -7, 5, 7, 5, 5, 5, 5, 5, 3, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 1, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 7, 7, 3, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 1, 3, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 5, 5, 5, 3, 5, 7, 5, 3, 3, 3, 3, 5, 5, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 5, 5, 5, 3, 3, 5, 5, 3, 5, 3, 3, 3, 1, 3, 3, 3, 3, 1, 5, 3, 1, 3, 2, 2, 2, 2, 2, 4, 2, 4, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 5, 5, 5, 3, 5, 3, 3, 5, 1, 3, 3, 3, 1, 3, 1, 3, 3, 3, 1, 1, 1, 1, 2, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 3, 5, 5, 3, 5, 5, 5, 3, 5, 3, 3, 3, 3, 5, 3, 3, 3, 1, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 3, 3, 3, 3, 3, 1, 3, 5, 1, 3, 3, 1, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -7, 5, 7, 5, 5, 3, 5, 5, 5, 5, 3, 7, 3, 1, 3, 5, 3, 3, 3, 1, 3, 1, 3, 5, 1, 1, 3, 3, 3, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 5, 7, 5, 5, 5, 3, 3, 3, 3, 5, 3, 3, 3, 5, 3, 5, 3, 3, 3, 1, 3, 1, 1, 1, 3, 1, 1, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, -7, 7, 7, 5, 5, 3, 7, 3, 5, 3, 1, 3, 1, 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 4, 4, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 3, 3, 3, 5, 5, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1, 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 7, 5, 1, 3, 3, 3, 5, 5, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 1, 1, 1, 3, 1, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 3, 1, 1, 1, 5, 5, 5, 5, 3, 3, 5, 5, 3, 3, 3, 3, 1, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 2, 4, 4, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -7, 3, 7, 5, 5, 5, 5, 5, 3, 5, 5, 5, 3, 5, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 1, 1, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 5, 3, 1, 1, 1, 5, 3, 1, 3, 5, 3, 5, 5, 1, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, diff --git a/lib/books/coupled/_44c4_long.vqh b/lib/books/coupled/_44c4_long.vqh deleted file mode 100644 index ddd88a45..00000000 --- a/lib/books/coupled/_44c4_long.vqh +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c4_long_VQH_ -#define _V__44c4_long_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c4_long[] = { - 2, 9, 7,12,10,13,11,10,12,15, 9, 4, 6, 5, 8, 7, - 10, 8,11,17, 5,19, 3,19, 5,19, 8,11,18,19,12, 5, - 8, 4, 8, 5,10, 7,11,18,10,19, 5,19, 6,19, 8,12, - 19,19,12, 7,11, 5,10, 6,11, 6,11,15,11,19, 8,19, - 8,19, 9,13,19,19,10, 7,10, 6,11, 5,11, 5, 8,13, - 11,10,17,10,19, 9,18, 6, 7,11,11,13,19,13,19,11, - 19, 7, 7,10, -}; - -static static_codebook _huff_book__44c4_long = { - 2, 100, - _huff_lengthlist__44c4_long, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_p0_r0.vqh b/lib/books/coupled/_44c4_s0_p0_r0.vqh deleted file mode 100644 index 1ed5f9dd..00000000 --- a/lib/books/coupled/_44c4_s0_p0_r0.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_p0_r0_VQH_ -#define _V__44c4_s0_p0_r0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_p0_r0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c4_s0_p0_r0[] = { - 1, 5, 4,11,11,11, 4, 4,11,11,11, 3, 3,11,11,11, - 7, 6,11,11,11,11,11,11,11, -}; - -static float _vq_quantthresh__44c4_s0_p0_r0[] = { - -0.5, -0.16667, 0.16667, 0.5, -}; - -static long _vq_quantmap__44c4_s0_p0_r0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_p0_r0 = { - _vq_quantthresh__44c4_s0_p0_r0, - _vq_quantmap__44c4_s0_p0_r0, - 5, - 5 -}; - -static static_codebook _44c4_s0_p0_r0 = { - 2, 25, - _vq_lengthlist__44c4_s0_p0_r0, - 1, -537569963, 1607816533, 3, 0, - _vq_quantlist__44c4_s0_p0_r0, - NULL, - &_vq_auxt__44c4_s0_p0_r0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_p0_r1.vqh b/lib/books/coupled/_44c4_s0_p0_r1.vqh deleted file mode 100644 index 0dc81e20..00000000 --- a/lib/books/coupled/_44c4_s0_p0_r1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_p0_r1_VQH_ -#define _V__44c4_s0_p0_r1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_p0_r1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c4_s0_p0_r1[] = { - 1, 4, 4,11,11, 5, 4, 4,11,11, 5, 4, 4,11,11,11, - 7, 6,11,10,10, 6, 6,10,10, -}; - -static float _vq_quantthresh__44c4_s0_p0_r1[] = { - -0.16667, -0.055556, 0.055556, 0.16667, -}; - -static long _vq_quantmap__44c4_s0_p0_r1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_p0_r1 = { - _vq_quantthresh__44c4_s0_p0_r1, - _vq_quantmap__44c4_s0_p0_r1, - 5, - 5 -}; - -static static_codebook _44c4_s0_p0_r1 = { - 2, 25, - _vq_lengthlist__44c4_s0_p0_r1, - 1, -541298233, 1604088263, 3, 0, - _vq_quantlist__44c4_s0_p0_r1, - NULL, - &_vq_auxt__44c4_s0_p0_r1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_p1_0.vqh b/lib/books/coupled/_44c4_s0_p1_0.vqh deleted file mode 100644 index ef6a55d1..00000000 --- a/lib/books/coupled/_44c4_s0_p1_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_p1_0_VQH_ -#define _V__44c4_s0_p1_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_p1_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c4_s0_p1_0[] = { - 2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, - 7, 7, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 8, - 7, 0, 0, 0, 7, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0, - 0, 0, 5, 6, 6, 0, 0, 0, 7, 8, 0, 0, 0, 7, 7, 0, - 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 7, 7, 0, 0, - 0, 7, 7, 0, 0, 0, 9, 8, 0, 0, 0, 0, 0, 0, 0, 5, - 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 8, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, - 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5, 7, 8, 0, - 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7,10,10, 0, 0, 0, 9, 9, 0, 0, 0, 8, 9, 0, 0, 0, - 10,10, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0, 0, 9, - 9, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c4_s0_p1_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c4_s0_p1_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_p1_0 = { - _vq_quantthresh__44c4_s0_p1_0, - _vq_quantmap__44c4_s0_p1_0, - 5, - 5 -}; - -static static_codebook _44c4_s0_p1_0 = { - 4, 625, - _vq_lengthlist__44c4_s0_p1_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c4_s0_p1_0, - NULL, - &_vq_auxt__44c4_s0_p1_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_p2_0.vqh b/lib/books/coupled/_44c4_s0_p2_0.vqh deleted file mode 100644 index aa1bfbb4..00000000 --- a/lib/books/coupled/_44c4_s0_p2_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_p2_0_VQH_ -#define _V__44c4_s0_p2_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_p2_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c4_s0_p2_0[] = { - 1, 6, 6, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, - 8, 8, 0, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0, 0, 9, - 8, 0, 0, 0, 8, 8, 0, 0, 0,12,12, 0, 0, 0, 0, 0, - 0, 0, 6, 8, 8, 0, 0, 0, 8, 9, 0, 0, 0, 8, 8, 0, - 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 8, 7, 0, 0, - 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, - 8, 8, 0, 0, 0, 7, 8, 0, 0, 0, 8, 8, 0, 0, 0,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 9, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 7, - 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, 8, 9, 0, - 0, 0, 8, 8, 0, 0, 0, 7, 8, 0, 0, 0,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,12,12, 0, 0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0, - 11,11, 0, 0, 0, 0, 0, 0, 0, 8,12,12, 0, 0, 0,10, - 10, 0, 0, 0,10,10, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c4_s0_p2_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c4_s0_p2_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_p2_0 = { - _vq_quantthresh__44c4_s0_p2_0, - _vq_quantmap__44c4_s0_p2_0, - 5, - 5 -}; - -static static_codebook _44c4_s0_p2_0 = { - 4, 625, - _vq_lengthlist__44c4_s0_p2_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c4_s0_p2_0, - NULL, - &_vq_auxt__44c4_s0_p2_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_p3_0.vqh b/lib/books/coupled/_44c4_s0_p3_0.vqh deleted file mode 100644 index 17df725e..00000000 --- a/lib/books/coupled/_44c4_s0_p3_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_p3_0_VQH_ -#define _V__44c4_s0_p3_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_p3_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c4_s0_p3_0[] = { - 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, - 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6, - 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, - 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c4_s0_p3_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c4_s0_p3_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_p3_0 = { - _vq_quantthresh__44c4_s0_p3_0, - _vq_quantmap__44c4_s0_p3_0, - 9, - 9 -}; - -static static_codebook _44c4_s0_p3_0 = { - 2, 81, - _vq_lengthlist__44c4_s0_p3_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c4_s0_p3_0, - NULL, - &_vq_auxt__44c4_s0_p3_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_p4_0.vqh b/lib/books/coupled/_44c4_s0_p4_0.vqh deleted file mode 100644 index f929b20c..00000000 --- a/lib/books/coupled/_44c4_s0_p4_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_p4_0_VQH_ -#define _V__44c4_s0_p4_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_p4_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c4_s0_p4_0[] = { - 1, 4, 4, 7, 7, 0, 0, 0, 0, 0, 4, 4, 7, 7, 0, 0, - 0, 0, 0, 4, 4, 7, 7, 0, 0, 0, 0, 0, 6, 6, 7, 7, - 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, - 9, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, - 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c4_s0_p4_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c4_s0_p4_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_p4_0 = { - _vq_quantthresh__44c4_s0_p4_0, - _vq_quantmap__44c4_s0_p4_0, - 9, - 9 -}; - -static static_codebook _44c4_s0_p4_0 = { - 2, 81, - _vq_lengthlist__44c4_s0_p4_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c4_s0_p4_0, - NULL, - &_vq_auxt__44c4_s0_p4_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_p5_0.vqh b/lib/books/coupled/_44c4_s0_p5_0.vqh deleted file mode 100644 index 380f3f03..00000000 --- a/lib/books/coupled/_44c4_s0_p5_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_p5_0_VQH_ -#define _V__44c4_s0_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_p5_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c4_s0_p5_0[] = { - 2, 4, 4, 5, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 5, 7, 7, 8, 8, 9, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 6, 8, 8, 9, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9,10,10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11,10,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c4_s0_p5_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c4_s0_p5_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_p5_0 = { - _vq_quantthresh__44c4_s0_p5_0, - _vq_quantmap__44c4_s0_p5_0, - 17, - 17 -}; - -static static_codebook _44c4_s0_p5_0 = { - 2, 289, - _vq_lengthlist__44c4_s0_p5_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c4_s0_p5_0, - NULL, - &_vq_auxt__44c4_s0_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_p6_0.vqh b/lib/books/coupled/_44c4_s0_p6_0.vqh deleted file mode 100644 index 7c91228a..00000000 --- a/lib/books/coupled/_44c4_s0_p6_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_p6_0_VQH_ -#define _V__44c4_s0_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_p6_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c4_s0_p6_0[] = { - 2, 4, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 5, 7, 7, 7, 7,10,10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 6, 7, 7, 9,10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 9,11,11, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 9,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,10,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c4_s0_p6_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c4_s0_p6_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_p6_0 = { - _vq_quantthresh__44c4_s0_p6_0, - _vq_quantmap__44c4_s0_p6_0, - 17, - 17 -}; - -static static_codebook _44c4_s0_p6_0 = { - 2, 289, - _vq_lengthlist__44c4_s0_p6_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c4_s0_p6_0, - NULL, - &_vq_auxt__44c4_s0_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_p7_0.vqh b/lib/books/coupled/_44c4_s0_p7_0.vqh deleted file mode 100644 index eb0fdcef..00000000 --- a/lib/books/coupled/_44c4_s0_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_p7_0_VQH_ -#define _V__44c4_s0_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s0_p7_0[] = { - 1, 3, 4, 6, 6, 8, 9, 0, 0, 0, 0, 0, 0, 5, 5, 5, - 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 8, 7, 8, 8,10,10, 0, 0, 0, 0, 0, - 0, 0,11,12, 9, 9,11,10, 0, 0, 0, 0, 0, 0, 0,13, - 12, 9, 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,14,15,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,15,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,14,15, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c4_s0_p7_0[] = { - -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, - 12.5, 17.5, 22.5, 27.5, -}; - -static long _vq_quantmap__44c4_s0_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_p7_0 = { - _vq_quantthresh__44c4_s0_p7_0, - _vq_quantmap__44c4_s0_p7_0, - 13, - 13 -}; - -static static_codebook _44c4_s0_p7_0 = { - 2, 169, - _vq_lengthlist__44c4_s0_p7_0, - 1, -526516224, 1616117760, 4, 0, - _vq_quantlist__44c4_s0_p7_0, - NULL, - &_vq_auxt__44c4_s0_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_p7_1.vqh b/lib/books/coupled/_44c4_s0_p7_1.vqh deleted file mode 100644 index 295f5e91..00000000 --- a/lib/books/coupled/_44c4_s0_p7_1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_p7_1_VQH_ -#define _V__44c4_s0_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_p7_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c4_s0_p7_1[] = { - 2, 4, 4, 5, 5, 7, 4, 4, 6, 6, 7, 4, 4, 5, 5, 7, - 5, 5, 5, 6, 7, 7, 7, 5, 5, -}; - -static float _vq_quantthresh__44c4_s0_p7_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c4_s0_p7_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_p7_1 = { - _vq_quantthresh__44c4_s0_p7_1, - _vq_quantmap__44c4_s0_p7_1, - 5, - 5 -}; - -static static_codebook _44c4_s0_p7_1 = { - 2, 25, - _vq_lengthlist__44c4_s0_p7_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c4_s0_p7_1, - NULL, - &_vq_auxt__44c4_s0_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_p8_0.vqh b/lib/books/coupled/_44c4_s0_p8_0.vqh deleted file mode 100644 index 330aa2d3..00000000 --- a/lib/books/coupled/_44c4_s0_p8_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_p8_0_VQH_ -#define _V__44c4_s0_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_p8_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s0_p8_0[] = { - 1, 4, 3, 6, 5, 7, 7, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8, 9,10, 0, 0, 0, 0, 0, - 0, 0,12,12, 9, 9,10,11, 0, 0, 0, 0, 0, 0, 0,12, - 12, 9, 9,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,14,15,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,14,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,14,13, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c4_s0_p8_0[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c4_s0_p8_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_p8_0 = { - _vq_quantthresh__44c4_s0_p8_0, - _vq_quantmap__44c4_s0_p8_0, - 13, - 13 -}; - -static static_codebook _44c4_s0_p8_0 = { - 2, 169, - _vq_lengthlist__44c4_s0_p8_0, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c4_s0_p8_0, - NULL, - &_vq_auxt__44c4_s0_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_p8_1.vqh b/lib/books/coupled/_44c4_s0_p8_1.vqh deleted file mode 100644 index 1ce8746f..00000000 --- a/lib/books/coupled/_44c4_s0_p8_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_p8_1_VQH_ -#define _V__44c4_s0_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_p8_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s0_p8_1[] = { - 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 9, 5, 5, - 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, - 7, 8, 7, 8, 8, 8, 8, 9, 7, 7, 7, 7, 7, 7, 8, 8, - 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 8, - 8, 9, 9,10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,10, 9, - 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,10, 9,10, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 9, 9,10, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8,10, - 9,10, 9,10, 9, 9, 8, 8, 8, 8, 8, 8,10,10, 9,10, - 10, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c4_s0_p8_1[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c4_s0_p8_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_p8_1 = { - _vq_quantthresh__44c4_s0_p8_1, - _vq_quantmap__44c4_s0_p8_1, - 13, - 13 -}; - -static static_codebook _44c4_s0_p8_1 = { - 2, 169, - _vq_lengthlist__44c4_s0_p8_1, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c4_s0_p8_1, - NULL, - &_vq_auxt__44c4_s0_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_p9_0.vqh b/lib/books/coupled/_44c4_s0_p9_0.vqh deleted file mode 100644 index 255357fe..00000000 --- a/lib/books/coupled/_44c4_s0_p9_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_p9_0_VQH_ -#define _V__44c4_s0_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_p9_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s0_p9_0[] = { - 1, 3, 3, 9, 8,13,14,14,14,14,14,14,14, 5, 5, 6, - 9,10,14,14,14,14,14,14,14,14, 5, 6, 4,11,10,13, - 13,14,14,14,14,14,14,14, 6,10,13,13,14,14,14,14, - 14,14,14,14,14,11, 6,13,12,14,14,14,14,14,14,14, - 14,14,12,13, 9,14,13,14,14,14,14,14,14,14,14,14, - 12,14,12,14,14,14,14,14,14,14,14,14,14,14,13,13, - 14,14,14,14,14,14,14,14,14,14,14,14, 9,14,13,14, - 14,14,14,14,14,14,14,14,10,14,12,14,14,14,14,14, - 14,14,14,14,14,14, 9,14, 9,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,13,13,13,13,13, -}; - -static float _vq_quantthresh__44c4_s0_p9_0[] = { - -929.5, -760.5, -591.5, -422.5, -253.5, -84.5, 84.5, 253.5, - 422.5, 591.5, 760.5, 929.5, -}; - -static long _vq_quantmap__44c4_s0_p9_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_p9_0 = { - _vq_quantthresh__44c4_s0_p9_0, - _vq_quantmap__44c4_s0_p9_0, - 13, - 13 -}; - -static static_codebook _44c4_s0_p9_0 = { - 2, 169, - _vq_lengthlist__44c4_s0_p9_0, - 1, -515919872, 1626677248, 4, 0, - _vq_quantlist__44c4_s0_p9_0, - NULL, - &_vq_auxt__44c4_s0_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_p9_1.vqh b/lib/books/coupled/_44c4_s0_p9_1.vqh deleted file mode 100644 index f881611d..00000000 --- a/lib/books/coupled/_44c4_s0_p9_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_p9_1_VQH_ -#define _V__44c4_s0_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_p9_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s0_p9_1[] = { - 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 6, 5, 6, - 7, 7, 8, 8, 8, 9, 9,10,10,10, 7, 6, 5, 7, 7, 8, - 8, 9, 9, 9, 9,10,10,12, 8, 8, 8, 8, 9, 9, 9, 9, - 10,10,10,10,13, 8, 7, 8, 8, 9, 9, 9, 9,10,10,10, - 10,13,11,12, 9, 9,10,10,10,10,10,11,10,11,13,11, - 11, 9, 9,10,10,10,10,10,10,11,11,13,13,13,11,11, - 10,11,10,10,11,11,11,11,13,12,12,11,10,10,11,11, - 11,11,11,11,11,13,13,13,12,12,11,11,11,11,11,11, - 12,11,13,13,13,13,12,11,11,10,10,11,11,11,12,14, - 13,13,12,13,11,11,10,10,11,11,11,12,14,14,14,12, - 13,10,11,10,10,11,11,12,12, -}; - -static float _vq_quantthresh__44c4_s0_p9_1[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c4_s0_p9_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_p9_1 = { - _vq_quantthresh__44c4_s0_p9_1, - _vq_quantmap__44c4_s0_p9_1, - 13, - 13 -}; - -static static_codebook _44c4_s0_p9_1 = { - 2, 169, - _vq_lengthlist__44c4_s0_p9_1, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c4_s0_p9_1, - NULL, - &_vq_auxt__44c4_s0_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_p9_2.vqh b/lib/books/coupled/_44c4_s0_p9_2.vqh deleted file mode 100644 index 78ca076a..00000000 --- a/lib/books/coupled/_44c4_s0_p9_2.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_p9_2_VQH_ -#define _V__44c4_s0_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_p9_2[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s0_p9_2[] = { - 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, - 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 6, 7, - 7, 7, 7, 7, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 8, 7, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 8, 8, 8, - 8, 9, 9, 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, - 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, - 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, - 9, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c4_s0_p9_2[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c4_s0_p9_2[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_p9_2 = { - _vq_quantthresh__44c4_s0_p9_2, - _vq_quantmap__44c4_s0_p9_2, - 13, - 13 -}; - -static static_codebook _44c4_s0_p9_2 = { - 2, 169, - _vq_lengthlist__44c4_s0_p9_2, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c4_s0_p9_2, - NULL, - &_vq_auxt__44c4_s0_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_pN_r0.vqh b/lib/books/coupled/_44c4_s0_pN_r0.vqh deleted file mode 100644 index 97108e4e..00000000 --- a/lib/books/coupled/_44c4_s0_pN_r0.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_pN_r0_VQH_ -#define _V__44c4_s0_pN_r0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_pN_r0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c4_s0_pN_r0[] = { - 3, 3, 3, 9, 9, 4, 4, 4, 9, 9, 4, 4, 4, 9, 7, 9, - 4, 4, 8, 9, 9, 5, 4, 9, 9, -}; - -static float _vq_quantthresh__44c4_s0_pN_r0[] = { - -0.5, -0.16667, 0.16667, 0.5, -}; - -static long _vq_quantmap__44c4_s0_pN_r0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_pN_r0 = { - _vq_quantthresh__44c4_s0_pN_r0, - _vq_quantmap__44c4_s0_pN_r0, - 5, - 5 -}; - -static static_codebook _44c4_s0_pN_r0 = { - 2, 25, - _vq_lengthlist__44c4_s0_pN_r0, - 1, -537569963, 1607816533, 3, 0, - _vq_quantlist__44c4_s0_pN_r0, - NULL, - &_vq_auxt__44c4_s0_pN_r0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s0_pN_r1.vqh b/lib/books/coupled/_44c4_s0_pN_r1.vqh deleted file mode 100644 index 0a25bf23..00000000 --- a/lib/books/coupled/_44c4_s0_pN_r1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s0_pN_r1_VQH_ -#define _V__44c4_s0_pN_r1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s0_pN_r1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c4_s0_pN_r1[] = { - 2, 3, 3,11,10, 4, 4, 4,11,11, 4, 4, 4,11, 8,11, - 5, 6, 9,11,10, 5, 5,10, 8, -}; - -static float _vq_quantthresh__44c4_s0_pN_r1[] = { - -0.16667, -0.055556, 0.055556, 0.16667, -}; - -static long _vq_quantmap__44c4_s0_pN_r1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s0_pN_r1 = { - _vq_quantthresh__44c4_s0_pN_r1, - _vq_quantmap__44c4_s0_pN_r1, - 5, - 5 -}; - -static static_codebook _44c4_s0_pN_r1 = { - 2, 25, - _vq_lengthlist__44c4_s0_pN_r1, - 1, -541298233, 1604088263, 3, 0, - _vq_quantlist__44c4_s0_pN_r1, - NULL, - &_vq_auxt__44c4_s0_pN_r1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_p2_0.vqh b/lib/books/coupled/_44c4_s1_p2_0.vqh deleted file mode 100644 index d3e15eaf..00000000 --- a/lib/books/coupled/_44c4_s1_p2_0.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_p2_0_VQH_ -#define _V__44c4_s1_p2_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_p2_0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c4_s1_p2_0[] = { - 1, 3, 3, 0, 0, 0, 0, 0, 0, 4, 5, 5, 0, 0, 0, 0, - 0, 0, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c4_s1_p2_0[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c4_s1_p2_0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_p2_0 = { - _vq_quantthresh__44c4_s1_p2_0, - _vq_quantmap__44c4_s1_p2_0, - 3, - 3 -}; - -static static_codebook _44c4_s1_p2_0 = { - 4, 81, - _vq_lengthlist__44c4_s1_p2_0, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c4_s1_p2_0, - NULL, - &_vq_auxt__44c4_s1_p2_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_p2_s0.vqh b/lib/books/coupled/_44c4_s1_p2_s0.vqh deleted file mode 100644 index d4070e15..00000000 --- a/lib/books/coupled/_44c4_s1_p2_s0.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_p2_s0_VQH_ -#define _V__44c4_s1_p2_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_p2_s0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c4_s1_p2_s0[] = { - 1,12,12,12,12, 3, 5, 4,12,12, 3, 4, 4,12,12, 6, - 12,12, 7, 8,12,12,12,12,11, -}; - -static float _vq_quantthresh__44c4_s1_p2_s0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c4_s1_p2_s0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_p2_s0 = { - _vq_quantthresh__44c4_s1_p2_s0, - _vq_quantmap__44c4_s1_p2_s0, - 5, - 5 -}; - -static static_codebook _44c4_s1_p2_s0 = { - 2, 25, - _vq_lengthlist__44c4_s1_p2_s0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c4_s1_p2_s0, - NULL, - &_vq_auxt__44c4_s1_p2_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_p4_0.vqh b/lib/books/coupled/_44c4_s1_p4_0.vqh deleted file mode 100644 index 2d1174c9..00000000 --- a/lib/books/coupled/_44c4_s1_p4_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_p4_0_VQH_ -#define _V__44c4_s1_p4_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_p4_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c4_s1_p4_0[] = { - 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 7, 7, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 4, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 8, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 7, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c4_s1_p4_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c4_s1_p4_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_p4_0 = { - _vq_quantthresh__44c4_s1_p4_0, - _vq_quantmap__44c4_s1_p4_0, - 5, - 5 -}; - -static static_codebook _44c4_s1_p4_0 = { - 4, 625, - _vq_lengthlist__44c4_s1_p4_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c4_s1_p4_0, - NULL, - &_vq_auxt__44c4_s1_p4_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_p4_s0.vqh b/lib/books/coupled/_44c4_s1_p4_s0.vqh deleted file mode 100644 index c4a47534..00000000 --- a/lib/books/coupled/_44c4_s1_p4_s0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_p4_s0_VQH_ -#define _V__44c4_s1_p4_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_p4_s0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c4_s1_p4_s0[] = { - 1,19,19,19,19,19,19,19,19, 3, 5, 5,19,19,19,19, - 19,19, 3, 5, 5,19,19,19,19,19,19, 5, 7, 7, 6, 6, - 19,19,19,19, 8, 7, 7,13,12,19,19,19,19, 8, 8, 8, - 19,19,19,19,19,19, 8, 8, 8,19,19,19,19,19,19, 9, - 19,19,19,19,19,19,10,11,18,18,18,18,18,18,18,18, - 18, -}; - -static float _vq_quantthresh__44c4_s1_p4_s0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c4_s1_p4_s0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_p4_s0 = { - _vq_quantthresh__44c4_s1_p4_s0, - _vq_quantmap__44c4_s1_p4_s0, - 9, - 9 -}; - -static static_codebook _44c4_s1_p4_s0 = { - 2, 81, - _vq_lengthlist__44c4_s1_p4_s0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c4_s1_p4_s0, - NULL, - &_vq_auxt__44c4_s1_p4_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_p6_0.vqh b/lib/books/coupled/_44c4_s1_p6_0.vqh deleted file mode 100644 index fc16e3af..00000000 --- a/lib/books/coupled/_44c4_s1_p6_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_p6_0_VQH_ -#define _V__44c4_s1_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_p6_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c4_s1_p6_0[] = { - 1, 2, 3, 5, 5, 8, 8,10,10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 8, 8,10,10, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8, 8,11,10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 9,11,11, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 8,11,11, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,11,11, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,12,12, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,11, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, - 10,13,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 12,12,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c4_s1_p6_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c4_s1_p6_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_p6_0 = { - _vq_quantthresh__44c4_s1_p6_0, - _vq_quantmap__44c4_s1_p6_0, - 17, - 17 -}; - -static static_codebook _44c4_s1_p6_0 = { - 2, 289, - _vq_lengthlist__44c4_s1_p6_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c4_s1_p6_0, - NULL, - &_vq_auxt__44c4_s1_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_p6_s0.vqh b/lib/books/coupled/_44c4_s1_p6_s0.vqh deleted file mode 100644 index 9bceb15c..00000000 --- a/lib/books/coupled/_44c4_s1_p6_s0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_p6_s0_VQH_ -#define _V__44c4_s1_p6_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_p6_s0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c4_s1_p6_s0[] = { - 1,18,18,18,18,18,18,18,18, 3, 5, 5,18,18,18,18, - 18,18, 3, 5, 5,18,18,18,18,18,18, 5, 7, 7, 7, 6, - 18,18,18,18, 8, 7, 7,11,12,18,18,18,18, 7, 8, 8, - 18,18,18,18,18,18, 8, 8, 8,18,18,18,18,18,18, 8, - 18,18,18,18,18,18, 9,10,17,17,17,17,17,17,17,17, - 17, -}; - -static float _vq_quantthresh__44c4_s1_p6_s0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c4_s1_p6_s0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_p6_s0 = { - _vq_quantthresh__44c4_s1_p6_s0, - _vq_quantmap__44c4_s1_p6_s0, - 9, - 9 -}; - -static static_codebook _44c4_s1_p6_s0 = { - 2, 81, - _vq_lengthlist__44c4_s1_p6_s0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c4_s1_p6_s0, - NULL, - &_vq_auxt__44c4_s1_p6_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_p7_0.vqh b/lib/books/coupled/_44c4_s1_p7_0.vqh deleted file mode 100644 index 95a31c3f..00000000 --- a/lib/books/coupled/_44c4_s1_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_p7_0_VQH_ -#define _V__44c4_s1_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s1_p7_0[] = { - 1, 3, 4, 6, 6, 8, 9, 0, 0, 0, 0, 0, 0, 5, 5, 5, - 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 8, 7, 8, 8,10,10, 0, 0, 0, 0, 0, - 0, 0,11,12, 9, 9,11,10, 0, 0, 0, 0, 0, 0, 0,13, - 12, 9, 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,14,15,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,15,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,14,15, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c4_s1_p7_0[] = { - -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, - 12.5, 17.5, 22.5, 27.5, -}; - -static long _vq_quantmap__44c4_s1_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_p7_0 = { - _vq_quantthresh__44c4_s1_p7_0, - _vq_quantmap__44c4_s1_p7_0, - 13, - 13 -}; - -static static_codebook _44c4_s1_p7_0 = { - 2, 169, - _vq_lengthlist__44c4_s1_p7_0, - 1, -526516224, 1616117760, 4, 0, - _vq_quantlist__44c4_s1_p7_0, - NULL, - &_vq_auxt__44c4_s1_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_p7_1.vqh b/lib/books/coupled/_44c4_s1_p7_1.vqh deleted file mode 100644 index 83489bfc..00000000 --- a/lib/books/coupled/_44c4_s1_p7_1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_p7_1_VQH_ -#define _V__44c4_s1_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_p7_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c4_s1_p7_1[] = { - 2, 4, 4, 5, 5, 7, 4, 4, 6, 6, 7, 4, 4, 5, 5, 7, - 5, 5, 5, 6, 7, 7, 7, 5, 5, -}; - -static float _vq_quantthresh__44c4_s1_p7_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c4_s1_p7_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_p7_1 = { - _vq_quantthresh__44c4_s1_p7_1, - _vq_quantmap__44c4_s1_p7_1, - 5, - 5 -}; - -static static_codebook _44c4_s1_p7_1 = { - 2, 25, - _vq_lengthlist__44c4_s1_p7_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c4_s1_p7_1, - NULL, - &_vq_auxt__44c4_s1_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_p7_s0.vqh b/lib/books/coupled/_44c4_s1_p7_s0.vqh deleted file mode 100644 index b1a232d0..00000000 --- a/lib/books/coupled/_44c4_s1_p7_s0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_p7_s0_VQH_ -#define _V__44c4_s1_p7_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_p7_s0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c4_s1_p7_s0[] = { - 1,18,18,18,18,18,18,18,18, 3, 5, 5,18,18,18,18, - 18,18, 3, 5, 5,18,18,18,18,18,18, 5, 7, 7, 7, 7, - 18,18,18,18, 7, 7, 7,11,12,18,18,18,18, 7, 8, 8, - 18,18,18,18,18,18, 7, 8, 8,18,18,18,18,18,18, 8, - 18,18,18,18,18,18,10, 9,17,17,17,17,17,17,17,17, - 17, -}; - -static float _vq_quantthresh__44c4_s1_p7_s0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c4_s1_p7_s0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_p7_s0 = { - _vq_quantthresh__44c4_s1_p7_s0, - _vq_quantmap__44c4_s1_p7_s0, - 9, - 9 -}; - -static static_codebook _44c4_s1_p7_s0 = { - 2, 81, - _vq_lengthlist__44c4_s1_p7_s0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c4_s1_p7_s0, - NULL, - &_vq_auxt__44c4_s1_p7_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_p8_0.vqh b/lib/books/coupled/_44c4_s1_p8_0.vqh deleted file mode 100644 index 8897b4ed..00000000 --- a/lib/books/coupled/_44c4_s1_p8_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_p8_0_VQH_ -#define _V__44c4_s1_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_p8_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s1_p8_0[] = { - 1, 4, 3, 6, 5, 7, 7, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8, 9,10, 0, 0, 0, 0, 0, - 0, 0,12,12, 9, 9,10,11, 0, 0, 0, 0, 0, 0, 0,12, - 12, 9, 9,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,14,15,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,14,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,14,13, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c4_s1_p8_0[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c4_s1_p8_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_p8_0 = { - _vq_quantthresh__44c4_s1_p8_0, - _vq_quantmap__44c4_s1_p8_0, - 13, - 13 -}; - -static static_codebook _44c4_s1_p8_0 = { - 2, 169, - _vq_lengthlist__44c4_s1_p8_0, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c4_s1_p8_0, - NULL, - &_vq_auxt__44c4_s1_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_p8_1.vqh b/lib/books/coupled/_44c4_s1_p8_1.vqh deleted file mode 100644 index d3364a86..00000000 --- a/lib/books/coupled/_44c4_s1_p8_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_p8_1_VQH_ -#define _V__44c4_s1_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_p8_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s1_p8_1[] = { - 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 9, 5, 5, - 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, - 7, 8, 7, 8, 8, 8, 8, 9, 7, 7, 7, 7, 7, 7, 8, 8, - 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 8, - 8, 9, 9,10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,10, 9, - 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,10, 9,10, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 9, 9,10, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8,10, - 9,10, 9,10, 9, 9, 8, 8, 8, 8, 8, 8,10,10, 9,10, - 10, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c4_s1_p8_1[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c4_s1_p8_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_p8_1 = { - _vq_quantthresh__44c4_s1_p8_1, - _vq_quantmap__44c4_s1_p8_1, - 13, - 13 -}; - -static static_codebook _44c4_s1_p8_1 = { - 2, 169, - _vq_lengthlist__44c4_s1_p8_1, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c4_s1_p8_1, - NULL, - &_vq_auxt__44c4_s1_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_p8_s0.vqh b/lib/books/coupled/_44c4_s1_p8_s0.vqh deleted file mode 100644 index 542f7aeb..00000000 --- a/lib/books/coupled/_44c4_s1_p8_s0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_p8_s0_VQH_ -#define _V__44c4_s1_p8_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_p8_s0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c4_s1_p8_s0[] = { - 1,14,14,14,14,14,14,14,14, 3, 5, 5,14,14,14,14, - 14,14, 3, 5, 5,14,14,14,14,14,14, 5, 7, 7, 7, 7, - 14,14,14,14, 8, 7, 7,12,14,14,14,14,14, 7, 8, 8, - 14,14,14,14,14,14, 7, 8, 8,14,14,14,14,14,14, 8, - 14,14,14,14,14,14, 9, 9,14,14,14,14,14,13,13,13, - 13, -}; - -static float _vq_quantthresh__44c4_s1_p8_s0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c4_s1_p8_s0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_p8_s0 = { - _vq_quantthresh__44c4_s1_p8_s0, - _vq_quantmap__44c4_s1_p8_s0, - 9, - 9 -}; - -static static_codebook _44c4_s1_p8_s0 = { - 2, 81, - _vq_lengthlist__44c4_s1_p8_s0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c4_s1_p8_s0, - NULL, - &_vq_auxt__44c4_s1_p8_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_p9_0.vqh b/lib/books/coupled/_44c4_s1_p9_0.vqh deleted file mode 100644 index 01c8b969..00000000 --- a/lib/books/coupled/_44c4_s1_p9_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_p9_0_VQH_ -#define _V__44c4_s1_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_p9_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s1_p9_0[] = { - 1, 3, 3, 9, 8,13,14,14,14,14,14,14,14, 5, 5, 6, - 9,10,14,14,14,14,14,14,14,14, 5, 6, 4,11,10,13, - 13,14,14,14,14,14,14,14, 6,10,13,13,14,14,14,14, - 14,14,14,14,14,11, 6,13,12,14,14,14,14,14,14,14, - 14,14,12,13, 9,14,13,14,14,14,14,14,14,14,14,14, - 12,14,12,14,14,14,14,14,14,14,14,14,14,14,13,13, - 14,14,14,14,14,14,14,14,14,14,14,14, 9,14,13,14, - 14,14,14,14,14,14,14,14,10,14,12,14,14,14,14,14, - 14,14,14,14,14,14, 9,14, 9,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,13,13,13,13,13, -}; - -static float _vq_quantthresh__44c4_s1_p9_0[] = { - -929.5, -760.5, -591.5, -422.5, -253.5, -84.5, 84.5, 253.5, - 422.5, 591.5, 760.5, 929.5, -}; - -static long _vq_quantmap__44c4_s1_p9_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_p9_0 = { - _vq_quantthresh__44c4_s1_p9_0, - _vq_quantmap__44c4_s1_p9_0, - 13, - 13 -}; - -static static_codebook _44c4_s1_p9_0 = { - 2, 169, - _vq_lengthlist__44c4_s1_p9_0, - 1, -515919872, 1626677248, 4, 0, - _vq_quantlist__44c4_s1_p9_0, - NULL, - &_vq_auxt__44c4_s1_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_p9_1.vqh b/lib/books/coupled/_44c4_s1_p9_1.vqh deleted file mode 100644 index 28f6868a..00000000 --- a/lib/books/coupled/_44c4_s1_p9_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_p9_1_VQH_ -#define _V__44c4_s1_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_p9_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s1_p9_1[] = { - 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 6, 5, 6, - 7, 7, 8, 8, 8, 9, 9,10,10,10, 7, 6, 5, 7, 7, 8, - 8, 9, 9, 9, 9,10,10,12, 8, 8, 8, 8, 9, 9, 9, 9, - 10,10,10,10,13, 8, 7, 8, 8, 9, 9, 9, 9,10,10,10, - 10,13,11,12, 9, 9,10,10,10,10,10,11,10,11,13,11, - 11, 9, 9,10,10,10,10,10,10,11,11,13,13,13,11,11, - 10,11,10,10,11,11,11,11,13,12,12,11,10,10,11,11, - 11,11,11,11,11,13,13,13,12,12,11,11,11,11,11,11, - 12,11,13,13,13,13,12,11,11,10,10,11,11,11,12,14, - 13,13,12,13,11,11,10,10,11,11,11,12,14,14,14,12, - 13,10,11,10,10,11,11,12,12, -}; - -static float _vq_quantthresh__44c4_s1_p9_1[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c4_s1_p9_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_p9_1 = { - _vq_quantthresh__44c4_s1_p9_1, - _vq_quantmap__44c4_s1_p9_1, - 13, - 13 -}; - -static static_codebook _44c4_s1_p9_1 = { - 2, 169, - _vq_lengthlist__44c4_s1_p9_1, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c4_s1_p9_1, - NULL, - &_vq_auxt__44c4_s1_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_p9_2.vqh b/lib/books/coupled/_44c4_s1_p9_2.vqh deleted file mode 100644 index f0bc98b4..00000000 --- a/lib/books/coupled/_44c4_s1_p9_2.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_p9_2_VQH_ -#define _V__44c4_s1_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_p9_2[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s1_p9_2[] = { - 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, - 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 6, 7, - 7, 7, 7, 7, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 8, 7, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 8, 8, 8, - 8, 9, 9, 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, - 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, - 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, - 9, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c4_s1_p9_2[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c4_s1_p9_2[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_p9_2 = { - _vq_quantthresh__44c4_s1_p9_2, - _vq_quantmap__44c4_s1_p9_2, - 13, - 13 -}; - -static static_codebook _44c4_s1_p9_2 = { - 2, 169, - _vq_lengthlist__44c4_s1_p9_2, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c4_s1_p9_2, - NULL, - &_vq_auxt__44c4_s1_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_p9_s0.vqh b/lib/books/coupled/_44c4_s1_p9_s0.vqh deleted file mode 100644 index 99227e03..00000000 --- a/lib/books/coupled/_44c4_s1_p9_s0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_p9_s0_VQH_ -#define _V__44c4_s1_p9_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_p9_s0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c4_s1_p9_s0[] = { - 1, 9, 9, 9, 9, 9, 9, 9, 9, 4, 5, 5, 9, 9, 9, 9, - 9, 9, 4, 5, 6, 9, 9, 9, 9, 9, 9, 6, 8, 6, 7, 6, - 9, 9, 9, 9, 7, 6, 6, 9, 9, 9, 9, 9, 9, 9, 8, 9, - 9, 9, 9, 9, 9, 9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 8, - 9, 9, 9, 9, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, -}; - -static float _vq_quantthresh__44c4_s1_p9_s0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c4_s1_p9_s0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_p9_s0 = { - _vq_quantthresh__44c4_s1_p9_s0, - _vq_quantmap__44c4_s1_p9_s0, - 9, - 9 -}; - -static static_codebook _44c4_s1_p9_s0 = { - 2, 81, - _vq_lengthlist__44c4_s1_p9_s0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c4_s1_p9_s0, - NULL, - &_vq_auxt__44c4_s1_p9_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_pS_r0.vqh b/lib/books/coupled/_44c4_s1_pS_r0.vqh deleted file mode 100644 index 5e9c7688..00000000 --- a/lib/books/coupled/_44c4_s1_pS_r0.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_pS_r0_VQH_ -#define _V__44c4_s1_pS_r0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_pS_r0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c4_s1_pS_r0[] = { - 3, 2, 1, 6, 6, 6, 6, 5, 5, -}; - -static float _vq_quantthresh__44c4_s1_pS_r0[] = { - -0.16667, 0.16667, -}; - -static long _vq_quantmap__44c4_s1_pS_r0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_pS_r0 = { - _vq_quantthresh__44c4_s1_pS_r0, - _vq_quantmap__44c4_s1_pS_r0, - 3, - 3 -}; - -static static_codebook _44c4_s1_pS_r0 = { - 2, 9, - _vq_lengthlist__44c4_s1_pS_r0, - 1, -539667115, 1607816533, 2, 0, - _vq_quantlist__44c4_s1_pS_r0, - NULL, - &_vq_auxt__44c4_s1_pS_r0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s1_pS_r1.vqh b/lib/books/coupled/_44c4_s1_pS_r1.vqh deleted file mode 100644 index 00c53138..00000000 --- a/lib/books/coupled/_44c4_s1_pS_r1.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s1_pS_r1_VQH_ -#define _V__44c4_s1_pS_r1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s1_pS_r1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c4_s1_pS_r1[] = { - 1, 3, 2, 6, 6, 6, 6, 5, 5, -}; - -static float _vq_quantthresh__44c4_s1_pS_r1[] = { - -0.055556, 0.055556, -}; - -static long _vq_quantmap__44c4_s1_pS_r1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s1_pS_r1 = { - _vq_quantthresh__44c4_s1_pS_r1, - _vq_quantmap__44c4_s1_pS_r1, - 3, - 3 -}; - -static static_codebook _44c4_s1_pS_r1 = { - 2, 9, - _vq_lengthlist__44c4_s1_pS_r1, - 1, -543395385, 1604088263, 2, 0, - _vq_quantlist__44c4_s1_pS_r1, - NULL, - &_vq_auxt__44c4_s1_pS_r1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s2_p6_0.vqh b/lib/books/coupled/_44c4_s2_p6_0.vqh deleted file mode 100644 index 0ca56442..00000000 --- a/lib/books/coupled/_44c4_s2_p6_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s2_p6_0_VQH_ -#define _V__44c4_s2_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s2_p6_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c4_s2_p6_0[] = { - 1, 2, 3, 4, 5, 6, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c4_s2_p6_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c4_s2_p6_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s2_p6_0 = { - _vq_quantthresh__44c4_s2_p6_0, - _vq_quantmap__44c4_s2_p6_0, - 9, - 9 -}; - -static static_codebook _44c4_s2_p6_0 = { - 2, 81, - _vq_lengthlist__44c4_s2_p6_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c4_s2_p6_0, - NULL, - &_vq_auxt__44c4_s2_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s2_p6_s0.vqh b/lib/books/coupled/_44c4_s2_p6_s0.vqh deleted file mode 100644 index ec84e61f..00000000 --- a/lib/books/coupled/_44c4_s2_p6_s0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s2_p6_s0_VQH_ -#define _V__44c4_s2_p6_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s2_p6_s0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c4_s2_p6_s0[] = { - 1,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19, - 19, 5, 6, 6,19,19,19,19,19,19,19,19,19,19,19,19, - 19,19, 5, 6, 5,19,19,19,19,19,19,19,19,19,19,19, - 19,19,19, 7, 5, 5,10,10,19,19,19,19,19,19,19,19, - 19,19,19,19, 7, 5, 5, 9, 9,19,19,19,19,19,19,19, - 19,19,19,19,19, 8, 6, 6, 9, 9,13,14,19,19,19,19, - 19,19,19,19,19,19, 8, 6, 6, 8, 8,12,12,19,19,19, - 19,19,19,19,19,19,19, 8, 7, 7,10,10,14,13,17,18, - 19,19,19,19,19,19,19,19, 8, 6, 6, 9, 9,13,13,16, - 17,19,19,19,19,19,19,19,19, 7, 7, 7,11,11,15,15, - 19,19,19,19,19,19,19,19,19,19, 7, 7, 7,11,11,14, - 14,19,19,19,19,19,19,19,19,19,19, 8,10,10,13,13, - 19,19,19,19,19,19, 9, 9,19,19,19,19,11,10,10,13, - 13,19,19,19,19,19,19,19,19,19,19,19,19,10,10,10, - 19,19,19,19,19,19,19,19,19,19,19,19,19,19,10,10, - 11,19,19,19,19,19,19,19,19,19,19,19,19,19,19,10, - 19,19,19,19,19,19,19,19,19,19,19,19,19,19,12,11, - 19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19, - 18, -}; - -static float _vq_quantthresh__44c4_s2_p6_s0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c4_s2_p6_s0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s2_p6_s0 = { - _vq_quantthresh__44c4_s2_p6_s0, - _vq_quantmap__44c4_s2_p6_s0, - 17, - 17 -}; - -static static_codebook _44c4_s2_p6_s0 = { - 2, 289, - _vq_lengthlist__44c4_s2_p6_s0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c4_s2_p6_s0, - NULL, - &_vq_auxt__44c4_s2_p6_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s2_p7_0.vqh b/lib/books/coupled/_44c4_s2_p7_0.vqh deleted file mode 100644 index 09783e08..00000000 --- a/lib/books/coupled/_44c4_s2_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s2_p7_0_VQH_ -#define _V__44c4_s2_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s2_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s2_p7_0[] = { - 1, 3, 4, 6, 6, 8, 9, 0, 0, 0, 0, 0, 0, 5, 5, 5, - 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 8, 7, 8, 8,10,10, 0, 0, 0, 0, 0, - 0, 0,11,12, 9, 9,11,10, 0, 0, 0, 0, 0, 0, 0,13, - 12, 9, 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,14,15,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,15,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,14,15, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c4_s2_p7_0[] = { - -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, - 12.5, 17.5, 22.5, 27.5, -}; - -static long _vq_quantmap__44c4_s2_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s2_p7_0 = { - _vq_quantthresh__44c4_s2_p7_0, - _vq_quantmap__44c4_s2_p7_0, - 13, - 13 -}; - -static static_codebook _44c4_s2_p7_0 = { - 2, 169, - _vq_lengthlist__44c4_s2_p7_0, - 1, -526516224, 1616117760, 4, 0, - _vq_quantlist__44c4_s2_p7_0, - NULL, - &_vq_auxt__44c4_s2_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s2_p7_1.vqh b/lib/books/coupled/_44c4_s2_p7_1.vqh deleted file mode 100644 index 2834dc81..00000000 --- a/lib/books/coupled/_44c4_s2_p7_1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s2_p7_1_VQH_ -#define _V__44c4_s2_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s2_p7_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c4_s2_p7_1[] = { - 2, 4, 4, 5, 5, 7, 4, 4, 6, 6, 7, 4, 4, 5, 5, 7, - 5, 5, 5, 6, 7, 7, 7, 5, 5, -}; - -static float _vq_quantthresh__44c4_s2_p7_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c4_s2_p7_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s2_p7_1 = { - _vq_quantthresh__44c4_s2_p7_1, - _vq_quantmap__44c4_s2_p7_1, - 5, - 5 -}; - -static static_codebook _44c4_s2_p7_1 = { - 2, 25, - _vq_lengthlist__44c4_s2_p7_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c4_s2_p7_1, - NULL, - &_vq_auxt__44c4_s2_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s2_p7_s0.vqh b/lib/books/coupled/_44c4_s2_p7_s0.vqh deleted file mode 100644 index 083c71e3..00000000 --- a/lib/books/coupled/_44c4_s2_p7_s0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s2_p7_s0_VQH_ -#define _V__44c4_s2_p7_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s2_p7_s0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c4_s2_p7_s0[] = { - 1,18,18,18,18,18,18,18,18,18,18,17,17,17,17,17, - 17, 5, 6, 6,17,17,17,17,17,17,17,17,17,17,17,17, - 17,17, 5, 6, 6,17,17,17,17,17,17,17,17,17,17,17, - 17,17,17, 7, 6, 6, 9,10,17,17,17,17,17,17,17,17, - 17,17,17,17, 7, 5, 6, 9,10,17,17,17,17,17,17,17, - 17,17,17,17,17, 7, 6, 6, 8, 9,12,13,17,17,17,17, - 17,17,17,17,17,17, 8, 6, 6, 8, 8,12,12,17,17,17, - 17,17,17,17,17,17,17, 7, 6, 6, 9, 9,12,13,17,17, - 17,17,17,17,17,17,17,17, 8, 6, 6, 9, 9,12,12,16, - 15,17,17,17,17,17,17,17,17, 7, 7, 7,10,10,14,14, - 17,17,17,17,17,17,17,17,17,17, 7, 7, 7,10,10,13, - 13,17,17,17,17,17,17,17,17,17,17, 7, 8, 8,12,12, - 17,17,17,17,17,17, 8, 8,17,17,17,17,10, 8, 8,12, - 11,17,17,17,17,17,17,17,17,17,17,17,17, 9, 9, 9, - 17,17,17,17,17,17,17,17,17,17,17,17,17,17, 8, 9, - 9,17,17,17,17,17,17,17,17,17,17,17,17,17,17, 9, - 17,17,17,17,17,17,17,17,17,17,17,17,17,17,10,10, - 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, - 17, -}; - -static float _vq_quantthresh__44c4_s2_p7_s0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c4_s2_p7_s0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s2_p7_s0 = { - _vq_quantthresh__44c4_s2_p7_s0, - _vq_quantmap__44c4_s2_p7_s0, - 17, - 17 -}; - -static static_codebook _44c4_s2_p7_s0 = { - 2, 289, - _vq_lengthlist__44c4_s2_p7_s0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c4_s2_p7_s0, - NULL, - &_vq_auxt__44c4_s2_p7_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s2_p8_0.vqh b/lib/books/coupled/_44c4_s2_p8_0.vqh deleted file mode 100644 index 80d0597a..00000000 --- a/lib/books/coupled/_44c4_s2_p8_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s2_p8_0_VQH_ -#define _V__44c4_s2_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s2_p8_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s2_p8_0[] = { - 1, 4, 3, 6, 5, 7, 7, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8, 9,10, 0, 0, 0, 0, 0, - 0, 0,12,12, 9, 9,10,11, 0, 0, 0, 0, 0, 0, 0,12, - 12, 9, 9,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,14,15,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,14,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,14,13, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c4_s2_p8_0[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c4_s2_p8_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s2_p8_0 = { - _vq_quantthresh__44c4_s2_p8_0, - _vq_quantmap__44c4_s2_p8_0, - 13, - 13 -}; - -static static_codebook _44c4_s2_p8_0 = { - 2, 169, - _vq_lengthlist__44c4_s2_p8_0, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c4_s2_p8_0, - NULL, - &_vq_auxt__44c4_s2_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s2_p8_1.vqh b/lib/books/coupled/_44c4_s2_p8_1.vqh deleted file mode 100644 index db0ebfed..00000000 --- a/lib/books/coupled/_44c4_s2_p8_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s2_p8_1_VQH_ -#define _V__44c4_s2_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s2_p8_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s2_p8_1[] = { - 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 9, 5, 5, - 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, - 7, 8, 7, 8, 8, 8, 8, 9, 7, 7, 7, 7, 7, 7, 8, 8, - 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 8, - 8, 9, 9,10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,10, 9, - 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,10, 9,10, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 9, 9,10, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8,10, - 9,10, 9,10, 9, 9, 8, 8, 8, 8, 8, 8,10,10, 9,10, - 10, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c4_s2_p8_1[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c4_s2_p8_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s2_p8_1 = { - _vq_quantthresh__44c4_s2_p8_1, - _vq_quantmap__44c4_s2_p8_1, - 13, - 13 -}; - -static static_codebook _44c4_s2_p8_1 = { - 2, 169, - _vq_lengthlist__44c4_s2_p8_1, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c4_s2_p8_1, - NULL, - &_vq_auxt__44c4_s2_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s2_p8_s0.vqh b/lib/books/coupled/_44c4_s2_p8_s0.vqh deleted file mode 100644 index 8e4ae338..00000000 --- a/lib/books/coupled/_44c4_s2_p8_s0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s2_p8_s0_VQH_ -#define _V__44c4_s2_p8_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s2_p8_s0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c4_s2_p8_s0[] = { - 1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12, 5, 6, 6,12,12,12,12,12,12,12,12,12,12,12,12, - 12,12, 5, 6, 5,12,12,12,12,12,12,12,12,12,12,12, - 12,12,12, 7, 6, 6,10,11,12,12,12,12,12,12,12,12, - 12,12,12,12, 8, 6, 6,10,10,12,12,12,12,12,12,12, - 12,12,12,12,12, 8, 6, 6, 9, 9,12,12,12,12,12,12, - 12,12,12,12,12,12, 8, 6, 6, 9, 9,12,12,12,12,12, - 12,12,12,12,12,12,12, 9, 7, 7, 9, 9,12,12,12,12, - 12,12,12,12,12,12,12,12, 9, 6, 6, 8, 9,11,11,12, - 12,12,12,12,12,12,12,12,12, 7, 7, 7,10,12,11,11, - 12,12,12,12,12,12,12,12,12,12, 7, 7, 7,12,10,12, - 11,12,12,12,12,12,12,12,12,12,12, 8, 8, 8,12,12, - 12,12,12,12,12,12,10, 9,12,12,12,12,10, 9, 8,11, - 11,12,12,12,12,12,12,12,12,12,12,12,12, 8, 9,10, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12, 9, 9, - 10,12,12,12,12,12,12,12,12,12,12,12,12,12,12, 9, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,10,10, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12, -}; - -static float _vq_quantthresh__44c4_s2_p8_s0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c4_s2_p8_s0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s2_p8_s0 = { - _vq_quantthresh__44c4_s2_p8_s0, - _vq_quantmap__44c4_s2_p8_s0, - 17, - 17 -}; - -static static_codebook _44c4_s2_p8_s0 = { - 2, 289, - _vq_lengthlist__44c4_s2_p8_s0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c4_s2_p8_s0, - NULL, - &_vq_auxt__44c4_s2_p8_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s2_p9_0.vqh b/lib/books/coupled/_44c4_s2_p9_0.vqh deleted file mode 100644 index 0ebab41f..00000000 --- a/lib/books/coupled/_44c4_s2_p9_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s2_p9_0_VQH_ -#define _V__44c4_s2_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s2_p9_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s2_p9_0[] = { - 1, 3, 3, 9, 8,13,14,14,14,14,14,14,14, 5, 5, 6, - 9,10,14,14,14,14,14,14,14,14, 5, 6, 4,11,10,13, - 13,14,14,14,14,14,14,14, 6,10,13,13,14,14,14,14, - 14,14,14,14,14,11, 6,13,12,14,14,14,14,14,14,14, - 14,14,12,13, 9,14,13,14,14,14,14,14,14,14,14,14, - 12,14,12,14,14,14,14,14,14,14,14,14,14,14,13,13, - 14,14,14,14,14,14,14,14,14,14,14,14, 9,14,13,14, - 14,14,14,14,14,14,14,14,10,14,12,14,14,14,14,14, - 14,14,14,14,14,14, 9,14, 9,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,13,13,13,13,13, -}; - -static float _vq_quantthresh__44c4_s2_p9_0[] = { - -929.5, -760.5, -591.5, -422.5, -253.5, -84.5, 84.5, 253.5, - 422.5, 591.5, 760.5, 929.5, -}; - -static long _vq_quantmap__44c4_s2_p9_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s2_p9_0 = { - _vq_quantthresh__44c4_s2_p9_0, - _vq_quantmap__44c4_s2_p9_0, - 13, - 13 -}; - -static static_codebook _44c4_s2_p9_0 = { - 2, 169, - _vq_lengthlist__44c4_s2_p9_0, - 1, -515919872, 1626677248, 4, 0, - _vq_quantlist__44c4_s2_p9_0, - NULL, - &_vq_auxt__44c4_s2_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s2_p9_1.vqh b/lib/books/coupled/_44c4_s2_p9_1.vqh deleted file mode 100644 index dfbc620a..00000000 --- a/lib/books/coupled/_44c4_s2_p9_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s2_p9_1_VQH_ -#define _V__44c4_s2_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s2_p9_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s2_p9_1[] = { - 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 6, 5, 6, - 7, 7, 8, 8, 8, 9, 9,10,10,10, 7, 6, 5, 7, 7, 8, - 8, 9, 9, 9, 9,10,10,12, 8, 8, 8, 8, 9, 9, 9, 9, - 10,10,10,10,13, 8, 7, 8, 8, 9, 9, 9, 9,10,10,10, - 10,13,11,12, 9, 9,10,10,10,10,10,11,10,11,13,11, - 11, 9, 9,10,10,10,10,10,10,11,11,13,13,13,11,11, - 10,11,10,10,11,11,11,11,13,12,12,11,10,10,11,11, - 11,11,11,11,11,13,13,13,12,12,11,11,11,11,11,11, - 12,11,13,13,13,13,12,11,11,10,10,11,11,11,12,14, - 13,13,12,13,11,11,10,10,11,11,11,12,14,14,14,12, - 13,10,11,10,10,11,11,12,12, -}; - -static float _vq_quantthresh__44c4_s2_p9_1[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c4_s2_p9_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s2_p9_1 = { - _vq_quantthresh__44c4_s2_p9_1, - _vq_quantmap__44c4_s2_p9_1, - 13, - 13 -}; - -static static_codebook _44c4_s2_p9_1 = { - 2, 169, - _vq_lengthlist__44c4_s2_p9_1, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c4_s2_p9_1, - NULL, - &_vq_auxt__44c4_s2_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s2_p9_2.vqh b/lib/books/coupled/_44c4_s2_p9_2.vqh deleted file mode 100644 index 2d5a30cb..00000000 --- a/lib/books/coupled/_44c4_s2_p9_2.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s2_p9_2_VQH_ -#define _V__44c4_s2_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s2_p9_2[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s2_p9_2[] = { - 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, - 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 6, 7, - 7, 7, 7, 7, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 8, 7, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 8, 8, 8, - 8, 9, 9, 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, - 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, - 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, - 9, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c4_s2_p9_2[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c4_s2_p9_2[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s2_p9_2 = { - _vq_quantthresh__44c4_s2_p9_2, - _vq_quantmap__44c4_s2_p9_2, - 13, - 13 -}; - -static static_codebook _44c4_s2_p9_2 = { - 2, 169, - _vq_lengthlist__44c4_s2_p9_2, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c4_s2_p9_2, - NULL, - &_vq_auxt__44c4_s2_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s2_p9_s0.vqh b/lib/books/coupled/_44c4_s2_p9_s0.vqh deleted file mode 100644 index 35c1c324..00000000 --- a/lib/books/coupled/_44c4_s2_p9_s0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s2_p9_s0_VQH_ -#define _V__44c4_s2_p9_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s2_p9_s0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c4_s2_p9_s0[] = { - 1,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10, 7, 7,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10,10, 7, 8, 7,10,10,10,10,10,10,10,10,10,10,10, - 10,10,10, 9, 8, 8,10,10,10,10,10,10,10,10,10,10, - 10,10,10,10,10,10, 8,10,10,10,10,10,10,10,10,10, - 10,10,10,10,10,10, 7,10,10,10,10,10,10,10,10,10, - 10,10,10,10,10,10,10, 9, 8,10,10,10,10,10,10,10, - 10,10,10,10,10,10,10,10, 8,10,10,10,10,10,10,10, - 10,10,10,10,10,10,10,10,10, 8,10, 8, 8, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 9, 8, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, -}; - -static float _vq_quantthresh__44c4_s2_p9_s0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c4_s2_p9_s0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s2_p9_s0 = { - _vq_quantthresh__44c4_s2_p9_s0, - _vq_quantmap__44c4_s2_p9_s0, - 17, - 17 -}; - -static static_codebook _44c4_s2_p9_s0 = { - 2, 289, - _vq_lengthlist__44c4_s2_p9_s0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c4_s2_p9_s0, - NULL, - &_vq_auxt__44c4_s2_p9_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s3_p7_0.vqh b/lib/books/coupled/_44c4_s3_p7_0.vqh deleted file mode 100644 index 5319fec3..00000000 --- a/lib/books/coupled/_44c4_s3_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s3_p7_0_VQH_ -#define _V__44c4_s3_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s3_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s3_p7_0[] = { - 1, 3, 4, 6, 6, 8, 9, 0, 0, 0, 0, 0, 0, 5, 5, 5, - 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 8, 7, 8, 8,10,10, 0, 0, 0, 0, 0, - 0, 0,11,12, 9, 9,11,10, 0, 0, 0, 0, 0, 0, 0,13, - 12, 9, 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,14,15,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,15,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,14,15, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c4_s3_p7_0[] = { - -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, - 12.5, 17.5, 22.5, 27.5, -}; - -static long _vq_quantmap__44c4_s3_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s3_p7_0 = { - _vq_quantthresh__44c4_s3_p7_0, - _vq_quantmap__44c4_s3_p7_0, - 13, - 13 -}; - -static static_codebook _44c4_s3_p7_0 = { - 2, 169, - _vq_lengthlist__44c4_s3_p7_0, - 1, -526516224, 1616117760, 4, 0, - _vq_quantlist__44c4_s3_p7_0, - NULL, - &_vq_auxt__44c4_s3_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s3_p7_1.vqh b/lib/books/coupled/_44c4_s3_p7_1.vqh deleted file mode 100644 index e9e0d869..00000000 --- a/lib/books/coupled/_44c4_s3_p7_1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s3_p7_1_VQH_ -#define _V__44c4_s3_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s3_p7_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c4_s3_p7_1[] = { - 2, 4, 4, 5, 5, 7, 4, 4, 6, 6, 7, 4, 4, 5, 5, 7, - 5, 5, 5, 6, 7, 7, 7, 5, 5, -}; - -static float _vq_quantthresh__44c4_s3_p7_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c4_s3_p7_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s3_p7_1 = { - _vq_quantthresh__44c4_s3_p7_1, - _vq_quantmap__44c4_s3_p7_1, - 5, - 5 -}; - -static static_codebook _44c4_s3_p7_1 = { - 2, 25, - _vq_lengthlist__44c4_s3_p7_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c4_s3_p7_1, - NULL, - &_vq_auxt__44c4_s3_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s3_p8_0.vqh b/lib/books/coupled/_44c4_s3_p8_0.vqh deleted file mode 100644 index b321a62f..00000000 --- a/lib/books/coupled/_44c4_s3_p8_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s3_p8_0_VQH_ -#define _V__44c4_s3_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s3_p8_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s3_p8_0[] = { - 1, 4, 3, 6, 5, 7, 7, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8, 9,10, 0, 0, 0, 0, 0, - 0, 0,12,12, 9, 9,10,11, 0, 0, 0, 0, 0, 0, 0,12, - 12, 9, 9,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,14,15,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,14,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,14,13, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c4_s3_p8_0[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c4_s3_p8_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s3_p8_0 = { - _vq_quantthresh__44c4_s3_p8_0, - _vq_quantmap__44c4_s3_p8_0, - 13, - 13 -}; - -static static_codebook _44c4_s3_p8_0 = { - 2, 169, - _vq_lengthlist__44c4_s3_p8_0, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c4_s3_p8_0, - NULL, - &_vq_auxt__44c4_s3_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s3_p8_1.vqh b/lib/books/coupled/_44c4_s3_p8_1.vqh deleted file mode 100644 index 75b3a7ce..00000000 --- a/lib/books/coupled/_44c4_s3_p8_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s3_p8_1_VQH_ -#define _V__44c4_s3_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s3_p8_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s3_p8_1[] = { - 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 9, 5, 5, - 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, - 7, 8, 7, 8, 8, 8, 8, 9, 7, 7, 7, 7, 7, 7, 8, 8, - 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 8, - 8, 9, 9,10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,10, 9, - 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,10, 9,10, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 9, 9,10, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8,10, - 9,10, 9,10, 9, 9, 8, 8, 8, 8, 8, 8,10,10, 9,10, - 10, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c4_s3_p8_1[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c4_s3_p8_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s3_p8_1 = { - _vq_quantthresh__44c4_s3_p8_1, - _vq_quantmap__44c4_s3_p8_1, - 13, - 13 -}; - -static static_codebook _44c4_s3_p8_1 = { - 2, 169, - _vq_lengthlist__44c4_s3_p8_1, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c4_s3_p8_1, - NULL, - &_vq_auxt__44c4_s3_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s3_p9_0.vqh b/lib/books/coupled/_44c4_s3_p9_0.vqh deleted file mode 100644 index cb15c379..00000000 --- a/lib/books/coupled/_44c4_s3_p9_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s3_p9_0_VQH_ -#define _V__44c4_s3_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s3_p9_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s3_p9_0[] = { - 1, 3, 3, 9, 8,13,14,14,14,14,14,14,14, 5, 5, 6, - 9,10,14,14,14,14,14,14,14,14, 5, 6, 4,11,10,13, - 13,14,14,14,14,14,14,14, 6,10,13,13,14,14,14,14, - 14,14,14,14,14,11, 6,13,12,14,14,14,14,14,14,14, - 14,14,12,13, 9,14,13,14,14,14,14,14,14,14,14,14, - 12,14,12,14,14,14,14,14,14,14,14,14,14,14,13,13, - 14,14,14,14,14,14,14,14,14,14,14,14, 9,14,13,14, - 14,14,14,14,14,14,14,14,10,14,12,14,14,14,14,14, - 14,14,14,14,14,14, 9,14, 9,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,13,13,13,13,13, -}; - -static float _vq_quantthresh__44c4_s3_p9_0[] = { - -929.5, -760.5, -591.5, -422.5, -253.5, -84.5, 84.5, 253.5, - 422.5, 591.5, 760.5, 929.5, -}; - -static long _vq_quantmap__44c4_s3_p9_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s3_p9_0 = { - _vq_quantthresh__44c4_s3_p9_0, - _vq_quantmap__44c4_s3_p9_0, - 13, - 13 -}; - -static static_codebook _44c4_s3_p9_0 = { - 2, 169, - _vq_lengthlist__44c4_s3_p9_0, - 1, -515919872, 1626677248, 4, 0, - _vq_quantlist__44c4_s3_p9_0, - NULL, - &_vq_auxt__44c4_s3_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s3_p9_1.vqh b/lib/books/coupled/_44c4_s3_p9_1.vqh deleted file mode 100644 index 17223e62..00000000 --- a/lib/books/coupled/_44c4_s3_p9_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s3_p9_1_VQH_ -#define _V__44c4_s3_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s3_p9_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s3_p9_1[] = { - 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 6, 5, 6, - 7, 7, 8, 8, 8, 9, 9,10,10,10, 7, 6, 5, 7, 7, 8, - 8, 9, 9, 9, 9,10,10,12, 8, 8, 8, 8, 9, 9, 9, 9, - 10,10,10,10,13, 8, 7, 8, 8, 9, 9, 9, 9,10,10,10, - 10,13,11,12, 9, 9,10,10,10,10,10,11,10,11,13,11, - 11, 9, 9,10,10,10,10,10,10,11,11,13,13,13,11,11, - 10,11,10,10,11,11,11,11,13,12,12,11,10,10,11,11, - 11,11,11,11,11,13,13,13,12,12,11,11,11,11,11,11, - 12,11,13,13,13,13,12,11,11,10,10,11,11,11,12,14, - 13,13,12,13,11,11,10,10,11,11,11,12,14,14,14,12, - 13,10,11,10,10,11,11,12,12, -}; - -static float _vq_quantthresh__44c4_s3_p9_1[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c4_s3_p9_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s3_p9_1 = { - _vq_quantthresh__44c4_s3_p9_1, - _vq_quantmap__44c4_s3_p9_1, - 13, - 13 -}; - -static static_codebook _44c4_s3_p9_1 = { - 2, 169, - _vq_lengthlist__44c4_s3_p9_1, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c4_s3_p9_1, - NULL, - &_vq_auxt__44c4_s3_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s3_p9_2.vqh b/lib/books/coupled/_44c4_s3_p9_2.vqh deleted file mode 100644 index 40f191f6..00000000 --- a/lib/books/coupled/_44c4_s3_p9_2.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s3_p9_2_VQH_ -#define _V__44c4_s3_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s3_p9_2[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c4_s3_p9_2[] = { - 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, - 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 6, 7, - 7, 7, 7, 7, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 8, 7, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 8, 8, 8, - 8, 9, 9, 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, - 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, - 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, - 9, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c4_s3_p9_2[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c4_s3_p9_2[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s3_p9_2 = { - _vq_quantthresh__44c4_s3_p9_2, - _vq_quantmap__44c4_s3_p9_2, - 13, - 13 -}; - -static static_codebook _44c4_s3_p9_2 = { - 2, 169, - _vq_lengthlist__44c4_s3_p9_2, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c4_s3_p9_2, - NULL, - &_vq_auxt__44c4_s3_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_s3_p9_s0.vqh b/lib/books/coupled/_44c4_s3_p9_s0.vqh deleted file mode 100644 index 2d349e09..00000000 --- a/lib/books/coupled/_44c4_s3_p9_s0.vqh +++ /dev/null @@ -1,163 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c4_s3_p9_s0_VQH_ -#define _V__44c4_s3_p9_s0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c4_s3_p9_s0[] = { - 16, - 15, - 17, - 14, - 18, - 13, - 19, - 12, - 20, - 11, - 21, - 10, - 22, - 9, - 23, - 8, - 24, - 7, - 25, - 6, - 26, - 5, - 27, - 4, - 28, - 3, - 29, - 2, - 30, - 1, - 31, - 0, - 32, -}; - -static long _vq_lengthlist__44c4_s3_p9_s0[] = { - 1,17,17,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16, 6, 6, 6,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16, 6, 6, 6,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16, 8, 6, 6, 9,10,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16, 8, 6, 6, 9, 9,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16, 9, 7, 7, 7, 7,12,11,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16, 9, 7, 7, 7, 7,11,11,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16, 9, 8, 8, 7, 7, 9,10,13,13, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,10, 8, 8, 7, 7,10, 9,12, - 12,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16, 9, 8, 8, 8, 8, 9,10, - 11,12,15,15,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,10, 8, 8, 8, 7, 9, - 9,11,11,15,13,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,10, 8, 8, 8, 8, - 10,10,12,12,13,14,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,10, 8, 8, 8, - 8, 9,10,11,11,13,14,15,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,10, 8, 8, - 9, 9,10,10,12,11,14,14,15,15,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,10, 8, - 8, 9, 9,10,10,12,12,13,13,15,15,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,10, - 8, 8, 9, 9,11,11,13,13,14,15,15,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 10, 8, 8, 9, 9,11,10,13,13,15,15,14,15,16,15,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16, 9, 9, 9,10,10,12,11,13,15,16,14,15,15,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16, 9, 9, 9,10,10,11,12,14,13,14,14,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16, 9,10,10,11,11,12,12,14,14,16,16,16,15, - 16,16,16,16,16,16,10,10,16,16,16,16,16,16,16,16, - 16,16,16,16,12,10,10,11,11,12,13,14,15,16,15,15, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,10,10,10,11,12,14,13,15,14,16,15, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,10,10,10,11,12,13,13,15,14,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,11,11,11,13,12,14,14,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,12,12, - 16,16,16,16,16,16,16,16,13,11,11,12,12,14,14,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,11,12,12,14,14,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,12,11,11,13,13,16, - 15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,12,13,12,15,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,13,14,16,16,16,16,14,13,13,15, - 15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,13,15,14, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,13,13, - 14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,13, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,14,14, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16, -}; - -static float _vq_quantthresh__44c4_s3_p9_s0[] = { - -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, - 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, -}; - -static long _vq_quantmap__44c4_s3_p9_s0[] = { - 31, 29, 27, 25, 23, 21, 19, 17, - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, 18, 20, 22, 24, 26, 28, 30, - 32, -}; - -static encode_aux_threshmatch _vq_auxt__44c4_s3_p9_s0 = { - _vq_quantthresh__44c4_s3_p9_s0, - _vq_quantmap__44c4_s3_p9_s0, - 33, - 33 -}; - -static static_codebook _44c4_s3_p9_s0 = { - 2, 1089, - _vq_lengthlist__44c4_s3_p9_s0, - 1, -527433728, 1611661312, 6, 0, - _vq_quantlist__44c4_s3_p9_s0, - NULL, - &_vq_auxt__44c4_s3_p9_s0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c4_short.vqd b/lib/books/coupled/_44c4_short.vqd deleted file mode 100644 index 0bc4ed10..00000000 --- a/lib/books/coupled/_44c4_short.vqd +++ /dev/null @@ -1,5340 +0,0 @@ -8, 5, 5, 5, 3, 3, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 7, 5, 3, 6, 6, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 6, 6, 4, 4, 2, 0, 0, 0, 0, -9, 5, 7, 5, 1, 3, 3, 2, 2, 4, 2, 0, 0, 0, 0, 0, -9, 5, 7, 3, 3, 1, 3, 4, 4, 2, 2, 0, 0, 0, 0, 0, -9, 3, 7, 3, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 3, 3, 3, 5, 1, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 7, 3, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 7, 5, 3, 5, 5, 6, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 7, 5, 7, 3, 3, 4, 6, 6, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 4, 6, 2, 2, 0, 0, 0, 0, -8, 3, 5, 3, 5, 1, 3, 2, 2, 6, 2, 2, 2, 0, 0, 0, -9, 5, 7, 3, 5, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -8, 5, 7, 3, 5, 3, 5, 4, 2, 2, 6, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 2, 2, 0, 0, 0, 0, 0, 0, -9, 3, 5, 3, 3, 3, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 3, 3, 3, 1, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -8, 3, 3, 5, 3, 3, 1, 4, 4, 2, 0, 2, 0, 0, 0, 0, -8, 5, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 7, 5, 7, 5, 5, 5, 4, 4, 2, 2, 0, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 3, 3, 1, 4, 4, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 2, 4, 0, 0, 0, 0, 0, -9, 5, 5, 7, 5, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 1, 3, 1, 2, 2, 0, 2, 0, 0, 0, 0, 0, -9, 5, 5, 3, 1, 5, 3, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 7, 3, 3, 3, 5, 1, 2, 4, 2, 2, 2, 0, 0, 0, 0, -8, 7, 5, 3, 3, 5, 1, 4, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 7, 7, 5, 5, 3, 4, 2, 4, 4, 4, 2, 0, 0, 0, -9, 7, 5, 3, 3, 3, 1, 6, 2, 2, 2, 0, 0, 0, 0, 0, -9, 7, 3, 5, 5, 3, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 2, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 2, 6, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 3, 3, 5, 3, 1, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 5, 5, 3, 1, 3, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 2, 4, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 7, 3, 3, 3, 1, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -8, 7, 7, 3, 7, 5, 5, 4, 2, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 3, 5, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 5, 2, 2, 4, 4, 0, 0, 0, 0, 0, -9, 7, 5, 3, 5, 5, 5, 6, 4, 4, 4, 2, 4, 0, 0, 0, -9, 5, 5, 3, 1, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 1, 1, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 7, 1, 3, 1, 1, 4, 4, 2, 2, 0, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 1, 3, 3, 1, 2, 2, 4, 2, 0, 0, 0, 0, 0, -8, 3, 5, 3, 3, 1, 3, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 6, 2, 4, 2, 2, 2, 2, 0, 0, -9, 7, 7, 5, 5, 5, 3, 6, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 1, 3, 5, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 5, 3, 4, 2, 2, 2, 4, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 3, 3, 3, 4, 6, 4, 6, 4, 0, 0, 0, 0, -8, 5, 5, 5, 3, 5, 1, 4, 2, 2, 0, 0, 0, 0, 0, 0, -9, 5, 3, 3, 1, 3, 1, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 7, 5, 3, 3, 3, 3, 4, 2, 0, 2, 0, 0, 0, 0, 0, -9, 5, 5, 3, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 7, 5, 3, 7, 5, 3, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 7, 5, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 3, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 1, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 3, 3, 1, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 1, 3, 3, 2, 4, 4, 2, 0, 0, 0, 0, 0, -8, 5, 5, 1, 3, 3, 1, 4, 0, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 3, 7, 3, 1, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 7, 5, 1, 2, 2, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 4, 6, 2, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 3, 5, 3, 5, 1, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 3, 3, 1, 5, 3, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 3, 3, 1, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 3, 5, 5, 3, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 7, 3, 7, 5, 3, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 1, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 3, 1, 1, 2, 4, 2, 0, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 5, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 3, 3, 1, 3, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, -8, 3, 5, 1, 3, 3, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 1, 3, 3, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 5, 3, 1, 1, 3, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -8, 3, 5, 5, 1, 3, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 1, 1, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 3, 3, 5, 1, 3, 1, 2, 6, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 6, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 4, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 2, 4, 2, 2, 2, 0, 0, 0, -8, 7, 3, 3, 3, 5, 5, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 3, 1, 1, 6, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 6, 4, 6, 6, 2, 0, 0, 0, 0, -8, 5, 5, 3, 1, 1, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 4, 2, 4, 0, 0, 0, 0, 0, -8, 5, 3, 3, 1, 3, 1, 2, 4, 4, 2, 2, 0, 0, 0, 0, -8, 3, 7, 3, 3, 3, 3, 4, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 2, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 1, 3, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, -8, 5, 3, 3, 3, 1, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 7, 7, 3, 5, 3, 3, 4, 4, 4, 2, 0, 0, 0, 0, 0, -9, 5, 5, 3, 7, 5, 5, 4, 2, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 7, 5, 2, 4, 4, 2, 0, 0, 0, 0, 0, -9, 5, 5, 1, 1, 3, 3, 4, 2, 2, 2, 0, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 2, 6, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 2, 4, 2, 0, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 3, 3, 3, 3, 1, 3, 4, 0, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 1, 3, 3, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 3, 5, 5, 5, 5, 3, 4, 6, 4, 2, 2, 0, 2, 0, 0, -8, 5, 5, 7, 3, 7, 3, 6, 4, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 5, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 4, 6, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 4, 6, 4, 2, 0, 0, 0, 0, 0, -9, 3, 3, 1, 1, 3, 1, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 5, 5, 1, 1, 3, 1, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 5, 3, 1, 3, 3, 3, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 3, 3, 1, 3, 3, 1, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 3, 1, 5, 3, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, -8, 3, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -8, 7, 5, 3, 5, 5, 3, 4, 4, 2, 6, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 3, 7, 3, 3, 3, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 1, 1, 1, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 3, 5, 3, 3, 5, 1, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 6, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 6, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 3, 3, 3, 3, 1, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 1, 3, 1, 3, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 3, 5, 3, 1, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 1, 4, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 3, 5, 5, 5, 1, 1, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 1, 7, 1, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 1, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 3, 5, 3, 5, 1, 1, 2, 4, 2, 2, 0, 0, 0, 0, 0, -9, 5, 3, 1, 3, 3, 1, 4, 2, 2, 4, 0, 0, 0, 0, 0, -9, 5, 5, 3, 5, 1, 5, 2, 4, 2, 4, 0, 0, 0, 0, 0, -8, 5, 5, 3, 3, 5, 5, 7, 6, 2, 6, 2, 0, 0, 0, 0, -9, 3, 7, 5, 3, 1, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 7, 1, 3, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 3, 5, 3, 1, 5, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 3, 7, 3, 3, 3, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 7, 5, 5, 3, 3, 4, 4, 2, 6, 4, 0, 0, 0, 0, -9, 7, 5, 5, 5, 7, 7, 2, 4, 4, 4, 4, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 1, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 3, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 1, 5, 4, 6, 2, 2, 2, 0, 0, 0, 0, -9, 3, 3, 1, 3, 5, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 4, 2, 2, 0, 0, 0, 0, 0, -9, 7, 5, 3, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 5, 1, 2, 4, 2, 2, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 5, 4, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 4, 0, 0, 0, 0, -9, 5, 3, 1, 5, 3, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 1, 1, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 1, 3, 3, 3, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 5, 3, 1, 3, 1, 1, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 7, 3, 3, 5, 5, 5, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 5, 7, 5, 7, 5, 5, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 3, 3, 3, 5, 5, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 3, 5, 3, 3, 5, 1, 2, 4, 2, 2, 2, 0, 0, 0, 0, -8, 3, 5, 5, 3, 3, 1, 4, 6, 4, 2, 2, 0, 0, 0, 0, -8, 3, 5, 3, 7, 3, 1, 6, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 1, 5, 5, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 3, 3, 1, 5, 3, 3, 4, 4, 4, 2, 4, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 4, 2, 2, 4, 2, 2, 0, 0, 0, -8, 5, 3, 1, 3, 3, 3, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 5, 3, 1, 3, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 3, 3, 3, 3, 5, 1, 6, 4, 2, 0, 0, 0, 0, 0, 0, -8, 5, 3, 3, 3, 5, 1, 2, 4, 2, 0, 0, 0, 0, 0, 0, -9, 5, 3, 1, 3, 1, 3, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 5, 3, 5, 5, 3, 5, 2, 2, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 6, 4, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 5, 4, 6, 2, 2, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 1, 1, 3, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 3, 5, 3, 3, 3, 1, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 5, 3, 3, 1, 5, 5, 2, 2, 2, 0, 2, 0, 0, 0, 0, -9, 5, 5, 1, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 2, 2, 2, 0, 0, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 2, 4, 4, 2, 0, 0, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 3, 5, 3, 5, 3, 3, 4, 6, 6, 4, 2, 0, 0, 0, 0, -8, 7, 5, 3, 5, 3, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 7, 1, 7, 3, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 5, 2, 4, 4, 6, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 1, 1, 6, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 1, 1, 2, 4, 2, 2, 0, 0, 0, 0, 0, -8, 3, 3, 3, 3, 1, 1, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 3, 3, 5, 1, 3, 1, 4, 2, 2, 0, 2, 0, 0, 0, 0, -9, 3, 3, 5, 3, 1, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 2, 4, 2, 0, 0, 0, 0, 0, -9, 5, 3, 5, 5, 5, 5, 4, 4, 6, 2, 2, 0, 0, 0, 0, -9, 5, 1, 3, 1, 3, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 3, 1, 3, 1, 2, 4, 2, 2, 0, 0, 0, 0, 0, -8, 5, 3, 3, 1, 3, 1, 4, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 2, 6, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 3, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 1, 5, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 1, 3, 1, 2, 4, 2, 2, 0, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 7, 1, 3, 5, 1, 6, 4, 2, 4, 0, 0, 0, 0, 0, -9, 5, 7, 3, 5, 3, 5, 4, 2, 4, 4, 0, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 5, 4, 4, 4, 4, 4, 0, 0, 0, 0, -9, 5, 7, 5, 3, 3, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 2, 6, 2, 0, 0, 0, 0, -8, 5, 5, 5, 1, 1, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 1, 1, 1, 4, 2, 4, 2, 0, 0, 0, 0, 0, -9, 5, 3, 1, 3, 1, 1, 4, 2, 2, 0, 2, 0, 0, 0, 0, -9, 7, 5, 3, 3, 3, 1, 2, 4, 2, 2, 0, 0, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 7, 5, 5, 6, 4, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 1, 5, 3, 1, 2, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 5, 3, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 3, 5, 5, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 0, 0, 0, -9, 5, 3, 3, 3, 1, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 1, 3, 1, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 3, 3, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, -8, 5, 3, 3, 3, 1, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 3, 5, 5, 3, 3, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 3, 5, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 3, 5, 3, 1, 5, 1, 4, 2, 2, 0, 0, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 5, 3, 3, 1, 5, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 3, 3, 1, 5, 1, 4, 2, 4, 2, 0, 0, 0, 0, 0, -9, 7, 3, 3, 5, 5, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 3, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 6, 4, 4, 4, 0, 0, 0, 0, -9, 5, 7, 3, 3, 5, 1, 4, 4, 0, 2, 0, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 4, 2, 2, 0, 0, 0, 0, 0, 0, -9, 7, 5, 5, 3, 5, 1, 4, 2, 2, 0, 0, 0, 0, 0, 0, -8, 5, 7, 5, 5, 5, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 1, 4, 6, 4, 4, 2, 0, 0, 0, 0, -8, 7, 7, 3, 5, 1, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 1, 1, 4, 4, 2, 4, 0, 0, 0, 0, 0, -9, 7, 5, 3, 5, 5, 5, 2, 6, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 7, 5, 5, 7, 6, 4, 6, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 5, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 1, 5, 3, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 1, 5, 3, 3, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 3, 3, 1, 3, 3, 1, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 5, 3, 1, 3, 1, 3, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 5, 5, 3, 1, 3, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 2, 2, 2, 4, 4, 0, 0, 0, 0, -9, 5, 3, 5, 1, 1, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 7, 5, 3, 3, 1, 5, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 3, 3, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 1, 3, 3, 3, 4, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 1, 3, 3, 3, 4, 4, 4, 2, 0, 0, 0, 0, 0, -9, 7, 5, 3, 3, 1, 1, 2, 4, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 1, 3, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 3, 5, 3, 1, 1, 1, 2, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 1, 1, 3, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 2, 4, 2, 4, 2, 2, 2, 0, 0, -9, 3, 3, 3, 3, 3, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -8, 3, 3, 5, 3, 3, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 1, 4, 4, 2, 0, 2, 2, 0, 0, 0, -8, 7, 5, 7, 5, 5, 3, 6, 6, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 6, 2, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 1, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 3, 5, 3, 5, 3, 3, 6, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 5, 3, 4, 4, 4, 4, 0, 2, 0, 0, 0, -9, 5, 3, 1, 3, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 3, 3, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 7, 5, 7, 3, 5, 6, 2, 4, 4, 4, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 1, 4, 2, 2, 0, 0, 0, 0, 0, 0, -9, 5, 3, 1, 1, 3, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 3, 3, 1, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 7, 5, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -8, 3, 5, 3, 3, 3, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -8, 3, 3, 1, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -8, 7, 5, 3, 3, 5, 5, 6, 2, 4, 6, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 2, 6, 6, 2, 2, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 2, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 1, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 1, 3, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 6, 6, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 7, 3, 3, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 3, 1, 3, 3, 1, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 7, 3, 3, 1, 5, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -8, 5, 1, 5, 1, 5, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 3, 1, 3, 3, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 1, 3, 3, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -8, 3, 3, 1, 5, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 4, 6, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 2, 4, 4, 2, 4, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 2, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 1, 3, 1, 4, 6, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 2, 4, 2, 2, 4, 0, 0, 0, 0, -9, 5, 3, 3, 3, 1, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 1, 2, 2, 4, 2, 0, 0, 0, 0, 0, -8, 5, 3, 3, 1, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 3, 1, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 3, 3, 5, 1, 1, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 3, 3, 1, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 1, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 3, 3, 3, 3, 3, 3, 2, 6, 2, 2, 0, 0, 0, 0, 0, -8, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 6, 4, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 6, 2, 4, 2, 4, 2, 0, 0, 0, -8, 3, 5, 5, 3, 3, 3, 4, 4, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 6, 6, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 7, 5, 5, 5, 7, 7, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 5, 3, 3, 5, 1, 3, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 5, 5, 5, 1, 1, 3, 2, 2, 4, 2, 0, 0, 0, 0, 0, -9, 5, 5, 3, 3, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, -8, 3, 7, 3, 1, 3, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, -9, 7, 7, 7, 3, 5, 3, 2, 4, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 7, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 5, 3, 5, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 7, 3, 3, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 5, 5, 1, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -8, 5, 3, 3, 5, 3, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 3, 1, 3, 3, 1, 5, 2, 2, 2, 0, 0, 0, 0, 0, 0, -8, 5, 5, 5, 3, 1, 3, 2, 4, 2, 2, 0, 0, 0, 0, 0, -8, 5, 3, 3, 3, 5, 5, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 7, 3, 5, 5, 4, 4, 4, 4, 4, 0, 0, 0, 0, -9, 7, 5, 1, 5, 5, 1, 4, 4, 4, 2, 0, 0, 0, 0, 0, -8, 5, 5, 3, 7, 3, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 2, 6, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 3, 3, 3, 3, 1, 1, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 3, 3, 3, 3, 3, 1, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 3, 5, 3, 3, 3, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 3, 5, 5, 5, 3, 3, 4, 6, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 5, 1, 4, 2, 6, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 3, 3, 3, 3, 3, 3, 6, 2, 2, 2, 2, 0, 0, 0, 0, -8, 3, 5, 3, 5, 3, 1, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 7, 5, 5, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 6, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 3, 3, 5, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 3, 5, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 5, 3, 4, 6, 4, 2, 2, 2, 0, 0, 0, -8, 7, 3, 3, 5, 3, 3, 6, 2, 4, 2, 0, 0, 0, 0, 0, -9, 5, 5, 5, 5, 7, 3, 4, 4, 2, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 6, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -8, 3, 5, 3, 3, 3, 5, 4, 2, 4, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 5, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 5, 3, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 7, 3, 3, 1, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 5, 5, 5, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 6, 4, 4, 4, 4, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 3, 6, 4, 2, 4, 2, 2, 0, 0, 0, -9, 3, 3, 3, 5, 3, 3, 6, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 5, 5, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 3, 3, 3, 3, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 3, 5, 5, 3, 3, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 7, 5, 5, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 7, 2, 4, 6, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 6, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 7, 2, 2, 4, 2, 0, 0, 0, 0, -9, 3, 3, 3, 5, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 3, 5, 3, 5, 3, 3, 4, 6, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 7, 1, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 3, 3, 5, 3, 3, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 5, 3, 5, 5, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 3, 5, 5, 3, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 2, 6, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 1, 6, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 1, 3, 2, 4, 4, 4, 4, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 2, 2, 2, 4, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 1, 3, 1, 4, 2, 4, 2, 2, 0, 0, 0, 0, -8, 5, 3, 7, 1, 3, 1, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 5, 1, 5, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 3, 4, 4, 6, 4, 4, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 7, 5, 5, 6, 6, 6, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 6, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 5, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 3, 5, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 7, 5, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 5, 5, 3, 2, 6, 4, 2, 2, 0, 0, 0, 0, -8, 3, 3, 7, 3, 3, 3, 4, 6, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 6, 6, 2, 4, 0, 0, 0, 0, 0, -9, 3, 3, 5, 5, 5, 3, 2, 4, 6, 2, 0, 0, 0, 0, 0, -8, 5, 3, 5, 3, 5, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 3, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 4, 6, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 6, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 6, 2, 0, 0, 0, 0, -9, 3, 3, 3, 3, 5, 5, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 2, 4, 6, 2, 4, 0, 0, 0, 0, -9, 3, 5, 5, 3, 3, 3, 2, 6, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 7, 5, 5, 3, 4, 2, 4, 6, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 3, 3, 3, 5, 5, 3, 4, 6, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 5, 5, 4, 4, 2, 4, 2, 0, 0, 0, 0, -8, 5, 7, 7, 7, 3, 1, 6, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 4, 2, 2, 0, 0, 0, 0, -8, 3, 5, 5, 3, 1, 1, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 5, 5, 1, 6, 2, 4, 2, 2, 0, 0, 0, 0, -9, 3, 3, 3, 3, 5, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 3, 5, 5, 5, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 3, 3, 6, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 3, 5, 6, 4, 4, 4, 0, 0, 0, 0, 0, -8, 5, 3, 3, 3, 1, 3, 2, 4, 2, 2, 2, 0, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 2, 2, 4, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 7, 3, 3, 1, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 6, 6, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 3, 3, 5, 4, 4, 4, 6, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 1, 1, 4, 6, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 1, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 7, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 6, 4, 6, 2, 0, 0, 0, 0, -8, 5, 5, 7, 7, 7, 3, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 7, 5, 7, 5, 4, 6, 4, 4, 0, 0, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 3, 5, 1, 3, 1, 3, 4, 2, 4, 2, 0, 0, 0, 0, 0, -9, 5, 5, 5, 7, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 4, 4, 2, 0, 0, 0, 0, 0, -9, 5, 5, 7, 5, 7, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 6, 2, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 3, 7, 4, 6, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 1, 3, 4, 6, 4, 2, 4, 0, 0, 0, 0, -9, 7, 3, 3, 3, 1, 7, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 5, 5, 7, 3, 6, 4, 2, 4, 0, 0, 0, 0, 0, -8, 7, 3, 5, 1, 3, 3, 2, 4, 2, 4, 2, 0, 0, 0, 0, -8, 3, 3, 3, 1, 3, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 1, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 6, 4, 2, 4, 0, 0, 0, 0, -8, 5, 5, 3, 5, 1, 3, 4, 2, 4, 2, 4, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 2, 2, 2, 2, 4, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 2, 4, 4, 2, 4, 0, 0, 0, 0, -8, 7, 5, 7, 5, 5, 3, 4, 4, 4, 2, 6, 0, 0, 0, 0, -8, 5, 5, 5, 3, 5, 3, 4, 6, 4, 2, 0, 0, 0, 0, 0, -8, 7, 5, 7, 5, 5, 5, 4, 6, 2, 2, 0, 0, 0, 0, 0, -8, 5, 7, 3, 3, 3, 3, 6, 4, 2, 2, 0, 0, 0, 0, 0, -8, 3, 5, 3, 3, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 7, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 6, 6, 4, 4, 2, 0, 0, 0, 0, -8, 5, 3, 5, 3, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 7, 5, 5, 5, 6, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 7, 5, 5, 3, 4, 6, 6, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 5, 5, 3, 2, 4, 2, 4, 4, 2, 0, 0, 0, -8, 3, 5, 3, 3, 3, 3, 4, 6, 6, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 4, 4, 4, 4, 0, 0, 0, 0, -9, 5, 5, 5, 7, 3, 5, 6, 4, 4, 2, 2, 0, 0, 0, 0, -9, 3, 5, 5, 5, 5, 3, 4, 4, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 7, 2, 4, 2, 0, 0, 0, 0, 0, -8, 3, 3, 3, 3, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 3, 5, 3, 5, 3, 1, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 3, 5, 3, 7, 5, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 6, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 5, 5, 3, 3, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 5, 5, 5, 7, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 7, 7, 5, 7, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 1, 4, 6, 4, 4, 2, 0, 0, 0, 0, -8, 5, 3, 5, 3, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 3, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 3, 5, 3, 5, 3, 1, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 6, 4, 6, 4, 2, 0, 0, 0, 0, -8, 7, 5, 7, 7, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 3, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 3, 3, 4, 4, 6, 6, 4, 2, 0, 0, 0, -9, 5, 3, 7, 5, 3, 1, 2, 4, 4, 4, 2, 0, 0, 0, 0, -8, 3, 5, 3, 3, 5, 1, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 5, 3, 6, 2, 4, 4, 2, 0, 0, 0, 0, -8, 5, 3, 3, 5, 5, 3, 4, 6, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 7, 7, 7, 5, 6, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 7, 3, 4, 6, 4, 6, 0, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 3, 5, 3, 3, 3, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 7, 5, 7, 5, 6, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 4, 4, 6, 2, 2, 0, 0, 0, 0, -8, 5, 3, 5, 5, 5, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 7, 3, 5, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 5, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 1, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 3, 5, 5, 3, 5, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 6, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 3, 5, 7, 5, 5, 6, 4, 4, 4, 0, 0, 0, 0, 0, -9, 5, 5, 7, 7, 5, 3, 6, 6, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 1, 4, 2, 4, 2, 4, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 4, 4, 4, 2, 4, 2, 0, 0, 0, -8, 5, 3, 3, 3, 1, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 1, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 5, 7, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 4, 2, 2, 4, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 1, 4, 4, 2, 4, 4, 0, 0, 0, 0, -8, 3, 5, 3, 3, 3, 1, 4, 2, 4, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -8, 3, 3, 3, 5, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 7, 3, 3, 3, 1, 1, 4, 2, 2, 2, 4, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 3, 5, 3, 4, 6, 4, 4, 4, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 1, 4, 4, 6, 2, 2, 2, 0, 0, 0, -8, 5, 3, 5, 3, 1, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 3, 5, 3, 3, 1, 4, 4, 2, 2, 4, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 4, 4, 2, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 2, 4, 4, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 3, 3, 3, 5, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 4, 4, 2, 2, 4, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 3, 5, 5, 5, 3, 4, 4, 4, 4, 4, 0, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 3, 3, 5, 3, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 1, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 3, 6, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 6, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 1, 4, 4, 4, 4, 4, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 1, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 3, 5, 3, 3, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 1, 6, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 1, 1, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 3, 3, 1, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 1, 2, 2, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 6, 2, 4, 0, 0, 0, 0, -8, 5, 3, 3, 1, 3, 1, 2, 2, 6, 4, 2, 0, 0, 0, 0, -8, 3, 5, 3, 3, 3, 3, 4, 2, 2, 2, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 3, 3, 3, 5, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 3, 3, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 3, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 4, 2, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 3, 3, 5, 4, 6, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 3, 5, 3, 6, 2, 2, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 2, 4, 4, 0, 0, 0, 0, -8, 7, 3, 3, 3, 5, 1, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 3, 1, 1, 3, 3, 4, 6, 2, 2, 2, 2, 0, 0, 0, -8, 7, 5, 3, 3, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 2, 4, 4, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 5, 3, 3, 1, 4, 4, 2, 2, 4, 0, 0, 0, 0, -8, 5, 5, 5, 1, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 4, 2, 4, 2, 4, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 4, 0, 0, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 6, 4, 4, 2, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 6, 4, 4, 4, 0, 0, 0, 0, -9, 7, 5, 5, 5, 1, 1, 6, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 3, 5, 5, 5, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 6, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 7, 5, 7, 3, 5, 6, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 3, 3, 3, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 6, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 7, 3, 3, 3, 5, 7, 4, 6, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 3, 3, 5, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 4, 4, 2, 0, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 0, 0, 0, 0, 0, -9, 5, 5, 3, 3, 5, 1, 4, 6, 2, 2, 2, 0, 0, 0, 0, -9, 3, 3, 5, 5, 7, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 3, 5, 3, 3, 3, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 3, 5, 2, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 7, 3, 6, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 7, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 5, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 3, 5, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 2, 4, 4, 2, 0, 0, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 6, 2, 4, 2, 0, 0, 0, 0, 0, -9, 5, 3, 3, 5, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 7, 7, 5, 7, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 7, 5, 3, 4, 4, 4, 2, 0, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 4, 4, 4, 2, 0, 0, 0, 0, 0, -8, 5, 5, 7, 5, 5, 3, 4, 6, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 6, 6, 6, 4, 2, 0, 0, 0, 0, -9, 5, 7, 3, 3, 3, 3, 4, 4, 4, 2, 0, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 2, 6, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 5, 5, 1, 4, 4, 6, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 7, 5, 6, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 4, 4, 0, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 7, 7, 5, 3, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 3, 3, 3, 5, 5, 3, 4, 4, 2, 2, 4, 2, 0, 0, 0, -9, 5, 5, 3, 1, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -8, 3, 5, 3, 3, 3, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 7, 6, 6, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 7, 5, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -8, 3, 3, 5, 5, 3, 3, 4, 2, 4, 4, 4, 0, 0, 0, 0, -9, 5, 5, 7, 5, 3, 3, 6, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 6, 6, 2, 4, 2, 0, 0, 0, -9, 5, 5, 7, 7, 5, 5, 6, 6, 6, 4, 2, 2, 0, 0, 0, -9, 3, 7, 7, 7, 7, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 7, 3, 5, 5, 4, 6, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 7, 4, 4, 6, 2, 4, 2, 0, 0, 0, -8, 7, 5, 7, 5, 3, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 7, 3, 3, 5, 4, 6, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 6, 2, 2, 2, 0, 0, 0, -8, 3, 3, 5, 5, 5, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 3, 3, 3, 3, 5, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 7, 5, 5, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 7, 5, 6, 4, 6, 2, 0, 0, 0, 0, 0, -8, 3, 5, 3, 3, 3, 3, 4, 6, 4, 2, 2, 0, 0, 0, 0, -9, 3, 3, 5, 5, 3, 3, 2, 4, 6, 2, 2, 2, 0, 0, 0, -8, 5, 3, 5, 3, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 6, 4, 2, 4, 0, 0, 0, 0, -8, 5, 7, 3, 5, 5, 5, 6, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 6, 4, 4, 2, 0, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 3, 5, 3, 3, 3, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 6, 4, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 7, 7, 5, 5, 4, 6, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 6, 4, 4, 4, 0, 0, 0, 0, -9, 3, 5, 3, 3, 5, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 5, 1, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 3, 3, 3, 5, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 2, 2, 4, 4, 0, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 3, 3, 3, 3, 3, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 1, 1, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 3, 5, 3, 2, 4, 2, 2, 6, 2, 2, 0, 0, -9, 3, 5, 5, 3, 3, 3, 2, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 1, 3, 3, 3, 4, 2, 2, 2, 7, 4, 2, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 3, 5, 5, 3, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 3, 6, 4, 2, 2, 7, 2, 2, 2, 0, -8, 5, 5, 5, 5, 3, 3, 6, 6, 4, 4, 4, 2, 0, 0, 0, -9, 7, 7, 5, 3, 5, 5, 6, 4, 4, 6, 4, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -8, 3, 5, 5, 3, 3, 3, 4, 2, 2, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 4, 2, 2, 4, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 4, 2, 4, 2, 4, 4, 0, 0, -9, 3, 3, 3, 5, 5, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 1, 3, 2, 4, 2, 2, 4, 2, 0, 0, 0, -9, 7, 5, 5, 3, 3, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 6, 6, 4, 4, 2, 2, 0, 0, -9, 3, 5, 5, 5, 1, 3, 6, 4, 4, 4, 2, 2, 2, 0, 0, -9, 3, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 7, 5, 5, 4, 4, 4, 4, 4, 2, 2, 0, 0, -9, 7, 7, 5, 5, 5, 5, 4, 6, 6, 4, 4, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 4, 4, 2, 4, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 4, 2, 2, 4, 2, 2, 0, 0, -9, 5, 3, 5, 5, 3, 3, 2, 4, 2, 2, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 2, 4, 2, 6, 2, 0, 0, 0, -8, 7, 5, 5, 7, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 4, 4, 2, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 6, 6, 4, 4, 2, 4, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 6, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 3, 5, 4, 6, 4, 2, 4, 4, 2, 0, 0, -9, 5, 3, 5, 5, 5, 5, 4, 4, 2, 6, 2, 2, 2, 0, 0, -9, 5, 5, 7, 5, 5, 3, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 3, 6, 2, 6, 4, 4, 2, 2, 2, 0, -9, 5, 5, 5, 5, 3, 5, 6, 4, 2, 6, 4, 4, 2, 0, 0, -9, 5, 5, 5, 3, 3, 3, 6, 4, 6, 6, 2, 6, 2, 0, 0, -9, 3, 3, 5, 5, 1, 3, 6, 2, 2, 2, 7, 2, 2, 0, 0, -9, 5, 3, 5, 1, 3, 5, 2, 2, 2, 2, 7, 2, 0, 0, 0, -9, 3, 3, 3, 5, 3, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 1, 3, 5, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 2, 2, 4, 6, 2, 2, 0, 0, -9, 7, 7, 5, 5, 5, 3, 6, 2, 2, 2, 7, 4, 2, 0, 0, -9, 5, 5, 5, 7, 5, 5, 6, 4, 4, 4, 6, 2, 2, 0, 0, -9, 7, 3, 7, 3, 5, 3, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 3, 6, 4, 2, 2, 7, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 3, 6, 2, 4, 4, 6, 0, 2, 0, 0, -9, 5, 5, 5, 5, 5, 7, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 7, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 3, 3, 4, 4, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 3, 3, 5, 3, 6, 2, 2, 2, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 1, 5, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 3, 2, 2, 2, 2, 7, 2, 4, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 4, 2, 6, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 4, 2, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 3, 3, 3, 3, 5, 3, 4, 2, 2, 4, 6, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 1, 3, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 3, 3, 3, 5, 5, 3, 2, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 3, 3, 5, 3, 1, 5, 2, 2, 2, 2, 6, 4, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 0, 2, 0, 0, -9, 5, 7, 5, 5, 3, 5, 4, 6, 6, 2, 4, 4, 2, 0, 0, -9, 7, 7, 7, 5, 3, 5, 4, 4, 4, 4, 4, 4, 2, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 6, 6, 4, 4, 2, 0, 0, 0, -9, 7, 3, 5, 5, 5, 3, 4, 4, 6, 4, 2, 2, 2, 0, 0, -9, 7, 5, 3, 5, 7, 7, 4, 4, 4, 6, 4, 4, 2, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 4, 2, 2, 6, 2, 0, 0, 0, -9, 3, 3, 3, 5, 3, 3, 4, 2, 2, 2, 7, 2, 2, 0, 0, -9, 5, 3, 3, 3, 1, 1, 4, 2, 2, 4, 6, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -8, 7, 3, 3, 3, 5, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 3, 3, 3, 3, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 1, 5, 3, 3, 4, 2, 2, 2, 7, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 6, 4, 2, 4, 0, 0, 0, 0, -9, 5, 5, 5, 7, 5, 5, 4, 4, 4, 6, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 2, 2, 2, 2, 7, 2, 2, 0, 0, -9, 7, 3, 5, 3, 3, 5, 4, 4, 2, 2, 6, 2, 2, 0, 0, -8, 3, 3, 3, 3, 3, 1, 4, 2, 4, 2, 6, 2, 2, 0, 0, -8, 5, 5, 5, 3, 7, 3, 4, 2, 2, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 2, 4, 6, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 3, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 6, 6, 4, 2, 4, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 4, 2, 2, 6, 2, 0, 0, 0, -9, 3, 3, 3, 1, 3, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 6, 4, 2, 2, 6, 2, 2, 0, 0, -8, 5, 5, 5, 7, 5, 5, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 7, 7, 5, 6, 4, 4, 4, 4, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 3, 4, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 5, 2, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 3, 3, 3, 1, 5, 4, 2, 2, 2, 6, 2, 0, 0, 0, -8, 7, 3, 5, 1, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 5, 3, 3, 4, 2, 2, 2, 7, 2, 2, 0, 0, -8, 7, 5, 5, 3, 5, 5, 4, 4, 2, 2, 7, 2, 0, 0, 0, -9, 5, 7, 7, 5, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 1, 3, 5, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 4, 4, 2, 4, 0, 2, 0, 0, -9, 5, 7, 5, 5, 5, 3, 6, 4, 4, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 5, 6, 4, 6, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 4, 4, 2, 6, 2, 0, 0, 0, -8, 3, 3, 3, 5, 3, 3, 4, 4, 2, 2, 6, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 4, 2, 2, 7, 2, 2, 0, 0, -9, 5, 5, 3, 3, 1, 3, 4, 4, 2, 2, 7, 2, 0, 0, 0, -9, 3, 3, 3, 5, 3, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 3, 6, 4, 4, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 7, 5, 5, 4, 6, 4, 2, 4, 4, 2, 2, 0, -9, 5, 5, 3, 3, 3, 3, 4, 4, 4, 2, 4, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 2, 4, 2, 4, 2, 2, 0, 0, -9, 5, 5, 5, 3, 3, 5, 6, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 3, 5, 1, 3, 3, 2, 2, 2, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 3, 3, 3, 2, 4, 2, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 2, 4, 2, 4, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 5, 6, 6, 4, 4, 4, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 6, 4, 6, 4, 2, 0, 0, 0, -9, 5, 3, 3, 5, 3, 3, 6, 2, 4, 2, 6, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 2, 4, 4, 6, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 0, 2, 0, 0, -9, 7, 7, 5, 5, 3, 5, 4, 4, 6, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 1, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 1, 3, 3, 4, 2, 2, 4, 7, 2, 2, 0, 0, -9, 5, 3, 3, 3, 1, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 3, 5, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 4, 2, 2, 7, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 3, 6, 4, 4, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 7, 6, 4, 6, 4, 4, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 5, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 5, 2, 6, 2, 4, 6, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 5, 2, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 2, 2, 2, 7, 4, 2, 0, 0, -8, 5, 5, 3, 5, 5, 5, 4, 6, 2, 4, 6, 0, 2, 0, 0, -8, 5, 5, 5, 5, 3, 5, 6, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 7, 5, 5, 4, 6, 6, 4, 4, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 5, 2, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 5, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 6, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 5, 7, 7, 5, 3, 4, 6, 6, 2, 4, 4, 2, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 5, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 5, 5, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 6, 2, 2, 6, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 6, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 6, 2, 4, 4, 2, 0, 0, 0, -9, 5, 3, 3, 5, 5, 7, 6, 4, 4, 2, 6, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 1, 6, 2, 4, 2, 6, 0, 0, 0, 0, -8, 5, 3, 5, 3, 1, 5, 6, 4, 4, 2, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 1, 5, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 5, 1, 3, 3, 2, 4, 2, 2, 6, 2, 0, 0, 0, -9, 3, 5, 3, 5, 3, 5, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 3, 6, 6, 4, 4, 6, 0, 0, 0, 0, -9, 5, 7, 7, 5, 5, 5, 4, 4, 4, 2, 2, 4, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 6, 6, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 2, 4, 2, 7, 2, 0, 0, 0, -9, 5, 3, 3, 5, 3, 3, 4, 4, 2, 2, 6, 2, 0, 0, 0, -9, 3, 5, 1, 5, 3, 5, 2, 2, 4, 2, 6, 2, 0, 0, 0, -9, 5, 5, 3, 3, 5, 5, 4, 4, 4, 6, 4, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 4, 6, 4, 2, 2, 2, 0, 0, -9, 7, 5, 7, 5, 5, 5, 6, 4, 4, 6, 2, 2, 2, 0, 0, -9, 5, 3, 5, 1, 3, 3, 4, 2, 2, 4, 4, 2, 0, 0, 0, -9, 3, 3, 5, 5, 3, 3, 4, 2, 2, 2, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 7, 3, 4, 4, 4, 6, 2, 2, 0, 0, 0, -8, 7, 5, 5, 7, 3, 5, 4, 4, 2, 4, 4, 2, 2, 0, 0, -9, 7, 7, 5, 5, 5, 5, 6, 6, 6, 4, 4, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 6, 6, 4, 6, 2, 0, 0, 0, -9, 7, 5, 3, 7, 5, 5, 4, 6, 4, 6, 4, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 7, 7, 3, 5, 6, 2, 6, 4, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 6, 2, 2, 6, 2, 2, 0, 0, 0, -9, 3, 3, 3, 3, 3, 3, 4, 2, 2, 2, 4, 0, 0, 0, 0, -9, 3, 3, 3, 3, 5, 3, 2, 4, 2, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 6, 6, 4, 4, 2, 2, 0, 0, -8, 5, 3, 5, 1, 5, 1, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 4, 4, 4, 6, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 6, 2, 6, 4, 2, 2, 0, 0, 0, -8, 7, 7, 3, 5, 5, 7, 4, 4, 4, 4, 4, 2, 2, 0, 0, -8, 5, 3, 5, 3, 3, 5, 4, 2, 2, 4, 6, 2, 2, 0, 0, -9, 5, 5, 1, 3, 1, 5, 4, 2, 4, 2, 6, 2, 2, 0, 0, -8, 5, 3, 3, 5, 3, 5, 4, 2, 2, 2, 7, 2, 0, 0, 0, -8, 3, 5, 3, 3, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -8, 7, 5, 3, 3, 5, 3, 4, 4, 2, 2, 6, 2, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 2, 4, 2, 2, 6, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 2, 4, 4, 4, 2, 2, 0, -9, 5, 5, 5, 5, 3, 5, 2, 4, 4, 4, 4, 4, 2, 0, 0, -9, 5, 5, 7, 5, 3, 3, 4, 2, 2, 4, 6, 2, 2, 0, 0, -9, 3, 5, 3, 5, 1, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 3, 3, 5, 3, 1, 1, 4, 4, 2, 2, 7, 2, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 2, 2, 2, 2, 7, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 2, 6, 2, 2, 0, 0, -9, 7, 5, 7, 5, 3, 5, 4, 4, 4, 4, 6, 2, 0, 0, 0, -9, 7, 7, 3, 3, 1, 3, 2, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 3, 3, 5, 1, 2, 2, 2, 2, 7, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 1, 4, 2, 2, 4, 7, 2, 0, 0, 0, -9, 7, 5, 3, 3, 1, 1, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 2, 2, 2, 6, 2, 2, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 2, 4, 4, 6, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 5, 6, 6, 6, 2, 2, 4, 2, 0, 0, -8, 5, 3, 5, 3, 5, 5, 4, 4, 2, 2, 6, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 4, 4, 2, 2, 6, 2, 0, 0, 0, -9, 5, 3, 5, 5, 3, 3, 6, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 5, 3, 3, 3, 4, 2, 4, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 5, 5, 5, 4, 4, 4, 2, 4, 2, 2, 0, 0, -9, 5, 3, 5, 3, 3, 3, 2, 4, 2, 2, 6, 2, 2, 0, 0, -9, 3, 3, 5, 3, 3, 5, 2, 4, 2, 4, 6, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 6, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 4, 4, 4, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 6, 2, 2, 2, 2, 0, 0, 0, 0, -9, 3, 5, 3, 5, 5, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 5, 3, 5, 5, 3, 3, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 2, 0, -9, 3, 3, 3, 3, 3, 5, 6, 4, 2, 4, 2, 0, 0, 0, 0, -9, 3, 5, 3, 5, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 5, 3, 1, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 3, 3, 3, 3, 1, 5, 4, 4, 4, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 6, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 7, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 7, 5, 7, 5, 5, 4, 4, 6, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 7, 5, 7, 6, 6, 6, 4, 4, 4, 2, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 2, 4, 4, 6, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 7, 5, 6, 4, 4, 4, 4, 2, 2, 0, 0, -9, 5, 5, 3, 3, 5, 3, 2, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 7, 5, 5, 3, 3, 1, 6, 4, 2, 2, 6, 2, 2, 0, 0, -9, 7, 5, 3, 3, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 3, 3, 3, 3, 3, 1, 2, 4, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 4, 6, 4, 4, 2, 2, 0, 0, -9, 3, 3, 5, 5, 1, 3, 4, 4, 2, 2, 4, 2, 2, 0, 0, -9, 5, 3, 1, 5, 3, 3, 4, 4, 2, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 4, 4, 2, 4, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 4, 4, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 4, 4, 2, 4, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 4, 2, 2, 4, 2, 2, 0, 0, -8, 5, 5, 5, 5, 1, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 6, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 5, 4, 6, 6, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 4, 4, 4, 6, 2, 2, 2, 0, -9, 3, 5, 3, 5, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 4, 2, 4, 2, 4, 2, 0, 0, 0, -9, 3, 3, 5, 3, 1, 5, 4, 4, 4, 2, 4, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 6, 4, 6, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 2, 6, 4, 2, 2, 2, 0, 0, -9, 7, 3, 3, 3, 3, 3, 4, 2, 4, 2, 4, 2, 2, 0, 0, -9, 7, 5, 5, 5, 7, 5, 6, 4, 4, 2, 4, 2, 0, 0, 0, -9, 7, 5, 7, 7, 3, 5, 4, 6, 4, 4, 2, 2, 2, 0, 0, -8, 3, 3, 5, 3, 5, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 3, 3, 5, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 7, 3, 5, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 7, 3, 5, 6, 6, 4, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 2, 2, 4, 0, 0, 0, 0, -8, 7, 5, 5, 3, 7, 5, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 3, 3, 3, 3, 3, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 3, 5, 5, 3, 1, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 3, 3, 5, 3, 3, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 3, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 3, 3, 3, 3, 3, 3, 6, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 6, 6, 6, 6, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 6, 4, 2, 0, 0, 0, -8, 5, 3, 3, 5, 1, 5, 4, 2, 4, 2, 2, 2, 2, 0, 0, -8, 3, 3, 5, 3, 5, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -8, 7, 3, 5, 5, 3, 5, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 3, 5, 5, 1, 3, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 6, 7, 6, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 7, 3, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 7, 5, 5, 6, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 3, 3, 5, 3, 3, 6, 4, 2, 2, 6, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 4, 4, 2, 2, 6, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 7, 5, 5, 5, 3, 3, 6, 2, 2, 2, 7, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 7, 5, 7, 5, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 1, 4, 4, 2, 2, 6, 2, 0, 0, 0, -8, 7, 3, 3, 3, 3, 3, 4, 2, 2, 4, 6, 2, 0, 0, 0, -8, 5, 3, 3, 5, 1, 5, 4, 2, 2, 2, 6, 2, 2, 0, 0, -8, 5, 3, 3, 3, 3, 5, 4, 4, 2, 2, 7, 2, 2, 0, 0, -8, 5, 5, 3, 3, 3, 5, 2, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 6, 6, 4, 4, 4, 2, 2, 2, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 4, 2, 6, 2, 2, 0, 0, -9, 7, 3, 5, 5, 5, 5, 4, 2, 2, 2, 6, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 4, 4, 4, 2, 7, 2, 0, 0, 0, -8, 3, 5, 5, 3, 1, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 3, 6, 4, 6, 2, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 5, 3, 3, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 3, 1, 3, 2, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 7, 3, 3, 3, 2, 4, 2, 2, 7, 2, 2, 0, 0, -9, 7, 5, 3, 3, 3, 5, 4, 4, 6, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 3, 7, 5, 4, 4, 4, 4, 4, 2, 2, 0, 0, -8, 5, 3, 3, 3, 5, 3, 2, 2, 4, 2, 4, 2, 2, 0, 0, -9, 7, 5, 5, 3, 3, 3, 4, 2, 2, 2, 4, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 5, 6, 6, 6, 2, 6, 2, 0, 0, 0, -9, 5, 5, 3, 3, 5, 5, 4, 4, 4, 2, 4, 0, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 4, 2, 2, 4, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 5, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 2, 4, 4, 2, 2, 2, 0, 0, -9, 7, 7, 7, 5, 5, 5, 4, 6, 6, 4, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 7, 6, 6, 6, 4, 4, 2, 0, 0, 0, -8, 5, 3, 3, 5, 3, 3, 2, 2, 2, 2, 6, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 2, 2, 2, 7, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 6, 4, 2, 2, 6, 2, 0, 0, 0, -8, 5, 3, 3, 1, 3, 3, 2, 4, 2, 2, 6, 0, 2, 0, 0, -9, 5, 3, 3, 3, 1, 3, 4, 4, 2, 2, 6, 2, 0, 0, 0, -8, 7, 3, 3, 3, 1, 3, 2, 4, 2, 2, 6, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 3, 4, 4, 2, 4, 6, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 2, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 7, 5, 3, 6, 6, 4, 6, 4, 2, 0, 0, 0, -9, 3, 3, 3, 3, 3, 3, 4, 2, 2, 2, 7, 2, 2, 0, 0, -8, 3, 5, 3, 3, 3, 3, 4, 2, 4, 2, 6, 2, 0, 0, 0, -9, 3, 3, 3, 5, 3, 5, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 3, 3, 3, 3, 1, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 6, 4, 2, 2, 2, 0, 0, -8, 5, 7, 7, 5, 5, 5, 6, 4, 6, 6, 2, 2, 2, 0, 0, -8, 5, 5, 5, 3, 3, 3, 6, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 1, 3, 3, 3, 4, 4, 4, 2, 6, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 4, 2, 2, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 4, 4, 4, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -8, 5, 3, 1, 3, 3, 3, 6, 6, 4, 2, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 2, 6, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 3, 5, 5, 5, 3, 5, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 7, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 7, 5, 5, 4, 4, 4, 4, 6, 2, 2, 0, 0, -9, 5, 3, 5, 5, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 3, 5, 5, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 1, 5, 4, 2, 2, 4, 2, 2, 2, 0, 0, -9, 3, 3, 5, 3, 5, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 4, 6, 4, 4, 2, 2, 0, 0, -9, 3, 5, 3, 3, 1, 5, 4, 2, 2, 2, 4, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 5, 4, 4, 2, 4, 6, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 5, 4, 2, 2, 2, 4, 2, 2, 0, 0, -9, 3, 3, 3, 5, 3, 5, 4, 2, 4, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 3, 6, 6, 4, 4, 6, 2, 0, 0, 0, -8, 3, 5, 5, 3, 3, 5, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 4, 6, 4, 2, 0, 0, 0, 0, -9, 5, 7, 3, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 5, 5, 1, 3, 1, 3, 6, 4, 2, 2, 6, 2, 2, 0, 0, -9, 7, 5, 3, 5, 1, 3, 4, 2, 4, 2, 7, 2, 2, 0, 0, -8, 5, 5, 5, 3, 3, 3, 4, 4, 4, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 4, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 1, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 5, 5, 3, 3, 2, 4, 2, 4, 6, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 5, 4, 2, 2, 2, 7, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 6, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 3, 5, 4, 4, 4, 2, 4, 2, 0, 0, 0, -9, 3, 5, 5, 3, 3, 5, 4, 2, 4, 2, 4, 2, 0, 0, 0, -9, 5, 7, 3, 3, 3, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 4, 6, 6, 2, 4, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 5, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 5, 3, 5, 5, 4, 4, 6, 2, 4, 2, 0, 0, 0, -8, 5, 5, 7, 3, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 1, 7, 1, 4, 4, 4, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 6, 4, 4, 4, 2, 4, 2, 0, 0, -9, 3, 5, 5, 3, 3, 3, 2, 2, 2, 2, 6, 2, 2, 0, 0, -9, 3, 5, 3, 3, 1, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 5, 3, 5, 6, 2, 2, 2, 6, 2, 2, 0, 0, -9, 3, 5, 5, 3, 1, 3, 6, 2, 2, 2, 6, 2, 2, 0, 0, -9, 3, 5, 5, 3, 3, 3, 4, 4, 2, 2, 6, 2, 0, 0, 0, -9, 3, 3, 5, 3, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 4, 2, 2, 4, 2, 0, 0, 0, -9, 3, 3, 3, 3, 3, 3, 4, 4, 4, 2, 4, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 3, 6, 4, 2, 2, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 1, 6, 6, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 3, 7, 5, 4, 7, 4, 6, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 4, 6, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 3, 3, 2, 6, 4, 4, 2, 2, 0, 0, 0, -9, 3, 5, 1, 3, 3, 5, 4, 6, 2, 2, 4, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 5, 2, 6, 4, 4, 4, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 6, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 7, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 3, 5, 3, 5, 3, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 5, 5, 4, 6, 4, 2, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 6, 2, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 7, 7, 5, 7, 7, 6, 4, 6, 4, 4, 2, 2, 2, 0, -9, 5, 3, 3, 5, 3, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 3, 5, 5, 5, 3, 3, 4, 4, 6, 4, 2, 4, 0, 0, 0, -9, 5, 5, 5, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 2, 0, -8, 5, 5, 5, 7, 5, 5, 6, 4, 6, 4, 2, 2, 2, 0, 0, -9, 7, 5, 3, 5, 7, 5, 4, 4, 6, 4, 4, 2, 2, 0, 0, -8, 7, 5, 5, 5, 5, 5, 6, 6, 6, 4, 4, 0, 0, 0, 0, -9, 7, 5, 5, 5, 3, 5, 4, 4, 4, 6, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 2, 2, 4, 6, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 7, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 4, 4, 2, 4, 0, 0, 0, -9, 3, 3, 3, 1, 3, 5, 6, 4, 2, 2, 4, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 2, 2, 4, 6, 2, 2, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 2, 4, 2, 6, 2, 2, 0, 0, -9, 3, 3, 3, 5, 1, 5, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 3, 3, 5, 3, 3, 5, 2, 4, 2, 4, 6, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 6, 4, 6, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 6, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 6, 4, 4, 4, 2, 2, 0, 0, -9, 7, 5, 3, 3, 3, 5, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 5, 1, 5, 2, 4, 2, 2, 7, 2, 2, 0, 0, -9, 5, 3, 3, 3, 5, 3, 4, 2, 2, 4, 7, 2, 2, 0, 0, -9, 5, 5, 3, 3, 1, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 4, 2, 4, 2, 0, 0, 0, -8, 5, 5, 5, 7, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 7, 7, 3, 3, 4, 4, 6, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 1, 4, 4, 4, 2, 6, 2, 2, 0, 0, -9, 5, 3, 5, 3, 3, 5, 6, 4, 2, 2, 4, 2, 2, 0, 0, -9, 3, 3, 3, 5, 3, 3, 4, 4, 6, 2, 4, 2, 2, 0, 0, -9, 3, 3, 5, 3, 3, 3, 2, 2, 4, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 6, 2, 4, 0, 0, 0, 0, -9, 5, 5, 5, 7, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 6, 4, 4, 4, 6, 2, 2, 0, 0, -9, 5, 3, 5, 3, 1, 5, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 7, 3, 1, 3, 3, 3, 4, 4, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 2, 4, 2, 6, 2, 2, 0, 0, -9, 5, 5, 7, 3, 5, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 6, 4, 4, 4, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 5, 2, 4, 2, 2, 4, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 5, 6, 4, 2, 6, 4, 0, 0, 0, 0, -9, 5, 5, 5, 5, 7, 5, 6, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 6, 4, 4, 6, 2, 2, 0, 0, -9, 3, 3, 3, 5, 1, 5, 2, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 2, 4, 4, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 3, 7, 3, 5, 3, 3, 4, 4, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 2, 2, 6, 4, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 7, 7, 5, 5, 5, 6, 4, 6, 4, 4, 2, 0, 0, 0, -9, 5, 7, 1, 5, 3, 3, 6, 2, 2, 2, 7, 2, 2, 0, 0, -9, 3, 5, 1, 5, 3, 3, 6, 6, 2, 2, 7, 2, 0, 0, 0, -9, 5, 5, 3, 5, 1, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 5, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 3, 3, 1, 3, 4, 4, 2, 2, 7, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 4, 2, 2, 7, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 6, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 6, 6, 2, 4, 2, 2, 0, 0, -8, 5, 3, 5, 5, 3, 5, 4, 4, 2, 2, 4, 2, 0, 0, 0, -8, 3, 5, 5, 3, 3, 1, 4, 4, 2, 4, 2, 2, 2, 0, 0, -9, 3, 3, 5, 5, 3, 5, 4, 4, 2, 2, 4, 2, 0, 0, 0, -9, 3, 3, 5, 3, 1, 3, 6, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 7, 5, 3, 7, 6, 6, 6, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 7, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 5, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 3, 3, 3, 5, 3, 4, 2, 2, 2, 7, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 1, 3, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 3, 5, 3, 1, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 7, 5, 5, 4, 4, 2, 6, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 7, 7, 5, 5, 6, 4, 4, 6, 4, 2, 0, 0, 0, -9, 3, 3, 3, 3, 3, 5, 4, 2, 4, 2, 6, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 2, 4, 2, 6, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 6, 2, 0, 0, 0, -9, 5, 3, 5, 3, 1, 3, 6, 4, 2, 2, 7, 2, 2, 0, 0, -9, 5, 7, 3, 5, 5, 5, 4, 2, 4, 2, 7, 2, 0, 0, 0, -9, 3, 3, 3, 3, 1, 3, 2, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 7, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 3, 5, 3, 3, 5, 1, 4, 4, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 3, 3, 1, 1, 6, 4, 2, 2, 7, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 6, 4, 4, 4, 2, 2, 0, 0, -8, 5, 5, 5, 7, 5, 5, 6, 4, 6, 2, 4, 2, 2, 0, 0, -9, 5, 5, 3, 1, 3, 3, 4, 2, 2, 2, 4, 2, 2, 0, 0, -9, 3, 5, 5, 3, 3, 5, 4, 4, 2, 4, 4, 2, 2, 0, 0, -9, 3, 5, 3, 5, 5, 5, 4, 2, 2, 4, 6, 2, 2, 0, 0, -8, 5, 5, 3, 5, 1, 3, 4, 6, 2, 4, 6, 2, 2, 0, 0, -8, 5, 3, 3, 3, 1, 3, 2, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 5, 6, 4, 4, 4, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 5, 6, 4, 2, 6, 4, 2, 0, 0, 0, -9, 5, 3, 3, 5, 3, 5, 4, 4, 2, 2, 7, 2, 2, 0, 0, -9, 7, 5, 3, 5, 3, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 3, 3, 3, 5, 3, 4, 2, 4, 2, 6, 2, 0, 0, 0, -8, 7, 3, 1, 3, 3, 5, 4, 4, 2, 2, 7, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 4, 4, 2, 6, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 2, 4, 2, 6, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 2, 4, 2, 2, 7, 2, 0, 0, 0, -9, 5, 5, 3, 3, 1, 5, 2, 4, 2, 2, 7, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 6, 4, 4, 2, 4, 2, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 6, 4, 6, 4, 4, 4, 2, 0, 0, -9, 7, 5, 5, 7, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 2, 2, 4, 4, 2, 2, 0, 0, -9, 3, 3, 5, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 5, 5, 3, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 5, 3, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 5, 5, 3, 5, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 1, 3, 5, 4, 4, 6, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 2, 0, 0, -9, 7, 5, 5, 3, 1, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 2, 6, 4, 2, 0, 0, -9, 5, 5, 5, 7, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 0, 2, 0, 0, -9, 7, 7, 5, 3, 5, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 7, 5, 5, 5, 5, 4, 6, 6, 4, 4, 4, 2, 0, 0, -9, 3, 5, 5, 3, 3, 3, 2, 4, 2, 2, 6, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 5, 2, 2, 2, 2, 6, 2, 2, 0, 0, -9, 3, 5, 1, 3, 1, 3, 2, 2, 2, 2, 4, 2, 0, 0, 0, -9, 5, 3, 5, 3, 1, 1, 4, 2, 2, 2, 6, 4, 2, 0, 0, -9, 5, 5, 3, 5, 3, 5, 6, 2, 4, 2, 7, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 3, 4, 4, 2, 4, 4, 2, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 3, 3, 3, 5, 3, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 7, 5, 7, 5, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 5, 7, 7, 3, 5, 6, 4, 4, 4, 2, 2, 4, 2, 0, -9, 5, 3, 5, 3, 3, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 1, 3, 5, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 3, 5, 3, 5, 7, 5, 6, 4, 2, 4, 4, 2, 0, 0, 0, -9, 5, 3, 3, 5, 3, 5, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 2, 6, 2, 2, 2, 2, 0, 0, 0, -9, 3, 5, 5, 3, 5, 1, 4, 6, 2, 2, 4, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 6, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 2, 2, 4, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 6, 4, 4, 2, 2, 0, 0, -8, 3, 3, 3, 5, 3, 3, 2, 2, 2, 2, 7, 2, 2, 0, 0, -9, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 7, 2, 0, 0, 0, -9, 3, 5, 3, 5, 5, 1, 6, 2, 2, 2, 6, 2, 2, 0, 0, -9, 3, 3, 3, 5, 3, 3, 2, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 5, 5, 5, 1, 6, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 4, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 1, 6, 4, 4, 2, 6, 2, 0, 0, 0, -9, 7, 3, 5, 5, 3, 3, 4, 4, 2, 4, 7, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 7, 5, 4, 4, 4, 6, 4, 2, 0, 0, 0, -9, 5, 5, 3, 7, 3, 5, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 5, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 3, 3, 3, 5, 1, 5, 4, 2, 2, 2, 6, 0, 2, 0, 0, -9, 7, 3, 3, 3, 3, 3, 6, 4, 2, 2, 6, 2, 0, 0, 0, -9, 3, 5, 3, 5, 3, 3, 4, 4, 4, 2, 4, 2, 0, 0, 0, -9, 5, 3, 5, 3, 5, 3, 4, 6, 4, 2, 4, 2, 2, 0, 0, -9, 7, 7, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 6, 6, 4, 2, 4, 2, 0, 0, -9, 3, 5, 5, 5, 3, 3, 4, 4, 2, 4, 4, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 4, 4, 2, 6, 2, 2, 0, 0, -9, 3, 5, 5, 3, 3, 5, 6, 4, 2, 2, 4, 2, 0, 0, 0, -8, 5, 5, 5, 3, 1, 3, 6, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 3, 2, 4, 6, 2, 2, 2, 2, 0, 0, -9, 3, 3, 3, 5, 3, 3, 4, 4, 2, 2, 4, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 5, 2, 4, 2, 2, 6, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 4, 2, 0, 0, -8, 5, 3, 3, 5, 3, 5, 6, 4, 4, 2, 4, 2, 0, 0, 0, -8, 5, 3, 3, 5, 3, 5, 2, 4, 6, 2, 4, 2, 0, 0, 0, -9, 5, 3, 5, 5, 3, 5, 4, 2, 4, 2, 4, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 5, 4, 2, 2, 2, 6, 2, 2, 0, 0, -8, 5, 3, 3, 3, 3, 3, 6, 4, 2, 2, 4, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 4, 2, 2, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 7, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 1, 3, 6, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 4, 2, 2, 2, 2, 0, 0, -8, 5, 5, 7, 5, 5, 5, 6, 2, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 3, 4, 4, 6, 4, 2, 2, 2, 0, 0, -9, 3, 3, 7, 3, 3, 3, 4, 4, 2, 2, 4, 2, 0, 0, 0, -9, 5, 5, 7, 5, 3, 5, 4, 4, 4, 4, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 3, 5, 5, 3, 3, 3, 4, 2, 2, 2, 7, 2, 0, 0, 0, -9, 3, 3, 3, 5, 3, 3, 2, 2, 4, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 1, 3, 4, 4, 2, 2, 6, 2, 4, 0, 0, -9, 3, 3, 3, 3, 3, 3, 2, 2, 4, 2, 6, 2, 0, 0, 0, -8, 3, 5, 5, 3, 3, 5, 2, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 2, 4, 2, 6, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 6, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 2, 6, 4, 4, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 2, 4, 2, 6, 2, 0, 0, 0, -9, 3, 3, 5, 3, 3, 3, 4, 2, 2, 4, 6, 2, 0, 0, 0, -9, 3, 5, 3, 5, 3, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 3, 2, 2, 4, 2, 7, 2, 2, 0, 0, -9, 5, 7, 5, 3, 1, 3, 4, 2, 4, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 3, 6, 4, 2, 2, 6, 2, 2, 0, 0, -9, 3, 5, 5, 7, 5, 5, 4, 4, 4, 4, 6, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 4, 4, 2, 4, 6, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 5, 6, 6, 2, 2, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 7, 5, 5, 4, 4, 6, 4, 4, 6, 2, 0, 0, -9, 3, 7, 3, 3, 3, 3, 6, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 3, 3, 5, 5, 4, 6, 6, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 3, 3, 7, 2, 2, 2, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 6, 6, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 3, 3, 3, 3, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 2, 2, 2, 7, 2, 2, 0, 0, -9, 5, 5, 3, 3, 1, 3, 6, 4, 2, 2, 7, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 6, 4, 4, 6, 2, 0, 0, 0, -9, 5, 5, 7, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 7, 5, 3, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 7, 5, 3, 4, 4, 4, 6, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 6, 6, 6, 2, 2, 2, 0, 0, -9, 7, 5, 3, 3, 1, 3, 4, 2, 4, 4, 4, 2, 2, 0, 0, -9, 3, 5, 5, 5, 3, 3, 4, 4, 4, 2, 4, 2, 2, 0, 0, -9, 3, 5, 5, 3, 3, 5, 6, 4, 2, 4, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 3, 7, 4, 4, 4, 4, 4, 4, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 6, 4, 4, 2, 0, 0, 0, -9, 3, 3, 3, 5, 5, 3, 4, 2, 2, 2, 7, 2, 2, 0, 0, -9, 7, 3, 3, 3, 3, 3, 4, 2, 4, 2, 6, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 2, 4, 2, 6, 2, 2, 0, 0, -8, 5, 5, 5, 5, 7, 3, 4, 4, 2, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 7, 5, 6, 4, 4, 6, 4, 2, 0, 2, 0, -9, 5, 5, 7, 7, 3, 3, 6, 4, 4, 4, 4, 2, 2, 2, 0, -9, 5, 3, 3, 3, 3, 5, 4, 2, 2, 2, 6, 2, 2, 0, 0, -8, 5, 3, 3, 3, 3, 5, 2, 2, 2, 2, 7, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 2, 2, 2, 7, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 6, 4, 2, 4, 0, 0, 0, 0, -9, 5, 5, 5, 5, 7, 5, 6, 4, 6, 4, 4, 2, 0, 0, 0, -9, 5, 5, 3, 3, 1, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -8, 7, 3, 3, 3, 1, 3, 4, 2, 6, 2, 6, 2, 0, 0, 0, -9, 5, 5, 3, 3, 1, 3, 4, 4, 2, 4, 6, 2, 2, 0, 0, -8, 5, 3, 3, 3, 3, 3, 2, 2, 4, 4, 7, 2, 2, 0, 0, -9, 7, 5, 3, 5, 3, 3, 4, 2, 2, 2, 7, 2, 2, 0, 0, -8, 5, 3, 3, 3, 1, 5, 4, 2, 2, 2, 7, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 4, 4, 4, 4, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 6, 4, 6, 4, 4, 2, 0, 0, 0, -9, 3, 5, 3, 5, 3, 7, 4, 6, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 7, 3, 3, 6, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 5, 5, 5, 4, 2, 2, 2, 7, 2, 2, 0, 0, -9, 5, 5, 5, 3, 3, 3, 6, 4, 2, 2, 6, 2, 0, 0, 0, -9, 3, 3, 3, 5, 3, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 3, 3, 3, 3, 3, 3, 4, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 5, 4, 2, 2, 2, 6, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 2, 4, 4, 4, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 6, 6, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 5, 5, 6, 4, 4, 4, 4, 4, 2, 2, 0, -9, 3, 3, 5, 5, 3, 1, 6, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 4, 4, 4, 4, 2, 2, 0, 0, -9, 3, 3, 3, 5, 1, 5, 4, 6, 4, 6, 4, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 6, 4, 2, 4, 2, 2, 2, 0, 0, -8, 7, 5, 5, 7, 5, 5, 6, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 5, 5, 6, 4, 4, 4, 4, 2, 2, 0, 0, -9, 3, 5, 5, 1, 3, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 2, 4, 4, 0, 0, 0, 0, -9, 7, 5, 7, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 7, 7, 5, 5, 6, 4, 4, 6, 4, 2, 0, 0, 0, -9, 3, 5, 5, 5, 3, 3, 4, 4, 4, 2, 6, 2, 0, 0, 0, -9, 3, 3, 3, 3, 3, 5, 4, 4, 4, 2, 4, 0, 0, 0, 0, -9, 3, 5, 5, 3, 3, 3, 4, 4, 4, 2, 4, 2, 0, 0, 0, -9, 3, 3, 5, 5, 3, 1, 2, 2, 2, 2, 4, 2, 0, 0, 0, -9, 5, 7, 3, 5, 3, 3, 4, 2, 2, 2, 6, 2, 2, 0, 0, -8, 3, 5, 3, 3, 1, 1, 4, 4, 4, 2, 4, 2, 0, 0, 0, -8, 5, 3, 3, 5, 3, 3, 4, 2, 2, 2, 4, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 6, 4, 2, 2, 2, 2, 0, 0, 0, -8, 3, 3, 5, 3, 3, 1, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 3, 5, 3, 3, 3, 1, 6, 4, 4, 2, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 2, 2, 2, 4, 0, 2, 0, 0, -9, 3, 5, 3, 5, 5, 1, 4, 4, 2, 4, 4, 0, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 2, 2, 2, 4, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 2, 2, 2, 2, 4, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 4, 4, 4, 4, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 4, 6, 2, 2, 4, 0, 0, -9, 3, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 3, 1, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 1, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 3, 3, 3, 5, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 7, 5, 5, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 6, 4, 2, 2, 2, 2, 0, 0, -9, 7, 7, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 3, 5, 4, 4, 6, 2, 4, 2, 2, 0, 0, -9, 5, 5, 7, 5, 5, 5, 4, 4, 4, 4, 2, 4, 2, 0, 0, -9, 7, 3, 5, 3, 5, 3, 2, 4, 4, 4, 4, 2, 0, 0, 0, -8, 5, 3, 5, 3, 3, 7, 2, 2, 4, 4, 2, 2, 2, 0, 0, -9, 5, 7, 3, 7, 7, 5, 6, 6, 6, 2, 4, 2, 0, 0, 0, -8, 5, 5, 7, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 7, 7, 5, 5, 4, 4, 6, 4, 4, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 5, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 6, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 3, 7, 5, 5, 3, 5, 6, 4, 4, 6, 2, 2, 0, 0, 0, -9, 3, 3, 1, 5, 5, 1, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 2, 4, 2, 2, 2, 4, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 6, 6, 6, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 6, 6, 6, 2, 2, 0, 0, 0, -9, 3, 3, 3, 3, 3, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 3, 5, 3, 5, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 5, 6, 4, 6, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 3, 5, 5, 6, 6, 4, 2, 2, 2, 0, 0, 0, -9, 7, 7, 5, 7, 3, 3, 6, 4, 4, 6, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 7, 6, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 7, 7, 3, 5, 2, 4, 2, 4, 4, 4, 2, 0, 0, -9, 3, 5, 3, 3, 3, 1, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 5, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 5, 5, 3, 3, 4, 6, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 3, 3, 5, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 7, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 2, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 2, 0, 0, -9, 5, 3, 3, 3, 5, 5, 2, 2, 6, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 5, 5, 6, 2, 6, 4, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 5, 5, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 5, 7, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -8, 5, 3, 1, 3, 3, 5, 2, 2, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 6, 6, 4, 4, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 2, 0, 0, -9, 7, 5, 7, 7, 7, 7, 6, 6, 6, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 6, 6, 2, 6, 2, 2, 0, 0, 0, -9, 3, 5, 3, 1, 5, 3, 2, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 5, 4, 2, 4, 2, 4, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 3, 5, 3, 5, 3, 5, 6, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 7, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 7, 5, 5, 4, 6, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 1, 3, 1, 2, 4, 6, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 1, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 3, 4, 2, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 3, 5, 5, 3, 6, 6, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 7, 5, 4, 4, 4, 4, 2, 0, 2, 0, 0, -9, 7, 3, 1, 5, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 7, 7, 1, 3, 3, 1, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 4, 4, 2, 2, 2, 2, 0, 0, -8, 5, 3, 3, 1, 3, 1, 2, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 1, 3, 3, 2, 2, 2, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 4, 2, 2, 0, 0, -9, 7, 7, 5, 5, 5, 3, 6, 4, 6, 6, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 5, 5, 2, 4, 6, 2, 2, 0, 0, 0, 0, -9, 5, 7, 5, 7, 7, 5, 4, 2, 4, 4, 2, 2, 2, 0, 0, -8, 5, 7, 5, 3, 5, 5, 4, 6, 6, 4, 2, 2, 2, 0, 0, -8, 7, 5, 5, 5, 7, 1, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 5, 7, 3, 5, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 5, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 4, 4, 4, 4, 4, 2, 0, 0, -8, 5, 5, 5, 5, 7, 3, 4, 4, 4, 6, 2, 2, 2, 0, 0, -8, 5, 5, 3, 1, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 1, 5, 5, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 5, 5, 1, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 5, 1, 6, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 7, 3, 5, 5, 3, 4, 2, 4, 4, 2, 2, 2, 0, 0, -8, 7, 5, 7, 7, 5, 3, 6, 2, 4, 6, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 5, 1, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 7, 5, 5, 5, 6, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 3, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 7, 7, 4, 6, 6, 6, 2, 2, 0, 0, 0, -8, 5, 7, 3, 5, 5, 3, 4, 2, 4, 2, 0, 0, 0, 0, 0, -8, 3, 7, 3, 5, 7, 1, 4, 2, 4, 2, 0, 0, 0, 0, 0, -8, 5, 5, 3, 7, 7, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 7, 1, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 7, 3, 6, 4, 2, 2, 0, 0, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 6, 4, 4, 4, 4, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 7, 5, 5, 4, 2, 4, 6, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 2, 6, 6, 4, 4, 2, 2, 0, 0, -8, 5, 7, 7, 5, 3, 5, 4, 6, 4, 4, 4, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 5, 1, 4, 6, 2, 2, 2, 2, 0, 0, 0, -8, 5, 7, 3, 5, 3, 3, 2, 6, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 6, 6, 6, 4, 4, 4, 2, 0, 0, -9, 7, 7, 7, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 6, 4, 2, 2, 2, 2, 0, 0, -8, 5, 7, 5, 5, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 3, 3, 3, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 3, 5, 3, 3, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 7, 3, 3, 5, 5, 4, 2, 4, 4, 4, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 2, 4, 4, 2, 2, 0, 0, -8, 7, 5, 3, 5, 5, 5, 4, 4, 2, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 3, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 1, 5, 3, 4, 4, 6, 2, 2, 2, 0, 0, 0, -8, 3, 3, 5, 3, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 3, 5, 3, 3, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 3, 3, 5, 3, 5, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -9, 3, 3, 5, 3, 3, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 7, 5, 6, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 7, 5, 5, 3, 6, 4, 2, 4, 4, 4, 2, 0, 0, -9, 7, 3, 3, 3, 3, 3, 4, 2, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 2, 2, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 5, 3, 2, 4, 6, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 4, 2, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 3, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 7, 7, 5, 5, 4, 4, 6, 2, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 1, 5, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 3, 5, 5, 5, 1, 5, 2, 6, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 5, 2, 6, 4, 2, 2, 2, 0, 0, 0, -8, 3, 5, 7, 5, 1, 3, 2, 6, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 1, 3, 2, 4, 6, 2, 2, 0, 0, 0, 0, -8, 3, 5, 7, 5, 3, 5, 2, 4, 2, 2, 2, 0, 0, 0, 0, -8, 3, 5, 3, 5, 1, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -8, 5, 7, 7, 5, 5, 5, 4, 4, 2, 2, 6, 2, 0, 0, 0, -9, 5, 5, 7, 7, 5, 5, 4, 6, 4, 2, 4, 2, 0, 0, 0, -8, 3, 7, 3, 5, 1, 5, 4, 2, 2, 4, 2, 2, 0, 0, 0, -8, 3, 3, 7, 5, 1, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 7, 3, 3, 3, 1, 4, 4, 2, 6, 2, 2, 0, 0, 0, -8, 3, 3, 7, 3, 3, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 7, 5, 5, 3, 3, 6, 2, 2, 4, 2, 2, 0, 0, 0, -8, 3, 3, 5, 3, 1, 7, 2, 4, 6, 2, 4, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 4, 6, 4, 6, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 6, 6, 4, 6, 4, 2, 2, 0, 0, -8, 5, 7, 7, 5, 5, 7, 6, 2, 4, 2, 4, 2, 0, 0, 0, -8, 5, 5, 3, 3, 1, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -8, 3, 5, 3, 3, 3, 3, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 3, 3, 3, 5, 5, 5, 4, 4, 4, 2, 4, 2, 0, 0, 0, -8, 5, 7, 5, 5, 3, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 7, 5, 5, 3, 4, 6, 4, 6, 6, 2, 2, 0, 0, -8, 3, 5, 3, 3, 5, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 3, 5, 7, 3, 3, 3, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 5, 5, 4, 2, 2, 4, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 4, 4, 6, 2, 2, 0, 0, 0, -8, 7, 5, 7, 3, 5, 3, 4, 6, 6, 6, 4, 2, 2, 0, 0, -8, 7, 5, 3, 3, 5, 3, 4, 4, 4, 2, 4, 0, 0, 0, 0, -9, 5, 5, 7, 3, 5, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 4, 2, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 7, 7, 5, 5, 6, 2, 4, 4, 4, 2, 0, 0, 0, -9, 5, 7, 7, 5, 5, 5, 4, 6, 6, 4, 2, 4, 0, 0, 0, -9, 3, 3, 3, 5, 1, 3, 6, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 4, 2, 4, 2, 0, 2, 0, 0, -9, 5, 3, 5, 3, 3, 5, 6, 4, 2, 2, 4, 4, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 4, 2, 4, 2, 4, 2, 2, 0, -8, 5, 7, 5, 7, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 3, 7, 3, 5, 5, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 5, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 3, 7, 5, 3, 5, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 5, 7, 7, 7, 7, 5, 6, 2, 6, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 4, 4, 4, 4, 4, 4, 2, 0, 0, -8, 5, 5, 5, 3, 3, 3, 2, 6, 2, 4, 4, 2, 0, 0, 0, -8, 3, 5, 5, 1, 3, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -8, 7, 3, 3, 1, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -9, 3, 5, 7, 5, 7, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 3, 5, 3, 3, 3, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 2, 2, 2, 2, 2, 0, 0, -8, 5, 7, 5, 3, 5, 5, 4, 6, 4, 6, 6, 6, 4, 0, 0, -8, 5, 5, 5, 3, 3, 3, 4, 6, 2, 2, 2, 0, 0, 0, 0, -8, 3, 7, 5, 1, 5, 5, 2, 6, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 5, 5, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 2, 7, 2, 0, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 2, 6, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 3, 5, 5, 2, 7, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 2, 4, 4, 2, 0, 0, 0, -8, 7, 5, 7, 5, 5, 5, 4, 4, 2, 6, 4, 2, 2, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 6, 2, 4, 4, 2, 2, 0, 0, -8, 5, 5, 5, 3, 3, 5, 2, 2, 2, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 1, 3, 3, 4, 2, 2, 6, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 5, 5, 4, 4, 2, 4, 4, 2, 2, 0, 0, -9, 7, 5, 5, 3, 3, 5, 2, 4, 2, 2, 6, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 5, 5, 2, 4, 2, 2, 2, 2, 2, 0, 0, -8, 7, 5, 5, 5, 5, 5, 2, 4, 4, 4, 4, 0, 2, 0, 0, -8, 5, 5, 5, 5, 5, 7, 4, 6, 7, 4, 2, 2, 2, 0, 0, -8, 7, 3, 3, 3, 3, 7, 6, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 7, 3, 7, 3, 5, 6, 4, 2, 2, 2, 0, 0, 0, 0, -8, 7, 5, 7, 3, 5, 5, 2, 4, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 3, 5, 3, 6, 4, 4, 4, 4, 2, 2, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 2, 2, 4, 4, 0, 0, 0, 0, -8, 5, 5, 5, 3, 3, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 1, 3, 5, 2, 6, 2, 4, 2, 2, 0, 0, 0, -8, 5, 3, 5, 3, 5, 5, 6, 2, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 7, 5, 7, 3, 5, 5, 4, 4, 4, 2, 4, 2, 2, 0, 0, -8, 5, 5, 3, 5, 5, 5, 6, 4, 4, 4, 4, 2, 2, 0, 0, -8, 7, 5, 3, 7, 7, 3, 4, 2, 4, 2, 2, 2, 2, 0, 0, -8, 5, 3, 5, 3, 5, 3, 2, 4, 6, 2, 2, 2, 0, 0, 0, -8, 7, 5, 3, 3, 5, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 3, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 2, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 6, 4, 2, 2, 0, 0, 0, 0, -8, 3, 3, 3, 3, 5, 3, 2, 4, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 3, 5, 7, 3, 7, 3, 4, 6, 4, 2, 2, 0, 0, 0, 0, -8, 5, 3, 5, 5, 5, 1, 4, 6, 2, 2, 0, 2, 0, 0, 0, -8, 3, 7, 3, 3, 3, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 2, 4, 4, 2, 2, 2, 2, 0, 0, -8, 5, 7, 5, 7, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 1, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 7, 7, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 7, 5, 5, 3, 5, 3, 6, 4, 6, 6, 2, 2, 0, 0, 0, -9, 7, 7, 3, 5, 7, 3, 4, 6, 6, 4, 2, 2, 0, 0, 0, -8, 3, 5, 3, 3, 3, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 3, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 1, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 3, 7, 5, 3, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 5, 5, 3, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 7, 7, 5, 5, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 7, 7, 5, 7, 4, 4, 6, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 7, 3, 5, 7, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 3, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 0, 0, 0, 0, -7, 5, 3, 3, 3, 3, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 4, 4, 4, 2, 4, 2, 2, 0, 0, -8, 7, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 7, 3, 3, 5, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 1, 3, 3, 2, 6, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 3, 3, 5, 3, 4, 4, 6, 2, 2, 2, 0, 0, 0, -8, 5, 7, 5, 3, 5, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 3, 7, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 6, 6, 4, 2, 4, 2, 2, 0, 0, -8, 5, 7, 7, 3, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 6, 4, 6, 2, 2, 2, 2, 0, 0, -8, 7, 7, 5, 5, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 5, 4, 4, 6, 2, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 3, 7, 4, 2, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 3, 5, 7, 5, 4, 6, 4, 6, 4, 2, 2, 0, 0, -9, 7, 7, 3, 5, 5, 5, 4, 6, 4, 6, 4, 2, 2, 0, 0, -9, 5, 7, 5, 7, 5, 5, 4, 4, 4, 4, 4, 2, 2, 0, 0, -9, 5, 5, 7, 5, 5, 5, 4, 6, 4, 6, 6, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 5, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 6, 2, 6, 2, 2, 2, 0, 0, -9, 5, 5, 7, 5, 5, 5, 6, 4, 6, 4, 4, 4, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 4, 4, 2, 6, 4, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 3, 5, 6, 6, 2, 4, 2, 0, 0, 0, 0, -9, 5, 7, 3, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 7, 7, 3, 6, 4, 4, 2, 4, 4, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 6, 2, 0, 0, 0, -9, 7, 5, 5, 5, 7, 5, 6, 2, 6, 4, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 7, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 7, 5, 5, 5, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 7, 3, 6, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 5, 1, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 1, 5, 3, 3, 4, 4, 4, 4, 2, 4, 0, 0, 0, -9, 7, 3, 3, 3, 5, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 7, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 3, 3, 3, 1, 3, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 5, 3, 6, 6, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 6, 4, 6, 2, 4, 2, 0, 0, -9, 7, 7, 5, 7, 7, 7, 4, 4, 4, 4, 6, 4, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 6, 4, 4, 2, 4, 2, 0, 0, -9, 5, 3, 3, 3, 5, 5, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 1, 5, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 2, 6, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 5, 3, 6, 6, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 1, 4, 4, 2, 2, 4, 2, 0, 0, 0, -9, 5, 3, 5, 3, 5, 3, 6, 6, 4, 2, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 7, 5, 7, 4, 4, 4, 2, 2, 2, 0, 0, -8, 7, 5, 5, 5, 7, 5, 6, 6, 4, 6, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 7, 5, 5, 5, 3, 3, 6, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 5, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 3, 1, 4, 2, 6, 2, 2, 0, 0, 0, 0, -8, 5, 5, 1, 5, 3, 1, 6, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 1, 6, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 7, 7, 3, 4, 6, 4, 2, 4, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 4, 6, 4, 2, 2, 0, 0, 0, -9, 3, 5, 5, 1, 3, 3, 4, 6, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 3, 1, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 3, 3, 3, 3, 3, 5, 4, 4, 2, 2, 2, 0, 2, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 5, 4, 4, 2, 4, 6, 2, 2, 0, 0, -9, 5, 5, 3, 3, 1, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 5, 2, 4, 2, 4, 4, 0, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 3, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 3, 3, 3, 3, 5, 3, 2, 4, 2, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 3, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 2, 2, 4, 4, 2, 0, 0, 0, -9, 5, 3, 5, 5, 5, 5, 4, 4, 2, 6, 6, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 4, 2, 2, 4, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 3, 5, 2, 2, 6, 2, 2, 0, 2, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 7, 7, 7, 4, 2, 4, 4, 0, 0, 0, 0, -9, 5, 3, 5, 3, 5, 3, 4, 2, 6, 4, 0, 2, 0, 0, 0, -9, 5, 3, 3, 5, 5, 3, 6, 2, 4, 6, 0, 2, 0, 0, 0, -8, 5, 3, 1, 3, 5, 5, 6, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 3, 5, 5, 6, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 1, 5, 3, 3, 5, 6, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 5, 5, 4, 6, 4, 4, 2, 4, 2, 0, 0, -9, 5, 7, 7, 5, 5, 5, 4, 4, 2, 6, 4, 2, 0, 0, 0, -9, 5, 7, 7, 5, 5, 3, 4, 6, 2, 2, 2, 2, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 6, 4, 6, 4, 2, 4, 0, 2, 0, -8, 5, 5, 5, 3, 5, 3, 6, 2, 4, 2, 0, 0, 0, 0, 0, -8, 3, 5, 3, 3, 5, 3, 6, 4, 2, 2, 0, 0, 0, 0, 0, -8, 5, 5, 3, 3, 1, 5, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 7, 3, 5, 5, 3, 4, 4, 4, 2, 0, 0, 0, 0, 0, -8, 5, 5, 3, 5, 3, 5, 6, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 7, 5, 5, 6, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 1, 5, 1, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -8, 5, 7, 5, 7, 5, 5, 4, 6, 2, 6, 4, 2, 2, 0, 0, -9, 5, 7, 5, 3, 7, 3, 6, 6, 6, 4, 4, 2, 2, 0, 0, -9, 7, 3, 3, 5, 3, 3, 6, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 5, 5, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 3, 5, 4, 2, 6, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -7, 5, 5, 5, 5, 5, 3, 4, 4, 2, 6, 4, 4, 2, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 6, 4, 4, 4, 2, 2, 0, 0, -9, 7, 5, 7, 5, 5, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 6, 4, 6, 2, 2, 2, 2, 0, 0, -8, 7, 7, 5, 5, 3, 5, 2, 6, 4, 2, 4, 2, 2, 0, 0, -8, 3, 7, 5, 5, 5, 3, 4, 4, 6, 2, 0, 0, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 4, 6, 4, 2, 2, 2, 0, 0, 0, -8, 3, 3, 5, 5, 3, 3, 4, 4, 4, 4, 4, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 1, 4, 4, 6, 2, 2, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 2, 7, 6, 4, 6, 4, 2, 0, 0, -8, 3, 7, 5, 3, 5, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 3, 5, 3, 5, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 6, 6, 4, 4, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 3, 3, 4, 6, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 7, 5, 5, 7, 4, 6, 4, 4, 4, 4, 2, 0, 0, -8, 5, 5, 5, 7, 1, 3, 2, 2, 4, 2, 4, 0, 0, 0, 0, -8, 5, 3, 3, 5, 1, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 2, 4, 2, 2, 2, 0, 0, -9, 5, 3, 5, 7, 5, 5, 2, 4, 2, 4, 4, 2, 0, 0, 0, -8, 3, 3, 3, 3, 3, 3, 2, 4, 4, 4, 0, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 4, 6, 6, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 6, 2, 6, 2, 0, 0, 0, -8, 5, 3, 7, 3, 1, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 4, 6, 4, 4, 4, 2, 0, 0, 0, -8, 7, 7, 7, 7, 5, 3, 6, 4, 6, 6, 2, 2, 0, 0, 0, -8, 5, 3, 5, 3, 5, 1, 6, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 5, 2, 4, 2, 2, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 2, 4, 4, 4, 2, 4, 2, 0, 0, -8, 5, 5, 5, 5, 3, 5, 4, 6, 4, 4, 4, 2, 0, 0, 0, -9, 5, 3, 5, 3, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 3, 5, 3, 3, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 3, 3, 3, 3, 3, 2, 2, 2, 4, 2, 2, 2, 0, 0, -8, 3, 5, 7, 3, 3, 3, 4, 4, 4, 2, 4, 2, 0, 0, 0, -8, 5, 3, 5, 3, 7, 1, 4, 6, 4, 4, 2, 2, 2, 0, 0, -8, 3, 3, 5, 3, 3, 5, 2, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 1, 1, 6, 2, 2, 4, 2, 2, 0, 0, 0, -8, 5, 3, 5, 5, 3, 5, 4, 6, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 6, 4, 6, 4, 2, 2, 4, 2, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 6, 6, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 7, 5, 6, 4, 6, 6, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 3, 3, 3, 3, 3, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 7, 5, 6, 4, 4, 6, 2, 0, 0, 0, 0, -9, 5, 7, 3, 5, 5, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 4, 6, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 5, 6, 4, 6, 2, 2, 4, 0, 0, 0, -9, 5, 5, 7, 5, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 3, 3, 3, 1, 5, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 3, 5, 3, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 2, 6, 4, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 6, 6, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 6, 6, 6, 4, 4, 0, 0, 0, 0, -8, 7, 5, 3, 5, 5, 3, 6, 6, 4, 4, 4, 2, 0, 0, 0, -9, 3, 5, 3, 3, 5, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 3, 5, 3, 1, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 3, 6, 6, 2, 6, 2, 0, 0, 0, 0, -9, 5, 5, 7, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 6, 4, 6, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 6, 2, 4, 4, 4, 2, 2, 0, 0, -9, 5, 3, 1, 3, 3, 3, 4, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 1, 5, 2, 4, 4, 2, 2, 2, 2, 0, 0, -8, 7, 5, 3, 3, 1, 5, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 4, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 6, 4, 2, 2, 2, 0, 0, -9, 5, 7, 3, 5, 5, 5, 4, 4, 4, 4, 4, 0, 2, 0, 0, -9, 3, 3, 3, 3, 3, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 3, 3, 3, 3, 1, 5, 2, 6, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 5, 3, 2, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 7, 3, 3, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 2, 2, 2, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 6, 2, 4, 4, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 4, 2, 4, 2, 2, 2, 0, 0, -9, 7, 7, 5, 5, 7, 3, 4, 6, 6, 4, 2, 2, 0, 0, 0, -9, 5, 7, 1, 3, 3, 3, 6, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 1, 3, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 3, 3, 1, 5, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 1, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 5, 2, 6, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 3, 3, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 7, 5, 4, 4, 6, 6, 2, 2, 0, 0, 0, -8, 3, 5, 5, 3, 5, 5, 2, 6, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 7, 6, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 7, 5, 7, 7, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 3, 5, 5, 5, 5, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 7, 5, 3, 6, 6, 6, 4, 2, 2, 2, 0, 0, -8, 5, 3, 3, 5, 5, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 7, 3, 5, 3, 5, 3, 4, 4, 2, 2, 0, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 7, 7, 5, 7, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 4, 4, 4, 4, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 5, 2, 4, 6, 2, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 5, 4, 4, 6, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 2, 6, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 6, 4, 2, 4, 2, 2, 0, 0, 0, -8, 7, 3, 3, 3, 5, 3, 2, 4, 6, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 4, 6, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 7, 5, 5, 1, 6, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 4, 2, 4, 4, 4, 2, 0, 0, 0, -9, 7, 7, 5, 3, 5, 3, 4, 4, 2, 4, 4, 2, 0, 0, 0, -9, 7, 3, 7, 3, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 7, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 3, 5, 3, 6, 4, 6, 6, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 4, 6, 6, 4, 2, 0, 0, 0, -8, 7, 3, 5, 5, 3, 1, 6, 4, 2, 2, 2, 2, 0, 0, 0, -8, 7, 3, 3, 3, 3, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 1, 5, 3, 4, 4, 2, 4, 4, 2, 0, 0, 0, -8, 5, 3, 5, 3, 3, 1, 4, 4, 2, 4, 2, 2, 2, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 2, 0, 0, -9, 7, 5, 7, 5, 7, 7, 7, 4, 4, 4, 4, 2, 2, 0, 0, -8, 5, 3, 3, 5, 5, 5, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 3, 5, 3, 3, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 5, 1, 2, 2, 2, 4, 4, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 1, 6, 6, 2, 2, 2, 4, 2, 0, 0, -8, 5, 5, 3, 5, 5, 5, 6, 6, 4, 4, 4, 4, 0, 0, 0, -9, 7, 5, 3, 5, 3, 5, 6, 4, 4, 6, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 7, 3, 6, 4, 6, 2, 2, 2, 2, 0, 0, -9, 5, 5, 7, 3, 3, 3, 4, 4, 4, 6, 4, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -8, 7, 3, 5, 3, 3, 3, 2, 4, 6, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 1, 5, 3, 2, 4, 4, 4, 0, 2, 2, 0, 0, -8, 7, 7, 3, 5, 5, 3, 2, 4, 2, 4, 2, 2, 2, 0, 0, -8, 7, 5, 3, 3, 3, 3, 2, 2, 2, 2, 4, 2, 2, 0, 0, -8, 5, 3, 3, 3, 3, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 1, 3, 5, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 3, 5, 5, 4, 6, 6, 4, 4, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 5, 3, 3, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 4, 2, 4, 4, 0, 0, 0, 0, -8, 5, 5, 3, 3, 1, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 4, 6, 2, 2, 4, 4, 2, 0, 0, -8, 5, 5, 5, 7, 5, 5, 7, 4, 4, 6, 4, 2, 2, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 5, 7, 2, 4, 2, 4, 4, 4, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 3, 1, 3, 6, 2, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 1, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 4, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 6, 6, 4, 2, 2, 2, 0, 0, -8, 3, 7, 3, 3, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 3, 3, 3, 5, 2, 6, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 7, 3, 3, 6, 6, 4, 2, 2, 0, 0, 0, 0, -9, 5, 7, 7, 5, 5, 3, 4, 4, 2, 4, 4, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 1, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 6, 6, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 5, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 6, 4, 6, 2, 0, 0, 0, 0, -9, 5, 5, 7, 5, 3, 5, 4, 2, 2, 2, 4, 2, 2, 0, 0, -9, 5, 5, 7, 5, 5, 3, 6, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 7, 3, 5, 1, 1, 6, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 7, 3, 3, 1, 1, 6, 2, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 4, 2, 2, 4, 4, 2, 0, 0, -9, 5, 7, 5, 5, 5, 3, 6, 6, 4, 4, 2, 4, 2, 0, 0, -9, 3, 3, 5, 5, 5, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 5, 1, 4, 2, 4, 4, 2, 4, 0, 0, 0, -9, 3, 3, 3, 3, 3, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 7, 5, 4, 2, 2, 6, 4, 2, 0, 0, 0, -9, 5, 7, 7, 5, 5, 7, 6, 4, 2, 4, 6, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 4, 2, 2, 2, 0, 2, 0, 0, -9, 5, 5, 5, 3, 1, 3, 6, 4, 2, 2, 2, 2, 0, 0, 0, -9, 3, 5, 3, 3, 1, 5, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 5, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 5, 1, 5, 5, 3, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 1, 5, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 1, 6, 4, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 7, 5, 7, 4, 4, 2, 6, 4, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 2, 2, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 7, 5, 5, 6, 2, 2, 4, 4, 4, 0, 0, 0, -9, 5, 5, 3, 3, 3, 5, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 5, 5, 6, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 7, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 7, 7, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 1, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 7, 7, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 1, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 7, 5, 5, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 3, 6, 2, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 3, 3, 5, 1, 6, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 3, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 4, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 5, 6, 4, 4, 6, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -8, 3, 5, 5, 5, 3, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -8, 7, 3, 5, 5, 3, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 1, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 7, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 7, 4, 2, 2, 6, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 4, 2, 2, 4, 4, 2, 0, 0, 0, -9, 5, 3, 3, 5, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -8, 3, 5, 3, 7, 3, 3, 6, 2, 2, 4, 2, 2, 0, 0, 0, -8, 7, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 2, 2, 4, 4, 2, 0, 0, 0, -8, 5, 5, 7, 5, 5, 5, 6, 6, 4, 7, 2, 2, 0, 0, 0, -9, 7, 7, 5, 3, 7, 3, 4, 2, 2, 4, 4, 2, 0, 0, 0, -9, 7, 5, 7, 5, 5, 3, 6, 4, 6, 4, 4, 4, 2, 0, 0, -8, 5, 5, 5, 5, 3, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 7, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 3, 5, 5, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 1, 3, 3, 1, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 7, 3, 5, 3, 3, 4, 2, 4, 4, 4, 4, 2, 0, 0, -8, 5, 7, 5, 5, 1, 3, 2, 2, 2, 2, 4, 2, 2, 0, 0, -8, 5, 5, 1, 3, 5, 1, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 7, 3, 3, 5, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -8, 3, 5, 5, 3, 5, 3, 6, 2, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 1, 3, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 7, 7, 5, 5, 3, 2, 6, 2, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 6, 2, 4, 2, 0, 0, 0, 0, -8, 7, 7, 3, 3, 3, 3, 4, 2, 2, 2, 4, 2, 0, 0, 0, -8, 7, 5, 3, 3, 5, 1, 6, 2, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 3, 7, 7, 3, 6, 6, 6, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 1, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 3, 3, 3, 1, 3, 3, 2, 2, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 1, 5, 2, 4, 2, 4, 2, 2, 2, 0, 0, -8, 3, 5, 3, 3, 1, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 1, 3, 3, 3, 2, 4, 2, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 7, 3, 5, 4, 4, 4, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 4, 4, 4, 2, 2, 0, 0, -8, 7, 5, 1, 3, 3, 3, 4, 4, 2, 6, 2, 0, 0, 0, 0, -8, 3, 3, 5, 3, 3, 3, 6, 2, 4, 4, 4, 0, 0, 0, 0, -8, 3, 5, 7, 5, 3, 3, 4, 2, 6, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 5, 5, 4, 2, 4, 4, 0, 0, 0, 0, 0, -8, 7, 5, 3, 3, 3, 1, 4, 2, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 6, 2, 4, 4, 4, 2, 2, 0, 0, -9, 7, 5, 5, 3, 5, 5, 4, 6, 6, 2, 4, 2, 2, 0, 0, -8, 7, 7, 7, 5, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 3, 5, 6, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 5, 3, 3, 3, 4, 4, 6, 2, 2, 0, 0, 0, 0, -8, 7, 5, 3, 3, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 7, 7, 5, 5, 6, 4, 4, 4, 2, 4, 2, 0, 0, -8, 7, 3, 7, 3, 5, 3, 6, 6, 4, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -8, 7, 7, 7, 5, 5, 7, 6, 4, 4, 6, 6, 2, 0, 0, 0, -8, 7, 7, 3, 5, 3, 3, 6, 4, 2, 2, 4, 2, 0, 0, 0, -8, 5, 7, 5, 5, 3, 1, 6, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 3, 3, 6, 6, 2, 2, 2, 2, 0, 0, 0, -9, 7, 7, 5, 3, 3, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 3, 7, 5, 5, 4, 6, 2, 2, 2, 0, 0, 0, 0, -9, 5, 7, 5, 3, 1, 3, 6, 4, 2, 2, 2, 2, 0, 0, 0, -8, 7, 7, 7, 3, 1, 3, 4, 6, 4, 2, 2, 0, 0, 0, 0, -9, 5, 7, 7, 5, 5, 3, 4, 4, 4, 4, 4, 0, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 6, 2, 6, 2, 2, 2, 0, 0, -9, 5, 5, 7, 3, 5, 3, 4, 6, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 7, 5, 3, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 3, 3, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 7, 5, 5, 5, 4, 6, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 6, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 7, 3, 3, 3, 5, 6, 6, 2, 2, 4, 2, 0, 0, 0, -8, 3, 7, 5, 3, 5, 3, 4, 4, 2, 2, 4, 0, 0, 0, 0, -8, 5, 7, 7, 5, 5, 5, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 2, 4, 6, 4, 2, 0, 0, -8, 5, 7, 5, 3, 5, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 6, 4, 4, 4, 2, 2, 0, 0, -8, 7, 3, 5, 3, 3, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 7, 5, 6, 4, 4, 4, 2, 2, 2, 0, 0, -8, 7, 3, 3, 3, 3, 3, 4, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 5, 3, 3, 6, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 7, 5, 5, 5, 4, 6, 4, 4, 6, 0, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 1, 3, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 4, 4, 2, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 7, 5, 4, 6, 6, 4, 4, 0, 0, 0, 0, -9, 5, 3, 5, 3, 7, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 1, 5, 5, 5, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 7, 3, 3, 3, 6, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 1, 3, 5, 3, 2, 6, 4, 4, 2, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 4, 2, 4, 6, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 7, 4, 2, 4, 6, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 1, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 3, 5, 5, 5, 4, 6, 6, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 3, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 6, 2, 2, 2, 2, 2, 2, 0, 0, -9, 3, 5, 3, 5, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 7, 5, 3, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 3, 5, 3, 5, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 3, 3, 5, 3, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 7, 3, 5, 3, 1, 6, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 5, 5, 4, 2, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 1, 3, 6, 2, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 5, 6, 4, 4, 4, 4, 2, 0, 0, 0, -9, 3, 5, 3, 5, 1, 5, 2, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 5, 3, 2, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 3, 5, 5, 3, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 7, 5, 2, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 3, 3, 3, 5, 5, 4, 4, 4, 6, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 7, 5, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 6, 6, 4, 6, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 1, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 3, 5, 3, 5, 3, 3, 4, 2, 2, 6, 2, 2, 2, 0, 0, -8, 5, 5, 3, 5, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 1, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 3, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 5, 5, 2, 2, 2, 4, 4, 0, 0, 0, 0, -8, 3, 5, 5, 7, 7, 3, 4, 4, 2, 6, 2, 2, 0, 2, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 6, 6, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 5, 5, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 2, 2, 2, 2, 4, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 7, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 3, 5, 3, 5, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 2, 2, 4, 4, 2, 0, 0, 0, -9, 5, 5, 7, 5, 7, 7, 6, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 1, 3, 5, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 5, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 7, 3, 3, 3, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 3, 5, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 3, 5, 3, 5, 3, 5, 6, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 6, 4, 6, 4, 2, 4, 2, 0, 0, -9, 5, 7, 3, 3, 3, 5, 6, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 1, 7, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 7, 5, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 7, 5, 7, 3, 5, 4, 2, 2, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 3, 5, 6, 2, 2, 6, 4, 2, 0, 0, 0, -9, 5, 5, 7, 3, 3, 5, 4, 4, 7, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 3, 1, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 7, 5, 3, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 7, 5, 5, 6, 2, 6, 6, 2, 2, 0, 0, 0, -9, 7, 5, 3, 3, 5, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 7, 5, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 6, 6, 4, 4, 2, 2, 0, 0, -9, 7, 1, 3, 3, 3, 3, 2, 4, 2, 6, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -8, 3, 5, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 5, 5, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 3, 3, 3, 5, 5, 5, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 6, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 4, 6, 4, 2, 0, 0, 0, -9, 7, 3, 5, 3, 5, 5, 4, 6, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 2, 4, 2, 2, 2, 0, 2, 0, 0, -9, 5, 3, 3, 1, 5, 1, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 3, 2, 2, 4, 6, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 3, 5, 5, 5, 4, 2, 6, 4, 2, 2, 0, 0, 0, -9, 7, 3, 5, 3, 5, 3, 4, 2, 2, 6, 2, 0, 0, 0, 0, -8, 3, 5, 3, 3, 3, 5, 4, 2, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 2, 2, 4, 2, 0, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 2, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 7, 3, 6, 6, 4, 6, 4, 0, 0, 0, 0, -8, 7, 7, 5, 5, 3, 5, 6, 6, 4, 2, 2, 2, 2, 0, 0, -8, 7, 5, 5, 3, 5, 5, 6, 6, 4, 6, 4, 0, 2, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 2, 6, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 4, 6, 4, 6, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 2, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 4, 0, 0, 0, 0, -9, 7, 5, 3, 5, 7, 3, 6, 4, 2, 6, 4, 0, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 4, 6, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 7, 3, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 4, 2, 6, 2, 2, 0, 0, -8, 7, 7, 5, 7, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 3, 5, 5, 5, 7, 3, 4, 2, 6, 2, 2, 0, 0, 0, 0, -9, 5, 3, 3, 5, 5, 3, 6, 2, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 7, 4, 4, 4, 4, 4, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 6, 2, 4, 6, 2, 2, 0, 0, -8, 7, 3, 3, 5, 3, 1, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 3, 3, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 3, 5, 5, 4, 6, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 7, 2, 6, 6, 6, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 7, 7, 5, 5, 6, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 5, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 2, 2, 6, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 7, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 3, 3, 3, 3, 3, 5, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 1, 3, 5, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 2, 4, 4, 2, 4, 2, 0, 0, 0, -9, 7, 5, 5, 7, 5, 5, 6, 4, 4, 6, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 6, 2, 6, 2, 2, 2, 0, 0, -8, 5, 3, 3, 1, 1, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 3, 7, 3, 3, 3, 3, 4, 2, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 5, 3, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 1, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 7, 3, 3, 1, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 7, 3, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 7, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 7, 5, 5, 2, 2, 6, 4, 2, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 5, 6, 4, 2, 6, 4, 2, 0, 0, 0, -9, 7, 7, 3, 5, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 7, 5, 5, 4, 2, 4, 6, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 3, 5, 1, 3, 5, 1, 4, 2, 2, 4, 2, 2, 0, 0, 0, -8, 3, 3, 5, 3, 5, 1, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 2, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 7, 7, 5, 5, 5, 4, 6, 4, 4, 4, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 7, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 7, 7, 5, 7, 3, 3, 6, 4, 4, 4, 2, 2, 4, 0, 0, -9, 7, 5, 5, 7, 5, 3, 4, 4, 4, 6, 2, 2, 2, 0, 0, -8, 5, 5, 3, 5, 3, 3, 4, 2, 2, 6, 2, 0, 0, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 2, 2, 4, 4, 2, 0, 0, 0, -9, 7, 5, 1, 5, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -8, 5, 7, 3, 5, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 7, 7, 3, 7, 4, 4, 4, 4, 0, 0, 0, 0, -8, 5, 7, 3, 3, 3, 5, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 3, 5, 5, 3, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 7, 5, 5, 5, 6, 4, 2, 6, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 7, 4, 6, 6, 2, 2, 0, 0, 0, -8, 5, 3, 3, 5, 3, 3, 6, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 7, 7, 5, 7, 4, 6, 6, 2, 4, 4, 4, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 4, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 5, 2, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 7, 2, 4, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 3, 3, 5, 4, 4, 4, 2, 4, 0, 0, 0, 0, -8, 7, 5, 3, 3, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 4, 6, 2, 2, 0, 0, 0, -8, 7, 3, 3, 3, 1, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 6, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 5, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -8, 7, 3, 3, 7, 1, 3, 2, 4, 2, 4, 2, 0, 0, 0, 0, -8, 7, 5, 3, 3, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 3, 3, 5, 1, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 7, 4, 2, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 4, 2, 2, 4, 2, 4, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 6, 2, 2, 4, 4, 2, 2, 0, 0, -9, 7, 7, 3, 1, 3, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 5, 7, 5, 3, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 3, 5, 7, 4, 4, 4, 4, 4, 2, 2, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 5, 5, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 3, 5, 3, 7, 3, 5, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 1, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 3, 5, 3, 5, 1, 1, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 4, 4, 4, 2, 4, 4, 2, 0, 0, -8, 5, 5, 5, 7, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 3, 3, 5, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 1, 3, 3, 3, 2, 4, 6, 4, 2, 0, 0, 0, 0, -9, 5, 7, 3, 5, 1, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 7, 5, 5, 4, 4, 4, 4, 2, 4, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 6, 6, 4, 6, 4, 4, 2, 0, 0, -9, 5, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 2, 2, 2, 2, 4, 0, 0, 0, 0, -8, 5, 3, 5, 5, 5, 5, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 5, 3, 4, 4, 2, 2, 0, 0, 0, 0, 0, -9, 5, 5, 7, 7, 5, 3, 6, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 4, 4, 6, 4, 0, 0, 0, 0, -9, 5, 5, 3, 3, 5, 5, 4, 2, 2, 2, 4, 2, 0, 0, 0, -9, 7, 3, 5, 3, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -8, 5, 3, 5, 3, 5, 1, 6, 6, 4, 2, 2, 2, 2, 0, 0, -8, 5, 3, 3, 3, 1, 3, 2, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 1, 3, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 1, 4, 6, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 5, 1, 2, 6, 2, 2, 4, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 6, 4, 6, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 6, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 3, 5, 4, 6, 2, 2, 2, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 7, 3, 4, 4, 6, 6, 2, 2, 0, 0, 0, -9, 7, 5, 5, 3, 1, 5, 4, 6, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 7, 6, 4, 4, 4, 4, 2, 2, 0, 0, -8, 7, 5, 7, 5, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 7, 6, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 3, 7, 5, 5, 5, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 5, 3, 7, 5, 3, 5, 6, 2, 4, 2, 2, 0, 0, 0, 0, -9, 3, 3, 5, 5, 3, 5, 7, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 7, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 4, 2, 2, 4, 2, 0, 0, 0, -9, 7, 7, 7, 5, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 7, 5, 7, 7, 7, 7, 4, 2, 4, 2, 2, 2, 0, -9, 5, 3, 5, 5, 3, 3, 6, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 3, 3, 1, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 3, 3, 1, 4, 2, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 6, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 7, 5, 7, 5, 3, 4, 2, 2, 4, 2, 2, 2, 0, 0, -8, 7, 7, 5, 5, 7, 3, 4, 6, 4, 4, 4, 2, 0, 0, 0, -9, 7, 5, 3, 5, 3, 5, 6, 4, 2, 4, 2, 0, 0, 0, 0, -8, 7, 3, 3, 5, 3, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 5, 3, 1, 5, 3, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 3, 2, 6, 4, 2, 0, 2, 0, 0, 0, -8, 5, 3, 7, 5, 5, 5, 4, 4, 4, 2, 4, 2, 2, 0, 0, -8, 5, 7, 5, 7, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 7, 7, 6, 6, 4, 4, 2, 2, 0, 0, -8, 3, 5, 5, 5, 3, 5, 4, 2, 6, 4, 4, 2, 2, 0, 0, -8, 7, 5, 3, 7, 5, 5, 6, 6, 6, 4, 6, 2, 0, 0, 0, -9, 3, 5, 5, 7, 5, 5, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 4, 6, 6, 6, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 3, 6, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 2, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 7, 5, 5, 4, 4, 4, 4, 4, 4, 2, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 4, 4, 2, 2, 4, 2, 0, 0, -8, 5, 3, 1, 5, 5, 3, 7, 4, 2, 6, 4, 2, 2, 0, 0, -9, 5, 5, 3, 5, 1, 3, 2, 4, 4, 2, 2, 2, 2, 0, 0, -8, 3, 3, 3, 5, 3, 1, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 3, 7, 3, 3, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 4, 6, 4, 6, 2, 0, 0, 0, 0, -9, 3, 7, 5, 5, 3, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 5, 7, 7, 7, 3, 5, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 7, 6, 2, 6, 2, 4, 0, 0, 0, 0, -9, 3, 3, 5, 3, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 1, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 6, 2, 2, 2, 2, 0, 0, 0, 0, -9, 3, 7, 3, 1, 3, 3, 6, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 7, 3, 3, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 7, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 7, 5, 6, 2, 4, 2, 4, 2, 0, 0, 0, -8, 5, 3, 5, 3, 5, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 3, 3, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 3, 5, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 1, 4, 6, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 7, 5, 3, 1, 2, 6, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 6, 4, 2, 4, 2, 0, 0, 0, -8, 7, 5, 5, 7, 3, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 3, 1, 3, 3, 3, 4, 2, 2, 6, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 7, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 4, 0, 0, 0, -8, 5, 5, 7, 3, 5, 7, 6, 6, 6, 6, 4, 2, 2, 0, 0, -8, 5, 3, 7, 7, 5, 3, 7, 6, 2, 4, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 5, 3, 4, 2, 2, 4, 4, 2, 0, 0, 0, -9, 5, 3, 1, 5, 3, 1, 2, 4, 2, 4, 4, 0, 0, 0, 0, -9, 5, 5, 7, 5, 5, 5, 4, 6, 4, 4, 4, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 2, 4, 2, 4, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 1, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 5, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 7, 7, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 7, 3, 3, 6, 4, 4, 6, 4, 2, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 4, 4, 2, 6, 2, 2, 2, 0, 0, -8, 5, 5, 5, 3, 5, 7, 4, 6, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 6, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 5, 5, 6, 6, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 1, 3, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 5, 5, 3, 5, 6, 6, 2, 4, 4, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 6, 4, 4, 4, 2, 2, 2, 0, -9, 5, 7, 3, 5, 7, 3, 4, 4, 4, 2, 4, 0, 0, 0, 0, -9, 7, 5, 3, 3, 3, 5, 6, 4, 2, 2, 2, 0, 0, 0, 0, -8, 7, 7, 5, 3, 3, 3, 6, 6, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 7, 7, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 6, 6, 6, 6, 4, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 7, 3, 3, 1, 3, 1, 4, 6, 2, 2, 0, 2, 0, 0, 0, -9, 7, 5, 7, 3, 3, 5, 6, 6, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 7, 5, 3, 5, 6, 4, 2, 2, 2, 0, 0, 0, 0, -8, 7, 5, 7, 7, 7, 5, 4, 6, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 4, 6, 6, 2, 2, 2, 0, 0, -9, 5, 3, 7, 5, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 3, 3, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -8, 5, 3, 5, 3, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 3, 3, 3, 3, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 5, 4, 2, 2, 2, 4, 0, 0, 0, 0, -9, 7, 5, 5, 5, 7, 7, 4, 6, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 7, 5, 3, 5, 6, 4, 2, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 6, 4, 4, 4, 2, 0, 0, 0, -9, 8, 5, 7, 3, 7, 5, 2, 6, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 6, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 6, 2, 2, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 4, 6, 4, 6, 4, 2, 2, 0, 0, -8, 7, 7, 3, 3, 1, 5, 6, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 1, 3, 6, 2, 4, 4, 2, 0, 0, 0, 0, -8, 5, 7, 3, 5, 3, 3, 6, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 3, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 7, 7, 3, 3, 3, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 5, 3, 4, 6, 2, 6, 4, 0, 0, 0, 0, -9, 7, 5, 5, 3, 7, 3, 4, 6, 4, 4, 4, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 2, 2, 4, 4, 2, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 4, 4, 4, 6, 4, 2, 0, 0, 0, -9, 5, 3, 5, 7, 5, 7, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 7, 3, 5, 3, 2, 4, 2, 6, 4, 2, 2, 0, 0, -9, 7, 3, 3, 3, 3, 5, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 3, 3, 3, 5, 3, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 3, 1, 5, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 7, 3, 5, 3, 5, 2, 6, 2, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 7, 5, 3, 7, 4, 6, 4, 4, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 7, 6, 4, 6, 2, 2, 4, 0, 0, 0, -9, 3, 5, 5, 3, 3, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 7, 6, 4, 4, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 3, 7, 3, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 1, 6, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 4, 0, 0, 0, 0, -9, 5, 5, 3, 7, 5, 5, 6, 4, 4, 4, 4, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 6, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 7, 3, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 3, 5, 1, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 2, 6, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 5, 7, 3, 5, 4, 4, 6, 6, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 3, 5, 6, 4, 6, 2, 6, 2, 0, 0, 0, -9, 5, 5, 3, 3, 1, 5, 2, 4, 2, 4, 2, 0, 0, 0, 0, -8, 3, 3, 3, 5, 3, 5, 2, 6, 4, 2, 2, 0, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 7, 5, 5, 6, 2, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 3, 5, 5, 1, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 5, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 3, 3, 5, 3, 5, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 2, 4, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 3, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 7, 5, 5, 4, 4, 6, 6, 4, 2, 2, 0, 0, -9, 8, 7, 5, 7, 5, 5, 6, 4, 2, 6, 2, 2, 0, 0, 0, -8, 8, 5, 5, 7, 5, 5, 4, 2, 2, 6, 2, 2, 0, 0, 0, -8, 7, 3, 5, 7, 5, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 5, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 8, 3, 3, 5, 3, 1, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 2, 2, 4, 2, 2, 2, 2, 0, 0, -8, 7, 5, 5, 5, 5, 1, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 5, 3, 1, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 3, 1, 5, 1, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 5, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 1, 5, 5, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 2, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 7, 5, 5, 4, 4, 4, 6, 2, 4, 2, 0, 0, -9, 8, 5, 3, 7, 5, 5, 6, 2, 4, 6, 2, 2, 0, 0, 0, -9, 8, 3, 3, 7, 5, 1, 4, 4, 2, 4, 0, 0, 0, 0, 0, -9, 8, 5, 3, 7, 5, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 1, 2, 2, 4, 2, 0, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 5, 5, 5, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 1, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 1, 1, 5, 5, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 5, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 7, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 3, 1, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 8, 3, 3, 3, 3, 1, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 8, 5, 3, 7, 5, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 5, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 1, 5, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 3, 1, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 3, 1, 1, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 1, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 2, 0, 0, -9, 8, 5, 5, 7, 5, 5, 7, 2, 4, 6, 2, 2, 0, 0, 0, -9, 8, 3, 5, 7, 5, 5, 4, 2, 2, 6, 2, 2, 0, 0, 0, -9, 8, 3, 5, 7, 5, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 1, 1, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 1, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 2, 4, 2, 0, 0, 0, 0, 0, -9, 7, 5, 3, 7, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 8, 5, 3, 7, 5, 3, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 8, 3, 5, 7, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 3, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 1, 5, 3, 3, 2, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 3, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 1, 3, 5, 1, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 1, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 5, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 5, 5, 4, 4, 6, 4, 2, 2, 2, 0, 0, -8, 7, 5, 5, 7, 7, 5, 6, 2, 2, 4, 2, 2, 2, 0, 0, -8, 7, 3, 5, 7, 5, 3, 2, 2, 4, 6, 2, 2, 0, 0, 0, -8, 8, 5, 5, 7, 5, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 3, 1, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 7, 5, 1, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 8, 5, 3, 7, 7, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 5, 5, 4, 4, 6, 6, 2, 2, 2, 0, 0, -9, 8, 5, 5, 7, 5, 5, 4, 2, 4, 6, 2, 2, 0, 0, 0, -9, 7, 5, 5, 3, 1, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 1, 3, 3, 1, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 1, 5, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 8, 5, 3, 7, 7, 3, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 7, 3, 3, 4, 2, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 3, 5, 3, 3, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 1, 3, 5, 5, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 4, 4, 0, 0, -9, 7, 5, 5, 7, 5, 5, 6, 2, 4, 6, 2, 2, 2, 0, 0, -9, 7, 5, 3, 5, 3, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 1, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 1, 3, 7, 3, 3, 4, 4, 2, 2, 2, 0, 2, 0, 0, -9, 7, 3, 5, 5, 5, 5, 2, 4, 4, 2, 0, 0, 0, 0, 0, -9, 5, 3, 5, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 8, 5, 3, 5, 5, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 8, 3, 3, 3, 3, 1, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 5, 1, 2, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 3, 2, 4, 2, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 7, 5, 5, 4, 2, 4, 6, 2, 6, 0, 0, 0, -9, 7, 3, 5, 5, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 1, 5, 3, 1, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 1, 5, 1, 1, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 7, 5, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 1, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 1, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 1, 5, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 8, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 1, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 1, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 5, 5, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 7, 3, 1, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 5, 1, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 2, 2, 4, 2, 2, 2, 0, 0, -9, 7, 3, 1, 5, 3, 1, 2, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 1, 3, 3, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 5, 3, 2, 4, 4, 2, 2, 4, 2, 0, 0, -9, 8, 7, 5, 7, 7, 5, 6, 4, 4, 6, 2, 4, 0, 0, 0, -9, 8, 5, 3, 7, 5, 5, 6, 2, 4, 6, 2, 0, 0, 0, 0, -9, 8, 7, 3, 7, 3, 3, 6, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 7, 3, 3, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 5, 5, 3, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 5, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 7, 5, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 8, 3, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 7, 3, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 1, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 7, 1, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 7, 1, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 1, 3, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 1, 5, 1, 1, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 1, 5, 1, 1, 2, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 2, 4, 4, 4, 4, 2, 0, 0, -9, 8, 5, 5, 7, 7, 5, 6, 4, 6, 6, 2, 2, 0, 0, 0, -9, 5, 5, 1, 5, 5, 3, 2, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 1, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 7, 3, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 7, 5, 7, 5, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 5, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 8, 5, 3, 5, 5, 3, 2, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 5, 3, 6, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 1, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 1, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 5, 3, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 3, 1, 4, 6, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 5, 5, 4, 2, 2, 4, 4, 4, 0, 0, 0, -9, 8, 5, 3, 5, 5, 7, 6, 6, 4, 6, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 1, 3, 5, 1, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 1, 7, 3, 1, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 5, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 3, 5, 7, 7, 5, 6, 2, 4, 6, 4, 4, 0, 0, 0, -9, 8, 5, 5, 7, 5, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -9, 7, 3, 1, 5, 3, 1, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 3, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 1, 3, 5, 3, 1, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 5, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 5, 5, 5, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 1, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 1, 2, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 3, 5, 3, 1, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 5, 1, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 5, 1, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 1, 5, 1, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 7, 5, 4, 4, 6, 6, 2, 2, 0, 0, 0, -9, 8, 5, 5, 5, 5, 5, 4, 2, 4, 6, 2, 2, 0, 0, 0, -9, 8, 5, 3, 7, 7, 5, 2, 4, 4, 6, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 5, 3, 2, 2, 2, 4, 0, 0, 0, 0, 0, -9, 8, 5, 3, 5, 1, 1, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 8, 5, 3, 5, 5, 1, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 5, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 3, 3, 5, 5, 3, 2, 2, 2, 4, 0, 0, 0, 0, 0, -8, 7, 3, 3, 5, 1, 3, 2, 4, 2, 2, 0, 0, 0, 0, 0, -9, 7, 3, 1, 5, 3, 1, 4, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 3, 3, 3, 5, 1, 2, 4, 4, 2, 2, 0, 0, 0, 0, -8, 7, 3, 3, 5, 1, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 7, 5, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 8, 5, 3, 5, 3, 1, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 5, 7, 5, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 5, 1, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 3, 1, 5, 5, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 7, 7, 5, 6, 2, 6, 6, 2, 4, 0, 0, 0, -9, 7, 3, 3, 5, 3, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 1, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 4, 2, 4, 4, 0, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 1, 7, 3, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 7, 1, 3, 2, 2, 2, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 7, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 7, 3, 1, 4, 4, 4, 2, 4, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 1, 5, 1, 1, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 3, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 1, 3, 1, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 1, 5, 3, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 2, 2, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 7, 7, 5, 6, 2, 4, 6, 2, 2, 2, 0, 0, -9, 7, 5, 1, 5, 3, 1, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 3, 5, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 1, 3, 5, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 7, 5, 3, 4, 4, 2, 4, 2, 2, 2, 0, 0, -9, 7, 5, 3, 5, 5, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 8, 3, 5, 7, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 7, 3, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 8, 3, 1, 5, 3, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 5, 3, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 8, 5, 3, 7, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 8, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 5, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 8, 3, 5, 7, 5, 3, 4, 4, 2, 2, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 8, 5, 3, 5, 5, 3, 6, 2, 4, 6, 2, 2, 2, 0, 0, -9, 8, 5, 1, 7, 5, 3, 2, 2, 4, 2, 2, 2, 2, 0, 0, -9, 8, 5, 3, 7, 3, 3, 4, 4, 6, 6, 2, 0, 0, 0, 0, -9, 7, 3, 5, 7, 3, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 1, 1, 5, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 1, 3, 3, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 7, 3, 7, 5, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 1, 1, 5, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 3, 5, 2, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 1, 1, 3, 3, 1, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 1, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 1, 5, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 1, 5, 3, 1, 2, 2, 2, 2, 4, 2, 0, 0, 0, -9, 7, 3, 5, 7, 3, 3, 2, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 4, 4, 2, 2, 4, 2, 0, 0, -9, 5, 5, 5, 7, 3, 3, 4, 4, 2, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 5, 3, 3, 5, 3, 3, 6, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 1, 5, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 5, 2, 4, 6, 6, 4, 4, 0, 0, 0, -9, 8, 3, 5, 7, 7, 5, 6, 4, 6, 4, 4, 2, 0, 0, 0, -9, 8, 3, 5, 7, 5, 5, 2, 4, 4, 6, 2, 0, 0, 0, 0, -9, 8, 3, 5, 5, 3, 5, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 3, 1, 5, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 1, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 3, 5, 7, 5, 3, 2, 2, 6, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 3, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 5, 7, 3, 1, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 6, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 7, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 3, 5, 5, 3, 3, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 3, 5, 3, 3, 3, 1, 2, 4, 2, 2, 0, 0, 0, 0, 0, -9, 5, 3, 3, 5, 3, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 7, 5, 5, 4, 4, 6, 4, 2, 4, 2, 0, 0, -9, 8, 7, 3, 7, 7, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 8, 3, 5, 7, 7, 5, 4, 4, 6, 6, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 5, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 1, 1, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 4, 2, 2, 4, 2, 0, 2, 0, 0, -9, 7, 3, 3, 5, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 8, 3, 3, 5, 3, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 0, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 3, 3, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 1, 3, 5, 3, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 5, 3, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 5, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 1, 6, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 7, 5, 1, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 4, 2, 2, 0, 0, -9, 7, 5, 3, 7, 7, 5, 6, 2, 4, 6, 4, 2, 2, 0, 0, -9, 8, 5, 3, 5, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 8, 5, 5, 5, 5, 5, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 8, 3, 3, 5, 3, 3, 2, 4, 2, 4, 0, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 1, 3, 5, 1, 3, 2, 2, 2, 2, 2, 0, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 8, 5, 3, 7, 7, 5, 6, 4, 4, 6, 2, 2, 2, 0, 0, -9, 7, 3, 1, 7, 5, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 4, 2, 4, 4, 2, 2, 2, 0, 0, -9, 7, 3, 5, 5, 5, 3, 6, 2, 4, 2, 4, 2, 2, 0, 0, -9, 8, 5, 5, 3, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 5, 5, 4, 4, 4, 6, 4, 4, 2, 0, 0, -9, 8, 5, 7, 7, 7, 5, 4, 2, 6, 4, 2, 2, 0, 0, 0, -9, 8, 5, 5, 7, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 1, 3, 4, 2, 2, 4, 0, 0, 0, 0, 0, -9, 7, 3, 1, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 3, 5, 5, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 7, 3, 1, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 5, 7, 5, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 3, 5, 5, 7, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 3, 5, 2, 4, 4, 2, 4, 4, 2, 0, 0, -9, 7, 3, 3, 7, 5, 5, 2, 4, 6, 4, 4, 4, 2, 0, 0, -9, 7, 3, 1, 7, 5, 5, 2, 2, 4, 4, 2, 2, 2, 0, 0, -9, 8, 5, 5, 7, 3, 5, 2, 6, 6, 4, 0, 0, 0, 0, 0, -9, 8, 5, 3, 7, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 5, 5, 1, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 7, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 5, 5, 1, 4, 6, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 2, 2, 6, 2, 2, 2, 0, 0, 0, -9, 7, 5, 7, 7, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 8, 5, 3, 7, 7, 7, 4, 2, 6, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 3, 1, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 1, 3, 3, 3, 2, 2, 6, 2, 2, 2, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 8, 5, 3, 7, 5, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 3, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 7, 3, 5, 7, 5, 7, 2, 4, 6, 4, 2, 4, 0, 0, 0, -8, 7, 3, 5, 7, 5, 5, 4, 2, 6, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 2, 2, 2, 2, 0, 2, 2, 0, 0, -9, 5, 3, 1, 5, 3, 1, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 3, 5, 1, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 8, 3, 5, 7, 5, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 7, 3, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 3, 1, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 8, 7, 3, 7, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 6, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 1, 3, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 3, 1, 1, 4, 4, 2, 4, 2, 2, 2, 0, 0, -9, 5, 3, 1, 5, 1, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 1, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 8, 1, 3, 7, 1, 1, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 7, 3, 3, 5, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 7, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 5, 7, 5, 5, 4, 4, 6, 6, 2, 2, 0, 0, 0, -9, 7, 3, 5, 7, 5, 5, 4, 4, 6, 6, 0, 0, 0, 0, 0, -8, 8, 5, 3, 7, 3, 5, 2, 4, 4, 4, 0, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 5, 7, 3, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 7, 1, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 3, 1, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 8, 3, 3, 5, 3, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 3, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 5, 3, 5, 3, 3, 3, 4, 2, 4, 4, 2, 0, 2, 0, 0, -9, 5, 3, 5, 5, 3, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -8, 7, 5, 3, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -8, 5, 3, 5, 3, 3, 1, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 5, 3, 3, 1, 4, 4, 2, 2, 2, 0, 0, 0, 0, -8, 7, 5, 3, 5, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 3, 5, 7, 5, 5, 4, 4, 6, 6, 4, 2, 0, 0, 0, -9, 8, 5, 5, 7, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 8, 5, 5, 7, 3, 5, 0, 4, 4, 6, 0, 0, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 0, 2, 0, 0, -9, 7, 5, 3, 3, 5, 1, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 8, 5, 5, 7, 5, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 2, 4, 4, 2, 0, 2, 0, 0, 0, -9, 7, 5, 3, 3, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 7, 3, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 8, 3, 5, 5, 3, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 8, 5, 3, 5, 3, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 7, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 7, 7, 1, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 2, 4, 2, 4, 2, 2, 2, 0, 0, -9, 7, 3, 5, 7, 7, 5, 4, 2, 4, 4, 4, 4, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 1, 7, 1, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 7, 5, 1, 2, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 8, 3, 3, 5, 1, 3, 2, 2, 4, 4, 0, 0, 0, 0, 0, -9, 7, 1, 3, 3, 3, 5, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 3, 3, 6, 4, 2, 4, 2, 2, 2, 0, 0, -9, 7, 3, 1, 5, 3, 1, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 5, 5, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 7, 5, 4, 4, 6, 4, 4, 2, 2, 0, 0, -9, 8, 5, 7, 7, 7, 5, 6, 6, 4, 4, 2, 2, 2, 0, 0, -9, 7, 3, 3, 7, 3, 3, 2, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 1, 3, 3, 3, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 5, 3, 2, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 3, 5, 5, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 7, 1, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 1, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 3, 3, 5, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 8, 3, 5, 7, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 1, 6, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 1, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 7, 1, 4, 2, 4, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 4, 4, 2, 0, 2, 0, 0, -9, 3, 3, 3, 3, 3, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 5, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 7, 7, 2, 2, 6, 4, 2, 4, 0, 0, 0, -9, 8, 7, 7, 7, 5, 5, 2, 4, 6, 4, 2, 2, 0, 0, 0, -9, 8, 5, 5, 7, 5, 5, 2, 2, 7, 6, 2, 2, 0, 0, 0, -9, 8, 3, 3, 7, 1, 1, 2, 4, 2, 4, 0, 0, 0, 0, 0, -9, 7, 3, 3, 5, 5, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 5, 1, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 8, 3, 1, 7, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 4, 2, 4, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 1, 1, 5, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 1, 5, 3, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 3, 5, 7, 5, 5, 4, 2, 4, 4, 2, 4, 2, 0, 0, -9, 7, 3, 3, 5, 3, 5, 2, 2, 4, 4, 2, 2, 0, 0, 0, -9, 8, 5, 3, 7, 5, 5, 4, 4, 4, 6, 2, 0, 0, 0, 0, -9, 8, 5, 3, 7, 3, 3, 4, 2, 2, 4, 0, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 3, 5, 5, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 7, 5, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 3, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 1, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 1, 5, 1, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 1, 1, 5, 1, 1, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 1, 5, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 5, 1, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 1, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 7, 3, 5, 7, 5, 5, 6, 2, 4, 4, 2, 4, 2, 0, 0, -9, 8, 3, 5, 7, 7, 7, 6, 4, 4, 6, 2, 4, 0, 0, 0, -8, 9, 5, 5, 7, 5, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -8, 8, 5, 3, 7, 1, 1, 4, 4, 2, 4, 0, 0, 0, 0, 0, -9, 7, 3, 5, 5, 3, 5, 2, 4, 4, 4, 4, 2, 2, 0, 0, -8, 5, 7, 5, 5, 3, 5, 6, 4, 2, 6, 4, 2, 2, 0, 0, -9, 5, 5, 5, 3, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 1, 5, 3, 1, 2, 2, 4, 2, 2, 0, 0, 0, 0, -8, 5, 3, 5, 5, 5, 5, 2, 2, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 7, 7, 5, 6, 2, 6, 6, 2, 2, 0, 0, 0, -9, 8, 3, 3, 7, 3, 5, 4, 2, 4, 6, 2, 2, 0, 0, 0, -9, 8, 5, 5, 7, 3, 3, 4, 2, 4, 4, 0, 0, 0, 0, 0, -9, 5, 3, 1, 3, 3, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 8, 5, 5, 5, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 3, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 1, 5, 3, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 7, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -8, 7, 5, 3, 5, 5, 3, 6, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 3, 1, 5, 1, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 8, 3, 5, 7, 5, 5, 4, 2, 7, 6, 2, 2, 0, 0, 0, -9, 8, 5, 5, 7, 5, 5, 4, 2, 4, 6, 2, 0, 0, 0, 0, -9, 8, 5, 3, 7, 5, 3, 2, 4, 4, 6, 0, 0, 0, 0, 0, -9, 7, 3, 3, 5, 1, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 7, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 7, 5, 3, 2, 4, 2, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 1, 5, 7, 3, 3, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 1, 5, 1, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 1, 3, 1, 3, 2, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 1, 5, 3, 1, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 1, 2, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 5, 7, 5, 5, 4, 2, 6, 4, 2, 2, 2, 0, 0, -9, 8, 3, 5, 7, 5, 5, 4, 2, 4, 4, 2, 2, 2, 0, 0, -9, 8, 5, 3, 7, 3, 5, 2, 4, 6, 6, 2, 0, 0, 0, 0, -9, 8, 5, 3, 7, 1, 1, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 1, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 2, 4, 4, 0, 0, 0, 0, 0, -9, 8, 7, 5, 7, 5, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 1, 3, 3, 5, 1, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 7, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 5, 5, 3, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 7, 1, 7, 3, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 8, 5, 3, 5, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 5, 5, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 3, 1, 1, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 1, 3, 5, 1, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 7, 7, 3, 5, 5, 3, 2, 2, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 7, 5, 3, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 2, 2, 6, 4, 2, 2, 0, 0, 0, -9, 8, 5, 5, 7, 5, 5, 4, 4, 6, 6, 2, 2, 2, 0, 0, -9, 8, 5, 3, 7, 5, 5, 4, 2, 6, 6, 0, 2, 0, 0, 0, -9, 8, 5, 3, 7, 3, 3, 4, 4, 4, 4, 0, 0, 0, 0, 0, -9, 7, 3, 3, 3, 3, 1, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 3, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 3, 1, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 5, 3, 5, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 6, 2, 4, 6, 4, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 6, 2, 2, 2, 0, 0, -9, 8, 7, 7, 7, 7, 7, 4, 6, 6, 6, 2, 2, 0, 0, 0, -9, 8, 3, 3, 7, 3, 5, 4, 2, 6, 6, 0, 0, 0, 0, 0, -9, 8, 3, 5, 7, 5, 5, 4, 4, 4, 4, 0, 0, 0, 0, 0, -9, 8, 5, 3, 5, 1, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 5, 1, 2, 2, 4, 4, 0, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 6, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 3, 3, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 5, 7, 5, 7, 5, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 1, 5, 3, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 1, 5, 3, 3, 6, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 1, 3, 4, 2, 2, 2, 2, 0, 2, 0, 0, -9, 7, 5, 3, 5, 5, 1, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 1, 1, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 3, 1, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 5, 3, 1, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 1, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 1, 1, 5, 3, 1, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 5, 2, 2, 4, 4, 2, 2, 2, 0, 0, -9, 8, 3, 5, 7, 5, 5, 2, 2, 6, 6, 2, 2, 4, 0, 0, -9, 7, 5, 3, 5, 3, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 3, 3, 1, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 2, 4, 2, 0, 0, 0, 0, 0, -9, 7, 3, 3, 7, 3, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 2, 2, 6, 2, 2, 2, 0, 0, 0, -9, 7, 1, 3, 3, 3, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 0, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 5, 3, 4, 4, 2, 4, 4, 4, 0, 0, 0, -8, 7, 5, 5, 7, 5, 5, 4, 4, 2, 4, 4, 2, 2, 0, 0, -8, 7, 3, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 1, 1, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 3, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -8, 7, 3, 3, 3, 1, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 3, 5, 7, 5, 5, 4, 2, 6, 6, 2, 2, 0, 0, 0, -8, 8, 5, 3, 3, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 8, 7, 5, 7, 3, 3, 6, 2, 4, 4, 0, 0, 0, 0, 0, -9, 7, 5, 3, 7, 1, 3, 6, 4, 4, 2, 0, 0, 0, 0, 0, -9, 7, 3, 5, 7, 5, 1, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 4, 4, 4, 4, 2, 2, 0, 0, -9, 5, 3, 3, 5, 5, 3, 6, 6, 4, 4, 2, 2, 0, 0, 0, -9, 8, 3, 5, 7, 5, 5, 4, 2, 6, 6, 2, 2, 2, 0, 0, -9, 7, 3, 5, 3, 5, 1, 6, 2, 4, 6, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 1, 3, 4, 6, 4, 6, 0, 0, 0, 0, 0, -9, 8, 5, 3, 7, 1, 3, 6, 2, 2, 2, 0, 0, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 8, 5, 5, 7, 5, 5, 2, 4, 6, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 8, 3, 3, 5, 3, 3, 2, 2, 2, 4, 0, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 3, 3, 1, 2, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 1, 3, 5, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 5, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 1, 3, 5, 3, 1, 4, 4, 2, 2, 2, 0, 2, 0, 0, -9, 7, 3, 5, 5, 5, 5, 4, 2, 6, 6, 2, 2, 2, 0, 0, -9, 8, 3, 5, 7, 7, 5, 6, 4, 4, 6, 2, 2, 0, 0, 0, -9, 8, 3, 5, 7, 5, 5, 2, 2, 6, 6, 2, 0, 0, 0, 0, -9, 8, 7, 7, 5, 1, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 1, 5, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 7, 3, 5, 3, 1, 2, 2, 6, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 7, 5, 3, 2, 4, 4, 4, 0, 0, 0, 0, 0, -9, 7, 3, 3, 5, 1, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 1, 5, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 1, 3, 5, 1, 1, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 1, 3, 4, 2, 2, 2, 2, 0, 2, 0, 0, -9, 7, 1, 1, 5, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 8, 7, 3, 5, 3, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 1, 5, 5, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 4, 2, 2, 0, 0, -9, 8, 5, 5, 7, 7, 5, 6, 6, 4, 6, 2, 2, 2, 0, 0, -9, 7, 3, 1, 3, 1, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 1, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 5, 3, 1, 5, 3, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -9, 8, 7, 5, 5, 5, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 5, 5, 5, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 7, 5, 4, 4, 6, 4, 2, 2, 2, 0, 0, -9, 7, 3, 3, 5, 3, 1, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 7, 3, 3, 3, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 1, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 1, 1, 3, 3, 1, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 7, 5, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 1, 3, 3, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 7, 1, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 7, 3, 5, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 8, 5, 5, 7, 5, 5, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 1, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 8, 1, 1, 5, 3, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 3, 1, 1, 2, 4, 4, 2, 0, 0, 0, 0, 0, -9, 8, 5, 3, 3, 3, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 3, 3, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 8, 5, 5, 5, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 2, 4, 2, 2, 2, 2, 0, 0, -9, 7, 3, 1, 5, 3, 1, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 7, 5, 5, 4, 2, 4, 6, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 5, 5, 2, 2, 4, 6, 2, 0, 0, 0, 0, -9, 7, 3, 5, 5, 1, 5, 4, 2, 6, 2, 0, 0, 0, 0, 0, -9, 7, 5, 5, 5, 1, 1, 2, 4, 4, 2, 0, 0, 0, 0, 0, -9, 7, 5, 3, 5, 1, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 8, 5, 5, 5, 5, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 3, 3, 1, 3, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 7, 5, 1, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -8, 7, 3, 1, 5, 3, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -8, 7, 5, 3, 3, 5, 3, 2, 4, 2, 2, 0, 0, 0, 0, 0, -9, 7, 3, 3, 3, 1, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 7, 5, 3, 5, 3, 5, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 7, 5, 3, 2, 4, 4, 2, 0, 0, 0, 0, 0, -9, 7, 5, 3, 7, 3, 3, 2, 4, 2, 4, 0, 0, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 3, 5, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 1, 5, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 1, 5, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 1, 5, 1, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 1, 1, 5, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 2, 0, 0, -8, 5, 5, 5, 5, 3, 5, 4, 4, 4, 4, 2, 4, 2, 0, 0, -8, 5, 5, 5, 7, 3, 5, 6, 4, 6, 6, 2, 4, 2, 0, 0, -8, 7, 5, 7, 5, 3, 5, 6, 6, 6, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 7, 5, 5, 2, 6, 4, 4, 2, 2, 0, 0, 0, -8, 7, 3, 5, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 5, 3, 3, 5, 3, 1, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 5, 3, 1, 3, 3, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 8, 5, 5, 7, 5, 5, 4, 2, 6, 4, 2, 2, 0, 0, 0, -9, 7, 5, 7, 3, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 5, 6, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 1, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 8, 5, 5, 5, 1, 5, 4, 2, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 1, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 3, 5, 3, 3, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 7, 3, 5, 5, 3, 3, 4, 2, 2, 2, 2, 0, 0, 0, 0, -8, 7, 3, 1, 5, 3, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 7, 5, 5, 3, 3, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 3, 1, 3, 3, 5, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 5, 5, 3, 1, 4, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 3, 7, 3, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, -9, 7, 5, 3, 7, 3, 5, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 8, 5, 5, 7, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 2, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 3, 3, 1, 3, 4, 2, 2, 4, 2, 2, 2, 0, 0, -9, 7, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 1, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 1, 5, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 2, 4, 4, 2, 2, 2, 0, 0, -9, 8, 5, 5, 7, 7, 7, 6, 4, 4, 4, 4, 2, 0, 0, 0, -9, 8, 5, 5, 5, 5, 5, 6, 2, 4, 6, 2, 2, 0, 0, 0, -9, 8, 3, 5, 5, 1, 5, 2, 4, 4, 4, 0, 0, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 2, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 1, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 7, 5, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 7, 3, 5, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 3, 1, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 5, 7, 3, 1, 6, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 3, 3, 2, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 1, 3, 5, 5, 1, 2, 2, 4, 2, 2, 0, 2, 0, 0, -9, 7, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 1, 4, 4, 2, 4, 4, 0, 0, 0, 0, -9, 7, 5, 3, 7, 5, 5, 2, 4, 6, 4, 4, 2, 2, 0, 0, -9, 7, 5, 5, 7, 5, 5, 6, 2, 4, 6, 2, 2, 0, 0, 0, -9, 7, 3, 1, 5, 3, 1, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 1, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 3, 1, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 5, 5, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 1, 1, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 3, 1, 5, 3, 1, 4, 4, 2, 2, 2, 0, 2, 0, 0, -9, 7, 5, 5, 7, 5, 5, 4, 4, 6, 4, 2, 2, 2, 0, 0, -9, 8, 7, 5, 7, 5, 7, 4, 2, 6, 4, 2, 4, 0, 0, 0, -9, 7, 3, 3, 5, 5, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 1, 3, 5, 3, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 5, 7, 5, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 5, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 7, 3, 5, 3, 3, 5, 6, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 6, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 3, 1, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 3, 2, 6, 2, 6, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 1, 5, 4, 4, 2, 2, 2, 0, 2, 0, 0, -9, 5, 3, 3, 3, 5, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 2, 6, 2, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 3, 5, 6, 4, 6, 4, 4, 6, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 4, 4, 4, 2, 4, 4, 0, 0, 0, -9, 5, 7, 7, 3, 5, 5, 4, 4, 6, 4, 4, 6, 0, 0, 0, -7, 5, 5, 5, 5, 5, 5, 4, 4, 7, 2, 4, 4, 0, 0, 0, -8, 5, 7, 5, 7, 5, 5, 6, 4, 6, 2, 4, 6, 0, 0, 0, -8, 5, 7, 5, 5, 3, 5, 6, 2, 6, 2, 4, 4, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 6, 4, 6, 4, 2, 6, 0, 0, 0, -8, 7, 7, 5, 7, 5, 5, 4, 4, 7, 4, 2, 4, 0, 0, 0, -7, 5, 5, 5, 5, 7, 5, 6, 4, 6, 2, 0, 2, 0, 0, 0, -8, 5, 5, 5, 3, 3, 3, 2, 6, 4, 2, 2, 2, 2, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 4, 2, 2, 4, 2, 2, 0, 0, -8, 5, 3, 3, 3, 3, 5, 4, 4, 2, 2, 4, 2, 0, 0, 0, -8, 3, 7, 3, 5, 1, 3, 4, 2, 4, 2, 4, 2, 2, 0, 0, -7, 3, 5, 3, 3, 3, 5, 4, 4, 4, 2, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 6, 4, 2, 2, 6, 6, 0, 0, 0, -8, 7, 7, 3, 5, 5, 5, 4, 6, 4, 2, 4, 4, 0, 0, 0, -8, 3, 5, 3, 5, 5, 5, 4, 6, 2, 0, 6, 4, 2, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 6, 6, 0, 6, 2, 2, 0, 0, -9, 5, 7, 1, 5, 3, 3, 4, 6, 2, 4, 4, 2, 0, 0, 0, -9, 5, 3, 3, 3, 5, 3, 4, 6, 2, 2, 4, 2, 0, 0, 0, -9, 5, 5, 3, 3, 5, 1, 4, 4, 0, 2, 4, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 2, 6, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 1, 4, 6, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 2, 4, 4, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 6, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 7, 7, 7, 4, 6, 4, 4, 2, 2, 0, 0, -9, 5, 7, 5, 7, 7, 3, 7, 7, 6, 4, 4, 2, 2, 0, 0, -9, 5, 7, 5, 7, 5, 3, 4, 6, 6, 6, 2, 2, 0, 0, 0, -9, 5, 8, 5, 7, 7, 5, 6, 6, 6, 2, 4, 2, 0, 0, 0, -9, 5, 8, 5, 7, 7, 3, 6, 6, 6, 4, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 7, 3, 6, 6, 6, 2, 4, 0, 0, 0, 0, -9, 5, 7, 5, 5, 7, 1, 4, 6, 7, 4, 4, 2, 2, 0, 0, -9, 5, 8, 3, 7, 7, 1, 4, 6, 6, 6, 4, 2, 2, 0, 0, -9, 5, 8, 3, 7, 7, 5, 2, 6, 2, 6, 4, 2, 2, 0, 0, -9, 7, 7, 5, 7, 7, 3, 6, 6, 4, 4, 4, 2, 4, 0, 0, -7, 5, 7, 5, 5, 5, 3, 4, 6, 4, 4, 4, 2, 2, 0, 0, -9, 7, 7, 5, 5, 7, 5, 6, 6, 4, 4, 2, 4, 4, 0, 0, -9, 5, 7, 3, 7, 7, 3, 6, 7, 7, 2, 4, 2, 4, 0, 0, -9, 5, 5, 3, 7, 5, 3, 6, 6, 6, 4, 4, 2, 4, 0, 0, -9, 5, 5, 3, 7, 7, 3, 4, 4, 6, 4, 4, 4, 2, 0, 0, -9, 5, 5, 3, 7, 5, 3, 4, 6, 7, 2, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 7, 3, 6, 4, 6, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 7, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 7, 3, 3, 6, 6, 4, 6, 2, 2, 6, 0, 0, -9, 5, 7, 5, 7, 5, 1, 7, 7, 2, 6, 2, 2, 2, 0, 0, -9, 7, 7, 5, 7, 5, 3, 7, 6, 2, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 7, 5, 3, 4, 6, 2, 4, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 7, 6, 2, 4, 4, 4, 2, 2, 0, 0, -9, 7, 7, 5, 7, 3, 5, 6, 4, 6, 2, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 3, 7, 7, 2, 6, 4, 2, 2, 0, 0, -9, 5, 7, 7, 7, 5, 5, 7, 7, 2, 6, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 7, 6, 2, 6, 2, 0, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 7, 6, 4, 6, 2, 2, 2, 0, 0, -9, 7, 7, 5, 7, 5, 3, 6, 4, 2, 4, 4, 2, 2, 0, 0, -9, 7, 7, 5, 7, 3, 3, 6, 4, 2, 4, 2, 4, 2, 0, 0, -9, 5, 7, 5, 7, 5, 3, 6, 6, 4, 4, 4, 2, 2, 0, 0, -9, 7, 5, 5, 7, 7, 3, 4, 6, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 1, 6, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 3, 5, 5, 3, 6, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 7, 3, 4, 6, 4, 2, 4, 2, 0, 0, 0, -9, 3, 7, 5, 5, 5, 3, 4, 6, 4, 4, 6, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 5, 6, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 3, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 6, 6, 2, 4, 2, 2, 2, 0, 0, -9, 5, 7, 3, 5, 5, 3, 4, 4, 4, 4, 4, 2, 2, 0, 0, -9, 5, 7, 3, 5, 5, 5, 4, 4, 4, 2, 4, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 7, 3, 5, 5, 3, 6, 4, 2, 4, 4, 2, 2, 0, 0, -9, 5, 7, 3, 7, 5, 3, 4, 6, 0, 0, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 0, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 6, 0, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 6, 2, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 7, 3, 3, 5, 3, 3, 4, 4, 2, 0, 2, 0, 0, 0, 0, -7, 5, 5, 7, 7, 5, 7, 6, 6, 4, 2, 2, 2, 0, 0, 0, -7, 7, 5, 5, 5, 3, 5, 6, 4, 4, 2, 2, 2, 2, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 6, 2, 2, 2, 4, 2, 0, 0, -8, 7, 7, 5, 5, 5, 5, 4, 6, 2, 0, 4, 4, 2, 0, 0, -7, 5, 5, 5, 7, 5, 5, 4, 6, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 7, 5, 5, 6, 4, 4, 0, 2, 2, 0, 0, 0, -8, 5, 7, 7, 5, 7, 3, 7, 4, 4, 2, 0, 2, 0, 0, 0, -9, 5, 5, 5, 5, 7, 5, 4, 6, 4, 4, 4, 0, 0, 0, 0, -8, 5, 7, 5, 5, 7, 3, 6, 6, 2, 4, 2, 0, 0, 0, 0, -8, 5, 7, 5, 5, 7, 3, 6, 7, 2, 4, 4, 0, 0, 0, 0, -9, 5, 7, 5, 7, 7, 3, 7, 6, 6, 2, 6, 0, 0, 0, 0, -9, 5, 7, 5, 5, 7, 3, 6, 4, 4, 6, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 7, 5, 6, 6, 6, 6, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 8, 3, 4, 4, 7, 6, 2, 0, 0, 0, 0, -9, 3, 5, 7, 3, 3, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, -8, 3, 5, 5, 3, 7, 1, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 5, 7, 7, 3, 7, 3, 4, 4, 6, 6, 2, 2, 0, 0, 0, -9, 5, 7, 7, 5, 7, 3, 6, 4, 6, 6, 2, 0, 2, 0, 0, -9, 7, 7, 5, 3, 1, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 1, 5, 2, 2, 4, 2, 2, 2, 0, 0, 0, -8, 3, 5, 7, 3, 3, 5, 4, 2, 4, 0, 4, 2, 0, 0, 0, -8, 5, 7, 5, 3, 3, 5, 2, 2, 6, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 1, 1, 5, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 1, 3, 7, 2, 4, 2, 2, 2, 0, 0, 0, 0, -8, 7, 5, 3, 3, 1, 7, 2, 2, 4, 0, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 7, 4, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 2, 4, 6, 4, 2, 0, 0, 0, 0, -8, 3, 5, 5, 3, 1, 5, 4, 2, 2, 6, 2, 0, 0, 0, 0, -8, 7, 3, 3, 5, 5, 3, 6, 6, 2, 2, 4, 2, 2, 0, 0, -9, 7, 3, 5, 5, 3, 5, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 1, 5, 4, 2, 4, 4, 2, 2, 2, 0, 0, -8, 3, 3, 3, 3, 3, 5, 2, 6, 2, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 3, 3, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 2, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 2, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 7, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 7, 5, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 7, 3, 3, 3, 5, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 5, 4, 2, 4, 2, 4, 0, 2, 0, 0, -8, 3, 3, 5, 5, 1, 3, 4, 2, 2, 2, 4, 2, 2, 0, 0, -9, 3, 3, 3, 5, 1, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 2, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 7, 5, 5, 7, 4, 4, 4, 6, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 3, 7, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 7, 2, 2, 6, 4, 2, 0, 0, 0, 0, -9, 3, 5, 5, 1, 5, 3, 4, 2, 6, 6, 0, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 2, 4, 4, 0, 0, 0, 0, 0, -9, 7, 5, 7, 3, 7, 5, 2, 2, 4, 6, 2, 2, 0, 0, 0, -9, 3, 7, 5, 3, 5, 3, 4, 4, 6, 4, 0, 0, 0, 0, 0, -9, 5, 5, 7, 5, 5, 3, 6, 4, 4, 4, 4, 2, 2, 0, 0, -9, 7, 5, 5, 3, 5, 5, 4, 4, 6, 2, 2, 2, 2, 0, 0, -9, 7, 5, 7, 5, 5, 3, 6, 4, 4, 4, 4, 2, 0, 0, 0, -9, 7, 3, 7, 5, 7, 3, 4, 4, 4, 6, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 6, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 7, 5, 7, 5, 6, 4, 2, 7, 7, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 2, 4, 6, 4, 2, 0, 0, 0, -9, 7, 5, 5, 3, 5, 1, 6, 4, 6, 4, 4, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 7, 6, 6, 4, 4, 6, 4, 2, 0, 0, -9, 7, 5, 7, 7, 3, 7, 6, 4, 4, 4, 4, 2, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 4, 6, 6, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 1, 6, 6, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 7, 2, 2, 2, 0, 0, 0, -9, 8, 7, 5, 5, 7, 5, 4, 4, 6, 4, 0, 2, 0, 0, 0, -9, 7, 7, 5, 7, 7, 3, 6, 4, 7, 2, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 6, 4, 4, 0, 2, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 5, 4, 4, 6, 2, 2, 0, 0, 0, 0, -8, 8, 5, 7, 5, 5, 3, 4, 6, 7, 2, 2, 0, 0, 0, 0, -9, 7, 5, 7, 7, 5, 1, 6, 6, 6, 2, 2, 0, 0, 0, 0, -9, 7, 7, 7, 7, 7, 1, 6, 6, 6, 2, 2, 0, 0, 0, 0, -9, 5, 7, 7, 7, 7, 5, 6, 4, 6, 2, 2, 0, 0, 0, 0, -9, 5, 7, 7, 7, 5, 1, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 7, 5, 5, 3, 6, 6, 7, 2, 2, 2, 0, 0, 0, -9, 7, 5, 7, 7, 5, 7, 6, 4, 6, 4, 2, 0, 0, 0, 0, -9, 7, 5, 7, 7, 7, 5, 6, 4, 6, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 6, 6, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 7, 5, 3, 4, 6, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 5, 6, 6, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 7, 4, 7, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 2, 2, 4, 2, 4, 0, 0, 0, 0, -8, 7, 3, 3, 5, 3, 3, 6, 2, 6, 2, 2, 0, 2, 0, 0, -9, 7, 5, 5, 5, 7, 5, 6, 2, 6, 6, 4, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 6, 2, 2, 6, 2, 4, 2, 0, 0, -9, 7, 7, 7, 5, 5, 5, 7, 6, 4, 6, 4, 2, 0, 0, 0, -9, 7, 5, 5, 7, 5, 5, 7, 2, 4, 6, 6, 4, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 7, 6, 6, 4, 6, 2, 0, 0, 0, -9, 7, 1, 5, 5, 3, 3, 6, 2, 4, 4, 4, 2, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 6, 2, 4, 6, 4, 4, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 7, 4, 4, 6, 6, 2, 2, 0, 0, -9, 7, 5, 7, 5, 5, 5, 7, 6, 2, 6, 4, 2, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 7, 4, 4, 6, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 3, 3, 4, 4, 2, 6, 2, 6, 0, 0, 0, -8, 7, 3, 5, 5, 3, 7, 4, 4, 2, 7, 2, 4, 0, 0, 0, -8, 5, 7, 3, 5, 3, 5, 4, 4, 6, 6, 2, 2, 0, 0, 0, -9, 7, 3, 7, 7, 3, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -9, 7, 7, 7, 5, 5, 7, 6, 4, 6, 6, 2, 2, 2, 0, 0, -9, 5, 5, 7, 7, 5, 5, 6, 2, 7, 2, 2, 4, 0, 0, 0, -9, 7, 5, 7, 5, 5, 7, 6, 2, 7, 2, 2, 4, 2, 0, 0, -8, 7, 5, 5, 5, 5, 7, 6, 4, 7, 4, 4, 4, 0, 0, 0, -9, 5, 3, 3, 5, 3, 3, 6, 2, 7, 4, 4, 2, 2, 0, 0, -9, 5, 3, 5, 5, 3, 5, 4, 2, 7, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 7, 5, 3, 4, 2, 7, 4, 6, 2, 0, 0, 0, -9, 7, 3, 5, 5, 1, 5, 2, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 3, 5, 5, 2, 6, 4, 4, 4, 2, 2, 0, 0, -9, 5, 3, 5, 3, 3, 5, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 7, 7, 5, 3, 1, 3, 4, 6, 2, 6, 4, 4, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 6, 2, 6, 4, 4, 2, 0, 0, -8, 5, 5, 5, 5, 3, 5, 6, 2, 2, 4, 4, 2, 2, 0, 0, -9, 7, 7, 5, 5, 5, 7, 4, 6, 6, 4, 4, 2, 4, 0, 0, -8, 7, 3, 3, 5, 1, 5, 4, 2, 2, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 7, 3, 7, 4, 4, 4, 6, 4, 4, 0, 0, 0, -8, 5, 5, 5, 7, 5, 5, 6, 4, 6, 6, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 6, 4, 6, 2, 4, 0, 2, 0, 0, -8, 7, 5, 5, 7, 5, 7, 4, 4, 6, 6, 4, 0, 0, 0, 0, -9, 5, 3, 5, 3, 3, 5, 2, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 1, 5, 1, 3, 5, 2, 6, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 7, 2, 6, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 5, 3, 5, 3, 6, 4, 4, 6, 2, 0, 0, 0, 0, -8, 5, 3, 5, 3, 7, 5, 4, 2, 4, 6, 2, 0, 2, 0, 0, -9, 7, 5, 3, 5, 5, 7, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 3, 7, 5, 3, 5, 2, 2, 4, 6, 2, 2, 0, 0, 0, -8, 3, 5, 5, 3, 3, 5, 2, 2, 4, 6, 0, 0, 0, 0, 0, -8, 5, 5, 7, 3, 3, 5, 2, 2, 4, 4, 0, 0, 0, 0, 0, -8, 5, 3, 5, 1, 3, 3, 2, 2, 6, 2, 2, 2, 0, 0, 0, -8, 7, 7, 7, 5, 3, 7, 2, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 7, 5, 5, 7, 2, 4, 4, 2, 2, 2, 0, 0, 0, -8, 3, 5, 3, 1, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -8, 5, 3, 3, 1, 3, 5, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 7, 3, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 3, 7, 4, 4, 2, 2, 2, 2, 0, 0, 0, -7, 5, 7, 5, 5, 3, 7, 4, 6, 4, 2, 0, 0, 0, 0, 0, -8, 7, 5, 5, 7, 3, 7, 2, 4, 4, 4, 2, 4, 2, 0, 0, -8, 3, 5, 3, 3, 1, 5, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 7, 2, 6, 4, 2, 0, 2, 0, 0, 0, -8, 5, 5, 5, 7, 5, 7, 6, 6, 2, 2, 0, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 5, 5, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 3, 3, 4, 2, 4, 2, 4, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -8, 3, 3, 5, 5, 3, 3, 4, 2, 2, 4, 2, 2, 2, 0, 0, -8, 5, 3, 5, 5, 3, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -7, 7, 5, 5, 5, 3, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 7, 5, 5, 3, 5, 6, 2, 2, 6, 2, 4, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 6, 2, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 4, 2, 4, 2, 2, 2, 0, 0, -9, 5, 3, 5, 3, 3, 5, 4, 2, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 1, 4, 2, 2, 6, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 7, 3, 6, 2, 2, 4, 2, 2, 2, 0, 0, -8, 5, 7, 7, 3, 5, 5, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 2, 2, 2, 0, 0, 0, 0, 0, -8, 5, 7, 5, 5, 7, 5, 6, 6, 6, 4, 2, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 4, 2, 4, 2, 0, 0, 0, 0, 0, -7, 5, 3, 5, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -8, 7, 5, 3, 3, 5, 5, 2, 4, 2, 2, 2, 2, 2, 0, 0, -8, 3, 5, 3, 5, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -7, 5, 5, 3, 3, 5, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -7, 5, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 4, 6, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 7, 4, 4, 2, 2, 2, 4, 2, 0, 0, -8, 5, 5, 3, 3, 1, 7, 2, 4, 4, 2, 4, 6, 0, 0, 0, -8, 5, 5, 3, 3, 1, 5, 2, 6, 4, 2, 4, 4, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 2, 2, 2, 2, 2, 4, 0, 0, 0, -9, 3, 7, 5, 3, 3, 5, 4, 6, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 5, 1, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 4, 4, 6, 2, 0, 0, 0, 0, -8, 7, 5, 7, 5, 5, 5, 6, 4, 6, 4, 0, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 5, 2, 4, 4, 6, 0, 0, 0, 0, 0, -9, 5, 5, 5, 3, 3, 5, 2, 2, 4, 6, 0, 0, 0, 0, 0, -9, 7, 5, 5, 3, 3, 5, 2, 4, 6, 4, 0, 0, 0, 0, 0, -9, 7, 7, 3, 3, 5, 1, 4, 4, 4, 6, 0, 0, 0, 0, 0, -8, 5, 5, 5, 3, 3, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 2, 4, 7, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 1, 5, 5, 2, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 4, 6, 2, 2, 0, 0, 0, -9, 7, 5, 7, 5, 5, 7, 4, 4, 4, 6, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 3, 5, 5, 5, 5, 5, 2, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 3, 3, 4, 4, 4, 4, 4, 2, 2, 0, 0, -7, 7, 5, 5, 5, 3, 7, 2, 4, 2, 2, 4, 4, 0, 0, 0, -8, 7, 7, 5, 7, 5, 7, 2, 4, 2, 4, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 3, 3, 4, 6, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 6, 4, 2, 4, 4, 0, 0, 0, -7, 5, 5, 5, 5, 3, 7, 4, 6, 2, 2, 4, 4, 0, 0, 0, -8, 5, 7, 5, 3, 7, 5, 2, 2, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 4, 4, 2, 2, 4, 0, 0, 0, -8, 5, 7, 7, 5, 5, 3, 6, 6, 6, 2, 4, 4, 0, 0, 0, -8, 5, 5, 7, 5, 5, 5, 6, 4, 6, 4, 4, 6, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 2, 4, 4, 4, 2, 0, 0, -9, 5, 5, 7, 5, 3, 7, 4, 4, 6, 6, 6, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 7, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 5, 5, 4, 4, 6, 4, 2, 2, 2, 0, 0, -9, 7, 5, 3, 3, 3, 5, 2, 2, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 7, 4, 2, 6, 6, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 6, 4, 6, 6, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 7, 3, 6, 4, 6, 6, 2, 2, 2, 0, 0, -9, 5, 8, 5, 7, 7, 5, 6, 6, 6, 4, 4, 2, 2, 0, 0, -8, 5, 7, 7, 5, 7, 5, 4, 6, 6, 6, 2, 2, 0, 0, 0, -9, 5, 7, 5, 7, 7, 5, 6, 4, 6, 6, 4, 0, 0, 0, 0, -9, 5, 7, 5, 7, 7, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 7, 3, 7, 7, 3, 4, 4, 6, 4, 4, 2, 0, 0, 0, -9, 3, 7, 5, 5, 7, 3, 4, 4, 6, 4, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 7, 3, 6, 6, 6, 4, 2, 2, 2, 0, 0, -9, 5, 7, 5, 7, 5, 5, 6, 6, 6, 4, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 7, 5, 4, 6, 6, 6, 4, 2, 2, 0, 0, -8, 5, 7, 5, 7, 7, 3, 4, 4, 6, 4, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 3, 6, 4, 6, 4, 2, 4, 2, 0, 0, -9, 5, 7, 5, 7, 5, 3, 6, 4, 6, 4, 2, 6, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 6, 6, 4, 4, 4, 2, 0, 0, -9, 5, 7, 5, 7, 7, 3, 4, 4, 6, 4, 2, 2, 4, 0, 0, -9, 5, 5, 5, 5, 7, 3, 2, 6, 6, 2, 2, 4, 0, 0, 0, -9, 5, 5, 5, 5, 7, 3, 4, 6, 6, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 7, 5, 3, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 3, 6, 6, 4, 4, 2, 2, 4, 0, 0, -9, 5, 7, 5, 7, 5, 5, 6, 6, 2, 4, 2, 0, 2, 0, 0, -9, 5, 5, 3, 5, 5, 1, 6, 6, 2, 4, 4, 0, 0, 0, 0, -8, 5, 7, 5, 5, 5, 3, 4, 6, 2, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 7, 3, 3, 6, 6, 2, 4, 2, 4, 0, 0, 0, -9, 5, 7, 7, 7, 7, 3, 7, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 7, 7, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 6, 4, 6, 4, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 7, 6, 4, 6, 4, 2, 2, 0, 0, -9, 3, 5, 3, 5, 5, 1, 6, 4, 4, 6, 2, 2, 0, 0, 0, -9, 3, 5, 5, 7, 5, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 7, 6, 4, 6, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 2, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 7, 5, 2, 7, 6, 4, 2, 2, 0, 0, 0, -8, 3, 3, 5, 3, 5, 3, 4, 4, 2, 4, 4, 4, 2, 0, 0, -8, 3, 3, 5, 3, 5, 5, 6, 2, 2, 4, 2, 2, 2, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -8, 5, 7, 5, 1, 5, 1, 6, 4, 2, 4, 2, 2, 0, 0, 0, -9, 3, 3, 5, 3, 3, 5, 4, 6, 4, 2, 2, 2, 2, 0, 0, -8, 5, 7, 7, 3, 7, 5, 7, 4, 4, 6, 2, 4, 2, 0, 0, -8, 3, 5, 7, 5, 5, 5, 4, 6, 2, 4, 2, 0, 0, 0, 0, -7, 3, 5, 3, 3, 3, 7, 4, 6, 4, 2, 2, 0, 2, 0, 0, -8, 3, 3, 5, 3, 3, 5, 4, 4, 2, 4, 4, 0, 0, 0, 0, -8, 5, 3, 5, 3, 3, 7, 2, 4, 4, 4, 6, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 7, 4, 6, 4, 2, 2, 2, 2, 0, 0, -7, 5, 5, 5, 5, 5, 7, 6, 4, 6, 4, 6, 4, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 6, 4, 6, 4, 2, 4, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 6, 6, 6, 4, 2, 4, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 6, 6, 2, 2, 2, 0, 0, -9, 5, 7, 5, 3, 5, 5, 4, 4, 4, 7, 2, 2, 0, 0, 0, -9, 3, 7, 5, 3, 5, 5, 4, 4, 6, 6, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 2, 2, 6, 6, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 5, 2, 2, 6, 2, 2, 2, 0, 0, 0, -8, 7, 7, 1, 5, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 1, 3, 3, 7, 2, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 6, 4, 2, 4, 6, 0, 0, 0, 0, -9, 5, 7, 5, 7, 7, 3, 6, 7, 2, 6, 6, 2, 2, 0, 0, -9, 7, 5, 3, 7, 7, 3, 6, 6, 0, 4, 7, 2, 2, 0, 0, -9, 5, 7, 3, 7, 7, 3, 7, 6, 2, 6, 7, 2, 4, 0, 0, -9, 5, 7, 3, 7, 7, 5, 7, 4, 4, 4, 7, 4, 4, 0, 0, -9, 3, 7, 5, 7, 7, 3, 7, 6, 2, 6, 6, 2, 4, 0, 0, -9, 5, 7, 5, 5, 7, 5, 6, 4, 2, 4, 6, 2, 4, 0, 0, -9, 5, 7, 3, 5, 5, 3, 4, 6, 4, 4, 4, 2, 2, 0, 0, -9, 5, 7, 3, 7, 7, 3, 4, 4, 6, 2, 4, 2, 2, 0, 0, -9, 5, 7, 5, 5, 7, 3, 4, 4, 2, 6, 4, 2, 2, 0, 0, -9, 5, 7, 3, 7, 7, 3, 6, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 7, 5, 7, 5, 1, 6, 6, 2, 4, 2, 2, 2, 0, 0, -9, 7, 3, 5, 3, 1, 5, 2, 4, 4, 2, 2, 4, 2, 0, 0, -8, 5, 5, 5, 5, 1, 3, 4, 6, 2, 2, 4, 4, 0, 0, 0, -8, 3, 5, 5, 5, 3, 5, 4, 6, 4, 6, 6, 2, 2, 0, 0, -7, 5, 5, 3, 5, 3, 5, 4, 2, 4, 2, 2, 4, 2, 0, 0, -9, 7, 5, 5, 5, 7, 5, 4, 4, 4, 4, 2, 4, 2, 0, 0, -9, 5, 5, 5, 5, 5, 7, 4, 6, 4, 4, 2, 4, 0, 0, 0, -9, 3, 5, 3, 5, 5, 7, 4, 2, 4, 6, 2, 2, 2, 0, 0, -9, 7, 5, 3, 3, 3, 5, 4, 2, 4, 4, 2, 4, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 2, 2, 4, 2, 2, 4, 0, 0, 0, -9, 3, 5, 3, 3, 5, 3, 4, 6, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 2, 0, 0, -7, 7, 7, 5, 5, 7, 5, 4, 6, 2, 4, 6, 2, 0, 0, 0, -8, 7, 7, 5, 3, 5, 5, 6, 4, 2, 4, 4, 2, 2, 0, 0, -8, 5, 5, 5, 3, 5, 5, 4, 4, 4, 6, 4, 2, 2, 0, 0, -8, 5, 5, 5, 3, 3, 5, 4, 2, 2, 4, 4, 2, 0, 0, 0, -7, 7, 5, 5, 3, 5, 5, 4, 4, 4, 4, 2, 2, 4, 0, 0, -8, 7, 5, 5, 5, 3, 7, 4, 6, 2, 6, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 7, 4, 6, 6, 4, 4, 2, 2, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 6, 4, 6, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 6, 6, 4, 2, 2, 0, 0, 0, -8, 7, 3, 3, 3, 3, 3, 6, 4, 2, 6, 2, 2, 2, 0, 0, -9, 7, 3, 3, 3, 5, 3, 6, 2, 2, 4, 6, 2, 2, 0, 0, -8, 7, 5, 5, 5, 5, 5, 6, 4, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 3, 6, 4, 6, 4, 4, 2, 2, 0, 0, -8, 7, 5, 5, 7, 5, 5, 4, 4, 4, 4, 6, 2, 2, 0, 0, -8, 7, 5, 5, 7, 5, 5, 4, 6, 6, 6, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 6, 6, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 7, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 7, 7, 5, 3, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 7, 5, 7, 5, 5, 3, 4, 4, 7, 4, 2, 2, 0, 0, 0, -8, 7, 5, 7, 5, 7, 5, 4, 4, 6, 7, 4, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 6, 4, 6, 2, 2, 0, 0, 0, 0, -9, 7, 5, 7, 5, 7, 5, 4, 6, 4, 2, 0, 0, 0, 0, 0, -8, 7, 5, 5, 7, 5, 5, 2, 6, 6, 6, 2, 2, 2, 0, 0, -8, 7, 3, 3, 5, 3, 5, 4, 6, 6, 4, 2, 0, 0, 0, 0, -8, 5, 3, 3, 5, 5, 1, 4, 2, 4, 6, 2, 0, 0, 0, 0, -8, 7, 5, 5, 7, 5, 7, 4, 4, 4, 6, 4, 2, 0, 0, 0, -8, 5, 3, 3, 5, 7, 7, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 7, 5, 3, 1, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 3, 7, 3, 3, 5, 6, 2, 2, 6, 2, 2, 0, 0, 0, -9, 5, 5, 7, 5, 5, 7, 7, 2, 4, 6, 2, 4, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 6, 2, 6, 4, 0, 0, 0, 0, -9, 7, 7, 5, 7, 3, 5, 4, 6, 2, 2, 6, 4, 0, 0, 0, -9, 7, 5, 5, 7, 5, 1, 7, 6, 4, 4, 6, 2, 0, 0, 0, -9, 7, 5, 7, 7, 3, 3, 7, 2, 2, 4, 6, 2, 0, 0, 0, -9, 7, 5, 7, 5, 5, 3, 6, 6, 2, 6, 6, 4, 0, 0, 0, -8, 7, 7, 7, 5, 5, 3, 7, 4, 2, 6, 6, 4, 2, 0, 0, -8, 7, 5, 7, 7, 5, 5, 7, 6, 6, 6, 2, 2, 0, 0, 0, -8, 5, 3, 5, 7, 5, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 2, 6, 2, 2, 2, 0, 0, -8, 7, 3, 5, 5, 5, 5, 4, 6, 4, 4, 2, 4, 2, 0, 0, -8, 7, 5, 7, 5, 7, 7, 4, 6, 6, 6, 2, 0, 0, 0, 0, -9, 5, 7, 7, 5, 5, 5, 4, 4, 6, 6, 6, 4, 0, 0, 0, -9, 5, 7, 7, 7, 5, 3, 6, 4, 6, 4, 4, 2, 2, 0, 0, -9, 7, 5, 7, 7, 5, 3, 7, 6, 4, 4, 4, 0, 2, 0, 0, -9, 7, 5, 3, 5, 7, 1, 6, 4, 2, 6, 2, 0, 0, 0, 0, -8, 7, 7, 7, 7, 7, 5, 7, 7, 2, 6, 2, 2, 0, 0, 0, -8, 7, 5, 7, 7, 7, 5, 6, 4, 2, 4, 4, 2, 2, 0, 0, -9, 7, 7, 5, 5, 7, 5, 6, 4, 2, 6, 2, 2, 0, 0, 0, -8, 7, 7, 7, 5, 7, 5, 6, 4, 4, 6, 2, 2, 2, 0, 0, -8, 7, 5, 5, 5, 7, 3, 4, 6, 2, 4, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 7, 3, 4, 4, 6, 4, 2, 2, 2, 0, 0, -8, 8, 5, 5, 5, 5, 3, 6, 6, 4, 6, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 6, 6, 2, 2, 2, 2, 0, 0, 0, -8, 7, 7, 7, 5, 5, 3, 4, 4, 4, 6, 2, 2, 0, 0, 0, -9, 7, 7, 7, 5, 7, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 7, 7, 5, 5, 4, 4, 2, 6, 2, 2, 2, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 6, 2, 6, 2, 4, 2, 0, 0, -9, 7, 7, 7, 5, 5, 3, 6, 6, 2, 6, 4, 2, 0, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 6, 6, 6, 2, 2, 2, 0, 0, -8, 7, 7, 7, 5, 7, 3, 7, 6, 6, 6, 0, 0, 2, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 4, 7, 4, 0, 0, 2, 0, 0, -9, 7, 7, 7, 5, 5, 3, 4, 6, 2, 4, 0, 0, 0, 0, 0, -9, 7, 7, 7, 3, 7, 5, 6, 6, 6, 6, 0, 0, 2, 0, 0, -9, 7, 5, 7, 5, 5, 3, 7, 6, 2, 2, 2, 0, 2, 0, 0, -9, 7, 5, 7, 5, 5, 1, 6, 6, 6, 6, 0, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 6, 6, 6, 2, 4, 0, 2, 0, 0, -9, 7, 5, 7, 5, 7, 3, 7, 6, 4, 2, 2, 2, 2, 0, 0, -9, 7, 7, 7, 3, 5, 3, 4, 6, 6, 4, 2, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 4, 6, 2, 4, 2, 0, 0, 0, 0, -9, 7, 7, 7, 5, 7, 5, 4, 6, 2, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 6, 4, 4, 6, 4, 2, 2, 0, 0, -9, 7, 7, 7, 3, 5, 1, 2, 4, 2, 6, 2, 2, 2, 0, 0, -9, 5, 3, 5, 5, 7, 5, 2, 4, 2, 6, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 7, 6, 6, 6, 4, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 3, 5, 2, 2, 4, 2, 2, 0, 0, 0, 0, -8, 5, 3, 5, 3, 3, 7, 6, 4, 6, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 7, 7, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 7, 5, 5, 5, 4, 4, 4, 2, 4, 2, 2, 0, 0, -9, 5, 5, 5, 3, 7, 5, 2, 6, 7, 2, 2, 0, 2, 0, 0, -8, 5, 3, 5, 5, 5, 5, 2, 6, 4, 2, 4, 2, 0, 0, 0, -9, 5, 7, 7, 3, 5, 7, 2, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 7, 4, 6, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 7, 7, 4, 4, 6, 2, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 2, 2, 7, 2, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 7, 2, 4, 6, 0, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 7, 5, 2, 4, 7, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 7, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 7, 5, 7, 5, 3, 3, 6, 4, 2, 4, 4, 2, 0, 0, 0, -9, 7, 5, 7, 5, 5, 3, 4, 6, 2, 4, 4, 2, 0, 0, 0, -9, 5, 7, 5, 7, 7, 5, 2, 6, 2, 2, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 6, 2, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 7, 5, 2, 6, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 7, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 7, 5, 2, 6, 0, 2, 2, 0, 0, 0, 0, -9, 5, 7, 7, 7, 5, 7, 2, 6, 2, 4, 2, 0, 0, 0, 0, -9, 7, 7, 5, 3, 7, 7, 2, 6, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 7, 5, 3, 5, 2, 7, 2, 2, 2, 2, 0, 0, 0, -9, 7, 7, 7, 5, 7, 5, 2, 6, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 3, 7, 5, 2, 6, 2, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 5, 2, 6, 2, 2, 2, 2, 0, 0, 0, -8, 7, 3, 5, 1, 3, 3, 2, 6, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 2, 7, 4, 4, 4, 2, 0, 0, 0, -9, 3, 7, 5, 5, 5, 5, 2, 6, 2, 2, 4, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 6, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 7, 5, 5, 3, 2, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 3, 3, 2, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 5, 1, 2, 6, 2, 2, 4, 0, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 2, 6, 2, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 7, 3, 2, 4, 2, 2, 2, 0, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 6, 4, 2, 2, 2, 2, 0, 0, -8, 5, 3, 5, 5, 5, 5, 2, 6, 4, 2, 0, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 6, 4, 2, 2, 2, 0, 0, 0, -9, 7, 7, 5, 3, 5, 3, 4, 6, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 7, 3, 7, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 7, 3, 7, 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, -9, 5, 3, 7, 5, 7, 3, 4, 4, 4, 6, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 7, 5, 4, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 5, 5, 4, 4, 2, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 3, 3, 6, 6, 6, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 4, 4, 2, 2, 4, 2, 0, 0, -8, 5, 5, 3, 5, 5, 5, 2, 4, 4, 4, 2, 4, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 6, 6, 4, 4, 2, 2, 2, 0, 0, -9, 7, 3, 5, 3, 3, 3, 2, 6, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 7, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 7, 3, 4, 4, 4, 2, 4, 0, 0, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 6, 6, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 3, 7, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -9, 7, 7, 3, 3, 3, 5, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 6, 6, 4, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 6, 4, 4, 4, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 3, 4, 6, 2, 4, 4, 4, 2, 0, 0, -7, 7, 7, 3, 5, 5, 3, 6, 4, 2, 2, 6, 2, 2, 0, 0, -8, 7, 5, 5, 5, 5, 7, 4, 6, 2, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 2, 4, 4, 4, 2, 0, 0, -8, 7, 5, 5, 7, 5, 7, 4, 4, 4, 4, 6, 2, 2, 2, 0, -7, 5, 3, 3, 3, 1, 3, 2, 6, 4, 2, 4, 2, 0, 0, 0, -8, 3, 5, 5, 3, 5, 5, 4, 4, 4, 2, 4, 4, 2, 0, 0, -8, 3, 5, 5, 3, 5, 3, 2, 4, 6, 2, 4, 2, 0, 2, 0, -8, 5, 5, 5, 3, 3, 5, 4, 4, 6, 2, 2, 2, 2, 0, 0, -8, 5, 7, 3, 3, 7, 3, 4, 4, 4, 2, 2, 4, 2, 0, 0, -9, 5, 7, 3, 3, 5, 1, 4, 6, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 3, 5, 5, 7, 4, 4, 4, 2, 2, 2, 4, 2, 0, -9, 7, 5, 3, 7, 3, 7, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 2, 2, 2, 4, 0, 0, 0, 0, -9, 5, 3, 3, 1, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 3, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 1, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 3, 5, 7, 3, 4, 4, 6, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 6, 2, 2, 0, 0, 0, 0, -9, 5, 7, 5, 7, 5, 5, 6, 4, 6, 2, 2, 0, 0, 0, 0, -9, 3, 5, 1, 3, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 3, 3, 5, 3, 3, 2, 4, 2, 2, 0, 2, 0, 0, 0, -9, 5, 7, 3, 5, 5, 3, 6, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 1, 2, 2, 4, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 6, 6, 2, 0, 0, 0, 0, -8, 7, 5, 5, 7, 5, 7, 2, 4, 6, 6, 2, 0, 0, 0, 0, -8, 5, 7, 7, 5, 5, 5, 4, 4, 7, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 2, 6, 2, 2, 2, 0, 0, -8, 7, 5, 5, 5, 5, 5, 6, 4, 2, 6, 6, 0, 2, 0, 0, -9, 5, 3, 7, 3, 5, 5, 2, 2, 7, 4, 4, 0, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 2, 4, 2, 6, 2, 0, 0, 0, -8, 5, 3, 3, 3, 3, 5, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 3, 5, 5, 5, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 6, 6, 6, 4, 4, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 6, 4, 6, 2, 4, 6, 0, 0, 0, -8, 5, 7, 5, 3, 5, 7, 6, 4, 4, 6, 4, 4, 0, 0, 0, -8, 5, 5, 7, 5, 5, 3, 6, 4, 6, 4, 4, 4, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 4, 4, 6, 4, 4, 6, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 4, 2, 6, 2, 4, 4, 0, 0, 0, -8, 5, 7, 7, 5, 5, 5, 4, 2, 7, 2, 4, 4, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 6, 2, 2, 4, 0, 0, 0, -9, 5, 5, 7, 5, 7, 5, 6, 2, 7, 2, 2, 4, 0, 0, 0, -8, 5, 5, 5, 5, 7, 3, 4, 4, 7, 0, 0, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 7, 2, 0, 2, 0, 0, 0, -8, 5, 7, 3, 5, 5, 5, 4, 4, 7, 2, 2, 4, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 2, 7, 0, 2, 2, 0, 0, 0, -8, 5, 7, 3, 5, 5, 3, 4, 2, 7, 2, 2, 4, 0, 0, 0, -8, 5, 7, 3, 5, 5, 3, 4, 2, 7, 4, 4, 4, 0, 0, 0, -9, 5, 5, 3, 1, 3, 1, 2, 2, 6, 4, 2, 2, 0, 0, 0, -9, 5, 7, 3, 5, 5, 3, 6, 2, 7, 2, 2, 2, 0, 0, 0, -9, 5, 5, 7, 5, 5, 5, 4, 4, 6, 2, 2, 4, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 6, 4, 2, 6, 6, 2, 2, 0, 0, -8, 7, 3, 3, 1, 3, 5, 2, 6, 2, 4, 2, 2, 0, 0, 0, -8, 5, 3, 5, 3, 3, 7, 6, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 3, 3, 3, 1, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 1, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 1, 7, 2, 4, 6, 2, 2, 0, 0, 0, 0, -8, 5, 7, 5, 5, 3, 7, 4, 6, 4, 4, 2, 0, 0, 0, 0, -9, 7, 7, 7, 7, 5, 5, 4, 6, 4, 6, 4, 2, 2, 0, 0, -9, 7, 7, 5, 5, 7, 5, 6, 6, 6, 4, 2, 0, 2, 0, 0, -8, 7, 7, 5, 7, 5, 7, 6, 6, 7, 4, 4, 2, 2, 0, 0, -8, 7, 7, 5, 7, 7, 5, 2, 4, 6, 6, 2, 2, 0, 0, 0, -8, 7, 7, 5, 3, 7, 7, 4, 4, 6, 4, 2, 0, 0, 0, 0, -8, 5, 7, 5, 5, 7, 7, 4, 2, 6, 2, 2, 0, 0, 0, 0, -9, 7, 7, 5, 3, 7, 7, 2, 6, 7, 2, 4, 0, 0, 0, 0, -8, 3, 5, 5, 3, 3, 5, 2, 4, 7, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 2, 6, 6, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 3, 7, 5, 4, 6, 6, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 7, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 5, 4, 4, 6, 2, 2, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 7, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 3, 3, 1, 3, 3, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 2, 4, 4, 2, 0, 0, 0, -9, 5, 7, 3, 5, 5, 3, 6, 4, 2, 2, 4, 2, 0, 0, 0, -9, 5, 7, 3, 5, 5, 5, 2, 6, 4, 4, 4, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 4, 4, 6, 2, 2, 0, 0, -9, 3, 7, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 7, 6, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 7, 3, 7, 5, 5, 4, 6, 2, 4, 4, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 6, 2, 2, 2, 0, 2, 0, 0, -9, 5, 7, 3, 5, 3, 5, 2, 6, 0, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 3, 5, 5, 4, 6, 2, 2, 4, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 2, 6, 2, 4, 4, 2, 0, 0, 0, -9, 5, 7, 5, 5, 3, 3, 4, 6, 2, 2, 2, 4, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 2, 6, 2, 4, 4, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 3, 3, 5, 2, 6, 2, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 6, 4, 2, 4, 4, 2, 0, 0, -9, 5, 7, 3, 5, 7, 5, 6, 4, 6, 2, 4, 4, 0, 0, 0, -9, 7, 7, 3, 5, 5, 7, 7, 4, 2, 2, 4, 4, 0, 0, 0, -9, 5, 5, 3, 3, 3, 7, 7, 4, 4, 2, 6, 4, 0, 0, 0, -9, 5, 7, 5, 5, 5, 7, 7, 4, 4, 4, 4, 4, 0, 0, 0, -9, 7, 7, 5, 5, 3, 7, 7, 4, 6, 2, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 6, 4, 2, 6, 2, 2, 0, 0, 0, -8, 5, 7, 5, 3, 5, 3, 6, 4, 4, 6, 4, 0, 0, 0, 0, -9, 5, 5, 5, 7, 5, 5, 6, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 7, 3, 3, 5, 7, 6, 4, 4, 2, 4, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 7, 2, 4, 2, 4, 2, 2, 2, 0, 0, -9, 7, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 5, 6, 2, 4, 2, 4, 4, 2, 0, 0, -9, 5, 5, 5, 3, 5, 3, 7, 4, 2, 4, 4, 2, 2, 0, 0, -8, 5, 5, 5, 3, 3, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 3, 7, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 3, 7, 5, 5, 4, 4, 2, 2, 4, 4, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 2, 4, 6, 2, 6, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 7, 6, 6, 2, 4, 2, 2, 2, 0, 0, -8, 5, 5, 3, 3, 3, 5, 4, 6, 2, 2, 4, 2, 2, 0, 0, -8, 5, 3, 3, 3, 3, 5, 4, 6, 2, 2, 6, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 2, 2, 4, 2, 0, 0, 0, -8, 5, 7, 3, 7, 7, 3, 7, 6, 2, 4, 6, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 6, 2, 4, 4, 2, 2, 0, 0, -8, 5, 5, 5, 7, 5, 5, 6, 7, 4, 4, 6, 4, 4, 0, 0, -8, 5, 5, 5, 7, 7, 7, 4, 6, 4, 2, 6, 2, 4, 0, 0, -8, 5, 7, 5, 5, 7, 5, 4, 6, 4, 4, 6, 4, 4, 0, 0, -8, 7, 5, 5, 5, 7, 7, 6, 7, 6, 2, 6, 4, 2, 0, 0, -8, 7, 5, 1, 5, 5, 5, 4, 6, 4, 2, 4, 4, 4, 0, 0, -8, 5, 5, 3, 5, 5, 5, 2, 4, 6, 2, 2, 2, 2, 0, 0, -8, 7, 5, 3, 5, 3, 7, 6, 2, 2, 4, 4, 2, 2, 0, 0, -8, 7, 7, 3, 5, 3, 7, 6, 4, 4, 2, 6, 2, 0, 0, 0, -8, 7, 3, 3, 5, 5, 5, 6, 4, 2, 2, 7, 2, 2, 0, 0, -8, 7, 5, 3, 5, 5, 7, 2, 4, 4, 4, 7, 4, 0, 0, 0, -8, 7, 7, 5, 5, 5, 7, 6, 4, 2, 2, 6, 4, 2, 0, 0, -7, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 6, 4, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 6, 6, 6, 2, 4, 6, 2, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 6, 6, 2, 2, 0, 0, 0, -8, 5, 7, 7, 5, 5, 5, 6, 4, 7, 6, 2, 6, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 6, 6, 6, 4, 2, 6, 0, 0, 0, -7, 5, 5, 3, 7, 3, 3, 4, 2, 2, 2, 4, 0, 0, 0, 0, -7, 5, 5, 1, 5, 3, 7, 2, 4, 2, 4, 4, 0, 0, 0, 0, -8, 5, 5, 5, 3, 3, 3, 4, 2, 2, 4, 2, 2, 2, 0, 0, -8, 5, 5, 3, 5, 3, 5, 2, 2, 4, 6, 6, 0, 0, 0, 0, -8, 5, 5, 3, 3, 5, 5, 6, 4, 6, 4, 4, 0, 0, 0, 0, -9, 5, 7, 5, 7, 7, 3, 6, 7, 4, 4, 4, 0, 0, 0, 0, -9, 7, 7, 5, 7, 7, 3, 6, 7, 4, 6, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 7, 3, 7, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 7, 3, 7, 4, 4, 4, 4, 0, 0, 0, 0, -8, 5, 7, 5, 3, 3, 5, 2, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 7, 5, 3, 3, 5, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 7, 6, 6, 6, 2, 2, 2, 0, 0, 0, -8, 3, 5, 5, 3, 5, 7, 6, 2, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 6, 2, 2, 4, 0, 0, 0, -9, 3, 7, 5, 1, 7, 5, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 3, 3, 5, 3, 3, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 6, 4, 6, 7, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 7, 4, 4, 6, 7, 2, 2, 2, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 2, 6, 4, 4, 2, 0, 0, 0, -9, 7, 3, 5, 5, 3, 3, 2, 2, 4, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 6, 6, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 5, 3, 4, 2, 2, 6, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 2, 6, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 2, 4, 6, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 5, 4, 2, 4, 6, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 7, 3, 4, 4, 4, 4, 2, 4, 2, 0, 0, -9, 5, 7, 5, 7, 5, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -9, 5, 7, 7, 3, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 3, 3, 4, 6, 6, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 6, 6, 2, 2, 4, 2, 0, 0, -9, 7, 7, 3, 7, 5, 5, 4, 6, 6, 4, 4, 2, 2, 0, 0, -9, 5, 5, 3, 5, 7, 3, 2, 6, 6, 4, 2, 4, 2, 0, 0, -9, 7, 7, 5, 5, 7, 3, 4, 4, 4, 6, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 7, 3, 4, 4, 6, 6, 2, 4, 0, 0, 0, -9, 5, 5, 5, 3, 7, 5, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 3, 7, 5, 7, 8, 7, 6, 6, 2, 4, 2, 0, 0, 0, 0, -9, 5, 7, 3, 3, 7, 1, 4, 6, 2, 4, 4, 0, 0, 0, 0, -8, 7, 7, 7, 5, 7, 3, 4, 6, 2, 2, 4, 2, 2, 0, 0, -8, 7, 3, 3, 3, 3, 3, 2, 2, 4, 4, 0, 0, 0, 0, 0, -8, 5, 3, 5, 5, 1, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 6, 4, 6, 4, 2, 2, 0, 0, 0, -9, 3, 7, 3, 3, 1, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 7, 3, 5, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 7, 3, 3, 5, 3, 3, 2, 2, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 5, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 5, 7, 3, 7, 3, 3, 4, 2, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 1, 2, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 3, 5, 1, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 3, 3, 3, 5, 5, 1, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 5, 3, 1, 4, 6, 4, 6, 2, 2, 0, 0, 0, -7, 7, 5, 5, 3, 7, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -7, 5, 7, 3, 5, 5, 1, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 3, 7, 7, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 5, 7, 3, 5, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 1, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 7, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 7, 3, 4, 4, 2, 4, 2, 2, 2, 0, 0, -7, 5, 7, 5, 7, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 1, 2, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 3, 7, 3, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 3, 7, 3, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 3, 3, 3, 5, 3, 2, 2, 2, 2, 2, 2, 2, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 5, 4, 4, 4, 6, 6, 4, 4, 2, 0, -8, 5, 5, 3, 5, 3, 5, 4, 4, 4, 6, 6, 4, 2, 2, 0, -8, 5, 5, 3, 3, 3, 3, 2, 2, 2, 0, 0, 0, 0, 0, 0, -9, 3, 5, 3, 5, 3, 3, 4, 6, 4, 4, 4, 4, 2, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 6, 4, 4, 2, 2, 2, 0, -8, 7, 5, 7, 5, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -7, 7, 5, 5, 5, 3, 3, 4, 4, 4, 4, 4, 2, 4, 0, 0, -8, 7, 7, 5, 3, 3, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 6, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 4, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 6, 6, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 4, 4, 4, 4, 0, 0, 0, 0, -8, 7, 5, 7, 5, 5, 3, 4, 6, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 3, 1, 4, 4, 6, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -7, 7, 5, 3, 3, 3, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 3, 5, 3, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 2, 4, 4, 6, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 2, 2, 4, 6, 2, 2, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 4, 2, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 7, 3, 5, 3, 4, 6, 6, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 7, 3, 5, 3, 4, 4, 6, 4, 4, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 3, 3, 5, 4, 2, 2, 4, 4, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 4, 6, 6, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 7, 3, 5, 7, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 7, 5, 5, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 6, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 3, 4, 6, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 7, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 4, 4, 2, 6, 2, 2, 2, 0, 0, -8, 5, 5, 5, 3, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 5, 5, 5, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 7, 3, 5, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 6, 2, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 4, 2, 0, 0, 0, -7, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -8, 5, 5, 3, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 7, 5, 3, 3, 4, 6, 2, 4, 4, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 2, 4, 4, 4, 4, 0, 0, 0, -7, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -7, 7, 5, 5, 3, 5, 3, 4, 6, 4, 2, 2, 2, 0, 0, 0, -8, 5, 7, 3, 5, 3, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 3, 5, 5, 3, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -7, 5, 7, 3, 3, 3, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -7, 7, 5, 3, 5, 7, 3, 6, 4, 2, 2, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 3, 5, 5, 5, 3, 5, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 3, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 3, 5, 5, 5, 6, 4, 6, 4, 4, 2, 0, 0, 0, -7, 7, 5, 5, 5, 5, 3, 4, 6, 4, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 6, 4, 6, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 7, 5, 3, 4, 6, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -7, 7, 5, 3, 5, 5, 3, 6, 6, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 6, 4, 0, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 2, 2, 4, 4, 4, 2, 0, 0, 0, -8, 5, 7, 3, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 6, 2, 4, 4, 0, 0, 0, 0, -8, 7, 5, 3, 7, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 2, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 5, 5, 5, 3, 4, 4, 4, 6, 2, 0, 0, 0, 0, -8, 7, 5, 5, 3, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 2, 2, 4, 2, 2, 2, 0, 0, -8, 5, 7, 5, 5, 3, 3, 6, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 5, 7, 5, 5, 5, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 6, 4, 2, 2, 0, 0, 0, -8, 3, 3, 3, 3, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 3, 5, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 4, 2, 6, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 3, 3, 3, 3, 4, 6, 6, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 2, 6, 6, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 3, 5, 5, 3, 2, 4, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 7, 5, 3, 5, 4, 6, 6, 4, 2, 2, 0, 0, 0, -8, 5, 3, 3, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 3, 5, 3, 4, 4, 4, 6, 4, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -7, 5, 5, 3, 5, 5, 5, 2, 4, 6, 2, 4, 2, 0, 0, 0, -8, 7, 5, 5, 3, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 7, 5, 3, 5, 1, 4, 6, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 3, 4, 4, 6, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 5, 5, 5, 5, 2, 6, 6, 6, 2, 2, 0, 0, 0, -8, 7, 5, 3, 3, 5, 5, 4, 6, 6, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 7, 3, 5, 6, 4, 2, 4, 4, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 5, 2, 4, 4, 4, 2, 0, 0, 0, 0, -7, 7, 7, 5, 5, 3, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 3, 5, 4, 6, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 7, 5, 3, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 3, 5, 5, 5, 4, 2, 2, 4, 2, 0, 0, 0, 0, -7, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 3, 3, 4, 4, 4, 6, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 6, 6, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 4, 4, 6, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -7, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 3, 7, 5, 5, 4, 6, 6, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 2, 4, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 3, 3, 3, 4, 4, 6, 2, 2, 2, 0, 0, 0, -7, 5, 7, 5, 5, 5, 5, 2, 6, 4, 6, 2, 0, 0, 0, 0, -8, 5, 7, 5, 5, 5, 3, 6, 4, 4, 4, 4, 2, 0, 0, 0, -8, 5, 7, 5, 5, 7, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 7, 3, 7, 5, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -7, 5, 5, 3, 5, 3, 3, 2, 6, 6, 4, 2, 2, 0, 0, 0, -7, 5, 5, 5, 5, 5, 7, 2, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 5, 6, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 5, 2, 2, 4, 6, 2, 2, 0, 0, 0, -7, 5, 5, 7, 5, 5, 3, 4, 6, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 7, 3, 3, 4, 4, 6, 4, 2, 2, 2, 0, 0, -8, 5, 7, 7, 3, 5, 3, 4, 6, 6, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 5, 5, 3, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 7, 5, 3, 6, 4, 4, 4, 4, 2, 2, 0, 0, -8, 5, 5, 5, 7, 3, 5, 6, 4, 2, 2, 4, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 1, 4, 6, 6, 2, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 4, 0, 0, 0, 0, -7, 5, 5, 3, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 5, 7, 3, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 5, 4, 4, 2, 6, 2, 2, 0, 0, 0, -7, 5, 5, 7, 5, 5, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 6, 6, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 1, 3, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 5, 7, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 4, 2, 4, 4, 2, 2, 0, 0, -8, 3, 5, 5, 5, 5, 3, 6, 6, 2, 4, 4, 2, 2, 0, 0, -9, 7, 5, 3, 5, 5, 5, 6, 4, 4, 4, 4, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 5, 2, 4, 6, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 6, 2, 2, 0, 0, 0, -7, 7, 5, 3, 7, 3, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 2, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 2, 4, 2, 4, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 7, 5, 3, 4, 6, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 3, 5, 3, 5, 2, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 6, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 3, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 7, 5, 5, 2, 6, 4, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 7, 5, 3, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 6, 2, 4, 6, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 3, 6, 4, 2, 6, 2, 2, 0, 0, 0, -8, 7, 5, 7, 5, 5, 3, 4, 6, 2, 4, 4, 2, 0, 0, 0, -8, 7, 7, 3, 5, 7, 5, 6, 4, 4, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -8, 5, 3, 3, 3, 3, 3, 2, 2, 2, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 1, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 3, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 2, 0, 0, -7, 7, 7, 5, 7, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 3, 7, 5, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 3, 3, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 3, 5, 5, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 4, 2, 4, 2, 2, 2, 0, 0, -8, 5, 7, 3, 5, 5, 3, 6, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 7, 5, 3, 4, 2, 4, 4, 4, 0, 0, 0, 0, -7, 5, 5, 3, 5, 5, 3, 4, 4, 4, 2, 4, 2, 0, 0, 0, -8, 7, 5, 5, 7, 5, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 3, 5, 4, 4, 6, 4, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 2, 2, 6, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 6, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 7, 3, 4, 4, 4, 2, 4, 2, 2, 0, 0, -8, 5, 5, 5, 7, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 7, 5, 5, 6, 6, 6, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 1, 4, 4, 2, 6, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 2, 4, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 3, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 7, 5, 5, 5, 4, 6, 6, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 3, 4, 6, 2, 2, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 3, 6, 6, 2, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -7, 5, 7, 5, 7, 5, 1, 6, 4, 4, 6, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 7, 5, 5, 3, 5, 4, 2, 4, 6, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 5, 7, 7, 5, 7, 5, 4, 6, 6, 2, 4, 4, 0, 0, 0, -9, 5, 7, 3, 7, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 5, 5, 7, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 7, 3, 7, 5, 3, 6, 4, 4, 4, 4, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 4, 4, 6, 2, 2, 0, 0, -8, 5, 5, 7, 5, 5, 7, 4, 2, 4, 6, 2, 2, 2, 0, 0, -8, 7, 5, 5, 5, 5, 1, 4, 2, 4, 2, 2, 0, 0, 0, 0, -7, 7, 5, 5, 5, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 2, 2, 6, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 3, 5, 6, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 7, 7, 5, 7, 5, 3, 4, 6, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -8, 5, 7, 5, 7, 5, 3, 6, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 3, 6, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 5, 5, 3, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 7, 5, 5, 3, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 3, 1, 6, 4, 4, 6, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 3, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 4, 4, 2, 4, 2, 2, 0, 0, -9, 7, 7, 5, 5, 3, 3, 6, 4, 6, 4, 4, 2, 2, 0, 0, -8, 7, 5, 3, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -7, 7, 7, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 3, 5, 5, 3, 4, 6, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 3, 7, 3, 4, 6, 4, 4, 2, 0, 2, 0, 0, -9, 7, 7, 3, 5, 5, 3, 2, 4, 2, 4, 2, 2, 2, 0, 0, -8, 5, 5, 3, 5, 5, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -7, 7, 5, 5, 5, 5, 3, 4, 4, 2, 4, 4, 2, 0, 0, 0, -8, 7, 7, 3, 7, 3, 5, 4, 6, 4, 4, 2, 0, 2, 0, 0, -9, 7, 3, 5, 7, 5, 5, 6, 6, 4, 4, 4, 2, 2, 0, 0, -8, 7, 5, 5, 7, 5, 3, 4, 6, 6, 2, 2, 2, 2, 0, 0, -8, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 5, 5, 5, 5, 6, 6, 6, 4, 4, 2, 0, 0, 0, -8, 7, 7, 5, 5, 7, 3, 6, 6, 2, 2, 2, 2, 0, 0, 0, -8, 7, 3, 5, 3, 7, 3, 6, 4, 4, 4, 4, 2, 2, 0, 0, -8, 7, 5, 5, 5, 3, 3, 4, 2, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -7, 7, 5, 5, 5, 5, 3, 6, 4, 4, 6, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -8, 5, 7, 3, 5, 5, 5, 4, 4, 6, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 3, 5, 3, 3, 6, 6, 6, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 7, 5, 5, 6, 6, 4, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 7, 5, 6, 4, 6, 4, 2, 2, 4, 0, 0, -9, 5, 5, 3, 3, 5, 3, 4, 2, 4, 2, 4, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 3, 5, 6, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 7, 3, 6, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 2, 4, 4, 0, 2, 0, 0, 0, -8, 7, 7, 5, 5, 3, 5, 4, 4, 2, 4, 4, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 4, 4, 4, 2, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 7, 3, 7, 5, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 3, 3, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 3, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 6, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 7, 3, 5, 3, 3, 4, 4, 4, 4, 4, 0, 0, 0, 0, -9, 7, 5, 5, 5, 7, 5, 6, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 5, 6, 2, 4, 2, 4, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 2, 4, 4, 2, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 3, 5, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 7, 5, 7, 5, 5, 3, 6, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 4, 2, 6, 4, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 3, 5, 4, 2, 6, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 7, 5, 4, 2, 4, 4, 4, 2, 2, 0, 0, -9, 7, 5, 5, 7, 5, 7, 4, 2, 4, 2, 4, 2, 2, 0, 0, -9, 5, 7, 3, 5, 5, 5, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 2, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 3, 5, 5, 5, 4, 2, 4, 6, 2, 2, 0, 0, 0, -8, 7, 5, 5, 7, 5, 5, 6, 2, 4, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 6, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 7, 3, 4, 4, 2, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 3, 5, 3, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 7, 5, 3, 5, 6, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 7, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 7, 5, 5, 5, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 7, 3, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 4, 4, 4, 6, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 6, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 3, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 7, 5, 5, 5, 4, 6, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 1, 3, 2, 6, 2, 2, 4, 2, 0, 0, 0, -9, 5, 5, 7, 5, 3, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 7, 5, 3, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 7, 5, 5, 5, 6, 4, 6, 4, 4, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 5, 2, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 2, 4, 4, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 4, 4, 4, 4, 2, 0, 0, 0, -8, 5, 3, 5, 3, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 7, 5, 5, 3, 4, 2, 4, 2, 2, 0, 2, 0, 0, -9, 5, 5, 3, 5, 3, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 7, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 2, 4, 4, 6, 2, 2, 2, 0, 0, -9, 5, 7, 5, 3, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 3, 3, 3, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 3, 7, 5, 5, 5, 6, 4, 6, 6, 2, 2, 0, 0, 0, -9, 7, 5, 7, 5, 7, 5, 4, 6, 4, 2, 4, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 4, 4, 2, 4, 2, 0, 0, 0, -9, 7, 3, 5, 3, 1, 1, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 3, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 7, 5, 5, 3, 6, 4, 4, 6, 2, 2, 2, 0, 0, -8, 7, 5, 7, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 3, 5, 3, 6, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 7, 5, 5, 5, 6, 4, 4, 6, 4, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 7, 5, 5, 5, 6, 4, 4, 2, 4, 2, 2, 0, 0, -8, 7, 5, 7, 5, 3, 5, 4, 2, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 4, 4, 2, 6, 2, 2, 0, 0, 0, -9, 7, 5, 7, 7, 5, 3, 6, 4, 2, 2, 4, 0, 0, 0, 0, -9, 5, 7, 7, 5, 5, 3, 2, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 7, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 5, 5, 2, 2, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 4, 2, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 2, 4, 4, 6, 2, 0, 0, 0, -8, 5, 7, 3, 5, 5, 5, 4, 4, 4, 2, 4, 0, 0, 0, 0, -9, 7, 5, 3, 7, 3, 5, 4, 2, 4, 6, 4, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 3, 5, 3, 5, 5, 4, 4, 4, 6, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 3, 5, 4, 4, 4, 4, 4, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 2, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 3, 7, 3, 5, 5, 6, 4, 6, 4, 4, 2, 0, 0, 0, -9, 5, 3, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 2, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 6, 4, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 7, 5, 5, 5, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 2, 4, 4, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 3, 5, 3, 3, 1, 3, 2, 2, 2, 2, 2, 2, 4, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 3, 3, 3, 5, 5, 5, 4, 2, 4, 2, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 3, 6, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 7, 5, 3, 5, 3, 4, 2, 2, 6, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 7, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 5, 3, 5, 5, 2, 2, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 7, 5, 5, 3, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 6, 6, 2, 2, 2, 0, 0, 0, -8, 5, 5, 7, 3, 7, 5, 2, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 6, 2, 4, 4, 2, 0, 0, 0, -9, 7, 5, 7, 3, 7, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 3, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 3, 5, 7, 6, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 7, 5, 5, 7, 4, 6, 4, 4, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 7, 5, 5, 3, 4, 6, 6, 4, 2, 2, 0, 0, 0, -9, 5, 3, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 7, 5, 3, 5, 6, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 4, 4, 2, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 3, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 7, 5, 3, 5, 2, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 7, 5, 5, 5, 4, 4, 4, 4, 4, 0, 0, 0, 0, -9, 7, 3, 5, 5, 3, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 7, 3, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 7, 7, 5, 3, 1, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 3, 5, 5, 5, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 7, 3, 7, 3, 4, 4, 2, 6, 2, 2, 0, 0, 0, -9, 3, 5, 5, 5, 5, 3, 4, 4, 4, 6, 2, 0, 0, 0, 0, -9, 7, 5, 5, 3, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 5, 3, 4, 2, 4, 2, 4, 2, 0, 0, 0, -8, 7, 3, 7, 3, 7, 5, 4, 4, 4, 6, 2, 0, 0, 0, 0, -9, 7, 7, 7, 3, 5, 3, 4, 4, 6, 2, 4, 2, 0, 0, 0, -9, 5, 5, 7, 5, 3, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 4, 4, 6, 4, 2, 0, 0, 0, 0, -8, 7, 3, 5, 5, 5, 3, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 6, 2, 4, 2, 0, 2, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 2, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 3, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 4, 4, 4, 4, 0, 0, 0, 0, -9, 5, 5, 5, 5, 7, 3, 6, 6, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 3, 5, 5, 5, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 3, 3, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 7, 3, 3, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 7, 7, 3, 4, 4, 4, 2, 4, 2, 2, 0, 0, -9, 5, 7, 7, 7, 7, 3, 6, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 3, 3, 5, 3, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 2, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 7, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 4, 4, 4, 4, 4, 0, 0, 0, 0, -9, 5, 5, 7, 5, 5, 3, 6, 4, 6, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 6, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 7, 3, 7, 5, 3, 4, 2, 2, 6, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 5, 4, 2, 4, 2, 4, 0, 0, 0, 0, -9, 5, 7, 5, 7, 5, 5, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 3, 3, 5, 5, 6, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 6, 4, 4, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 7, 5, 3, 5, 3, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 5, 5, 4, 4, 2, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 2, 4, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 7, 4, 4, 2, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 3, 5, 3, 4, 4, 4, 4, 4, 0, 0, 0, 0, -8, 7, 5, 5, 3, 7, 3, 6, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 7, 5, 5, 6, 2, 4, 2, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 3, 5, 3, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 7, 3, 7, 5, 5, 6, 6, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 7, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -7, 7, 5, 3, 5, 7, 3, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 2, 6, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 2, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 7, 3, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 3, 4, 4, 4, 2, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 7, 3, 4, 4, 4, 2, 4, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 2, 2, 0, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 3, 5, 4, 4, 4, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 6, 2, 4, 6, 0, 0, 0, 0, -8, 5, 5, 3, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 7, 3, 2, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 3, 5, 5, 5, 3, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 3, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 2, 2, 6, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 7, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 2, 6, 6, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 4, 2, 6, 4, 2, 0, 0, 0, 0, -7, 7, 5, 5, 7, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 6, 6, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 3, 5, 6, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 4, 2, 4, 4, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 2, 2, 4, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 3, 5, 5, 3, 2, 4, 6, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 2, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 6, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 3, 5, 3, 6, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 5, 5, 3, 3, 4, 6, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 7, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 4, 4, 6, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 7, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -7, 7, 7, 5, 5, 3, 3, 4, 4, 6, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 3, 3, 2, 4, 2, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 4, 4, 2, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 7, 3, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 7, 5, 3, 3, 4, 2, 4, 4, 4, 2, 2, 0, 0, -9, 5, 5, 3, 3, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 3, 5, 3, 3, 6, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 3, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -7, 7, 5, 3, 5, 3, 3, 4, 4, 6, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 7, 5, 5, 6, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 7, 7, 5, 5, 1, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 3, 2, 4, 4, 6, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 7, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 7, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 5, 3, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 7, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 6, 2, 2, 2, 2, 2, 0, 0, -9, 5, 7, 7, 5, 5, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 7, 5, 7, 5, 5, 4, 2, 6, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 7, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 4, 6, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 4, 6, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 1, 4, 6, 6, 4, 2, 0, 0, 0, 0, -9, 5, 3, 3, 5, 5, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 3, 3, 7, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 2, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 2, 6, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 2, 6, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 3, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 3, 4, 6, 4, 2, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 2, 4, 0, 0, 0, 0, -9, 3, 7, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 7, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 7, 5, 5, 3, 5, 2, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 2, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 7, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 3, 5, 6, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 4, 2, 4, 4, 0, 0, 0, 0, -9, 5, 3, 3, 3, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 2, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 2, 4, 4, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 6, 2, 4, 4, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 7, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 7, 7, 5, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 3, 5, 5, 3, 3, 1, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 7, 5, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 7, 5, 7, 3, 5, 4, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 2, 2, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 4, 4, 6, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 6, 4, 4, 2, 4, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 4, 2, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 3, 3, 3, 3, 6, 6, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 2, 6, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 5, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 3, 7, 5, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 7, 5, 5, 4, 6, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 4, 4, 0, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 7, 5, 5, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 6, 4, 2, 4, 4, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 4, 2, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 7, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 7, 7, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 6, 6, 6, 6, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 5, 5, 5, 3, 4, 6, 2, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 5, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 7, 7, 7, 7, 5, 5, 4, 4, 6, 2, 2, 4, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 5, 5, 3, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 7, 5, 4, 4, 6, 4, 2, 0, 0, 0, 0, -7, 5, 7, 3, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 7, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 7, 5, 3, 3, 4, 2, 6, 2, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -7, 5, 7, 3, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 3, 3, 2, 6, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 7, 7, 5, 5, 2, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 5, 5, 3, 3, 4, 6, 4, 4, 4, 2, 0, 0, 0, -7, 5, 5, 5, 5, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 4, 2, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 7, 7, 3, 5, 3, 3, 4, 6, 6, 6, 2, 0, 0, 0, 0, -8, 7, 5, 7, 5, 7, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 4, 4, 2, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 7, 1, 4, 4, 4, 2, 4, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 5, 5, 5, 3, 6, 6, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 3, 5, 5, 3, 2, 4, 2, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 5, 5, 3, 5, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 5, 5, 7, 3, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 2, 4, 4, 2, 4, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 3, 7, 5, 5, 5, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 2, 6, 4, 6, 2, 0, 0, 0, 0, -9, 5, 5, 7, 3, 5, 3, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -7, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 3, 3, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 7, 5, 3, 6, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 6, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 2, 4, 6, 4, 2, 2, 2, 0, 0, -9, 7, 5, 7, 5, 5, 3, 4, 4, 2, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 7, 5, 5, 6, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 7, 3, 6, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 7, 5, 3, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 7, 5, 7, 3, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 3, 6, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 3, 6, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 7, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 7, 5, 3, 5, 3, 4, 2, 2, 4, 2, 2, 2, 0, 0, -9, 5, 5, 7, 5, 5, 3, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 6, 4, 6, 4, 0, 2, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 1, 4, 6, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 3, 5, 4, 2, 2, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 3, 4, 4, 6, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -8, 3, 7, 7, 3, 5, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 7, 7, 7, 5, 1, 6, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 7, 5, 6, 2, 2, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 3, 3, 4, 4, 6, 4, 4, 0, 0, 0, 0, -8, 7, 5, 7, 5, 5, 5, 6, 2, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 7, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 2, 4, 4, 4, 2, 0, 2, 0, 0, -9, 5, 5, 7, 5, 7, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 3, 5, 2, 4, 2, 6, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 5, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 7, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 2, 4, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 2, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 4, 2, 4, 2, 2, 2, 2, 0, 0, -9, 7, 3, 5, 3, 5, 3, 6, 2, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 2, 4, 2, 4, 4, 2, 0, 0, 0, -9, 7, 7, 5, 5, 7, 3, 2, 6, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 3, 3, 3, 4, 4, 4, 4, 4, 2, 2, 0, 0, -9, 7, 5, 5, 3, 5, 1, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 7, 3, 3, 2, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 3, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 6, 4, 2, 2, 2, 0, 0, -9, 5, 3, 5, 5, 3, 1, 2, 2, 2, 4, 4, 2, 0, 0, 0, -9, 7, 3, 5, 5, 5, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 4, 4, 2, 4, 4, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 2, 6, 2, 4, 4, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 7, 3, 3, 5, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 5, 3, 6, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 2, 4, 6, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 6, 4, 2, 2, 2, 0, 0, 0, 0, -8, 3, 5, 5, 5, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -7, 7, 5, 5, 3, 5, 1, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 7, 1, 4, 6, 6, 2, 2, 2, 0, 0, 0, -9, 7, 5, 7, 3, 5, 5, 2, 4, 2, 2, 4, 2, 2, 0, 0, -9, 7, 5, 5, 5, 7, 5, 6, 2, 2, 6, 2, 2, 0, 0, 0, -9, 5, 3, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 8, 5, 5, 5, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 7, 3, 5, 4, 2, 6, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 5, 3, 6, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 5, 2, 2, 2, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 4, 4, 4, 6, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 3, 5, 1, 6, 4, 2, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 7, 5, 7, 6, 6, 4, 6, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 5, 5, 2, 2, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 5, 5, 5, 5, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 5, 1, 4, 4, 2, 2, 2, 2, 2, 0, 0, -8, 5, 5, 3, 3, 3, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 7, 5, 4, 6, 6, 4, 4, 2, 0, 0, 0, -8, 7, 7, 5, 5, 7, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 2, 2, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 1, 6, 2, 4, 4, 2, 2, 2, 0, 0, -8, 5, 7, 5, 3, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 3, 3, 4, 2, 6, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 7, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 3, 3, 4, 6, 2, 4, 2, 2, 0, 0, 0, -8, 5, 7, 3, 5, 7, 5, 6, 6, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 3, 3, 3, 3, 6, 2, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 5, 5, 5, 3, 4, 6, 4, 4, 4, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 6, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 1, 4, 4, 6, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 1, 3, 5, 2, 4, 2, 2, 2, 2, 2, 0, 0, -8, 3, 5, 3, 3, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 3, 5, 5, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 2, 0, 0, -8, 5, 3, 5, 3, 3, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -7, 7, 7, 5, 5, 7, 3, 6, 4, 6, 4, 4, 0, 0, 0, 0, -7, 7, 7, 5, 5, 7, 3, 6, 4, 6, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 2, 4, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 2, 4, 2, 4, 2, 0, 0, 0, -8, 5, 5, 5, 3, 3, 1, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 7, 5, 5, 3, 6, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 2, 2, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 5, 7, 7, 5, 5, 3, 6, 6, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 7, 3, 5, 1, 6, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 7, 5, 5, 1, 4, 2, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 3, 1, 1, 4, 4, 2, 4, 2, 2, 2, 0, 0, -8, 3, 5, 5, 3, 5, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -8, 5, 5, 5, 3, 3, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -7, 7, 7, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 7, 3, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 3, 5, 7, 5, 3, 3, 4, 2, 2, 4, 4, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 2, 2, 4, 2, 0, 0, 0, -9, 3, 5, 5, 3, 3, 5, 4, 4, 2, 2, 4, 2, 2, 0, 0, -8, 5, 3, 5, 1, 3, 5, 4, 2, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 4, 6, 2, 4, 4, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 2, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 3, 2, 6, 6, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 5, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 3, 3, 1, 3, 3, 3, 2, 4, 4, 2, 4, 2, 2, 0, 0, -8, 5, 5, 5, 3, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 4, 2, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 7, 5, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 2, 2, 2, 4, 2, 0, 0, 0, 0, -9, 7, 3, 5, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 6, 2, 4, 2, 2, 2, 0, 0, -9, 5, 5, 7, 5, 3, 3, 6, 6, 4, 2, 2, 0, 0, 0, 0, -8, 5, 3, 7, 3, 3, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 6, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 7, 5, 5, 3, 4, 2, 6, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 7, 3, 5, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 6, 6, 6, 4, 4, 2, 0, 0, 0, -9, 5, 5, 7, 5, 5, 3, 6, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 3, 5, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 3, 5, 3, 5, 3, 5, 4, 2, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 5, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 2, 4, 2, 4, 4, 0, 0, 0, 0, -8, 7, 5, 5, 7, 5, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 2, 6, 2, 4, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 3, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 7, 3, 3, 5, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 3, 3, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 7, 5, 5, 6, 4, 4, 6, 2, 2, 0, 0, 0, -9, 7, 7, 5, 3, 5, 7, 2, 4, 6, 6, 2, 0, 0, 0, 0, -9, 5, 7, 7, 3, 7, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 2, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 3, 5, 1, 1, 4, 4, 2, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 2, 6, 2, 2, 0, 0, 0, 0, -8, 7, 7, 5, 3, 7, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 7, 5, 5, 5, 4, 2, 4, 4, 2, 2, 2, 0, 0, -9, 7, 7, 5, 3, 3, 5, 6, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 5, 2, 2, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 5, 5, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 3, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 7, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 3, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 3, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 1, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 7, 5, 5, 5, 3, 4, 6, 6, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 6, 4, 4, 2, 4, 2, 2, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 6, 4, 4, 4, 2, 2, 2, 0, 0, -9, 3, 3, 5, 3, 3, 3, 2, 4, 4, 2, 2, 0, 2, 0, 0, -9, 3, 3, 5, 3, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 7, 5, 5, 3, 4, 4, 6, 2, 4, 0, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 6, 2, 4, 2, 4, 2, 2, 0, 0, -9, 3, 3, 5, 3, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 5, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 3, 7, 3, 3, 5, 2, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 1, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 6, 2, 6, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 3, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 3, 3, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 5, 3, 5, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 1, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 5, 5, 3, 5, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 5, 5, 7, 5, 5, 3, 4, 6, 4, 4, 2, 2, 2, 0, 0, -8, 5, 7, 5, 5, 5, 5, 4, 4, 6, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 5, 6, 2, 2, 4, 4, 2, 0, 0, 0, -8, 3, 5, 3, 5, 1, 1, 4, 2, 2, 2, 4, 2, 0, 0, 0, -9, 5, 5, 3, 1, 5, 1, 4, 2, 4, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 1, 2, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 6, 2, 2, 0, 0, 0, 0, -9, 5, 7, 7, 5, 7, 3, 6, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 1, 3, 4, 4, 2, 6, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 4, 4, 2, 2, 0, 2, 0, 0, -9, 5, 3, 3, 5, 3, 3, 4, 4, 2, 4, 6, 2, 0, 0, 0, -9, 3, 5, 3, 5, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -7, 5, 5, 5, 5, 5, 5, 4, 4, 6, 6, 2, 2, 0, 0, 0, -7, 7, 5, 5, 5, 3, 3, 4, 4, 4, 6, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 6, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 2, 6, 4, 4, 2, 2, 2, 0, 0, -8, 3, 5, 1, 3, 1, 3, 2, 4, 4, 4, 2, 0, 2, 0, 0, -8, 5, 5, 3, 3, 3, 5, 2, 2, 4, 2, 4, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 1, 5, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 3, 7, 3, 3, 3, 3, 2, 4, 2, 2, 2, 0, 0, 0, 0, -7, 5, 3, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 3, 5, 5, 3, 6, 4, 2, 4, 2, 0, 0, 0, 0, -9, 7, 5, 3, 5, 5, 5, 2, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 3, 7, 3, 3, 6, 4, 6, 4, 2, 2, 2, 0, 0, -9, 7, 5, 3, 3, 5, 3, 2, 4, 2, 2, 2, 2, 2, 0, 0, -8, 3, 5, 3, 1, 3, 3, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 1, 3, 5, 3, 4, 2, 2, 2, 6, 2, 0, 0, 0, -9, 3, 5, 1, 3, 5, 5, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 5, 5, 3, 3, 6, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 3, 5, 3, 3, 5, 2, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 3, 5, 5, 3, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 3, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 3, 5, 3, 2, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 1, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 1, 3, 5, 3, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 1, 4, 4, 2, 2, 2, 2, 2, 0, 0, -7, 7, 3, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 3, 5, 5, 3, 6, 6, 6, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 6, 4, 2, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 1, 4, 6, 4, 4, 4, 2, 0, 0, 0, -8, 5, 5, 3, 3, 3, 5, 4, 2, 2, 4, 4, 2, 0, 0, 0, -8, 5, 5, 3, 3, 5, 1, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 3, 3, 3, 3, 1, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 3, 3, 3, 5, 3, 1, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -7, 5, 5, 7, 3, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 4, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 4, 2, 4, 2, 2, 2, 0, 0, -9, 7, 5, 7, 5, 5, 3, 6, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 1, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 3, 2, 4, 2, 2, 2, 2, 2, 0, 0, -9, 3, 5, 3, 5, 3, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -8, 5, 5, 3, 3, 1, 3, 4, 4, 2, 2, 4, 2, 2, 0, 0, -9, 3, 5, 5, 3, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 2, 4, 6, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 7, 7, 5, 3, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 3, 5, 3, 3, 5, 1, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 3, 3, 3, 3, 1, 5, 2, 4, 2, 2, 4, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 1, 4, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 2, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 5, 5, 5, 3, 6, 6, 4, 6, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 7, 3, 6, 6, 4, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 4, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 2, 4, 6, 2, 2, 2, 0, 0, -9, 5, 5, 5, 3, 1, 3, 2, 2, 4, 2, 4, 2, 2, 0, 0, -9, 5, 3, 3, 5, 5, 5, 2, 4, 2, 4, 2, 2, 2, 0, 0, -9, 3, 7, 3, 3, 5, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 3, 5, 5, 3, 3, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 3, 4, 6, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 5, 2, 4, 2, 2, 2, 2, 0, 0, 0, -9, 3, 7, 3, 3, 5, 3, 4, 2, 4, 2, 2, 2, 2, 0, 0, -9, 3, 5, 5, 3, 3, 1, 4, 4, 4, 2, 0, 2, 2, 0, 0, -9, 5, 3, 3, 3, 3, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 7, 5, 2, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 3, 3, 1, 5, 3, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 1, 3, 3, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 1, 3, 4, 4, 2, 2, 2, 0, 0, 0, 0, -9, 5, 5, 1, 5, 5, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 7, 3, 3, 5, 5, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 5, 5, 2, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 7, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 6, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 7, 5, 3, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 6, 6, 4, 4, 4, 2, 0, 0, 0, -9, 3, 3, 5, 3, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 3, 3, 3, 5, 3, 3, 4, 2, 6, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -9, 3, 5, 3, 5, 3, 3, 4, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 5, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 6, 6, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 3, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 7, 5, 5, 4, 2, 4, 2, 4, 2, 0, 0, 0, -9, 3, 7, 3, 5, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 3, 5, 5, 3, 3, 1, 4, 6, 2, 4, 2, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 6, 4, 2, 2, 2, 2, 2, 0, 0, -9, 3, 5, 3, 3, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 3, 5, 5, 3, 5, 2, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 7, 7, 5, 5, 5, 4, 2, 4, 6, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 6, 6, 4, 6, 4, 2, 0, 0, 0, -9, 5, 7, 5, 3, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 1, 5, 3, 3, 5, 1, 2, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 3, 5, 5, 3, 6, 2, 4, 2, 2, 4, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 6, 6, 4, 2, 2, 0, 0, 0, -9, 3, 5, 5, 3, 7, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 3, 3, 4, 6, 4, 4, 4, 2, 0, 0, 0, -9, 3, 5, 5, 5, 5, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 3, 7, 5, 5, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 4, 2, 4, 4, 2, 2, 0, 0, -9, 5, 3, 3, 1, 3, 3, 2, 2, 4, 4, 2, 2, 2, 0, 0, -9, 5, 3, 5, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 5, 3, 2, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 3, 5, 5, 3, 1, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 7, 3, 5, 2, 2, 6, 2, 2, 2, 0, 0, 0, -9, 7, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 6, 4, 4, 0, 0, 0, 0, -8, 7, 5, 5, 7, 5, 3, 4, 6, 2, 4, 6, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 7, 7, 5, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -7, 5, 7, 5, 5, 5, 3, 6, 6, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 7, 3, 5, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 5, 6, 2, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 6, 4, 4, 2, 0, 0, 0, -9, 5, 5, 3, 7, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 7, 3, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 8, 5, 5, 7, 5, 3, 2, 6, 6, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 5, 2, 2, 4, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 3, 5, 5, 5, 4, 4, 6, 4, 2, 0, 0, 0, 0, -8, 7, 7, 5, 7, 3, 5, 4, 6, 4, 2, 2, 2, 2, 0, 0, -9, 7, 7, 5, 5, 3, 5, 4, 6, 6, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 7, 5, 3, 4, 4, 6, 4, 2, 0, 0, 0, 0, -8, 5, 7, 3, 5, 3, 3, 4, 6, 6, 4, 2, 0, 0, 0, 0, -9, 5, 5, 7, 5, 5, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 7, 7, 5, 5, 4, 2, 2, 4, 4, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 2, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 4, 6, 6, 4, 4, 0, 0, 0, 0, -8, 7, 5, 5, 3, 5, 1, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 2, 4, 2, 2, 2, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 6, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 7, 5, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 4, 2, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 2, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 7, 5, 3, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 3, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -9, 8, 5, 3, 5, 3, 5, 4, 2, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 4, 4, 6, 2, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 3, 7, 3, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 7, 5, 5, 5, 5, 3, 2, 2, 6, 2, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 4, 6, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 5, 2, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 3, 6, 4, 6, 2, 4, 0, 2, 0, 0, -9, 5, 7, 5, 5, 5, 1, 4, 4, 2, 4, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 3, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 6, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 7, 3, 4, 6, 6, 6, 2, 2, 2, 0, 0, -9, 3, 7, 5, 5, 7, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 5, 5, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 7, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 8, 5, 5, 5, 3, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 6, 4, 2, 4, 2, 2, 0, 0, -9, 7, 5, 5, 7, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -7, 7, 5, 5, 5, 5, 3, 6, 6, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 2, 4, 4, 2, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 4, 2, 4, 2, 0, 0, 0, 0, -8, 7, 5, 7, 5, 5, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 6, 4, 4, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 6, 6, 2, 2, 2, 0, 0, 0, -9, 5, 7, 3, 5, 5, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -7, 5, 5, 5, 7, 5, 3, 6, 2, 4, 2, 4, 2, 0, 0, 0, -8, 7, 7, 5, 5, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 3, 4, 6, 4, 4, 4, 2, 2, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 5, 5, 3, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 1, 4, 4, 2, 2, 2, 2, 2, 0, 0, -8, 7, 5, 3, 5, 5, 5, 2, 4, 6, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 3, 4, 4, 2, 4, 2, 0, 2, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 3, 1, 4, 4, 6, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 7, 5, 5, 6, 4, 4, 2, 4, 2, 2, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 4, 6, 2, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 3, 3, 4, 6, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 7, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 6, 4, 2, 4, 2, 2, 0, 0, -8, 5, 5, 3, 5, 5, 5, 2, 4, 6, 2, 2, 0, 0, 0, 0, -7, 5, 7, 5, 7, 5, 5, 2, 6, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 7, 5, 3, 2, 6, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 4, 2, 2, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 5, 7, 3, 3, 4, 4, 4, 6, 4, 2, 0, 0, 0, -8, 7, 7, 5, 3, 3, 5, 4, 4, 4, 6, 4, 0, 0, 0, 0, -8, 7, 5, 5, 5, 3, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 1, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 3, 5, 4, 4, 4, 4, 2, 4, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 6, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 7, 5, 3, 5, 6, 4, 6, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 3, 7, 5, 3, 2, 6, 6, 4, 2, 2, 0, 0, 0, -8, 7, 7, 3, 5, 5, 3, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 4, 4, 6, 2, 0, 0, 0, 0, -7, 5, 7, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 7, 3, 3, 6, 6, 2, 2, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 7, 5, 3, 3, 5, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 3, 5, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 3, 7, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 7, 5, 3, 7, 3, 2, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 7, 5, 7, 5, 3, 6, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -7, 5, 5, 5, 3, 5, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 6, 2, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 3, 1, 4, 6, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 6, 4, 4, 4, 4, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 3, 5, 4, 4, 4, 2, 4, 0, 0, 0, 0, -8, 7, 5, 5, 7, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 7, 5, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 7, 5, 3, 5, 5, 4, 6, 2, 2, 2, 2, 2, 0, 0, -8, 5, 5, 3, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 1, 4, 4, 4, 4, 0, 0, 0, 0, 0, -9, 7, 5, 5, 5, 3, 5, 6, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 6, 4, 2, 2, 0, 2, 0, 0, -9, 5, 5, 5, 7, 3, 5, 4, 4, 4, 2, 2, 4, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 7, 5, 5, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 6, 4, 2, 2, 2, 2, 0, 0, -8, 5, 5, 3, 3, 3, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -7, 5, 5, 5, 5, 5, 3, 6, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 4, 4, 2, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 2, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -7, 5, 5, 3, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 3, 3, 6, 6, 4, 4, 2, 2, 2, 0, 0, -8, 7, 7, 5, 3, 3, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 3, 5, 5, 3, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -7, 5, 5, 3, 5, 5, 5, 4, 6, 2, 6, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 3, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 3, 3, 3, 5, 4, 4, 4, 6, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 1, 4, 4, 4, 2, 2, 0, 2, 0, 0, -8, 5, 5, 3, 5, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 7, 7, 5, 3, 5, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 7, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 7, 3, 5, 4, 6, 2, 4, 4, 2, 2, 0, 0, -7, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 7, 5, 4, 4, 4, 2, 0, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 6, 6, 4, 2, 4, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 5, 2, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 3, 5, 1, 4, 6, 6, 4, 4, 2, 2, 0, 0, -8, 5, 5, 7, 5, 7, 5, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 4, 4, 2, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -7, 7, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 5, 7, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 5, 3, 6, 2, 4, 4, 2, 0, 0, 0, 0, -8, 5, 7, 5, 3, 5, 3, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 2, 6, 2, 2, 2, 2, 0, 0, 0, -8, 7, 7, 7, 7, 5, 5, 6, 6, 4, 4, 2, 2, 2, 0, 0, -8, 7, 5, 5, 5, 3, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 4, 4, 4, 6, 4, 2, 0, 0, 0, -7, 7, 5, 3, 3, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 7, 3, 5, 5, 3, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 6, 4, 2, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 3, 5, 5, 3, 4, 4, 4, 4, 4, 2, 2, 0, 0, -9, 5, 5, 7, 5, 5, 3, 4, 6, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 6, 2, 4, 2, 2, 2, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 4, 2, 2, 2, 2, 2, 0, 0, -8, 3, 5, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 0, 0, -8, 7, 3, 3, 3, 5, 5, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 3, 4, 4, 2, 4, 2, 0, 2, 0, 0, -8, 5, 5, 7, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 6, 4, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 2, 4, 2, 0, 0, 0, 0, -8, 5, 7, 3, 3, 5, 3, 6, 2, 4, 4, 4, 0, 0, 0, 0, -7, 5, 5, 5, 3, 7, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 4, 2, 2, 2, 2, 0, 0, 0, -8, 5, 7, 5, 5, 5, 5, 4, 2, 2, 4, 4, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 2, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 2, 2, 4, 4, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 6, 4, 2, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 6, 2, 4, 4, 2, 0, 0, 0, -9, 5, 7, 5, 3, 3, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 7, 5, 5, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 7, 7, 5, 3, 6, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 7, 7, 7, 5, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 6, 2, 4, 2, 0, 0, 0, -8, 5, 5, 7, 3, 5, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 7, 3, 5, 5, 2, 6, 2, 4, 4, 2, 0, 0, 0, -8, 7, 3, 5, 3, 3, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 7, 3, 7, 5, 6, 6, 4, 6, 2, 2, 0, 0, 0, -9, 5, 3, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 3, 5, 5, 5, 2, 2, 4, 4, 2, 0, 0, 0, 0, -7, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 7, 5, 5, 7, 4, 4, 4, 2, 4, 4, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 7, 3, 7, 5, 4, 4, 2, 4, 4, 2, 0, 0, 0, -8, 5, 3, 7, 5, 5, 3, 6, 6, 6, 4, 4, 0, 0, 0, 0, -8, 5, 7, 7, 5, 5, 5, 4, 2, 2, 6, 4, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 5, 3, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 2, 4, 2, 2, 0, 0, 0, 0, -8, 5, 5, 7, 3, 3, 7, 2, 2, 4, 4, 2, 2, 2, 0, 0, -8, 5, 3, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 7, 7, 5, 3, 3, 4, 4, 4, 4, 4, 0, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 7, 6, 4, 4, 6, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 6, 2, 4, 4, 4, 2, 2, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 7, 3, 5, 5, 4, 6, 6, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 2, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 3, 3, 4, 6, 4, 4, 2, 2, 2, 0, 0, -9, 5, 3, 3, 5, 5, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -7, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 7, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 3, 5, 3, 6, 6, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 1, 5, 4, 4, 4, 4, 4, 2, 2, 0, 0, -9, 5, 3, 3, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -7, 7, 5, 5, 3, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 7, 5, 5, 3, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 3, 5, 5, 5, 5, 4, 4, 2, 4, 2, 2, 2, 0, 0, -8, 5, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 3, 5, 5, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -7, 5, 5, 7, 3, 5, 5, 2, 2, 4, 4, 2, 2, 0, 0, 0, -7, 7, 3, 7, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 3, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 5, 7, 3, 5, 3, 4, 6, 2, 4, 2, 2, 2, 0, 0, -8, 5, 5, 3, 5, 3, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 7, 3, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 3, 5, 5, 6, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 7, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 2, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 7, 5, 5, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 3, 5, 3, 7, 3, 4, 4, 2, 6, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 6, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 7, 3, 5, 5, 4, 4, 2, 4, 4, 2, 0, 0, 0, -9, 5, 3, 5, 5, 3, 5, 4, 6, 4, 4, 4, 2, 0, 0, 0, -9, 7, 3, 5, 5, 5, 3, 6, 4, 4, 2, 4, 2, 2, 0, 0, -9, 7, 5, 3, 5, 3, 3, 4, 2, 2, 4, 2, 2, 0, 0, 0, -7, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 0, 0, 0, 0, -8, 7, 3, 7, 3, 3, 5, 4, 4, 2, 2, 2, 2, 2, 0, 0, -9, 7, 3, 7, 5, 7, 3, 6, 2, 2, 2, 2, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 5, 3, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 3, 3, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 3, 5, 3, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 6, 2, 4, 6, 2, 2, 0, 0, 0, -8, 7, 7, 5, 7, 3, 5, 6, 4, 4, 2, 2, 2, 2, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 3, 5, 5, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 2, 4, 4, 4, 2, 0, 2, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 0, 0, 0, 0, -9, 5, 5, 3, 5, 5, 3, 2, 6, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 3, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 3, 7, 5, 5, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 3, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 3, 2, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 3, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 7, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 3, 7, 7, 5, 5, 3, 6, 4, 4, 6, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 4, 2, 4, 4, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 6, 4, 2, 0, 0, 0, 0, -9, 7, 3, 5, 5, 5, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 3, 5, 3, 4, 4, 4, 4, 4, 2, 2, 0, 0, -9, 5, 5, 5, 5, 7, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 5, 3, 5, 5, 4, 2, 2, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 6, 4, 4, 4, 2, 2, 2, 0, 0, -8, 5, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 7, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 5, 6, 4, 2, 2, 4, 2, 2, 0, 0, -9, 7, 5, 3, 3, 5, 3, 2, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 2, 4, 4, 4, 0, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 4, 2, 2, 4, 4, 2, 0, 0, 0, -9, 5, 5, 7, 7, 7, 5, 4, 4, 2, 6, 2, 0, 2, 0, 0, -9, 5, 5, 5, 5, 3, 5, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 5, 3, 5, 1, 3, 3, 2, 2, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 3, 5, 3, 4, 2, 2, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 5, 3, 7, 5, 5, 5, 4, 4, 2, 4, 4, 2, 2, 0, 0, -9, 7, 5, 5, 5, 5, 3, 4, 2, 6, 2, 2, 0, 0, 0, 0, -9, 5, 7, 5, 3, 5, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 3, 3, 3, 1, 4, 2, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 3, 3, 4, 2, 4, 4, 2, 0, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 4, 2, 4, 6, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 7, 5, 3, 3, 4, 4, 6, 2, 2, 0, 0, 0, 0, -9, 5, 7, 7, 5, 5, 5, 4, 6, 4, 2, 2, 0, 0, 0, 0, -9, 5, 3, 5, 3, 3, 1, 4, 2, 4, 2, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 5, 2, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 6, 2, 4, 4, 2, 2, 0, 0, 0, -8, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 7, 3, 3, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 3, 3, 6, 6, 4, 2, 2, 2, 0, 0, 0, -9, 7, 3, 5, 3, 3, 3, 4, 2, 2, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 2, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 3, 5, 6, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 3, 5, 7, 3, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 5, 6, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 5, 7, 5, 7, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 5, 7, 7, 5, 7, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 7, 3, 3, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 5, 4, 4, 4, 6, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 7, 3, 4, 4, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 3, 5, 7, 2, 6, 4, 4, 2, 2, 0, 0, 0, -8, 5, 7, 7, 5, 3, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 5, 1, 5, 3, 3, 5, 2, 2, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 5, 5, 4, 6, 4, 4, 2, 0, 0, 0, 0, -9, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 5, 5, 5, 4, 2, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 7, 5, 5, 3, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 7, 5, 7, 3, 5, 5, 2, 4, 4, 4, 4, 2, 0, 0, 0, -9, 5, 5, 7, 5, 7, 3, 6, 6, 4, 2, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 3, 4, 4, 4, 4, 2, 2, 2, 0, 0, -9, 5, 5, 5, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 7, 5, 5, 3, 4, 4, 4, 2, 2, 2, 2, 0, 0, -9, 7, 5, 7, 3, 7, 5, 6, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 5, 5, 3, 5, 3, 6, 4, 4, 2, 4, 2, 2, 0, 0, -9, 5, 3, 5, 3, 5, 3, 4, 2, 4, 4, 4, 2, 0, 0, 0, -9, 5, 3, 3, 3, 3, 3, 2, 2, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 7, 5, 5, 5, 4, 2, 4, 4, 2, 2, 0, 0, 0, -8, 7, 5, 3, 3, 5, 7, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 7, 5, 7, 3, 5, 5, 4, 4, 4, 4, 4, 2, 2, 0, 0, -9, 7, 3, 5, 5, 3, 5, 4, 4, 6, 4, 2, 2, 2, 0, 0, -9, 5, 5, 3, 5, 5, 3, 4, 2, 4, 4, 2, 2, 0, 0, 0, -9, 7, 3, 5, 5, 3, 5, 4, 2, 4, 4, 2, 0, 0, 0, 0, -7, 8, 5, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, -8, 7, 5, 5, 3, 3, 3, 6, 4, 2, 4, 4, 2, 0, 0, 0, -9, 7, 5, 5, 5, 3, 5, 4, 4, 6, 4, 2, 2, 0, 0, 0, -9, 5, 5, 5, 5, 3, 5, 2, 4, 4, 6, 2, 0, 0, 0, 0, -9, 7, 7, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 0, 0, 0, -9, 5, 3, 3, 5, 5, 5, 4, 4, 4, 4, 4, 2, 0, 0, 0, -8, 7, 7, 5, 5, 5, 5, 4, 4, 4, 2, 2, 2, 0, 0, 0, diff --git a/lib/books/coupled/_44c4_short.vqh b/lib/books/coupled/_44c4_short.vqh deleted file mode 100644 index 5ec5a1c4..00000000 --- a/lib/books/coupled/_44c4_short.vqh +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c4_short_VQH_ -#define _V__44c4_short_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c4_short[] = { - 4,18, 9,18,12,16,13,14,17,17,16, 7, 7, 7, 6, 9, - 9,11,17,17, 4,17, 3,17, 6,17, 7,10,17,17,14, 6, - 6, 4, 5, 5, 6, 8,17,17, 8,17, 4,17, 5,17, 6,10, - 17,17,13, 7, 7, 5, 5, 4, 6, 6,15,17, 9,17, 6,17, - 6,17, 7,11,17,17,12,10, 9, 7, 8, 6, 9, 7,15,17, - 17,12,16, 7,17, 5,17, 6,12,16,17,12,17, 6,17, 5, - 17, 5, 9,17, -}; - -static static_codebook _huff_book__44c4_short = { - 2, 100, - _huff_lengthlist__44c4_short, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_long.vqh b/lib/books/coupled/_44c5_long.vqh deleted file mode 100644 index 05ccc7f4..00000000 --- a/lib/books/coupled/_44c5_long.vqh +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c5_long_VQH_ -#define _V__44c5_long_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c5_long[] = { - 2,11, 7,14,10,16,11,11,13,14,11, 8, 9, 8, 9, 9, - 11, 9,11,14, 6,20, 3,20, 4,20, 7, 8,14,18,14, 7, - 9, 6, 7, 6, 9, 7,10,13,10,20, 4,20, 3,20, 6, 8, - 14,18,15, 8,10, 6, 9, 6, 9, 6,10,14,11,19, 6,19, - 6,19, 6, 8,14,18,10, 9, 8, 7, 8, 6, 7, 5, 7,11, - 11,11,12, 9,12, 8,12, 6, 7, 9,11,13,15,12,16,11, - 17, 8, 7, 8, -}; - -static static_codebook _huff_book__44c5_long = { - 2, 100, - _huff_lengthlist__44c5_long, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s0_p1_0.vqh b/lib/books/coupled/_44c5_s0_p1_0.vqh deleted file mode 100644 index 6d152555..00000000 --- a/lib/books/coupled/_44c5_s0_p1_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s0_p1_0_VQH_ -#define _V__44c5_s0_p1_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s0_p1_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c5_s0_p1_0[] = { - 2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, - 7, 7, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 8, - 7, 0, 0, 0, 7, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0, - 0, 0, 5, 6, 6, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, - 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 7, 7, 0, 0, - 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5, - 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 8, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, - 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, - 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,10,10, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, 0, 0, - 10,10, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0, 0, 9, - 9, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c5_s0_p1_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c5_s0_p1_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s0_p1_0 = { - _vq_quantthresh__44c5_s0_p1_0, - _vq_quantmap__44c5_s0_p1_0, - 5, - 5 -}; - -static static_codebook _44c5_s0_p1_0 = { - 4, 625, - _vq_lengthlist__44c5_s0_p1_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c5_s0_p1_0, - NULL, - &_vq_auxt__44c5_s0_p1_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s0_p2_0.vqh b/lib/books/coupled/_44c5_s0_p2_0.vqh deleted file mode 100644 index 61015956..00000000 --- a/lib/books/coupled/_44c5_s0_p2_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s0_p2_0_VQH_ -#define _V__44c5_s0_p2_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s0_p2_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c5_s0_p2_0[] = { - 1, 6, 6, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, - 8, 8, 0, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0, 0, 9, - 8, 0, 0, 0, 9, 8, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 6, 7, 8, 0, 0, 0, 8, 9, 0, 0, 0, 8, 8, 0, - 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 8, 7, 0, 0, - 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, - 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 9, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 7, - 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, 8, 9, 0, - 0, 0, 8, 8, 0, 0, 0, 7, 8, 0, 0, 0,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,11,11, 0, 0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0, - 11,11, 0, 0, 0, 0, 0, 0, 0, 8,11,11, 0, 0, 0,10, - 10, 0, 0, 0,10,10, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c5_s0_p2_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c5_s0_p2_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s0_p2_0 = { - _vq_quantthresh__44c5_s0_p2_0, - _vq_quantmap__44c5_s0_p2_0, - 5, - 5 -}; - -static static_codebook _44c5_s0_p2_0 = { - 4, 625, - _vq_lengthlist__44c5_s0_p2_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c5_s0_p2_0, - NULL, - &_vq_auxt__44c5_s0_p2_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s0_p3_0.vqh b/lib/books/coupled/_44c5_s0_p3_0.vqh deleted file mode 100644 index e526ca77..00000000 --- a/lib/books/coupled/_44c5_s0_p3_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s0_p3_0_VQH_ -#define _V__44c5_s0_p3_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s0_p3_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c5_s0_p3_0[] = { - 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, - 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6, - 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, - 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c5_s0_p3_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c5_s0_p3_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s0_p3_0 = { - _vq_quantthresh__44c5_s0_p3_0, - _vq_quantmap__44c5_s0_p3_0, - 9, - 9 -}; - -static static_codebook _44c5_s0_p3_0 = { - 2, 81, - _vq_lengthlist__44c5_s0_p3_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c5_s0_p3_0, - NULL, - &_vq_auxt__44c5_s0_p3_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s0_p4_0.vqh b/lib/books/coupled/_44c5_s0_p4_0.vqh deleted file mode 100644 index 486a649b..00000000 --- a/lib/books/coupled/_44c5_s0_p4_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s0_p4_0_VQH_ -#define _V__44c5_s0_p4_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s0_p4_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c5_s0_p4_0[] = { - 2, 3, 3, 7, 7, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, - 0, 0, 0, 3, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 7, 7, - 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, - 9, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, - 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c5_s0_p4_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c5_s0_p4_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s0_p4_0 = { - _vq_quantthresh__44c5_s0_p4_0, - _vq_quantmap__44c5_s0_p4_0, - 9, - 9 -}; - -static static_codebook _44c5_s0_p4_0 = { - 2, 81, - _vq_lengthlist__44c5_s0_p4_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c5_s0_p4_0, - NULL, - &_vq_auxt__44c5_s0_p4_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s0_p5_0.vqh b/lib/books/coupled/_44c5_s0_p5_0.vqh deleted file mode 100644 index 4cd3ba6f..00000000 --- a/lib/books/coupled/_44c5_s0_p5_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s0_p5_0_VQH_ -#define _V__44c5_s0_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s0_p5_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c5_s0_p5_0[] = { - 2, 4, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 5, 6, 6, 8, 8,10,10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 6, 6, 8, 8,10,10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 9, 9,10,10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, - 10,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11,11,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,11,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c5_s0_p5_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c5_s0_p5_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s0_p5_0 = { - _vq_quantthresh__44c5_s0_p5_0, - _vq_quantmap__44c5_s0_p5_0, - 17, - 17 -}; - -static static_codebook _44c5_s0_p5_0 = { - 2, 289, - _vq_lengthlist__44c5_s0_p5_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c5_s0_p5_0, - NULL, - &_vq_auxt__44c5_s0_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s0_p6_0.vqh b/lib/books/coupled/_44c5_s0_p6_0.vqh deleted file mode 100644 index f963205a..00000000 --- a/lib/books/coupled/_44c5_s0_p6_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s0_p6_0_VQH_ -#define _V__44c5_s0_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s0_p6_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c5_s0_p6_0[] = { - 2, 4, 4, 6, 6, 6, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 5, 7, 7, 8, 8, 9, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7,10, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 9,10,10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 8,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 9,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,10,12,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c5_s0_p6_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c5_s0_p6_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s0_p6_0 = { - _vq_quantthresh__44c5_s0_p6_0, - _vq_quantmap__44c5_s0_p6_0, - 17, - 17 -}; - -static static_codebook _44c5_s0_p6_0 = { - 2, 289, - _vq_lengthlist__44c5_s0_p6_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c5_s0_p6_0, - NULL, - &_vq_auxt__44c5_s0_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s0_p7_0.vqh b/lib/books/coupled/_44c5_s0_p7_0.vqh deleted file mode 100644 index 9def0ac4..00000000 --- a/lib/books/coupled/_44c5_s0_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s0_p7_0_VQH_ -#define _V__44c5_s0_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s0_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c5_s0_p7_0[] = { - 1, 3, 3, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 7, 7,10,10, 0, 0, 0, 0, 0, 0, 6, 5, 5, 8, 8,10, - 10, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0, 0, 0, - 0, 0,12,12,10, 9,11,11, 0, 0, 0, 0, 0, 0, 0,13, - 13,10, 9,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,12, - 12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12, 0, - 0, 0, 0, 0, 0, 0, 0, 0,15,15,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,16,16,13,13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,15,14, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c5_s0_p7_0[] = { - -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, - 12.5, 17.5, 22.5, 27.5, -}; - -static long _vq_quantmap__44c5_s0_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s0_p7_0 = { - _vq_quantthresh__44c5_s0_p7_0, - _vq_quantmap__44c5_s0_p7_0, - 13, - 13 -}; - -static static_codebook _44c5_s0_p7_0 = { - 2, 169, - _vq_lengthlist__44c5_s0_p7_0, - 1, -526516224, 1616117760, 4, 0, - _vq_quantlist__44c5_s0_p7_0, - NULL, - &_vq_auxt__44c5_s0_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s0_p7_1.vqh b/lib/books/coupled/_44c5_s0_p7_1.vqh deleted file mode 100644 index f8b00f31..00000000 --- a/lib/books/coupled/_44c5_s0_p7_1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s0_p7_1_VQH_ -#define _V__44c5_s0_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s0_p7_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c5_s0_p7_1[] = { - 2, 4, 4, 5, 5, 7, 4, 4, 6, 6, 7, 4, 4, 5, 5, 7, - 5, 5, 6, 5, 7, 7, 7, 5, 5, -}; - -static float _vq_quantthresh__44c5_s0_p7_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c5_s0_p7_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s0_p7_1 = { - _vq_quantthresh__44c5_s0_p7_1, - _vq_quantmap__44c5_s0_p7_1, - 5, - 5 -}; - -static static_codebook _44c5_s0_p7_1 = { - 2, 25, - _vq_lengthlist__44c5_s0_p7_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c5_s0_p7_1, - NULL, - &_vq_auxt__44c5_s0_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s0_p8_0.vqh b/lib/books/coupled/_44c5_s0_p8_0.vqh deleted file mode 100644 index 5e1c49a4..00000000 --- a/lib/books/coupled/_44c5_s0_p8_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s0_p8_0_VQH_ -#define _V__44c5_s0_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s0_p8_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c5_s0_p8_0[] = { - 1, 3, 4, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 6, 6, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0, 0, 0, - 0, 0,12,12, 9, 9,10,11, 0, 0, 0, 0, 0, 0, 0,12, - 12, 9, 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,15,15,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,15,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,13,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,14,13, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c5_s0_p8_0[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c5_s0_p8_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s0_p8_0 = { - _vq_quantthresh__44c5_s0_p8_0, - _vq_quantmap__44c5_s0_p8_0, - 13, - 13 -}; - -static static_codebook _44c5_s0_p8_0 = { - 2, 169, - _vq_lengthlist__44c5_s0_p8_0, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c5_s0_p8_0, - NULL, - &_vq_auxt__44c5_s0_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s0_p8_1.vqh b/lib/books/coupled/_44c5_s0_p8_1.vqh deleted file mode 100644 index 7f4fc925..00000000 --- a/lib/books/coupled/_44c5_s0_p8_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s0_p8_1_VQH_ -#define _V__44c5_s0_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s0_p8_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c5_s0_p8_1[] = { - 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 5, 5, - 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, - 7, 8, 8, 8, 8, 8, 8, 9, 6, 7, 7, 7, 8, 7, 8, 8, - 8, 8, 8, 8, 9, 9, 9, 7, 7, 8, 7, 8, 8, 8, 8, 8, - 8, 9,10,10, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,10, 9, - 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9,10, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8,10,10, 9,10,10, 8, 8, 8, - 8, 8, 8, 8, 8, 9,10, 9, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8,10, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8,10, - 10,10, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8,10, 9, 9,10, - 10, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c5_s0_p8_1[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c5_s0_p8_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s0_p8_1 = { - _vq_quantthresh__44c5_s0_p8_1, - _vq_quantmap__44c5_s0_p8_1, - 13, - 13 -}; - -static static_codebook _44c5_s0_p8_1 = { - 2, 169, - _vq_lengthlist__44c5_s0_p8_1, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c5_s0_p8_1, - NULL, - &_vq_auxt__44c5_s0_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s0_p9_0.vqh b/lib/books/coupled/_44c5_s0_p9_0.vqh deleted file mode 100644 index b2b5888a..00000000 --- a/lib/books/coupled/_44c5_s0_p9_0.vqh +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s0_p9_0_VQH_ -#define _V__44c5_s0_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s0_p9_0[] = { - 7, - 6, - 8, - 5, - 9, - 4, - 10, - 3, - 11, - 2, - 12, - 1, - 13, - 0, - 14, -}; - -static long _vq_lengthlist__44c5_s0_p9_0[] = { - 1, 3, 3,11,10,14,14,14,14,14,14,14,14,14,14, 5, - 5, 5,11,14,14,14,14,14,14,14,14,14,14,14, 5, 6, - 4,12,12,14,14,14,14,14,14,14,14,14,14,14, 7,10, - 13,13,14,14,14,14,14,14,14,14,14,14,14,12, 7,14, - 14,14,14,14,14,14,14,14,14,14,13,13,10,13, 8,13, - 13,13,13,13,13,13,13,13,13,13,13,13,12,13,11,13, - 13,13,13,13,13,13,13,13,13,13,13,13,11,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13, -}; - -static float _vq_quantthresh__44c5_s0_p9_0[] = { - -1436.5, -1215.5, -994.5, -773.5, -552.5, -331.5, -110.5, 110.5, - 331.5, 552.5, 773.5, 994.5, 1215.5, 1436.5, -}; - -static long _vq_quantmap__44c5_s0_p9_0[] = { - 13, 11, 9, 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, 12, 14, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s0_p9_0 = { - _vq_quantthresh__44c5_s0_p9_0, - _vq_quantmap__44c5_s0_p9_0, - 15, - 15 -}; - -static static_codebook _44c5_s0_p9_0 = { - 2, 225, - _vq_lengthlist__44c5_s0_p9_0, - 1, -514315264, 1627103232, 4, 0, - _vq_quantlist__44c5_s0_p9_0, - NULL, - &_vq_auxt__44c5_s0_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s0_p9_1.vqh b/lib/books/coupled/_44c5_s0_p9_1.vqh deleted file mode 100644 index 6faae0ce..00000000 --- a/lib/books/coupled/_44c5_s0_p9_1.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s0_p9_1_VQH_ -#define _V__44c5_s0_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s0_p9_1[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c5_s0_p9_1[] = { - 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9,10,10,10, - 10, 7, 6, 6, 7, 7, 8, 8, 9, 9, 9,10,10,10,11,11, - 11,11, 7, 5, 5, 7, 7, 8, 8, 9, 9,10,10,10,10,11, - 11,11,11,15, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,11, - 11,11,11,11,14, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11, - 11,11,11,12,12,15,12,12, 9, 9,10,10,10,10,10,11, - 11,11,11,11,11,12,14,12,11, 9, 9,10,10,10,10,11, - 11,11,11,11,11,12,12,14,14,14,11,11,10,10,10,10, - 11,11,11,11,11,12,12,12,14,14,14,11,11,10,10,11, - 11,11,11,11,12,12,12,12,12,15,15,14,13,13,11,11, - 11,11,12,12,12,12,12,12,12,12,14,14,14,14,14,11, - 11,11,11,12,12,12,12,12,12,12,12,15,14,15,14,14, - 12,12,11,12,12,12,12,12,12,12,12,12,14,15,15,14, - 16,12,12,11,11,12,12,13,12,12,12,12,13,15,14,16, - 14,15,14,14,12,12,12,12,13,12,12,12,13,13,15,15, - 15,15,15,14,13,12,12,12,12,12,12,13,13,13,13,14, - 14,15,14,15,14,15,13,12,12,12,12,12,13,13,13,13, - 15,15,15,15,14,15,14,12,13,12,12,12,12,13,12,13, - 13, -}; - -static float _vq_quantthresh__44c5_s0_p9_1[] = { - -97.5, -84.5, -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, - 6.5, 19.5, 32.5, 45.5, 58.5, 71.5, 84.5, 97.5, -}; - -static long _vq_quantmap__44c5_s0_p9_1[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s0_p9_1 = { - _vq_quantthresh__44c5_s0_p9_1, - _vq_quantmap__44c5_s0_p9_1, - 17, - 17 -}; - -static static_codebook _44c5_s0_p9_1 = { - 2, 289, - _vq_lengthlist__44c5_s0_p9_1, - 1, -522584064, 1618608128, 5, 0, - _vq_quantlist__44c5_s0_p9_1, - NULL, - &_vq_auxt__44c5_s0_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s0_p9_2.vqh b/lib/books/coupled/_44c5_s0_p9_2.vqh deleted file mode 100644 index 90c6a366..00000000 --- a/lib/books/coupled/_44c5_s0_p9_2.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s0_p9_2_VQH_ -#define _V__44c5_s0_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s0_p9_2[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c5_s0_p9_2[] = { - 3, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, - 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 6, 6, 6, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7, 8, 8, - 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 8, - 8, 9, 9, 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, - 9, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, - 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, - 9, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c5_s0_p9_2[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c5_s0_p9_2[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s0_p9_2 = { - _vq_quantthresh__44c5_s0_p9_2, - _vq_quantmap__44c5_s0_p9_2, - 13, - 13 -}; - -static static_codebook _44c5_s0_p9_2 = { - 2, 169, - _vq_lengthlist__44c5_s0_p9_2, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c5_s0_p9_2, - NULL, - &_vq_auxt__44c5_s0_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s1_p2_0.vqh b/lib/books/coupled/_44c5_s1_p2_0.vqh deleted file mode 100644 index 240dfd5a..00000000 --- a/lib/books/coupled/_44c5_s1_p2_0.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s1_p2_0_VQH_ -#define _V__44c5_s1_p2_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s1_p2_0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c5_s1_p2_0[] = { - 1, 3, 3, 0, 0, 0, 0, 0, 0, 4, 5, 5, 0, 0, 0, 0, - 0, 0, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c5_s1_p2_0[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c5_s1_p2_0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s1_p2_0 = { - _vq_quantthresh__44c5_s1_p2_0, - _vq_quantmap__44c5_s1_p2_0, - 3, - 3 -}; - -static static_codebook _44c5_s1_p2_0 = { - 4, 81, - _vq_lengthlist__44c5_s1_p2_0, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c5_s1_p2_0, - NULL, - &_vq_auxt__44c5_s1_p2_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s1_p4_0.vqh b/lib/books/coupled/_44c5_s1_p4_0.vqh deleted file mode 100644 index fcb02916..00000000 --- a/lib/books/coupled/_44c5_s1_p4_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s1_p4_0_VQH_ -#define _V__44c5_s1_p4_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s1_p4_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c5_s1_p4_0[] = { - 2, 3, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 7, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 4, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 6, 9, 9, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c5_s1_p4_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c5_s1_p4_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s1_p4_0 = { - _vq_quantthresh__44c5_s1_p4_0, - _vq_quantmap__44c5_s1_p4_0, - 5, - 5 -}; - -static static_codebook _44c5_s1_p4_0 = { - 4, 625, - _vq_lengthlist__44c5_s1_p4_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c5_s1_p4_0, - NULL, - &_vq_auxt__44c5_s1_p4_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s1_p6_0.vqh b/lib/books/coupled/_44c5_s1_p6_0.vqh deleted file mode 100644 index ce2dd94a..00000000 --- a/lib/books/coupled/_44c5_s1_p6_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s1_p6_0_VQH_ -#define _V__44c5_s1_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s1_p6_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c5_s1_p6_0[] = { - 2, 2, 2, 4, 4, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 7, 9, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,10,10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,10,10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,11,11, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 9,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,10,12,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c5_s1_p6_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c5_s1_p6_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s1_p6_0 = { - _vq_quantthresh__44c5_s1_p6_0, - _vq_quantmap__44c5_s1_p6_0, - 17, - 17 -}; - -static static_codebook _44c5_s1_p6_0 = { - 2, 289, - _vq_lengthlist__44c5_s1_p6_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c5_s1_p6_0, - NULL, - &_vq_auxt__44c5_s1_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s1_p7_0.vqh b/lib/books/coupled/_44c5_s1_p7_0.vqh deleted file mode 100644 index 5102b87a..00000000 --- a/lib/books/coupled/_44c5_s1_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s1_p7_0_VQH_ -#define _V__44c5_s1_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s1_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c5_s1_p7_0[] = { - 1, 3, 3, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 7, 7,10,10, 0, 0, 0, 0, 0, 0, 6, 5, 5, 8, 8,10, - 10, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0, 0, 0, - 0, 0,12,12,10, 9,11,11, 0, 0, 0, 0, 0, 0, 0,13, - 13,10, 9,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,12, - 12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12, 0, - 0, 0, 0, 0, 0, 0, 0, 0,15,15,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,16,16,13,13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,15,14, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c5_s1_p7_0[] = { - -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, - 12.5, 17.5, 22.5, 27.5, -}; - -static long _vq_quantmap__44c5_s1_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s1_p7_0 = { - _vq_quantthresh__44c5_s1_p7_0, - _vq_quantmap__44c5_s1_p7_0, - 13, - 13 -}; - -static static_codebook _44c5_s1_p7_0 = { - 2, 169, - _vq_lengthlist__44c5_s1_p7_0, - 1, -526516224, 1616117760, 4, 0, - _vq_quantlist__44c5_s1_p7_0, - NULL, - &_vq_auxt__44c5_s1_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s1_p7_1.vqh b/lib/books/coupled/_44c5_s1_p7_1.vqh deleted file mode 100644 index b013e15a..00000000 --- a/lib/books/coupled/_44c5_s1_p7_1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s1_p7_1_VQH_ -#define _V__44c5_s1_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s1_p7_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c5_s1_p7_1[] = { - 2, 4, 4, 5, 5, 6, 4, 4, 6, 5, 6, 4, 4, 5, 5, 7, - 6, 6, 6, 5, 7, 7, 7, 5, 5, -}; - -static float _vq_quantthresh__44c5_s1_p7_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c5_s1_p7_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s1_p7_1 = { - _vq_quantthresh__44c5_s1_p7_1, - _vq_quantmap__44c5_s1_p7_1, - 5, - 5 -}; - -static static_codebook _44c5_s1_p7_1 = { - 2, 25, - _vq_lengthlist__44c5_s1_p7_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c5_s1_p7_1, - NULL, - &_vq_auxt__44c5_s1_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s1_p8_0.vqh b/lib/books/coupled/_44c5_s1_p8_0.vqh deleted file mode 100644 index b85dd340..00000000 --- a/lib/books/coupled/_44c5_s1_p8_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s1_p8_0_VQH_ -#define _V__44c5_s1_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s1_p8_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c5_s1_p8_0[] = { - 1, 3, 4, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 6, 6, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0, 0, 0, - 0, 0,12,12, 9, 9,10,11, 0, 0, 0, 0, 0, 0, 0,12, - 12, 9, 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,15,15,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,15,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,13,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,14,13, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c5_s1_p8_0[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c5_s1_p8_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s1_p8_0 = { - _vq_quantthresh__44c5_s1_p8_0, - _vq_quantmap__44c5_s1_p8_0, - 13, - 13 -}; - -static static_codebook _44c5_s1_p8_0 = { - 2, 169, - _vq_lengthlist__44c5_s1_p8_0, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c5_s1_p8_0, - NULL, - &_vq_auxt__44c5_s1_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s1_p8_1.vqh b/lib/books/coupled/_44c5_s1_p8_1.vqh deleted file mode 100644 index 2237ce05..00000000 --- a/lib/books/coupled/_44c5_s1_p8_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s1_p8_1_VQH_ -#define _V__44c5_s1_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s1_p8_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c5_s1_p8_1[] = { - 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 5, 5, - 6, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, - 7, 8, 8, 8, 8, 8, 8, 9, 6, 7, 7, 7, 8, 7, 8, 8, - 8, 8, 8, 8, 9, 9, 9, 7, 7, 8, 7, 8, 8, 8, 8, 8, - 8, 9,10, 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, - 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8,10,10, 9, 9, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 9,10, 9, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8,10, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8,10, - 10, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8,10, 9, 9, 9, - 9, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c5_s1_p8_1[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c5_s1_p8_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s1_p8_1 = { - _vq_quantthresh__44c5_s1_p8_1, - _vq_quantmap__44c5_s1_p8_1, - 13, - 13 -}; - -static static_codebook _44c5_s1_p8_1 = { - 2, 169, - _vq_lengthlist__44c5_s1_p8_1, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c5_s1_p8_1, - NULL, - &_vq_auxt__44c5_s1_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s1_p9_0.vqh b/lib/books/coupled/_44c5_s1_p9_0.vqh deleted file mode 100644 index 8387d97f..00000000 --- a/lib/books/coupled/_44c5_s1_p9_0.vqh +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s1_p9_0_VQH_ -#define _V__44c5_s1_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s1_p9_0[] = { - 7, - 6, - 8, - 5, - 9, - 4, - 10, - 3, - 11, - 2, - 12, - 1, - 13, - 0, - 14, -}; - -static long _vq_lengthlist__44c5_s1_p9_0[] = { - 1, 3, 3,11,10,14,14,14,14,14,14,14,14,14,14, 5, - 5, 5,11,14,14,14,14,14,14,14,14,14,14,14, 5, 6, - 4,12,12,14,14,14,14,14,14,14,14,14,14,14, 7,10, - 13,13,14,14,14,14,14,14,14,14,14,14,14,12, 7,14, - 14,14,14,14,14,14,14,14,14,14,13,13,10,13, 8,13, - 13,13,13,13,13,13,13,13,13,13,13,13,12,13,11,13, - 13,13,13,13,13,13,13,13,13,13,13,13,11,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13, -}; - -static float _vq_quantthresh__44c5_s1_p9_0[] = { - -1436.5, -1215.5, -994.5, -773.5, -552.5, -331.5, -110.5, 110.5, - 331.5, 552.5, 773.5, 994.5, 1215.5, 1436.5, -}; - -static long _vq_quantmap__44c5_s1_p9_0[] = { - 13, 11, 9, 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, 12, 14, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s1_p9_0 = { - _vq_quantthresh__44c5_s1_p9_0, - _vq_quantmap__44c5_s1_p9_0, - 15, - 15 -}; - -static static_codebook _44c5_s1_p9_0 = { - 2, 225, - _vq_lengthlist__44c5_s1_p9_0, - 1, -514315264, 1627103232, 4, 0, - _vq_quantlist__44c5_s1_p9_0, - NULL, - &_vq_auxt__44c5_s1_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s1_p9_1.vqh b/lib/books/coupled/_44c5_s1_p9_1.vqh deleted file mode 100644 index be34c183..00000000 --- a/lib/books/coupled/_44c5_s1_p9_1.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s1_p9_1_VQH_ -#define _V__44c5_s1_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s1_p9_1[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c5_s1_p9_1[] = { - 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9,10,10,10, - 10, 7, 6, 6, 7, 7, 8, 8, 9, 9, 9,10,10,10,11,11, - 11,11, 7, 5, 5, 7, 7, 8, 8, 9, 9,10,10,10,10,11, - 11,11,11,15, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,11, - 11,11,11,11,14, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11, - 11,11,11,12,12,15,12,12, 9, 9,10,10,10,10,10,11, - 11,11,11,11,11,12,14,12,11, 9, 9,10,10,10,10,11, - 11,11,11,11,11,12,12,14,14,14,11,11,10,10,10,10, - 11,11,11,11,11,12,12,12,14,14,14,11,11,10,10,11, - 11,11,11,11,12,12,12,12,12,15,15,14,13,13,11,11, - 11,11,12,12,12,12,12,12,12,12,14,14,14,14,14,11, - 11,11,11,12,12,12,12,12,12,12,12,15,14,15,14,14, - 12,12,11,12,12,12,12,12,12,12,12,12,14,15,15,14, - 16,12,12,11,11,12,12,13,12,12,12,12,13,15,14,16, - 14,15,14,14,12,12,12,12,13,12,12,12,13,13,15,15, - 15,15,15,14,13,12,12,12,12,12,12,13,13,13,13,14, - 14,15,14,15,14,15,13,12,12,12,12,12,13,13,13,13, - 15,15,15,15,14,15,14,12,13,12,12,12,12,13,12,13, - 13, -}; - -static float _vq_quantthresh__44c5_s1_p9_1[] = { - -97.5, -84.5, -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, - 6.5, 19.5, 32.5, 45.5, 58.5, 71.5, 84.5, 97.5, -}; - -static long _vq_quantmap__44c5_s1_p9_1[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s1_p9_1 = { - _vq_quantthresh__44c5_s1_p9_1, - _vq_quantmap__44c5_s1_p9_1, - 17, - 17 -}; - -static static_codebook _44c5_s1_p9_1 = { - 2, 289, - _vq_lengthlist__44c5_s1_p9_1, - 1, -522584064, 1618608128, 5, 0, - _vq_quantlist__44c5_s1_p9_1, - NULL, - &_vq_auxt__44c5_s1_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s1_p9_2.vqh b/lib/books/coupled/_44c5_s1_p9_2.vqh deleted file mode 100644 index dc077e26..00000000 --- a/lib/books/coupled/_44c5_s1_p9_2.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s1_p9_2_VQH_ -#define _V__44c5_s1_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s1_p9_2[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c5_s1_p9_2[] = { - 3, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, - 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 6, 6, 6, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7, 8, 8, - 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 8, - 8, 9, 9, 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, - 9, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, - 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, - 9, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c5_s1_p9_2[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c5_s1_p9_2[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s1_p9_2 = { - _vq_quantthresh__44c5_s1_p9_2, - _vq_quantmap__44c5_s1_p9_2, - 13, - 13 -}; - -static static_codebook _44c5_s1_p9_2 = { - 2, 169, - _vq_lengthlist__44c5_s1_p9_2, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c5_s1_p9_2, - NULL, - &_vq_auxt__44c5_s1_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s2_p6_0.vqh b/lib/books/coupled/_44c5_s2_p6_0.vqh deleted file mode 100644 index 4d92bac6..00000000 --- a/lib/books/coupled/_44c5_s2_p6_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s2_p6_0_VQH_ -#define _V__44c5_s2_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s2_p6_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c5_s2_p6_0[] = { - 2, 2, 2, 3, 4, 5, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c5_s2_p6_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c5_s2_p6_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s2_p6_0 = { - _vq_quantthresh__44c5_s2_p6_0, - _vq_quantmap__44c5_s2_p6_0, - 9, - 9 -}; - -static static_codebook _44c5_s2_p6_0 = { - 2, 81, - _vq_lengthlist__44c5_s2_p6_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c5_s2_p6_0, - NULL, - &_vq_auxt__44c5_s2_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s2_p7_0.vqh b/lib/books/coupled/_44c5_s2_p7_0.vqh deleted file mode 100644 index 3c7f9260..00000000 --- a/lib/books/coupled/_44c5_s2_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s2_p7_0_VQH_ -#define _V__44c5_s2_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s2_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c5_s2_p7_0[] = { - 1, 3, 3, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 7, 7,10,10, 0, 0, 0, 0, 0, 0, 6, 5, 5, 8, 8,10, - 10, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0, 0, 0, - 0, 0,12,12,10, 9,11,11, 0, 0, 0, 0, 0, 0, 0,13, - 13,10, 9,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,12, - 12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12, 0, - 0, 0, 0, 0, 0, 0, 0, 0,15,15,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,16,16,13,13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,15,14, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c5_s2_p7_0[] = { - -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, - 12.5, 17.5, 22.5, 27.5, -}; - -static long _vq_quantmap__44c5_s2_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s2_p7_0 = { - _vq_quantthresh__44c5_s2_p7_0, - _vq_quantmap__44c5_s2_p7_0, - 13, - 13 -}; - -static static_codebook _44c5_s2_p7_0 = { - 2, 169, - _vq_lengthlist__44c5_s2_p7_0, - 1, -526516224, 1616117760, 4, 0, - _vq_quantlist__44c5_s2_p7_0, - NULL, - &_vq_auxt__44c5_s2_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s2_p7_1.vqh b/lib/books/coupled/_44c5_s2_p7_1.vqh deleted file mode 100644 index 22d54189..00000000 --- a/lib/books/coupled/_44c5_s2_p7_1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s2_p7_1_VQH_ -#define _V__44c5_s2_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s2_p7_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c5_s2_p7_1[] = { - 2, 4, 3, 5, 5, 6, 4, 4, 6, 6, 6, 4, 4, 5, 5, 7, - 6, 6, 6, 6, 7, 7, 7, 6, 6, -}; - -static float _vq_quantthresh__44c5_s2_p7_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c5_s2_p7_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s2_p7_1 = { - _vq_quantthresh__44c5_s2_p7_1, - _vq_quantmap__44c5_s2_p7_1, - 5, - 5 -}; - -static static_codebook _44c5_s2_p7_1 = { - 2, 25, - _vq_lengthlist__44c5_s2_p7_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c5_s2_p7_1, - NULL, - &_vq_auxt__44c5_s2_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s2_p8_0.vqh b/lib/books/coupled/_44c5_s2_p8_0.vqh deleted file mode 100644 index 19e8c462..00000000 --- a/lib/books/coupled/_44c5_s2_p8_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s2_p8_0_VQH_ -#define _V__44c5_s2_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s2_p8_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c5_s2_p8_0[] = { - 1, 3, 4, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 6, 6, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0, 0, 0, - 0, 0,12,12, 9, 9,10,11, 0, 0, 0, 0, 0, 0, 0,12, - 12, 9, 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,15,15,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,15,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,13,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,14,13, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c5_s2_p8_0[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c5_s2_p8_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s2_p8_0 = { - _vq_quantthresh__44c5_s2_p8_0, - _vq_quantmap__44c5_s2_p8_0, - 13, - 13 -}; - -static static_codebook _44c5_s2_p8_0 = { - 2, 169, - _vq_lengthlist__44c5_s2_p8_0, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c5_s2_p8_0, - NULL, - &_vq_auxt__44c5_s2_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s2_p8_1.vqh b/lib/books/coupled/_44c5_s2_p8_1.vqh deleted file mode 100644 index fcde15a9..00000000 --- a/lib/books/coupled/_44c5_s2_p8_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s2_p8_1_VQH_ -#define _V__44c5_s2_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s2_p8_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c5_s2_p8_1[] = { - 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 5, 5, - 6, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, - 7, 8, 8, 8, 8, 8, 8, 9, 6, 7, 7, 7, 8, 7, 8, 8, - 8, 8, 8, 8, 9, 9, 9, 7, 7, 8, 7, 8, 8, 8, 8, 8, - 8, 9,10, 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, - 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8,10,10, 9, 9, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 9,10, 9, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8,10, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8,10, - 10, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8,10, 9, 9, 9, - 9, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c5_s2_p8_1[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c5_s2_p8_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s2_p8_1 = { - _vq_quantthresh__44c5_s2_p8_1, - _vq_quantmap__44c5_s2_p8_1, - 13, - 13 -}; - -static static_codebook _44c5_s2_p8_1 = { - 2, 169, - _vq_lengthlist__44c5_s2_p8_1, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c5_s2_p8_1, - NULL, - &_vq_auxt__44c5_s2_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s2_p9_0.vqh b/lib/books/coupled/_44c5_s2_p9_0.vqh deleted file mode 100644 index e624ddae..00000000 --- a/lib/books/coupled/_44c5_s2_p9_0.vqh +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s2_p9_0_VQH_ -#define _V__44c5_s2_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s2_p9_0[] = { - 7, - 6, - 8, - 5, - 9, - 4, - 10, - 3, - 11, - 2, - 12, - 1, - 13, - 0, - 14, -}; - -static long _vq_lengthlist__44c5_s2_p9_0[] = { - 1, 3, 3,11,10,14,14,14,14,14,14,14,14,14,14, 5, - 5, 5,11,14,14,14,14,14,14,14,14,14,14,14, 5, 6, - 4,12,12,14,14,14,14,14,14,14,14,14,14,14, 7,10, - 13,13,14,14,14,14,14,14,14,14,14,14,14,12, 7,14, - 14,14,14,14,14,14,14,14,14,14,13,13,10,13, 8,13, - 13,13,13,13,13,13,13,13,13,13,13,13,12,13,11,13, - 13,13,13,13,13,13,13,13,13,13,13,13,11,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13, -}; - -static float _vq_quantthresh__44c5_s2_p9_0[] = { - -1436.5, -1215.5, -994.5, -773.5, -552.5, -331.5, -110.5, 110.5, - 331.5, 552.5, 773.5, 994.5, 1215.5, 1436.5, -}; - -static long _vq_quantmap__44c5_s2_p9_0[] = { - 13, 11, 9, 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, 12, 14, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s2_p9_0 = { - _vq_quantthresh__44c5_s2_p9_0, - _vq_quantmap__44c5_s2_p9_0, - 15, - 15 -}; - -static static_codebook _44c5_s2_p9_0 = { - 2, 225, - _vq_lengthlist__44c5_s2_p9_0, - 1, -514315264, 1627103232, 4, 0, - _vq_quantlist__44c5_s2_p9_0, - NULL, - &_vq_auxt__44c5_s2_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s2_p9_1.vqh b/lib/books/coupled/_44c5_s2_p9_1.vqh deleted file mode 100644 index 590a0460..00000000 --- a/lib/books/coupled/_44c5_s2_p9_1.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s2_p9_1_VQH_ -#define _V__44c5_s2_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s2_p9_1[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c5_s2_p9_1[] = { - 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9,10,10,10, - 10, 7, 6, 6, 7, 7, 8, 8, 9, 9, 9,10,10,10,11,11, - 11,11, 7, 5, 5, 7, 7, 8, 8, 9, 9,10,10,10,10,11, - 11,11,11,15, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,11, - 11,11,11,11,14, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11, - 11,11,11,12,12,15,12,12, 9, 9,10,10,10,10,10,11, - 11,11,11,11,11,12,14,12,11, 9, 9,10,10,10,10,11, - 11,11,11,11,11,12,12,14,14,14,11,11,10,10,10,10, - 11,11,11,11,11,12,12,12,14,14,14,11,11,10,10,11, - 11,11,11,11,12,12,12,12,12,15,15,14,13,13,11,11, - 11,11,12,12,12,12,12,12,12,12,14,14,14,14,14,11, - 11,11,11,12,12,12,12,12,12,12,12,15,14,15,14,14, - 12,12,11,12,12,12,12,12,12,12,12,12,14,15,15,14, - 16,12,12,11,11,12,12,13,12,12,12,12,13,15,14,16, - 14,15,14,14,12,12,12,12,13,12,12,12,13,13,15,15, - 15,15,15,14,13,12,12,12,12,12,12,13,13,13,13,14, - 14,15,14,15,14,15,13,12,12,12,12,12,13,13,13,13, - 15,15,15,15,14,15,14,12,13,12,12,12,12,13,12,13, - 13, -}; - -static float _vq_quantthresh__44c5_s2_p9_1[] = { - -97.5, -84.5, -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, - 6.5, 19.5, 32.5, 45.5, 58.5, 71.5, 84.5, 97.5, -}; - -static long _vq_quantmap__44c5_s2_p9_1[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s2_p9_1 = { - _vq_quantthresh__44c5_s2_p9_1, - _vq_quantmap__44c5_s2_p9_1, - 17, - 17 -}; - -static static_codebook _44c5_s2_p9_1 = { - 2, 289, - _vq_lengthlist__44c5_s2_p9_1, - 1, -522584064, 1618608128, 5, 0, - _vq_quantlist__44c5_s2_p9_1, - NULL, - &_vq_auxt__44c5_s2_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s2_p9_2.vqh b/lib/books/coupled/_44c5_s2_p9_2.vqh deleted file mode 100644 index 9a1c73a8..00000000 --- a/lib/books/coupled/_44c5_s2_p9_2.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s2_p9_2_VQH_ -#define _V__44c5_s2_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s2_p9_2[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c5_s2_p9_2[] = { - 3, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, - 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 6, 6, 6, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7, 8, 8, - 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 8, - 8, 9, 9, 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, - 9, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, - 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, - 9, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c5_s2_p9_2[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c5_s2_p9_2[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s2_p9_2 = { - _vq_quantthresh__44c5_s2_p9_2, - _vq_quantmap__44c5_s2_p9_2, - 13, - 13 -}; - -static static_codebook _44c5_s2_p9_2 = { - 2, 169, - _vq_lengthlist__44c5_s2_p9_2, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c5_s2_p9_2, - NULL, - &_vq_auxt__44c5_s2_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s3_p7_0.vqh b/lib/books/coupled/_44c5_s3_p7_0.vqh deleted file mode 100644 index 4374c991..00000000 --- a/lib/books/coupled/_44c5_s3_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s3_p7_0_VQH_ -#define _V__44c5_s3_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s3_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c5_s3_p7_0[] = { - 1, 3, 3, 7, 7,10,10, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 7, 7,10,10, 0, 0, 0, 0, 0, 0, 6, 5, 5, 8, 7,10, - 10, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0, 0, 0, - 0, 0,13,12,10,10,11,11, 0, 0, 0, 0, 0, 0, 0,13, - 13,10,10,10,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12, - 12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,11,12, 0, - 0, 0, 0, 0, 0, 0, 0, 0,16,16,13,13, 0, 0, 0, 0, - 0, 0, 0, 0, 0,17,17,13,13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,16,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,16,16, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c5_s3_p7_0[] = { - -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, - 12.5, 17.5, 22.5, 27.5, -}; - -static long _vq_quantmap__44c5_s3_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s3_p7_0 = { - _vq_quantthresh__44c5_s3_p7_0, - _vq_quantmap__44c5_s3_p7_0, - 13, - 13 -}; - -static static_codebook _44c5_s3_p7_0 = { - 2, 169, - _vq_lengthlist__44c5_s3_p7_0, - 1, -526516224, 1616117760, 4, 0, - _vq_quantlist__44c5_s3_p7_0, - NULL, - &_vq_auxt__44c5_s3_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s3_p7_1.vqh b/lib/books/coupled/_44c5_s3_p7_1.vqh deleted file mode 100644 index a0845bb6..00000000 --- a/lib/books/coupled/_44c5_s3_p7_1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s3_p7_1_VQH_ -#define _V__44c5_s3_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s3_p7_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c5_s3_p7_1[] = { - 2, 4, 4, 5, 5, 7, 4, 4, 6, 5, 7, 4, 4, 5, 5, 7, - 6, 6, 5, 5, 7, 7, 7, 5, 5, -}; - -static float _vq_quantthresh__44c5_s3_p7_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c5_s3_p7_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s3_p7_1 = { - _vq_quantthresh__44c5_s3_p7_1, - _vq_quantmap__44c5_s3_p7_1, - 5, - 5 -}; - -static static_codebook _44c5_s3_p7_1 = { - 2, 25, - _vq_lengthlist__44c5_s3_p7_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c5_s3_p7_1, - NULL, - &_vq_auxt__44c5_s3_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s3_p8_0.vqh b/lib/books/coupled/_44c5_s3_p8_0.vqh deleted file mode 100644 index 987d3ac0..00000000 --- a/lib/books/coupled/_44c5_s3_p8_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s3_p8_0_VQH_ -#define _V__44c5_s3_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s3_p8_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c5_s3_p8_0[] = { - 1, 3, 4, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 6, 6, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 6, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8, 9,10, 0, 0, 0, 0, 0, - 0, 0,13,12, 9, 9,10,11, 0, 0, 0, 0, 0, 0, 0,12, - 13, 9, 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,12, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,12,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,15,16,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,16,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,15,14, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c5_s3_p8_0[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c5_s3_p8_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s3_p8_0 = { - _vq_quantthresh__44c5_s3_p8_0, - _vq_quantmap__44c5_s3_p8_0, - 13, - 13 -}; - -static static_codebook _44c5_s3_p8_0 = { - 2, 169, - _vq_lengthlist__44c5_s3_p8_0, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c5_s3_p8_0, - NULL, - &_vq_auxt__44c5_s3_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s3_p8_1.vqh b/lib/books/coupled/_44c5_s3_p8_1.vqh deleted file mode 100644 index 04d232ff..00000000 --- a/lib/books/coupled/_44c5_s3_p8_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s3_p8_1_VQH_ -#define _V__44c5_s3_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s3_p8_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c5_s3_p8_1[] = { - 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 5, 5, - 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, - 7, 8, 8, 8, 8, 8, 8, 9, 7, 7, 7, 7, 7, 7, 8, 8, - 8, 8, 8, 8,10, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 8, - 8, 9, 9, 9, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,10, 9, - 9, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, - 9, 9, 9, 9, 8, 9, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, - 9, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c5_s3_p8_1[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c5_s3_p8_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s3_p8_1 = { - _vq_quantthresh__44c5_s3_p8_1, - _vq_quantmap__44c5_s3_p8_1, - 13, - 13 -}; - -static static_codebook _44c5_s3_p8_1 = { - 2, 169, - _vq_lengthlist__44c5_s3_p8_1, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c5_s3_p8_1, - NULL, - &_vq_auxt__44c5_s3_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s3_p9_0.vqh b/lib/books/coupled/_44c5_s3_p9_0.vqh deleted file mode 100644 index 9efe1323..00000000 --- a/lib/books/coupled/_44c5_s3_p9_0.vqh +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s3_p9_0_VQH_ -#define _V__44c5_s3_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s3_p9_0[] = { - 7, - 6, - 8, - 5, - 9, - 4, - 10, - 3, - 11, - 2, - 12, - 1, - 13, - 0, - 14, -}; - -static long _vq_lengthlist__44c5_s3_p9_0[] = { - 1, 3, 3,12,10,12,12,12,12,12,12,12,12,12,12, 5, - 5, 5,11,12,12,12,12,12,12,12,12,12,12,12, 5, 5, - 5,10,11,12,12,12,12,12,12,12,12,12,12,12,12,10, - 12,12,12,12,12,12,12,12,12,12,12,12,12,10,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11, - 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, - 11, -}; - -static float _vq_quantthresh__44c5_s3_p9_0[] = { - -1436.5, -1215.5, -994.5, -773.5, -552.5, -331.5, -110.5, 110.5, - 331.5, 552.5, 773.5, 994.5, 1215.5, 1436.5, -}; - -static long _vq_quantmap__44c5_s3_p9_0[] = { - 13, 11, 9, 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, 12, 14, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s3_p9_0 = { - _vq_quantthresh__44c5_s3_p9_0, - _vq_quantmap__44c5_s3_p9_0, - 15, - 15 -}; - -static static_codebook _44c5_s3_p9_0 = { - 2, 225, - _vq_lengthlist__44c5_s3_p9_0, - 1, -514315264, 1627103232, 4, 0, - _vq_quantlist__44c5_s3_p9_0, - NULL, - &_vq_auxt__44c5_s3_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s3_p9_1.vqh b/lib/books/coupled/_44c5_s3_p9_1.vqh deleted file mode 100644 index 2fab965e..00000000 --- a/lib/books/coupled/_44c5_s3_p9_1.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s3_p9_1_VQH_ -#define _V__44c5_s3_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s3_p9_1[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c5_s3_p9_1[] = { - 1, 4, 4, 7, 6, 8, 8, 8, 9,10,10,11,11,11,11,11, - 11, 6, 5, 5, 7, 7, 8, 8, 9, 9,10,10,11,11,11,11, - 12,12, 7, 5, 5, 7, 7, 8, 8, 9, 9,10,10,11,11,11, - 12,12,12,14, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,11, - 11,11,12,12,14, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11, - 11,12,12,12,12,15,12,12, 9, 9, 9, 9,10,10,10,11, - 11,11,11,12,12,12,14,12,12, 9, 9,10, 9,10,10,11, - 10,11,11,11,11,12,12,15,15,14,11,11,10,10,10,10, - 11,11,12,11,12,12,12,12,15,14,14,11,11,10,10,11, - 10,11,11,12,12,12,12,12,12,15,16,15,14,13,11,11, - 11,11,11,12,12,12,12,13,12,12,16,14,15,13,14,11, - 11,11,11,12,12,12,12,12,13,12,12,16,15,16,15,14, - 12,12,12,12,12,12,12,12,12,12,12,12,15,16,15,15, - 15,12,12,11,11,12,13,12,13,12,12,12,12,16,15,16, - 15,15,14,13,12,11,12,12,12,12,12,13,12,13,16,15, - 15,15,16,14,14,12,12,12,12,12,12,12,12,13,13,15, - 14,15,15,16,15,15,13,13,12,12,12,12,12,13,13,13, - 15,16,15,16,15,14,15,13,12,12,12,12,12,13,12,13, - 13, -}; - -static float _vq_quantthresh__44c5_s3_p9_1[] = { - -97.5, -84.5, -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, - 6.5, 19.5, 32.5, 45.5, 58.5, 71.5, 84.5, 97.5, -}; - -static long _vq_quantmap__44c5_s3_p9_1[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s3_p9_1 = { - _vq_quantthresh__44c5_s3_p9_1, - _vq_quantmap__44c5_s3_p9_1, - 17, - 17 -}; - -static static_codebook _44c5_s3_p9_1 = { - 2, 289, - _vq_lengthlist__44c5_s3_p9_1, - 1, -522584064, 1618608128, 5, 0, - _vq_quantlist__44c5_s3_p9_1, - NULL, - &_vq_auxt__44c5_s3_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_s3_p9_2.vqh b/lib/books/coupled/_44c5_s3_p9_2.vqh deleted file mode 100644 index 478afd44..00000000 --- a/lib/books/coupled/_44c5_s3_p9_2.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c5_s3_p9_2_VQH_ -#define _V__44c5_s3_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c5_s3_p9_2[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c5_s3_p9_2[] = { - 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 7, 8, 8, 8, 6, 6, - 6, 7, 7, 7, 7, 7, 7, 8, 7, 8, 8, 6, 6, 6, 6, 7, - 7, 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 8, 8, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, - 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 7, 8, 8, - 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c5_s3_p9_2[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c5_s3_p9_2[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c5_s3_p9_2 = { - _vq_quantthresh__44c5_s3_p9_2, - _vq_quantmap__44c5_s3_p9_2, - 13, - 13 -}; - -static static_codebook _44c5_s3_p9_2 = { - 2, 169, - _vq_lengthlist__44c5_s3_p9_2, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c5_s3_p9_2, - NULL, - &_vq_auxt__44c5_s3_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c5_short.vqh b/lib/books/coupled/_44c5_short.vqh deleted file mode 100644 index f7c092a8..00000000 --- a/lib/books/coupled/_44c5_short.vqh +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c5_short_VQH_ -#define _V__44c5_short_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c5_short[] = { - 3,18, 9,18,12,17,14,16,17,17,16,15,17,12,17,12, - 17,14,17,17, 4,17, 4,17, 5,17, 7, 9,17,17,17, 9, - 17, 7,17, 8,17,10,17,17, 8,17, 4,17, 3,17, 5, 8, - 16,17,17, 9,17, 6,17, 6,17, 8,16,17, 9,17, 5,17, - 4,17, 4, 6,14,17,12,11, 9, 8, 7, 5, 5, 5,12,17, - 17,17,15, 9,16, 7,14, 5, 9,16,17,15,17, 8,17, 5, - 17, 4, 8,11, -}; - -static static_codebook _huff_book__44c5_short = { - 2, 100, - _huff_lengthlist__44c5_short, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_long.vqh b/lib/books/coupled/_44c6_long.vqh deleted file mode 100644 index 195d88f2..00000000 --- a/lib/books/coupled/_44c6_long.vqh +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c6_long_VQH_ -#define _V__44c6_long_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c6_long[] = { - 2,11, 7,14,11,16,11,11,13,13,10, 9,11,11,13,11, - 13,10,11,14, 6,20, 4,20, 5,20, 7, 9,14,16,14,11, - 12, 9,10, 7, 9, 8,11,13,10,20, 5,19, 4,19, 4, 8, - 13,19,14,11,12, 7, 8, 5, 7, 5, 9,13,11,19, 7,19, - 4,19, 4, 6,13,16,10,10, 8, 8, 7, 5, 6, 4, 7,12, - 11,11,12,10,11, 8,10, 6, 6, 9,11,12,14,12,15,10, - 15, 7, 7, 7, -}; - -static static_codebook _huff_book__44c6_long = { - 2, 100, - _huff_lengthlist__44c6_long, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s0_p1_0.vqh b/lib/books/coupled/_44c6_s0_p1_0.vqh deleted file mode 100644 index 2d2be61b..00000000 --- a/lib/books/coupled/_44c6_s0_p1_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s0_p1_0_VQH_ -#define _V__44c6_s0_p1_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s0_p1_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c6_s0_p1_0[] = { - 1, 6, 6, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, - 8, 8, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 0, 0, 0, 9, - 8, 0, 0, 0, 8, 9, 0, 0, 0,12,12, 0, 0, 0, 0, 0, - 0, 0, 5, 7, 7, 0, 0, 0, 8, 9, 0, 0, 0, 9, 9, 0, - 0, 0,12,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 9, 9, 0, 0, 0, 8, 7, 0, 0, - 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, - 9, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 9, 9, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, - 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, 9, 9, 0, - 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,11,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,12,11, 0, 0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0, - 11,11, 0, 0, 0, 0, 0, 0, 0, 8,11,11, 0, 0, 0,10, - 10, 0, 0, 0,11,10, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c6_s0_p1_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c6_s0_p1_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s0_p1_0 = { - _vq_quantthresh__44c6_s0_p1_0, - _vq_quantmap__44c6_s0_p1_0, - 5, - 5 -}; - -static static_codebook _44c6_s0_p1_0 = { - 4, 625, - _vq_lengthlist__44c6_s0_p1_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c6_s0_p1_0, - NULL, - &_vq_auxt__44c6_s0_p1_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s0_p2_0.vqh b/lib/books/coupled/_44c6_s0_p2_0.vqh deleted file mode 100644 index 2c015664..00000000 --- a/lib/books/coupled/_44c6_s0_p2_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s0_p2_0_VQH_ -#define _V__44c6_s0_p2_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s0_p2_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c6_s0_p2_0[] = { - 1, 6, 6, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, - 8, 8, 0, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0, 0, 9, - 8, 0, 0, 0, 9, 8, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 6, 7, 8, 0, 0, 0, 8, 9, 0, 0, 0, 8, 9, 0, - 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 8, 7, 0, 0, - 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, - 8, 9, 0, 0, 0, 7, 8, 0, 0, 0, 8, 8, 0, 0, 0,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 9, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 7, - 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, 8, 9, 0, - 0, 0, 8, 8, 0, 0, 0, 7, 8, 0, 0, 0,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,11,11, 0, 0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0, - 11,11, 0, 0, 0, 0, 0, 0, 0, 8,11,11, 0, 0, 0,10, - 10, 0, 0, 0,10,10, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c6_s0_p2_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c6_s0_p2_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s0_p2_0 = { - _vq_quantthresh__44c6_s0_p2_0, - _vq_quantmap__44c6_s0_p2_0, - 5, - 5 -}; - -static static_codebook _44c6_s0_p2_0 = { - 4, 625, - _vq_lengthlist__44c6_s0_p2_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c6_s0_p2_0, - NULL, - &_vq_auxt__44c6_s0_p2_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s0_p3_0.vqh b/lib/books/coupled/_44c6_s0_p3_0.vqh deleted file mode 100644 index 5332a5fb..00000000 --- a/lib/books/coupled/_44c6_s0_p3_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s0_p3_0_VQH_ -#define _V__44c6_s0_p3_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s0_p3_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c6_s0_p3_0[] = { - 2, 3, 3, 5, 5, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, - 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 6, 6, 6, 6, - 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, - 8, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, - 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c6_s0_p3_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c6_s0_p3_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s0_p3_0 = { - _vq_quantthresh__44c6_s0_p3_0, - _vq_quantmap__44c6_s0_p3_0, - 9, - 9 -}; - -static static_codebook _44c6_s0_p3_0 = { - 2, 81, - _vq_lengthlist__44c6_s0_p3_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c6_s0_p3_0, - NULL, - &_vq_auxt__44c6_s0_p3_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s0_p4_0.vqh b/lib/books/coupled/_44c6_s0_p4_0.vqh deleted file mode 100644 index 68c5e108..00000000 --- a/lib/books/coupled/_44c6_s0_p4_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s0_p4_0_VQH_ -#define _V__44c6_s0_p4_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s0_p4_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c6_s0_p4_0[] = { - 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, - 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6, - 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, - 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c6_s0_p4_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c6_s0_p4_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s0_p4_0 = { - _vq_quantthresh__44c6_s0_p4_0, - _vq_quantmap__44c6_s0_p4_0, - 9, - 9 -}; - -static static_codebook _44c6_s0_p4_0 = { - 2, 81, - _vq_lengthlist__44c6_s0_p4_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c6_s0_p4_0, - NULL, - &_vq_auxt__44c6_s0_p4_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s0_p5_0.vqh b/lib/books/coupled/_44c6_s0_p5_0.vqh deleted file mode 100644 index 410942e7..00000000 --- a/lib/books/coupled/_44c6_s0_p5_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s0_p5_0_VQH_ -#define _V__44c6_s0_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s0_p5_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c6_s0_p5_0[] = { - 3, 4, 4, 5, 5, 7, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 5, 5, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 4, 6, 5, 7, 7, 9, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 5, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8,10,10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, - 10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,10,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,12,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c6_s0_p5_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c6_s0_p5_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s0_p5_0 = { - _vq_quantthresh__44c6_s0_p5_0, - _vq_quantmap__44c6_s0_p5_0, - 17, - 17 -}; - -static static_codebook _44c6_s0_p5_0 = { - 2, 289, - _vq_lengthlist__44c6_s0_p5_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c6_s0_p5_0, - NULL, - &_vq_auxt__44c6_s0_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s0_p6_0.vqh b/lib/books/coupled/_44c6_s0_p6_0.vqh deleted file mode 100644 index 446d087f..00000000 --- a/lib/books/coupled/_44c6_s0_p6_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s0_p6_0_VQH_ -#define _V__44c6_s0_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s0_p6_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c6_s0_p6_0[] = { - 3, 4, 4, 5, 5, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 5, 5, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 4, 5, 5, 7, 7, 9, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 5, 6, 6, 7, 7,10,10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 6, 6, 7, 7,10,10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8,10,10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 9,11,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,10,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c6_s0_p6_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c6_s0_p6_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s0_p6_0 = { - _vq_quantthresh__44c6_s0_p6_0, - _vq_quantmap__44c6_s0_p6_0, - 17, - 17 -}; - -static static_codebook _44c6_s0_p6_0 = { - 2, 289, - _vq_lengthlist__44c6_s0_p6_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c6_s0_p6_0, - NULL, - &_vq_auxt__44c6_s0_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s0_p7_0.vqh b/lib/books/coupled/_44c6_s0_p7_0.vqh deleted file mode 100644 index 48cbc331..00000000 --- a/lib/books/coupled/_44c6_s0_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s0_p7_0_VQH_ -#define _V__44c6_s0_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s0_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c6_s0_p7_0[] = { - 1, 3, 3, 7, 7,10,10, 0, 0, 0, 0, 0, 0, 5, 5, 5, - 8, 8,10,10, 0, 0, 0, 0, 0, 0, 6, 5, 5, 8, 8,10, - 10, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 9,10,11, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8,11,11, 0, 0, 0, 0, 0, - 0, 0,12,12,10,10,11,11, 0, 0, 0, 0, 0, 0, 0,13, - 13,10,10,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12, - 12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12, 0, - 0, 0, 0, 0, 0, 0, 0, 0,15,15,13,13, 0, 0, 0, 0, - 0, 0, 0, 0, 0,16,16,13,13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,14,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,15,15, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c6_s0_p7_0[] = { - -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, - 12.5, 17.5, 22.5, 27.5, -}; - -static long _vq_quantmap__44c6_s0_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s0_p7_0 = { - _vq_quantthresh__44c6_s0_p7_0, - _vq_quantmap__44c6_s0_p7_0, - 13, - 13 -}; - -static static_codebook _44c6_s0_p7_0 = { - 2, 169, - _vq_lengthlist__44c6_s0_p7_0, - 1, -526516224, 1616117760, 4, 0, - _vq_quantlist__44c6_s0_p7_0, - NULL, - &_vq_auxt__44c6_s0_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s0_p7_1.vqh b/lib/books/coupled/_44c6_s0_p7_1.vqh deleted file mode 100644 index da6ac804..00000000 --- a/lib/books/coupled/_44c6_s0_p7_1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s0_p7_1_VQH_ -#define _V__44c6_s0_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s0_p7_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c6_s0_p7_1[] = { - 3, 4, 4, 4, 5, 6, 4, 4, 5, 5, 6, 4, 4, 5, 5, 6, - 5, 5, 5, 5, 6, 6, 6, 5, 5, -}; - -static float _vq_quantthresh__44c6_s0_p7_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c6_s0_p7_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s0_p7_1 = { - _vq_quantthresh__44c6_s0_p7_1, - _vq_quantmap__44c6_s0_p7_1, - 5, - 5 -}; - -static static_codebook _44c6_s0_p7_1 = { - 2, 25, - _vq_lengthlist__44c6_s0_p7_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c6_s0_p7_1, - NULL, - &_vq_auxt__44c6_s0_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s0_p8_0.vqh b/lib/books/coupled/_44c6_s0_p8_0.vqh deleted file mode 100644 index f7090def..00000000 --- a/lib/books/coupled/_44c6_s0_p8_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s0_p8_0_VQH_ -#define _V__44c6_s0_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s0_p8_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c6_s0_p8_0[] = { - 1, 4, 3, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10, 9, 0, 0, - 0, 0, 0, 0, 0, 7, 7, 7, 7,10, 9, 0, 0, 0, 0, 0, - 0, 0,12,11, 9, 9,10,11, 0, 0, 0, 0, 0, 0, 0,12, - 12, 9, 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,15,16,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,16,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,15,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,15,15, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c6_s0_p8_0[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c6_s0_p8_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s0_p8_0 = { - _vq_quantthresh__44c6_s0_p8_0, - _vq_quantmap__44c6_s0_p8_0, - 13, - 13 -}; - -static static_codebook _44c6_s0_p8_0 = { - 2, 169, - _vq_lengthlist__44c6_s0_p8_0, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c6_s0_p8_0, - NULL, - &_vq_auxt__44c6_s0_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s0_p8_1.vqh b/lib/books/coupled/_44c6_s0_p8_1.vqh deleted file mode 100644 index f2aa3de7..00000000 --- a/lib/books/coupled/_44c6_s0_p8_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s0_p8_1_VQH_ -#define _V__44c6_s0_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s0_p8_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c6_s0_p8_1[] = { - 3, 5, 5, 6, 6, 7, 7, 7, 8, 8, 8, 8, 8, 9, 5, 5, - 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, - 7, 8, 8, 8, 8, 8, 8, 9, 6, 6, 7, 7, 8, 8, 8, 8, - 8, 8, 8, 8, 9, 9, 9, 7, 7, 8, 7, 8, 8, 8, 8, 8, - 8,10, 9, 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9,10, - 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9,10, 9, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8,10,10, 9,10, 9, 8, 8, 8, - 8, 8, 8, 8, 8,10, 9, 9,10, 9, 8, 8, 8, 8, 8, 8, - 8, 8,10,10,10,10, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, - 10,10, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8,10, 9,10, 9, - 9, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c6_s0_p8_1[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c6_s0_p8_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s0_p8_1 = { - _vq_quantthresh__44c6_s0_p8_1, - _vq_quantmap__44c6_s0_p8_1, - 13, - 13 -}; - -static static_codebook _44c6_s0_p8_1 = { - 2, 169, - _vq_lengthlist__44c6_s0_p8_1, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c6_s0_p8_1, - NULL, - &_vq_auxt__44c6_s0_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s0_p9_0.vqh b/lib/books/coupled/_44c6_s0_p9_0.vqh deleted file mode 100644 index b4259662..00000000 --- a/lib/books/coupled/_44c6_s0_p9_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s0_p9_0_VQH_ -#define _V__44c6_s0_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s0_p9_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c6_s0_p9_0[] = { - 1, 4, 4,12,12,12,12,12,12, 4, 6, 8,12,12,12,12, - 12,12, 2,10, 7,12,12,12,12,12,12,12, 7,12,12,12, - 12,12,12,12,12,12, 7,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,12,12,12,12,11,11,11,11,11, - 11, -}; - -static float _vq_quantthresh__44c6_s0_p9_0[] = { - -2229.5, -1592.5, -955.5, -318.5, 318.5, 955.5, 1592.5, 2229.5, -}; - -static long _vq_quantmap__44c6_s0_p9_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s0_p9_0 = { - _vq_quantthresh__44c6_s0_p9_0, - _vq_quantmap__44c6_s0_p9_0, - 9, - 9 -}; - -static static_codebook _44c6_s0_p9_0 = { - 2, 81, - _vq_lengthlist__44c6_s0_p9_0, - 1, -512497664, 1630791680, 4, 0, - _vq_quantlist__44c6_s0_p9_0, - NULL, - &_vq_auxt__44c6_s0_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s0_p9_1.vqh b/lib/books/coupled/_44c6_s0_p9_1.vqh deleted file mode 100644 index 55235566..00000000 --- a/lib/books/coupled/_44c6_s0_p9_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s0_p9_1_VQH_ -#define _V__44c6_s0_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s0_p9_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c6_s0_p9_1[] = { - 1, 3, 3, 6, 6, 8, 8,10,10,11,11,12,12, 6, 5, 5, - 8, 8, 9, 9,11,11,12,12,12,12, 6, 6, 5, 8, 8,10, - 10,11,11,12,12,12,12,19, 8, 9, 9, 9,10,11,11,12, - 12,13,13,12,15, 9, 8, 9, 9,11,11,12,12,12,13,12, - 13,17,12,13,10,10,12,12,12,13,12,12,13,12,17,13, - 12,10,10,12,12,13,12,12,13,13,14,19,15,16,13,12, - 12,12,13,14,13,10,14,13,18,18,18,12,12,12,11,13, - 13,13,13,15,14,17,16,18,14,14,13,12,14,12,14,12, - 13,14,18,18,18,14,15,13,11,13,11,14,14,15,15,18, - 16,17,16,18,14,14,14,12,14,12,14,14,18,18,18,18, - 17,14,13,14,11,15,12,14,14, -}; - -static float _vq_quantthresh__44c6_s0_p9_1[] = { - -269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 24.5, 73.5, - 122.5, 171.5, 220.5, 269.5, -}; - -static long _vq_quantmap__44c6_s0_p9_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s0_p9_1 = { - _vq_quantthresh__44c6_s0_p9_1, - _vq_quantmap__44c6_s0_p9_1, - 13, - 13 -}; - -static static_codebook _44c6_s0_p9_1 = { - 2, 169, - _vq_lengthlist__44c6_s0_p9_1, - 1, -518889472, 1622704128, 4, 0, - _vq_quantlist__44c6_s0_p9_1, - NULL, - &_vq_auxt__44c6_s0_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s0_p9_2.vqh b/lib/books/coupled/_44c6_s0_p9_2.vqh deleted file mode 100644 index 7b5b4071..00000000 --- a/lib/books/coupled/_44c6_s0_p9_2.vqh +++ /dev/null @@ -1,118 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s0_p9_2_VQH_ -#define _V__44c6_s0_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s0_p9_2[] = { - 24, - 23, - 25, - 22, - 26, - 21, - 27, - 20, - 28, - 19, - 29, - 18, - 30, - 17, - 31, - 16, - 32, - 15, - 33, - 14, - 34, - 13, - 35, - 12, - 36, - 11, - 37, - 10, - 38, - 9, - 39, - 8, - 40, - 7, - 41, - 6, - 42, - 5, - 43, - 4, - 44, - 3, - 45, - 2, - 46, - 1, - 47, - 0, - 48, -}; - -static long _vq_lengthlist__44c6_s0_p9_2[] = { - 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c6_s0_p9_2[] = { - -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, - -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, - 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, - 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, -}; - -static long _vq_quantmap__44c6_s0_p9_2[] = { - 47, 45, 43, 41, 39, 37, 35, 33, - 31, 29, 27, 25, 23, 21, 19, 17, - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, 18, 20, 22, 24, 26, 28, 30, - 32, 34, 36, 38, 40, 42, 44, 46, - 48, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s0_p9_2 = { - _vq_quantthresh__44c6_s0_p9_2, - _vq_quantmap__44c6_s0_p9_2, - 49, - 49 -}; - -static static_codebook _44c6_s0_p9_2 = { - 1, 49, - _vq_lengthlist__44c6_s0_p9_2, - 1, -526909440, 1611661312, 6, 0, - _vq_quantlist__44c6_s0_p9_2, - NULL, - &_vq_auxt__44c6_s0_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s1_p2_0.vqh b/lib/books/coupled/_44c6_s1_p2_0.vqh deleted file mode 100644 index dc464a71..00000000 --- a/lib/books/coupled/_44c6_s1_p2_0.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s1_p2_0_VQH_ -#define _V__44c6_s1_p2_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s1_p2_0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c6_s1_p2_0[] = { - 1, 3, 3, 0, 0, 0, 0, 0, 0, 4, 5, 5, 0, 0, 0, 0, - 0, 0, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c6_s1_p2_0[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c6_s1_p2_0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s1_p2_0 = { - _vq_quantthresh__44c6_s1_p2_0, - _vq_quantmap__44c6_s1_p2_0, - 3, - 3 -}; - -static static_codebook _44c6_s1_p2_0 = { - 4, 81, - _vq_lengthlist__44c6_s1_p2_0, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c6_s1_p2_0, - NULL, - &_vq_auxt__44c6_s1_p2_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s1_p4_0.vqh b/lib/books/coupled/_44c6_s1_p4_0.vqh deleted file mode 100644 index 00d6e32b..00000000 --- a/lib/books/coupled/_44c6_s1_p4_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s1_p4_0_VQH_ -#define _V__44c6_s1_p4_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s1_p4_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c6_s1_p4_0[] = { - 3, 3, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 7, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 3, 4, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 9, 9, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 6, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c6_s1_p4_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c6_s1_p4_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s1_p4_0 = { - _vq_quantthresh__44c6_s1_p4_0, - _vq_quantmap__44c6_s1_p4_0, - 5, - 5 -}; - -static static_codebook _44c6_s1_p4_0 = { - 4, 625, - _vq_lengthlist__44c6_s1_p4_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c6_s1_p4_0, - NULL, - &_vq_auxt__44c6_s1_p4_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s1_p6_0.vqh b/lib/books/coupled/_44c6_s1_p6_0.vqh deleted file mode 100644 index fdfdf796..00000000 --- a/lib/books/coupled/_44c6_s1_p6_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s1_p6_0_VQH_ -#define _V__44c6_s1_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s1_p6_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c6_s1_p6_0[] = { - 2, 2, 2, 4, 4, 8, 8,10,10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 8, 7,10,10, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 7,10, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 8,10,10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,10,10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,10,10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,10,10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, - 10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 9,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c6_s1_p6_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c6_s1_p6_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s1_p6_0 = { - _vq_quantthresh__44c6_s1_p6_0, - _vq_quantmap__44c6_s1_p6_0, - 17, - 17 -}; - -static static_codebook _44c6_s1_p6_0 = { - 2, 289, - _vq_lengthlist__44c6_s1_p6_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c6_s1_p6_0, - NULL, - &_vq_auxt__44c6_s1_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s1_p7_0.vqh b/lib/books/coupled/_44c6_s1_p7_0.vqh deleted file mode 100644 index 153c9ecd..00000000 --- a/lib/books/coupled/_44c6_s1_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s1_p7_0_VQH_ -#define _V__44c6_s1_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s1_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c6_s1_p7_0[] = { - 1, 4, 3, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, 4, 4, - 7, 8,10,10, 0, 0, 0, 0, 0, 0, 6, 5, 5, 8, 8,10, - 10, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8,11,11, 0, 0, 0, 0, 0, - 0, 0,12,12,10,10,11,11, 0, 0, 0, 0, 0, 0, 0,13, - 13,10,10,11,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12, - 12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12, 0, - 0, 0, 0, 0, 0, 0, 0, 0,16,17,13,14, 0, 0, 0, 0, - 0, 0, 0, 0, 0,18,16,13,14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,16,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,18,15, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c6_s1_p7_0[] = { - -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, - 12.5, 17.5, 22.5, 27.5, -}; - -static long _vq_quantmap__44c6_s1_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s1_p7_0 = { - _vq_quantthresh__44c6_s1_p7_0, - _vq_quantmap__44c6_s1_p7_0, - 13, - 13 -}; - -static static_codebook _44c6_s1_p7_0 = { - 2, 169, - _vq_lengthlist__44c6_s1_p7_0, - 1, -526516224, 1616117760, 4, 0, - _vq_quantlist__44c6_s1_p7_0, - NULL, - &_vq_auxt__44c6_s1_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s1_p7_1.vqh b/lib/books/coupled/_44c6_s1_p7_1.vqh deleted file mode 100644 index 25fe6336..00000000 --- a/lib/books/coupled/_44c6_s1_p7_1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s1_p7_1_VQH_ -#define _V__44c6_s1_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s1_p7_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c6_s1_p7_1[] = { - 3, 3, 3, 4, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6, - 5, 5, 5, 5, 6, 6, 6, 5, 5, -}; - -static float _vq_quantthresh__44c6_s1_p7_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c6_s1_p7_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s1_p7_1 = { - _vq_quantthresh__44c6_s1_p7_1, - _vq_quantmap__44c6_s1_p7_1, - 5, - 5 -}; - -static static_codebook _44c6_s1_p7_1 = { - 2, 25, - _vq_lengthlist__44c6_s1_p7_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c6_s1_p7_1, - NULL, - &_vq_auxt__44c6_s1_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s1_p8_0.vqh b/lib/books/coupled/_44c6_s1_p8_0.vqh deleted file mode 100644 index 59520598..00000000 --- a/lib/books/coupled/_44c6_s1_p8_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s1_p8_0_VQH_ -#define _V__44c6_s1_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s1_p8_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c6_s1_p8_0[] = { - 1, 4, 3, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 6, 6, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 8, 7, 8, 8,10,10, 0, 0, 0, 0, 0, - 0, 0,12,12, 9, 9,11,10, 0, 0, 0, 0, 0, 0, 0,12, - 12, 9, 9,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,17,16,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15, 0,13,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,15,15, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c6_s1_p8_0[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c6_s1_p8_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s1_p8_0 = { - _vq_quantthresh__44c6_s1_p8_0, - _vq_quantmap__44c6_s1_p8_0, - 13, - 13 -}; - -static static_codebook _44c6_s1_p8_0 = { - 2, 169, - _vq_lengthlist__44c6_s1_p8_0, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c6_s1_p8_0, - NULL, - &_vq_auxt__44c6_s1_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s1_p8_1.vqh b/lib/books/coupled/_44c6_s1_p8_1.vqh deleted file mode 100644 index 3697e212..00000000 --- a/lib/books/coupled/_44c6_s1_p8_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s1_p8_1_VQH_ -#define _V__44c6_s1_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s1_p8_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c6_s1_p8_1[] = { - 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 5, 5, - 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, - 7, 8, 8, 8, 8, 8, 8,10, 6, 6, 7, 7, 7, 7, 8, 8, - 8, 8, 8, 8,10, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 8, - 8, 9, 9, 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,10,10, - 10, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9,10,10, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8, - 8, 8, 8, 8, 8,10, 9, 9,10, 9, 8, 8, 9, 8, 8, 8, - 8, 8,10,10, 9,10,10, 8, 8, 8, 8, 8, 8, 8, 8, 9, - 10, 9,10,10, 9, 8, 8, 8, 8, 8, 8, 8, 9,10,10, 9, - 9, 9,10, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c6_s1_p8_1[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c6_s1_p8_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s1_p8_1 = { - _vq_quantthresh__44c6_s1_p8_1, - _vq_quantmap__44c6_s1_p8_1, - 13, - 13 -}; - -static static_codebook _44c6_s1_p8_1 = { - 2, 169, - _vq_lengthlist__44c6_s1_p8_1, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c6_s1_p8_1, - NULL, - &_vq_auxt__44c6_s1_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s1_p9_0.vqh b/lib/books/coupled/_44c6_s1_p9_0.vqh deleted file mode 100644 index 48362b27..00000000 --- a/lib/books/coupled/_44c6_s1_p9_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s1_p9_0_VQH_ -#define _V__44c6_s1_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s1_p9_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c6_s1_p9_0[] = { - 1, 6, 6,11,11,11,11,11,11, 4, 5,10,11,11,11,11, - 11,11, 2,11, 7,11,11,11,11,11,11,11, 5,11,11,11, - 11,11,11,11,11,11, 5,11,11,11,10,10,10,10,10,10, - 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10, -}; - -static float _vq_quantthresh__44c6_s1_p9_0[] = { - -2229.5, -1592.5, -955.5, -318.5, 318.5, 955.5, 1592.5, 2229.5, -}; - -static long _vq_quantmap__44c6_s1_p9_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s1_p9_0 = { - _vq_quantthresh__44c6_s1_p9_0, - _vq_quantmap__44c6_s1_p9_0, - 9, - 9 -}; - -static static_codebook _44c6_s1_p9_0 = { - 2, 81, - _vq_lengthlist__44c6_s1_p9_0, - 1, -512497664, 1630791680, 4, 0, - _vq_quantlist__44c6_s1_p9_0, - NULL, - &_vq_auxt__44c6_s1_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s1_p9_1.vqh b/lib/books/coupled/_44c6_s1_p9_1.vqh deleted file mode 100644 index cd6d7226..00000000 --- a/lib/books/coupled/_44c6_s1_p9_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s1_p9_1_VQH_ -#define _V__44c6_s1_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s1_p9_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c6_s1_p9_1[] = { - 1, 4, 3, 6, 6, 8, 8,10, 9,11,10,11,12, 6, 5, 5, - 8, 8,10, 9,11,10,13,11,13,12, 5, 5, 5, 8, 7, 9, - 9,10,10,13,11,12,11,16, 8, 8, 9, 9,10,10,11,11, - 12,12,12,10,13, 9, 8, 9, 9,10,10,11,11,13,11,11, - 12,15,11,12,10,10,11,11,12,12,13,10,13,10,16,12, - 11,10, 9,11,11,12,11,11,12,11,13,16,13,14,13,12, - 13,13,12,13,12, 9,13,11,16,16,16,11,12,12, 9,13, - 12,12,12,13,13,16,14,16,12,12,13,11,14,11,13,10, - 13,12,16,16,16,13,14,14,10,13, 9,14,14,13,14,16, - 15,15,14,16,13,14,14,10,14,10,13,12,16,15,15,15, - 15,14,11,13,10,14,10,14,13, -}; - -static float _vq_quantthresh__44c6_s1_p9_1[] = { - -269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 24.5, 73.5, - 122.5, 171.5, 220.5, 269.5, -}; - -static long _vq_quantmap__44c6_s1_p9_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s1_p9_1 = { - _vq_quantthresh__44c6_s1_p9_1, - _vq_quantmap__44c6_s1_p9_1, - 13, - 13 -}; - -static static_codebook _44c6_s1_p9_1 = { - 2, 169, - _vq_lengthlist__44c6_s1_p9_1, - 1, -518889472, 1622704128, 4, 0, - _vq_quantlist__44c6_s1_p9_1, - NULL, - &_vq_auxt__44c6_s1_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s1_p9_2.vqh b/lib/books/coupled/_44c6_s1_p9_2.vqh deleted file mode 100644 index b6fdf155..00000000 --- a/lib/books/coupled/_44c6_s1_p9_2.vqh +++ /dev/null @@ -1,118 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s1_p9_2_VQH_ -#define _V__44c6_s1_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s1_p9_2[] = { - 24, - 23, - 25, - 22, - 26, - 21, - 27, - 20, - 28, - 19, - 29, - 18, - 30, - 17, - 31, - 16, - 32, - 15, - 33, - 14, - 34, - 13, - 35, - 12, - 36, - 11, - 37, - 10, - 38, - 9, - 39, - 8, - 40, - 7, - 41, - 6, - 42, - 5, - 43, - 4, - 44, - 3, - 45, - 2, - 46, - 1, - 47, - 0, - 48, -}; - -static long _vq_lengthlist__44c6_s1_p9_2[] = { - 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c6_s1_p9_2[] = { - -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, - -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, - 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, - 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, -}; - -static long _vq_quantmap__44c6_s1_p9_2[] = { - 47, 45, 43, 41, 39, 37, 35, 33, - 31, 29, 27, 25, 23, 21, 19, 17, - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, 18, 20, 22, 24, 26, 28, 30, - 32, 34, 36, 38, 40, 42, 44, 46, - 48, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s1_p9_2 = { - _vq_quantthresh__44c6_s1_p9_2, - _vq_quantmap__44c6_s1_p9_2, - 49, - 49 -}; - -static static_codebook _44c6_s1_p9_2 = { - 1, 49, - _vq_lengthlist__44c6_s1_p9_2, - 1, -526909440, 1611661312, 6, 0, - _vq_quantlist__44c6_s1_p9_2, - NULL, - &_vq_auxt__44c6_s1_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s2_p6_0.vqh b/lib/books/coupled/_44c6_s2_p6_0.vqh deleted file mode 100644 index 5244bd21..00000000 --- a/lib/books/coupled/_44c6_s2_p6_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s2_p6_0_VQH_ -#define _V__44c6_s2_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s2_p6_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c6_s2_p6_0[] = { - 2, 2, 2, 4, 3, 6, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c6_s2_p6_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c6_s2_p6_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s2_p6_0 = { - _vq_quantthresh__44c6_s2_p6_0, - _vq_quantmap__44c6_s2_p6_0, - 9, - 9 -}; - -static static_codebook _44c6_s2_p6_0 = { - 2, 81, - _vq_lengthlist__44c6_s2_p6_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c6_s2_p6_0, - NULL, - &_vq_auxt__44c6_s2_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s2_p7_0.vqh b/lib/books/coupled/_44c6_s2_p7_0.vqh deleted file mode 100644 index 27dbbc60..00000000 --- a/lib/books/coupled/_44c6_s2_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s2_p7_0_VQH_ -#define _V__44c6_s2_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s2_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c6_s2_p7_0[] = { - 1, 3, 3, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 7, 8,10,10, 0, 0, 0, 0, 0, 0, 6, 5, 5, 8, 8,10, - 10, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8,11,11, 0, 0, 0, 0, 0, - 0, 0,12,12,10,10,11,11, 0, 0, 0, 0, 0, 0, 0,13, - 13,10,10,11,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12, - 12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12, 0, - 0, 0, 0, 0, 0, 0, 0, 0,16,17,13,14, 0, 0, 0, 0, - 0, 0, 0, 0, 0,18,16,13,14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,16,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,18,15, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c6_s2_p7_0[] = { - -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, - 12.5, 17.5, 22.5, 27.5, -}; - -static long _vq_quantmap__44c6_s2_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s2_p7_0 = { - _vq_quantthresh__44c6_s2_p7_0, - _vq_quantmap__44c6_s2_p7_0, - 13, - 13 -}; - -static static_codebook _44c6_s2_p7_0 = { - 2, 169, - _vq_lengthlist__44c6_s2_p7_0, - 1, -526516224, 1616117760, 4, 0, - _vq_quantlist__44c6_s2_p7_0, - NULL, - &_vq_auxt__44c6_s2_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s2_p7_1.vqh b/lib/books/coupled/_44c6_s2_p7_1.vqh deleted file mode 100644 index e23adb39..00000000 --- a/lib/books/coupled/_44c6_s2_p7_1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s2_p7_1_VQH_ -#define _V__44c6_s2_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s2_p7_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c6_s2_p7_1[] = { - 3, 3, 3, 4, 4, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6, - 6, 5, 5, 5, 6, 7, 7, 5, 5, -}; - -static float _vq_quantthresh__44c6_s2_p7_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c6_s2_p7_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s2_p7_1 = { - _vq_quantthresh__44c6_s2_p7_1, - _vq_quantmap__44c6_s2_p7_1, - 5, - 5 -}; - -static static_codebook _44c6_s2_p7_1 = { - 2, 25, - _vq_lengthlist__44c6_s2_p7_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c6_s2_p7_1, - NULL, - &_vq_auxt__44c6_s2_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s2_p8_0.vqh b/lib/books/coupled/_44c6_s2_p8_0.vqh deleted file mode 100644 index c86621b4..00000000 --- a/lib/books/coupled/_44c6_s2_p8_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s2_p8_0_VQH_ -#define _V__44c6_s2_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s2_p8_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c6_s2_p8_0[] = { - 1, 4, 3, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 6, 6, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 8, 7, 8, 8,10,10, 0, 0, 0, 0, 0, - 0, 0,12,12, 9, 9,11,10, 0, 0, 0, 0, 0, 0, 0,12, - 12, 9, 9,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,17,16,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15, 0,13,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,15,15, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c6_s2_p8_0[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c6_s2_p8_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s2_p8_0 = { - _vq_quantthresh__44c6_s2_p8_0, - _vq_quantmap__44c6_s2_p8_0, - 13, - 13 -}; - -static static_codebook _44c6_s2_p8_0 = { - 2, 169, - _vq_lengthlist__44c6_s2_p8_0, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c6_s2_p8_0, - NULL, - &_vq_auxt__44c6_s2_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s2_p8_1.vqh b/lib/books/coupled/_44c6_s2_p8_1.vqh deleted file mode 100644 index 666d9a22..00000000 --- a/lib/books/coupled/_44c6_s2_p8_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s2_p8_1_VQH_ -#define _V__44c6_s2_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s2_p8_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c6_s2_p8_1[] = { - 3, 5, 5, 6, 6, 7, 7, 8, 7, 8, 8, 8, 8, 9, 5, 5, - 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, - 7, 8, 8, 8, 8, 8, 8,10, 6, 6, 7, 7, 7, 7, 8, 8, - 8, 8, 8, 8,10, 9, 9, 7, 7, 8, 7, 8, 8, 8, 8, 8, - 8, 9, 9, 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,10,10, - 10, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9,10,10, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8, - 8, 8, 8, 8, 8,10, 9, 9,10, 9, 8, 8, 9, 8, 8, 8, - 8, 8,10,10, 9,10,10, 8, 8, 8, 8, 8, 8, 8, 8, 9, - 10, 9,10,10, 9, 8, 8, 8, 8, 8, 8, 8, 9,10,10, 9, - 9, 9,10, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c6_s2_p8_1[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c6_s2_p8_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s2_p8_1 = { - _vq_quantthresh__44c6_s2_p8_1, - _vq_quantmap__44c6_s2_p8_1, - 13, - 13 -}; - -static static_codebook _44c6_s2_p8_1 = { - 2, 169, - _vq_lengthlist__44c6_s2_p8_1, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c6_s2_p8_1, - NULL, - &_vq_auxt__44c6_s2_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s2_p9_0.vqh b/lib/books/coupled/_44c6_s2_p9_0.vqh deleted file mode 100644 index 341e2323..00000000 --- a/lib/books/coupled/_44c6_s2_p9_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s2_p9_0_VQH_ -#define _V__44c6_s2_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s2_p9_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c6_s2_p9_0[] = { - 1, 6, 6,11,11,11,11,11,11, 4, 5,10,11,11,11,11, - 11,11, 2,11, 7,11,11,11,11,11,11,11, 5,11,11,11, - 11,11,11,11,11,11, 5,11,11,11,10,10,10,10,10,10, - 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10, -}; - -static float _vq_quantthresh__44c6_s2_p9_0[] = { - -2229.5, -1592.5, -955.5, -318.5, 318.5, 955.5, 1592.5, 2229.5, -}; - -static long _vq_quantmap__44c6_s2_p9_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s2_p9_0 = { - _vq_quantthresh__44c6_s2_p9_0, - _vq_quantmap__44c6_s2_p9_0, - 9, - 9 -}; - -static static_codebook _44c6_s2_p9_0 = { - 2, 81, - _vq_lengthlist__44c6_s2_p9_0, - 1, -512497664, 1630791680, 4, 0, - _vq_quantlist__44c6_s2_p9_0, - NULL, - &_vq_auxt__44c6_s2_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s2_p9_1.vqh b/lib/books/coupled/_44c6_s2_p9_1.vqh deleted file mode 100644 index 87f15d59..00000000 --- a/lib/books/coupled/_44c6_s2_p9_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s2_p9_1_VQH_ -#define _V__44c6_s2_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s2_p9_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c6_s2_p9_1[] = { - 1, 4, 3, 6, 6, 8, 8,10, 9,11,10,11,12, 6, 5, 5, - 8, 8,10, 9,11,10,13,11,13,12, 5, 5, 5, 8, 7, 9, - 9,10,10,13,11,12,11,16, 8, 8, 9, 9,10,10,11,11, - 12,12,12,10,13, 9, 8, 9, 9,10,10,11,11,13,11,11, - 12,15,11,12,10,10,11,11,12,12,13,10,13,10,16,12, - 11,10, 9,11,11,12,11,11,12,11,13,16,13,14,13,12, - 13,13,12,13,12, 9,13,11,16,16,16,11,12,12, 9,13, - 12,12,12,13,13,16,14,16,12,12,13,11,14,11,13,10, - 13,12,16,16,16,13,14,14,10,13, 9,14,14,13,14,16, - 15,15,14,16,13,14,14,10,14,10,13,12,16,15,15,15, - 15,14,11,13,10,14,10,14,13, -}; - -static float _vq_quantthresh__44c6_s2_p9_1[] = { - -269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 24.5, 73.5, - 122.5, 171.5, 220.5, 269.5, -}; - -static long _vq_quantmap__44c6_s2_p9_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s2_p9_1 = { - _vq_quantthresh__44c6_s2_p9_1, - _vq_quantmap__44c6_s2_p9_1, - 13, - 13 -}; - -static static_codebook _44c6_s2_p9_1 = { - 2, 169, - _vq_lengthlist__44c6_s2_p9_1, - 1, -518889472, 1622704128, 4, 0, - _vq_quantlist__44c6_s2_p9_1, - NULL, - &_vq_auxt__44c6_s2_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s2_p9_2.vqh b/lib/books/coupled/_44c6_s2_p9_2.vqh deleted file mode 100644 index 270497c2..00000000 --- a/lib/books/coupled/_44c6_s2_p9_2.vqh +++ /dev/null @@ -1,118 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s2_p9_2_VQH_ -#define _V__44c6_s2_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s2_p9_2[] = { - 24, - 23, - 25, - 22, - 26, - 21, - 27, - 20, - 28, - 19, - 29, - 18, - 30, - 17, - 31, - 16, - 32, - 15, - 33, - 14, - 34, - 13, - 35, - 12, - 36, - 11, - 37, - 10, - 38, - 9, - 39, - 8, - 40, - 7, - 41, - 6, - 42, - 5, - 43, - 4, - 44, - 3, - 45, - 2, - 46, - 1, - 47, - 0, - 48, -}; - -static long _vq_lengthlist__44c6_s2_p9_2[] = { - 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c6_s2_p9_2[] = { - -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, - -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, - 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, - 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, -}; - -static long _vq_quantmap__44c6_s2_p9_2[] = { - 47, 45, 43, 41, 39, 37, 35, 33, - 31, 29, 27, 25, 23, 21, 19, 17, - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, 18, 20, 22, 24, 26, 28, 30, - 32, 34, 36, 38, 40, 42, 44, 46, - 48, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s2_p9_2 = { - _vq_quantthresh__44c6_s2_p9_2, - _vq_quantmap__44c6_s2_p9_2, - 49, - 49 -}; - -static static_codebook _44c6_s2_p9_2 = { - 1, 49, - _vq_lengthlist__44c6_s2_p9_2, - 1, -526909440, 1611661312, 6, 0, - _vq_quantlist__44c6_s2_p9_2, - NULL, - &_vq_auxt__44c6_s2_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s3_p7_0.vqh b/lib/books/coupled/_44c6_s3_p7_0.vqh deleted file mode 100644 index 7a62076a..00000000 --- a/lib/books/coupled/_44c6_s3_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s3_p7_0_VQH_ -#define _V__44c6_s3_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s3_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c6_s3_p7_0[] = { - 1, 3, 3, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 5, 5, 5, - 8, 8,10,10, 0, 0, 0, 0, 0, 0, 6, 5, 5, 8, 8,10, - 10, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 9, 9,11,11, 0, 0, 0, 0, 0, - 0, 0,13,13,10,10,11,11, 0, 0, 0, 0, 0, 0, 0,14, - 13,10,10,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12, - 12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12, 0, - 0, 0, 0, 0, 0, 0, 0, 0,16,17,13,13, 0, 0, 0, 0, - 0, 0, 0, 0, 0,18,16,13,14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,16,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,18,15, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c6_s3_p7_0[] = { - -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, - 12.5, 17.5, 22.5, 27.5, -}; - -static long _vq_quantmap__44c6_s3_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s3_p7_0 = { - _vq_quantthresh__44c6_s3_p7_0, - _vq_quantmap__44c6_s3_p7_0, - 13, - 13 -}; - -static static_codebook _44c6_s3_p7_0 = { - 2, 169, - _vq_lengthlist__44c6_s3_p7_0, - 1, -526516224, 1616117760, 4, 0, - _vq_quantlist__44c6_s3_p7_0, - NULL, - &_vq_auxt__44c6_s3_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s3_p7_1.vqh b/lib/books/coupled/_44c6_s3_p7_1.vqh deleted file mode 100644 index bda0cad6..00000000 --- a/lib/books/coupled/_44c6_s3_p7_1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s3_p7_1_VQH_ -#define _V__44c6_s3_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s3_p7_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c6_s3_p7_1[] = { - 3, 3, 3, 4, 4, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 7, - 5, 5, 5, 5, 7, 7, 7, 5, 5, -}; - -static float _vq_quantthresh__44c6_s3_p7_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c6_s3_p7_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s3_p7_1 = { - _vq_quantthresh__44c6_s3_p7_1, - _vq_quantmap__44c6_s3_p7_1, - 5, - 5 -}; - -static static_codebook _44c6_s3_p7_1 = { - 2, 25, - _vq_lengthlist__44c6_s3_p7_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c6_s3_p7_1, - NULL, - &_vq_auxt__44c6_s3_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s3_p8_0.vqh b/lib/books/coupled/_44c6_s3_p8_0.vqh deleted file mode 100644 index efdb9bfc..00000000 --- a/lib/books/coupled/_44c6_s3_p8_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s3_p8_0_VQH_ -#define _V__44c6_s3_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s3_p8_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c6_s3_p8_0[] = { - 1, 4, 3, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 6, 6, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 8, 7, 8, 8,10,10, 0, 0, 0, 0, 0, - 0, 0,12,12, 9, 9,11,10, 0, 0, 0, 0, 0, 0, 0,12, - 12, 9, 9,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,17,16,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15, 0,13,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,15,15, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c6_s3_p8_0[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c6_s3_p8_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s3_p8_0 = { - _vq_quantthresh__44c6_s3_p8_0, - _vq_quantmap__44c6_s3_p8_0, - 13, - 13 -}; - -static static_codebook _44c6_s3_p8_0 = { - 2, 169, - _vq_lengthlist__44c6_s3_p8_0, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c6_s3_p8_0, - NULL, - &_vq_auxt__44c6_s3_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s3_p8_1.vqh b/lib/books/coupled/_44c6_s3_p8_1.vqh deleted file mode 100644 index 9df6d646..00000000 --- a/lib/books/coupled/_44c6_s3_p8_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s3_p8_1_VQH_ -#define _V__44c6_s3_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s3_p8_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c6_s3_p8_1[] = { - 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 7, 8, 8, 9, 5, 5, - 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, - 7, 8, 8, 8, 8, 8, 8,10, 6, 6, 7, 7, 7, 8, 8, 8, - 8, 8, 8, 8,10, 9, 9, 7, 7, 8, 7, 8, 8, 8, 8, 8, - 8,10, 9, 9, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,10,10, - 10, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9,10,10, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8, - 8, 8, 8, 8, 8,10, 9,10,10, 9, 8, 8, 9, 8, 8, 8, - 8, 8,10,10,10,10,10, 8, 8, 8, 8, 8, 8, 8, 8, 9, - 10, 9,10,10, 9, 8, 8, 8, 8, 8, 8, 8, 9,10,10,10, - 9, 9,10, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c6_s3_p8_1[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c6_s3_p8_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s3_p8_1 = { - _vq_quantthresh__44c6_s3_p8_1, - _vq_quantmap__44c6_s3_p8_1, - 13, - 13 -}; - -static static_codebook _44c6_s3_p8_1 = { - 2, 169, - _vq_lengthlist__44c6_s3_p8_1, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c6_s3_p8_1, - NULL, - &_vq_auxt__44c6_s3_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s3_p9_0.vqh b/lib/books/coupled/_44c6_s3_p9_0.vqh deleted file mode 100644 index e2cb1a6f..00000000 --- a/lib/books/coupled/_44c6_s3_p9_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s3_p9_0_VQH_ -#define _V__44c6_s3_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s3_p9_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c6_s3_p9_0[] = { - 1, 6, 6,11,11,11,11,11,11, 4, 5,10,11,11,11,11, - 11,11, 2,11, 7,11,11,11,11,11,11,11, 5,11,11,11, - 11,11,11,11,11,11, 5,11,11,11,10,10,10,10,10,10, - 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10, -}; - -static float _vq_quantthresh__44c6_s3_p9_0[] = { - -2229.5, -1592.5, -955.5, -318.5, 318.5, 955.5, 1592.5, 2229.5, -}; - -static long _vq_quantmap__44c6_s3_p9_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s3_p9_0 = { - _vq_quantthresh__44c6_s3_p9_0, - _vq_quantmap__44c6_s3_p9_0, - 9, - 9 -}; - -static static_codebook _44c6_s3_p9_0 = { - 2, 81, - _vq_lengthlist__44c6_s3_p9_0, - 1, -512497664, 1630791680, 4, 0, - _vq_quantlist__44c6_s3_p9_0, - NULL, - &_vq_auxt__44c6_s3_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s3_p9_1.vqh b/lib/books/coupled/_44c6_s3_p9_1.vqh deleted file mode 100644 index 53c4d38e..00000000 --- a/lib/books/coupled/_44c6_s3_p9_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s3_p9_1_VQH_ -#define _V__44c6_s3_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s3_p9_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c6_s3_p9_1[] = { - 1, 4, 3, 6, 6, 8, 8,10, 9,11,10,11,12, 6, 5, 5, - 8, 8,10, 9,11,10,13,11,13,12, 5, 5, 5, 8, 7, 9, - 9,10,10,13,11,12,11,16, 8, 8, 9, 9,10,10,11,11, - 12,12,12,10,13, 9, 8, 9, 9,10,10,11,11,13,11,11, - 12,15,11,12,10,10,11,11,12,12,13,10,13,10,16,12, - 11,10, 9,11,11,12,11,11,12,11,13,16,13,14,13,12, - 13,13,12,13,12, 9,13,11,16,16,16,11,12,12, 9,13, - 12,12,12,13,13,16,14,16,12,12,13,11,14,11,13,10, - 13,12,16,16,16,13,14,14,10,13, 9,14,14,13,14,16, - 15,15,14,16,13,14,14,10,14,10,13,12,16,15,15,15, - 15,14,11,13,10,14,10,14,13, -}; - -static float _vq_quantthresh__44c6_s3_p9_1[] = { - -269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 24.5, 73.5, - 122.5, 171.5, 220.5, 269.5, -}; - -static long _vq_quantmap__44c6_s3_p9_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s3_p9_1 = { - _vq_quantthresh__44c6_s3_p9_1, - _vq_quantmap__44c6_s3_p9_1, - 13, - 13 -}; - -static static_codebook _44c6_s3_p9_1 = { - 2, 169, - _vq_lengthlist__44c6_s3_p9_1, - 1, -518889472, 1622704128, 4, 0, - _vq_quantlist__44c6_s3_p9_1, - NULL, - &_vq_auxt__44c6_s3_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_s3_p9_2.vqh b/lib/books/coupled/_44c6_s3_p9_2.vqh deleted file mode 100644 index 0ce03c07..00000000 --- a/lib/books/coupled/_44c6_s3_p9_2.vqh +++ /dev/null @@ -1,118 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c6_s3_p9_2_VQH_ -#define _V__44c6_s3_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c6_s3_p9_2[] = { - 24, - 23, - 25, - 22, - 26, - 21, - 27, - 20, - 28, - 19, - 29, - 18, - 30, - 17, - 31, - 16, - 32, - 15, - 33, - 14, - 34, - 13, - 35, - 12, - 36, - 11, - 37, - 10, - 38, - 9, - 39, - 8, - 40, - 7, - 41, - 6, - 42, - 5, - 43, - 4, - 44, - 3, - 45, - 2, - 46, - 1, - 47, - 0, - 48, -}; - -static long _vq_lengthlist__44c6_s3_p9_2[] = { - 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c6_s3_p9_2[] = { - -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, - -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, - 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, - 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, -}; - -static long _vq_quantmap__44c6_s3_p9_2[] = { - 47, 45, 43, 41, 39, 37, 35, 33, - 31, 29, 27, 25, 23, 21, 19, 17, - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, 18, 20, 22, 24, 26, 28, 30, - 32, 34, 36, 38, 40, 42, 44, 46, - 48, -}; - -static encode_aux_threshmatch _vq_auxt__44c6_s3_p9_2 = { - _vq_quantthresh__44c6_s3_p9_2, - _vq_quantmap__44c6_s3_p9_2, - 49, - 49 -}; - -static static_codebook _44c6_s3_p9_2 = { - 1, 49, - _vq_lengthlist__44c6_s3_p9_2, - 1, -526909440, 1611661312, 6, 0, - _vq_quantlist__44c6_s3_p9_2, - NULL, - &_vq_auxt__44c6_s3_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c6_short.vqh b/lib/books/coupled/_44c6_short.vqh deleted file mode 100644 index eb3ffd35..00000000 --- a/lib/books/coupled/_44c6_short.vqh +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c6_short_VQH_ -#define _V__44c6_short_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c6_short[] = { - 3,18, 9,18,13,17,14,17,17,17,17,16,17,17,17,16, - 17,16,17,17, 4,17, 5,17, 7,17, 8,10,15,17,17,17, - 17,12,17, 9,17,10,15,17, 7,17, 5,17, 5,17, 5, 8, - 15,17,17,13,17, 8,17, 5,17, 7,14,17, 9,17, 5,17, - 4,17, 3, 5,14,17,12,14, 8, 9, 6, 6, 4, 3, 9,15, - 16,17,15,12,14, 8,13, 6, 8,16,17,16,17,10,17, 5, - 17, 4, 6,10, -}; - -static static_codebook _huff_book__44c6_short = { - 2, 100, - _huff_lengthlist__44c6_short, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_long.vqh b/lib/books/coupled/_44c7_long.vqh deleted file mode 100644 index 02a0775d..00000000 --- a/lib/books/coupled/_44c7_long.vqh +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c7_long_VQH_ -#define _V__44c7_long_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c7_long[] = { - 2,11,13, 7,11,12,12,13,14,14,11, 5, 6,19,19,19, - 19,19,12,12,13, 5, 4,19,19,19,19,19, 9,10, 6,19, - 19, 4, 6, 8, 9,11,13,16,10,19,19, 6, 5, 5, 7,10, - 12,17,11,19,19, 7, 5, 3, 5, 8,10,15,12,19,19, 9, - 7, 4, 4, 7, 9,15,12,19,19,11,10, 8, 6, 7, 9,15, - 11,10, 8,11,11, 9, 9, 9, 9,11,12, 9, 7,14,15,15, - 15,14, 9, 8, -}; - -static static_codebook _huff_book__44c7_long = { - 2, 100, - _huff_lengthlist__44c7_long, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p0_r0.vqh b/lib/books/coupled/_44c7_s0_p0_r0.vqh deleted file mode 100644 index 8d595d5b..00000000 --- a/lib/books/coupled/_44c7_s0_p0_r0.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p0_r0_VQH_ -#define _V__44c7_s0_p0_r0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p0_r0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c7_s0_p0_r0[] = { - 1, 5, 4,11,11,11, 4, 4,11,11,11, 3, 3,11,11,11, - 6, 7,11,11,11,11,11,11,11, -}; - -static float _vq_quantthresh__44c7_s0_p0_r0[] = { - -0.5, -0.16667, 0.16667, 0.5, -}; - -static long _vq_quantmap__44c7_s0_p0_r0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p0_r0 = { - _vq_quantthresh__44c7_s0_p0_r0, - _vq_quantmap__44c7_s0_p0_r0, - 5, - 5 -}; - -static static_codebook _44c7_s0_p0_r0 = { - 2, 25, - _vq_lengthlist__44c7_s0_p0_r0, - 1, -537569963, 1607816533, 3, 0, - _vq_quantlist__44c7_s0_p0_r0, - NULL, - &_vq_auxt__44c7_s0_p0_r0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p0_r1.vqh b/lib/books/coupled/_44c7_s0_p0_r1.vqh deleted file mode 100644 index 45d481f9..00000000 --- a/lib/books/coupled/_44c7_s0_p0_r1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p0_r1_VQH_ -#define _V__44c7_s0_p0_r1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p0_r1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c7_s0_p0_r1[] = { - 1, 5, 5,12,12, 6, 3, 3,12,12, 6, 4, 4,12,12,12, - 7, 8,12,11,11, 7, 7,11,11, -}; - -static float _vq_quantthresh__44c7_s0_p0_r1[] = { - -0.16667, -0.055556, 0.055556, 0.16667, -}; - -static long _vq_quantmap__44c7_s0_p0_r1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p0_r1 = { - _vq_quantthresh__44c7_s0_p0_r1, - _vq_quantmap__44c7_s0_p0_r1, - 5, - 5 -}; - -static static_codebook _44c7_s0_p0_r1 = { - 2, 25, - _vq_lengthlist__44c7_s0_p0_r1, - 1, -541298233, 1604088263, 3, 0, - _vq_quantlist__44c7_s0_p0_r1, - NULL, - &_vq_auxt__44c7_s0_p0_r1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p1_0.vqh b/lib/books/coupled/_44c7_s0_p1_0.vqh deleted file mode 100644 index 2cc95608..00000000 --- a/lib/books/coupled/_44c7_s0_p1_0.vqh +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p1_0_VQH_ -#define _V__44c7_s0_p1_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p1_0[] = { - 19, - 16, - 22, - 13, - 25, - 0, - 38, - 7, - 31, - 4, - 34, -}; - -static long _vq_lengthlist__44c7_s0_p1_0[] = { - 2, 3, 3, 5, 5, 0, 0, 0, 0, 0, 0, 5, 4, 4, 6, 6, - 0, 0, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, - 0, 0, 7, 7, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, - 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, - 0,11,11, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c7_s0_p1_0[] = { - -17, -13.5, -9, -4.5, -1.5, 1.5, 4.5, 9, - 13.5, 17, -}; - -static long _vq_quantmap__44c7_s0_p1_0[] = { - 5, 9, 7, 3, 1, 0, 2, 4, - 8, 10, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p1_0 = { - _vq_quantthresh__44c7_s0_p1_0, - _vq_quantmap__44c7_s0_p1_0, - 11, - 11 -}; - -static static_codebook _44c7_s0_p1_0 = { - 2, 121, - _vq_lengthlist__44c7_s0_p1_0, - 1, -527237120, 1611661312, 6, 0, - _vq_quantlist__44c7_s0_p1_0, - NULL, - &_vq_auxt__44c7_s0_p1_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p1_1.vqh b/lib/books/coupled/_44c7_s0_p1_1.vqh deleted file mode 100644 index 61cbf8be..00000000 --- a/lib/books/coupled/_44c7_s0_p1_1.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p1_1_VQH_ -#define _V__44c7_s0_p1_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p1_1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c7_s0_p1_1[] = { - 2, 3, 3, 4, 4, 4, 4, 3, 3, -}; - -static float _vq_quantthresh__44c7_s0_p1_1[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c7_s0_p1_1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p1_1 = { - _vq_quantthresh__44c7_s0_p1_1, - _vq_quantmap__44c7_s0_p1_1, - 3, - 3 -}; - -static static_codebook _44c7_s0_p1_1 = { - 2, 9, - _vq_lengthlist__44c7_s0_p1_1, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c7_s0_p1_1, - NULL, - &_vq_auxt__44c7_s0_p1_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p2_0.vqh b/lib/books/coupled/_44c7_s0_p2_0.vqh deleted file mode 100644 index 1dd0dc3c..00000000 --- a/lib/books/coupled/_44c7_s0_p2_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p2_0_VQH_ -#define _V__44c7_s0_p2_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p2_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c7_s0_p2_0[] = { - 1, 3, 3, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 5, 5, 5, - 8, 8,10,10, 0, 0, 0, 0, 0, 0, 6, 5, 5, 8, 8,10, - 10, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 9,10,11, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8,11,11, 0, 0, 0, 0, 0, - 0, 0,12,12,10,10,11,11, 0, 0, 0, 0, 0, 0, 0,13, - 12,10,10,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12, - 12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12, 0, - 0, 0, 0, 0, 0, 0, 0, 0,16,16,13,13, 0, 0, 0, 0, - 0, 0, 0, 0, 0,17,17,13,13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,16,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,15,16, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c7_s0_p2_0[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c7_s0_p2_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p2_0 = { - _vq_quantthresh__44c7_s0_p2_0, - _vq_quantmap__44c7_s0_p2_0, - 13, - 13 -}; - -static static_codebook _44c7_s0_p2_0 = { - 2, 169, - _vq_lengthlist__44c7_s0_p2_0, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c7_s0_p2_0, - NULL, - &_vq_auxt__44c7_s0_p2_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p2_1.vqh b/lib/books/coupled/_44c7_s0_p2_1.vqh deleted file mode 100644 index a1502f3d..00000000 --- a/lib/books/coupled/_44c7_s0_p2_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p2_1_VQH_ -#define _V__44c7_s0_p2_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p2_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c7_s0_p2_1[] = { - 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7,10, 5, 5, - 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, - 7, 7, 7, 8, 8, 8, 8,10, 6, 6, 7, 7, 7, 7, 8, 7, - 8, 8, 8, 8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8, 8, - 8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8,10,10, - 10, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8, - 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8, 8, 8, 8, - 8, 8,10,10,10,10,10, 8, 8, 8, 8, 8, 8, 8, 8,10, - 10,10,10,10, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10, - 10, 9,10, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c7_s0_p2_1[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c7_s0_p2_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p2_1 = { - _vq_quantthresh__44c7_s0_p2_1, - _vq_quantmap__44c7_s0_p2_1, - 13, - 13 -}; - -static static_codebook _44c7_s0_p2_1 = { - 2, 169, - _vq_lengthlist__44c7_s0_p2_1, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c7_s0_p2_1, - NULL, - &_vq_auxt__44c7_s0_p2_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p3_0.vqh b/lib/books/coupled/_44c7_s0_p3_0.vqh deleted file mode 100644 index f52f61b5..00000000 --- a/lib/books/coupled/_44c7_s0_p3_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p3_0_VQH_ -#define _V__44c7_s0_p3_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p3_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c7_s0_p3_0[] = { - 1, 6, 6, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, - 8, 8, 0, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0, 0, 9, - 8, 0, 0, 0, 9, 8, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 6, 7, 8, 0, 0, 0, 8, 9, 0, 0, 0, 8, 9, 0, - 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 8, 7, 0, 0, - 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, - 8, 9, 0, 0, 0, 7, 8, 0, 0, 0, 8, 8, 0, 0, 0,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 9, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 7, - 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, 8, 9, 0, - 0, 0, 8, 8, 0, 0, 0, 7, 8, 0, 0, 0,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,11,12, 0, 0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0, - 11,10, 0, 0, 0, 0, 0, 0, 0, 8,12,11, 0, 0, 0,10, - 10, 0, 0, 0,10,10, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c7_s0_p3_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c7_s0_p3_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p3_0 = { - _vq_quantthresh__44c7_s0_p3_0, - _vq_quantmap__44c7_s0_p3_0, - 5, - 5 -}; - -static static_codebook _44c7_s0_p3_0 = { - 4, 625, - _vq_lengthlist__44c7_s0_p3_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c7_s0_p3_0, - NULL, - &_vq_auxt__44c7_s0_p3_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p4_0.vqh b/lib/books/coupled/_44c7_s0_p4_0.vqh deleted file mode 100644 index 391824ce..00000000 --- a/lib/books/coupled/_44c7_s0_p4_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p4_0_VQH_ -#define _V__44c7_s0_p4_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p4_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c7_s0_p4_0[] = { - 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, - 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6, - 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 0, 0, 0, 0, 0, 0, 0, 8, 7, 0, 0, 0, 0, 0, - 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c7_s0_p4_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c7_s0_p4_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p4_0 = { - _vq_quantthresh__44c7_s0_p4_0, - _vq_quantmap__44c7_s0_p4_0, - 9, - 9 -}; - -static static_codebook _44c7_s0_p4_0 = { - 2, 81, - _vq_lengthlist__44c7_s0_p4_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c7_s0_p4_0, - NULL, - &_vq_auxt__44c7_s0_p4_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p5_0.vqh b/lib/books/coupled/_44c7_s0_p5_0.vqh deleted file mode 100644 index dc30554d..00000000 --- a/lib/books/coupled/_44c7_s0_p5_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p5_0_VQH_ -#define _V__44c7_s0_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p5_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c7_s0_p5_0[] = { - 3, 4, 4, 5, 5, 7, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 5, 5, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 5, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 8, 7, 9, 9, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 9, 9, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, - 10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,10,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,10,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c7_s0_p5_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c7_s0_p5_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p5_0 = { - _vq_quantthresh__44c7_s0_p5_0, - _vq_quantmap__44c7_s0_p5_0, - 17, - 17 -}; - -static static_codebook _44c7_s0_p5_0 = { - 2, 289, - _vq_lengthlist__44c7_s0_p5_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c7_s0_p5_0, - NULL, - &_vq_auxt__44c7_s0_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p6_0.vqh b/lib/books/coupled/_44c7_s0_p6_0.vqh deleted file mode 100644 index 34b1bcce..00000000 --- a/lib/books/coupled/_44c7_s0_p6_0.vqh +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p6_0_VQH_ -#define _V__44c7_s0_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p6_0[] = { - 19, - 16, - 22, - 13, - 25, - 0, - 38, - 7, - 31, - 4, - 34, -}; - -static long _vq_lengthlist__44c7_s0_p6_0[] = { - 2, 3, 3, 6, 5, 0, 0, 0, 0, 0, 0, 5, 4, 4, 6, 6, - 0, 0, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, - 0, 0, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0,12,11, 0, 0, 0, 0, 0, 0, 0, 0, - 0,13,13, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c7_s0_p6_0[] = { - -17, -13.5, -9, -4.5, -1.5, 1.5, 4.5, 9, - 13.5, 17, -}; - -static long _vq_quantmap__44c7_s0_p6_0[] = { - 5, 9, 7, 3, 1, 0, 2, 4, - 8, 10, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p6_0 = { - _vq_quantthresh__44c7_s0_p6_0, - _vq_quantmap__44c7_s0_p6_0, - 11, - 11 -}; - -static static_codebook _44c7_s0_p6_0 = { - 2, 121, - _vq_lengthlist__44c7_s0_p6_0, - 1, -527237120, 1611661312, 6, 0, - _vq_quantlist__44c7_s0_p6_0, - NULL, - &_vq_auxt__44c7_s0_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p6_1.vqh b/lib/books/coupled/_44c7_s0_p6_1.vqh deleted file mode 100644 index ef25ce43..00000000 --- a/lib/books/coupled/_44c7_s0_p6_1.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p6_1_VQH_ -#define _V__44c7_s0_p6_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p6_1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c7_s0_p6_1[] = { - 3, 3, 3, 4, 3, 3, 4, 3, 3, -}; - -static float _vq_quantthresh__44c7_s0_p6_1[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c7_s0_p6_1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p6_1 = { - _vq_quantthresh__44c7_s0_p6_1, - _vq_quantmap__44c7_s0_p6_1, - 3, - 3 -}; - -static static_codebook _44c7_s0_p6_1 = { - 2, 9, - _vq_lengthlist__44c7_s0_p6_1, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c7_s0_p6_1, - NULL, - &_vq_auxt__44c7_s0_p6_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p7_0.vqh b/lib/books/coupled/_44c7_s0_p7_0.vqh deleted file mode 100644 index e6400656..00000000 --- a/lib/books/coupled/_44c7_s0_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p7_0_VQH_ -#define _V__44c7_s0_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c7_s0_p7_0[] = { - 1, 3, 4, 6, 6, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 8,10,10, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 7, 7,10,10, 0, 0, 0, 0, 0, - 0, 0,11,11, 8, 8,10,10, 0, 0, 0, 0, 0, 0, 0,12, - 12, 8, 8,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,14,14,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,15,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,13,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,14,14, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c7_s0_p7_0[] = { - -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, - 12.5, 17.5, 22.5, 27.5, -}; - -static long _vq_quantmap__44c7_s0_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p7_0 = { - _vq_quantthresh__44c7_s0_p7_0, - _vq_quantmap__44c7_s0_p7_0, - 13, - 13 -}; - -static static_codebook _44c7_s0_p7_0 = { - 2, 169, - _vq_lengthlist__44c7_s0_p7_0, - 1, -526516224, 1616117760, 4, 0, - _vq_quantlist__44c7_s0_p7_0, - NULL, - &_vq_auxt__44c7_s0_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p7_1.vqh b/lib/books/coupled/_44c7_s0_p7_1.vqh deleted file mode 100644 index 1f1d528e..00000000 --- a/lib/books/coupled/_44c7_s0_p7_1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p7_1_VQH_ -#define _V__44c7_s0_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p7_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c7_s0_p7_1[] = { - 3, 4, 4, 4, 5, 6, 4, 4, 5, 5, 6, 4, 4, 5, 5, 6, - 5, 5, 5, 5, 6, 6, 6, 5, 5, -}; - -static float _vq_quantthresh__44c7_s0_p7_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c7_s0_p7_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p7_1 = { - _vq_quantthresh__44c7_s0_p7_1, - _vq_quantmap__44c7_s0_p7_1, - 5, - 5 -}; - -static static_codebook _44c7_s0_p7_1 = { - 2, 25, - _vq_lengthlist__44c7_s0_p7_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c7_s0_p7_1, - NULL, - &_vq_auxt__44c7_s0_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p8_0.vqh b/lib/books/coupled/_44c7_s0_p8_0.vqh deleted file mode 100644 index a3c42e1c..00000000 --- a/lib/books/coupled/_44c7_s0_p8_0.vqh +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p8_0_VQH_ -#define _V__44c7_s0_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p8_0[] = { - 7, - 6, - 8, - 5, - 9, - 4, - 10, - 3, - 11, - 2, - 12, - 1, - 13, - 0, - 14, -}; - -static long _vq_lengthlist__44c7_s0_p8_0[] = { - 1, 3, 4, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, - 5, 5, 7, 7, 8, 8,10,11, 0, 0, 0, 0, 0, 0, 6, 5, - 5, 7, 7, 8, 8,11,11, 0, 0, 0, 0, 0, 0, 0, 8, 8, - 9, 8, 9, 9,11,11, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, - 8, 9, 9,11,11, 0, 0, 0, 0, 0, 0, 0,12,13,10,10, - 10,10,12,12, 0, 0, 0, 0, 0, 0, 0,13,13,10,10,10, - 10,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,10,10, - 12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,10,10,12, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,15,15,11,11,13,13, - 0, 0, 0, 0, 0, 0, 0, 0, 0,17,17,11,11,13,13, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,13,13,14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,13,13,14,13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,15,16,15,15, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,16,16,13,15, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c7_s0_p8_0[] = { - -97.5, -82.5, -67.5, -52.5, -37.5, -22.5, -7.5, 7.5, - 22.5, 37.5, 52.5, 67.5, 82.5, 97.5, -}; - -static long _vq_quantmap__44c7_s0_p8_0[] = { - 13, 11, 9, 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, 12, 14, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p8_0 = { - _vq_quantthresh__44c7_s0_p8_0, - _vq_quantmap__44c7_s0_p8_0, - 15, - 15 -}; - -static static_codebook _44c7_s0_p8_0 = { - 2, 225, - _vq_lengthlist__44c7_s0_p8_0, - 1, -522567680, 1618870272, 4, 0, - _vq_quantlist__44c7_s0_p8_0, - NULL, - &_vq_auxt__44c7_s0_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p8_1.vqh b/lib/books/coupled/_44c7_s0_p8_1.vqh deleted file mode 100644 index 06f79954..00000000 --- a/lib/books/coupled/_44c7_s0_p8_1.vqh +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p8_1_VQH_ -#define _V__44c7_s0_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p8_1[] = { - 7, - 6, - 8, - 5, - 9, - 4, - 10, - 3, - 11, - 2, - 12, - 1, - 13, - 0, - 14, -}; - -static long _vq_lengthlist__44c7_s0_p8_1[] = { - 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8,10, - 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9,10, 5, - 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,10, 6, 7, - 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10, 7, - 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10, 7, 7, - 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10, 7, 7, 8, - 8, 8, 8, 9, 8, 9, 8, 9, 9,10,10,10, 8, 8, 8, 8, - 8, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 8, 8, 8, - 8, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 8, 9, 8, 9, - 9, 9, 9, 9, 9, 9,10,10,10,10,10, 8, 8, 9, 9, 9, - 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, - 9, 9, 9,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, - 9, 9,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, - 9, -}; - -static float _vq_quantthresh__44c7_s0_p8_1[] = { - -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, - 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, -}; - -static long _vq_quantmap__44c7_s0_p8_1[] = { - 13, 11, 9, 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, 12, 14, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p8_1 = { - _vq_quantthresh__44c7_s0_p8_1, - _vq_quantmap__44c7_s0_p8_1, - 15, - 15 -}; - -static static_codebook _44c7_s0_p8_1 = { - 2, 225, - _vq_lengthlist__44c7_s0_p8_1, - 1, -530841600, 1611661312, 4, 0, - _vq_quantlist__44c7_s0_p8_1, - NULL, - &_vq_auxt__44c7_s0_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p9_0.vqh b/lib/books/coupled/_44c7_s0_p9_0.vqh deleted file mode 100644 index dacb1409..00000000 --- a/lib/books/coupled/_44c7_s0_p9_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p9_0_VQH_ -#define _V__44c7_s0_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p9_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c7_s0_p9_0[] = { - 1, 4, 4,13,13,11,12,12,12, 4, 6, 9,12,12,12,12, - 12,12, 2,11, 7,12,12,12,12,12,12,12, 6,12,12,12, - 12,12,12,12,12,12, 8,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12, -}; - -static float _vq_quantthresh__44c7_s0_p9_0[] = { - -2229.5, -1592.5, -955.5, -318.5, 318.5, 955.5, 1592.5, 2229.5, -}; - -static long _vq_quantmap__44c7_s0_p9_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p9_0 = { - _vq_quantthresh__44c7_s0_p9_0, - _vq_quantmap__44c7_s0_p9_0, - 9, - 9 -}; - -static static_codebook _44c7_s0_p9_0 = { - 2, 81, - _vq_lengthlist__44c7_s0_p9_0, - 1, -512497664, 1630791680, 4, 0, - _vq_quantlist__44c7_s0_p9_0, - NULL, - &_vq_auxt__44c7_s0_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p9_1.vqh b/lib/books/coupled/_44c7_s0_p9_1.vqh deleted file mode 100644 index bc24b511..00000000 --- a/lib/books/coupled/_44c7_s0_p9_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p9_1_VQH_ -#define _V__44c7_s0_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p9_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c7_s0_p9_1[] = { - 1, 3, 3, 6, 6, 8, 8, 9, 9,11,10,11,11, 6, 6, 6, - 7, 7, 9, 9,10,10,11,12,12,12, 6, 6, 5, 7, 7, 9, - 9,10,11,11,11,12,12,17, 8, 8, 9, 9,10,10,11,12, - 12,12,13,11,14, 9, 8, 9, 9,10,10,12,11,12,12,12, - 13,18,12,12,10,10,11,11,11,12,12,11,13,11,16,12, - 12,10,10,12,11,12,12,12,13,13,13,17,16,16,12,12, - 12,12,13,13,13,10,14,12,18,17,16,11,12,11,10,13, - 13,13,12,14,14,16,17,17,14,15,12,11,13,12,14,12, - 13,13,17,17,17,14,15,12,11,13,11,14,14,14,15,16, - 17,16,17,16,13,14,13,12,14,12,15,13,17,17,17,17, - 17,14,13,13,11,14,12,14,14, -}; - -static float _vq_quantthresh__44c7_s0_p9_1[] = { - -269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 24.5, 73.5, - 122.5, 171.5, 220.5, 269.5, -}; - -static long _vq_quantmap__44c7_s0_p9_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p9_1 = { - _vq_quantthresh__44c7_s0_p9_1, - _vq_quantmap__44c7_s0_p9_1, - 13, - 13 -}; - -static static_codebook _44c7_s0_p9_1 = { - 2, 169, - _vq_lengthlist__44c7_s0_p9_1, - 1, -518889472, 1622704128, 4, 0, - _vq_quantlist__44c7_s0_p9_1, - NULL, - &_vq_auxt__44c7_s0_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_p9_2.vqh b/lib/books/coupled/_44c7_s0_p9_2.vqh deleted file mode 100644 index ab3b7488..00000000 --- a/lib/books/coupled/_44c7_s0_p9_2.vqh +++ /dev/null @@ -1,118 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_p9_2_VQH_ -#define _V__44c7_s0_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_p9_2[] = { - 24, - 23, - 25, - 22, - 26, - 21, - 27, - 20, - 28, - 19, - 29, - 18, - 30, - 17, - 31, - 16, - 32, - 15, - 33, - 14, - 34, - 13, - 35, - 12, - 36, - 11, - 37, - 10, - 38, - 9, - 39, - 8, - 40, - 7, - 41, - 6, - 42, - 5, - 43, - 4, - 44, - 3, - 45, - 2, - 46, - 1, - 47, - 0, - 48, -}; - -static long _vq_lengthlist__44c7_s0_p9_2[] = { - 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c7_s0_p9_2[] = { - -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, - -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, - 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, - 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, -}; - -static long _vq_quantmap__44c7_s0_p9_2[] = { - 47, 45, 43, 41, 39, 37, 35, 33, - 31, 29, 27, 25, 23, 21, 19, 17, - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, 18, 20, 22, 24, 26, 28, 30, - 32, 34, 36, 38, 40, 42, 44, 46, - 48, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_p9_2 = { - _vq_quantthresh__44c7_s0_p9_2, - _vq_quantmap__44c7_s0_p9_2, - 49, - 49 -}; - -static static_codebook _44c7_s0_p9_2 = { - 1, 49, - _vq_lengthlist__44c7_s0_p9_2, - 1, -526909440, 1611661312, 6, 0, - _vq_quantlist__44c7_s0_p9_2, - NULL, - &_vq_auxt__44c7_s0_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_pN_r0.vqh b/lib/books/coupled/_44c7_s0_pN_r0.vqh deleted file mode 100644 index bb9d15d0..00000000 --- a/lib/books/coupled/_44c7_s0_pN_r0.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_pN_r0_VQH_ -#define _V__44c7_s0_pN_r0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_pN_r0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c7_s0_pN_r0[] = { - 3, 3, 3, 8, 8, 4, 4, 4, 9, 9, 4, 4, 4, 9, 8, 8, - 4, 4, 9, 9, 9, 5, 4, 9, 9, -}; - -static float _vq_quantthresh__44c7_s0_pN_r0[] = { - -0.5, -0.16667, 0.16667, 0.5, -}; - -static long _vq_quantmap__44c7_s0_pN_r0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_pN_r0 = { - _vq_quantthresh__44c7_s0_pN_r0, - _vq_quantmap__44c7_s0_pN_r0, - 5, - 5 -}; - -static static_codebook _44c7_s0_pN_r0 = { - 2, 25, - _vq_lengthlist__44c7_s0_pN_r0, - 1, -537569963, 1607816533, 3, 0, - _vq_quantlist__44c7_s0_pN_r0, - NULL, - &_vq_auxt__44c7_s0_pN_r0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_s0_pN_r1.vqh b/lib/books/coupled/_44c7_s0_pN_r1.vqh deleted file mode 100644 index f4fd7a1e..00000000 --- a/lib/books/coupled/_44c7_s0_pN_r1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c7_s0_pN_r1_VQH_ -#define _V__44c7_s0_pN_r1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c7_s0_pN_r1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c7_s0_pN_r1[] = { - 3, 3, 3, 8, 8, 4, 4, 4, 9, 8, 3, 4, 4, 8, 8,10, - 5, 5, 9, 9,10, 5, 4, 9, 9, -}; - -static float _vq_quantthresh__44c7_s0_pN_r1[] = { - -0.16667, -0.055556, 0.055556, 0.16667, -}; - -static long _vq_quantmap__44c7_s0_pN_r1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c7_s0_pN_r1 = { - _vq_quantthresh__44c7_s0_pN_r1, - _vq_quantmap__44c7_s0_pN_r1, - 5, - 5 -}; - -static static_codebook _44c7_s0_pN_r1 = { - 2, 25, - _vq_lengthlist__44c7_s0_pN_r1, - 1, -541298233, 1604088263, 3, 0, - _vq_quantlist__44c7_s0_pN_r1, - NULL, - &_vq_auxt__44c7_s0_pN_r1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c7_short.vqh b/lib/books/coupled/_44c7_short.vqh deleted file mode 100644 index c303a3cc..00000000 --- a/lib/books/coupled/_44c7_short.vqh +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c7_short_VQH_ -#define _V__44c7_short_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c7_short[] = { - 3,17,17,10,13,14,17,17,17,17,17,17,17,14,11, 8, - 5, 7,11,17,17, 9, 6,15,11, 9, 5, 5, 7,14, 4,17, - 17, 5, 9,10,11,13,15,17, 7,17,17, 5, 7, 6, 8,12, - 15,17, 9,17,17, 5, 4, 4, 5, 9,13,17,11,17,17, 7, - 6, 4, 3, 7,12,17,14,17,17,11, 9, 7, 5, 6,10,17, - 17, 9, 6,14,14,12, 9, 8,10,14,17, 6, 4,17,16,17, - 15,14, 9,10, -}; - -static static_codebook _huff_book__44c7_short = { - 2, 100, - _huff_lengthlist__44c7_short, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_long.vqh b/lib/books/coupled/_44c8_long.vqh deleted file mode 100644 index 8a982cea..00000000 --- a/lib/books/coupled/_44c8_long.vqh +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c8_long_VQH_ -#define _V__44c8_long_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c8_long[] = { - 2,11,13, 8,11,12,12,13,14,14,11, 5, 6,20,20,20, - 20,20,12,12,13, 6, 4,20,20,20,19,19, 9, 9, 6,19, - 19, 4, 7, 8, 9,10,12,16,11,19,19, 6, 6, 6, 7,10, - 12,16,12,19,19, 7, 5, 4, 4, 8,10,15,12,19,19, 9, - 7, 4, 3, 6, 9,15,12,19,19,10,10, 8, 6, 6, 8,14, - 11,10, 7,11,11, 9, 8, 8, 9,10,12, 9, 7,13,15,15, - 14,14, 9, 8, -}; - -static static_codebook _huff_book__44c8_long = { - 2, 100, - _huff_lengthlist__44c8_long, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_s0_p1_0.vqh b/lib/books/coupled/_44c8_s0_p1_0.vqh deleted file mode 100644 index 075191f0..00000000 --- a/lib/books/coupled/_44c8_s0_p1_0.vqh +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c8_s0_p1_0_VQH_ -#define _V__44c8_s0_p1_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c8_s0_p1_0[] = { - 19, - 16, - 22, - 13, - 25, - 0, - 38, - 7, - 31, - 4, - 34, -}; - -static long _vq_lengthlist__44c8_s0_p1_0[] = { - 1, 3, 4, 6, 6, 0, 0, 0, 0, 0, 0, 5, 5, 5, 7, 6, - 0, 0, 0, 0, 0, 0, 0, 5, 5, 6, 6, 0, 0, 0, 0, 0, - 0, 0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, - 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0,11,12, 0, 0, 0, 0, 0, 0, 0, 0, - 0,13,13, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c8_s0_p1_0[] = { - -17, -13.5, -9, -4.5, -1.5, 1.5, 4.5, 9, - 13.5, 17, -}; - -static long _vq_quantmap__44c8_s0_p1_0[] = { - 5, 9, 7, 3, 1, 0, 2, 4, - 8, 10, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c8_s0_p1_0 = { - _vq_quantthresh__44c8_s0_p1_0, - _vq_quantmap__44c8_s0_p1_0, - 11, - 11 -}; - -static static_codebook _44c8_s0_p1_0 = { - 2, 121, - _vq_lengthlist__44c8_s0_p1_0, - 1, -527237120, 1611661312, 6, 0, - _vq_quantlist__44c8_s0_p1_0, - NULL, - &_vq_auxt__44c8_s0_p1_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_s0_p1_1.vqh b/lib/books/coupled/_44c8_s0_p1_1.vqh deleted file mode 100644 index 7fce3bb1..00000000 --- a/lib/books/coupled/_44c8_s0_p1_1.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c8_s0_p1_1_VQH_ -#define _V__44c8_s0_p1_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c8_s0_p1_1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c8_s0_p1_1[] = { - 2, 3, 3, 4, 4, 4, 4, 3, 3, -}; - -static float _vq_quantthresh__44c8_s0_p1_1[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c8_s0_p1_1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c8_s0_p1_1 = { - _vq_quantthresh__44c8_s0_p1_1, - _vq_quantmap__44c8_s0_p1_1, - 3, - 3 -}; - -static static_codebook _44c8_s0_p1_1 = { - 2, 9, - _vq_lengthlist__44c8_s0_p1_1, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c8_s0_p1_1, - NULL, - &_vq_auxt__44c8_s0_p1_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_s0_p2_0.vqh b/lib/books/coupled/_44c8_s0_p2_0.vqh deleted file mode 100644 index 1b30aff7..00000000 --- a/lib/books/coupled/_44c8_s0_p2_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c8_s0_p2_0_VQH_ -#define _V__44c8_s0_p2_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c8_s0_p2_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c8_s0_p2_0[] = { - 1, 3, 3, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 5, 5, 5, - 8, 8,10,10, 0, 0, 0, 0, 0, 0, 6, 5, 5, 8, 8,10, - 10, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 9,11,11, 0, 0, - 0, 0, 0, 0, 0, 8, 8, 8, 8,11,11, 0, 0, 0, 0, 0, - 0, 0,12,12,10,10,11,12, 0, 0, 0, 0, 0, 0, 0,13, - 13,10, 9,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12, - 12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,13, 0, - 0, 0, 0, 0, 0, 0, 0, 0,16,17,13,13, 0, 0, 0, 0, - 0, 0, 0, 0, 0,16,17,13,13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,16,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,16,15, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c8_s0_p2_0[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c8_s0_p2_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c8_s0_p2_0 = { - _vq_quantthresh__44c8_s0_p2_0, - _vq_quantmap__44c8_s0_p2_0, - 13, - 13 -}; - -static static_codebook _44c8_s0_p2_0 = { - 2, 169, - _vq_lengthlist__44c8_s0_p2_0, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c8_s0_p2_0, - NULL, - &_vq_auxt__44c8_s0_p2_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_s0_p2_1.vqh b/lib/books/coupled/_44c8_s0_p2_1.vqh deleted file mode 100644 index ccc6182b..00000000 --- a/lib/books/coupled/_44c8_s0_p2_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c8_s0_p2_1_VQH_ -#define _V__44c8_s0_p2_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c8_s0_p2_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c8_s0_p2_1[] = { - 4, 5, 5, 6, 6, 7, 6, 7, 7, 7, 7, 7, 7, 9, 6, 6, - 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 5, 6, 6, 6, 7, - 7, 7, 7, 7, 8, 8, 8, 9, 6, 6, 7, 7, 7, 7, 7, 7, - 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 8, 8, 8, - 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, - 9, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, - 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, - 9, 9, 9, 8, 8, 8, 8, 8, 8, -}; - -static float _vq_quantthresh__44c8_s0_p2_1[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c8_s0_p2_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c8_s0_p2_1 = { - _vq_quantthresh__44c8_s0_p2_1, - _vq_quantmap__44c8_s0_p2_1, - 13, - 13 -}; - -static static_codebook _44c8_s0_p2_1 = { - 2, 169, - _vq_lengthlist__44c8_s0_p2_1, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c8_s0_p2_1, - NULL, - &_vq_auxt__44c8_s0_p2_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_s0_p3_0.vqh b/lib/books/coupled/_44c8_s0_p3_0.vqh deleted file mode 100644 index 3f64cb1b..00000000 --- a/lib/books/coupled/_44c8_s0_p3_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c8_s0_p3_0_VQH_ -#define _V__44c8_s0_p3_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c8_s0_p3_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c8_s0_p3_0[] = { - 1, 6, 6, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, - 8, 8, 0, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0, 0, 9, - 8, 0, 0, 0, 9, 8, 0, 0, 0,12,11, 0, 0, 0, 0, 0, - 0, 0, 6, 8, 8, 0, 0, 0, 8, 9, 0, 0, 0, 8, 9, 0, - 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 9, 8, 0, 0, 0, 8, 7, 0, 0, - 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, - 8, 9, 0, 0, 0, 7, 8, 0, 0, 0, 8, 8, 0, 0, 0,10, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 9, 8, 0, 0, 0, 8, 8, 0, 0, 0, 7, 7, - 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, 8, 9, 0, - 0, 0, 8, 8, 0, 0, 0, 7, 7, 0, 0, 0,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,11,12, 0, 0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0, - 11,11, 0, 0, 0, 0, 0, 0, 0, 8,12,12, 0, 0, 0,10, - 10, 0, 0, 0,10,10, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c8_s0_p3_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c8_s0_p3_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c8_s0_p3_0 = { - _vq_quantthresh__44c8_s0_p3_0, - _vq_quantmap__44c8_s0_p3_0, - 5, - 5 -}; - -static static_codebook _44c8_s0_p3_0 = { - 4, 625, - _vq_lengthlist__44c8_s0_p3_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c8_s0_p3_0, - NULL, - &_vq_auxt__44c8_s0_p3_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_s0_p4_0.vqh b/lib/books/coupled/_44c8_s0_p4_0.vqh deleted file mode 100644 index 9f7168ed..00000000 --- a/lib/books/coupled/_44c8_s0_p4_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c8_s0_p4_0_VQH_ -#define _V__44c8_s0_p4_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c8_s0_p4_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c8_s0_p4_0[] = { - 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, - 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6, - 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 0, 0, 0, 0, 0, 0, 0, 8, 7, 0, 0, 0, 0, 0, - 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c8_s0_p4_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c8_s0_p4_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c8_s0_p4_0 = { - _vq_quantthresh__44c8_s0_p4_0, - _vq_quantmap__44c8_s0_p4_0, - 9, - 9 -}; - -static static_codebook _44c8_s0_p4_0 = { - 2, 81, - _vq_lengthlist__44c8_s0_p4_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c8_s0_p4_0, - NULL, - &_vq_auxt__44c8_s0_p4_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_s0_p5_0.vqh b/lib/books/coupled/_44c8_s0_p5_0.vqh deleted file mode 100644 index c421846e..00000000 --- a/lib/books/coupled/_44c8_s0_p5_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c8_s0_p5_0_VQH_ -#define _V__44c8_s0_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c8_s0_p5_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c8_s0_p5_0[] = { - 3, 4, 4, 5, 5, 7, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 6, 5, 7, 7, 8, 8, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 4, 6, 6, 7, 7, 8, 8, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 5, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 8, 9, 9, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, - 10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,10,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,11,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c8_s0_p5_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c8_s0_p5_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c8_s0_p5_0 = { - _vq_quantthresh__44c8_s0_p5_0, - _vq_quantmap__44c8_s0_p5_0, - 17, - 17 -}; - -static static_codebook _44c8_s0_p5_0 = { - 2, 289, - _vq_lengthlist__44c8_s0_p5_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c8_s0_p5_0, - NULL, - &_vq_auxt__44c8_s0_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_s0_p6_0.vqh b/lib/books/coupled/_44c8_s0_p6_0.vqh deleted file mode 100644 index c981eac6..00000000 --- a/lib/books/coupled/_44c8_s0_p6_0.vqh +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c8_s0_p6_0_VQH_ -#define _V__44c8_s0_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c8_s0_p6_0[] = { - 19, - 16, - 22, - 13, - 25, - 0, - 38, - 7, - 31, - 4, - 34, -}; - -static long _vq_lengthlist__44c8_s0_p6_0[] = { - 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 0, 5, 4, 4, 6, 6, - 0, 0, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, - 0, 0, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7, 6, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0,11,10, 0, 0, 0, 0, 0, 0, 0, 0, - 0,12,12, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c8_s0_p6_0[] = { - -17, -13.5, -9, -4.5, -1.5, 1.5, 4.5, 9, - 13.5, 17, -}; - -static long _vq_quantmap__44c8_s0_p6_0[] = { - 5, 9, 7, 3, 1, 0, 2, 4, - 8, 10, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c8_s0_p6_0 = { - _vq_quantthresh__44c8_s0_p6_0, - _vq_quantmap__44c8_s0_p6_0, - 11, - 11 -}; - -static static_codebook _44c8_s0_p6_0 = { - 2, 121, - _vq_lengthlist__44c8_s0_p6_0, - 1, -527237120, 1611661312, 6, 0, - _vq_quantlist__44c8_s0_p6_0, - NULL, - &_vq_auxt__44c8_s0_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_s0_p6_1.vqh b/lib/books/coupled/_44c8_s0_p6_1.vqh deleted file mode 100644 index 43b07cc5..00000000 --- a/lib/books/coupled/_44c8_s0_p6_1.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c8_s0_p6_1_VQH_ -#define _V__44c8_s0_p6_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c8_s0_p6_1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c8_s0_p6_1[] = { - 3, 3, 3, 4, 3, 3, 4, 3, 3, -}; - -static float _vq_quantthresh__44c8_s0_p6_1[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c8_s0_p6_1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c8_s0_p6_1 = { - _vq_quantthresh__44c8_s0_p6_1, - _vq_quantmap__44c8_s0_p6_1, - 3, - 3 -}; - -static static_codebook _44c8_s0_p6_1 = { - 2, 9, - _vq_lengthlist__44c8_s0_p6_1, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c8_s0_p6_1, - NULL, - &_vq_auxt__44c8_s0_p6_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_s0_p7_0.vqh b/lib/books/coupled/_44c8_s0_p7_0.vqh deleted file mode 100644 index a088c0e1..00000000 --- a/lib/books/coupled/_44c8_s0_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c8_s0_p7_0_VQH_ -#define _V__44c8_s0_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c8_s0_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c8_s0_p7_0[] = { - 2, 3, 3, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 5, 4, 4, - 6, 6, 9, 9, 0, 0, 0, 0, 0, 0, 6, 4, 4, 6, 6, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7,10,10, 0, 0, - 0, 0, 0, 0, 0, 7, 7, 7, 7,10,10, 0, 0, 0, 0, 0, - 0, 0,11,11, 8, 8,10,10, 0, 0, 0, 0, 0, 0, 0,12, - 12, 8, 8,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,14,14,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,14,14,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,14,14, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c8_s0_p7_0[] = { - -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, - 12.5, 17.5, 22.5, 27.5, -}; - -static long _vq_quantmap__44c8_s0_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c8_s0_p7_0 = { - _vq_quantthresh__44c8_s0_p7_0, - _vq_quantmap__44c8_s0_p7_0, - 13, - 13 -}; - -static static_codebook _44c8_s0_p7_0 = { - 2, 169, - _vq_lengthlist__44c8_s0_p7_0, - 1, -526516224, 1616117760, 4, 0, - _vq_quantlist__44c8_s0_p7_0, - NULL, - &_vq_auxt__44c8_s0_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_s0_p7_1.vqh b/lib/books/coupled/_44c8_s0_p7_1.vqh deleted file mode 100644 index 6739de52..00000000 --- a/lib/books/coupled/_44c8_s0_p7_1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c8_s0_p7_1_VQH_ -#define _V__44c8_s0_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c8_s0_p7_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c8_s0_p7_1[] = { - 3, 4, 4, 5, 5, 6, 4, 4, 5, 5, 6, 4, 4, 5, 5, 6, - 5, 5, 5, 5, 6, 5, 5, 5, 5, -}; - -static float _vq_quantthresh__44c8_s0_p7_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c8_s0_p7_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c8_s0_p7_1 = { - _vq_quantthresh__44c8_s0_p7_1, - _vq_quantmap__44c8_s0_p7_1, - 5, - 5 -}; - -static static_codebook _44c8_s0_p7_1 = { - 2, 25, - _vq_lengthlist__44c8_s0_p7_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c8_s0_p7_1, - NULL, - &_vq_auxt__44c8_s0_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_s0_p8_0.vqh b/lib/books/coupled/_44c8_s0_p8_0.vqh deleted file mode 100644 index 164440db..00000000 --- a/lib/books/coupled/_44c8_s0_p8_0.vqh +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c8_s0_p8_0_VQH_ -#define _V__44c8_s0_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c8_s0_p8_0[] = { - 7, - 6, - 8, - 5, - 9, - 4, - 10, - 3, - 11, - 2, - 12, - 1, - 13, - 0, - 14, -}; - -static long _vq_lengthlist__44c8_s0_p8_0[] = { - 1, 4, 3, 6, 6, 7, 7,10,10, 0, 0, 0, 0, 0, 0, 6, - 5, 5, 7, 7, 8, 8,11,11, 0, 0, 0, 0, 0, 0, 6, 5, - 5, 7, 7, 8, 8,11,11, 0, 0, 0, 0, 0, 0, 0, 8, 8, - 9, 8, 9, 9,11,11, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, - 8, 9, 9,11,11, 0, 0, 0, 0, 0, 0, 0,12,12,10,10, - 10,10,12,12, 0, 0, 0, 0, 0, 0, 0,13,12, 9,10,10, - 10,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,10,10, - 13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,10,10,13, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,16,16,11,11,13,14, - 0, 0, 0, 0, 0, 0, 0, 0, 0,16,16,11,11,13,13, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,13,14,14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,13,13,14,14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,16,17,16,14, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,16,17,14,14, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c8_s0_p8_0[] = { - -97.5, -82.5, -67.5, -52.5, -37.5, -22.5, -7.5, 7.5, - 22.5, 37.5, 52.5, 67.5, 82.5, 97.5, -}; - -static long _vq_quantmap__44c8_s0_p8_0[] = { - 13, 11, 9, 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, 12, 14, -}; - -static encode_aux_threshmatch _vq_auxt__44c8_s0_p8_0 = { - _vq_quantthresh__44c8_s0_p8_0, - _vq_quantmap__44c8_s0_p8_0, - 15, - 15 -}; - -static static_codebook _44c8_s0_p8_0 = { - 2, 225, - _vq_lengthlist__44c8_s0_p8_0, - 1, -522567680, 1618870272, 4, 0, - _vq_quantlist__44c8_s0_p8_0, - NULL, - &_vq_auxt__44c8_s0_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_s0_p8_1.vqh b/lib/books/coupled/_44c8_s0_p8_1.vqh deleted file mode 100644 index 427bf2f0..00000000 --- a/lib/books/coupled/_44c8_s0_p8_1.vqh +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c8_s0_p8_1_VQH_ -#define _V__44c8_s0_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c8_s0_p8_1[] = { - 7, - 6, - 8, - 5, - 9, - 4, - 10, - 3, - 11, - 2, - 12, - 1, - 13, - 0, - 14, -}; - -static long _vq_lengthlist__44c8_s0_p8_1[] = { - 4, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8,10, - 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 6, - 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 7, 7, - 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,10,10, 9, 7, - 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10, 7, 7, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,10, 9,10, 7, 7, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8,10,10,10, 9, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8,10, 9,10, 9, 9, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8,10,10,10, 9, 9, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8,10,10,10,10,10, 9, 9, 9, 9, 8, 8, - 8, 8, 8, 8,10,10,10, 9, 9,10, 9, 9, 9, 8, 8, 8, - 8, 9, 8,10,10,10, 9, 9,10, 9, 9, 9, 8, 8, 8, 8, - 8, 8,10,10,10, 9,10,10,10, 8, 8, 8, 8, 8, 8, 8, - 8, -}; - -static float _vq_quantthresh__44c8_s0_p8_1[] = { - -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, - 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, -}; - -static long _vq_quantmap__44c8_s0_p8_1[] = { - 13, 11, 9, 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, 12, 14, -}; - -static encode_aux_threshmatch _vq_auxt__44c8_s0_p8_1 = { - _vq_quantthresh__44c8_s0_p8_1, - _vq_quantmap__44c8_s0_p8_1, - 15, - 15 -}; - -static static_codebook _44c8_s0_p8_1 = { - 2, 225, - _vq_lengthlist__44c8_s0_p8_1, - 1, -530841600, 1611661312, 4, 0, - _vq_quantlist__44c8_s0_p8_1, - NULL, - &_vq_auxt__44c8_s0_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_s0_p9_0.vqh b/lib/books/coupled/_44c8_s0_p9_0.vqh deleted file mode 100644 index a23a4151..00000000 --- a/lib/books/coupled/_44c8_s0_p9_0.vqh +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c8_s0_p9_0_VQH_ -#define _V__44c8_s0_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c8_s0_p9_0[] = { - 5, - 4, - 6, - 3, - 7, - 2, - 8, - 1, - 9, - 0, - 10, -}; - -static long _vq_lengthlist__44c8_s0_p9_0[] = { - 1, 4, 4,11,12,12,12,12,12,12,12, 5, 6, 8,12,12, - 12,12,12,12,12,12, 2,10, 7,12,12,12,12,12,12,12, - 12,12, 6,12,12,12,12,12,12,12,12,12,12,12, 6,12, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,11, - 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, - 11,11,11,11,11,11,11,11,11, -}; - -static float _vq_quantthresh__44c8_s0_p9_0[] = { - -2866.5, -2229.5, -1592.5, -955.5, -318.5, 318.5, 955.5, 1592.5, - 2229.5, 2866.5, -}; - -static long _vq_quantmap__44c8_s0_p9_0[] = { - 9, 7, 5, 3, 1, 0, 2, 4, - 6, 8, 10, -}; - -static encode_aux_threshmatch _vq_auxt__44c8_s0_p9_0 = { - _vq_quantthresh__44c8_s0_p9_0, - _vq_quantmap__44c8_s0_p9_0, - 11, - 11 -}; - -static static_codebook _44c8_s0_p9_0 = { - 2, 121, - _vq_lengthlist__44c8_s0_p9_0, - 1, -512171520, 1630791680, 4, 0, - _vq_quantlist__44c8_s0_p9_0, - NULL, - &_vq_auxt__44c8_s0_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_s0_p9_1.vqh b/lib/books/coupled/_44c8_s0_p9_1.vqh deleted file mode 100644 index 112910bb..00000000 --- a/lib/books/coupled/_44c8_s0_p9_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c8_s0_p9_1_VQH_ -#define _V__44c8_s0_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c8_s0_p9_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c8_s0_p9_1[] = { - 1, 3, 3, 6, 6, 8, 8,10,10,11,11,11,11, 6, 6, 6, - 7, 7, 9, 9,11,11,12,12,12,12, 6, 5, 5, 8, 8, 9, - 10,11,11,12,12,12,12,17, 8, 8, 9, 9,10,10,11,12, - 12,12,13,12,15, 8, 8, 9, 9,11,10,12,12,13,13,13, - 13,17,12,12,10,10,11,11,12,12,13,11,14,12,18,13, - 12,10,10,11,11,12,12,12,13,13,14,17,15,16,12,12, - 12,12,13,13,13,11,14,13,17,18,17,12,12,12,10,13, - 13,13,13,14,14,18,16,18,15,14,13,12,13,12,14,12, - 14,14,18,18,18,14,14,13,11,13,11,14,14,14,15,17, - 18,17,17,18,13,15,13,12,14,13,15,14,18,18,18,17, - 17,14,13,14,11,15,12,14,14, -}; - -static float _vq_quantthresh__44c8_s0_p9_1[] = { - -269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 24.5, 73.5, - 122.5, 171.5, 220.5, 269.5, -}; - -static long _vq_quantmap__44c8_s0_p9_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c8_s0_p9_1 = { - _vq_quantthresh__44c8_s0_p9_1, - _vq_quantmap__44c8_s0_p9_1, - 13, - 13 -}; - -static static_codebook _44c8_s0_p9_1 = { - 2, 169, - _vq_lengthlist__44c8_s0_p9_1, - 1, -518889472, 1622704128, 4, 0, - _vq_quantlist__44c8_s0_p9_1, - NULL, - &_vq_auxt__44c8_s0_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_s0_p9_2.vqh b/lib/books/coupled/_44c8_s0_p9_2.vqh deleted file mode 100644 index e0942296..00000000 --- a/lib/books/coupled/_44c8_s0_p9_2.vqh +++ /dev/null @@ -1,118 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c8_s0_p9_2_VQH_ -#define _V__44c8_s0_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c8_s0_p9_2[] = { - 24, - 23, - 25, - 22, - 26, - 21, - 27, - 20, - 28, - 19, - 29, - 18, - 30, - 17, - 31, - 16, - 32, - 15, - 33, - 14, - 34, - 13, - 35, - 12, - 36, - 11, - 37, - 10, - 38, - 9, - 39, - 8, - 40, - 7, - 41, - 6, - 42, - 5, - 43, - 4, - 44, - 3, - 45, - 2, - 46, - 1, - 47, - 0, - 48, -}; - -static long _vq_lengthlist__44c8_s0_p9_2[] = { - 3, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c8_s0_p9_2[] = { - -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, - -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, - 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, - 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, -}; - -static long _vq_quantmap__44c8_s0_p9_2[] = { - 47, 45, 43, 41, 39, 37, 35, 33, - 31, 29, 27, 25, 23, 21, 19, 17, - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, 18, 20, 22, 24, 26, 28, 30, - 32, 34, 36, 38, 40, 42, 44, 46, - 48, -}; - -static encode_aux_threshmatch _vq_auxt__44c8_s0_p9_2 = { - _vq_quantthresh__44c8_s0_p9_2, - _vq_quantmap__44c8_s0_p9_2, - 49, - 49 -}; - -static static_codebook _44c8_s0_p9_2 = { - 1, 49, - _vq_lengthlist__44c8_s0_p9_2, - 1, -526909440, 1611661312, 6, 0, - _vq_quantlist__44c8_s0_p9_2, - NULL, - &_vq_auxt__44c8_s0_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c8_short.vqh b/lib/books/coupled/_44c8_short.vqh deleted file mode 100644 index bcfed762..00000000 --- a/lib/books/coupled/_44c8_short.vqh +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c8_short_VQH_ -#define _V__44c8_short_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c8_short[] = { - 3,17,17,10,13,14,17,17,17,17,17,17,17,14,11, 9, - 6, 7,11,17,17,13, 7,14,11, 8, 5, 4, 5,11, 4,17, - 17, 5, 9,10,11,13,15,17, 7,17,17, 5, 7, 8, 8,11, - 14,16, 9,17,17, 6, 6, 5, 5, 8,12,16,11,17,17, 7, - 5, 4, 3, 6,11,17,13,17,17,10, 8, 6, 5, 5, 8,17, - 17,13, 6,13,13,10, 8, 6, 7, 9,17, 9, 4,16,16,16, - 14,12, 7, 7, -}; - -static static_codebook _huff_book__44c8_short = { - 2, 100, - _huff_lengthlist__44c8_short, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_long.vqh b/lib/books/coupled/_44c9_long.vqh deleted file mode 100644 index 16e56e07..00000000 --- a/lib/books/coupled/_44c9_long.vqh +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c9_long_VQH_ -#define _V__44c9_long_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c9_long[] = { - 2,12,16, 8,12,13,13,14,13,14,12, 7, 8,21,21,21, - 21,21,12,10,14, 8, 5,21,21,21,20,20, 7, 7, 6,20, - 20, 5, 7,10,11,12,12,15,10,20,20, 6, 6, 7, 9,10, - 11,14,11,20,20, 8, 6, 4, 5, 8,10,13,13,20,20,10, - 8, 5, 4, 6, 8,12,14,20,20,11,10, 8, 5, 4, 6,10, - 13,11, 7,11,11, 9, 7, 5, 4, 6,11, 9, 6,12,13,12, - 11, 9, 6, 4, -}; - -static static_codebook _huff_book__44c9_long = { - 2, 100, - _huff_lengthlist__44c9_long, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_s0_p1_0.vqh b/lib/books/coupled/_44c9_s0_p1_0.vqh deleted file mode 100644 index 2736a284..00000000 --- a/lib/books/coupled/_44c9_s0_p1_0.vqh +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c9_s0_p1_0_VQH_ -#define _V__44c9_s0_p1_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c9_s0_p1_0[] = { - 19, - 16, - 22, - 13, - 25, - 0, - 38, - 7, - 31, - 4, - 34, -}; - -static long _vq_lengthlist__44c9_s0_p1_0[] = { - 1, 3, 4, 6, 6, 0, 0, 0, 0, 0, 0, 5, 5, 5, 7, 6, - 0, 0, 0, 0, 0, 0, 0, 5, 5, 6, 6, 0, 0, 0, 0, 0, - 0, 0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, - 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, - 0,12,12, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c9_s0_p1_0[] = { - -17, -13.5, -9, -4.5, -1.5, 1.5, 4.5, 9, - 13.5, 17, -}; - -static long _vq_quantmap__44c9_s0_p1_0[] = { - 5, 9, 7, 3, 1, 0, 2, 4, - 8, 10, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c9_s0_p1_0 = { - _vq_quantthresh__44c9_s0_p1_0, - _vq_quantmap__44c9_s0_p1_0, - 11, - 11 -}; - -static static_codebook _44c9_s0_p1_0 = { - 2, 121, - _vq_lengthlist__44c9_s0_p1_0, - 1, -527237120, 1611661312, 6, 0, - _vq_quantlist__44c9_s0_p1_0, - NULL, - &_vq_auxt__44c9_s0_p1_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_s0_p1_1.vqh b/lib/books/coupled/_44c9_s0_p1_1.vqh deleted file mode 100644 index 87ad4fb6..00000000 --- a/lib/books/coupled/_44c9_s0_p1_1.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c9_s0_p1_1_VQH_ -#define _V__44c9_s0_p1_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c9_s0_p1_1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c9_s0_p1_1[] = { - 2, 3, 3, 4, 4, 4, 4, 3, 3, -}; - -static float _vq_quantthresh__44c9_s0_p1_1[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c9_s0_p1_1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c9_s0_p1_1 = { - _vq_quantthresh__44c9_s0_p1_1, - _vq_quantmap__44c9_s0_p1_1, - 3, - 3 -}; - -static static_codebook _44c9_s0_p1_1 = { - 2, 9, - _vq_lengthlist__44c9_s0_p1_1, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c9_s0_p1_1, - NULL, - &_vq_auxt__44c9_s0_p1_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_s0_p2_0.vqh b/lib/books/coupled/_44c9_s0_p2_0.vqh deleted file mode 100644 index f5235066..00000000 --- a/lib/books/coupled/_44c9_s0_p2_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c9_s0_p2_0_VQH_ -#define _V__44c9_s0_p2_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c9_s0_p2_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c9_s0_p2_0[] = { - 1, 4, 3, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 6, 5, 5, - 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 6, 5, 5, 7, 7, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 9,10, 0, 0, - 0, 0, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0, 0, 0, - 0, 0,11,11, 9, 9,10,10, 0, 0, 0, 0, 0, 0, 0,12, - 12, 9, 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, - 11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,11,11, 0, - 0, 0, 0, 0, 0, 0, 0, 0,14,14,12,12, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,15,12,12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,14,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,14,14, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c9_s0_p2_0[] = { - -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, - 32.5, 45.5, 58.5, 71.5, -}; - -static long _vq_quantmap__44c9_s0_p2_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c9_s0_p2_0 = { - _vq_quantthresh__44c9_s0_p2_0, - _vq_quantmap__44c9_s0_p2_0, - 13, - 13 -}; - -static static_codebook _44c9_s0_p2_0 = { - 2, 169, - _vq_lengthlist__44c9_s0_p2_0, - 1, -523010048, 1618608128, 4, 0, - _vq_quantlist__44c9_s0_p2_0, - NULL, - &_vq_auxt__44c9_s0_p2_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_s0_p2_1.vqh b/lib/books/coupled/_44c9_s0_p2_1.vqh deleted file mode 100644 index 0f9ed7f4..00000000 --- a/lib/books/coupled/_44c9_s0_p2_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c9_s0_p2_1_VQH_ -#define _V__44c9_s0_p2_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c9_s0_p2_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c9_s0_p2_1[] = { - 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 6, 6, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7, 7, 7, - 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 8, 8, - 7, 9, 8, 9, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, - 9, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, - 8, 7, 7, 7, 8, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 9, 9, 9, 9, 8, 8, 7, 7, 7, 7, 7, 8, 9, - 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 7, 8, 9, 9, 9, 9, - 9, 8, 8, 8, 8, 8, 7, 8, 7, -}; - -static float _vq_quantthresh__44c9_s0_p2_1[] = { - -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, - 2.5, 3.5, 4.5, 5.5, -}; - -static long _vq_quantmap__44c9_s0_p2_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c9_s0_p2_1 = { - _vq_quantthresh__44c9_s0_p2_1, - _vq_quantmap__44c9_s0_p2_1, - 13, - 13 -}; - -static static_codebook _44c9_s0_p2_1 = { - 2, 169, - _vq_lengthlist__44c9_s0_p2_1, - 1, -531103744, 1611661312, 4, 0, - _vq_quantlist__44c9_s0_p2_1, - NULL, - &_vq_auxt__44c9_s0_p2_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_s0_p3_0.vqh b/lib/books/coupled/_44c9_s0_p3_0.vqh deleted file mode 100644 index 29739a39..00000000 --- a/lib/books/coupled/_44c9_s0_p3_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c9_s0_p3_0_VQH_ -#define _V__44c9_s0_p3_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c9_s0_p3_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c9_s0_p3_0[] = { - 1, 6, 6, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, - 8, 8, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0, 0, 9, - 8, 0, 0, 0, 9, 9, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 6, 8, 8, 0, 0, 0, 8, 9, 0, 0, 0, 8, 9, 0, - 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 9, 9, 0, 0, 0, 7, 7, 0, 0, - 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, - 9, 9, 0, 0, 0, 7, 7, 0, 0, 0, 8, 8, 0, 0, 0,10, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 9, 8, 0, 0, 0, 8, 8, 0, 0, 0, 7, 7, - 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, 8, 9, 0, - 0, 0, 8, 8, 0, 0, 0, 7, 7, 0, 0, 0,10,10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,11,11, 0, 0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0, - 11,11, 0, 0, 0, 0, 0, 0, 0, 8,11,11, 0, 0, 0,10, - 10, 0, 0, 0,10,10, 0, 0, 0,11,11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c9_s0_p3_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c9_s0_p3_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c9_s0_p3_0 = { - _vq_quantthresh__44c9_s0_p3_0, - _vq_quantmap__44c9_s0_p3_0, - 5, - 5 -}; - -static static_codebook _44c9_s0_p3_0 = { - 4, 625, - _vq_lengthlist__44c9_s0_p3_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c9_s0_p3_0, - NULL, - &_vq_auxt__44c9_s0_p3_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_s0_p4_0.vqh b/lib/books/coupled/_44c9_s0_p4_0.vqh deleted file mode 100644 index fa038460..00000000 --- a/lib/books/coupled/_44c9_s0_p4_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c9_s0_p4_0_VQH_ -#define _V__44c9_s0_p4_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c9_s0_p4_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44c9_s0_p4_0[] = { - 2, 4, 4, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, - 0, 0, 0, 3, 3, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6, - 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, - 7, 8, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, - 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c9_s0_p4_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44c9_s0_p4_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44c9_s0_p4_0 = { - _vq_quantthresh__44c9_s0_p4_0, - _vq_quantmap__44c9_s0_p4_0, - 9, - 9 -}; - -static static_codebook _44c9_s0_p4_0 = { - 2, 81, - _vq_lengthlist__44c9_s0_p4_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44c9_s0_p4_0, - NULL, - &_vq_auxt__44c9_s0_p4_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_s0_p5_0.vqh b/lib/books/coupled/_44c9_s0_p5_0.vqh deleted file mode 100644 index 16ebb698..00000000 --- a/lib/books/coupled/_44c9_s0_p5_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c9_s0_p5_0_VQH_ -#define _V__44c9_s0_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c9_s0_p5_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44c9_s0_p5_0[] = { - 3, 4, 4, 5, 5, 7, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 4, 6, 6, 7, 7, 8, 8, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 4, 6, 6, 7, 7, 8, 8, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 5, 6, 6, 7, 7, 9, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 7, 7, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 7, 9, 9, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 8, 9, 9, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, - 10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 9,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,10,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,11,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c9_s0_p5_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44c9_s0_p5_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44c9_s0_p5_0 = { - _vq_quantthresh__44c9_s0_p5_0, - _vq_quantmap__44c9_s0_p5_0, - 17, - 17 -}; - -static static_codebook _44c9_s0_p5_0 = { - 2, 289, - _vq_lengthlist__44c9_s0_p5_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44c9_s0_p5_0, - NULL, - &_vq_auxt__44c9_s0_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_s0_p6_0.vqh b/lib/books/coupled/_44c9_s0_p6_0.vqh deleted file mode 100644 index 4ce8f833..00000000 --- a/lib/books/coupled/_44c9_s0_p6_0.vqh +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c9_s0_p6_0_VQH_ -#define _V__44c9_s0_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c9_s0_p6_0[] = { - 19, - 16, - 22, - 13, - 25, - 0, - 38, - 7, - 31, - 4, - 34, -}; - -static long _vq_lengthlist__44c9_s0_p6_0[] = { - 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 0, 5, 4, 4, 6, 6, - 0, 0, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, - 0, 0, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7, 6, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0,10,11, 0, 0, 0, 0, 0, 0, 0, 0, - 0,12,12, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c9_s0_p6_0[] = { - -17, -13.5, -9, -4.5, -1.5, 1.5, 4.5, 9, - 13.5, 17, -}; - -static long _vq_quantmap__44c9_s0_p6_0[] = { - 5, 9, 7, 3, 1, 0, 2, 4, - 8, 10, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44c9_s0_p6_0 = { - _vq_quantthresh__44c9_s0_p6_0, - _vq_quantmap__44c9_s0_p6_0, - 11, - 11 -}; - -static static_codebook _44c9_s0_p6_0 = { - 2, 121, - _vq_lengthlist__44c9_s0_p6_0, - 1, -527237120, 1611661312, 6, 0, - _vq_quantlist__44c9_s0_p6_0, - NULL, - &_vq_auxt__44c9_s0_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_s0_p6_1.vqh b/lib/books/coupled/_44c9_s0_p6_1.vqh deleted file mode 100644 index c143eb92..00000000 --- a/lib/books/coupled/_44c9_s0_p6_1.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c9_s0_p6_1_VQH_ -#define _V__44c9_s0_p6_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c9_s0_p6_1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44c9_s0_p6_1[] = { - 3, 3, 3, 4, 3, 3, 4, 3, 3, -}; - -static float _vq_quantthresh__44c9_s0_p6_1[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44c9_s0_p6_1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44c9_s0_p6_1 = { - _vq_quantthresh__44c9_s0_p6_1, - _vq_quantmap__44c9_s0_p6_1, - 3, - 3 -}; - -static static_codebook _44c9_s0_p6_1 = { - 2, 9, - _vq_lengthlist__44c9_s0_p6_1, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44c9_s0_p6_1, - NULL, - &_vq_auxt__44c9_s0_p6_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_s0_p7_0.vqh b/lib/books/coupled/_44c9_s0_p7_0.vqh deleted file mode 100644 index 40610383..00000000 --- a/lib/books/coupled/_44c9_s0_p7_0.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c9_s0_p7_0_VQH_ -#define _V__44c9_s0_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c9_s0_p7_0[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44c9_s0_p7_0[] = { - 2, 3, 3, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 6, 4, 4, - 6, 6, 9, 9, 0, 0, 0, 0, 0, 0, 7, 4, 4, 6, 6, 9, - 9, 0, 0, 0, 0, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, - 0, 0, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 0, 0, - 0, 0,11,11, 8, 8,10,10, 0, 0, 0, 0, 0, 0, 0,12, - 12, 8, 8,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10, - 10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,10,10, 0, - 0, 0, 0, 0, 0, 0, 0, 0,14,14,11,11, 0, 0, 0, 0, - 0, 0, 0, 0, 0,15,15,11,11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,13,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,14,14, 0, 0, 0, 0, 0, 0, -}; - -static float _vq_quantthresh__44c9_s0_p7_0[] = { - -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, - 12.5, 17.5, 22.5, 27.5, -}; - -static long _vq_quantmap__44c9_s0_p7_0[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44c9_s0_p7_0 = { - _vq_quantthresh__44c9_s0_p7_0, - _vq_quantmap__44c9_s0_p7_0, - 13, - 13 -}; - -static static_codebook _44c9_s0_p7_0 = { - 2, 169, - _vq_lengthlist__44c9_s0_p7_0, - 1, -526516224, 1616117760, 4, 0, - _vq_quantlist__44c9_s0_p7_0, - NULL, - &_vq_auxt__44c9_s0_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_s0_p7_1.vqh b/lib/books/coupled/_44c9_s0_p7_1.vqh deleted file mode 100644 index f19d01a0..00000000 --- a/lib/books/coupled/_44c9_s0_p7_1.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c9_s0_p7_1_VQH_ -#define _V__44c9_s0_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c9_s0_p7_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44c9_s0_p7_1[] = { - 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 4, 4, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, -}; - -static float _vq_quantthresh__44c9_s0_p7_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44c9_s0_p7_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44c9_s0_p7_1 = { - _vq_quantthresh__44c9_s0_p7_1, - _vq_quantmap__44c9_s0_p7_1, - 5, - 5 -}; - -static static_codebook _44c9_s0_p7_1 = { - 2, 25, - _vq_lengthlist__44c9_s0_p7_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44c9_s0_p7_1, - NULL, - &_vq_auxt__44c9_s0_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_s0_p8_0.vqh b/lib/books/coupled/_44c9_s0_p8_0.vqh deleted file mode 100644 index 5505175f..00000000 --- a/lib/books/coupled/_44c9_s0_p8_0.vqh +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c9_s0_p8_0_VQH_ -#define _V__44c9_s0_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c9_s0_p8_0[] = { - 7, - 6, - 8, - 5, - 9, - 4, - 10, - 3, - 11, - 2, - 12, - 1, - 13, - 0, - 14, -}; - -static long _vq_lengthlist__44c9_s0_p8_0[] = { - 2, 3, 3, 6, 6, 8, 8,11,11, 0, 0, 0, 0, 0, 0, 5, - 4, 4, 7, 7, 9, 9,12,12, 0, 0, 0, 0, 0, 0, 6, 4, - 4, 7, 7, 9, 9,12,12, 0, 0, 0, 0, 0, 0, 0, 6, 6, - 7, 7, 9, 9,12,12, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, - 7, 9, 9,12,12, 0, 0, 0, 0, 0, 0, 0,11,11, 8, 8, - 9, 9,12,12, 0, 0, 0, 0, 0, 0, 0,11,11, 8, 8,10, - 10,12,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,10,10, - 13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,10,10,13, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,14,14,11,11,13,13, - 0, 0, 0, 0, 0, 0, 0, 0, 0,15,14,11,11,13,13, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,13,14,14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,13,13,14,14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,17,17,15,15, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,17,17,15,15, 0, 0, 0, 0, 0, - 0, -}; - -static float _vq_quantthresh__44c9_s0_p8_0[] = { - -97.5, -82.5, -67.5, -52.5, -37.5, -22.5, -7.5, 7.5, - 22.5, 37.5, 52.5, 67.5, 82.5, 97.5, -}; - -static long _vq_quantmap__44c9_s0_p8_0[] = { - 13, 11, 9, 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, 12, 14, -}; - -static encode_aux_threshmatch _vq_auxt__44c9_s0_p8_0 = { - _vq_quantthresh__44c9_s0_p8_0, - _vq_quantmap__44c9_s0_p8_0, - 15, - 15 -}; - -static static_codebook _44c9_s0_p8_0 = { - 2, 225, - _vq_lengthlist__44c9_s0_p8_0, - 1, -522567680, 1618870272, 4, 0, - _vq_quantlist__44c9_s0_p8_0, - NULL, - &_vq_auxt__44c9_s0_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_s0_p8_1.vqh b/lib/books/coupled/_44c9_s0_p8_1.vqh deleted file mode 100644 index ae718a6f..00000000 --- a/lib/books/coupled/_44c9_s0_p8_1.vqh +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c9_s0_p8_1_VQH_ -#define _V__44c9_s0_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c9_s0_p8_1[] = { - 7, - 6, - 8, - 5, - 9, - 4, - 10, - 3, - 11, - 2, - 12, - 1, - 13, - 0, - 14, -}; - -static long _vq_lengthlist__44c9_s0_p8_1[] = { - 5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, - 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 7, 7, - 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 7, - 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 7, 7, - 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 7, 7, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 8, 9, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, - 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, - 8, -}; - -static float _vq_quantthresh__44c9_s0_p8_1[] = { - -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, - 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, -}; - -static long _vq_quantmap__44c9_s0_p8_1[] = { - 13, 11, 9, 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, 12, 14, -}; - -static encode_aux_threshmatch _vq_auxt__44c9_s0_p8_1 = { - _vq_quantthresh__44c9_s0_p8_1, - _vq_quantmap__44c9_s0_p8_1, - 15, - 15 -}; - -static static_codebook _44c9_s0_p8_1 = { - 2, 225, - _vq_lengthlist__44c9_s0_p8_1, - 1, -530841600, 1611661312, 4, 0, - _vq_quantlist__44c9_s0_p8_1, - NULL, - &_vq_auxt__44c9_s0_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_s0_p9_0.vqh b/lib/books/coupled/_44c9_s0_p9_0.vqh deleted file mode 100644 index 948cb03f..00000000 --- a/lib/books/coupled/_44c9_s0_p9_0.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c9_s0_p9_0_VQH_ -#define _V__44c9_s0_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c9_s0_p9_0[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c9_s0_p9_0[] = { - 1, 3, 3, 7, 7,11,10,15,13,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15, 5, 5, 6, 9, 9,11,11,13,13, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15, 5, 6, - 5, 9,10,11,11,12,13,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15, 8, 9,11,14,14,15,15,14,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15, 9, 8,12, - 11,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,12,14,10,11,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,13,13, 8,15, - 15,15,15,15,15,15,15,15,14,14,14,14,14,14,14,14, - 14,14,14,14,10,12,13,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14, 6,14, 9,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,12,14,12,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,11,14, 9,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,13,14,13,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,12,14,13,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14, -}; - -static float _vq_quantthresh__44c9_s0_p9_0[] = { - -19562, -17698, -15836, -13972, -12110, -10246, -8383.5, -6520.5, - -4657.5, -2794.5, -931.5, 931.5, 2794.5, 4657.5, 6520.5, 8383.5, - 10246, 12110, 13972, 15836, 17698, 19562, -}; - -static long _vq_quantmap__44c9_s0_p9_0[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c9_s0_p9_0 = { - _vq_quantthresh__44c9_s0_p9_0, - _vq_quantmap__44c9_s0_p9_0, - 23, - 23 -}; - -static static_codebook _44c9_s0_p9_0 = { - 2, 529, - _vq_lengthlist__44c9_s0_p9_0, - 1, -506199232, 1633491968, 5, 0, - _vq_quantlist__44c9_s0_p9_0, - NULL, - &_vq_auxt__44c9_s0_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_s0_p9_1.vqh b/lib/books/coupled/_44c9_s0_p9_1.vqh deleted file mode 100644 index fdd9ae35..00000000 --- a/lib/books/coupled/_44c9_s0_p9_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c9_s0_p9_1_VQH_ -#define _V__44c9_s0_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c9_s0_p9_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44c9_s0_p9_1[] = { - 1, 3, 3, 7, 7, 9, 9,10,10,11,11,12,12,13,13,14, - 14,14,14,15,15,15,15, 6, 5, 5, 8, 8,10,10,11,11, - 12,12,13,13,14,14,15,15,15,15,15,15,15,15, 6, 5, - 5, 8, 8,10,10,11,11,12,12,13,13,14,14,14,14,15, - 15,15,15,15,15,17, 8, 8, 9, 9,10,11,12,12,13,13, - 13,14,14,14,15,15,15,15,16,16,16,16,18, 8, 8, 9, - 9,11,11,12,12,13,13,14,14,14,14,15,15,15,15,16, - 16,16,16,17,13,13,10,10,11,11,12,12,13,13,14,14, - 15,15,15,15,15,15,16,16,16,16,18,13,13,10,10,11, - 11,12,12,13,13,14,14,15,15,15,15,15,16,16,16,16, - 16,18,18,18,12,12,12,12,13,13,14,14,14,15,15,15, - 15,16,15,16,16,16,16,16,18,18,18,12,12,12,12,13, - 13,14,14,15,14,15,15,15,15,16,16,16,16,16,16,18, - 19,19,16,16,13,13,13,13,14,14,15,15,15,15,16,16, - 16,16,16,16,16,16,18,18,18,16,16,12,13,13,13,14, - 14,15,15,15,15,16,16,16,16,16,16,16,16,18,19,18, - 18,19,14,14,14,14,14,14,15,15,16,16,16,16,16,16, - 16,16,16,16,18,19,18,18,18,14,14,14,13,14,14,15, - 15,16,16,16,16,16,16,16,16,16,16,19,18,19,18,18, - 17,16,14,14,15,15,15,16,16,16,16,16,16,16,16,16, - 16,16,18,18,19,18,18,17,18,14,14,14,14,15,15,16, - 16,16,16,17,16,16,16,16,16,18,18,18,19,20,18,18, - 15,15,15,15,16,16,16,16,16,16,17,16,16,16,16,16, - 19,18,19,19,19,18,18,16,15,14,15,15,15,16,16,16, - 16,16,16,16,16,16,16,18,19,19,18,18,20,18,18,18, - 15,15,16,16,16,16,16,16,16,16,16,16,17,16,19,18, - 19,19,19,19,18,17,17,14,15,16,15,16,16,16,16,16, - 17,16,17,17,16,20,18,19,18,19,19,19,19,18,16,16, - 16,15,16,16,16,16,16,16,17,17,17,17,19,18,20,18, - 19,18,19,19,18,16,15,16,14,16,15,16,16,16,16,16, - 17,17,17,18,20,19,18,20,18,18,18,18,17,17,16,15, - 16,15,16,16,16,16,17,16,16,17,19,19,19,19,19,18, - 18,18,18,18,17,16,14,16,15,16,16,16,17,17,16,17, - 17, -}; - -static float _vq_quantthresh__44c9_s0_p9_1[] = { - -850.5, -769.5, -688.5, -607.5, -526.5, -445.5, -364.5, -283.5, - -202.5, -121.5, -40.5, 40.5, 121.5, 202.5, 283.5, 364.5, - 445.5, 526.5, 607.5, 688.5, 769.5, 850.5, -}; - -static long _vq_quantmap__44c9_s0_p9_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44c9_s0_p9_1 = { - _vq_quantthresh__44c9_s0_p9_1, - _vq_quantmap__44c9_s0_p9_1, - 23, - 23 -}; - -static static_codebook _44c9_s0_p9_1 = { - 2, 529, - _vq_lengthlist__44c9_s0_p9_1, - 1, -516171776, 1624522752, 5, 0, - _vq_quantlist__44c9_s0_p9_1, - NULL, - &_vq_auxt__44c9_s0_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_s0_p9_2.vqh b/lib/books/coupled/_44c9_s0_p9_2.vqh deleted file mode 100644 index 20f9b302..00000000 --- a/lib/books/coupled/_44c9_s0_p9_2.vqh +++ /dev/null @@ -1,160 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44c9_s0_p9_2_VQH_ -#define _V__44c9_s0_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44c9_s0_p9_2[] = { - 40, - 39, - 41, - 38, - 42, - 37, - 43, - 36, - 44, - 35, - 45, - 34, - 46, - 33, - 47, - 32, - 48, - 31, - 49, - 30, - 50, - 29, - 51, - 28, - 52, - 27, - 53, - 26, - 54, - 25, - 55, - 24, - 56, - 23, - 57, - 22, - 58, - 21, - 59, - 20, - 60, - 19, - 61, - 18, - 62, - 17, - 63, - 16, - 64, - 15, - 65, - 14, - 66, - 13, - 67, - 12, - 68, - 11, - 69, - 10, - 70, - 9, - 71, - 8, - 72, - 7, - 73, - 6, - 74, - 5, - 75, - 4, - 76, - 3, - 77, - 2, - 78, - 1, - 79, - 0, - 80, -}; - -static long _vq_lengthlist__44c9_s0_p9_2[] = { - 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44c9_s0_p9_2[] = { - -39.5, -38.5, -37.5, -36.5, -35.5, -34.5, -33.5, -32.5, - -31.5, -30.5, -29.5, -28.5, -27.5, -26.5, -25.5, -24.5, - -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, - -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, - 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, - 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, - 24.5, 25.5, 26.5, 27.5, 28.5, 29.5, 30.5, 31.5, - 32.5, 33.5, 34.5, 35.5, 36.5, 37.5, 38.5, 39.5, -}; - -static long _vq_quantmap__44c9_s0_p9_2[] = { - 79, 77, 75, 73, 71, 69, 67, 65, - 63, 61, 59, 57, 55, 53, 51, 49, - 47, 45, 43, 41, 39, 37, 35, 33, - 31, 29, 27, 25, 23, 21, 19, 17, - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, 18, 20, 22, 24, 26, 28, 30, - 32, 34, 36, 38, 40, 42, 44, 46, - 48, 50, 52, 54, 56, 58, 60, 62, - 64, 66, 68, 70, 72, 74, 76, 78, - 80, -}; - -static encode_aux_threshmatch _vq_auxt__44c9_s0_p9_2 = { - _vq_quantthresh__44c9_s0_p9_2, - _vq_quantmap__44c9_s0_p9_2, - 81, - 81 -}; - -static static_codebook _44c9_s0_p9_2 = { - 1, 81, - _vq_lengthlist__44c9_s0_p9_2, - 1, -525074432, 1611661312, 7, 0, - _vq_quantlist__44c9_s0_p9_2, - NULL, - &_vq_auxt__44c9_s0_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/coupled/_44c9_short.vqh b/lib/books/coupled/_44c9_short.vqh deleted file mode 100644 index c997c500..00000000 --- a/lib/books/coupled/_44c9_short.vqh +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V__44c9_short_VQH_ -#define _V__44c9_short_VQH_ -#include "codebook.h" - -static long _huff_lengthlist__44c9_short[] = { - 3,18,18, 9,13,14,18,18,18,18,17,18,18,16,13,12, - 10,11,13,17,18,15,15,14,13,11, 8, 6, 5, 9, 5,18, - 18, 6,10,11,13,14,16,18, 7,18,18, 5, 8,10,11,13, - 14,17, 8,18,18, 6, 7, 7, 7, 9,12,16,11,18,18, 8, - 7, 5, 4, 6, 9,14,13,18,18,10, 8, 6, 4, 4, 6,13, - 15,18,16,12,10, 8, 6, 5, 3, 7,18,10, 6,16,15,13, - 10, 8, 4, 3, -}; - -static static_codebook _huff_book__44c9_short = { - 2, 100, - _huff_lengthlist__44c9_short, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/.cvsignore b/lib/books/floor/.cvsignore deleted file mode 100644 index 282522db..00000000 --- a/lib/books/floor/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/lib/books/floor/Makefile.am b/lib/books/floor/Makefile.am deleted file mode 100644 index 15aded6b..00000000 --- a/lib/books/floor/Makefile.am +++ /dev/null @@ -1,18 +0,0 @@ -## Process this file with automake to produce Makefile.in - -AUTOMAKE_OPTIONS = foreign - -EXTRA_DIST = line_1024x31_0sub0.vqh line_1024x31_0sub1.vqh\ - line_1024x31_1sub0.vqh line_1024x31_1sub1.vqh line_1024x31_2sub1.vqh\ - line_1024x31_2sub2.vqh line_1024x31_2sub3.vqh line_1024x31_3sub1.vqh\ - line_1024x31_3sub2.vqh line_1024x31_3sub3.vqh line_1024x31_class0.vqh\ - line_1024x31_class1.vqh line_1024x31_class2.vqh line_1024x31_class3.vqh\ - line_128x19_0sub0.vqh line_128x19_1sub1.vqh line_128x19_1sub2.vqh\ - line_128x19_1sub3.vqh line_128x19_2sub1.vqh line_128x19_2sub2.vqh\ - line_128x19_2sub3.vqh line_128x19_class1.vqh line_128x19_class2.vqh\ - line_128x7_0sub0.vqh line_128x7_1sub1.vqh line_128x7_1sub2.vqh\ - line_128x7_1sub3.vqh line_128x7_2sub1.vqh line_128x7_2sub2.vqh\ - line_128x7_2sub3.vqh line_128x7_class1.vqh line_128x7_class2.vqh\ - line_128x9_0sub0.vqh line_128x9_1sub1.vqh line_128x9_1sub2.vqh\ - line_128x9_1sub3.vqh line_128x9_2sub1.vqh line_128x9_2sub2.vqh\ - line_128x9_2sub3.vqh line_128x9_class1.vqh line_128x9_class2.vqh diff --git a/lib/books/floor/line_1024x31_0sub0.vqh b/lib/books/floor/line_1024x31_0sub0.vqh deleted file mode 100644 index 67054207..00000000 --- a/lib/books/floor/line_1024x31_0sub0.vqh +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_1024x31_0sub0_VQH_ -#define _V_line_1024x31_0sub0_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_1024x31_0sub0[] = { - 4, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, -}; - -static static_codebook _huff_book_line_1024x31_0sub0 = { - 1, 32, - _huff_lengthlist_line_1024x31_0sub0, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_1024x31_0sub1.vqh b/lib/books/floor/line_1024x31_0sub1.vqh deleted file mode 100644 index cd2615ea..00000000 --- a/lib/books/floor/line_1024x31_0sub1.vqh +++ /dev/null @@ -1,44 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_1024x31_0sub1_VQH_ -#define _V_line_1024x31_0sub1_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_1024x31_0sub1[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 4, 4, 4, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, - 6, 5, 6, 6, 6, 6, 7, 6, 7, 6, 7, 7, 7, 7, 8, 7, - 8, 7, 8, 8, 8, 8, 8, 8, 9, 8, 9, 8, 9, 8, 9, 9, - 9, 9,10,10,10,10,10,10,11,10,10,10,11, 9, 9,10, - 11,11,11,11,11,11,11,11,11,12,13,12,13,14,15,12, - 13,17,14,13,13,12,12,12,17,17,15,17,17,17,16,13, -}; - -static static_codebook _huff_book_line_1024x31_0sub1 = { - 1, 128, - _huff_lengthlist_line_1024x31_0sub1, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_1024x31_1sub0.vqh b/lib/books/floor/line_1024x31_1sub0.vqh deleted file mode 100644 index e8d4fbf9..00000000 --- a/lib/books/floor/line_1024x31_1sub0.vqh +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_1024x31_1sub0_VQH_ -#define _V_line_1024x31_1sub0_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_1024x31_1sub0[] = { - 2, 4, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, -}; - -static static_codebook _huff_book_line_1024x31_1sub0 = { - 1, 32, - _huff_lengthlist_line_1024x31_1sub0, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_1024x31_1sub1.vqh b/lib/books/floor/line_1024x31_1sub1.vqh deleted file mode 100644 index 63616edf..00000000 --- a/lib/books/floor/line_1024x31_1sub1.vqh +++ /dev/null @@ -1,44 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_1024x31_1sub1_VQH_ -#define _V_line_1024x31_1sub1_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_1024x31_1sub1[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 4, 4, 4, 4, 4, 5, 4, 5, 4, 5, 4, 5, 5, 6, 5, - 6, 5, 7, 6, 7, 6, 7, 6, 8, 6, 8, 6, 8, 7, 9, 7, - 9, 7, 9, 8, 9, 8,10, 8,10, 9,10, 9,11,10,11,10, - 10, 9,10,10,10,10,10,10,10, 9,10,10,11,12,12,11, - 12,11,11,12,11,12,11,12,11,12,13,12,11,12,12,12, - 13,14,14,15,12,13,14,14,15,15,15,15,15,15,15,13, -}; - -static static_codebook _huff_book_line_1024x31_1sub1 = { - 1, 128, - _huff_lengthlist_line_1024x31_1sub1, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_1024x31_2sub1.vqh b/lib/books/floor/line_1024x31_2sub1.vqh deleted file mode 100644 index 30a1ab90..00000000 --- a/lib/books/floor/line_1024x31_2sub1.vqh +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_1024x31_2sub1_VQH_ -#define _V_line_1024x31_2sub1_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_1024x31_2sub1[] = { - 0, 4, 4, 4, 4, 3, 5, 3, 5, 3, 5, 4, 5, 4, 5, 5, - 5, 5, -}; - -static static_codebook _huff_book_line_1024x31_2sub1 = { - 1, 18, - _huff_lengthlist_line_1024x31_2sub1, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_1024x31_2sub2.vqh b/lib/books/floor/line_1024x31_2sub2.vqh deleted file mode 100644 index a47983c9..00000000 --- a/lib/books/floor/line_1024x31_2sub2.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_1024x31_2sub2_VQH_ -#define _V_line_1024x31_2sub2_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_1024x31_2sub2[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 3, 3, 4, 4, 4, 4, 5, 4, 5, 4, 6, 5, 7, - 5, 8, 6, 8, 6,10, 6,10, 6,11, 7,11, 7,11, 7,12, - 8,12, -}; - -static static_codebook _huff_book_line_1024x31_2sub2 = { - 1, 50, - _huff_lengthlist_line_1024x31_2sub2, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_1024x31_2sub3.vqh b/lib/books/floor/line_1024x31_2sub3.vqh deleted file mode 100644 index 0b5407b4..00000000 --- a/lib/books/floor/line_1024x31_2sub3.vqh +++ /dev/null @@ -1,44 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_1024x31_2sub3_VQH_ -#define _V_line_1024x31_2sub3_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_1024x31_2sub3[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 6, 3, 7, 3, 7, 4, 9, 3, 9, 5, 8, 5, 8, - 6, 9, 6, 9, 6, 9, 7, 9, 7, 9, 7,10, 8, 8, 9, 7, - 7, 9, 9, 9, 8, 8, 8, 6, 7, 6, 8, 9, 9,11, 9,11, - 9,11, 8, 9, 9, 8, 9,11, 9,11, 8,11,11,11,11,11, - 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, -}; - -static static_codebook _huff_book_line_1024x31_2sub3 = { - 1, 128, - _huff_lengthlist_line_1024x31_2sub3, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_1024x31_3sub1.vqh b/lib/books/floor/line_1024x31_3sub1.vqh deleted file mode 100644 index cb1f8c40..00000000 --- a/lib/books/floor/line_1024x31_3sub1.vqh +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_1024x31_3sub1_VQH_ -#define _V_line_1024x31_3sub1_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_1024x31_3sub1[] = { - 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 5, 5, -}; - -static static_codebook _huff_book_line_1024x31_3sub1 = { - 1, 18, - _huff_lengthlist_line_1024x31_3sub1, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_1024x31_3sub2.vqh b/lib/books/floor/line_1024x31_3sub2.vqh deleted file mode 100644 index e4e96923..00000000 --- a/lib/books/floor/line_1024x31_3sub2.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_1024x31_3sub2_VQH_ -#define _V_line_1024x31_3sub2_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_1024x31_3sub2[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 3, 4, 4, 4, 4, 5, 4, 6, 4, 7, 4, 7, 5, - 8, 5, 8, 5, 9, 5, 9, 5,10, 6,10, 6,10, 6,11, 6, - 11, 6, -}; - -static static_codebook _huff_book_line_1024x31_3sub2 = { - 1, 50, - _huff_lengthlist_line_1024x31_3sub2, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_1024x31_3sub3.vqh b/lib/books/floor/line_1024x31_3sub3.vqh deleted file mode 100644 index 9d48219a..00000000 --- a/lib/books/floor/line_1024x31_3sub3.vqh +++ /dev/null @@ -1,44 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_1024x31_3sub3_VQH_ -#define _V_line_1024x31_3sub3_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_1024x31_3sub3[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 8, 3, 7, 3, 8, 3, 8, 4, 8, 4, 8, 4, 8, 4, - 9, 4, 8, 4, 9, 4, 9, 5, 9, 5,10, 6, 9, 6,10, 6, - 10, 7,10, 8,12, 8,11, 9,12, 9,12,10,14,10,11,10, - 11,11,14,10,14,11,14,13,14,11,14,13,14,13,12,14, - 14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,13, -}; - -static static_codebook _huff_book_line_1024x31_3sub3 = { - 1, 128, - _huff_lengthlist_line_1024x31_3sub3, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_1024x31_class0.vqh b/lib/books/floor/line_1024x31_class0.vqh deleted file mode 100644 index 38bff2b3..00000000 --- a/lib/books/floor/line_1024x31_class0.vqh +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_1024x31_class0_VQH_ -#define _V_line_1024x31_class0_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_1024x31_class0[] = { - 1, 3, 4, 4, 3, 4, 5, 5, -}; - -static static_codebook _huff_book_line_1024x31_class0 = { - 1, 8, - _huff_lengthlist_line_1024x31_class0, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_1024x31_class1.vqh b/lib/books/floor/line_1024x31_class1.vqh deleted file mode 100644 index f74ace2e..00000000 --- a/lib/books/floor/line_1024x31_class1.vqh +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_1024x31_class1_VQH_ -#define _V_line_1024x31_class1_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_1024x31_class1[] = { - 1, 3, 5, 8, 5,10, 9,13, 2, 5, 6, 8, 8,12,11,13, -}; - -static static_codebook _huff_book_line_1024x31_class1 = { - 1, 16, - _huff_lengthlist_line_1024x31_class1, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_1024x31_class2.vqh b/lib/books/floor/line_1024x31_class2.vqh deleted file mode 100644 index 99b8f6e2..00000000 --- a/lib/books/floor/line_1024x31_class2.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_1024x31_class2_VQH_ -#define _V_line_1024x31_class2_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_1024x31_class2[] = { - 1, 3, 5,12, 8, 4, 6,12,10, 7, 8,14,17,20,20,14, - 6, 3, 6,12, 8, 5, 6,10,11, 7, 9,12,20,19,20,17, - 12, 7, 8,14,12, 7, 7,13,14,10,11,18,20,20,20,20, - 18,18,15,17,20,18,16,17,20,19,17,19,19,19,19,19, -}; - -static static_codebook _huff_book_line_1024x31_class2 = { - 1, 64, - _huff_lengthlist_line_1024x31_class2, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_1024x31_class3.vqh b/lib/books/floor/line_1024x31_class3.vqh deleted file mode 100644 index fc546618..00000000 --- a/lib/books/floor/line_1024x31_class3.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_1024x31_class3_VQH_ -#define _V_line_1024x31_class3_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_1024x31_class3[] = { - 1, 4, 5,11, 7, 4, 6,12,11, 8, 9,13,18,14,14,16, - 7, 3, 5,11, 8, 4, 6,12,11, 8,10,14,20,20,20,20, - 11, 6, 6, 8,11, 7, 7,10,13, 9,12,15,20,20,19,20, - 17,14,12, 8,18,14,12,10,20,16,15,14,20,20,19,19, -}; - -static static_codebook _huff_book_line_1024x31_class3 = { - 1, 64, - _huff_lengthlist_line_1024x31_class3, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x19_0sub0.vqh b/lib/books/floor/line_128x19_0sub0.vqh deleted file mode 100644 index c7c0b296..00000000 --- a/lib/books/floor/line_128x19_0sub0.vqh +++ /dev/null @@ -1,44 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x19_0sub0_VQH_ -#define _V_line_128x19_0sub0_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x19_0sub0[] = { - 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, - 6, 5, 6, 5, 6, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 6, - 7, 6, 7, 6, 8, 6, 8, 6, 8, 6, 8, 6, 8, 7, 8, 7, - 9, 7, 9, 8, 9, 8, 9, 8, 9, 9,10, 9,10, 9,10,10, - 10,10,10,11,11,11,11,12,11,12,12,12,12,13,12,13, - 13,14,13,14,14,16,14,17,15,19,16,17,16,19,18,18, - 16,18,17,18,17,18,18,18,18,18,18,18,18,18,18,18, - 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, -}; - -static static_codebook _huff_book_line_128x19_0sub0 = { - 1, 128, - _huff_lengthlist_line_128x19_0sub0, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x19_1sub1.vqh b/lib/books/floor/line_128x19_1sub1.vqh deleted file mode 100644 index c7699ccc..00000000 --- a/lib/books/floor/line_128x19_1sub1.vqh +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x19_1sub1_VQH_ -#define _V_line_128x19_1sub1_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x19_1sub1[] = { - 0, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 4, 5, 4, - 6, 4, 6, 5, 6, 5, 6, 6, 6, -}; - -static static_codebook _huff_book_line_128x19_1sub1 = { - 1, 25, - _huff_lengthlist_line_128x19_1sub1, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x19_1sub2.vqh b/lib/books/floor/line_128x19_1sub2.vqh deleted file mode 100644 index 73605937..00000000 --- a/lib/books/floor/line_128x19_1sub2.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x19_1sub2_VQH_ -#define _V_line_128x19_1sub2_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x19_1sub2[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,15,15,15,15,15,15,14, 3, 2, 4, 3, 4, 3, 5, - 4, 6, 5, 6, 5, 7, 6, 7, 7, 8, 7, 9, 8, 9, 9,11, - 10,12, -}; - -static static_codebook _huff_book_line_128x19_1sub2 = { - 1, 50, - _huff_lengthlist_line_128x19_1sub2, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x19_1sub3.vqh b/lib/books/floor/line_128x19_1sub3.vqh deleted file mode 100644 index a781f871..00000000 --- a/lib/books/floor/line_128x19_1sub3.vqh +++ /dev/null @@ -1,44 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x19_1sub3_VQH_ -#define _V_line_128x19_1sub3_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x19_1sub3[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 7, 3, 8, 4, 7, 4, 8, 5, 6, 5, 8, 5, 8, - 6, 8, 7, 8, 6, 8, 6, 8, 6, 8, 6, 8, 8, 8, 8, 8, - 7, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, -}; - -static static_codebook _huff_book_line_128x19_1sub3 = { - 1, 128, - _huff_lengthlist_line_128x19_1sub3, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x19_2sub1.vqh b/lib/books/floor/line_128x19_2sub1.vqh deleted file mode 100644 index 48c63def..00000000 --- a/lib/books/floor/line_128x19_2sub1.vqh +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x19_2sub1_VQH_ -#define _V_line_128x19_2sub1_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x19_2sub1[] = { - 0, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 5, 4, -}; - -static static_codebook _huff_book_line_128x19_2sub1 = { - 1, 18, - _huff_lengthlist_line_128x19_2sub1, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x19_2sub2.vqh b/lib/books/floor/line_128x19_2sub2.vqh deleted file mode 100644 index b4a10a3f..00000000 --- a/lib/books/floor/line_128x19_2sub2.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x19_2sub2_VQH_ -#define _V_line_128x19_2sub2_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x19_2sub2[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 3, 4, 3, 5, 4, 6, 4, 6, 4, 7, 4, 7, 4, - 8, 5, 8, 5, 9, 5, 9, 5,10, 5,10, 6,10, 6,11, 6, - 11, 6, -}; - -static static_codebook _huff_book_line_128x19_2sub2 = { - 1, 50, - _huff_lengthlist_line_128x19_2sub2, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x19_2sub3.vqh b/lib/books/floor/line_128x19_2sub3.vqh deleted file mode 100644 index 885ca48b..00000000 --- a/lib/books/floor/line_128x19_2sub3.vqh +++ /dev/null @@ -1,44 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x19_2sub3_VQH_ -#define _V_line_128x19_2sub3_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x19_2sub3[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 3,10, 3,10, 3,11, 3,11, 4,12, 4,12, 4, - 14, 4,13, 4,14, 5,14, 5,13, 5,14, 5,14, 6,13, 6, - 14, 7,13, 7,13, 9,13, 9,13,11,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, -}; - -static static_codebook _huff_book_line_128x19_2sub3 = { - 1, 128, - _huff_lengthlist_line_128x19_2sub3, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x19_class1.vqh b/lib/books/floor/line_128x19_class1.vqh deleted file mode 100644 index 8e519f60..00000000 --- a/lib/books/floor/line_128x19_class1.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x19_class1_VQH_ -#define _V_line_128x19_class1_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x19_class1[] = { - 1, 2, 7,14, 8, 3, 6,17,14,11,13,19,19,19,19,19, - 8, 4, 8,13,10, 6,10,18,15,11,15,19,19,19,19,19, - 13, 8,13,18,13, 8,14,19,19,16,19,19,19,19,19,19, - 19,19,19,19,19,16,19,19,19,18,18,18,18,18,18,18, -}; - -static static_codebook _huff_book_line_128x19_class1 = { - 1, 64, - _huff_lengthlist_line_128x19_class1, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x19_class2.vqh b/lib/books/floor/line_128x19_class2.vqh deleted file mode 100644 index fd57d5cc..00000000 --- a/lib/books/floor/line_128x19_class2.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x19_class2_VQH_ -#define _V_line_128x19_class2_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x19_class2[] = { - 2, 3, 4,11, 7, 4, 5,12,10, 7, 8,15,18,16,14,17, - 7, 3, 4,11, 8, 4, 5,12,10, 7, 8,15,18,16,16,16, - 10, 5, 5, 6,11, 6, 6, 8,13, 9, 9,12,17,17,17,17, - 17,16,10, 6,17,14,11, 8,17,17,12,11,17,17,17,17, -}; - -static static_codebook _huff_book_line_128x19_class2 = { - 1, 64, - _huff_lengthlist_line_128x19_class2, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x7_0sub0.vqh b/lib/books/floor/line_128x7_0sub0.vqh deleted file mode 100644 index 084df02d..00000000 --- a/lib/books/floor/line_128x7_0sub0.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x7_0sub0_VQH_ -#define _V_line_128x7_0sub0_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x7_0sub0[] = { - 4, 4, 4, 4, 4, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 6, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 9, - 7,11, 7,13, 8,15, 9,15, 9,15, 9,13,10,15,11,14, - 12,14,12,13,13,14,13,14,14,14,14,14,14,14,14,14, -}; - -static static_codebook _huff_book_line_128x7_0sub0 = { - 1, 64, - _huff_lengthlist_line_128x7_0sub0, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x7_1sub1.vqh b/lib/books/floor/line_128x7_1sub1.vqh deleted file mode 100644 index 9b39612b..00000000 --- a/lib/books/floor/line_128x7_1sub1.vqh +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x7_1sub1_VQH_ -#define _V_line_128x7_1sub1_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x7_1sub1[] = { - 0, 3, 3, 3, 3, 3, 3, 3, 3, -}; - -static static_codebook _huff_book_line_128x7_1sub1 = { - 1, 9, - _huff_lengthlist_line_128x7_1sub1, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x7_1sub2.vqh b/lib/books/floor/line_128x7_1sub2.vqh deleted file mode 100644 index 348bd251..00000000 --- a/lib/books/floor/line_128x7_1sub2.vqh +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x7_1sub2_VQH_ -#define _V_line_128x7_1sub2_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x7_1sub2[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 3, 4, 3, 5, - 4, 7, 5, 7, 5, 9, 7, 9, 8, -}; - -static static_codebook _huff_book_line_128x7_1sub2 = { - 1, 25, - _huff_lengthlist_line_128x7_1sub2, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x7_1sub3.vqh b/lib/books/floor/line_128x7_1sub3.vqh deleted file mode 100644 index b475f442..00000000 --- a/lib/books/floor/line_128x7_1sub3.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x7_1sub3_VQH_ -#define _V_line_128x7_1sub3_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x7_1sub3[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 5, 4, 6, 4, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, -}; - -static static_codebook _huff_book_line_128x7_1sub3 = { - 1, 64, - _huff_lengthlist_line_128x7_1sub3, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x7_2sub1.vqh b/lib/books/floor/line_128x7_2sub1.vqh deleted file mode 100644 index 689987e8..00000000 --- a/lib/books/floor/line_128x7_2sub1.vqh +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x7_2sub1_VQH_ -#define _V_line_128x7_2sub1_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x7_2sub1[] = { - 0, 3, 3, 3, 3, 3, 3, 3, 3, -}; - -static static_codebook _huff_book_line_128x7_2sub1 = { - 1, 9, - _huff_lengthlist_line_128x7_2sub1, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x7_2sub2.vqh b/lib/books/floor/line_128x7_2sub2.vqh deleted file mode 100644 index 620efaf3..00000000 --- a/lib/books/floor/line_128x7_2sub2.vqh +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x7_2sub2_VQH_ -#define _V_line_128x7_2sub2_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x7_2sub2[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 3, 4, 4, - 4, 4, 5, 5, 5, 5, 6, 5, 6, -}; - -static static_codebook _huff_book_line_128x7_2sub2 = { - 1, 25, - _huff_lengthlist_line_128x7_2sub2, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x7_2sub3.vqh b/lib/books/floor/line_128x7_2sub3.vqh deleted file mode 100644 index 834e7c0b..00000000 --- a/lib/books/floor/line_128x7_2sub3.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x7_2sub3_VQH_ -#define _V_line_128x7_2sub3_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x7_2sub3[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 4, 4, 4, - 4, 4, 4, 5, 6, 6, 6, 9, 7, 9, 7, 9, 7,11, 8,11, - 9,11,11,11,10,11,11,11,11,11,10,10,10,10,10,10, -}; - -static static_codebook _huff_book_line_128x7_2sub3 = { - 1, 64, - _huff_lengthlist_line_128x7_2sub3, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x7_class1.vqh b/lib/books/floor/line_128x7_class1.vqh deleted file mode 100644 index bb64e4c5..00000000 --- a/lib/books/floor/line_128x7_class1.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x7_class1_VQH_ -#define _V_line_128x7_class1_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x7_class1[] = { - 2, 3, 4,14,11, 8, 9,15,12, 9,10,15,15,15,15,15, - 5, 2, 4,14,11, 8,10,15,13,11,12,15,15,15,15,15, - 5, 3, 5,13,11, 7, 8,15,14,11,12,15,15,15,15,15, - 14,11,12,14,14,13,13,14,14,14,14,14,14,14,14,14, -}; - -static static_codebook _huff_book_line_128x7_class1 = { - 1, 64, - _huff_lengthlist_line_128x7_class1, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x7_class2.vqh b/lib/books/floor/line_128x7_class2.vqh deleted file mode 100644 index 47eae7e9..00000000 --- a/lib/books/floor/line_128x7_class2.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x7_class2_VQH_ -#define _V_line_128x7_class2_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x7_class2[] = { - 9, 7, 7,11, 7, 5, 5, 9, 9, 6, 6, 8,13,11, 9,14, - 7, 5, 5, 9, 5, 3, 3, 7, 6, 4, 4, 6,10, 8, 7, 9, - 9, 6, 6,10, 7, 4, 4, 7, 7, 4, 4, 7,13, 9, 7, 9, - 13,12,12,14,11, 9,10,14,11, 9, 9,11,14,13,12,10, -}; - -static static_codebook _huff_book_line_128x7_class2 = { - 1, 64, - _huff_lengthlist_line_128x7_class2, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x9_0sub0.vqh b/lib/books/floor/line_128x9_0sub0.vqh deleted file mode 100644 index d0d4804f..00000000 --- a/lib/books/floor/line_128x9_0sub0.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x9_0sub0_VQH_ -#define _V_line_128x9_0sub0_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x9_0sub0[] = { - 4, 4, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 4, 6, 4, 6, - 5, 7, 5, 7, 5, 7, 5, 8, 6, 8, 6, 8, 6, 9, 6,10, - 7,11, 7,13, 8,14, 8,13, 9,12, 9,11, 9,11, 9,11, - 9,10, 9,11,11,13,15,15,15,15,15,15,15,15,15,15, -}; - -static static_codebook _huff_book_line_128x9_0sub0 = { - 1, 64, - _huff_lengthlist_line_128x9_0sub0, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x9_1sub1.vqh b/lib/books/floor/line_128x9_1sub1.vqh deleted file mode 100644 index 67ed69a9..00000000 --- a/lib/books/floor/line_128x9_1sub1.vqh +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x9_1sub1_VQH_ -#define _V_line_128x9_1sub1_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x9_1sub1[] = { - 0, 4, 3, 4, 3, 4, 2, 4, 2, -}; - -static static_codebook _huff_book_line_128x9_1sub1 = { - 1, 9, - _huff_lengthlist_line_128x9_1sub1, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x9_1sub2.vqh b/lib/books/floor/line_128x9_1sub2.vqh deleted file mode 100644 index e678ca2a..00000000 --- a/lib/books/floor/line_128x9_1sub2.vqh +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x9_1sub2_VQH_ -#define _V_line_128x9_1sub2_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x9_1sub2[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 5, 2, 7, 3, 8, - 3, 9, 4,10, 5,11, 5,11, 6, -}; - -static static_codebook _huff_book_line_128x9_1sub2 = { - 1, 25, - _huff_lengthlist_line_128x9_1sub2, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x9_1sub3.vqh b/lib/books/floor/line_128x9_1sub3.vqh deleted file mode 100644 index ca81050e..00000000 --- a/lib/books/floor/line_128x9_1sub3.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x9_1sub3_VQH_ -#define _V_line_128x9_1sub3_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x9_1sub3[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, 7, 3, 7, 4, 7, - 5, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, -}; - -static static_codebook _huff_book_line_128x9_1sub3 = { - 1, 64, - _huff_lengthlist_line_128x9_1sub3, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x9_2sub1.vqh b/lib/books/floor/line_128x9_2sub1.vqh deleted file mode 100644 index 754ba4bf..00000000 --- a/lib/books/floor/line_128x9_2sub1.vqh +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x9_2sub1_VQH_ -#define _V_line_128x9_2sub1_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x9_2sub1[] = { - 0, 3, 3, 2, 3, 3, 4, 3, 4, -}; - -static static_codebook _huff_book_line_128x9_2sub1 = { - 1, 9, - _huff_lengthlist_line_128x9_2sub1, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x9_2sub2.vqh b/lib/books/floor/line_128x9_2sub2.vqh deleted file mode 100644 index 8ea35b1d..00000000 --- a/lib/books/floor/line_128x9_2sub2.vqh +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x9_2sub2_VQH_ -#define _V_line_128x9_2sub2_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x9_2sub2[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 3, 4, 3, 5, 3, - 6, 4, 7, 4, 8, 5, 9, 5, 9, -}; - -static static_codebook _huff_book_line_128x9_2sub2 = { - 1, 25, - _huff_lengthlist_line_128x9_2sub2, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x9_2sub3.vqh b/lib/books/floor/line_128x9_2sub3.vqh deleted file mode 100644 index 90280dd6..00000000 --- a/lib/books/floor/line_128x9_2sub3.vqh +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x9_2sub3_VQH_ -#define _V_line_128x9_2sub3_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x9_2sub3[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7, 2, 8, 3, 9, 3, - 9, 4, 8, 4, 9, 4,12, 6,12, 6,11, 8,13, 9,11,12, - 12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, -}; - -static static_codebook _huff_book_line_128x9_2sub3 = { - 1, 64, - _huff_lengthlist_line_128x9_2sub3, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x9_class1.vqh b/lib/books/floor/line_128x9_class1.vqh deleted file mode 100644 index 364e7ba1..00000000 --- a/lib/books/floor/line_128x9_class1.vqh +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x9_class1_VQH_ -#define _V_line_128x9_class1_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x9_class1[] = { - 3, 3, 3,11,14,12,10,16,16, 9,12,16,16,16,16,16, - 5, 2, 2,10,13,11, 8,13,15,11,11,14,16,16,16,16, - 7, 5, 5,10,12,10, 8,14,16,13,13,16,16,16,16,16, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 16,16,15,16,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,14,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,14,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, -}; - -static static_codebook _huff_book_line_128x9_class1 = { - 1, 256, - _huff_lengthlist_line_128x9_class1, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/floor/line_128x9_class2.vqh b/lib/books/floor/line_128x9_class2.vqh deleted file mode 100644 index 010f56a4..00000000 --- a/lib/books/floor/line_128x9_class2.vqh +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by huff/huffbuld - - ********************************************************************/ - -#ifndef _V_line_128x9_class2_VQH_ -#define _V_line_128x9_class2_VQH_ -#include "codebook.h" - -static long _huff_lengthlist_line_128x9_class2[] = { - 7, 6, 8,10, 8, 5, 6, 8,11, 8, 8,10,17,17,14,16, - 8, 5, 6, 9, 7, 4, 5, 8, 9, 6, 7, 9,14,12,13,16, - 11, 8, 7,10, 9, 6, 7,10,11, 8, 8,11,16,13,12,16, - 16,16,14,16,15,14,12,15,16,16,14,16,16,16,16,16, - 10, 7, 9,10, 7, 5, 6, 7,10, 7, 7, 8,15,12,12,13, - 9, 6, 7, 9, 6, 3, 4, 6, 8, 5, 5, 7,14,10,10,12, - 11, 9, 9,12, 9, 6, 6, 9, 9, 7, 6,10,14,11, 9,12, - 16,15,15,16,14,13,13,16,14,13,13,15,16,16,16,16, - 13, 9,10,11,10, 7, 7, 8,11, 8, 8, 7,14,13,13,12, - 11, 8, 9,10, 9, 6, 6, 8, 9, 6, 6, 6,12,11, 9, 9, - 12,10,11,13,10, 7, 8,10,10, 7, 7, 8,14,11, 8, 9, - 16,15,16,16,14,14,14,16,16,15,14,12,16,16,16,16, - 16,14,16,16,16,14,14,15,16,14,15,13,16,16,16,16, - 16,15,14,16,16,12,12,14,14,12,12,14,16,16,16,16, - 16,16,16,16,16,13,16,14,16,14,14,13,15,16,14,16, - 16,16,16,16,16,16,16,15,16,16,16,14,16,16,16,16, -}; - -static static_codebook _huff_book_line_128x9_class2 = { - 1, 256, - _huff_lengthlist_line_128x9_class2, - 0, 0, 0, 0, 0, - NULL, - NULL, - NULL, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/.cvsignore b/lib/books/uncoupled/.cvsignore deleted file mode 100644 index 282522db..00000000 --- a/lib/books/uncoupled/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/lib/books/uncoupled/Makefile.am b/lib/books/uncoupled/Makefile.am deleted file mode 100644 index 9167d25d..00000000 --- a/lib/books/uncoupled/Makefile.am +++ /dev/null @@ -1,20 +0,0 @@ -## Process this file with automake to produce Makefile.in - -AUTOMAKE_OPTIONS = foreign - -EXTRA_DIST = _44u0_p0_r0.vqh _44u0_p0_r1.vqh _44u0_p1_0.vqh\ - _44u0_p1_r0.vqh _44u0_p1_r1.vqh _44u0_p2_0.vqh _44u0_p3_0.vqh\ - _44u0_p4_0.vqh _44u0_p4_1.vqh _44u0_p5_0.vqh\ - _44u0_p6_0.vqh _44u0_p7_0.vqh _44u0_p7_1.vqh\ - _44u0_p7_2.vqh _44u4_p0_r0.vqh _44u4_p0_r1.vqh\ - _44u4_p1_0.vqh _44u4_p1_r0.vqh _44u4_p1_r1.vqh\ - _44u4_p2_0.vqh _44u4_p3_0.vqh _44u4_p4_0.vqh\ - _44u4_p5_0.vqh _44u4_p6_0.vqh _44u4_p7_0.vqh\ - _44u4_p7_1.vqh _44u4_p8_0.vqh _44u4_p8_1.vqh\ - _44u4_p9_0.vqh _44u4_p9_1.vqh _44u4_p9_2.vqh\ - _44u7_p0_r0.vqh _44u7_p0_r1.vqh _44u7_p1_0.vqh\ - _44u7_p1_r0.vqh _44u7_p1_r1.vqh _44u7_p2_0.vqh\ - _44u7_p2_1.vqh _44u7_p3_0.vqh _44u7_p4_0.vqh\ - _44u7_p5_0.vqh _44u7_p6_0.vqh _44u7_p7_0.vqh\ - _44u7_p7_1.vqh _44u7_p8_0.vqh _44u7_p8_1.vqh\ - _44u7_p9_0.vqh _44u7_p9_1.vqh _44u7_p9_2.vqh diff --git a/lib/books/uncoupled/_44u0_p0_r0.vqh b/lib/books/uncoupled/_44u0_p0_r0.vqh deleted file mode 100644 index 6164e0c7..00000000 --- a/lib/books/uncoupled/_44u0_p0_r0.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u0_p0_r0_VQH_ -#define _V__44u0_p0_r0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u0_p0_r0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u0_p0_r0[] = { - 1, 3, 3, 4, 5, 5, 4, 5, 5, -}; - -static float _vq_quantthresh__44u0_p0_r0[] = { - -0.16667, 0.16667, -}; - -static long _vq_quantmap__44u0_p0_r0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u0_p0_r0 = { - _vq_quantthresh__44u0_p0_r0, - _vq_quantmap__44u0_p0_r0, - 3, - 3 -}; - -static static_codebook _44u0_p0_r0 = { - 2, 9, - _vq_lengthlist__44u0_p0_r0, - 1, -539667115, 1607816533, 2, 0, - _vq_quantlist__44u0_p0_r0, - NULL, - &_vq_auxt__44u0_p0_r0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u0_p0_r1.vqh b/lib/books/uncoupled/_44u0_p0_r1.vqh deleted file mode 100644 index c3bc9065..00000000 --- a/lib/books/uncoupled/_44u0_p0_r1.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u0_p0_r1_VQH_ -#define _V__44u0_p0_r1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u0_p0_r1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u0_p0_r1[] = { - 1, 3, 3, 4, 5, 5, 4, 5, 5, -}; - -static float _vq_quantthresh__44u0_p0_r1[] = { - -0.055556, 0.055556, -}; - -static long _vq_quantmap__44u0_p0_r1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u0_p0_r1 = { - _vq_quantthresh__44u0_p0_r1, - _vq_quantmap__44u0_p0_r1, - 3, - 3 -}; - -static static_codebook _44u0_p0_r1 = { - 2, 9, - _vq_lengthlist__44u0_p0_r1, - 1, -543395385, 1604088263, 2, 0, - _vq_quantlist__44u0_p0_r1, - NULL, - &_vq_auxt__44u0_p0_r1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u0_p1_0.vqh b/lib/books/uncoupled/_44u0_p1_0.vqh deleted file mode 100644 index 1e2634bc..00000000 --- a/lib/books/uncoupled/_44u0_p1_0.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u0_p1_0_VQH_ -#define _V__44u0_p1_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u0_p1_0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u0_p1_0[] = { - 2, 4, 4, 5, 7, 6, 5, 6, 7, 5, 7, 7, 7, 8, 8, 6, - 8, 8, 5, 7, 7, 6, 8, 8, 7, 8, 8, 4, 7, 7, 7, 9, - 8, 7, 8, 8, 7, 9, 8, 8, 9,10, 8,10,10, 6, 8, 8, - 8,10, 8, 8,10,10, 4, 7, 7, 7, 8, 8, 7, 8, 9, 6, - 8, 8, 8,10,10, 8, 8,10, 7, 8, 9, 8,10,10, 8,10, - 9, -}; - -static float _vq_quantthresh__44u0_p1_0[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44u0_p1_0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u0_p1_0 = { - _vq_quantthresh__44u0_p1_0, - _vq_quantmap__44u0_p1_0, - 3, - 3 -}; - -static static_codebook _44u0_p1_0 = { - 4, 81, - _vq_lengthlist__44u0_p1_0, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44u0_p1_0, - NULL, - &_vq_auxt__44u0_p1_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u0_p1_r0.vqh b/lib/books/uncoupled/_44u0_p1_r0.vqh deleted file mode 100644 index 0c4d559c..00000000 --- a/lib/books/uncoupled/_44u0_p1_r0.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u0_p1_r0_VQH_ -#define _V__44u0_p1_r0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u0_p1_r0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u0_p1_r0[] = { - 2, 3, 3, 3, 4, 4, 3, 4, 4, -}; - -static float _vq_quantthresh__44u0_p1_r0[] = { - -0.16667, 0.16667, -}; - -static long _vq_quantmap__44u0_p1_r0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u0_p1_r0 = { - _vq_quantthresh__44u0_p1_r0, - _vq_quantmap__44u0_p1_r0, - 3, - 3 -}; - -static static_codebook _44u0_p1_r0 = { - 2, 9, - _vq_lengthlist__44u0_p1_r0, - 1, -539667115, 1607816533, 2, 0, - _vq_quantlist__44u0_p1_r0, - NULL, - &_vq_auxt__44u0_p1_r0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u0_p1_r1.vqh b/lib/books/uncoupled/_44u0_p1_r1.vqh deleted file mode 100644 index a3d4fb38..00000000 --- a/lib/books/uncoupled/_44u0_p1_r1.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u0_p1_r1_VQH_ -#define _V__44u0_p1_r1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u0_p1_r1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u0_p1_r1[] = { - 2, 3, 3, 3, 4, 4, 3, 4, 4, -}; - -static float _vq_quantthresh__44u0_p1_r1[] = { - -0.055556, 0.055556, -}; - -static long _vq_quantmap__44u0_p1_r1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u0_p1_r1 = { - _vq_quantthresh__44u0_p1_r1, - _vq_quantmap__44u0_p1_r1, - 3, - 3 -}; - -static static_codebook _44u0_p1_r1 = { - 2, 9, - _vq_lengthlist__44u0_p1_r1, - 1, -543395385, 1604088263, 2, 0, - _vq_quantlist__44u0_p1_r1, - NULL, - &_vq_auxt__44u0_p1_r1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u0_p2_0.vqh b/lib/books/uncoupled/_44u0_p2_0.vqh deleted file mode 100644 index cbec1466..00000000 --- a/lib/books/uncoupled/_44u0_p2_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u0_p2_0_VQH_ -#define _V__44u0_p2_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u0_p2_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44u0_p2_0[] = { - 2, 5, 5, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8, - 10, 9,11,11, 8, 9,10,11,12, 5, 7, 7,10,10, 7, 8, - 8,11,10, 7, 8, 8,10,11,10,11,10,12,12, 9,10,10, - 12,12, 6, 7, 7,10,10, 7, 8, 8,11,10, 7, 8, 8,11, - 11, 9,10,10,12,12,10,10,11,12,12, 9,10,10,13,12, - 10,11,11,14,13, 9,11,11,13,13,12,13,13,14,14,12, - 12,13,14,14, 9,10,10,12,13, 9,11,11,13,13,10,11, - 11,13,14,12,12,12,14,14,12,13,13,14,14, 5, 7, 7, - 10,10, 7, 9, 8,11,11, 7, 8, 9,11,11,10,11,11,13, - 13,10,11,11,13,13, 7, 9, 8,11,11, 8, 9,10,11,12, - 8,10,10,12,12,11,12,12,12,14,11,11,12,14,14, 7, - 8, 8,11,11, 8,10, 9,12,11, 8, 9,10,12,12,11,12, - 11,14,12,11,12,12,14,14,10,11,11,14,13,11,11,12, - 14,14,11,12,12,14,14,13,12,14,13,15,13,14,14,15, - 15, 9,11,11,13,14,10,12,11,14,13,10,12,12,14,14, - 12,14,12,15,13,13,14,14,15,16, 5, 7, 7,10,10, 7, - 9, 8,11,11, 7, 8, 9,11,11,10,11,11,13,13,10,11, - 11,13,13, 7, 8, 8,11,11, 8,10, 9,12,12, 8, 9,10, - 11,12,11,12,12,14,14,11,11,12,12,14, 7, 8, 9,11, - 11, 8,10,10,12,12, 8,10, 9,12,11,11,12,12,14,13, - 11,12,11,14,13, 9,11,11,14,13,11,12,12,14,14,10, - 11,11,13,14,13,14,14,16,16,12,12,14,13,15,10,11, - 11,13,14,11,12,12,14,15,11,12,11,14,14,13,14,13, - 15,16,13,14,12,16,13, 8,10,10,13,13,10,11,11,14, - 14,10,11,11,14,13,13,14,14,16,15,12,13,13,15,15, - 9,11,11,14,14,11,12,12,14,14,11,12,12,15,14,13, - 14,14,15,16,13,14,14,15,16, 9,11,11,13,14,10,12, - 11,15,14,11,12,12,14,15,13,14,14,16,15,13,14,14, - 16,16,12,13,13,15,15,12,13,13,15,16,13,14,14,16, - 15,15,13,16,14,18,14,15,16,18,17,11,13,13,15,15, - 12,13,12,16,15,13,14,14,15,17,14,16,13,17,14,15, - 15,16,17,17, 8,10,10,13,13,10,11,11,13,14,10,11, - 11,14,14,12,13,13,15,15,13,14,14,15,16, 9,11,11, - 13,13,11,12,12,15,14,10,11,12,13,15,13,14,14,16, - 16,13,13,14,15,16, 9,11,11,14,14,11,12,12,14,15, - 11,12,12,14,14,13,14,14,15,16,14,15,14,16,15,11, - 13,13,15,15,12,14,14,16,16,12,12,14,15,16,14,15, - 15,17,17,14,13,15,14,17,12,13,13,15,16,13,14,14, - 16,16,12,14,13,16,15,14,16,15,17,17,14,15,13,17, - 14, -}; - -static float _vq_quantthresh__44u0_p2_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44u0_p2_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44u0_p2_0 = { - _vq_quantthresh__44u0_p2_0, - _vq_quantmap__44u0_p2_0, - 5, - 5 -}; - -static static_codebook _44u0_p2_0 = { - 4, 625, - _vq_lengthlist__44u0_p2_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44u0_p2_0, - NULL, - &_vq_auxt__44u0_p2_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u0_p3_0.vqh b/lib/books/uncoupled/_44u0_p3_0.vqh deleted file mode 100644 index c19483eb..00000000 --- a/lib/books/uncoupled/_44u0_p3_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u0_p3_0_VQH_ -#define _V__44u0_p3_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u0_p3_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44u0_p3_0[] = { - 1, 4, 4, 7, 7, 8, 8, 9, 9, 4, 6, 5, 8, 8, 9, 8, - 10,10, 4, 5, 6, 7, 8, 8, 9,10,10, 7, 8, 7, 9, 9, - 10, 9,11,11, 7, 7, 8, 9, 9, 9,10,11,11, 8, 9, 8, - 10,10,11,11,12,12, 8, 8, 9, 9,10,10,11,12,12, 9, - 10,10,11,11,12,12,13,13, 9,10,10,11,11,12,12,13, - 13, -}; - -static float _vq_quantthresh__44u0_p3_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44u0_p3_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44u0_p3_0 = { - _vq_quantthresh__44u0_p3_0, - _vq_quantmap__44u0_p3_0, - 9, - 9 -}; - -static static_codebook _44u0_p3_0 = { - 2, 81, - _vq_lengthlist__44u0_p3_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44u0_p3_0, - NULL, - &_vq_auxt__44u0_p3_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u0_p4_0.vqh b/lib/books/uncoupled/_44u0_p4_0.vqh deleted file mode 100644 index 726acc9b..00000000 --- a/lib/books/uncoupled/_44u0_p4_0.vqh +++ /dev/null @@ -1,100 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u0_p4_0_VQH_ -#define _V__44u0_p4_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u0_p4_0[] = { - 9, - 8, - 10, - 7, - 11, - 6, - 12, - 5, - 13, - 4, - 14, - 3, - 15, - 2, - 16, - 1, - 17, - 0, - 18, -}; - -static long _vq_lengthlist__44u0_p4_0[] = { - 1, 4, 4, 6, 6, 8, 8, 9, 9,10,10,11,11,12,12,12, - 13,13,13, 4, 6, 6, 7, 7, 9, 9,10,10,11,11,12,11, - 12,12,13,13,14,13, 5, 6, 6, 7, 7, 9, 9, 9,10,10, - 11,11,12,12,12,13,13,13,14, 6, 8, 7, 9, 9,10,10, - 10,10,11,11,12,12,13,13,14,14,14,14, 7, 7, 8, 9, - 9,10,10,10,11,11,11,12,12,13,13,13,14,14,14, 8, - 9, 9,10,10,11,10,11,11,12,12,13,13,14,14,14,14, - 15,15, 8, 9, 9,10,10,10,11,11,11,12,12,13,13,14, - 14,14,14,14,15, 9,10,10,11,11,12,11,12,12,13,13, - 14,14,14,14,15,15,15,15, 9,10,10,11,11,11,12,12, - 12,13,13,14,14,14,14,15,15,15,15,10,11,11,12,12, - 13,13,13,13,14,14,14,14,15,15,15,15,15,15,10,11, - 11,12,12,13,12,13,13,14,14,14,14,15,15,15,15,15, - 15,12,12,12,13,13,13,13,14,14,15,14,15,15,15,15, - 15,15,16,16,12,12,12,13,13,13,13,14,14,14,14,15, - 15,15,15,15,15,15,15,12,13,13,13,13,14,14,14,14, - 14,15,15,15,15,15,15,15,15,15,12,13,13,13,13,14, - 14,14,14,14,14,15,15,15,15,15,15,15,15,13,13,13, - 14,14,14,14,14,14,15,15,15,15,15,15,15,16,16,16, - 13,13,14,14,14,14,14,15,14,15,15,15,15,15,15,15, - 16,15,15,13,14,14,14,14,15,15,15,15,15,15,15,16, - 16,15,16,16,16,16,14,14,14,14,14,14,15,15,15,15, - 15,15,16,15,16,16,16,16,16, -}; - -static float _vq_quantthresh__44u0_p4_0[] = { - -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, -7.5, -4.5, - -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, 16.5, 19.5, - 22.5, 25.5, -}; - -static long _vq_quantmap__44u0_p4_0[] = { - 17, 15, 13, 11, 9, 7, 5, 3, - 1, 0, 2, 4, 6, 8, 10, 12, - 14, 16, 18, -}; - -static encode_aux_threshmatch _vq_auxt__44u0_p4_0 = { - _vq_quantthresh__44u0_p4_0, - _vq_quantmap__44u0_p4_0, - 19, - 19 -}; - -static static_codebook _44u0_p4_0 = { - 2, 361, - _vq_lengthlist__44u0_p4_0, - 1, -526712832, 1614282752, 5, 0, - _vq_quantlist__44u0_p4_0, - NULL, - &_vq_auxt__44u0_p4_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u0_p4_1.vqh b/lib/books/uncoupled/_44u0_p4_1.vqh deleted file mode 100644 index 36392aff..00000000 --- a/lib/books/uncoupled/_44u0_p4_1.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u0_p4_1_VQH_ -#define _V__44u0_p4_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u0_p4_1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u0_p4_1[] = { - 2, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, - 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 8, 6, 7, 7, - 7, 8, 8, 7, 8, 8, 5, 7, 7, 7, 7, 7, 7, 7, 7, 6, - 7, 7, 7, 8, 8, 7, 7, 8, 6, 7, 7, 7, 8, 8, 7, 8, - 8, -}; - -static float _vq_quantthresh__44u0_p4_1[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44u0_p4_1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u0_p4_1 = { - _vq_quantthresh__44u0_p4_1, - _vq_quantmap__44u0_p4_1, - 3, - 3 -}; - -static static_codebook _44u0_p4_1 = { - 4, 81, - _vq_lengthlist__44u0_p4_1, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44u0_p4_1, - NULL, - &_vq_auxt__44u0_p4_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u0_p5_0.vqh b/lib/books/uncoupled/_44u0_p5_0.vqh deleted file mode 100644 index d7ba6249..00000000 --- a/lib/books/uncoupled/_44u0_p5_0.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u0_p5_0_VQH_ -#define _V__44u0_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u0_p5_0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u0_p5_0[] = { - 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 9, 9, 7, - 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 9, 5, 7, 7, 8,10, - 9, 7, 9, 9, 7,10, 9, 9,10,11, 9,11,11, 7, 9, 9, - 9,11, 9, 9,11,11, 5, 7, 7, 7, 9, 9, 8, 9,10, 7, - 9, 9, 9,11,11, 9, 9,11, 7, 9,10, 9,11,11, 9,11, - 10, -}; - -static float _vq_quantthresh__44u0_p5_0[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44u0_p5_0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u0_p5_0 = { - _vq_quantthresh__44u0_p5_0, - _vq_quantmap__44u0_p5_0, - 3, - 3 -}; - -static static_codebook _44u0_p5_0 = { - 4, 81, - _vq_lengthlist__44u0_p5_0, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44u0_p5_0, - NULL, - &_vq_auxt__44u0_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u0_p6_0.vqh b/lib/books/uncoupled/_44u0_p6_0.vqh deleted file mode 100644 index d1809ca0..00000000 --- a/lib/books/uncoupled/_44u0_p6_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u0_p6_0_VQH_ -#define _V__44u0_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u0_p6_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44u0_p6_0[] = { - 1, 4, 4, 7, 7, 9,10,12,12, 4, 5, 5, 7, 7,10,10, - 13,12, 4, 5, 5, 7, 7,10,10,12,13, 7, 7, 7, 8, 9, - 11,11,13,13, 7, 7, 7, 9, 9,11,11,13,13,10,10,10, - 11,11,12,13,14,14,10,10,10,11,11,12,12,14,14,12, - 13,12,13,13,14,14,15,15,12,12,13,13,13,14,14,15, - 15, -}; - -static float _vq_quantthresh__44u0_p6_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44u0_p6_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44u0_p6_0 = { - _vq_quantthresh__44u0_p6_0, - _vq_quantmap__44u0_p6_0, - 9, - 9 -}; - -static static_codebook _44u0_p6_0 = { - 2, 81, - _vq_lengthlist__44u0_p6_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44u0_p6_0, - NULL, - &_vq_auxt__44u0_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u0_p7_0.vqh b/lib/books/uncoupled/_44u0_p7_0.vqh deleted file mode 100644 index 3960cc1b..00000000 --- a/lib/books/uncoupled/_44u0_p7_0.vqh +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u0_p7_0_VQH_ -#define _V__44u0_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u0_p7_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44u0_p7_0[] = { - 1, 3, 3, 7, 6, 3, 7, 7, 9,11, 4, 7, 7,11, 9,10, - 12,12,16,15,10,12,13,14,16, -}; - -static float _vq_quantthresh__44u0_p7_0[] = { - -100.5, -33.5, 33.5, 100.5, -}; - -static long _vq_quantmap__44u0_p7_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44u0_p7_0 = { - _vq_quantthresh__44u0_p7_0, - _vq_quantmap__44u0_p7_0, - 5, - 5 -}; - -static static_codebook _44u0_p7_0 = { - 2, 25, - _vq_lengthlist__44u0_p7_0, - 1, -521093120, 1624293376, 3, 0, - _vq_quantlist__44u0_p7_0, - NULL, - &_vq_auxt__44u0_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u0_p7_1.vqh b/lib/books/uncoupled/_44u0_p7_1.vqh deleted file mode 100644 index 3bbfd603..00000000 --- a/lib/books/uncoupled/_44u0_p7_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u0_p7_1_VQH_ -#define _V__44u0_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u0_p7_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44u0_p7_1[] = { - 1, 4, 5, 7, 7, 8, 8, 9, 9,10,10,10,10,11,11,11, - 11,11,11,10,10,11,11, 5, 6, 6, 8, 7, 9, 9, 9, 9, - 10,10,11,11,11,11,11,11,11,11,11,11,11,11, 5, 6, - 6, 7, 7, 9, 9, 9, 9,10,10,11,11,11,11,11,11,12, - 11,10,11,11,11, 7, 8, 8, 8, 8, 9, 9,10,10,11,10, - 11,11,12,11,12,12,12,12,11,11,12,12, 7, 8, 8, 8, - 8, 9, 9,10,10,11,11,11,11,11,12,12,12,12,12,11, - 11,12,12, 9, 9, 9,10, 9,10,10,11,10,11,11,11,11, - 12,12,12,12,12,12,11,12,12,12, 9, 9, 9, 9, 9,10, - 10,10,10,11,11,11,12,12,12,12,12,12,12,11,12,12, - 12,10,10,10,11,10,11,11,11,11,12,12,12,12,12,12, - 13,12,12,12,12,12,12,12,10,10,10,10,10,11,11,11, - 11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,10, - 11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,12, - 13,13,12,12,13,13,11,11,11,11,11,11,12,12,12,12, - 12,13,12,13,13,13,13,13,13,12,12,13,13,11,11,11, - 12,12,12,12,12,12,13,12,13,13,13,13,13,13,13,13, - 12,12,13,13,11,11,11,12,12,12,12,12,12,12,13,13, - 13,13,13,13,13,13,13,12,12,13,13,12,12,12,12,12, - 12,12,13,13,13,13,13,13,13,13,13,13,13,13,12,12, - 13,13,12,12,12,12,12,12,12,13,13,12,13,13,13,13, - 13,13,13,13,13,12,12,13,13,12,12,12,12,12,13,13, - 13,13,13,13,13,13,13,13,14,13,13,13,12,12,13,13, - 12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,12,12,13,13,12,12,12,12,13,13,13,13,13, - 13,13,13,13,13,13,14,13,13,13,13,13,13,13,12,12, - 12,12,13,13,13,13,13,13,13,13,13,13,14,13,13,13, - 13,13,13,13,13,11,11,11,12,12,12,12,12,12,12,12, - 12,12,13,12,13,13,13,13,13,13,13,14,11,11,11,12, - 12,12,12,12,12,12,12,13,13,13,12,13,13,13,13,13, - 13,13,13,12,12,12,12,12,12,13,13,13,13,13,13,13, - 13,13,13,14,14,14,14,13,14,14,12,12,12,12,12,13, - 13,13,13,13,13,13,13,13,13,13,13,14,13,13,14,14, - 14, -}; - -static float _vq_quantthresh__44u0_p7_1[] = { - -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5, - -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5, - 16.5, 19.5, 22.5, 25.5, 28.5, 31.5, -}; - -static long _vq_quantmap__44u0_p7_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44u0_p7_1 = { - _vq_quantthresh__44u0_p7_1, - _vq_quantmap__44u0_p7_1, - 23, - 23 -}; - -static static_codebook _44u0_p7_1 = { - 2, 529, - _vq_lengthlist__44u0_p7_1, - 1, -525303808, 1614282752, 5, 0, - _vq_quantlist__44u0_p7_1, - NULL, - &_vq_auxt__44u0_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u0_p7_2.vqh b/lib/books/uncoupled/_44u0_p7_2.vqh deleted file mode 100644 index 239a4832..00000000 --- a/lib/books/uncoupled/_44u0_p7_2.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u0_p7_2_VQH_ -#define _V__44u0_p7_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u0_p7_2[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u0_p7_2[] = { - 3, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 6, - 7, 7, 6, 6, 6, 6, 7, 7, 6, 7, 7, 6, 6, 6, 7, 7, - 7, 6, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, - 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 7, 7, 7, 7, 7, 6, - 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44u0_p7_2[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44u0_p7_2[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u0_p7_2 = { - _vq_quantthresh__44u0_p7_2, - _vq_quantmap__44u0_p7_2, - 3, - 3 -}; - -static static_codebook _44u0_p7_2 = { - 4, 81, - _vq_lengthlist__44u0_p7_2, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44u0_p7_2, - NULL, - &_vq_auxt__44u0_p7_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p0_r0.vqh b/lib/books/uncoupled/_44u4_p0_r0.vqh deleted file mode 100644 index 8031c4e0..00000000 --- a/lib/books/uncoupled/_44u4_p0_r0.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p0_r0_VQH_ -#define _V__44u4_p0_r0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p0_r0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u4_p0_r0[] = { - 1, 3, 3, 4, 5, 5, 4, 5, 5, -}; - -static float _vq_quantthresh__44u4_p0_r0[] = { - -0.16667, 0.16667, -}; - -static long _vq_quantmap__44u4_p0_r0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p0_r0 = { - _vq_quantthresh__44u4_p0_r0, - _vq_quantmap__44u4_p0_r0, - 3, - 3 -}; - -static static_codebook _44u4_p0_r0 = { - 2, 9, - _vq_lengthlist__44u4_p0_r0, - 1, -539667115, 1607816533, 2, 0, - _vq_quantlist__44u4_p0_r0, - NULL, - &_vq_auxt__44u4_p0_r0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p0_r1.vqh b/lib/books/uncoupled/_44u4_p0_r1.vqh deleted file mode 100644 index 76c631ea..00000000 --- a/lib/books/uncoupled/_44u4_p0_r1.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p0_r1_VQH_ -#define _V__44u4_p0_r1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p0_r1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u4_p0_r1[] = { - 1, 3, 3, 4, 5, 5, 4, 5, 5, -}; - -static float _vq_quantthresh__44u4_p0_r1[] = { - -0.055556, 0.055556, -}; - -static long _vq_quantmap__44u4_p0_r1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p0_r1 = { - _vq_quantthresh__44u4_p0_r1, - _vq_quantmap__44u4_p0_r1, - 3, - 3 -}; - -static static_codebook _44u4_p0_r1 = { - 2, 9, - _vq_lengthlist__44u4_p0_r1, - 1, -543395385, 1604088263, 2, 0, - _vq_quantlist__44u4_p0_r1, - NULL, - &_vq_auxt__44u4_p0_r1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p1_0.vqh b/lib/books/uncoupled/_44u4_p1_0.vqh deleted file mode 100644 index 60967b73..00000000 --- a/lib/books/uncoupled/_44u4_p1_0.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p1_0_VQH_ -#define _V__44u4_p1_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p1_0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u4_p1_0[] = { - 2, 5, 5, 5, 7, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6, - 7, 8, 5, 6, 6, 6, 8, 7, 7, 8, 8, 5, 6, 6, 7, 8, - 8, 7, 8, 8, 7, 8, 8, 8, 9,10, 8, 9, 9, 6, 8, 8, - 7, 9, 8, 8, 9,10, 5, 6, 6, 6, 8, 8, 6, 8, 8, 6, - 8, 8, 8,10, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8,10, - 9, -}; - -static float _vq_quantthresh__44u4_p1_0[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44u4_p1_0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p1_0 = { - _vq_quantthresh__44u4_p1_0, - _vq_quantmap__44u4_p1_0, - 3, - 3 -}; - -static static_codebook _44u4_p1_0 = { - 4, 81, - _vq_lengthlist__44u4_p1_0, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44u4_p1_0, - NULL, - &_vq_auxt__44u4_p1_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p1_r0.vqh b/lib/books/uncoupled/_44u4_p1_r0.vqh deleted file mode 100644 index 7a5e6175..00000000 --- a/lib/books/uncoupled/_44u4_p1_r0.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p1_r0_VQH_ -#define _V__44u4_p1_r0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p1_r0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u4_p1_r0[] = { - 3, 3, 3, 3, 4, 3, 3, 3, 4, -}; - -static float _vq_quantthresh__44u4_p1_r0[] = { - -0.16667, 0.16667, -}; - -static long _vq_quantmap__44u4_p1_r0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p1_r0 = { - _vq_quantthresh__44u4_p1_r0, - _vq_quantmap__44u4_p1_r0, - 3, - 3 -}; - -static static_codebook _44u4_p1_r0 = { - 2, 9, - _vq_lengthlist__44u4_p1_r0, - 1, -539667115, 1607816533, 2, 0, - _vq_quantlist__44u4_p1_r0, - NULL, - &_vq_auxt__44u4_p1_r0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p1_r1.vqh b/lib/books/uncoupled/_44u4_p1_r1.vqh deleted file mode 100644 index 8c2e907e..00000000 --- a/lib/books/uncoupled/_44u4_p1_r1.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p1_r1_VQH_ -#define _V__44u4_p1_r1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p1_r1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u4_p1_r1[] = { - 2, 3, 3, 3, 4, 4, 3, 4, 4, -}; - -static float _vq_quantthresh__44u4_p1_r1[] = { - -0.055556, 0.055556, -}; - -static long _vq_quantmap__44u4_p1_r1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p1_r1 = { - _vq_quantthresh__44u4_p1_r1, - _vq_quantmap__44u4_p1_r1, - 3, - 3 -}; - -static static_codebook _44u4_p1_r1 = { - 2, 9, - _vq_lengthlist__44u4_p1_r1, - 1, -543395385, 1604088263, 2, 0, - _vq_quantlist__44u4_p1_r1, - NULL, - &_vq_auxt__44u4_p1_r1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p2_0.vqh b/lib/books/uncoupled/_44u4_p2_0.vqh deleted file mode 100644 index 8e8eb145..00000000 --- a/lib/books/uncoupled/_44u4_p2_0.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p2_0_VQH_ -#define _V__44u4_p2_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p2_0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u4_p2_0[] = { - 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 8, 9, 9, 7, - 9, 9, 5, 7, 7, 7, 9, 9, 8, 9, 9, 5, 7, 7, 8, 9, - 9, 7, 9, 9, 7, 9, 9, 9,10,11, 9,11,11, 7, 9, 9, - 9,11, 9, 9,11,11, 5, 7, 7, 7, 9, 9, 7, 9, 9, 7, - 9, 9, 9,11,11, 9, 9,11, 7, 9, 9, 9,11,11, 9,11, - 10, -}; - -static float _vq_quantthresh__44u4_p2_0[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44u4_p2_0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p2_0 = { - _vq_quantthresh__44u4_p2_0, - _vq_quantmap__44u4_p2_0, - 3, - 3 -}; - -static static_codebook _44u4_p2_0 = { - 4, 81, - _vq_lengthlist__44u4_p2_0, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44u4_p2_0, - NULL, - &_vq_auxt__44u4_p2_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p3_0.vqh b/lib/books/uncoupled/_44u4_p3_0.vqh deleted file mode 100644 index ae5f987c..00000000 --- a/lib/books/uncoupled/_44u4_p3_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p3_0_VQH_ -#define _V__44u4_p3_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p3_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44u4_p3_0[] = { - 3, 5, 5, 8, 8, 6, 7, 7, 9, 9, 5, 7, 7, 9, 9, 9, - 9, 9,11,11, 9, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8, - 8,10,10, 7, 8, 8,10,10,10,10,10,11,12, 9,10,10, - 11,12, 5, 7, 7, 9, 9, 7, 8, 8,10,10, 7, 8, 8,10, - 10, 9,10,10,12,11, 9,10,10,12,12, 8,10,10,12,12, - 10,10,10,13,12, 9,10,10,12,12,12,12,12,13,14,11, - 11,12,13,14, 9,10,10,12,12, 9,10,10,12,12,10,10, - 10,12,12,11,12,11,14,13,12,12,12,14,13, 5, 7, 7, - 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12, - 12, 9,10,10,12,12, 7, 8, 8,10,10, 8, 9, 9,11,11, - 8, 9, 9,11,11,10,11,11,12,13,10,11,11,12,13, 7, - 8, 8,10,10, 8, 9, 8,11,10, 8, 9, 9,11,11,10,11, - 10,13,11,10,11,11,13,13, 9,11,10,13,12,10,11,11, - 13,13,10,11,11,13,13,12,12,13,12,15,12,13,13,14, - 14, 9,10,10,12,12,10,11,10,13,12,10,11,11,13,13, - 12,13,11,14,12,12,13,13,14,15, 5, 7, 7, 9, 9, 7, - 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12,10,10, - 11,12,12, 7, 8, 8,10,10, 8, 9, 9,11,11, 8, 8, 9, - 10,11,10,11,11,13,13,10,10,11,11,13, 7, 8, 8,10, - 10, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,11,13,12, - 10,11,11,13,12, 9,10,10,12,12,10,11,11,13,13,10, - 10,11,12,13,12,13,13,15,14,12,11,13,12,14, 9,10, - 10,12,13,10,11,11,13,13,10,11,11,13,13,12,13,13, - 14,14,12,13,12,14,12, 8, 9, 9,12,12, 9,11,10,13, - 13, 9,10,10,12,12,12,13,13,14,14,12,12,12,14,13, - 9,10,10,13,12,10,11,11,13,13,10,11,11,13,13,13, - 13,13,14,15,12,13,13,14,14, 9,10,10,12,13,10,11, - 10,13,12,10,11,11,12,13,12,13,12,15,14,12,13,13, - 14,15,11,12,12,14,14,12,12,13,14,15,12,13,13,15, - 14,13,13,14,12,16,14,14,14,16,15,11,12,12,14,14, - 11,12,12,14,14,12,13,13,14,15,13,14,12,16,13,14, - 14,15,15,16, 8, 9, 9,12,12, 9,10,10,13,12, 9,10, - 10,12,13,12,12,12,14,14,12,12,13,14,14, 9,10,10, - 12,12,10,11,11,13,13,10,10,11,12,13,12,13,13,15, - 14,12,12,13,13,15, 9,10,10,12,13,10,11,11,13,13, - 10,11,11,13,13,12,13,13,14,14,13,13,13,14,14,11, - 12,12,14,14,12,13,13,15,14,11,12,12,13,14,14,15, - 14,16,15,13,12,14,13,15,12,12,12,14,14,12,13,13, - 14,15,12,13,12,15,14,14,14,14,16,16,14,14,12,16, - 12, -}; - -static float _vq_quantthresh__44u4_p3_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44u4_p3_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p3_0 = { - _vq_quantthresh__44u4_p3_0, - _vq_quantmap__44u4_p3_0, - 5, - 5 -}; - -static static_codebook _44u4_p3_0 = { - 4, 625, - _vq_lengthlist__44u4_p3_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44u4_p3_0, - NULL, - &_vq_auxt__44u4_p3_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p4_0.vqh b/lib/books/uncoupled/_44u4_p4_0.vqh deleted file mode 100644 index 950a8169..00000000 --- a/lib/books/uncoupled/_44u4_p4_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p4_0_VQH_ -#define _V__44u4_p4_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p4_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44u4_p4_0[] = { - 3, 5, 5, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8, - 10, 9,12,11, 8, 9, 9,11,12, 5, 7, 7, 9, 9, 7, 8, - 8,10,10, 7, 8, 8,10,10,10,10,10,12,12, 9,10,10, - 11,13, 5, 7, 7, 9, 9, 7, 8, 8,10,10, 7, 8, 8,10, - 10, 9,10,10,12,11,10,10,10,12,12, 9,10,10,12,12, - 10,11,10,13,12, 9,10,10,12,12,12,12,12,13,14,11, - 12,12,13,14, 8, 9,10,12,12, 9,10,10,12,12,10,10, - 10,12,13,11,12,12,14,13,12,13,12,14,14, 5, 7, 7, - 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,10,13, - 12,10,10,10,12,12, 7, 8, 8,11,10, 8, 9, 9,11,11, - 8, 9, 9,11,11,11,11,11,12,13,10,11,11,13,13, 7, - 8, 8,10,10, 8, 9, 8,11,10, 8, 9, 9,11,11,10,11, - 10,13,12,10,11,11,13,13,10,11,10,13,12,10,11,11, - 13,13,10,11,11,13,13,12,12,13,12,15,12,13,13,14, - 15, 9,10,10,12,13,10,11,10,13,12,10,11,11,13,13, - 12,13,11,15,12,12,13,13,15,15, 5, 7, 7, 9, 9, 7, - 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12,10,10, - 11,12,13, 7, 8, 8,10,10, 8, 9, 9,11,11, 8, 8, 9, - 10,11,10,11,11,13,13,10,10,11,12,13, 7, 8, 8,10, - 11, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,11,13,13, - 10,11,11,13,12, 9,10,10,13,12,10,11,11,14,13,10, - 10,11,12,13,13,13,13,15,15,12,11,13,12,15,10,10, - 11,12,13,10,11,11,13,13,10,11,11,13,13,12,13,13, - 14,14,12,13,12,15,12, 8,10,10,12,12,10,11,10,13, - 13, 9,10,10,13,13,12,13,13,15,14,12,12,12,14,14, - 9,10,10,13,13,10,11,11,13,13,10,11,11,14,13,13, - 13,14,14,15,12,13,13,15,14, 9,10,10,12,13,10,11, - 10,13,12,10,11,11,13,13,12,13,12,15,14,13,13,13, - 14,15,12,12,12,15,14,12,12,13,14,15,12,13,13,15, - 15,14,13,15,13,16,14,15,15,17,16,11,12,12,14,14, - 11,13,12,15,14,12,13,13,14,15,13,15,12,16,13,14, - 15,15,16,16, 8, 9,10,12,12, 9,10,10,13,13,10,10, - 11,13,13,12,13,12,14,14,12,13,13,14,15, 9,10,10, - 13,12,10,11,11,14,13,10,10,11,13,13,13,13,13,15, - 14,12,12,13,14,15, 9,10,11,13,13,10,11,11,13,14, - 10,11,11,13,13,13,13,13,14,15,13,13,13,15,14,11, - 12,12,14,14,12,13,13,15,14,11,12,13,14,15,14,15, - 15,17,16,13,12,15,13,16,12,12,12,14,14,12,13,13, - 14,15,12,13,12,15,14,14,15,15,16,17,14,15,12,17, - 13, -}; - -static float _vq_quantthresh__44u4_p4_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44u4_p4_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p4_0 = { - _vq_quantthresh__44u4_p4_0, - _vq_quantmap__44u4_p4_0, - 5, - 5 -}; - -static static_codebook _44u4_p4_0 = { - 4, 625, - _vq_lengthlist__44u4_p4_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44u4_p4_0, - NULL, - &_vq_auxt__44u4_p4_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p5_0.vqh b/lib/books/uncoupled/_44u4_p5_0.vqh deleted file mode 100644 index 7c16a356..00000000 --- a/lib/books/uncoupled/_44u4_p5_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p5_0_VQH_ -#define _V__44u4_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p5_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44u4_p5_0[] = { - 2, 4, 4, 6, 6, 7, 7, 9, 9, 4, 5, 5, 6, 6, 8, 7, - 9, 9, 4, 5, 5, 6, 6, 7, 7, 9, 9, 6, 6, 6, 7, 7, - 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 8, 7, - 8, 8,10, 9,11,11, 7, 7, 8, 8, 8, 9, 9,11,11, 9, - 9, 9,10,10,11,11,12,12, 9, 9, 9,10,10,11,11,12, - 12, -}; - -static float _vq_quantthresh__44u4_p5_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44u4_p5_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p5_0 = { - _vq_quantthresh__44u4_p5_0, - _vq_quantmap__44u4_p5_0, - 9, - 9 -}; - -static static_codebook _44u4_p5_0 = { - 2, 81, - _vq_lengthlist__44u4_p5_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44u4_p5_0, - NULL, - &_vq_auxt__44u4_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p6_0.vqh b/lib/books/uncoupled/_44u4_p6_0.vqh deleted file mode 100644 index 3496f237..00000000 --- a/lib/books/uncoupled/_44u4_p6_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p6_0_VQH_ -#define _V__44u4_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p6_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44u4_p6_0[] = { - 2, 4, 4, 6, 6, 7, 7, 9, 9, 4, 5, 5, 6, 6, 7, 7, - 10, 9, 4, 5, 5, 6, 6, 7, 7, 9,10, 6, 6, 6, 7, 7, - 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 8, 7, - 8, 8, 9, 9,11,11, 7, 7, 8, 8, 8, 9, 9,11,11, 9, - 10,10,10,10,11,11,12,12, 9, 9,10,10,10,11,11,12, - 12, -}; - -static float _vq_quantthresh__44u4_p6_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44u4_p6_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p6_0 = { - _vq_quantthresh__44u4_p6_0, - _vq_quantmap__44u4_p6_0, - 9, - 9 -}; - -static static_codebook _44u4_p6_0 = { - 2, 81, - _vq_lengthlist__44u4_p6_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44u4_p6_0, - NULL, - &_vq_auxt__44u4_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p7_0.vqh b/lib/books/uncoupled/_44u4_p7_0.vqh deleted file mode 100644 index 9bfca63e..00000000 --- a/lib/books/uncoupled/_44u4_p7_0.vqh +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p7_0_VQH_ -#define _V__44u4_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p7_0[] = { - 5, - 4, - 6, - 3, - 7, - 2, - 8, - 1, - 9, - 0, - 10, -}; - -static long _vq_lengthlist__44u4_p7_0[] = { - 1, 4, 4, 6, 6, 8, 8,10,10,11,11, 4, 6, 6, 7, 7, - 9, 9,11,10,12,12, 4, 6, 6, 7, 7, 9, 9,10,11,12, - 12, 6, 8, 7, 9, 9,10,10,12,11,12,12, 6, 7, 8, 9, - 9,10,10,11,12,12,12, 8, 9, 9,10,10,11,11,12,12, - 13,13, 8, 9, 9,10,10,11,11,12,12,13,13,10,11,11, - 12,11,12,12,13,13,14,14,10,11,11,11,12,12,12,13, - 13,14,14,11,12,12,13,12,13,13,14,14,14,14,11,12, - 12,12,13,13,13,14,14,14,14, -}; - -static float _vq_quantthresh__44u4_p7_0[] = { - -13.5, -10.5, -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, - 10.5, 13.5, -}; - -static long _vq_quantmap__44u4_p7_0[] = { - 9, 7, 5, 3, 1, 0, 2, 4, - 6, 8, 10, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p7_0 = { - _vq_quantthresh__44u4_p7_0, - _vq_quantmap__44u4_p7_0, - 11, - 11 -}; - -static static_codebook _44u4_p7_0 = { - 2, 121, - _vq_lengthlist__44u4_p7_0, - 1, -528613376, 1614282752, 4, 0, - _vq_quantlist__44u4_p7_0, - NULL, - &_vq_auxt__44u4_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p7_1.vqh b/lib/books/uncoupled/_44u4_p7_1.vqh deleted file mode 100644 index 59f08c74..00000000 --- a/lib/books/uncoupled/_44u4_p7_1.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p7_1_VQH_ -#define _V__44u4_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p7_1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u4_p7_1[] = { - 3, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 7, 7, 6, - 7, 7, 6, 7, 6, 6, 7, 7, 6, 7, 7, 5, 6, 7, 6, 7, - 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, - 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 6, - 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44u4_p7_1[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44u4_p7_1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p7_1 = { - _vq_quantthresh__44u4_p7_1, - _vq_quantmap__44u4_p7_1, - 3, - 3 -}; - -static static_codebook _44u4_p7_1 = { - 4, 81, - _vq_lengthlist__44u4_p7_1, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44u4_p7_1, - NULL, - &_vq_auxt__44u4_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p8_0.vqh b/lib/books/uncoupled/_44u4_p8_0.vqh deleted file mode 100644 index 290cdf21..00000000 --- a/lib/books/uncoupled/_44u4_p8_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p8_0_VQH_ -#define _V__44u4_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p8_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44u4_p8_0[] = { - 1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,11,12, - 12, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,11,11, - 12,12, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,11, - 11,12,12, 7, 8, 8, 9, 9,10,10,10,10,11,11,11,11, - 12,12,12,12, 7, 8, 8, 9, 9, 9,10,10,10,11,11,11, - 11,12,12,12,12, 8, 9, 9,10,10,10,10,11,11,11,11, - 12,12,12,12,13,13, 8, 9, 9,10,10,10,10,11,11,11, - 12,12,12,12,12,13,13, 8, 9, 9,10,10,11,11,12,11, - 12,12,12,12,13,13,13,13, 8, 9, 9,10,10,11,11,11, - 12,12,12,13,13,13,13,13,13,10,10,10,11,11,11,11, - 12,12,13,13,13,13,13,13,14,13, 9,10,10,11,11,11, - 11,12,12,12,12,13,13,13,13,13,14,10,11,11,12,12, - 12,12,13,13,13,13,13,13,14,14,14,14,10,11,11,11, - 12,12,12,12,12,13,13,13,13,14,13,14,14,11,12,12, - 12,12,13,12,13,13,14,13,14,14,14,14,14,14,11,12, - 12,12,12,13,13,13,13,13,13,14,14,14,14,14,14,12, - 12,12,13,13,13,13,13,13,14,14,14,14,14,14,14,14, - 12,12,12,13,13,13,13,13,13,14,14,14,14,14,14,14, - 14, -}; - -static float _vq_quantthresh__44u4_p8_0[] = { - -37.5, -32.5, -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, - 2.5, 7.5, 12.5, 17.5, 22.5, 27.5, 32.5, 37.5, -}; - -static long _vq_quantmap__44u4_p8_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p8_0 = { - _vq_quantthresh__44u4_p8_0, - _vq_quantmap__44u4_p8_0, - 17, - 17 -}; - -static static_codebook _44u4_p8_0 = { - 2, 289, - _vq_lengthlist__44u4_p8_0, - 1, -525074432, 1616117760, 5, 0, - _vq_quantlist__44u4_p8_0, - NULL, - &_vq_auxt__44u4_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p8_1.vqh b/lib/books/uncoupled/_44u4_p8_1.vqh deleted file mode 100644 index d3152263..00000000 --- a/lib/books/uncoupled/_44u4_p8_1.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p8_1_VQH_ -#define _V__44u4_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p8_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44u4_p8_1[] = { - 4, 6, 7, 8, 8, 7, 8, 8, 9, 9, 7, 8, 8, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 8, 8, 9, 9, 8, 9, - 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9,10,10, 9, 9, 9, - 9,10, 7, 8, 8, 9, 9, 8, 9, 9, 9, 9, 8, 9, 9, 9, - 9, 9, 9, 9, 9,10, 9, 9, 9,10,10, 9, 9, 9,10,10, - 9, 9,10,10,10, 9, 9, 9,10,10, 9,10,10,10,10, 9, - 10,10,10,10, 9, 9, 9,10,10, 9, 9,10,10,10, 9,10, - 10,10,10,10,10,10,10,10,10,10,10,10,10, 6, 8, 8, - 9, 9, 8, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9,10,10,10, - 10, 9,10,10,10,10, 8, 9, 9,10,10, 9, 9, 9,10,10, - 9, 9, 9,10,10, 9,10,10,10,10,10,10,10,10,10, 8, - 9, 9,10,10, 9, 9, 9,10,10, 9, 9, 9,10,10, 9,10, - 10,10,10,10,10,10,10,10, 9,10,10,10,10, 9,10,10, - 10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10, 9,10, 9,10,10, 9,10,10,10,10, 9,10,10,10,10, - 10,10,10,10,10,10,10,10,10,10, 6, 8, 8, 9, 9, 8, - 9, 9, 9, 9, 8, 9, 9, 9, 9, 9,10,10,10,10, 9,10, - 9,10,10, 8, 9, 9,10,10, 9, 9, 9,10,10, 9, 9, 9, - 10,10, 9,10,10,10,10, 9,10,10,10,10, 8, 9, 9,10, - 10, 9, 9, 9,10,10, 9, 9, 9,10,10, 9,10,10,10,10, - 10,10,10,10,10, 9,10,10,10,10, 9,10,10,10,10, 9, - 10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,10, - 9,10,10, 9,10,10,10,10, 9,10,10,10,10,10,10,10, - 10,10,10,10,10,10,10, 8, 9, 9,10,10, 9,10,10,10, - 10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10, - 9, 9, 9,10,10, 9,10,10,10,10, 9,10,10,10,10,10, - 10,10,10,10,10,10,10,10,10, 9, 9, 9,10,10, 9,10, - 10,10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10, - 10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10,10,10,10,10,10,10,10,10,10,10, 9,10,10,10,10, - 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10,10,10,10, 8, 9, 9,10,10, 9,10,10,10,10, 9,10, - 9,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, - 10,10, 9,10,10,10,10, 9,10,10,10,10,10,10,10,10, - 10,10,10,10,10,10, 9, 9,10,10,10, 9,10,10,10,10, - 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9, - 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10,10,10,10,10,10,10,10, 9,10,10,10,10,10,10,10, - 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10, -}; - -static float _vq_quantthresh__44u4_p8_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44u4_p8_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p8_1 = { - _vq_quantthresh__44u4_p8_1, - _vq_quantmap__44u4_p8_1, - 5, - 5 -}; - -static static_codebook _44u4_p8_1 = { - 4, 625, - _vq_lengthlist__44u4_p8_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44u4_p8_1, - NULL, - &_vq_auxt__44u4_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p9_0.vqh b/lib/books/uncoupled/_44u4_p9_0.vqh deleted file mode 100644 index 91bfd487..00000000 --- a/lib/books/uncoupled/_44u4_p9_0.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p9_0_VQH_ -#define _V__44u4_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p9_0[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44u4_p9_0[] = { - 1, 2, 3,11,11,11,11, 4,11,10,11,11,11,11, 5, 9, - 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, - 11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10, -}; - -static float _vq_quantthresh__44u4_p9_0[] = { - -1592.5, -955.5, -318.5, 318.5, 955.5, 1592.5, -}; - -static long _vq_quantmap__44u4_p9_0[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p9_0 = { - _vq_quantthresh__44u4_p9_0, - _vq_quantmap__44u4_p9_0, - 7, - 7 -}; - -static static_codebook _44u4_p9_0 = { - 2, 49, - _vq_lengthlist__44u4_p9_0, - 1, -513942528, 1630791680, 3, 0, - _vq_quantlist__44u4_p9_0, - NULL, - &_vq_auxt__44u4_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p9_1.vqh b/lib/books/uncoupled/_44u4_p9_1.vqh deleted file mode 100644 index 491ed14a..00000000 --- a/lib/books/uncoupled/_44u4_p9_1.vqh +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p9_1_VQH_ -#define _V__44u4_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p9_1[] = { - 6, - 5, - 7, - 4, - 8, - 3, - 9, - 2, - 10, - 1, - 11, - 0, - 12, -}; - -static long _vq_lengthlist__44u4_p9_1[] = { - 1, 3, 4, 6, 6, 8, 7, 9, 8,10, 9,11,11, 4, 6, 6, - 8, 8,10, 9,11,10,12,11,12,11, 4, 6, 6, 8, 8, 9, - 10,10,11,11,12,12,12, 7, 8, 9,10,10,12,11,13,13, - 13,14,15,14, 7, 8, 9,10,10,12,12,13,13,14,13,14, - 14, 9,10,11,12,12,14,14,15,15,15,15,19,15, 9,11, - 11,12,12,13,13,15,14,16,16,17,16,11,12,13,14,13, - 15,15,16,17,16,16,17,17,11,13,13,14,14,14,15,16, - 16,16,16,17,16,13,13,14,15,15,15,15,15,17,17,18, - 19,19,13,14,14,15,15,15,16,15,17,17,16,18,16,14, - 14,15,15,16,17,16,18,17,17,18,17,19,14,14,15,18, - 15,16,16,17,16,16,19,16,19, -}; - -static float _vq_quantthresh__44u4_p9_1[] = { - -269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 24.5, 73.5, - 122.5, 171.5, 220.5, 269.5, -}; - -static long _vq_quantmap__44u4_p9_1[] = { - 11, 9, 7, 5, 3, 1, 0, 2, - 4, 6, 8, 10, 12, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p9_1 = { - _vq_quantthresh__44u4_p9_1, - _vq_quantmap__44u4_p9_1, - 13, - 13 -}; - -static static_codebook _44u4_p9_1 = { - 2, 169, - _vq_lengthlist__44u4_p9_1, - 1, -518889472, 1622704128, 4, 0, - _vq_quantlist__44u4_p9_1, - NULL, - &_vq_auxt__44u4_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u4_p9_2.vqh b/lib/books/uncoupled/_44u4_p9_2.vqh deleted file mode 100644 index 77c532c5..00000000 --- a/lib/books/uncoupled/_44u4_p9_2.vqh +++ /dev/null @@ -1,118 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u4_p9_2_VQH_ -#define _V__44u4_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u4_p9_2[] = { - 24, - 23, - 25, - 22, - 26, - 21, - 27, - 20, - 28, - 19, - 29, - 18, - 30, - 17, - 31, - 16, - 32, - 15, - 33, - 14, - 34, - 13, - 35, - 12, - 36, - 11, - 37, - 10, - 38, - 9, - 39, - 8, - 40, - 7, - 41, - 6, - 42, - 5, - 43, - 4, - 44, - 3, - 45, - 2, - 46, - 1, - 47, - 0, - 48, -}; - -static long _vq_lengthlist__44u4_p9_2[] = { - 3, 3, 3, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, - 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, -}; - -static float _vq_quantthresh__44u4_p9_2[] = { - -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, - -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, - 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, - 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, -}; - -static long _vq_quantmap__44u4_p9_2[] = { - 47, 45, 43, 41, 39, 37, 35, 33, - 31, 29, 27, 25, 23, 21, 19, 17, - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, 18, 20, 22, 24, 26, 28, 30, - 32, 34, 36, 38, 40, 42, 44, 46, - 48, -}; - -static encode_aux_threshmatch _vq_auxt__44u4_p9_2 = { - _vq_quantthresh__44u4_p9_2, - _vq_quantmap__44u4_p9_2, - 49, - 49 -}; - -static static_codebook _44u4_p9_2 = { - 1, 49, - _vq_lengthlist__44u4_p9_2, - 1, -526909440, 1611661312, 6, 0, - _vq_quantlist__44u4_p9_2, - NULL, - &_vq_auxt__44u4_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p0_r0.vqh b/lib/books/uncoupled/_44u7_p0_r0.vqh deleted file mode 100644 index 8337effb..00000000 --- a/lib/books/uncoupled/_44u7_p0_r0.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p0_r0_VQH_ -#define _V__44u7_p0_r0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p0_r0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u7_p0_r0[] = { - 1, 3, 3, 4, 5, 5, 4, 5, 5, -}; - -static float _vq_quantthresh__44u7_p0_r0[] = { - -0.16667, 0.16667, -}; - -static long _vq_quantmap__44u7_p0_r0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p0_r0 = { - _vq_quantthresh__44u7_p0_r0, - _vq_quantmap__44u7_p0_r0, - 3, - 3 -}; - -static static_codebook _44u7_p0_r0 = { - 2, 9, - _vq_lengthlist__44u7_p0_r0, - 1, -539667115, 1607816533, 2, 0, - _vq_quantlist__44u7_p0_r0, - NULL, - &_vq_auxt__44u7_p0_r0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p0_r1.vqh b/lib/books/uncoupled/_44u7_p0_r1.vqh deleted file mode 100644 index 1a3bc5f7..00000000 --- a/lib/books/uncoupled/_44u7_p0_r1.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p0_r1_VQH_ -#define _V__44u7_p0_r1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p0_r1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u7_p0_r1[] = { - 1, 3, 3, 4, 5, 5, 4, 5, 5, -}; - -static float _vq_quantthresh__44u7_p0_r1[] = { - -0.055556, 0.055556, -}; - -static long _vq_quantmap__44u7_p0_r1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p0_r1 = { - _vq_quantthresh__44u7_p0_r1, - _vq_quantmap__44u7_p0_r1, - 3, - 3 -}; - -static static_codebook _44u7_p0_r1 = { - 2, 9, - _vq_lengthlist__44u7_p0_r1, - 1, -543395385, 1604088263, 2, 0, - _vq_quantlist__44u7_p0_r1, - NULL, - &_vq_auxt__44u7_p0_r1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p1_0.vqh b/lib/books/uncoupled/_44u7_p1_0.vqh deleted file mode 100644 index 7e11e74e..00000000 --- a/lib/books/uncoupled/_44u7_p1_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p1_0_VQH_ -#define _V__44u7_p1_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p1_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44u7_p1_0[] = { - 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9,10,10,11, - 11, 5, 6, 5, 6, 6, 7, 7, 8, 8, 9, 9,10, 9,10,10, - 11,11, 5, 5, 6, 6, 6, 7, 7, 8, 8, 9, 9, 9,10,10, - 10,11,11, 6, 6, 6, 7, 7, 8, 7, 8, 8, 9, 9,10,10, - 11,10,11,11, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9,10, - 10,10,11,11,11, 7, 7, 7, 8, 7, 8, 8, 9, 8, 9, 9, - 10,10,11,11,12,11, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, - 9,10,10,11,11,11,12, 8, 8, 8, 8, 8, 9, 8, 9, 9, - 10,10,11,10,11,11,12,12, 8, 8, 8, 8, 8, 8, 9, 9, - 9,10,10,10,11,11,11,12,12, 9, 9, 9, 9, 9, 9, 9, - 10, 9,10,10,11,11,12,11,13,12, 8, 9, 9, 9, 9, 9, - 9, 9,10,10,10,11,11,11,12,12,12, 9, 9, 9,10, 9, - 10,10,11,10,11,11,12,11,12,12,13,12, 9, 9, 9,10, - 10,10,10,10,11,11,11,11,12,12,12,12,13,10,10,10, - 11,10,11,11,11,11,12,11,12,12,13,12,13,13,10,10, - 10,10,11,11,11,11,11,11,12,12,12,12,13,13,13,11, - 11,11,11,11,12,11,12,12,12,12,13,12,13,13,14,13, - 11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13, - 14, -}; - -static float _vq_quantthresh__44u7_p1_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44u7_p1_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p1_0 = { - _vq_quantthresh__44u7_p1_0, - _vq_quantmap__44u7_p1_0, - 17, - 17 -}; - -static static_codebook _44u7_p1_0 = { - 2, 289, - _vq_lengthlist__44u7_p1_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44u7_p1_0, - NULL, - &_vq_auxt__44u7_p1_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p1_r0.vqh b/lib/books/uncoupled/_44u7_p1_r0.vqh deleted file mode 100644 index cadb31d3..00000000 --- a/lib/books/uncoupled/_44u7_p1_r0.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p1_r0_VQH_ -#define _V__44u7_p1_r0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p1_r0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u7_p1_r0[] = { - 3, 3, 3, 3, 4, 3, 3, 3, 4, -}; - -static float _vq_quantthresh__44u7_p1_r0[] = { - -0.16667, 0.16667, -}; - -static long _vq_quantmap__44u7_p1_r0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p1_r0 = { - _vq_quantthresh__44u7_p1_r0, - _vq_quantmap__44u7_p1_r0, - 3, - 3 -}; - -static static_codebook _44u7_p1_r0 = { - 2, 9, - _vq_lengthlist__44u7_p1_r0, - 1, -539667115, 1607816533, 2, 0, - _vq_quantlist__44u7_p1_r0, - NULL, - &_vq_auxt__44u7_p1_r0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p1_r1.vqh b/lib/books/uncoupled/_44u7_p1_r1.vqh deleted file mode 100644 index a3fa3f37..00000000 --- a/lib/books/uncoupled/_44u7_p1_r1.vqh +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p1_r1_VQH_ -#define _V__44u7_p1_r1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p1_r1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u7_p1_r1[] = { - 3, 3, 3, 3, 4, 3, 3, 3, 4, -}; - -static float _vq_quantthresh__44u7_p1_r1[] = { - -0.055556, 0.055556, -}; - -static long _vq_quantmap__44u7_p1_r1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p1_r1 = { - _vq_quantthresh__44u7_p1_r1, - _vq_quantmap__44u7_p1_r1, - 3, - 3 -}; - -static static_codebook _44u7_p1_r1 = { - 2, 9, - _vq_lengthlist__44u7_p1_r1, - 1, -543395385, 1604088263, 2, 0, - _vq_quantlist__44u7_p1_r1, - NULL, - &_vq_auxt__44u7_p1_r1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p2_0.vqh b/lib/books/uncoupled/_44u7_p2_0.vqh deleted file mode 100644 index 06ca3626..00000000 --- a/lib/books/uncoupled/_44u7_p2_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p2_0_VQH_ -#define _V__44u7_p2_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p2_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44u7_p2_0[] = { - 2, 4, 4, 6, 6, 7, 7, 9, 9,10,10,10,10,11,11,12, - 12, 4, 5, 5, 7, 6, 8, 8, 9, 9,10,10,11,11,12,11, - 12,12, 4, 5, 5, 6, 7, 8, 8, 9, 9,10,10,11,11,11, - 12,12,12, 6, 7, 6, 8, 7, 9, 8,10,10,10,10,11,11, - 12,12,13,12, 6, 6, 7, 7, 8, 9, 9, 9,10,10,10,11, - 11,12,12,12,12, 7, 8, 8, 9, 8, 9, 9,10,10,11,11, - 12,12,12,12,13,13, 7, 8, 8, 9, 9, 9, 9,10,10,11, - 11,12,12,12,12,13,13, 9, 9, 9,10,10,10,10,11,11, - 12,11,12,12,13,13,13,13, 9, 9, 9, 9,10,10,10,11, - 11,11,12,12,12,13,13,13,13,10,10,10,11,10,11,11, - 12,11,12,12,13,12,13,13,14,14,10,10,10,10,11,11, - 11,11,12,12,12,13,13,13,13,14,14,10,11,11,11,11, - 12,12,12,12,13,13,13,13,14,14,14,14,10,11,11,11, - 11,12,12,12,12,13,13,13,13,14,14,14,14,11,12,12, - 12,12,12,12,13,13,13,13,14,14,14,14,15,14,11,12, - 12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,12, - 12,12,13,13,13,13,13,13,14,13,14,14,14,14,15,15, - 12,12,12,13,13,13,13,13,13,14,14,14,14,14,14,14, - 15, -}; - -static float _vq_quantthresh__44u7_p2_0[] = { - -37.5, -32.5, -27.5, -22.5, -17.5, -12.5, -7.5, -2.5, - 2.5, 7.5, 12.5, 17.5, 22.5, 27.5, 32.5, 37.5, -}; - -static long _vq_quantmap__44u7_p2_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p2_0 = { - _vq_quantthresh__44u7_p2_0, - _vq_quantmap__44u7_p2_0, - 17, - 17 -}; - -static static_codebook _44u7_p2_0 = { - 2, 289, - _vq_lengthlist__44u7_p2_0, - 1, -525074432, 1616117760, 5, 0, - _vq_quantlist__44u7_p2_0, - NULL, - &_vq_auxt__44u7_p2_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p2_1.vqh b/lib/books/uncoupled/_44u7_p2_1.vqh deleted file mode 100644 index de4412f3..00000000 --- a/lib/books/uncoupled/_44u7_p2_1.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p2_1_VQH_ -#define _V__44u7_p2_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p2_1[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44u7_p2_1[] = { - 5, 8, 8, 9, 9, 8, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9,10,10, 9, 9, 9,10,10, 9, 9, 9,10,10, 9, - 9, 9,10,10, 9, 9, 9,10, 9, 9, 9, 9,10,10, 9, 9, - 9,10,10, 9, 9,10,10,10, 9,10, 9,10,10, 8, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9, 9, 9,10,10, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9,10,10, 9, 9, 9,10,10, 9, 9, 9,10,10, 9, 9,10, - 10,10, 9,10, 9,10,10, 9,10,10,10,10,10,10,10,10, - 10, 9, 9, 9,10,10, 9, 9, 9,10,10, 9, 9, 9,10,10, - 10,10,10,10,10, 9,10,10,10,10, 8, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9,10,10, 9, 9, 9,10,10, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, - 9, 9, 9,10,10, 9, 9, 9,10,10, 9, 9, 9,10,10, 9, - 9, 9,10,10, 9,10,10,10,10, 9,10,10,10,10, 9, 9, - 9,10,10, 9, 9, 9,10,10, 9, 9,10,10,10, 9,10,10, - 10,10, 9,10,10,10,10, 9, 9, 9, 9,10, 9, 9, 9,10, - 10, 9, 9, 9,10,10,10,10,10,10,10, 9,10,10,10,10, - 9, 9, 9,10,10, 9, 9, 9,10,10, 9, 9, 9,10,10,10, - 10,10,10,10,10,10,10,10,10, 9, 9, 9,10,10, 9, 9, - 9,10,10, 9, 9, 9,10,10,10,10,10,10,10,10,10,10, - 10,10, 9, 9,10,10,10, 9,10,10,10,10, 9,10,10,10, - 10,10,10,10,10,10,10,10,10,10,10, 9,10,10,10,10, - 9,10,10,10,10, 9,10,10,10,10,10,10,10,10,10,10, - 10,10,10,10, 9, 9, 9,10,10, 9, 9, 9,10,10, 9, 9, - 9,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, - 10,10, 9, 9, 9,10,10, 9, 9, 9,10,10,10,10,10,10, - 10,10,10,10,10,10, 9, 9, 9,10,10, 9, 9, 9,10,10, - 9, 9, 9,10,10, 9,10,10,10,10,10,10,10,10,10, 9, - 9, 9,10,10, 9,10,10,10,10,10,10,10,10,10,10,10, - 10,10,10,10,10,10,10,10, 9, 9, 9,10,10, 9,10, 9, - 10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10, - 10, -}; - -static float _vq_quantthresh__44u7_p2_1[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44u7_p2_1[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p2_1 = { - _vq_quantthresh__44u7_p2_1, - _vq_quantmap__44u7_p2_1, - 5, - 5 -}; - -static static_codebook _44u7_p2_1 = { - 4, 625, - _vq_lengthlist__44u7_p2_1, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44u7_p2_1, - NULL, - &_vq_auxt__44u7_p2_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p3_0.vqh b/lib/books/uncoupled/_44u7_p3_0.vqh deleted file mode 100644 index 5d1270a0..00000000 --- a/lib/books/uncoupled/_44u7_p3_0.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p3_0_VQH_ -#define _V__44u7_p3_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p3_0[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u7_p3_0[] = { - 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 9, 9, 7, - 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 9, 5, 7, 7, 8, 9, - 9, 7, 9, 9, 7, 9, 9, 9,10,11, 9,11,11, 7, 9, 9, - 9,11, 9, 9,11,11, 5, 7, 7, 8, 9, 9, 8, 9, 9, 7, - 9, 9, 9,11,11, 9, 9,11, 7, 9, 9, 9,11,11, 9,11, - 10, -}; - -static float _vq_quantthresh__44u7_p3_0[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44u7_p3_0[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p3_0 = { - _vq_quantthresh__44u7_p3_0, - _vq_quantmap__44u7_p3_0, - 3, - 3 -}; - -static static_codebook _44u7_p3_0 = { - 4, 81, - _vq_lengthlist__44u7_p3_0, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44u7_p3_0, - NULL, - &_vq_auxt__44u7_p3_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p4_0.vqh b/lib/books/uncoupled/_44u7_p4_0.vqh deleted file mode 100644 index c56368e3..00000000 --- a/lib/books/uncoupled/_44u7_p4_0.vqh +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p4_0_VQH_ -#define _V__44u7_p4_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p4_0[] = { - 2, - 1, - 3, - 0, - 4, -}; - -static long _vq_lengthlist__44u7_p4_0[] = { - 3, 5, 5, 8, 8, 6, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8, - 9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8, - 8,10,10, 7, 8, 8, 9,10, 9,10,10,11,12, 9,10,10, - 11,12, 6, 7, 7, 9, 9, 7, 8, 8,10,10, 7, 8, 8,10, - 10, 9,10, 9,12,11, 9,10,10,12,11, 9, 9, 9,11,11, - 9,10,10,12,12, 9,10,10,12,12,11,12,12,13,13,11, - 11,12,13,13, 8, 9, 9,11,12, 9,10,10,12,12, 9,10, - 10,12,12,11,12,11,13,13,11,12,12,13,13, 5, 7, 7, - 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12, - 12, 9,10,10,11,12, 7, 8, 8,10,10, 8, 9, 9,11,11, - 8, 9, 9,11,11,10,10,11,12,12,10,10,11,12,12, 7, - 8, 8,10,10, 8, 9, 8,11,10, 8, 9, 9,11,11,10,11, - 10,12,11,10,11,11,12,12, 9,10,10,12,12,10,11,11, - 12,13,10,11,11,12,12,12,12,12,13,14,12,12,12,13, - 14, 9,10,10,12,12,10,11,10,12,12,10,11,11,12,13, - 11,12,11,14,12,12,13,12,14,14, 5, 7, 7, 9, 9, 7, - 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12, 9,10, - 10,12,12, 7, 8, 8,10,10, 8, 9, 9,11,10, 8, 8, 9, - 10,11,10,11,11,12,12,10,10,11,11,13, 7, 8, 8,10, - 10, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,10,12,12, - 10,11,11,12,12, 9,10,10,12,12,10,11,11,13,12,10, - 10,11,12,12,12,13,13,14,14,11,11,12,12,14, 9,10, - 10,12,12,10,11,11,12,12,10,11,11,13,12,12,12,12, - 14,14,12,13,12,14,13, 8, 9, 9,11,11, 9,10,10,12, - 12, 9,10,10,12,12,12,12,12,14,13,11,12,12,13,13, - 9,10,10,12,12,10,11,11,12,13,10,11,11,13,12,12, - 13,13,14,14,12,12,13,14,14, 9,10,10,12,12,10,11, - 10,13,12,10,11,11,12,13,12,13,12,14,13,12,12,13, - 14,14,11,12,12,14,13,12,12,12,14,14,12,13,13,14, - 14,13,13,14,13,15,14,14,14,15,15,11,12,12,13,13, - 11,12,11,14,13,12,12,13,14,14,13,13,12,15,13,14, - 14,14,15,15, 8, 9, 9,11,11, 9,10,10,12,12, 9,10, - 10,12,12,11,12,12,13,13,12,12,12,13,13, 9,10,10, - 12,12,10,11,11,13,12,10,10,11,12,13,12,13,12,14, - 14,12,12,13,13,14, 9,10,10,12,12,10,11,11,12,13, - 10,11,11,12,12,12,12,12,14,14,12,13,12,14,13,11, - 12,12,13,13,12,12,12,14,14,11,11,12,13,14,13,14, - 14,15,15,13,12,14,12,15,11,12,12,13,14,12,13,13, - 14,14,12,12,12,14,14,13,14,14,15,15,13,14,13,15, - 13, -}; - -static float _vq_quantthresh__44u7_p4_0[] = { - -1.5, -0.5, 0.5, 1.5, -}; - -static long _vq_quantmap__44u7_p4_0[] = { - 3, 1, 0, 2, 4, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p4_0 = { - _vq_quantthresh__44u7_p4_0, - _vq_quantmap__44u7_p4_0, - 5, - 5 -}; - -static static_codebook _44u7_p4_0 = { - 4, 625, - _vq_lengthlist__44u7_p4_0, - 1, -533725184, 1611661312, 3, 0, - _vq_quantlist__44u7_p4_0, - NULL, - &_vq_auxt__44u7_p4_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p5_0.vqh b/lib/books/uncoupled/_44u7_p5_0.vqh deleted file mode 100644 index fd9f0d22..00000000 --- a/lib/books/uncoupled/_44u7_p5_0.vqh +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p5_0_VQH_ -#define _V__44u7_p5_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p5_0[] = { - 4, - 3, - 5, - 2, - 6, - 1, - 7, - 0, - 8, -}; - -static long _vq_lengthlist__44u7_p5_0[] = { - 3, 4, 4, 5, 5, 7, 7, 8, 8, 4, 5, 5, 6, 6, 7, 7, - 9, 8, 4, 5, 5, 6, 6, 7, 7, 8, 9, 5, 6, 6, 7, 6, - 8, 7, 9, 9, 5, 6, 6, 6, 7, 8, 8, 9, 9, 7, 7, 7, - 8, 8, 9, 8,10,10, 7, 7, 7, 8, 8, 8, 9,10,10, 8, - 9, 9, 9, 9,10,10,11,11, 8, 8, 9, 9, 9,10,10,11, - 11, -}; - -static float _vq_quantthresh__44u7_p5_0[] = { - -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, -}; - -static long _vq_quantmap__44u7_p5_0[] = { - 7, 5, 3, 1, 0, 2, 4, 6, - 8, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p5_0 = { - _vq_quantthresh__44u7_p5_0, - _vq_quantmap__44u7_p5_0, - 9, - 9 -}; - -static static_codebook _44u7_p5_0 = { - 2, 81, - _vq_lengthlist__44u7_p5_0, - 1, -531628032, 1611661312, 4, 0, - _vq_quantlist__44u7_p5_0, - NULL, - &_vq_auxt__44u7_p5_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p6_0.vqh b/lib/books/uncoupled/_44u7_p6_0.vqh deleted file mode 100644 index fce20bba..00000000 --- a/lib/books/uncoupled/_44u7_p6_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p6_0_VQH_ -#define _V__44u7_p6_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p6_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44u7_p6_0[] = { - 4, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,11,11, - 11, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,10, 9,11,11, - 12,12, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9,10,11, - 11,12,12, 6, 6, 6, 7, 6, 7, 7, 8, 8, 9, 9,10,10, - 11,11,12,12, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9,10, - 10,11,11,12,12, 7, 7, 7, 7, 7, 8, 8, 9, 8, 9, 9, - 10,10,11,11,12,12, 7, 7, 7, 7, 7, 8, 8, 8, 9, 9, - 9,10,10,11,11,12,12, 8, 8, 8, 8, 8, 9, 8, 9, 9, - 10, 9,11,10,12,11,12,12, 8, 8, 8, 8, 8, 8, 9, 9, - 9,10,10,10,11,11,12,12,12, 8, 8, 8, 9, 9, 9, 9, - 10, 9,10,10,11,11,12,12,13,12, 8, 8, 8, 9, 9, 9, - 9,10,10,10,10,11,11,12,12,13,13, 9,10, 9,10,10, - 10,10,11,10,11,11,12,11,12,12,13,13, 9, 9,10,10, - 10,10,10,10,11,11,11,11,12,12,12,13,13,11,11,11, - 11,11,11,11,12,11,12,12,12,12,13,13,14,13,11,11, - 11,11,11,11,11,11,12,12,12,12,12,13,13,13,14,12, - 12,12,12,12,12,12,12,12,13,13,13,13,14,13,14,14, - 12,12,12,12,12,12,12,12,13,13,13,13,13,13,14,14, - 14, -}; - -static float _vq_quantthresh__44u7_p6_0[] = { - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, -}; - -static long _vq_quantmap__44u7_p6_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p6_0 = { - _vq_quantthresh__44u7_p6_0, - _vq_quantmap__44u7_p6_0, - 17, - 17 -}; - -static static_codebook _44u7_p6_0 = { - 2, 289, - _vq_lengthlist__44u7_p6_0, - 1, -529530880, 1611661312, 5, 0, - _vq_quantlist__44u7_p6_0, - NULL, - &_vq_auxt__44u7_p6_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p7_0.vqh b/lib/books/uncoupled/_44u7_p7_0.vqh deleted file mode 100644 index a510b4cc..00000000 --- a/lib/books/uncoupled/_44u7_p7_0.vqh +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p7_0_VQH_ -#define _V__44u7_p7_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p7_0[] = { - 5, - 4, - 6, - 3, - 7, - 2, - 8, - 1, - 9, - 0, - 10, -}; - -static long _vq_lengthlist__44u7_p7_0[] = { - 3, 4, 4, 6, 5, 7, 7, 8, 8,10,10, 4, 5, 4, 6, 6, - 7, 7, 9, 8,10,10, 4, 5, 5, 6, 6, 7, 7, 8, 9,10, - 10, 6, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 6, 6, 7, - 7, 8, 8, 9, 9,10,10, 7, 7, 7, 8, 8, 9, 8,10, 9, - 11,11, 7, 7, 7, 8, 8, 8, 9,10,10,11,11, 8, 9, 8, - 9, 9,10, 9,10,10,11,11, 8, 8, 9, 9, 9, 9,10,10, - 10,11,11,10,10,10,10,10,11,11,11,11,12,12,10,10, - 10,10,10,11,11,11,11,12,12, -}; - -static float _vq_quantthresh__44u7_p7_0[] = { - -13.5, -10.5, -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, - 10.5, 13.5, -}; - -static long _vq_quantmap__44u7_p7_0[] = { - 9, 7, 5, 3, 1, 0, 2, 4, - 6, 8, 10, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p7_0 = { - _vq_quantthresh__44u7_p7_0, - _vq_quantmap__44u7_p7_0, - 11, - 11 -}; - -static static_codebook _44u7_p7_0 = { - 2, 121, - _vq_lengthlist__44u7_p7_0, - 1, -528613376, 1614282752, 4, 0, - _vq_quantlist__44u7_p7_0, - NULL, - &_vq_auxt__44u7_p7_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p7_1.vqh b/lib/books/uncoupled/_44u7_p7_1.vqh deleted file mode 100644 index e37b82ec..00000000 --- a/lib/books/uncoupled/_44u7_p7_1.vqh +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p7_1_VQH_ -#define _V__44u7_p7_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p7_1[] = { - 1, - 0, - 2, -}; - -static long _vq_lengthlist__44u7_p7_1[] = { - 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, - 6, 7, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 7, - 7, 6, 7, 7, 6, 6, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, - 6, 7, 7, 6, 7, 7, 6, 6, 6, 6, 7, 7, 6, 7, 7, 6, - 7, 7, 7, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44u7_p7_1[] = { - -0.5, 0.5, -}; - -static long _vq_quantmap__44u7_p7_1[] = { - 1, 0, 2, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p7_1 = { - _vq_quantthresh__44u7_p7_1, - _vq_quantmap__44u7_p7_1, - 3, - 3 -}; - -static static_codebook _44u7_p7_1 = { - 4, 81, - _vq_lengthlist__44u7_p7_1, - 1, -535822336, 1611661312, 2, 0, - _vq_quantlist__44u7_p7_1, - NULL, - &_vq_auxt__44u7_p7_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p8_0.vqh b/lib/books/uncoupled/_44u7_p8_0.vqh deleted file mode 100644 index af006a31..00000000 --- a/lib/books/uncoupled/_44u7_p8_0.vqh +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p8_0_VQH_ -#define _V__44u7_p8_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p8_0[] = { - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15, - 0, - 16, -}; - -static long _vq_lengthlist__44u7_p8_0[] = { - 2, 4, 4, 6, 6, 7, 7, 9, 9,10,10,11,11,11,11,12, - 12, 4, 5, 5, 7, 6, 8, 8, 9, 9,10,10,11,11,12,11, - 12,12, 4, 5, 5, 6, 7, 8, 8, 9, 9,10,10,11,11,11, - 12,12,12, 6, 7, 7, 7, 7, 8, 8,10, 9,11,10,11,11, - 12,12,13,13, 6, 7, 7, 7, 7, 8, 8, 9,10,10,11,11, - 11,12,12,13,13, 7, 8, 8, 8, 8, 9, 9,10,10,11,11, - 12,12,12,12,13,13, 8, 8, 8, 8, 8, 9, 9,10,10,11, - 11,12,12,12,12,13,13, 9, 9, 9,10, 9,10,10,11,11, - 11,11,12,12,13,12,13,13, 9, 9, 9, 9,10,10,10,11, - 11,11,11,12,12,13,13,13,13,10,10,10,11,10,11,11, - 11,11,12,12,13,13,13,13,14,14,10,10,10,10,11,11, - 11,11,11,12,12,13,13,13,13,14,14,11,11,11,11,11, - 12,12,12,12,13,13,13,13,13,13,14,14,11,11,11,11, - 11,12,12,12,12,13,13,13,13,13,13,14,14,11,12,12, - 12,12,12,12,13,13,13,13,13,13,14,14,14,14,11,12, - 12,12,12,12,12,13,13,13,13,13,13,14,14,14,14,12, - 12,12,13,13,13,13,13,13,14,14,14,14,14,14,15,15, - 12,12,12,13,13,13,13,13,13,14,14,14,14,14,14,15, - 15, -}; - -static float _vq_quantthresh__44u7_p8_0[] = { - -52.5, -45.5, -38.5, -31.5, -24.5, -17.5, -10.5, -3.5, - 3.5, 10.5, 17.5, 24.5, 31.5, 38.5, 45.5, 52.5, -}; - -static long _vq_quantmap__44u7_p8_0[] = { - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p8_0 = { - _vq_quantthresh__44u7_p8_0, - _vq_quantmap__44u7_p8_0, - 17, - 17 -}; - -static static_codebook _44u7_p8_0 = { - 2, 289, - _vq_lengthlist__44u7_p8_0, - 1, -524550144, 1616642048, 5, 0, - _vq_quantlist__44u7_p8_0, - NULL, - &_vq_auxt__44u7_p8_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p8_1.vqh b/lib/books/uncoupled/_44u7_p8_1.vqh deleted file mode 100644 index 54ea53de..00000000 --- a/lib/books/uncoupled/_44u7_p8_1.vqh +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p8_1_VQH_ -#define _V__44u7_p8_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p8_1[] = { - 3, - 2, - 4, - 1, - 5, - 0, - 6, -}; - -static long _vq_lengthlist__44u7_p8_1[] = { - 4, 5, 5, 5, 5, 6, 6, 5, 5, 5, 6, 6, 6, 6, 5, 5, - 5, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, -}; - -static float _vq_quantthresh__44u7_p8_1[] = { - -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, -}; - -static long _vq_quantmap__44u7_p8_1[] = { - 5, 3, 1, 0, 2, 4, 6, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p8_1 = { - _vq_quantthresh__44u7_p8_1, - _vq_quantmap__44u7_p8_1, - 7, - 7 -}; - -static static_codebook _44u7_p8_1 = { - 2, 49, - _vq_lengthlist__44u7_p8_1, - 1, -533200896, 1611661312, 3, 0, - _vq_quantlist__44u7_p8_1, - NULL, - &_vq_auxt__44u7_p8_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p9_0.vqh b/lib/books/uncoupled/_44u7_p9_0.vqh deleted file mode 100644 index e0481652..00000000 --- a/lib/books/uncoupled/_44u7_p9_0.vqh +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p9_0_VQH_ -#define _V__44u7_p9_0_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p9_0[] = { - 7, - 6, - 8, - 5, - 9, - 4, - 10, - 3, - 11, - 2, - 12, - 1, - 13, - 0, - 14, -}; - -static long _vq_lengthlist__44u7_p9_0[] = { - 1, 3, 3, 5, 6, 9, 7,12,10,15,15,15,15,15,15, 4, - 7, 6, 9, 9,12,12,14,14,15,15,15,15,15,15, 4, 7, - 7, 9, 9,12,13,14,14,15,15,15,15,15,15, 9,11,11, - 13,11,15,15,15,15,15,15,15,15,15,15, 8,10,11,11, - 14,15,15,15,15,15,15,15,15,15,15,11,12,12,15,15, - 15,15,15,15,15,15,15,15,15,15,10,13,12,15,15,15, - 15,15,15,15,15,15,15,15,15,12,14,15,15,15,15,15, - 15,15,15,15,15,15,15,15,11,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,14,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, - 15,15,15,15,15,15,15,15,15,15,15,15,15,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, - 14, -}; - -static float _vq_quantthresh__44u7_p9_0[] = { - -12110, -10246, -8383.5, -6520.5, -4657.5, -2794.5, -931.5, 931.5, - 2794.5, 4657.5, 6520.5, 8383.5, 10246, 12110, -}; - -static long _vq_quantmap__44u7_p9_0[] = { - 13, 11, 9, 7, 5, 3, 1, 0, - 2, 4, 6, 8, 10, 12, 14, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p9_0 = { - _vq_quantthresh__44u7_p9_0, - _vq_quantmap__44u7_p9_0, - 15, - 15 -}; - -static static_codebook _44u7_p9_0 = { - 2, 225, - _vq_lengthlist__44u7_p9_0, - 1, -507938688, 1633491968, 4, 0, - _vq_quantlist__44u7_p9_0, - NULL, - &_vq_auxt__44u7_p9_0, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p9_1.vqh b/lib/books/uncoupled/_44u7_p9_1.vqh deleted file mode 100644 index 5549ed99..00000000 --- a/lib/books/uncoupled/_44u7_p9_1.vqh +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p9_1_VQH_ -#define _V__44u7_p9_1_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p9_1[] = { - 11, - 10, - 12, - 9, - 13, - 8, - 14, - 7, - 15, - 6, - 16, - 5, - 17, - 4, - 18, - 3, - 19, - 2, - 20, - 1, - 21, - 0, - 22, -}; - -static long _vq_lengthlist__44u7_p9_1[] = { - 1, 4, 4, 7, 7, 8, 8,10,10,11,11,12,12,13,13,13, - 13,13,14,14,14,14,14, 4, 5, 5, 8, 8,10, 9,11,10, - 11,11,12,12,13,12,13,13,14,14,14,14,14,14, 4, 5, - 6, 8, 8, 9, 9,10,11,11,12,12,12,13,13,13,13,14, - 14,14,14,14,14, 7, 8, 8, 9, 9,10,10,11,11,12,12, - 13,13,14,13,14,14,15,14,15,15,15,15, 7, 8, 8, 9, - 9,10,10,11,11,12,12,13,13,13,14,14,14,14,14,14, - 14,15,15, 9,10,10,10,10,11,11,12,12,13,13,14,13, - 14,14,15,15,15,15,15,15,15,15, 9,10,10,10,10,11, - 11,12,12,13,13,13,14,14,14,15,15,15,15,15,15,15, - 15,10,11,11,11,11,12,12,13,13,13,14,14,14,15,15, - 15,15,15,16,16,15,16,16,10,11,11,11,11,12,12,13, - 12,13,13,14,14,15,15,15,15,16,15,16,16,16,16,12, - 12,12,12,13,13,13,14,13,14,14,15,15,15,15,16,16, - 16,16,16,16,16,16,12,12,12,13,12,13,13,14,14,14, - 14,15,15,15,15,16,16,16,16,16,16,16,16,13,13,13, - 13,14,14,14,14,14,15,15,15,15,16,16,16,16,16,16, - 16,16,16,16,13,13,13,14,13,14,14,14,14,15,15,15, - 16,16,16,16,16,17,16,16,17,17,17,13,13,14,14,14, - 15,14,15,15,15,16,16,16,16,16,16,17,17,17,17,16, - 17,17,14,14,14,14,14,14,14,15,15,16,15,16,16,16, - 16,17,16,16,17,16,17,17,17,14,14,14,14,15,15,15, - 15,15,15,15,16,16,17,16,17,17,17,17,17,17,17,17, - 14,14,14,15,14,15,15,15,15,16,16,16,16,16,16,17, - 16,17,16,17,16,17,17,14,14,15,15,15,15,15,16,16, - 16,16,16,17,17,17,17,16,17,17,17,17,18,17,14,15, - 15,15,15,16,15,16,16,16,16,16,16,16,16,17,17,17, - 17,17,17,17,17,14,15,15,15,15,16,16,16,16,17,16, - 16,16,17,16,17,17,17,18,17,17,17,17,15,15,15,15, - 15,16,16,16,16,17,16,17,16,17,17,17,17,17,17,17, - 17,17,17,15,15,15,16,15,16,16,16,16,16,16,17,17, - 17,17,17,17,16,17,17,17,17,17,15,15,15,15,15,16, - 16,17,16,17,17,17,17,17,17,17,17,17,17,17,17,17, - 17, -}; - -static float _vq_quantthresh__44u7_p9_1[] = { - -850.5, -769.5, -688.5, -607.5, -526.5, -445.5, -364.5, -283.5, - -202.5, -121.5, -40.5, 40.5, 121.5, 202.5, 283.5, 364.5, - 445.5, 526.5, 607.5, 688.5, 769.5, 850.5, -}; - -static long _vq_quantmap__44u7_p9_1[] = { - 21, 19, 17, 15, 13, 11, 9, 7, - 5, 3, 1, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 20, 22, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p9_1 = { - _vq_quantthresh__44u7_p9_1, - _vq_quantmap__44u7_p9_1, - 23, - 23 -}; - -static static_codebook _44u7_p9_1 = { - 2, 529, - _vq_lengthlist__44u7_p9_1, - 1, -516171776, 1624522752, 5, 0, - _vq_quantlist__44u7_p9_1, - NULL, - &_vq_auxt__44u7_p9_1, - NULL, - 0 -}; - - -#endif diff --git a/lib/books/uncoupled/_44u7_p9_2.vqh b/lib/books/uncoupled/_44u7_p9_2.vqh deleted file mode 100644 index eee35175..00000000 --- a/lib/books/uncoupled/_44u7_p9_2.vqh +++ /dev/null @@ -1,160 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: static codebook autogenerated by vq/somethingorother - - ********************************************************************/ - -#ifndef _V__44u7_p9_2_VQH_ -#define _V__44u7_p9_2_VQH_ -#include "codebook.h" - -static long _vq_quantlist__44u7_p9_2[] = { - 40, - 39, - 41, - 38, - 42, - 37, - 43, - 36, - 44, - 35, - 45, - 34, - 46, - 33, - 47, - 32, - 48, - 31, - 49, - 30, - 50, - 29, - 51, - 28, - 52, - 27, - 53, - 26, - 54, - 25, - 55, - 24, - 56, - 23, - 57, - 22, - 58, - 21, - 59, - 20, - 60, - 19, - 61, - 18, - 62, - 17, - 63, - 16, - 64, - 15, - 65, - 14, - 66, - 13, - 67, - 12, - 68, - 11, - 69, - 10, - 70, - 9, - 71, - 8, - 72, - 7, - 73, - 6, - 74, - 5, - 75, - 4, - 76, - 3, - 77, - 2, - 78, - 1, - 79, - 0, - 80, -}; - -static long _vq_lengthlist__44u7_p9_2[] = { - 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, -}; - -static float _vq_quantthresh__44u7_p9_2[] = { - -39.5, -38.5, -37.5, -36.5, -35.5, -34.5, -33.5, -32.5, - -31.5, -30.5, -29.5, -28.5, -27.5, -26.5, -25.5, -24.5, - -23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, - -15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, - -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, - 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, - 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, - 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, - 24.5, 25.5, 26.5, 27.5, 28.5, 29.5, 30.5, 31.5, - 32.5, 33.5, 34.5, 35.5, 36.5, 37.5, 38.5, 39.5, -}; - -static long _vq_quantmap__44u7_p9_2[] = { - 79, 77, 75, 73, 71, 69, 67, 65, - 63, 61, 59, 57, 55, 53, 51, 49, - 47, 45, 43, 41, 39, 37, 35, 33, - 31, 29, 27, 25, 23, 21, 19, 17, - 15, 13, 11, 9, 7, 5, 3, 1, - 0, 2, 4, 6, 8, 10, 12, 14, - 16, 18, 20, 22, 24, 26, 28, 30, - 32, 34, 36, 38, 40, 42, 44, 46, - 48, 50, 52, 54, 56, 58, 60, 62, - 64, 66, 68, 70, 72, 74, 76, 78, - 80, -}; - -static encode_aux_threshmatch _vq_auxt__44u7_p9_2 = { - _vq_quantthresh__44u7_p9_2, - _vq_quantmap__44u7_p9_2, - 81, - 81 -}; - -static static_codebook _44u7_p9_2 = { - 1, 81, - _vq_lengthlist__44u7_p9_2, - 1, -525074432, 1611661312, 7, 0, - _vq_quantlist__44u7_p9_2, - NULL, - &_vq_auxt__44u7_p9_2, - NULL, - 0 -}; - - -#endif diff --git a/lib/codebook.c b/lib/codebook.c deleted file mode 100644 index ef19fd0b..00000000 --- a/lib/codebook.c +++ /dev/null @@ -1,624 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: basic codebook pack/unpack/code/decode operations - last mod: $Id: codebook.c,v 1.38 2002/01/22 02:16:40 xiphmont Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <ogg/ogg.h> -#include "vorbis/codec.h" -#include "codebook.h" -#include "scales.h" -#include "misc.h" -#include "os.h" - -/* packs the given codebook into the bitstream **************************/ - -int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *opb){ - long i,j; - int ordered=0; - - /* first the basic parameters */ - oggpack_write(opb,0x564342,24); - oggpack_write(opb,c->dim,16); - oggpack_write(opb,c->entries,24); - - /* pack the codewords. There are two packings; length ordered and - length random. Decide between the two now. */ - - for(i=1;i<c->entries;i++) - if(c->lengthlist[i-1]==0 || c->lengthlist[i]<c->lengthlist[i-1])break; - if(i==c->entries)ordered=1; - - if(ordered){ - /* length ordered. We only need to say how many codewords of - each length. The actual codewords are generated - deterministically */ - - long count=0; - oggpack_write(opb,1,1); /* ordered */ - oggpack_write(opb,c->lengthlist[0]-1,5); /* 1 to 32 */ - - for(i=1;i<c->entries;i++){ - long this=c->lengthlist[i]; - long last=c->lengthlist[i-1]; - if(this>last){ - for(j=last;j<this;j++){ - oggpack_write(opb,i-count,_ilog(c->entries-count)); - count=i; - } - } - } - oggpack_write(opb,i-count,_ilog(c->entries-count)); - - }else{ - /* length random. Again, we don't code the codeword itself, just - the length. This time, though, we have to encode each length */ - oggpack_write(opb,0,1); /* unordered */ - - /* algortihmic mapping has use for 'unused entries', which we tag - here. The algorithmic mapping happens as usual, but the unused - entry has no codeword. */ - for(i=0;i<c->entries;i++) - if(c->lengthlist[i]==0)break; - - if(i==c->entries){ - oggpack_write(opb,0,1); /* no unused entries */ - for(i=0;i<c->entries;i++) - oggpack_write(opb,c->lengthlist[i]-1,5); - }else{ - oggpack_write(opb,1,1); /* we have unused entries; thus we tag */ - for(i=0;i<c->entries;i++){ - if(c->lengthlist[i]==0){ - oggpack_write(opb,0,1); - }else{ - oggpack_write(opb,1,1); - oggpack_write(opb,c->lengthlist[i]-1,5); - } - } - } - } - - /* is the entry number the desired return value, or do we have a - mapping? If we have a mapping, what type? */ - oggpack_write(opb,c->maptype,4); - switch(c->maptype){ - case 0: - /* no mapping */ - break; - case 1:case 2: - /* implicitly populated value mapping */ - /* explicitly populated value mapping */ - - if(!c->quantlist){ - /* no quantlist? error */ - return(-1); - } - - /* values that define the dequantization */ - oggpack_write(opb,c->q_min,32); - oggpack_write(opb,c->q_delta,32); - oggpack_write(opb,c->q_quant-1,4); - oggpack_write(opb,c->q_sequencep,1); - - { - int quantvals; - switch(c->maptype){ - case 1: - /* a single column of (c->entries/c->dim) quantized values for - building a full value list algorithmically (square lattice) */ - quantvals=_book_maptype1_quantvals(c); - break; - case 2: - /* every value (c->entries*c->dim total) specified explicitly */ - quantvals=c->entries*c->dim; - break; - default: /* NOT_REACHABLE */ - quantvals=-1; - } - - /* quantized values */ - for(i=0;i<quantvals;i++) - oggpack_write(opb,labs(c->quantlist[i]),c->q_quant); - - } - break; - default: - /* error case; we don't have any other map types now */ - return(-1); - } - - return(0); -} - -/* unpacks a codebook from the packet buffer into the codebook struct, - readies the codebook auxiliary structures for decode *************/ -int vorbis_staticbook_unpack(oggpack_buffer *opb,static_codebook *s){ - long i,j; - memset(s,0,sizeof(*s)); - s->allocedp=1; - - /* make sure alignment is correct */ - if(oggpack_read(opb,24)!=0x564342)goto _eofout; - - /* first the basic parameters */ - s->dim=oggpack_read(opb,16); - s->entries=oggpack_read(opb,24); - if(s->entries==-1)goto _eofout; - - /* codeword ordering.... length ordered or unordered? */ - switch((int)oggpack_read(opb,1)){ - case 0: - /* unordered */ - s->lengthlist=_ogg_malloc(sizeof(*s->lengthlist)*s->entries); - - /* allocated but unused entries? */ - if(oggpack_read(opb,1)){ - /* yes, unused entries */ - - for(i=0;i<s->entries;i++){ - if(oggpack_read(opb,1)){ - long num=oggpack_read(opb,5); - if(num==-1)goto _eofout; - s->lengthlist[i]=num+1; - }else - s->lengthlist[i]=0; - } - }else{ - /* all entries used; no tagging */ - for(i=0;i<s->entries;i++){ - long num=oggpack_read(opb,5); - if(num==-1)goto _eofout; - s->lengthlist[i]=num+1; - } - } - - break; - case 1: - /* ordered */ - { - long length=oggpack_read(opb,5)+1; - s->lengthlist=_ogg_malloc(sizeof(*s->lengthlist)*s->entries); - - for(i=0;i<s->entries;){ - long num=oggpack_read(opb,_ilog(s->entries-i)); - if(num==-1)goto _eofout; - for(j=0;j<num && i<s->entries;j++,i++) - s->lengthlist[i]=length; - length++; - } - } - break; - default: - /* EOF */ - return(-1); - } - - /* Do we have a mapping to unpack? */ - switch((s->maptype=oggpack_read(opb,4))){ - case 0: - /* no mapping */ - break; - case 1: case 2: - /* implicitly populated value mapping */ - /* explicitly populated value mapping */ - - s->q_min=oggpack_read(opb,32); - s->q_delta=oggpack_read(opb,32); - s->q_quant=oggpack_read(opb,4)+1; - s->q_sequencep=oggpack_read(opb,1); - - { - int quantvals=0; - switch(s->maptype){ - case 1: - quantvals=_book_maptype1_quantvals(s); - break; - case 2: - quantvals=s->entries*s->dim; - break; - } - - /* quantized values */ - s->quantlist=_ogg_malloc(sizeof(*s->quantlist)*quantvals); - for(i=0;i<quantvals;i++) - s->quantlist[i]=oggpack_read(opb,s->q_quant); - - if(quantvals&&s->quantlist[quantvals-1]==-1)goto _eofout; - } - break; - default: - goto _errout; - } - - /* all set */ - return(0); - - _errout: - _eofout: - vorbis_staticbook_clear(s); - return(-1); -} - -/* returns the number of bits ************************************************/ -int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b){ - oggpack_write(b,book->codelist[a],book->c->lengthlist[a]); - return(book->c->lengthlist[a]); -} - -/* One the encode side, our vector writers are each designed for a -specific purpose, and the encoder is not flexible without modification: - -The LSP vector coder uses a single stage nearest-match with no -interleave, so no step and no error return. This is specced by floor0 -and doesn't change. - -Residue0 encoding interleaves, uses multiple stages, and each stage -peels of a specific amount of resolution from a lattice (thus we want -to match by threshold, not nearest match). Residue doesn't *have* to -be encoded that way, but to change it, one will need to add more -infrastructure on the encode side (decode side is specced and simpler) */ - -/* floor0 LSP (single stage, non interleaved, nearest match) */ -/* returns entry number and *modifies a* to the quantization value *****/ -int vorbis_book_errorv(codebook *book,float *a){ - int dim=book->dim,k; - int best=_best(book,a,1); - for(k=0;k<dim;k++) - a[k]=(book->valuelist+best*dim)[k]; - return(best); -} - -/* returns the number of bits and *modifies a* to the quantization value *****/ -int vorbis_book_encodev(codebook *book,int best,float *a,oggpack_buffer *b){ - int k,dim=book->dim; - for(k=0;k<dim;k++) - a[k]=(book->valuelist+best*dim)[k]; - return(vorbis_book_encode(book,best,b)); -} - -/* res0 (multistage, interleave, lattice) */ -/* returns the number of bits and *modifies a* to the remainder value ********/ -int vorbis_book_encodevs(codebook *book,float *a,oggpack_buffer *b, - int step,int addmul){ - - int best=vorbis_book_besterror(book,a,step,addmul); - return(vorbis_book_encode(book,best,b)); -} - -/* the 'eliminate the decode tree' optimization actually requires the - codewords to be MSb first, not LSb. This is an annoying inelegancy - (and one of the first places where carefully thought out design - turned out to be wrong; Vorbis II and future Ogg codecs should go - to an MSb bitpacker), but not actually the huge hit it appears to - be. The first-stage decode table catches most words so that - bitreverse is not in the main execution path. */ - -static ogg_uint32_t bitreverse(ogg_uint32_t x){ - x= ((x>>16)&0x0000ffff) | ((x<<16)&0xffff0000); - x= ((x>> 8)&0x00ff00ff) | ((x<< 8)&0xff00ff00); - x= ((x>> 4)&0x0f0f0f0f) | ((x<< 4)&0xf0f0f0f0); - x= ((x>> 2)&0x33333333) | ((x<< 2)&0xcccccccc); - return((x>> 1)&0x55555555) | ((x<< 1)&0xaaaaaaaa); -} - -STIN long decode_packed_entry_number(codebook *book, oggpack_buffer *b){ - int read=book->dec_maxlength; - long lo,hi; - long lok = oggpack_look(b,book->dec_firsttablen); - - if (lok >= 0) { - long entry = book->dec_firsttable[lok]; - if(entry&0x80000000UL){ - lo=(entry>>15)&0x7fff; - hi=book->used_entries-(entry&0x7fff); - }else{ - oggpack_adv(b, book->dec_codelengths[entry-1]); - return(entry-1); - } - }else{ - lo=0; - hi=book->used_entries; - } - - lok = oggpack_look(b, read); - - while(lok<0 && read>1) - lok = oggpack_look(b, --read); - if(lok<0)return -1; - - /* bisect search for the codeword in the ordered list */ - { - ogg_uint32_t testword=bitreverse((ogg_uint32_t)lok); - - while(hi-lo>1){ - long p=(hi-lo)>>1; - long test=book->codelist[lo+p]>testword; - lo+=p&(test-1); - hi-=p&(-test); - } - - if(book->dec_codelengths[lo]<=read){ - oggpack_adv(b, book->dec_codelengths[lo]); - return(lo); - } - } - - oggpack_adv(b, read); - return(-1); -} - -/* Decode side is specced and easier, because we don't need to find - matches using different criteria; we simply read and map. There are - two things we need to do 'depending': - - We may need to support interleave. We don't really, but it's - convenient to do it here rather than rebuild the vector later. - - Cascades may be additive or multiplicitive; this is not inherent in - the codebook, but set in the code using the codebook. Like - interleaving, it's easiest to do it here. - addmul==0 -> declarative (set the value) - addmul==1 -> additive - addmul==2 -> multiplicitive */ - -/* returns the [original, not compacted] entry number or -1 on eof *********/ -long vorbis_book_decode(codebook *book, oggpack_buffer *b){ - long packed_entry=decode_packed_entry_number(book,b); - if(packed_entry>=0) - return(book->dec_index[packed_entry]); - - /* if there's no dec_index, the codebook unpacking isn't collapsed */ - return(packed_entry); -} - -/* returns 0 on OK or -1 on eof *************************************/ -long vorbis_book_decodevs_add(codebook *book,float *a,oggpack_buffer *b,int n){ - int step=n/book->dim; - long *entry = alloca(sizeof(*entry)*step); - float **t = alloca(sizeof(*t)*step); - int i,j,o; - - for (i = 0; i < step; i++) { - entry[i]=decode_packed_entry_number(book,b); - if(entry[i]==-1)return(-1); - t[i] = book->valuelist+entry[i]*book->dim; - } - for(i=0,o=0;i<book->dim;i++,o+=step) - for (j=0;j<step;j++) - a[o+j]+=t[j][i]; - return(0); -} - -long vorbis_book_decodev_add(codebook *book,float *a,oggpack_buffer *b,int n){ - int i,j,entry; - float *t; - - if(book->dim>8){ - for(i=0;i<n;){ - entry = decode_packed_entry_number(book,b); - if(entry==-1)return(-1); - t = book->valuelist+entry*book->dim; - for (j=0;j<book->dim;) - a[i++]+=t[j++]; - } - }else{ - for(i=0;i<n;){ - entry = decode_packed_entry_number(book,b); - if(entry==-1)return(-1); - t = book->valuelist+entry*book->dim; - j=0; - switch((int)book->dim){ - case 8: - a[i++]+=t[j++]; - case 7: - a[i++]+=t[j++]; - case 6: - a[i++]+=t[j++]; - case 5: - a[i++]+=t[j++]; - case 4: - a[i++]+=t[j++]; - case 3: - a[i++]+=t[j++]; - case 2: - a[i++]+=t[j++]; - case 1: - a[i++]+=t[j++]; - case 0: - break; - } - } - } - return(0); -} - -long vorbis_book_decodev_set(codebook *book,float *a,oggpack_buffer *b,int n){ - int i,j,entry; - float *t; - - for(i=0;i<n;){ - entry = decode_packed_entry_number(book,b); - if(entry==-1)return(-1); - t = book->valuelist+entry*book->dim; - for (j=0;j<book->dim;) - a[i++]=t[j++]; - } - return(0); -} - -long vorbis_book_decodevv_add(codebook *book,float **a,long offset,int ch, - oggpack_buffer *b,int n){ - long i,j,entry; - int chptr=0; - - for(i=offset/ch;i<(offset+n)/ch;){ - entry = decode_packed_entry_number(book,b); - if(entry==-1)return(-1); - { - const float *t = book->valuelist+entry*book->dim; - for (j=0;j<book->dim;j++){ - a[chptr++][i]+=t[j]; - if(chptr==ch){ - chptr=0; - i++; - } - } - } - } - return(0); -} - -#ifdef _V_SELFTEST -/* Simple enough; pack a few candidate codebooks, unpack them. Code a - number of vectors through (keeping track of the quantized values), - and decode using the unpacked book. quantized version of in should - exactly equal out */ - -#include <stdio.h> - -#include "vorbis/book/lsp20_0.vqh" -#include "vorbis/book/res0a_13.vqh" -#define TESTSIZE 40 - -float test1[TESTSIZE]={ - 0.105939f, - 0.215373f, - 0.429117f, - 0.587974f, - - 0.181173f, - 0.296583f, - 0.515707f, - 0.715261f, - - 0.162327f, - 0.263834f, - 0.342876f, - 0.406025f, - - 0.103571f, - 0.223561f, - 0.368513f, - 0.540313f, - - 0.136672f, - 0.395882f, - 0.587183f, - 0.652476f, - - 0.114338f, - 0.417300f, - 0.525486f, - 0.698679f, - - 0.147492f, - 0.324481f, - 0.643089f, - 0.757582f, - - 0.139556f, - 0.215795f, - 0.324559f, - 0.399387f, - - 0.120236f, - 0.267420f, - 0.446940f, - 0.608760f, - - 0.115587f, - 0.287234f, - 0.571081f, - 0.708603f, -}; - -float test3[TESTSIZE]={ - 0,1,-2,3,4,-5,6,7,8,9, - 8,-2,7,-1,4,6,8,3,1,-9, - 10,11,12,13,14,15,26,17,18,19, - 30,-25,-30,-1,-5,-32,4,3,-2,0}; - -static_codebook *testlist[]={&_vq_book_lsp20_0, - &_vq_book_res0a_13,NULL}; -float *testvec[]={test1,test3}; - -int main(){ - oggpack_buffer write; - oggpack_buffer read; - long ptr=0,i; - oggpack_writeinit(&write); - - fprintf(stderr,"Testing codebook abstraction...:\n"); - - while(testlist[ptr]){ - codebook c; - static_codebook s; - float *qv=alloca(sizeof(*qv)*TESTSIZE); - float *iv=alloca(sizeof(*iv)*TESTSIZE); - memcpy(qv,testvec[ptr],sizeof(*qv)*TESTSIZE); - memset(iv,0,sizeof(*iv)*TESTSIZE); - - fprintf(stderr,"\tpacking/coding %ld... ",ptr); - - /* pack the codebook, write the testvector */ - oggpack_reset(&write); - vorbis_book_init_encode(&c,testlist[ptr]); /* get it into memory - we can write */ - vorbis_staticbook_pack(testlist[ptr],&write); - fprintf(stderr,"Codebook size %ld bytes... ",oggpack_bytes(&write)); - for(i=0;i<TESTSIZE;i+=c.dim){ - int best=_best(&c,qv+i,1); - vorbis_book_encodev(&c,best,qv+i,&write); - } - vorbis_book_clear(&c); - - fprintf(stderr,"OK.\n"); - fprintf(stderr,"\tunpacking/decoding %ld... ",ptr); - - /* transfer the write data to a read buffer and unpack/read */ - oggpack_readinit(&read,oggpack_get_buffer(&write),oggpack_bytes(&write)); - if(vorbis_staticbook_unpack(&read,&s)){ - fprintf(stderr,"Error unpacking codebook.\n"); - exit(1); - } - if(vorbis_book_init_decode(&c,&s)){ - fprintf(stderr,"Error initializing codebook.\n"); - exit(1); - } - - for(i=0;i<TESTSIZE;i+=c.dim) - if(vorbis_book_decodev_set(&c,iv+i,&read,c.dim)==-1){ - fprintf(stderr,"Error reading codebook test data (EOP).\n"); - exit(1); - } - for(i=0;i<TESTSIZE;i++) - if(fabs(qv[i]-iv[i])>.000001){ - fprintf(stderr,"read (%g) != written (%g) at position (%ld)\n", - iv[i],qv[i],i); - exit(1); - } - - fprintf(stderr,"OK\n"); - ptr++; - } - - /* The above is the trivial stuff; now try unquantizing a log scale codebook */ - - exit(0); -} - -#endif diff --git a/lib/codebook.h b/lib/codebook.h deleted file mode 100644 index 58005466..00000000 --- a/lib/codebook.h +++ /dev/null @@ -1,162 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: basic shared codebook operations - last mod: $Id: codebook.h,v 1.12 2002/01/21 20:51:28 xiphmont Exp $ - - ********************************************************************/ - -#ifndef _V_CODEBOOK_H_ -#define _V_CODEBOOK_H_ - -#include <ogg/ogg.h> - -/* This structure encapsulates huffman and VQ style encoding books; it - doesn't do anything specific to either. - - valuelist/quantlist are nonNULL (and q_* significant) only if - there's entry->value mapping to be done. - - If encode-side mapping must be done (and thus the entry needs to be - hunted), the auxiliary encode pointer will point to a decision - tree. This is true of both VQ and huffman, but is mostly useful - with VQ. - -*/ - -typedef struct static_codebook{ - long dim; /* codebook dimensions (elements per vector) */ - long entries; /* codebook entries */ - long *lengthlist; /* codeword lengths in bits */ - - /* mapping ***************************************************************/ - int maptype; /* 0=none - 1=implicitly populated values from map column - 2=listed arbitrary values */ - - /* The below does a linear, single monotonic sequence mapping. */ - long q_min; /* packed 32 bit float; quant value 0 maps to minval */ - long q_delta; /* packed 32 bit float; val 1 - val 0 == delta */ - int q_quant; /* bits: 0 < quant <= 16 */ - int q_sequencep; /* bitflag */ - - long *quantlist; /* map == 1: (int)(entries^(1/dim)) element column map - map == 2: list of dim*entries quantized entry vals - */ - - /* encode helpers ********************************************************/ - struct encode_aux_nearestmatch *nearest_tree; - struct encode_aux_threshmatch *thresh_tree; - struct encode_aux_pigeonhole *pigeon_tree; - - int allocedp; -} static_codebook; - -/* this structures an arbitrary trained book to quickly find the - nearest cell match */ -typedef struct encode_aux_nearestmatch{ - /* pre-calculated partitioning tree */ - long *ptr0; - long *ptr1; - - long *p; /* decision points (each is an entry) */ - long *q; /* decision points (each is an entry) */ - long aux; /* number of tree entries */ - long alloc; -} encode_aux_nearestmatch; - -/* assumes a maptype of 1; encode side only, so that's OK */ -typedef struct encode_aux_threshmatch{ - float *quantthresh; - long *quantmap; - int quantvals; - int threshvals; -} encode_aux_threshmatch; - -typedef struct encode_aux_pigeonhole{ - float min; - float del; - - int mapentries; - int quantvals; - long *pigeonmap; - - long fittotal; - long *fitlist; - long *fitmap; - long *fitlength; -} encode_aux_pigeonhole; - -typedef struct codebook{ - long dim; /* codebook dimensions (elements per vector) */ - long entries; /* codebook entries */ - long used_entries; /* populated codebook entries */ - const static_codebook *c; - - /* for encode, the below are entry-ordered, fully populated */ - /* for decode, the below are ordered by bitreversed codeword and only - used entries are populated */ - float *valuelist; /* list of dim*entries actual entry values */ - ogg_uint32_t *codelist; /* list of bitstream codewords for each entry */ - - int *dec_index; /* only used if sparseness collapsed */ - char *dec_codelengths; - ogg_uint32_t *dec_firsttable; - int dec_firsttablen; - int dec_maxlength; - -} codebook; - -extern void vorbis_staticbook_clear(static_codebook *b); -extern void vorbis_staticbook_destroy(static_codebook *b); -extern int vorbis_book_init_encode(codebook *dest,const static_codebook *source); -extern int vorbis_book_init_decode(codebook *dest,const static_codebook *source); -extern void vorbis_book_clear(codebook *b); - -extern float *_book_unquantize(const static_codebook *b,int n,int *map); -extern float *_book_logdist(const static_codebook *b,float *vals); -extern float _float32_unpack(long val); -extern long _float32_pack(float val); -extern int _best(codebook *book, float *a, int step); -extern int _ilog(unsigned int v); -extern long _book_maptype1_quantvals(const static_codebook *b); - -extern int vorbis_book_besterror(codebook *book,float *a,int step,int addmul); -extern long vorbis_book_codeword(codebook *book,int entry); -extern long vorbis_book_codelen(codebook *book,int entry); - - - -extern int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *b); -extern int vorbis_staticbook_unpack(oggpack_buffer *b,static_codebook *c); - -extern int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b); -extern int vorbis_book_errorv(codebook *book, float *a); -extern int vorbis_book_encodev(codebook *book, int best,float *a, - oggpack_buffer *b); -extern int vorbis_book_encodevs(codebook *book, float *a, oggpack_buffer *b, - int step,int stagetype); - -extern long vorbis_book_decode(codebook *book, oggpack_buffer *b); -extern long vorbis_book_decodevs_add(codebook *book, float *a, - oggpack_buffer *b,int n); -extern long vorbis_book_decodev_set(codebook *book, float *a, - oggpack_buffer *b,int n); -extern long vorbis_book_decodev_add(codebook *book, float *a, - oggpack_buffer *b,int n); -extern long vorbis_book_decodevv_add(codebook *book, float **a, - long off,int ch, - oggpack_buffer *b,int n); - - - -#endif diff --git a/lib/codec_internal.h b/lib/codec_internal.h deleted file mode 100644 index e5851dd2..00000000 --- a/lib/codec_internal.h +++ /dev/null @@ -1,174 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: libvorbis codec headers - last mod: $Id: codec_internal.h,v 1.13 2002/01/22 08:06:06 xiphmont Exp $ - - ********************************************************************/ - -#ifndef _V_CODECI_H_ -#define _V_CODECI_H_ - -#include "envelope.h" -#include "codebook.h" - -#define BLOCKTYPE_IMPULSE 0 -#define BLOCKTYPE_PADDING 1 -#define BLOCKTYPE_TRANSITION 0 -#define BLOCKTYPE_LONG 1 - -typedef struct vorbis_block_internal{ - float **pcmdelay; /* this is a pointer into local storage */ - float ampmax; - int blocktype; - - ogg_uint32_t *packet_markers; -} vorbis_block_internal; - -typedef void vorbis_look_time; -typedef void vorbis_look_mapping; -typedef void vorbis_look_floor; -typedef void vorbis_look_residue; -typedef void vorbis_look_transform; - -/* mode ************************************************************/ -typedef struct { - int blockflag; - int windowtype; - int transformtype; - int mapping; -} vorbis_info_mode; - -typedef void vorbis_info_time; -typedef void vorbis_info_floor; -typedef void vorbis_info_residue; -typedef void vorbis_info_mapping; - -#include "psy.h" -#include "bitrate.h" - -typedef struct backend_lookup_state { - /* local lookup storage */ - envelope_lookup *ve; /* envelope lookup */ - float **window[2][2][2]; /* block, leadin, leadout, type */ - vorbis_look_transform **transform[2]; /* block, type */ - vorbis_look_psy_global *psy_g_look; - - /* backend lookups are tied to the mode, not the backend or naked mapping */ - int modebits; - vorbis_look_mapping **mode; - - /* local storage, only used on the encoding side. This way the - application does not need to worry about freeing some packets' - memory and not others'; packet storage is always tracked. - Cleared next call to a _dsp_ function */ - unsigned char *header; - unsigned char *header1; - unsigned char *header2; - - bitrate_manager_state bms; - -} backend_lookup_state; - -/* high level configuration information for setting things up - step-by-step with the detaile vorbis_encode_ctl interface */ - -typedef struct highlevel_block { - double tone_mask_quality; - double tone_peaklimit_quality; - - double noise_bias_quality; - double noise_compand_quality; - - double ath_quality; - -} highlevel_block; - -typedef struct highlevel_encode_setup { - double base_quality; /* these have to be tracked by the ctl */ - double base_quality_short; /* interface so that the right books get */ - double base_quality_long; /* chosen... */ - - int short_block_p; - int long_block_p; - int impulse_block_p; - - int stereo_couple_p; - int stereo_backfill_p; - int residue_backfill_p; - - int stereo_point_dB; - double stereo_point_kHz[2]; - double lowpass_kHz[2]; - - double ath_floating_dB; - double ath_absolute_dB; - - double amplitude_track_dBpersec; - double trigger_quality; - - highlevel_block blocktype[4]; /* impulse, padding, trans, long */ - -} highlevel_encode_setup; - -/* codec_setup_info contains all the setup information specific to the - specific compression/decompression mode in progress (eg, - psychoacoustic settings, channel setup, options, codebook - etc). -*********************************************************************/ - -typedef struct codec_setup_info { - - /* Vorbis supports only short and long blocks, but allows the - encoder to choose the sizes */ - - long blocksizes[2]; - - /* modes are the primary means of supporting on-the-fly different - blocksizes, different channel mappings (LR or M/A), - different residue backends, etc. Each mode consists of a - blocksize flag and a mapping (along with the mapping setup */ - - int modes; - int maps; - int times; - int floors; - int residues; - int books; - int psys; /* encode only */ - - vorbis_info_mode *mode_param[64]; - int map_type[64]; - vorbis_info_mapping *map_param[64]; - int time_type[64]; - vorbis_info_time *time_param[64]; - int floor_type[64]; - vorbis_info_floor *floor_param[64]; - int residue_type[64]; - vorbis_info_residue *residue_param[64]; - static_codebook *book_param[256]; - codebook *fullbooks; - - vorbis_info_psy *psy_param[64]; /* encode only */ - vorbis_info_psy_global psy_g_param; - - bitrate_manager_info bi; - highlevel_encode_setup hi; - - int passlimit[32]; /* iteration limit per couple/quant pass */ - int coupling_passes; -} codec_setup_info; - -extern vorbis_look_psy_global *_vp_global_look(vorbis_info *vi); -extern void _vp_global_free(vorbis_look_psy_global *look); - -#endif diff --git a/lib/envelope.c b/lib/envelope.c deleted file mode 100644 index b31d6134..00000000 --- a/lib/envelope.c +++ /dev/null @@ -1,286 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: PCM data envelope analysis and manipulation - last mod: $Id: envelope.c,v 1.41 2001/12/20 01:00:26 segher Exp $ - - Preecho calculation. - - ********************************************************************/ - -#include <stdlib.h> -#include <string.h> -#include <stdio.h> -#include <math.h> -#include <ogg/ogg.h> -#include "vorbis/codec.h" -#include "codec_internal.h" - -#include "os.h" -#include "scales.h" -#include "envelope.h" -#include "misc.h" -#include "iir.c" /* Yes, ugly, but needed for inlining */ - -/* Digital filter designed by mkfilter/mkshape/gencode A.J. Fisher */ - -static int cheb_highpass_stages=6; -static float cheb_highpass_B[]={1.f,-6.f,15.f,-20.f,15.f,-6.f,1.f}; - -static int cheb_bandpass_stages=6; -static float cheb_bandpass_B[]={-1.f,0.f,3.f,0.f,-3.f,0.f,1.f}; - - -/* 10kHz Chebyshev highpass */ -static float cheb_highpass10k_gain= 54.34519586f; -static float cheb_highpass10k_A[]={ - -0.2064797169f, - -0.5609713214f, - -1.1352465327f, - -1.4495555418f, - -1.7938140760f, - -0.9473564683f}; - -/* 6kHz-10kHz Chebyshev bandpass */ -static float cheb_bandpass6k_gain=113.4643935f; -static float cheb_bandpass6k_A[]={ - -0.5712621337f, - 1.5626130710f, - -3.3348854983f, - 4.0471340821f, - -4.0051680331f, - 2.2786325610f}; - -/* 3kHz-6kHz Chebyshev bandpass */ -static float cheb_bandpass3k_gain= 248.8359377f; -static float cheb_bandpass3k_A[]={ - -0.6564230022f, - 3.3747911257f, - -8.0098635981f, - 11.0040876874f, - -9.2250963484f, - 4.4760355389f}; - -/* 1.5kHz-3kHz Chebyshev bandpass */ -static float cheb_bandpass1k_gain= 1798.537183f; -static float cheb_bandpass1k_A[]={ - -0.8097527363f, - 4.7725742682f, - -11.9800219408f, - 16.3770336223f, - -12.8553129536f, - 5.4948074309f}; - -void _ve_envelope_init(envelope_lookup *e,vorbis_info *vi){ - codec_setup_info *ci=vi->codec_setup; - vorbis_info_psy_global *gi=&ci->psy_g_param; - int ch=vi->channels; - int i; - e->winlength=ci->blocksizes[0]/2; /* not random */ - e->minenergy=fromdB(gi->preecho_minenergy); - e->iir=_ogg_calloc(ch*4,sizeof(*e->iir)); - e->filtered=_ogg_calloc(ch*4,sizeof(*e->filtered)); - e->ch=ch; - e->storage=128; - for(i=0;i<ch*4;i+=4){ - - IIR_init(e->iir+i,cheb_highpass_stages,cheb_highpass10k_gain, - cheb_highpass10k_A,cheb_highpass_B); - IIR_init(e->iir+i+1,cheb_bandpass_stages,cheb_bandpass6k_gain, - cheb_bandpass6k_A,cheb_bandpass_B); - IIR_init(e->iir+i+2,cheb_bandpass_stages,cheb_bandpass3k_gain, - cheb_bandpass3k_A,cheb_bandpass_B); - IIR_init(e->iir+i+3,cheb_bandpass_stages,cheb_bandpass1k_gain, - cheb_bandpass1k_A,cheb_bandpass_B); - - e->filtered[i]=_ogg_calloc(e->storage,sizeof(*e->filtered[i])); - e->filtered[i+1]=_ogg_calloc(e->storage,sizeof(*e->filtered[i+1])); - e->filtered[i+2]=_ogg_calloc(e->storage,sizeof(*e->filtered[i+2])); - e->filtered[i+3]=_ogg_calloc(e->storage,sizeof(*e->filtered[i+3])); - } - -} - -void _ve_envelope_clear(envelope_lookup *e){ - int i; - for(i=0;i<e->ch*4;i++){ - IIR_clear((e->iir+i)); - _ogg_free(e->filtered[i]); - } - _ogg_free(e->filtered); - _ogg_free(e->iir); - memset(e,0,sizeof(*e)); -} - -/* straight threshhold based until we find something that works better - and isn't patented */ -static float _ve_deltai(envelope_lookup *ve,float *pre,float *post){ - long n=ve->winlength; - - long i; - - /* we want to have a 'minimum bar' for energy, else we're just - basing blocks on quantization noise that outweighs the signal - itself (for low power signals) */ - - float minV=ve->minenergy; - float A=minV*minV*n; - float B=A; - - for(i=0;i<n;i++){ - A+=pre[i]*pre[i]; - B+=post[i]*post[i]; - } - - A=todB(&A); - B=todB(&B); - - return(B-A); -} - -long _ve_envelope_search(vorbis_dsp_state *v){ - vorbis_info *vi=v->vi; - codec_setup_info *ci=vi->codec_setup; - vorbis_info_psy_global *gi=&ci->psy_g_param; - envelope_lookup *ve=((backend_lookup_state *)(v->backend_state))->ve; - long i,j,k; - - /* make sure we have enough storage to match the PCM */ - if(v->pcm_storage>ve->storage){ - ve->storage=v->pcm_storage; - for(i=0;i<ve->ch*4;i++) - ve->filtered[i]=_ogg_realloc(ve->filtered[i],ve->storage*sizeof(*ve->filtered[i])); - } - - /* catch up the highpass to match the pcm */ - for(i=0;i<ve->ch;i++){ - float *pcm=v->pcm[i]; - float *filtered0=ve->filtered[i*4]; - float *filtered1=ve->filtered[i*4+1]; - float *filtered2=ve->filtered[i*4+2]; - float *filtered3=ve->filtered[i*4+3]; - IIR_state *iir0=ve->iir+i*4; - IIR_state *iir1=ve->iir+i*4+1; - IIR_state *iir2=ve->iir+i*4+2; - IIR_state *iir3=ve->iir+i*4+3; - int flag=1; - for(j=ve->current;j<v->pcm_current;j++){ - filtered0[j]=IIR_filter(iir0,pcm[j]); - filtered1[j]=IIR_filter_Band(iir1,pcm[j]); - filtered2[j]=IIR_filter_Band(iir2,pcm[j]); - filtered3[j]=IIR_filter_Band(iir3,pcm[j]); - if(pcm[j])flag=0; - } - if(flag && ve->current+64<v->pcm_current){ - IIR_reset(iir0); - IIR_reset(iir1); - IIR_reset(iir2); - IIR_reset(iir3); - } - - } - - ve->current=v->pcm_current; - - { - int flag=-1; - long centerW=v->centerW; - long beginW=centerW-ci->blocksizes[v->W]/4; - /*long endW=centerW+ci->blocksizes[v->W]/4+ci->blocksizes[0]/4;*/ - long testW=centerW+ci->blocksizes[v->W]/4+ci->blocksizes[1]/2+ci->blocksizes[0]/4; - if(v->W) - beginW-=ci->blocksizes[v->lW]/4; - else - beginW-=ci->blocksizes[0]/4; - - if(ve->mark>=centerW && ve->mark<testW)return(0); - if(ve->mark>=testW)return(1); - - if(v->W) - j=ve->cursor; - else - j=centerW-ci->blocksizes[0]/4; - - while(j+ve->winlength*3/2<=v->pcm_current){ - if(j>=testW)return(1); - ve->cursor=j; - - for(i=0;i<ve->ch;i++){ - for(k=0;k<4;k++){ - float *filtered=ve->filtered[i*4+k]+j; - float *filtered2=ve->filtered[i*4+k]+j+ve->winlength/2; - float m=_ve_deltai(ve,filtered-ve->winlength,filtered); - float mm=_ve_deltai(ve,filtered2-ve->winlength,filtered2); - - if(m>gi->preecho_thresh[k] || m<gi->postecho_thresh[k]){ - if(j<=centerW){ - ve->prevmark=ve->mark=j; - }else{ - /* if a quarter-short-block advance is an even stronger - reading, set *that* as the impulse point. */ - if((m>0. && mm>m) || (m<0. && mm<m)) - flag=j+ve->winlength/2; - else - if(flag<0)flag=j; - } - } - } - } - - if(flag>=0){ - ve->prevmark=ve->mark; - ve->mark=flag; - if(flag>=testW)return(1); - return(0); - } - - j+=ve->winlength/2; - } - } - - return(-1); -} - -int _ve_envelope_mark(vorbis_dsp_state *v){ - envelope_lookup *ve=((backend_lookup_state *)(v->backend_state))->ve; - vorbis_info *vi=v->vi; - codec_setup_info *ci=vi->codec_setup; - long centerW=v->centerW; - long beginW=centerW-ci->blocksizes[v->W]/4; - long endW=centerW+ci->blocksizes[v->W]/4; - if(v->W){ - beginW-=ci->blocksizes[v->lW]/4; - endW+=ci->blocksizes[v->nW]/4; - }else{ - beginW-=ci->blocksizes[0]/4; - endW+=ci->blocksizes[0]/4; - } - - if(ve->prevmark>=beginW && ve->prevmark<endW)return(1); - if(ve->mark>=beginW && ve->mark<endW)return(1); - return(0); -} - -void _ve_envelope_shift(envelope_lookup *e,long shift){ - int i; - for(i=0;i<e->ch*4;i++) - memmove(e->filtered[i],e->filtered[i]+shift,(e->current-shift)* - sizeof(*e->filtered[i])); - e->current-=shift; - if(e->prevmark>=0) - e->prevmark-=shift; - if(e->mark>=0) - e->mark-=shift; - e->cursor-=shift; -} - - diff --git a/lib/envelope.h b/lib/envelope.h deleted file mode 100644 index efc02429..00000000 --- a/lib/envelope.h +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: PCM data envelope analysis and manipulation - last mod: $Id: envelope.h,v 1.18 2001/12/20 01:00:26 segher Exp $ - - ********************************************************************/ - -#ifndef _V_ENVELOPE_ -#define _V_ENVELOPE_ - -#include "iir.h" -#include "smallft.h" - -typedef struct { - int ch; - int winlength; - int searchstep; - float minenergy; - - IIR_state *iir; - float **filtered; - - long storage; - long current; - long mark; - long prevmark; - long cursor; -} envelope_lookup; - -extern void _ve_envelope_init(envelope_lookup *e,vorbis_info *vi); -extern void _ve_envelope_clear(envelope_lookup *e); -extern long _ve_envelope_search(vorbis_dsp_state *v); -extern void _ve_envelope_shift(envelope_lookup *e,long shift); -extern int _ve_envelope_mark(vorbis_dsp_state *v); - - -#endif - diff --git a/lib/floor0.c b/lib/floor0.c deleted file mode 100644 index 846e5309..00000000 --- a/lib/floor0.c +++ /dev/null @@ -1,468 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: floor backend 0 implementation - last mod: $Id: floor0.c,v 1.50 2002/01/22 08:06:06 xiphmont Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <ogg/ogg.h> -#include "vorbis/codec.h" -#include "codec_internal.h" -#include "registry.h" -#include "lpc.h" -#include "lsp.h" -#include "codebook.h" -#include "scales.h" -#include "misc.h" -#include "os.h" - -#include "misc.h" -#include <stdio.h> - -typedef struct { - long n; - int ln; - int m; - int *linearmap; - - vorbis_info_floor0 *vi; - lpc_lookup lpclook; - float *lsp_look; - - long bits; - long frames; -} vorbis_look_floor0; - -/* infrastructure for finding fit */ -static long _f0_fit(codebook *book, - float *orig, - float *workfit, - int cursor){ - int dim=book->dim; - float norm,base=0.f; - int i,best=0; - float *lsp=workfit+cursor; - - if(cursor)base=workfit[cursor-1]; - norm=orig[cursor+dim-1]-base; - - for(i=0;i<dim;i++) - lsp[i]=(orig[i+cursor]-base); - best=_best(book,lsp,1); - - memcpy(lsp,book->valuelist+best*dim,dim*sizeof(*lsp)); - for(i=0;i<dim;i++) - lsp[i]+=base; - return(best); -} - -/***********************************************/ - -static vorbis_info_floor *floor0_copy_info (vorbis_info_floor *i){ - vorbis_info_floor0 *info=(vorbis_info_floor0 *)i; - vorbis_info_floor0 *ret=_ogg_malloc(sizeof(*ret)); - memcpy(ret,info,sizeof(*ret)); - return(ret); -} - -static void floor0_free_info(vorbis_info_floor *i){ - vorbis_info_floor0 *info=(vorbis_info_floor0 *)i; - if(info){ - memset(info,0,sizeof(*info)); - _ogg_free(info); - } -} - -static void floor0_free_look(vorbis_look_floor *i){ - vorbis_look_floor0 *look=(vorbis_look_floor0 *)i; - if(look){ - - /*fprintf(stderr,"floor 0 bit usage %f\n", - (float)look->bits/look->frames);*/ - - if(look->linearmap)_ogg_free(look->linearmap); - if(look->lsp_look)_ogg_free(look->lsp_look); - lpc_clear(&look->lpclook); - memset(look,0,sizeof(*look)); - _ogg_free(look); - } -} - -static void floor0_pack (vorbis_info_floor *i,oggpack_buffer *opb){ - vorbis_info_floor0 *info=(vorbis_info_floor0 *)i; - int j; - oggpack_write(opb,info->order,8); - oggpack_write(opb,info->rate,16); - oggpack_write(opb,info->barkmap,16); - oggpack_write(opb,info->ampbits,6); - oggpack_write(opb,info->ampdB,8); - oggpack_write(opb,info->numbooks-1,4); - for(j=0;j<info->numbooks;j++) - oggpack_write(opb,info->books[j],8); -} - -static vorbis_info_floor *floor0_unpack (vorbis_info *vi,oggpack_buffer *opb){ - codec_setup_info *ci=vi->codec_setup; - int j; - - vorbis_info_floor0 *info=_ogg_malloc(sizeof(*info)); - info->order=oggpack_read(opb,8); - info->rate=oggpack_read(opb,16); - info->barkmap=oggpack_read(opb,16); - info->ampbits=oggpack_read(opb,6); - info->ampdB=oggpack_read(opb,8); - info->numbooks=oggpack_read(opb,4)+1; - - if(info->order<1)goto err_out; - if(info->rate<1)goto err_out; - if(info->barkmap<1)goto err_out; - if(info->numbooks<1)goto err_out; - - for(j=0;j<info->numbooks;j++){ - info->books[j]=oggpack_read(opb,8); - if(info->books[j]<0 || info->books[j]>=ci->books)goto err_out; - } - return(info); - - err_out: - floor0_free_info(info); - return(NULL); -} - -/* initialize Bark scale and normalization lookups. We could do this - with static tables, but Vorbis allows a number of possible - combinations, so it's best to do it computationally. - - The below is authoritative in terms of defining scale mapping. - Note that the scale depends on the sampling rate as well as the - linear block and mapping sizes */ - -static vorbis_look_floor *floor0_look (vorbis_dsp_state *vd,vorbis_info_mode *mi, - vorbis_info_floor *i){ - int j; - float scale; - vorbis_info *vi=vd->vi; - codec_setup_info *ci=vi->codec_setup; - vorbis_info_floor0 *info=(vorbis_info_floor0 *)i; - vorbis_look_floor0 *look=_ogg_calloc(1,sizeof(*look)); - look->m=info->order; - look->n=ci->blocksizes[mi->blockflag]/2; - look->ln=info->barkmap; - look->vi=info; - - if(vd->analysisp) - lpc_init(&look->lpclook,look->ln,look->m); - - /* we choose a scaling constant so that: - floor(bark(rate/2-1)*C)=mapped-1 - floor(bark(rate/2)*C)=mapped */ - scale=look->ln/toBARK(info->rate/2.f); - - /* the mapping from a linear scale to a smaller bark scale is - straightforward. We do *not* make sure that the linear mapping - does not skip bark-scale bins; the decoder simply skips them and - the encoder may do what it wishes in filling them. They're - necessary in some mapping combinations to keep the scale spacing - accurate */ - look->linearmap=_ogg_malloc((look->n+1)*sizeof(*look->linearmap)); - for(j=0;j<look->n;j++){ - int val=floor( toBARK((info->rate/2.f)/look->n*j) - *scale); /* bark numbers represent band edges */ - if(val>=look->ln)val=look->ln; /* guard against the approximation */ - look->linearmap[j]=val; - } - look->linearmap[j]=-1; - - look->lsp_look=_ogg_malloc(look->ln*sizeof(*look->lsp_look)); - for(j=0;j<look->ln;j++) - look->lsp_look[j]=2*cos(M_PI/look->ln*j); - - return look; -} - -/* less efficient than the decode side (written for clarity). We're - not bottlenecked here anyway */ - -float _curve_to_lpc(float *curve,float *lpc, - vorbis_look_floor0 *l){ - /* map the input curve to a bark-scale curve for encoding */ - - int mapped=l->ln; - float *work=alloca(sizeof(*work)*mapped); - int i,j,last=0; - int bark=0; - static int seq=0; - - memset(work,0,sizeof(*work)*mapped); - - /* Only the decode side is behavior-specced; for now in the encoder, - we select the maximum value of each band as representative (this - helps make sure peaks don't go out of range. In error terms, - selecting min would make more sense, but the codebook is trained - numerically, so we don't actually lose. We'd still want to - use the original curve for error and noise estimation */ - - for(i=0;i<l->n;i++){ - bark=l->linearmap[i]; - if(work[bark]<curve[i])work[bark]=curve[i]; - if(bark>last+1){ - /* If the bark scale is climbing rapidly, some bins may end up - going unused. This isn't a waste actually; it keeps the - scale resolution even so that the LPC generator has an easy - time. However, if we leave the bins empty we lose energy. - So, fill 'em in. The decoder does not do anything with he - unused bins, so we can fill them anyway we like to end up - with a better spectral curve */ - - /* we'll always have a bin zero, so we don't need to guard init */ - long span=bark-last; - for(j=1;j<span;j++){ - float del=(float)j/span; - work[j+last]=work[bark]*del+work[last]*(1.f-del); - } - } - last=bark; - } - - /* If we're over-ranged to avoid edge effects, fill in the end of spectrum gap */ - for(i=bark+1;i<mapped;i++) - work[i]=work[i-1]; - - - /**********************/ - - for(i=0;i<l->n;i++) - curve[i]-=150; - - _analysis_output("barkfloor",seq,work,bark,0,0); - _analysis_output("barkcurve",seq++,curve,l->n,1,0); - - for(i=0;i<l->n;i++) - curve[i]+=150; - - /**********************/ - - return vorbis_lpc_from_curve(work,lpc,&(l->lpclook)); -} - -static int floor0_forward(vorbis_block *vb,vorbis_look_floor *in, - float *mdct, const float *logmdct, /* in */ - const float *logmask, const float *logmax, /* in */ - float *codedflr){ /* out */ - long j; - vorbis_look_floor0 *look=(vorbis_look_floor0 *)in; - vorbis_info_floor0 *info=look->vi; - float amp; - long val=0; - static int seq=0; - -#ifdef TRAIN_LSP - FILE *of; - FILE *ef; - char buffer[80]; - -#if 1 - sprintf(buffer,"lsp0coeff_%d.vqd",vb->mode); - of=fopen(buffer,"a"); -#endif -#endif - - seq++; - - - /* our floor comes in on a [-Inf...0] dB scale. The curve has to be - positive, so we offset it. */ - - for(j=0;j<look->n;j++) - codedflr[j]=logmask[j]+info->ampdB; - - /* use 'out' as temp storage */ - /* Convert our floor to a set of lpc coefficients */ - amp=sqrt(_curve_to_lpc(codedflr,codedflr,look)); - - /* amp is in the range (0. to ampdB]. Encode that range using - ampbits bits */ - - { - long maxval=(1L<<info->ampbits)-1; - - val=rint(amp/info->ampdB*maxval); - - if(val<0)val=0; /* likely */ - if(val>maxval)val=maxval; /* not bloody likely */ - - if(val>0) - amp=(float)val/maxval*info->ampdB; - else - amp=0; - } - - if(val){ - /* LSP <-> LPC is orthogonal and LSP quantizes more stably */ - _analysis_output("lpc",seq-1,codedflr,look->m,0,0); - if(vorbis_lpc_to_lsp(codedflr,codedflr,look->m)) - val=0; - - } - - oggpack_write(&vb->opb,val,info->ampbits); - look->bits+=info->ampbits+1; - look->frames++; - - if(val){ - float *lspwork=alloca(look->m*sizeof(*lspwork)); - - /* the spec supports using one of a number of codebooks. Right - now, encode using this lib supports only one */ - codec_setup_info *ci=vb->vd->vi->codec_setup; - codebook *b; - int booknum; - - _analysis_output("lsp",seq-1,codedflr,look->m,0,0); - - /* which codebook to use? We do it only by range right now. */ - if(info->numbooks>1){ - float last=0.; - for(j=0;j<look->m;j++){ - float val=codedflr[j]-last; - if(val<info->lessthan || val>info->greaterthan)break; - last=codedflr[j]; - } - if(j<look->m) - booknum=0; - else - booknum=1; - }else - booknum=0; - - b=ci->fullbooks+info->books[booknum]; - oggpack_write(&vb->opb,booknum,_ilog(info->numbooks)); - look->bits+=_ilog(info->numbooks); - -#ifdef TRAIN_LSP - { - float last=0.f; - for(j=0;j<look->m;j++){ - fprintf(of,"%.12g, ",codedflr[j]-last); - last=codedflr[j]; - } - } - fprintf(of,"\n"); - fclose(of); - - sprintf(buffer,"lsp0ent_m%d_b%d.vqd",vb->mode,booknum); - ef=fopen(buffer,"a"); - -#endif - - /* code the spectral envelope, and keep track of the actual - quantized values; we don't want creeping error as each block is - nailed to the last quantized value of the previous block. */ - - for(j=0;j<look->m;j+=b->dim){ - int entry=_f0_fit(b,codedflr,lspwork,j); - look->bits+=vorbis_book_encode(b,entry,&vb->opb); - -#ifdef TRAIN_LSP - fprintf(ef,"%d,\n",entry); -#endif - - } - -#ifdef TRAIN_LSP - fclose(ef); -#endif - - _analysis_output("lsp2",seq-1,lspwork,look->m,0,0); - - /* take the coefficients back to a spectral envelope curve */ - for(j=0;j<look->n;j++) - codedflr[j]=1.f; - vorbis_lsp_to_curve(codedflr,look->linearmap,look->n,look->ln, - lspwork,look->m,amp,(float)info->ampdB); - - _analysis_output("barklsp",seq-1,codedflr,look->n,1,1); - _analysis_output("lsp3",seq-1,codedflr,look->n,0,1); - - return(val); - } - -#ifdef TRAIN_LSP - fclose(of); -#endif - - memset(codedflr,0,sizeof(*codedflr)*look->n); - memset(mdct,0,sizeof(*mdct)*look->n); - return(val); -} - -static void *floor0_inverse1(vorbis_block *vb,vorbis_look_floor *i){ - vorbis_look_floor0 *look=(vorbis_look_floor0 *)i; - vorbis_info_floor0 *info=look->vi; - int j,k; - - int ampraw=oggpack_read(&vb->opb,info->ampbits); - if(ampraw>0){ /* also handles the -1 out of data case */ - long maxval=(1<<info->ampbits)-1; - float amp=(float)ampraw/maxval*info->ampdB; - int booknum=oggpack_read(&vb->opb,_ilog(info->numbooks)); - - if(booknum!=-1 && booknum<info->numbooks){ /* be paranoid */ - codec_setup_info *ci=vb->vd->vi->codec_setup; - codebook *b=ci->fullbooks+info->books[booknum]; - float last=0.f; - float *lsp=_vorbis_block_alloc(vb,sizeof(*lsp)*(look->m+1)); - - for(j=0;j<look->m;j+=b->dim) - if(vorbis_book_decodev_set(b,lsp+j,&vb->opb,b->dim)==-1)goto eop; - for(j=0;j<look->m;){ - for(k=0;k<b->dim;k++,j++)lsp[j]+=last; - last=lsp[j-1]; - } - - lsp[look->m]=amp; - return(lsp); - } - } - eop: - return(NULL); -} - -static int floor0_inverse2(vorbis_block *vb,vorbis_look_floor *i, - void *memo,float *out){ - vorbis_look_floor0 *look=(vorbis_look_floor0 *)i; - vorbis_info_floor0 *info=look->vi; - - if(memo){ - float *lsp=(float *)memo; - float amp=lsp[look->m]; - - /* take the coefficients back to a spectral envelope curve */ - vorbis_lsp_to_curve(out,look->linearmap,look->n,look->ln, - lsp,look->m,amp,(float)info->ampdB); - return(1); - } - memset(out,0,sizeof(*out)*look->n); - return(0); -} - -/* export hooks */ -vorbis_func_floor floor0_exportbundle={ - &floor0_pack,&floor0_unpack,&floor0_look,&floor0_copy_info,&floor0_free_info, - &floor0_free_look,&floor0_forward,&floor0_inverse1,&floor0_inverse2 -}; - - diff --git a/lib/floor1.c b/lib/floor1.c deleted file mode 100644 index ff0713a4..00000000 --- a/lib/floor1.c +++ /dev/null @@ -1,1152 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: floor backend 1 implementation - last mod: $Id: floor1.c,v 1.20 2002/01/22 08:06:06 xiphmont Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <ogg/ogg.h> -#include "vorbis/codec.h" -#include "codec_internal.h" -#include "registry.h" -#include "codebook.h" -#include "misc.h" -#include "scales.h" - -#include <stdio.h> - -#define floor1_rangedB 140 /* floor 1 fixed at -140dB to 0dB range */ - -typedef struct { - int sorted_index[VIF_POSIT+2]; - int forward_index[VIF_POSIT+2]; - int reverse_index[VIF_POSIT+2]; - - int hineighbor[VIF_POSIT]; - int loneighbor[VIF_POSIT]; - int posts; - - int n; - int quant_q; - vorbis_info_floor1 *vi; - - long phrasebits; - long postbits; - long frames; -} vorbis_look_floor1; - -typedef struct lsfit_acc{ - long x0; - long x1; - - long xa; - long ya; - long x2a; - long y2a; - long xya; - long n; - long an; - long un; - long edgey0; - long edgey1; -} lsfit_acc; - -/***********************************************/ - -static vorbis_info_floor *floor1_copy_info (vorbis_info_floor *i){ - vorbis_info_floor1 *info=(vorbis_info_floor1 *)i; - vorbis_info_floor1 *ret=_ogg_malloc(sizeof(*ret)); - memcpy(ret,info,sizeof(*ret)); - return(ret); -} - -static void floor1_free_info(vorbis_info_floor *i){ - vorbis_info_floor1 *info=(vorbis_info_floor1 *)i; - if(info){ - memset(info,0,sizeof(*info)); - _ogg_free(info); - } -} - -static void floor1_free_look(vorbis_look_floor *i){ - vorbis_look_floor1 *look=(vorbis_look_floor1 *)i; - if(look){ - /*fprintf(stderr,"floor 1 bit usage %f:%f (%f total)\n", - (float)look->phrasebits/look->frames, - (float)look->postbits/look->frames, - (float)(look->postbits+look->phrasebits)/look->frames);*/ - - memset(look,0,sizeof(*look)); - _ogg_free(look); - } -} - -static int ilog(unsigned int v){ - int ret=0; - while(v){ - ret++; - v>>=1; - } - return(ret); -} - -static int ilog2(unsigned int v){ - int ret=0; - while(v>1){ - ret++; - v>>=1; - } - return(ret); -} - -static void floor1_pack (vorbis_info_floor *i,oggpack_buffer *opb){ - vorbis_info_floor1 *info=(vorbis_info_floor1 *)i; - int j,k; - int count=0; - int rangebits; - int maxposit=info->postlist[1]; - int maxclass=-1; - - /* save out partitions */ - oggpack_write(opb,info->partitions,5); /* only 0 to 31 legal */ - for(j=0;j<info->partitions;j++){ - oggpack_write(opb,info->partitionclass[j],4); /* only 0 to 15 legal */ - if(maxclass<info->partitionclass[j])maxclass=info->partitionclass[j]; - } - - /* save out partition classes */ - for(j=0;j<maxclass+1;j++){ - oggpack_write(opb,info->class_dim[j]-1,3); /* 1 to 8 */ - oggpack_write(opb,info->class_subs[j],2); /* 0 to 3 */ - if(info->class_subs[j])oggpack_write(opb,info->class_book[j],8); - for(k=0;k<(1<<info->class_subs[j]);k++) - oggpack_write(opb,info->class_subbook[j][k]+1,8); - } - - /* save out the post list */ - oggpack_write(opb,info->mult-1,2); /* only 1,2,3,4 legal now */ - oggpack_write(opb,ilog2(maxposit),4); - rangebits=ilog2(maxposit); - - for(j=0,k=0;j<info->partitions;j++){ - count+=info->class_dim[info->partitionclass[j]]; - for(;k<count;k++) - oggpack_write(opb,info->postlist[k+2],rangebits); - } -} - - -static vorbis_info_floor *floor1_unpack (vorbis_info *vi,oggpack_buffer *opb){ - codec_setup_info *ci=vi->codec_setup; - int j,k,count=0,maxclass=-1,rangebits; - - vorbis_info_floor1 *info=_ogg_calloc(1,sizeof(*info)); - /* read partitions */ - info->partitions=oggpack_read(opb,5); /* only 0 to 31 legal */ - for(j=0;j<info->partitions;j++){ - info->partitionclass[j]=oggpack_read(opb,4); /* only 0 to 15 legal */ - if(maxclass<info->partitionclass[j])maxclass=info->partitionclass[j]; - } - - /* read partition classes */ - for(j=0;j<maxclass+1;j++){ - info->class_dim[j]=oggpack_read(opb,3)+1; /* 1 to 8 */ - info->class_subs[j]=oggpack_read(opb,2); /* 0,1,2,3 bits */ - if(info->class_subs[j]<0) - goto err_out; - if(info->class_subs[j])info->class_book[j]=oggpack_read(opb,8); - if(info->class_book[j]<0 || info->class_book[j]>=ci->books) - goto err_out; - for(k=0;k<(1<<info->class_subs[j]);k++){ - info->class_subbook[j][k]=oggpack_read(opb,8)-1; - if(info->class_subbook[j][k]<-1 || info->class_subbook[j][k]>=ci->books) - goto err_out; - } - } - - /* read the post list */ - info->mult=oggpack_read(opb,2)+1; /* only 1,2,3,4 legal now */ - rangebits=oggpack_read(opb,4); - - for(j=0,k=0;j<info->partitions;j++){ - count+=info->class_dim[info->partitionclass[j]]; - for(;k<count;k++){ - int t=info->postlist[k+2]=oggpack_read(opb,rangebits); - if(t<0 || t>=(1<<rangebits)) - goto err_out; - } - } - info->postlist[0]=0; - info->postlist[1]=1<<rangebits; - - return(info); - - err_out: - floor1_free_info(info); - return(NULL); -} - -static int icomp(const void *a,const void *b){ - return(**(int **)a-**(int **)b); -} - -static vorbis_look_floor *floor1_look(vorbis_dsp_state *vd,vorbis_info_mode *mi, - vorbis_info_floor *in){ - - int *sortpointer[VIF_POSIT+2]; - vorbis_info_floor1 *info=(vorbis_info_floor1 *)in; - vorbis_look_floor1 *look=_ogg_calloc(1,sizeof(*look)); - int i,j,n=0; - - look->vi=info; - look->n=info->postlist[1]; - - /* we drop each position value in-between already decoded values, - and use linear interpolation to predict each new value past the - edges. The positions are read in the order of the position - list... we precompute the bounding positions in the lookup. Of - course, the neighbors can change (if a position is declined), but - this is an initial mapping */ - - for(i=0;i<info->partitions;i++)n+=info->class_dim[info->partitionclass[i]]; - n+=2; - look->posts=n; - - /* also store a sorted position index */ - for(i=0;i<n;i++)sortpointer[i]=info->postlist+i; - qsort(sortpointer,n,sizeof(*sortpointer),icomp); - - /* points from sort order back to range number */ - for(i=0;i<n;i++)look->forward_index[i]=sortpointer[i]-info->postlist; - /* points from range order to sorted position */ - for(i=0;i<n;i++)look->reverse_index[look->forward_index[i]]=i; - /* we actually need the post values too */ - for(i=0;i<n;i++)look->sorted_index[i]=info->postlist[look->forward_index[i]]; - - /* quantize values to multiplier spec */ - switch(info->mult){ - case 1: /* 1024 -> 256 */ - look->quant_q=256; - break; - case 2: /* 1024 -> 128 */ - look->quant_q=128; - break; - case 3: /* 1024 -> 86 */ - look->quant_q=86; - break; - case 4: /* 1024 -> 64 */ - look->quant_q=64; - break; - } - - /* discover our neighbors for decode where we don't use fit flags - (that would push the neighbors outward) */ - for(i=0;i<n-2;i++){ - int lo=0; - int hi=1; - int lx=0; - int hx=look->n; - int currentx=info->postlist[i+2]; - for(j=0;j<i+2;j++){ - int x=info->postlist[j]; - if(x>lx && x<currentx){ - lo=j; - lx=x; - } - if(x<hx && x>currentx){ - hi=j; - hx=x; - } - } - look->loneighbor[i]=lo; - look->hineighbor[i]=hi; - } - - return(look); -} - -static int render_point(int x0,int x1,int y0,int y1,int x){ - y0&=0x7fff; /* mask off flag */ - y1&=0x7fff; - - { - int dy=y1-y0; - int adx=x1-x0; - int ady=abs(dy); - int err=ady*(x-x0); - - int off=err/adx; - if(dy<0)return(y0-off); - return(y0+off); - } -} - -static int vorbis_dBquant(const float *x){ - int i= *x*7.3142857f+1023.5f; - if(i>1023)return(1023); - if(i<0)return(0); - return i; -} - -static float FLOOR_fromdB_LOOKUP[256]={ - 1.0649863e-07F, 1.1341951e-07F, 1.2079015e-07F, 1.2863978e-07F, - 1.3699951e-07F, 1.4590251e-07F, 1.5538408e-07F, 1.6548181e-07F, - 1.7623575e-07F, 1.8768855e-07F, 1.9988561e-07F, 2.128753e-07F, - 2.2670913e-07F, 2.4144197e-07F, 2.5713223e-07F, 2.7384213e-07F, - 2.9163793e-07F, 3.1059021e-07F, 3.3077411e-07F, 3.5226968e-07F, - 3.7516214e-07F, 3.9954229e-07F, 4.2550680e-07F, 4.5315863e-07F, - 4.8260743e-07F, 5.1396998e-07F, 5.4737065e-07F, 5.8294187e-07F, - 6.2082472e-07F, 6.6116941e-07F, 7.0413592e-07F, 7.4989464e-07F, - 7.9862701e-07F, 8.5052630e-07F, 9.0579828e-07F, 9.6466216e-07F, - 1.0273513e-06F, 1.0941144e-06F, 1.1652161e-06F, 1.2409384e-06F, - 1.3215816e-06F, 1.4074654e-06F, 1.4989305e-06F, 1.5963394e-06F, - 1.7000785e-06F, 1.8105592e-06F, 1.9282195e-06F, 2.0535261e-06F, - 2.1869758e-06F, 2.3290978e-06F, 2.4804557e-06F, 2.6416497e-06F, - 2.8133190e-06F, 2.9961443e-06F, 3.1908506e-06F, 3.3982101e-06F, - 3.6190449e-06F, 3.8542308e-06F, 4.1047004e-06F, 4.3714470e-06F, - 4.6555282e-06F, 4.9580707e-06F, 5.2802740e-06F, 5.6234160e-06F, - 5.9888572e-06F, 6.3780469e-06F, 6.7925283e-06F, 7.2339451e-06F, - 7.7040476e-06F, 8.2047000e-06F, 8.7378876e-06F, 9.3057248e-06F, - 9.9104632e-06F, 1.0554501e-05F, 1.1240392e-05F, 1.1970856e-05F, - 1.2748789e-05F, 1.3577278e-05F, 1.4459606e-05F, 1.5399272e-05F, - 1.6400004e-05F, 1.7465768e-05F, 1.8600792e-05F, 1.9809576e-05F, - 2.1096914e-05F, 2.2467911e-05F, 2.3928002e-05F, 2.5482978e-05F, - 2.7139006e-05F, 2.8902651e-05F, 3.0780908e-05F, 3.2781225e-05F, - 3.4911534e-05F, 3.7180282e-05F, 3.9596466e-05F, 4.2169667e-05F, - 4.4910090e-05F, 4.7828601e-05F, 5.0936773e-05F, 5.4246931e-05F, - 5.7772202e-05F, 6.1526565e-05F, 6.5524908e-05F, 6.9783085e-05F, - 7.4317983e-05F, 7.9147585e-05F, 8.4291040e-05F, 8.9768747e-05F, - 9.5602426e-05F, 0.00010181521F, 0.00010843174F, 0.00011547824F, - 0.00012298267F, 0.00013097477F, 0.00013948625F, 0.00014855085F, - 0.00015820453F, 0.00016848555F, 0.00017943469F, 0.00019109536F, - 0.00020351382F, 0.00021673929F, 0.00023082423F, 0.00024582449F, - 0.00026179955F, 0.00027881276F, 0.00029693158F, 0.00031622787F, - 0.00033677814F, 0.00035866388F, 0.00038197188F, 0.00040679456F, - 0.00043323036F, 0.00046138411F, 0.00049136745F, 0.00052329927F, - 0.00055730621F, 0.00059352311F, 0.00063209358F, 0.00067317058F, - 0.00071691700F, 0.00076350630F, 0.00081312324F, 0.00086596457F, - 0.00092223983F, 0.00098217216F, 0.0010459992F, 0.0011139742F, - 0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F, - 0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F, - 0.0019632195F, 0.0020908006F, 0.0022266726F, 0.0023713743F, - 0.0025254795F, 0.0026895994F, 0.0028643847F, 0.0030505286F, - 0.0032487691F, 0.0034598925F, 0.0036847358F, 0.0039241906F, - 0.0041792066F, 0.0044507950F, 0.0047400328F, 0.0050480668F, - 0.0053761186F, 0.0057254891F, 0.0060975636F, 0.0064938176F, - 0.0069158225F, 0.0073652516F, 0.0078438871F, 0.0083536271F, - 0.0088964928F, 0.009474637F, 0.010090352F, 0.010746080F, - 0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F, - 0.014722068F, 0.015678791F, 0.016697687F, 0.017782797F, - 0.018938423F, 0.020169149F, 0.021479854F, 0.022875735F, - 0.024362330F, 0.025945531F, 0.027631618F, 0.029427276F, - 0.031339626F, 0.033376252F, 0.035545228F, 0.037855157F, - 0.040315199F, 0.042935108F, 0.045725273F, 0.048696758F, - 0.051861348F, 0.055231591F, 0.058820850F, 0.062643361F, - 0.066714279F, 0.071049749F, 0.075666962F, 0.080584227F, - 0.085821044F, 0.091398179F, 0.097337747F, 0.10366330F, - 0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F, - 0.14201813F, 0.15124727F, 0.16107617F, 0.17154380F, - 0.18269168F, 0.19456402F, 0.20720788F, 0.22067342F, - 0.23501402F, 0.25028656F, 0.26655159F, 0.28387361F, - 0.30232132F, 0.32196786F, 0.34289114F, 0.36517414F, - 0.38890521F, 0.41417847F, 0.44109412F, 0.46975890F, - 0.50028648F, 0.53279791F, 0.56742212F, 0.60429640F, - 0.64356699F, 0.68538959F, 0.72993007F, 0.77736504F, - 0.82788260F, 0.88168307F, 0.9389798F, 1.F, -}; - -static void render_line(int x0,int x1,int y0,int y1,float *d){ - int dy=y1-y0; - int adx=x1-x0; - int ady=abs(dy); - int base=dy/adx; - int sy=(dy<0?base-1:base+1); - int x=x0; - int y=y0; - int err=0; - - ady-=abs(base*adx); - - d[x]*=FLOOR_fromdB_LOOKUP[y]; - while(++x<x1){ - err=err+ady; - if(err>=adx){ - err-=adx; - y+=sy; - }else{ - y+=base; - } - d[x]*=FLOOR_fromdB_LOOKUP[y]; - } -} - -static void render_line0(int x0,int x1,int y0,int y1,float *d){ - int dy=y1-y0; - int adx=x1-x0; - int ady=abs(dy); - int base=dy/adx; - int sy=(dy<0?base-1:base+1); - int x=x0; - int y=y0; - int err=0; - - ady-=abs(base*adx); - - d[x]=FLOOR_fromdB_LOOKUP[y]; - while(++x<x1){ - err=err+ady; - if(err>=adx){ - err-=adx; - y+=sy; - }else{ - y+=base; - } - d[x]=FLOOR_fromdB_LOOKUP[y]; - } -} - -/* the floor has already been filtered to only include relevant sections */ -static int accumulate_fit(const float *flr,const float *mdct, - int x0, int x1,lsfit_acc *a, - int n,vorbis_info_floor1 *info){ - long i; - int quantized=vorbis_dBquant(flr+x0); - - long xa=0,ya=0,x2a=0,y2a=0,xya=0,na=0, xb=0,yb=0,x2b=0,y2b=0,xyb=0,nb=0; - - memset(a,0,sizeof(*a)); - a->x0=x0; - a->x1=x1; - a->edgey0=quantized; - if(x1>n)x1=n; - - for(i=x0;i<x1;i++){ - int quantized=vorbis_dBquant(flr+i); - if(quantized){ - if(mdct[i]+info->twofitatten>=flr[i]){ - xa += i; - ya += quantized; - x2a += i*i; - y2a += quantized*quantized; - xya += i*quantized; - na++; - }else{ - xb += i; - yb += quantized; - x2b += i*i; - y2b += quantized*quantized; - xyb += i*quantized; - nb++; - } - } - } - - xb+=xa; - yb+=ya; - x2b+=x2a; - y2b+=y2a; - xyb+=xya; - nb+=na; - - /* weight toward the actually used frequencies if we meet the threshhold */ - { - int weight; - if(nb<info->twofitminsize || na<info->twofitminused){ - weight=0; - }else{ - weight=nb*info->twofitweight/na; - } - a->xa=xa*weight+xb; - a->ya=ya*weight+yb; - a->x2a=x2a*weight+x2b; - a->y2a=y2a*weight+y2b; - a->xya=xya*weight+xyb; - a->an=na*weight+nb; - a->n=nb; - a->un=na; - if(nb>=info->unusedminsize)a->un++; - } - - a->edgey1=-200; - if(x1<n){ - int quantized=vorbis_dBquant(flr+i); - a->edgey1=quantized; - } - return(a->n); -} - -/* returns < 0 on too few points to fit, >=0 (meansq error) on success */ -static int fit_line(lsfit_acc *a,int fits,int *y0,int *y1){ - long x=0,y=0,x2=0,y2=0,xy=0,n=0,an=0,i; - long x0=a[0].x0; - long x1=a[fits-1].x1; - - for(i=0;i<fits;i++){ - if(a[i].un){ - x+=a[i].xa; - y+=a[i].ya; - x2+=a[i].x2a; - y2+=a[i].y2a; - xy+=a[i].xya; - n+=a[i].n; - an+=a[i].an; - } - } - - if(*y0>=0){ /* hint used to break degenerate cases */ - x+= x0; - y+= *y0; - x2+= x0 * x0; - y2+= *y0 * *y0; - xy+= *y0 * x0; - n++; - an++; - } - - if(*y1>=0){ /* hint used to break degenerate cases */ - x+= x1; - y+= *y1; - x2+= x1 * x1; - y2+= *y1 * *y1; - xy+= *y1 * x1; - n++; - an++; - } - - if(n<2)return(n-2); - - { - /* need 64 bit multiplies, which C doesn't give portably as int */ - double fx=x; - double fy=y; - double fx2=x2; - double fxy=xy; - double denom=1./(an*fx2-fx*fx); - double a=(fy*fx2-fxy*fx)*denom; - double b=(an*fxy-fx*fy)*denom; - *y0=rint(a+b*x0); - *y1=rint(a+b*x1); - - /* limit to our range! */ - if(*y0>1023)*y0=1023; - if(*y1>1023)*y1=1023; - if(*y0<0)*y0=0; - if(*y1<0)*y1=0; - - return(0); - } -} - -/*static void fit_line_point(lsfit_acc *a,int fits,int *y0,int *y1){ - long y=0; - int i; - - for(i=0;i<fits && y==0;i++) - y+=a[i].ya; - - *y0=*y1=y; - }*/ - -static int inspect_error(int x0,int x1,int y0,int y1,const float *mask, - const float *mdct, - vorbis_info_floor1 *info){ - int dy=y1-y0; - int adx=x1-x0; - int ady=abs(dy); - int base=dy/adx; - int sy=(dy<0?base-1:base+1); - int x=x0; - int y=y0; - int err=0; - int val=vorbis_dBquant(mask+x); - int mse=0; - int n=0; - - ady-=abs(base*adx); - - if(mdct[x]+info->twofitatten>=mask[x]){ - if(y+info->maxover<val)return(1); - if(y-info->maxunder>val)return(1); - mse=(y-val); - mse*=mse; - n++; - } - - while(++x<x1){ - err=err+ady; - if(err>=adx){ - err-=adx; - y+=sy; - }else{ - y+=base; - } - - if(mdct[x]+info->twofitatten>=mask[x]){ - val=vorbis_dBquant(mask+x); - if(val){ - if(y+info->maxover<val)return(1); - if(y-info->maxunder>val)return(1); - mse+=((y-val)*(y-val)); - n++; - } - } - } - - if(n){ - if(info->maxover*info->maxover/n>info->maxerr)return(0); - if(info->maxunder*info->maxunder/n>info->maxerr)return(0); - if(mse/n>info->maxerr)return(1); - } - return(0); -} - -static int post_Y(int *A,int *B,int pos){ - if(A[pos]<0) - return B[pos]; - if(B[pos]<0) - return A[pos]; - - return (A[pos]+B[pos])>>1; -} - -static int floor1_forward(vorbis_block *vb,vorbis_look_floor *in, - float *mdct, const float *logmdct, /* in */ - const float *logmask, const float *logmax, /* in */ - float *codedflr){ /* out */ - static int seq=0; - long i,j,k,l; - vorbis_look_floor1 *look=(vorbis_look_floor1 *)in; - vorbis_info_floor1 *info=look->vi; - long n=info->n; - long posts=look->posts; - long nonzero=0; - lsfit_acc fits[VIF_POSIT+1]; - int fit_valueA[VIF_POSIT+2]; /* index by range list position */ - int fit_valueB[VIF_POSIT+2]; /* index by range list position */ - int fit_flag[VIF_POSIT+2]; - - int loneighbor[VIF_POSIT+2]; /* sorted index of range list position (+2) */ - int hineighbor[VIF_POSIT+2]; - int memo[VIF_POSIT+2]; - codec_setup_info *ci=vb->vd->vi->codec_setup; - static_codebook **sbooks=ci->book_param; - codebook *books=NULL; - int writeflag=0; - - if(vb->vd->backend_state){ - books=ci->fullbooks; - writeflag=1; - } - - memset(fit_flag,0,sizeof(fit_flag)); - for(i=0;i<posts;i++)loneighbor[i]=0; /* 0 for the implicit 0 post */ - for(i=0;i<posts;i++)hineighbor[i]=1; /* 1 for the implicit post at n */ - for(i=0;i<posts;i++)memo[i]=-1; /* no neighbor yet */ - - /* Scan back from high edge to first 'used' frequency */ - for(;n>info->unusedmin_n;n--) - if(logmdct[n-1]>-floor1_rangedB && - logmdct[n-1]+info->twofitatten>logmask[n-1])break; - - /* quantize the relevant floor points and collect them into line fit - structures (one per minimal division) at the same time */ - if(posts==0){ - nonzero+=accumulate_fit(logmask,logmax,0,n,fits,n,info); - }else{ - for(i=0;i<posts-1;i++) - nonzero+=accumulate_fit(logmask,logmax,look->sorted_index[i], - look->sorted_index[i+1],fits+i, - n,info); - } - - if(nonzero){ - /* start by fitting the implicit base case.... */ - int y0=-200; - int y1=-200; - int mse=fit_line(fits,posts-1,&y0,&y1); - if(mse<0){ - /* Only a single nonzero point */ - y0=-200; - y1=0; - fit_line(fits,posts-1,&y0,&y1); - } - - fit_flag[0]=1; - fit_flag[1]=1; - fit_valueA[0]=y0; - fit_valueB[0]=y0; - fit_valueB[1]=y1; - fit_valueA[1]=y1; - - if(mse>=0){ - /* Non degenerate case */ - /* start progressive splitting. This is a greedy, non-optimal - algorithm, but simple and close enough to the best - answer. */ - for(i=2;i<posts;i++){ - int sortpos=look->reverse_index[i]; - int ln=loneighbor[sortpos]; - int hn=hineighbor[sortpos]; - - /* eliminate repeat searches of a particular range with a memo */ - if(memo[ln]!=hn){ - /* haven't performed this error search yet */ - int lsortpos=look->reverse_index[ln]; - int hsortpos=look->reverse_index[hn]; - memo[ln]=hn; - - /* if this is an empty segment, its endpoints don't matter. - Mark as such */ - for(j=lsortpos;j<hsortpos;j++) - if(fits[j].un)break; - if(j==hsortpos){ - /* empty segment; important to note that this does not - break 0/n post case */ - fit_valueB[ln]=-200; - if(fit_valueA[ln]<0) - fit_flag[ln]=0; - fit_valueA[hn]=-200; - if(fit_valueB[hn]<0) - fit_flag[hn]=0; - - }else{ - /* A note: we want to bound/minimize *local*, not global, error */ - int lx=info->postlist[ln]; - int hx=info->postlist[hn]; - int ly=post_Y(fit_valueA,fit_valueB,ln); - int hy=post_Y(fit_valueA,fit_valueB,hn); - - if(inspect_error(lx,hx,ly,hy,logmask,logmdct,info)){ - /* outside error bounds/begin search area. Split it. */ - int ly0=-200; - int ly1=-200; - int hy0=-200; - int hy1=-200; - int lmse=fit_line(fits+lsortpos,sortpos-lsortpos,&ly0,&ly1); - int hmse=fit_line(fits+sortpos,hsortpos-sortpos,&hy0,&hy1); - - /* the boundary/sparsity cases are the hard part. They - don't happen often given that we use the full mask - curve (weighted) now, but when they do happen they - can go boom. Pay them detailed attention */ - /* cases for a segment: - >=0) normal fit (>=2 unique points) - -1) one point on x0; - one point on x1; <-- disallowed by fit_line - -2) one point in between x0 and x1 - -3) no points */ - - switch(lmse){ - case -2: - /* no points in the low segment */ - break; - case -1: - ly0=fits[lsortpos].edgey0; - break; - /*default: - break;*/ - } - - switch(hmse){ - case -2: - /* no points in the hi segment */ - break; - case -1: - hy0=fits[sortpos].edgey0; - break; - } - - /* store new edge values */ - fit_valueB[ln]=ly0; - if(ln==0 && ly0>=0)fit_valueA[ln]=ly0; - fit_valueA[i]=ly1; - fit_valueB[i]=hy0; - fit_valueA[hn]=hy1; - if(hn==1 && hy1>=0)fit_valueB[hn]=hy1; - - if(ly0<0 && fit_valueA[ln]<0) - fit_flag[ln]=0; - if(hy1<0 && fit_valueB[hn]<0) - fit_flag[hn]=0; - - if(ly1>=0 || hy0>=0){ - /* store new neighbor values */ - for(j=sortpos-1;j>=0;j--) - if(hineighbor[j]==hn) - hineighbor[j]=i; - else - break; - for(j=sortpos+1;j<posts;j++) - if(loneighbor[j]==ln) - loneighbor[j]=i; - else - break; - - /* store flag (set) */ - fit_flag[i]=1; - } - } - } - } - } - } - - /* quantize values to multiplier spec */ - switch(info->mult){ - case 1: /* 1024 -> 256 */ - for(i=0;i<posts;i++) - if(fit_flag[i]) - fit_valueA[i]=post_Y(fit_valueA,fit_valueB,i)>>2; - break; - case 2: /* 1024 -> 128 */ - for(i=0;i<posts;i++) - if(fit_flag[i]) - fit_valueA[i]=post_Y(fit_valueA,fit_valueB,i)>>3; - break; - case 3: /* 1024 -> 86 */ - for(i=0;i<posts;i++) - if(fit_flag[i]) - fit_valueA[i]=post_Y(fit_valueA,fit_valueB,i)/12; - break; - case 4: /* 1024 -> 64 */ - for(i=0;i<posts;i++) - if(fit_flag[i]) - fit_valueA[i]=post_Y(fit_valueA,fit_valueB,i)>>4; - break; - } - - /* find prediction values for each post and subtract them */ - for(i=2;i<posts;i++){ - int sp=look->reverse_index[i]; - int ln=look->loneighbor[i-2]; - int hn=look->hineighbor[i-2]; - int x0=info->postlist[ln]; - int x1=info->postlist[hn]; - int y0=fit_valueA[ln]; - int y1=fit_valueA[hn]; - - int predicted=render_point(x0,x1,y0,y1,info->postlist[i]); - - if(fit_flag[i]){ - int headroom=(look->quant_q-predicted<predicted? - look->quant_q-predicted:predicted); - - int val=fit_valueA[i]-predicted; - - /* at this point the 'deviation' value is in the range +/- max - range, but the real, unique range can always be mapped to - only [0-maxrange). So we want to wrap the deviation into - this limited range, but do it in the way that least screws - an essentially gaussian probability distribution. */ - - if(val<0) - if(val<-headroom) - val=headroom-val-1; - else - val=-1-(val<<1); - else - if(val>=headroom) - val= val+headroom; - else - val<<=1; - - fit_valueB[i]=val; - - /* unroll the neighbor arrays */ - for(j=sp+1;j<posts;j++) - if(loneighbor[j]==i) - loneighbor[j]=loneighbor[sp]; - else - break; - for(j=sp-1;j>=0;j--) - if(hineighbor[j]==i) - hineighbor[j]=hineighbor[sp]; - else - break; - - }else{ - fit_valueA[i]=predicted; - fit_valueB[i]=0; - } - if(fit_valueB[i]==0) - fit_valueA[i]|=0x8000; - else{ - fit_valueA[look->loneighbor[i-2]]&=0x7fff; - fit_valueA[look->hineighbor[i-2]]&=0x7fff; - } - } - - /* we have everything we need. pack it out */ - /* mark nontrivial floor */ - if(writeflag){ - oggpack_write(&vb->opb,1,1); - - /* beginning/end post */ - look->frames++; - look->postbits+=ilog(look->quant_q-1)*2; - oggpack_write(&vb->opb,fit_valueA[0],ilog(look->quant_q-1)); - oggpack_write(&vb->opb,fit_valueA[1],ilog(look->quant_q-1)); - - - /* partition by partition */ - for(i=0,j=2;i<info->partitions;i++){ - int class=info->partitionclass[i]; - int cdim=info->class_dim[class]; - int csubbits=info->class_subs[class]; - int csub=1<<csubbits; - int bookas[8]={0,0,0,0,0,0,0,0}; - int cval=0; - int cshift=0; - - /* generate the partition's first stage cascade value */ - if(csubbits){ - int maxval[8]; - for(k=0;k<csub;k++){ - int booknum=info->class_subbook[class][k]; - if(booknum<0){ - maxval[k]=1; - }else{ - maxval[k]=sbooks[info->class_subbook[class][k]]->entries; - } - } - for(k=0;k<cdim;k++){ - for(l=0;l<csub;l++){ - int val=fit_valueB[j+k]; - if(val<maxval[l]){ - bookas[k]=l; - break; - } - } - cval|= bookas[k]<<cshift; - cshift+=csubbits; - } - /* write it */ - look->phrasebits+= - vorbis_book_encode(books+info->class_book[class],cval,&vb->opb); - -#ifdef TRAIN_FLOOR1 - { - FILE *of; - char buffer[80]; - sprintf(buffer,"line_%dx%ld_class%d.vqd", - vb->pcmend/2,posts-2,class); - of=fopen(buffer,"a"); - fprintf(of,"%d\n",cval); - fclose(of); - } -#endif - } - - /* write post values */ - for(k=0;k<cdim;k++){ - int book=info->class_subbook[class][bookas[k]]; - if(book>=0){ - /* hack to allow training with 'bad' books */ - if(fit_valueB[j+k]<(books+book)->entries) - look->postbits+=vorbis_book_encode(books+book, - fit_valueB[j+k],&vb->opb); - /*else - fprintf(stderr,"+!");*/ - -#ifdef TRAIN_FLOOR1 - { - FILE *of; - char buffer[80]; - sprintf(buffer,"line_%dx%ld_%dsub%d.vqd", - vb->pcmend/2,posts-2,class,bookas[k]); - of=fopen(buffer,"a"); - fprintf(of,"%d\n",fit_valueB[j+k]); - fclose(of); - } -#endif - } - } - j+=cdim; - } - } - - { - /* generate quantized floor equivalent to what we'd unpack in decode */ - int hx; - int lx=0; - int ly=fit_valueA[0]*info->mult; - - for(j=1;j<posts;j++){ - int current=look->forward_index[j]; - if(!(fit_valueA[current]&0x8000)){ - int hy=(fit_valueA[current]&0x7fff)*info->mult; - hx=info->postlist[current]; - - render_line0(lx,hx,ly,hy,codedflr); - - lx=hx; - ly=hy; - } - } - for(j=lx;j<vb->pcmend/2;j++)codedflr[j]=codedflr[j-1]; /* be certain */ - - /* use it to create residue vector. Eliminate mdct elements - that were below the error training attenuation relative to - the original mask. This avoids portions of the floor fit - that were considered 'unused' in fitting from being used in - coding residue if the unfit values are significantly below - the original input mask */ - - for(j=0;j<n;j++) - if(logmdct[j]+info->twofitatten<logmask[j]) - mdct[j]=0.f; - for(j=n;j<vb->pcmend/2;j++)mdct[j]=0.f; - - } - - }else{ - if(writeflag)oggpack_write(&vb->opb,0,1); - memset(codedflr,0,n*sizeof(*codedflr)); - memset(mdct,0,n*sizeof(*mdct)); - } - seq++; - return(nonzero); -} - -static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in){ - vorbis_look_floor1 *look=(vorbis_look_floor1 *)in; - vorbis_info_floor1 *info=look->vi; - codec_setup_info *ci=vb->vd->vi->codec_setup; - - int i,j,k; - codebook *books=ci->fullbooks; - - /* unpack wrapped/predicted values from stream */ - if(oggpack_read(&vb->opb,1)==1){ - int *fit_value=_vorbis_block_alloc(vb,(look->posts)*sizeof(*fit_value)); - - fit_value[0]=oggpack_read(&vb->opb,ilog(look->quant_q-1)); - fit_value[1]=oggpack_read(&vb->opb,ilog(look->quant_q-1)); - - /* partition by partition */ - /* partition by partition */ - for(i=0,j=2;i<info->partitions;i++){ - int class=info->partitionclass[i]; - int cdim=info->class_dim[class]; - int csubbits=info->class_subs[class]; - int csub=1<<csubbits; - int cval=0; - - /* decode the partition's first stage cascade value */ - if(csubbits){ - cval=vorbis_book_decode(books+info->class_book[class],&vb->opb); - - if(cval==-1)goto eop; - } - - for(k=0;k<cdim;k++){ - int book=info->class_subbook[class][cval&(csub-1)]; - cval>>=csubbits; - if(book>=0){ - if((fit_value[j+k]=vorbis_book_decode(books+book,&vb->opb))==-1) - goto eop; - }else{ - fit_value[j+k]=0; - } - } - j+=cdim; - } - - /* unwrap positive values and reconsitute via linear interpolation */ - for(i=2;i<look->posts;i++){ - int predicted=render_point(info->postlist[look->loneighbor[i-2]], - info->postlist[look->hineighbor[i-2]], - fit_value[look->loneighbor[i-2]], - fit_value[look->hineighbor[i-2]], - info->postlist[i]); - int hiroom=look->quant_q-predicted; - int loroom=predicted; - int room=(hiroom<loroom?hiroom:loroom)<<1; - int val=fit_value[i]; - - if(val){ - if(val>=room){ - if(hiroom>loroom){ - val = val-loroom; - }else{ - val = -1-(val-hiroom); - } - }else{ - if(val&1){ - val= -((val+1)>>1); - }else{ - val>>=1; - } - } - - fit_value[i]=val+predicted; - fit_value[look->loneighbor[i-2]]&=0x7fff; - fit_value[look->hineighbor[i-2]]&=0x7fff; - - }else{ - fit_value[i]=predicted|0x8000; - } - - } - - return(fit_value); - } - eop: - return(NULL); -} - -static int floor1_inverse2(vorbis_block *vb,vorbis_look_floor *in,void *memo, - float *out){ - vorbis_look_floor1 *look=(vorbis_look_floor1 *)in; - vorbis_info_floor1 *info=look->vi; - - codec_setup_info *ci=vb->vd->vi->codec_setup; - int n=ci->blocksizes[vb->mode]/2; - int j; - - if(memo){ - /* render the lines */ - int *fit_value=(int *)memo; - int hx=0; - int lx=0; - int ly=fit_value[0]*info->mult; - for(j=1;j<look->posts;j++){ - int current=look->forward_index[j]; - int hy=fit_value[current]&0x7fff; - if(hy==fit_value[current]){ - - hy*=info->mult; - hx=info->postlist[current]; - - render_line(lx,hx,ly,hy,out); - - lx=hx; - ly=hy; - } - } - for(j=hx;j<n;j++)out[j]*=ly; /* be certain */ - return(1); - } - memset(out,0,sizeof(*out)*n); - return(0); -} - -/* export hooks */ -vorbis_func_floor floor1_exportbundle={ - &floor1_pack,&floor1_unpack,&floor1_look,&floor1_copy_info,&floor1_free_info, - &floor1_free_look,&floor1_forward,&floor1_inverse1,&floor1_inverse2 -}; - diff --git a/lib/iir.c b/lib/iir.c deleted file mode 100644 index 1af5a5d9..00000000 --- a/lib/iir.c +++ /dev/null @@ -1,301 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: Direct Form II IIR filters, plus some specializations - last mod: $Id: iir.c,v 1.13 2002/01/22 08:06:07 xiphmont Exp $ - - ********************************************************************/ - -/* LPC is actually a degenerate case of form I/II filters, but we need - both */ - -#include <ogg/ogg.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include "iir.h" -#include "misc.h" - -void IIR_init(IIR_state *s,int stages,float gain, float *A, float *B){ - memset(s,0,sizeof(*s)); - s->stages=stages; - s->gain=1.f/gain; - s->coeff_A=_ogg_malloc(stages*sizeof(*s->coeff_A)); - s->coeff_B=_ogg_malloc((stages+1)*sizeof(*s->coeff_B)); - s->z_A=_ogg_calloc(stages*2,sizeof(*s->z_A)); - - memcpy(s->coeff_A,A,stages*sizeof(*s->coeff_A)); - memcpy(s->coeff_B,B,(stages+1)*sizeof(*s->coeff_B)); -} - -void IIR_clear(IIR_state *s){ - if(s){ - _ogg_free(s->coeff_A); - _ogg_free(s->coeff_B); - _ogg_free(s->z_A); - memset(s,0,sizeof(*s)); - } -} - -void IIR_reset(IIR_state *s){ - memset(s->z_A,0,sizeof(*s->z_A)*s->stages*2); -} - -float IIR_filter(IIR_state *s,float in){ - int stages=s->stages,i; - float newA= in*s->gain; - float newB=0; - float *zA=s->z_A+s->ring; - - for(i=0;i<stages;i++){ - newA+= s->coeff_A[i] * zA[i]; - newB+= s->coeff_B[i] * zA[i]; - } - newB+=newA*s->coeff_B[stages]; - - zA[0]=zA[stages]=newA; - if(++s->ring>=stages)s->ring=0; - return(newB); -} - -/* this assumes the symmetrical structure of the feed-forward stage of - a typical bandpass to save multiplies */ -float IIR_filter_Band(IIR_state *s,float in){ - int stages=s->stages,i; - int stages2=stages>>1; - float newA= in*s->gain; - float newB=0; - float *zA=s->z_A+s->ring; - - newA+= s->coeff_A[0] * zA[0]; - for(i=1;i<stages2;i++){ - newA+= s->coeff_A[i] * zA[i]; - newB+= s->coeff_B[i] * (zA[i]-zA[stages-i]); - } - newB+= s->coeff_B[i] * zA[i]; - for(;i<stages;i++) - newA+= s->coeff_A[i] * zA[i]; - - newB+=newA-zA[0]; - - zA[0]=zA[stages]=newA; - if(++s->ring>=stages)s->ring=0; - return(newB); -} - -#ifdef _V_SELFTEST - -/* z^-stage, z^-stage+1... */ -static float cheb_bandpass_B[]={-1.f,0.f,5.f,0.f,-10.f,0.f,10.f,0.f,-5.f,0.f,1f}; -static float cheb_bandpass_A[]={-0.6665900311f, - 1.0070146601f, - -3.1262875409f, - 3.5017171569f, - -6.2779211945f, - 5.2966481740f, - -6.7570216587f, - 4.0760335768f, - -3.9134284363f, - 1.3997338886f}; - -static float data[128]={ - 0.0426331f, - 0.0384521f, - 0.0345764f, - 0.0346069f, - 0.0314636f, - 0.0310059f, - 0.0318604f, - 0.0336304f, - 0.036438f, - 0.0348511f, - 0.0354919f, - 0.0343628f, - 0.0325623f, - 0.0318909f, - 0.0263367f, - 0.0225525f, - 0.0195618f, - 0.0160828f, - 0.0168762f, - 0.0145569f, - 0.0126343f, - 0.0127258f, - 0.00820923f, - 0.00787354f, - 0.00558472f, - 0.00204468f, - 3.05176e-05f, - -0.00357056f, - -0.00570679f, - -0.00991821f, - -0.0101013f, - -0.00881958f, - -0.0108948f, - -0.0110168f, - -0.0119324f, - -0.0161438f, - -0.0194702f, - -0.0229187f, - -0.0260315f, - -0.0282288f, - -0.0306091f, - -0.0330505f, - -0.0364685f, - -0.0385742f, - -0.0428772f, - -0.043457f, - -0.0425415f, - -0.0462341f, - -0.0467529f, - -0.0489807f, - -0.0520325f, - -0.0558167f, - -0.0596924f, - -0.0591431f, - -0.0612793f, - -0.0618591f, - -0.0615845f, - -0.0634155f, - -0.0639648f, - -0.0683594f, - -0.0718079f, - -0.0729675f, - -0.0791931f, - -0.0860901f, - -0.0885315f, - -0.088623f, - -0.089386f, - -0.0899353f, - -0.0886841f, - -0.0910645f, - -0.0948181f, - -0.0919495f, - -0.0891418f, - -0.0916443f, - -0.096344f, - -0.100464f, - -0.105499f, - -0.108612f, - -0.112213f, - -0.117676f, - -0.120911f, - -0.124329f, - -0.122162f, - -0.120605f, - -0.12326f, - -0.12619f, - -0.128998f, - -0.13205f, - -0.134247f, - -0.137939f, - -0.143555f, - -0.14389f, - -0.14859f, - -0.153717f, - -0.159851f, - -0.164551f, - -0.162811f, - -0.164276f, - -0.156952f, - -0.140564f, - -0.123291f, - -0.10321f, - -0.0827637f, - -0.0652466f, - -0.053772f, - -0.0509949f, - -0.0577698f, - -0.0818176f, - -0.114929f, - -0.148895f, - -0.181122f, - -0.200714f, - -0.21048f, - -0.203644f, - -0.179413f, - -0.145325f, - -0.104492f, - -0.0658264f, - -0.0332031f, - -0.0106201f, - -0.00363159f, - -0.00909424f, - -0.0244141f, - -0.0422058f, - -0.0537415f, - -0.0610046f, - -0.0609741f, - -0.0547791f}; - -/* comparison test code from http://www-users.cs.york.ac.uk/~fisher/mkfilter/ - (the above page kicks ass, BTW)*/ - -#define NZEROS 10 -#define NPOLES 10 -#define GAIN 4.599477515e+02f - -static float xv[NZEROS+1], yv[NPOLES+1]; - -static float filterloop(float next){ - xv[0] = xv[1]; xv[1] = xv[2]; xv[2] = xv[3]; xv[3] = xv[4]; xv[4] = xv[5]; - xv[5] = xv[6]; xv[6] = xv[7]; xv[7] = xv[8]; xv[8] = xv[9]; xv[9] = xv[10]; - xv[10] = next / GAIN; - yv[0] = yv[1]; yv[1] = yv[2]; yv[2] = yv[3]; yv[3] = yv[4]; yv[4] = yv[5]; - yv[5] = yv[6]; yv[6] = yv[7]; yv[7] = yv[8]; yv[8] = yv[9]; yv[9] = yv[10]; - yv[10] = (xv[10] - xv[0]) + 5 * (xv[2] - xv[8]) + 10 * (xv[6] - xv[4]) - + ( -0.6665900311f * yv[0]) + ( 1.0070146601f * yv[1]) - + ( -3.1262875409f * yv[2]) + ( 3.5017171569f * yv[3]) - + ( -6.2779211945f * yv[4]) + ( 5.2966481740f * yv[5]) - + ( -6.7570216587f * yv[6]) + ( 4.0760335768f * yv[7]) - + ( -3.9134284363f * yv[8]) + ( 1.3997338886f * yv[9]); - return(yv[10]); -} - -#include <stdio.h> -int main(){ - - /* run the pregenerated Chebyshev filter, then our own distillation - through the generic and specialized code */ - float *work=_ogg_malloc(128*sizeof(*work)); - IIR_state iir; - int i; - - for(i=0;i<128;i++)work[i]=filterloop(data[i]); - { - FILE *out=fopen("IIR_ref.m","w"); - for(i=0;i<128;i++)fprintf(out,"%g\n",work[i]); - fclose(out); - } - - IIR_init(&iir,NPOLES,GAIN,cheb_bandpass_A,cheb_bandpass_B); - for(i=0;i<128;i++)work[i]=IIR_filter(&iir,data[i]); - { - FILE *out=fopen("IIR_gen.m","w"); - for(i=0;i<128;i++)fprintf(out,"%g\n",work[i]); - fclose(out); - } - IIR_clear(&iir); - - IIR_init(&iir,NPOLES,GAIN,cheb_bandpass_A,cheb_bandpass_B); - for(i=0;i<128;i++)work[i]=IIR_filter_ChebBand(&iir,data[i]); - { - FILE *out=fopen("IIR_cheb.m","w"); - for(i=0;i<128;i++)fprintf(out,"%g\n",work[i]); - fclose(out); - } - IIR_clear(&iir); - - return(0); -} - -#endif diff --git a/lib/iir.h b/lib/iir.h deleted file mode 100644 index 58292b2c..00000000 --- a/lib/iir.h +++ /dev/null @@ -1,36 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: Direct Form I, II IIR filters, plus some specializations - last mod: $Id: iir.h,v 1.8 2001/12/20 01:00:27 segher Exp $ - - ********************************************************************/ - -#ifndef _V_IIR_H_ -#define _V_IIR_H_ - -typedef struct { - int stages; - float *coeff_A; - float *coeff_B; - float *z_A; - int ring; - float gain; -} IIR_state; - -extern void IIR_init(IIR_state *s,int stages,float gain, float *A, float *B); -extern void IIR_clear(IIR_state *s); -extern float IIR_filter(IIR_state *s,float in); -extern float IIR_filter_Band(IIR_state *s,float in); -extern void IIR_reset(IIR_state *s); - -#endif diff --git a/lib/info.c b/lib/info.c deleted file mode 100644 index 7e196eec..00000000 --- a/lib/info.c +++ /dev/null @@ -1,602 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: maintain the info structure, info <-> header packets - last mod: $Id: info.c,v 1.53 2002/01/22 08:06:07 xiphmont Exp $ - - ********************************************************************/ - -/* general handling of the header and the vorbis_info structure (and - substructures) */ - -#include <stdlib.h> -#include <string.h> -#include <ctype.h> -#include <ogg/ogg.h> -#include "vorbis/codec.h" -#include "codec_internal.h" -#include "codebook.h" -#include "registry.h" -#include "window.h" -#include "psy.h" -#include "misc.h" -#include "os.h" - -/* helpers */ -static int ilog2(unsigned int v){ - int ret=0; - while(v>1){ - ret++; - v>>=1; - } - return(ret); -} - -static void _v_writestring(oggpack_buffer *o,char *s, int bytes){ - - while(bytes--){ - oggpack_write(o,*s++,8); - } -} - -static void _v_readstring(oggpack_buffer *o,char *buf,int bytes){ - while(bytes--){ - *buf++=oggpack_read(o,8); - } -} - -void vorbis_comment_init(vorbis_comment *vc){ - memset(vc,0,sizeof(*vc)); -} - -void vorbis_comment_add(vorbis_comment *vc,char *comment){ - vc->user_comments=_ogg_realloc(vc->user_comments, - (vc->comments+2)*sizeof(*vc->user_comments)); - vc->comment_lengths=_ogg_realloc(vc->comment_lengths, - (vc->comments+2)*sizeof(*vc->comment_lengths)); - vc->comment_lengths[vc->comments]=strlen(comment); - vc->user_comments[vc->comments]=_ogg_malloc(vc->comment_lengths[vc->comments]+1); - strcpy(vc->user_comments[vc->comments], comment); - vc->comments++; - vc->user_comments[vc->comments]=NULL; -} - -void vorbis_comment_add_tag(vorbis_comment *vc, char *tag, char *contents){ - char *comment=alloca(strlen(tag)+strlen(contents)+2); /* +2 for = and \0 */ - strcpy(comment, tag); - strcat(comment, "="); - strcat(comment, contents); - vorbis_comment_add(vc, comment); -} - -/* This is more or less the same as strncasecmp - but that doesn't exist - * everywhere, and this is a fairly trivial function, so we include it */ -static int tagcompare(const char *s1, const char *s2, int n){ - int c=0; - while(c < n){ - if(toupper(s1[c]) != toupper(s2[c])) - return !0; - c++; - } - return 0; -} - -char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count){ - long i; - int found = 0; - int taglen = strlen(tag)+1; /* +1 for the = we append */ - char *fulltag = alloca(taglen+ 1); - - strcpy(fulltag, tag); - strcat(fulltag, "="); - - for(i=0;i<vc->comments;i++){ - if(!tagcompare(vc->user_comments[i], fulltag, taglen)){ - if(count == found) - /* We return a pointer to the data, not a copy */ - return vc->user_comments[i] + taglen; - else - found++; - } - } - return NULL; /* didn't find anything */ -} - -int vorbis_comment_query_count(vorbis_comment *vc, char *tag){ - int i,count=0; - int taglen = strlen(tag)+1; /* +1 for the = we append */ - char *fulltag = alloca(taglen+1); - strcpy(fulltag,tag); - strcat(fulltag, "="); - - for(i=0;i<vc->comments;i++){ - if(!tagcompare(vc->user_comments[i], fulltag, taglen)) - count++; - } - - return count; -} - -void vorbis_comment_clear(vorbis_comment *vc){ - if(vc){ - long i; - for(i=0;i<vc->comments;i++) - if(vc->user_comments[i])_ogg_free(vc->user_comments[i]); - if(vc->user_comments)_ogg_free(vc->user_comments); - if(vc->comment_lengths)_ogg_free(vc->comment_lengths); - if(vc->vendor)_ogg_free(vc->vendor); - } - memset(vc,0,sizeof(*vc)); -} - -/* blocksize 0 is guaranteed to be short, 1 is guarantted to be long. - They may be equal, but short will never ge greater than long */ -int vorbis_info_blocksize(vorbis_info *vi,int zo){ - codec_setup_info *ci = vi->codec_setup; - return ci ? ci->blocksizes[zo] : -1; -} - -/* used by synthesis, which has a full, alloced vi */ -void vorbis_info_init(vorbis_info *vi){ - memset(vi,0,sizeof(*vi)); - vi->codec_setup=_ogg_calloc(1,sizeof(codec_setup_info)); -} - -void vorbis_info_clear(vorbis_info *vi){ - codec_setup_info *ci=vi->codec_setup; - int i; - - if(ci){ - - for(i=0;i<ci->modes;i++) - if(ci->mode_param[i])_ogg_free(ci->mode_param[i]); - - for(i=0;i<ci->maps;i++) /* unpack does the range checking */ - _mapping_P[ci->map_type[i]]->free_info(ci->map_param[i]); - - for(i=0;i<ci->times;i++) /* unpack does the range checking */ - _time_P[ci->time_type[i]]->free_info(ci->time_param[i]); - - for(i=0;i<ci->floors;i++) /* unpack does the range checking */ - _floor_P[ci->floor_type[i]]->free_info(ci->floor_param[i]); - - for(i=0;i<ci->residues;i++) /* unpack does the range checking */ - _residue_P[ci->residue_type[i]]->free_info(ci->residue_param[i]); - - for(i=0;i<ci->books;i++){ - if(ci->book_param[i]){ - /* knows if the book was not alloced */ - vorbis_staticbook_destroy(ci->book_param[i]); - } - if(ci->fullbooks) - vorbis_book_clear(ci->fullbooks+i); - } - if(ci->fullbooks) - _ogg_free(ci->fullbooks); - - for(i=0;i<ci->psys;i++) - _vi_psy_free(ci->psy_param[i]); - - _ogg_free(ci); - } - - memset(vi,0,sizeof(*vi)); -} - -/* Header packing/unpacking ********************************************/ - -static int _vorbis_unpack_info(vorbis_info *vi,oggpack_buffer *opb){ - codec_setup_info *ci=vi->codec_setup; - if(!ci)return(OV_EFAULT); - - vi->version=oggpack_read(opb,32); - if(vi->version!=0)return(OV_EVERSION); - - vi->channels=oggpack_read(opb,8); - vi->rate=oggpack_read(opb,32); - - vi->bitrate_upper=oggpack_read(opb,32); - vi->bitrate_nominal=oggpack_read(opb,32); - vi->bitrate_lower=oggpack_read(opb,32); - - ci->blocksizes[0]=1<<oggpack_read(opb,4); - ci->blocksizes[1]=1<<oggpack_read(opb,4); - - if(vi->rate<1)goto err_out; - if(vi->channels<1)goto err_out; - if(ci->blocksizes[0]<8)goto err_out; - if(ci->blocksizes[1]<ci->blocksizes[0])goto err_out; - - if(oggpack_read(opb,1)!=1)goto err_out; /* EOP check */ - - return(0); - err_out: - vorbis_info_clear(vi); - return(OV_EBADHEADER); -} - -static int _vorbis_unpack_comment(vorbis_comment *vc,oggpack_buffer *opb){ - int i; - int vendorlen=oggpack_read(opb,32); - if(vendorlen<0)goto err_out; - vc->vendor=_ogg_calloc(vendorlen+1,1); - _v_readstring(opb,vc->vendor,vendorlen); - vc->comments=oggpack_read(opb,32); - if(vc->comments<0)goto err_out; - vc->user_comments=_ogg_calloc(vc->comments+1,sizeof(*vc->user_comments)); - vc->comment_lengths=_ogg_calloc(vc->comments+1, sizeof(*vc->comment_lengths)); - - for(i=0;i<vc->comments;i++){ - int len=oggpack_read(opb,32); - if(len<0)goto err_out; - vc->comment_lengths[i]=len; - vc->user_comments[i]=_ogg_calloc(len+1,1); - _v_readstring(opb,vc->user_comments[i],len); - } - if(oggpack_read(opb,1)!=1)goto err_out; /* EOP check */ - - return(0); - err_out: - vorbis_comment_clear(vc); - return(OV_EBADHEADER); -} - -/* all of the real encoding details are here. The modes, books, - everything */ -static int _vorbis_unpack_books(vorbis_info *vi,oggpack_buffer *opb){ - codec_setup_info *ci=vi->codec_setup; - int i; - if(!ci)return(OV_EFAULT); - - /* codebooks */ - ci->books=oggpack_read(opb,8)+1; - /*ci->book_param=_ogg_calloc(ci->books,sizeof(*ci->book_param));*/ - for(i=0;i<ci->books;i++){ - ci->book_param[i]=_ogg_calloc(1,sizeof(*ci->book_param[i])); - if(vorbis_staticbook_unpack(opb,ci->book_param[i]))goto err_out; - } - - /* time backend settings */ - ci->times=oggpack_read(opb,6)+1; - /*ci->time_type=_ogg_malloc(ci->times*sizeof(*ci->time_type));*/ - /*ci->time_param=_ogg_calloc(ci->times,sizeof(void *));*/ - for(i=0;i<ci->times;i++){ - ci->time_type[i]=oggpack_read(opb,16); - if(ci->time_type[i]<0 || ci->time_type[i]>=VI_TIMEB)goto err_out; - ci->time_param[i]=_time_P[ci->time_type[i]]->unpack(vi,opb); - if(!ci->time_param[i])goto err_out; - } - - /* floor backend settings */ - ci->floors=oggpack_read(opb,6)+1; - /*ci->floor_type=_ogg_malloc(ci->floors*sizeof(*ci->floor_type));*/ - /*ci->floor_param=_ogg_calloc(ci->floors,sizeof(void *));*/ - for(i=0;i<ci->floors;i++){ - ci->floor_type[i]=oggpack_read(opb,16); - if(ci->floor_type[i]<0 || ci->floor_type[i]>=VI_FLOORB)goto err_out; - ci->floor_param[i]=_floor_P[ci->floor_type[i]]->unpack(vi,opb); - if(!ci->floor_param[i])goto err_out; - } - - /* residue backend settings */ - ci->residues=oggpack_read(opb,6)+1; - /*ci->residue_type=_ogg_malloc(ci->residues*sizeof(*ci->residue_type));*/ - /*ci->residue_param=_ogg_calloc(ci->residues,sizeof(void *));*/ - for(i=0;i<ci->residues;i++){ - ci->residue_type[i]=oggpack_read(opb,16); - if(ci->residue_type[i]<0 || ci->residue_type[i]>=VI_RESB)goto err_out; - ci->residue_param[i]=_residue_P[ci->residue_type[i]]->unpack(vi,opb); - if(!ci->residue_param[i])goto err_out; - } - - /* map backend settings */ - ci->maps=oggpack_read(opb,6)+1; - /*ci->map_type=_ogg_malloc(ci->maps*sizeof(*ci->map_type));*/ - /*ci->map_param=_ogg_calloc(ci->maps,sizeof(void *));*/ - for(i=0;i<ci->maps;i++){ - ci->map_type[i]=oggpack_read(opb,16); - if(ci->map_type[i]<0 || ci->map_type[i]>=VI_MAPB)goto err_out; - ci->map_param[i]=_mapping_P[ci->map_type[i]]->unpack(vi,opb); - if(!ci->map_param[i])goto err_out; - } - - /* mode settings */ - ci->modes=oggpack_read(opb,6)+1; - /*vi->mode_param=_ogg_calloc(vi->modes,sizeof(void *));*/ - for(i=0;i<ci->modes;i++){ - ci->mode_param[i]=_ogg_calloc(1,sizeof(*ci->mode_param[i])); - ci->mode_param[i]->blockflag=oggpack_read(opb,1); - ci->mode_param[i]->windowtype=oggpack_read(opb,16); - ci->mode_param[i]->transformtype=oggpack_read(opb,16); - ci->mode_param[i]->mapping=oggpack_read(opb,8); - - if(ci->mode_param[i]->windowtype>=VI_WINDOWB)goto err_out; - if(ci->mode_param[i]->transformtype>=VI_WINDOWB)goto err_out; - if(ci->mode_param[i]->mapping>=ci->maps)goto err_out; - } - - if(oggpack_read(opb,1)!=1)goto err_out; /* top level EOP check */ - - return(0); - err_out: - vorbis_info_clear(vi); - return(OV_EBADHEADER); -} - -/* The Vorbis header is in three packets; the initial small packet in - the first page that identifies basic parameters, a second packet - with bitstream comments and a third packet that holds the - codebook. */ - -int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,ogg_packet *op){ - oggpack_buffer opb; - - if(op){ - oggpack_readinit(&opb,op->packet,op->bytes); - - /* Which of the three types of header is this? */ - /* Also verify header-ness, vorbis */ - { - char buffer[6]; - int packtype=oggpack_read(&opb,8); - memset(buffer,0,6); - _v_readstring(&opb,buffer,6); - if(memcmp(buffer,"vorbis",6)){ - /* not a vorbis header */ - return(OV_ENOTVORBIS); - } - switch(packtype){ - case 0x01: /* least significant *bit* is read first */ - if(!op->b_o_s){ - /* Not the initial packet */ - return(OV_EBADHEADER); - } - if(vi->rate!=0){ - /* previously initialized info header */ - return(OV_EBADHEADER); - } - - return(_vorbis_unpack_info(vi,&opb)); - - case 0x03: /* least significant *bit* is read first */ - if(vi->rate==0){ - /* um... we didn't get the initial header */ - return(OV_EBADHEADER); - } - - return(_vorbis_unpack_comment(vc,&opb)); - - case 0x05: /* least significant *bit* is read first */ - if(vi->rate==0 || vc->vendor==NULL){ - /* um... we didn;t get the initial header or comments yet */ - return(OV_EBADHEADER); - } - - return(_vorbis_unpack_books(vi,&opb)); - - default: - /* Not a valid vorbis header type */ - return(OV_EBADHEADER); - break; - } - } - } - return(OV_EBADHEADER); -} - -/* pack side **********************************************************/ - -static int _vorbis_pack_info(oggpack_buffer *opb,vorbis_info *vi){ - codec_setup_info *ci=vi->codec_setup; - if(!ci)return(OV_EFAULT); - - /* preamble */ - oggpack_write(opb,0x01,8); - _v_writestring(opb,"vorbis", 6); - - /* basic information about the stream */ - oggpack_write(opb,0x00,32); - oggpack_write(opb,vi->channels,8); - oggpack_write(opb,vi->rate,32); - - oggpack_write(opb,vi->bitrate_upper,32); - oggpack_write(opb,vi->bitrate_nominal,32); - oggpack_write(opb,vi->bitrate_lower,32); - - oggpack_write(opb,ilog2(ci->blocksizes[0]),4); - oggpack_write(opb,ilog2(ci->blocksizes[1]),4); - oggpack_write(opb,1,1); - - return(0); -} - -static int _vorbis_pack_comment(oggpack_buffer *opb,vorbis_comment *vc){ - char temp[]="Xiphophorus libVorbis I 20011231"; - int bytes = strlen(temp); - - /* preamble */ - oggpack_write(opb,0x03,8); - _v_writestring(opb,"vorbis", 6); - - /* vendor */ - oggpack_write(opb,bytes,32); - _v_writestring(opb,temp, bytes); - - /* comments */ - - oggpack_write(opb,vc->comments,32); - if(vc->comments){ - int i; - for(i=0;i<vc->comments;i++){ - if(vc->user_comments[i]){ - oggpack_write(opb,vc->comment_lengths[i],32); - _v_writestring(opb,vc->user_comments[i], vc->comment_lengths[i]); - }else{ - oggpack_write(opb,0,32); - } - } - } - oggpack_write(opb,1,1); - - return(0); -} - -static int _vorbis_pack_books(oggpack_buffer *opb,vorbis_info *vi){ - codec_setup_info *ci=vi->codec_setup; - int i; - if(!ci)return(OV_EFAULT); - - oggpack_write(opb,0x05,8); - _v_writestring(opb,"vorbis", 6); - - /* books */ - oggpack_write(opb,ci->books-1,8); - for(i=0;i<ci->books;i++) - if(vorbis_staticbook_pack(ci->book_param[i],opb))goto err_out; - - /* times */ - oggpack_write(opb,ci->times-1,6); - for(i=0;i<ci->times;i++){ - oggpack_write(opb,ci->time_type[i],16); - _time_P[ci->time_type[i]]->pack(ci->time_param[i],opb); - } - - /* floors */ - oggpack_write(opb,ci->floors-1,6); - for(i=0;i<ci->floors;i++){ - oggpack_write(opb,ci->floor_type[i],16); - _floor_P[ci->floor_type[i]]->pack(ci->floor_param[i],opb); - } - - /* residues */ - oggpack_write(opb,ci->residues-1,6); - for(i=0;i<ci->residues;i++){ - oggpack_write(opb,ci->residue_type[i],16); - _residue_P[ci->residue_type[i]]->pack(ci->residue_param[i],opb); - } - - /* maps */ - oggpack_write(opb,ci->maps-1,6); - for(i=0;i<ci->maps;i++){ - oggpack_write(opb,ci->map_type[i],16); - _mapping_P[ci->map_type[i]]->pack(vi,ci->map_param[i],opb); - } - - /* modes */ - oggpack_write(opb,ci->modes-1,6); - for(i=0;i<ci->modes;i++){ - oggpack_write(opb,ci->mode_param[i]->blockflag,1); - oggpack_write(opb,ci->mode_param[i]->windowtype,16); - oggpack_write(opb,ci->mode_param[i]->transformtype,16); - oggpack_write(opb,ci->mode_param[i]->mapping,8); - } - oggpack_write(opb,1,1); - - return(0); -err_out: - return(-1); -} - -int vorbis_commentheader_out(vorbis_comment *vc, - ogg_packet *op){ - - oggpack_buffer opb; - - oggpack_writeinit(&opb); - if(_vorbis_pack_comment(&opb,vc)) return OV_EIMPL; - - op->packet = _ogg_malloc(oggpack_bytes(&opb)); - memcpy(op->packet, opb.buffer, oggpack_bytes(&opb)); - - op->bytes=oggpack_bytes(&opb); - op->b_o_s=0; - op->e_o_s=0; - op->granulepos=0; - - return 0; -} - -int vorbis_analysis_headerout(vorbis_dsp_state *v, - vorbis_comment *vc, - ogg_packet *op, - ogg_packet *op_comm, - ogg_packet *op_code){ - int ret=OV_EIMPL; - vorbis_info *vi=v->vi; - oggpack_buffer opb; - backend_lookup_state *b=v->backend_state; - - if(!b){ - ret=OV_EFAULT; - goto err_out; - } - - /* first header packet **********************************************/ - - oggpack_writeinit(&opb); - if(_vorbis_pack_info(&opb,vi))goto err_out; - - /* build the packet */ - if(b->header)_ogg_free(b->header); - b->header=_ogg_malloc(oggpack_bytes(&opb)); - memcpy(b->header,opb.buffer,oggpack_bytes(&opb)); - op->packet=b->header; - op->bytes=oggpack_bytes(&opb); - op->b_o_s=1; - op->e_o_s=0; - op->granulepos=0; - - /* second header packet (comments) **********************************/ - - oggpack_reset(&opb); - if(_vorbis_pack_comment(&opb,vc))goto err_out; - - if(b->header1)_ogg_free(b->header1); - b->header1=_ogg_malloc(oggpack_bytes(&opb)); - memcpy(b->header1,opb.buffer,oggpack_bytes(&opb)); - op_comm->packet=b->header1; - op_comm->bytes=oggpack_bytes(&opb); - op_comm->b_o_s=0; - op_comm->e_o_s=0; - op_comm->granulepos=0; - - /* third header packet (modes/codebooks) ****************************/ - - oggpack_reset(&opb); - if(_vorbis_pack_books(&opb,vi))goto err_out; - - if(b->header2)_ogg_free(b->header2); - b->header2=_ogg_malloc(oggpack_bytes(&opb)); - memcpy(b->header2,opb.buffer,oggpack_bytes(&opb)); - op_code->packet=b->header2; - op_code->bytes=oggpack_bytes(&opb); - op_code->b_o_s=0; - op_code->e_o_s=0; - op_code->granulepos=0; - - oggpack_writeclear(&opb); - return(0); - err_out: - oggpack_writeclear(&opb); - memset(op,0,sizeof(*op)); - memset(op_comm,0,sizeof(*op_comm)); - memset(op_code,0,sizeof(*op_code)); - - if(b->header)_ogg_free(b->header); - if(b->header1)_ogg_free(b->header1); - if(b->header2)_ogg_free(b->header2); - b->header=NULL; - b->header1=NULL; - b->header2=NULL; - return(ret); -} - diff --git a/lib/lookup.c b/lib/lookup.c deleted file mode 100644 index de145de2..00000000 --- a/lib/lookup.c +++ /dev/null @@ -1,94 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: lookup based functions - last mod: $Id: lookup.c,v 1.9 2002/01/22 08:06:07 xiphmont Exp $ - - ********************************************************************/ - -#include <math.h> -#include "lookup.h" -#include "lookup_data.h" -#include "os.h" -#include "misc.h" - -#ifdef FLOAT_LOOKUP - -/* interpolated lookup based cos function, domain 0 to PI only */ -float vorbis_coslook(float a){ - double d=a*(.31830989*(float)COS_LOOKUP_SZ); - int i=vorbis_ftoi(d-.5); - - return COS_LOOKUP[i]+ (d-i)*(COS_LOOKUP[i+1]-COS_LOOKUP[i]); -} - -/* interpolated 1./sqrt(p) where .5 <= p < 1. */ -float vorbis_invsqlook(float a){ - double d=a*(2.f*(float)INVSQ_LOOKUP_SZ)-(float)INVSQ_LOOKUP_SZ; - int i=vorbis_ftoi(d-.5f); - return INVSQ_LOOKUP[i]+ (d-i)*(INVSQ_LOOKUP[i+1]-INVSQ_LOOKUP[i]); -} - -/* interpolated 1./sqrt(p) where .5 <= p < 1. */ -float vorbis_invsq2explook(int a){ - return INVSQ2EXP_LOOKUP[a-INVSQ2EXP_LOOKUP_MIN]; -} - -#include <stdio.h> -/* interpolated lookup based fromdB function, domain -140dB to 0dB only */ -float vorbis_fromdBlook(float a){ - int i=vorbis_ftoi(a*((float)(-(1<<FROMdB2_SHIFT)))-.5f); - return (i<0)?1.f: - ((i>=(FROMdB_LOOKUP_SZ<<FROMdB_SHIFT))?0.f: - FROMdB_LOOKUP[i>>FROMdB_SHIFT]*FROMdB2_LOOKUP[i&FROMdB2_MASK]); -} - -#endif - -#ifdef INT_LOOKUP -/* interpolated 1./sqrt(p) where .5 <= a < 1. (.100000... to .111111...) in - 16.16 format - - returns in m.8 format */ -long vorbis_invsqlook_i(long a,long e){ - long i=(a&0x7fff)>>(INVSQ_LOOKUP_I_SHIFT-1); - long d=(a&INVSQ_LOOKUP_I_MASK)<<(16-INVSQ_LOOKUP_I_SHIFT); /* 0.16 */ - long val=INVSQ_LOOKUP_I[i]- /* 1.16 */ - (((INVSQ_LOOKUP_I[i]-INVSQ_LOOKUP_I[i+1])* /* 0.16 */ - d)>>16); /* result 1.16 */ - - e+=32; - if(e&1)val=(val*5792)>>13; /* multiply val by 1/sqrt(2) */ - e=(e>>1)-8; - - return(val>>e); -} - -/* interpolated lookup based fromdB function, domain -140dB to 0dB only */ -/* a is in n.12 format */ -float vorbis_fromdBlook_i(long a){ - int i=(-a)>>(12-FROMdB2_SHIFT); - return (i<0)?1.f: - ((i>=(FROMdB_LOOKUP_SZ<<FROMdB_SHIFT))?0.f: - FROMdB_LOOKUP[i>>FROMdB_SHIFT]*FROMdB2_LOOKUP[i&FROMdB2_MASK]); -} - -/* interpolated lookup based cos function, domain 0 to PI only */ -/* a is in 0.16 format, where 0==0, 2^^16-1==PI, return 0.14 */ -long vorbis_coslook_i(long a){ - int i=a>>COS_LOOKUP_I_SHIFT; - int d=a&COS_LOOKUP_I_MASK; - return COS_LOOKUP_I[i]- ((d*(COS_LOOKUP_I[i]-COS_LOOKUP_I[i+1]))>> - COS_LOOKUP_I_SHIFT); -} - -#endif diff --git a/lib/lookup.h b/lib/lookup.h deleted file mode 100644 index 16a3b5d5..00000000 --- a/lib/lookup.h +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: lookup based functions - last mod: $Id: lookup.h,v 1.6 2001/12/20 01:00:27 segher Exp $ - - ********************************************************************/ - -#ifndef _V_LOOKUP_H_ - -#ifdef FLOAT_LOOKUP -extern float vorbis_coslook(float a); -extern float vorbis_invsqlook(float a); -extern float vorbis_invsq2explook(int a); -extern float vorbis_fromdBlook(float a); -#endif -#ifdef INT_LOOKUP -extern long vorbis_invsqlook_i(long a,long e); -extern long vorbis_coslook_i(long a); -extern float vorbis_fromdBlook_i(long a); -#endif - -#endif diff --git a/lib/lookup_data.h b/lib/lookup_data.h deleted file mode 100644 index 08da3687..00000000 --- a/lib/lookup_data.h +++ /dev/null @@ -1,189 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: lookup data; generated by lookups.pl; edit there - last mod: $Id: lookup_data.h,v 1.8 2001/12/20 01:00:27 segher Exp $ - - ********************************************************************/ - -#ifndef _V_LOOKUP_DATA_H_ - -#ifdef FLOAT_LOOKUP -#define COS_LOOKUP_SZ 128 -static float COS_LOOKUP[COS_LOOKUP_SZ+1]={ - +1.0000000000000f,+0.9996988186962f,+0.9987954562052f,+0.9972904566787f, - +0.9951847266722f,+0.9924795345987f,+0.9891765099648f,+0.9852776423889f, - +0.9807852804032f,+0.9757021300385f,+0.9700312531945f,+0.9637760657954f, - +0.9569403357322f,+0.9495281805930f,+0.9415440651830f,+0.9329927988347f, - +0.9238795325113f,+0.9142097557035f,+0.9039892931234f,+0.8932243011955f, - +0.8819212643484f,+0.8700869911087f,+0.8577286100003f,+0.8448535652497f, - +0.8314696123025f,+0.8175848131516f,+0.8032075314806f,+0.7883464276266f, - +0.7730104533627f,+0.7572088465065f,+0.7409511253550f,+0.7242470829515f, - +0.7071067811865f,+0.6895405447371f,+0.6715589548470f,+0.6531728429538f, - +0.6343932841636f,+0.6152315905806f,+0.5956993044924f,+0.5758081914178f, - +0.5555702330196f,+0.5349976198871f,+0.5141027441932f,+0.4928981922298f, - +0.4713967368260f,+0.4496113296546f,+0.4275550934303f,+0.4052413140050f, - +0.3826834323651f,+0.3598950365350f,+0.3368898533922f,+0.3136817403989f, - +0.2902846772545f,+0.2667127574749f,+0.2429801799033f,+0.2191012401569f, - +0.1950903220161f,+0.1709618887603f,+0.1467304744554f,+0.1224106751992f, - +0.0980171403296f,+0.0735645635997f,+0.0490676743274f,+0.0245412285229f, - +0.0000000000000f,-0.0245412285229f,-0.0490676743274f,-0.0735645635997f, - -0.0980171403296f,-0.1224106751992f,-0.1467304744554f,-0.1709618887603f, - -0.1950903220161f,-0.2191012401569f,-0.2429801799033f,-0.2667127574749f, - -0.2902846772545f,-0.3136817403989f,-0.3368898533922f,-0.3598950365350f, - -0.3826834323651f,-0.4052413140050f,-0.4275550934303f,-0.4496113296546f, - -0.4713967368260f,-0.4928981922298f,-0.5141027441932f,-0.5349976198871f, - -0.5555702330196f,-0.5758081914178f,-0.5956993044924f,-0.6152315905806f, - -0.6343932841636f,-0.6531728429538f,-0.6715589548470f,-0.6895405447371f, - -0.7071067811865f,-0.7242470829515f,-0.7409511253550f,-0.7572088465065f, - -0.7730104533627f,-0.7883464276266f,-0.8032075314806f,-0.8175848131516f, - -0.8314696123025f,-0.8448535652497f,-0.8577286100003f,-0.8700869911087f, - -0.8819212643484f,-0.8932243011955f,-0.9039892931234f,-0.9142097557035f, - -0.9238795325113f,-0.9329927988347f,-0.9415440651830f,-0.9495281805930f, - -0.9569403357322f,-0.9637760657954f,-0.9700312531945f,-0.9757021300385f, - -0.9807852804032f,-0.9852776423889f,-0.9891765099648f,-0.9924795345987f, - -0.9951847266722f,-0.9972904566787f,-0.9987954562052f,-0.9996988186962f, - -1.0000000000000f, -}; - -#define INVSQ_LOOKUP_SZ 32 -static float INVSQ_LOOKUP[INVSQ_LOOKUP_SZ+1]={ - 1.414213562373f,1.392621247646f,1.371988681140f,1.352246807566f, - 1.333333333333f,1.315191898443f,1.297771369046f,1.281025230441f, - 1.264911064067f,1.249390095109f,1.234426799697f,1.219988562661f, - 1.206045378311f,1.192569588000f,1.179535649239f,1.166919931983f, - 1.154700538379f,1.142857142857f,1.131370849898f,1.120224067222f, - 1.109400392450f,1.098884511590f,1.088662107904f,1.078719779941f, - 1.069044967650f,1.059625885652f,1.050451462878f,1.041511287847f, - 1.032795558989f,1.024295039463f,1.016001016002f,1.007905261358f, - 1.000000000000f, -}; - -#define INVSQ2EXP_LOOKUP_MIN -32 -#define INVSQ2EXP_LOOKUP_MAX 32 -static float INVSQ2EXP_LOOKUP[INVSQ2EXP_LOOKUP_MAX-\ - INVSQ2EXP_LOOKUP_MIN+1]={ - 65536.f, 46340.95001f, 32768.f, 23170.47501f, - 16384.f, 11585.2375f, 8192.f, 5792.618751f, - 4096.f, 2896.309376f, 2048.f, 1448.154688f, - 1024.f, 724.0773439f, 512.f, 362.038672f, - 256.f, 181.019336f, 128.f, 90.50966799f, - 64.f, 45.254834f, 32.f, 22.627417f, - 16.f, 11.3137085f, 8.f, 5.656854249f, - 4.f, 2.828427125f, 2.f, 1.414213562f, - 1.f, 0.7071067812f, 0.5f, 0.3535533906f, - 0.25f, 0.1767766953f, 0.125f, 0.08838834765f, - 0.0625f, 0.04419417382f, 0.03125f, 0.02209708691f, - 0.015625f, 0.01104854346f, 0.0078125f, 0.005524271728f, - 0.00390625f, 0.002762135864f, 0.001953125f, 0.001381067932f, - 0.0009765625f, 0.000690533966f, 0.00048828125f, 0.000345266983f, - 0.000244140625f,0.0001726334915f,0.0001220703125f,8.631674575e-05f, - 6.103515625e-05f,4.315837288e-05f,3.051757812e-05f,2.157918644e-05f, - 1.525878906e-05f, -}; - -#endif - -#define FROMdB_LOOKUP_SZ 35 -#define FROMdB2_LOOKUP_SZ 32 -#define FROMdB_SHIFT 5 -#define FROMdB2_SHIFT 3 -#define FROMdB2_MASK 31 -static float FROMdB_LOOKUP[FROMdB_LOOKUP_SZ]={ - 1.f, 0.6309573445f, 0.3981071706f, 0.2511886432f, - 0.1584893192f, 0.1f, 0.06309573445f, 0.03981071706f, - 0.02511886432f, 0.01584893192f, 0.01f, 0.006309573445f, - 0.003981071706f, 0.002511886432f, 0.001584893192f, 0.001f, - 0.0006309573445f,0.0003981071706f,0.0002511886432f,0.0001584893192f, - 0.0001f,6.309573445e-05f,3.981071706e-05f,2.511886432e-05f, - 1.584893192e-05f, 1e-05f,6.309573445e-06f,3.981071706e-06f, - 2.511886432e-06f,1.584893192e-06f, 1e-06f,6.309573445e-07f, - 3.981071706e-07f,2.511886432e-07f,1.584893192e-07f, -}; - -static float FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ]={ - 0.9928302478f, 0.9786445908f, 0.9646616199f, 0.9508784391f, - 0.9372921937f, 0.92390007f, 0.9106992942f, 0.8976871324f, - 0.8848608897f, 0.8722179097f, 0.8597555737f, 0.8474713009f, - 0.835362547f, 0.8234268041f, 0.8116616003f, 0.8000644989f, - 0.7886330981f, 0.7773650302f, 0.7662579617f, 0.755309592f, - 0.7445176537f, 0.7338799116f, 0.7233941627f, 0.7130582353f, - 0.7028699885f, 0.6928273125f, 0.6829281272f, 0.6731703824f, - 0.6635520573f, 0.6540711597f, 0.6447257262f, 0.6355138211f, -}; - -#ifdef INT_LOOKUP - -#define INVSQ_LOOKUP_I_SHIFT 10 -#define INVSQ_LOOKUP_I_MASK 1023 -static long INVSQ_LOOKUP_I[64+1]={ - 92682l, 91966l, 91267l, 90583l, - 89915l, 89261l, 88621l, 87995l, - 87381l, 86781l, 86192l, 85616l, - 85051l, 84497l, 83953l, 83420l, - 82897l, 82384l, 81880l, 81385l, - 80899l, 80422l, 79953l, 79492l, - 79039l, 78594l, 78156l, 77726l, - 77302l, 76885l, 76475l, 76072l, - 75674l, 75283l, 74898l, 74519l, - 74146l, 73778l, 73415l, 73058l, - 72706l, 72359l, 72016l, 71679l, - 71347l, 71019l, 70695l, 70376l, - 70061l, 69750l, 69444l, 69141l, - 68842l, 68548l, 68256l, 67969l, - 67685l, 67405l, 67128l, 66855l, - 66585l, 66318l, 66054l, 65794l, - 65536l, -}; - -#define COS_LOOKUP_I_SHIFT 9 -#define COS_LOOKUP_I_MASK 511 -#define COS_LOOKUP_I_SZ 128 -static long COS_LOOKUP_I[COS_LOOKUP_I_SZ+1]={ - 16384l, 16379l, 16364l, 16340l, - 16305l, 16261l, 16207l, 16143l, - 16069l, 15986l, 15893l, 15791l, - 15679l, 15557l, 15426l, 15286l, - 15137l, 14978l, 14811l, 14635l, - 14449l, 14256l, 14053l, 13842l, - 13623l, 13395l, 13160l, 12916l, - 12665l, 12406l, 12140l, 11866l, - 11585l, 11297l, 11003l, 10702l, - 10394l, 10080l, 9760l, 9434l, - 9102l, 8765l, 8423l, 8076l, - 7723l, 7366l, 7005l, 6639l, - 6270l, 5897l, 5520l, 5139l, - 4756l, 4370l, 3981l, 3590l, - 3196l, 2801l, 2404l, 2006l, - 1606l, 1205l, 804l, 402l, - 0l, -401l, -803l, -1204l, - -1605l, -2005l, -2403l, -2800l, - -3195l, -3589l, -3980l, -4369l, - -4755l, -5138l, -5519l, -5896l, - -6269l, -6638l, -7004l, -7365l, - -7722l, -8075l, -8422l, -8764l, - -9101l, -9433l, -9759l, -10079l, - -10393l, -10701l, -11002l, -11296l, - -11584l, -11865l, -12139l, -12405l, - -12664l, -12915l, -13159l, -13394l, - -13622l, -13841l, -14052l, -14255l, - -14448l, -14634l, -14810l, -14977l, - -15136l, -15285l, -15425l, -15556l, - -15678l, -15790l, -15892l, -15985l, - -16068l, -16142l, -16206l, -16260l, - -16304l, -16339l, -16363l, -16378l, - -16383l, -}; - -#endif - -#endif diff --git a/lib/lookups.pl b/lib/lookups.pl deleted file mode 100755 index 5fd05b0d..00000000 --- a/lib/lookups.pl +++ /dev/null @@ -1,142 +0,0 @@ -#!/usr/bin/perl -print <<'EOD'; -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: lookup data; generated by lookups.pl; edit there - last mod: $Id: lookups.pl,v 1.6 2001/12/20 01:00:27 segher Exp $ - - ********************************************************************/ - -#ifndef _V_LOOKUP_DATA_H_ - -#ifdef FLOAT_LOOKUP -EOD - -$cos_sz=128; -$invsq_sz=32; -$invsq2exp_min=-32; -$invsq2exp_max=32; - -$fromdB_sz=35; -$fromdB_shift=5; -$fromdB2_shift=3; - -$invsq_i_shift=10; -$cos_i_shift=9; -$delta_shift=6; - -print "#define COS_LOOKUP_SZ $cos_sz\n"; -print "static float COS_LOOKUP[COS_LOOKUP_SZ+1]={\n"; - -for($i=0;$i<=$cos_sz;){ - print "\t"; - for($j=0;$j<4 && $i<=$cos_sz;$j++){ - printf "%+.13f,", cos(3.14159265358979323846*($i++)/$cos_sz) ; - } - print "\n"; -} -print "};\n\n"; - -print "#define INVSQ_LOOKUP_SZ $invsq_sz\n"; -print "static float INVSQ_LOOKUP[INVSQ_LOOKUP_SZ+1]={\n"; - -for($i=0;$i<=$invsq_sz;){ - print "\t"; - for($j=0;$j<4 && $i<=$invsq_sz;$j++){ - my$indexmap=$i++/$invsq_sz*.5+.5; - printf "%.12f,", 1./sqrt($indexmap); - } - print "\n"; -} -print "};\n\n"; - -print "#define INVSQ2EXP_LOOKUP_MIN $invsq2exp_min\n"; -print "#define INVSQ2EXP_LOOKUP_MAX $invsq2exp_max\n"; -print "static float INVSQ2EXP_LOOKUP[INVSQ2EXP_LOOKUP_MAX-\\\n". - " INVSQ2EXP_LOOKUP_MIN+1]={\n"; - -for($i=$invsq2exp_min;$i<=$invsq2exp_max;){ - print "\t"; - for($j=0;$j<4 && $i<=$invsq2exp_max;$j++){ - printf "%15.10g,", 2**($i++*-.5); - } - print "\n"; -} -print "};\n\n#endif\n\n"; - - -# 0 to -140 dB -$fromdB2_sz=1<<$fromdB_shift; -$fromdB_gran=1<<($fromdB_shift-$fromdB2_shift); -print "#define FROMdB_LOOKUP_SZ $fromdB_sz\n"; -print "#define FROMdB2_LOOKUP_SZ $fromdB2_sz\n"; -print "#define FROMdB_SHIFT $fromdB_shift\n"; -print "#define FROMdB2_SHIFT $fromdB2_shift\n"; -print "#define FROMdB2_MASK ".((1<<$fromdB_shift)-1)."\n"; - -print "static float FROMdB_LOOKUP[FROMdB_LOOKUP_SZ]={\n"; - -for($i=0;$i<$fromdB_sz;){ - print "\t"; - for($j=0;$j<4 && $i<$fromdB_sz;$j++){ - printf "%15.10g,", 10**(.05*(-$fromdB_gran*$i++)); - } - print "\n"; -} -print "};\n\n"; - -print "static float FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ]={\n"; - -for($i=0;$i<$fromdB2_sz;){ - print "\t"; - for($j=0;$j<4 && $i<$fromdB_sz;$j++){ - printf "%15.10g,", 10**(.05*(-$fromdB_gran/$fromdB2_sz*(.5+$i++))); - } - print "\n"; -} -print "};\n\n#ifdef INT_LOOKUP\n\n"; - - -$iisz=0x10000>>$invsq_i_shift; -print "#define INVSQ_LOOKUP_I_SHIFT $invsq_i_shift\n"; -print "#define INVSQ_LOOKUP_I_MASK ".(0x0ffff>>(16-$invsq_i_shift))."\n"; -print "static long INVSQ_LOOKUP_I[$iisz+1]={\n"; -for($i=0;$i<=$iisz;){ - print "\t"; - for($j=0;$j<4 && $i<=$iisz;$j++){ - my$indexmap=$i++/$iisz*.5+.5; - printf "%8d,", int(1./sqrt($indexmap)*65536.+.5); - } - print "\n"; -} -print "};\n\n"; - -$cisz=0x10000>>$cos_i_shift; -print "#define COS_LOOKUP_I_SHIFT $cos_i_shift\n"; -print "#define COS_LOOKUP_I_MASK ".(0x0ffff>>(16-$cos_i_shift))."\n"; -print "#define COS_LOOKUP_I_SZ $cisz\n"; -print "static long COS_LOOKUP_I[COS_LOOKUP_I_SZ+1]={\n"; - -for($i=0;$i<=$cisz;){ - print "\t"; - for($j=0;$j<4 && $i<=$cisz;$j++){ - printf "%8d,", int(cos(3.14159265358979323846*($i++)/$cos_sz)*16384.+.5) ; - } - print "\n"; -} -print "};\n\n"; - - -print "#endif\n\n#endif\n"; - - diff --git a/lib/lpc.c b/lib/lpc.c deleted file mode 100644 index 7ee4b803..00000000 --- a/lib/lpc.c +++ /dev/null @@ -1,200 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: LPC low level routines - last mod: $Id: lpc.c,v 1.34 2001/12/20 01:00:27 segher Exp $ - - ********************************************************************/ - -/* Some of these routines (autocorrelator, LPC coefficient estimator) - are derived from code written by Jutta Degener and Carsten Bormann; - thus we include their copyright below. The entirety of this file - is freely redistributable on the condition that both of these - copyright notices are preserved without modification. */ - -/* Preserved Copyright: *********************************************/ - -/* Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann, -Technische Universita"t Berlin - -Any use of this software is permitted provided that this notice is not -removed and that neither the authors nor the Technische Universita"t -Berlin are deemed to have made any representations as to the -suitability of this software for any purpose nor are held responsible -for any defects of this software. THERE IS ABSOLUTELY NO WARRANTY FOR -THIS SOFTWARE. - -As a matter of courtesy, the authors request to be informed about uses -this software has found, about bugs in this software, and about any -improvements that may be of general interest. - -Berlin, 28.11.1994 -Jutta Degener -Carsten Bormann - -*********************************************************************/ - -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include "os.h" -#include "smallft.h" -#include "lpc.h" -#include "scales.h" -#include "misc.h" - -/* Autocorrelation LPC coeff generation algorithm invented by - N. Levinson in 1947, modified by J. Durbin in 1959. */ - -/* Input : n elements of time doamin data - Output: m lpc coefficients, excitation energy */ - -float vorbis_lpc_from_data(float *data,float *lpc,int n,int m){ - float *aut=alloca(sizeof(*aut)*(m+1)); - float error; - int i,j; - - /* autocorrelation, p+1 lag coefficients */ - - j=m+1; - while(j--){ - double d=0; /* double needed for accumulator depth */ - for(i=j;i<n;i++)d+=data[i]*data[i-j]; - aut[j]=d; - } - - /* Generate lpc coefficients from autocorr values */ - - error=aut[0]; - - for(i=0;i<m;i++){ - float r= -aut[i+1]; - - if(error==0){ - memset(lpc,0,m*sizeof(*lpc)); - return 0; - } - - /* Sum up this iteration's reflection coefficient; note that in - Vorbis we don't save it. If anyone wants to recycle this code - and needs reflection coefficients, save the results of 'r' from - each iteration. */ - - for(j=0;j<i;j++)r-=lpc[j]*aut[i-j]; - r/=error; - - /* Update LPC coefficients and total error */ - - lpc[i]=r; - for(j=0;j<i/2;j++){ - float tmp=lpc[j]; - lpc[j]+=r*lpc[i-1-j]; - lpc[i-1-j]+=r*tmp; - } - if(i%2)lpc[j]+=lpc[j]*r; - - error*=1.f-r*r; - } - - /* we need the error value to know how big an impulse to hit the - filter with later */ - - return error; -} - -/* Input : n element envelope spectral curve - Output: m lpc coefficients, excitation energy */ - -float vorbis_lpc_from_curve(float *curve,float *lpc,lpc_lookup *l){ - int n=l->ln; - int m=l->m; - float *work=alloca(sizeof(*work)*(n+n)); - float fscale=.5f/n; - int i,j; - - /* input is a real curve. make it complex-real */ - /* This mixes phase, but the LPC generation doesn't care. */ - for(i=0;i<n;i++){ - work[i*2]=curve[i]*fscale; - work[i*2+1]=0; - } - work[n*2-1]=curve[n-1]*fscale; - - n*=2; - drft_backward(&l->fft,work); - - /* The autocorrelation will not be circular. Shift, else we lose - most of the power in the edges. */ - - for(i=0,j=n/2;i<n/2;){ - float temp=work[i]; - work[i++]=work[j]; - work[j++]=temp; - } - - /* we *could* shave speed here by skimping on the edges (thus - speeding up the autocorrelation in vorbis_lpc_from_data) but we - don't right now. */ - - return(vorbis_lpc_from_data(work,lpc,n,m)); -} - -void lpc_init(lpc_lookup *l,long mapped, int m){ - memset(l,0,sizeof(*l)); - - l->ln=mapped; - l->m=m; - - /* we cheat decoding the LPC spectrum via FFTs */ - drft_init(&l->fft,mapped*2); - -} - -void lpc_clear(lpc_lookup *l){ - if(l){ - drft_clear(&l->fft); - } -} - -void vorbis_lpc_predict(float *coeff,float *prime,int m, - float *data,long n){ - - /* in: coeff[0...m-1] LPC coefficients - prime[0...m-1] initial values (allocated size of n+m-1) - out: data[0...n-1] data samples */ - - long i,j,o,p; - float y; - float *work=alloca(sizeof(*work)*(m+n)); - - if(!prime) - for(i=0;i<m;i++) - work[i]=0.f; - else - for(i=0;i<m;i++) - work[i]=prime[i]; - - for(i=0;i<n;i++){ - y=0; - o=i; - p=m; - for(j=0;j<m;j++) - y-=work[o++]*coeff[--p]; - - data[i]=work[o]=y; - } -} - - - - - diff --git a/lib/lpc.h b/lib/lpc.h deleted file mode 100644 index 4651a902..00000000 --- a/lib/lpc.h +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: LPC low level routines - last mod: $Id: lpc.h,v 1.18 2001/12/20 01:00:27 segher Exp $ - - ********************************************************************/ - -#ifndef _V_LPC_H_ -#define _V_LPC_H_ - -#include "vorbis/codec.h" -#include "smallft.h" - -typedef struct lpclook{ - /* en/decode lookups */ - drft_lookup fft; - - int ln; - int m; - -} lpc_lookup; - -extern void lpc_init(lpc_lookup *l,long mapped, int m); -extern void lpc_clear(lpc_lookup *l); - -/* simple linear scale LPC code */ -extern float vorbis_lpc_from_data(float *data,float *lpc,int n,int m); -extern float vorbis_lpc_from_curve(float *curve,float *lpc,lpc_lookup *l); - -extern void vorbis_lpc_predict(float *coeff,float *prime,int m, - float *data,long n); - -#endif diff --git a/lib/lsp.c b/lib/lsp.c deleted file mode 100644 index fe95fc9a..00000000 --- a/lib/lsp.c +++ /dev/null @@ -1,457 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: LSP (also called LSF) conversion routines - last mod: $Id: lsp.c,v 1.20 2001/12/20 01:00:27 segher Exp $ - - The LSP generation code is taken (with minimal modification and a - few bugfixes) from "On the Computation of the LSP Frequencies" by - Joseph Rothweiler <rothwlr@altavista.net>, available at: - - http://www2.xtdl.com/~rothwlr/lsfpaper/lsfpage.html - - ********************************************************************/ - -/* Note that the lpc-lsp conversion finds the roots of polynomial with - an iterative root polisher (CACM algorithm 283). It *is* possible - to confuse this algorithm into not converging; that should only - happen with absurdly closely spaced roots (very sharp peaks in the - LPC f response) which in turn should be impossible in our use of - the code. If this *does* happen anyway, it's a bug in the floor - finder; find the cause of the confusion (probably a single bin - spike or accidental near-float-limit resolution problems) and - correct it. */ - -#include <math.h> -#include <string.h> -#include <stdlib.h> -#include "lsp.h" -#include "os.h" -#include "misc.h" -#include "lookup.h" -#include "scales.h" - -/* three possible LSP to f curve functions; the exact computation - (float), a lookup based float implementation, and an integer - implementation. The float lookup is likely the optimal choice on - any machine with an FPU. The integer implementation is *not* fixed - point (due to the need for a large dynamic range and thus a - seperately tracked exponent) and thus much more complex than the - relatively simple float implementations. It's mostly for future - work on a fully fixed point implementation for processors like the - ARM family. */ - -/* undefine both for the 'old' but more precise implementation */ -#undef FLOAT_LOOKUP -#undef INT_LOOKUP - -#ifdef FLOAT_LOOKUP -#include "lookup.c" /* catch this in the build system; we #include for - compilers (like gcc) that can't inline across - modules */ - -/* side effect: changes *lsp to cosines of lsp */ -void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,float *lsp,int m, - float amp,float ampoffset){ - int i; - float wdel=M_PI/ln; - vorbis_fpu_control fpu; - - vorbis_fpu_setround(&fpu); - for(i=0;i<m;i++)lsp[i]=vorbis_coslook(lsp[i]); - - i=0; - while(i<n){ - int k=map[i]; - int qexp; - float p=.7071067812f; - float q=.7071067812f; - float w=vorbis_coslook(wdel*k); - float *ftmp=lsp; - int c=m>>1; - - do{ - q*=ftmp[0]-w; - p*=ftmp[1]-w; - ftmp+=2; - }while(--c); - - if(m&1){ - /* odd order filter; slightly assymetric */ - /* the last coefficient */ - q*=ftmp[0]-w; - q*=q; - p*=p*(1.f-w*w); - }else{ - /* even order filter; still symmetric */ - q*=q*(1.f+w); - p*=p*(1.f-w); - } - - q=frexp(p+q,&qexp); - q=vorbis_fromdBlook(amp* - vorbis_invsqlook(q)* - vorbis_invsq2explook(qexp+m)- - ampoffset); - - do{ - curve[i++]*=q; - }while(map[i]==k); - } - vorbis_fpu_restore(fpu); -} - -#else - -#ifdef INT_LOOKUP -#include "lookup.c" /* catch this in the build system; we #include for - compilers (like gcc) that can't inline across - modules */ - -static int MLOOP_1[64]={ - 0,10,11,11, 12,12,12,12, 13,13,13,13, 13,13,13,13, - 14,14,14,14, 14,14,14,14, 14,14,14,14, 14,14,14,14, - 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15, - 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15, -}; - -static int MLOOP_2[64]={ - 0,4,5,5, 6,6,6,6, 7,7,7,7, 7,7,7,7, - 8,8,8,8, 8,8,8,8, 8,8,8,8, 8,8,8,8, - 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9, - 9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9, -}; - -static int MLOOP_3[8]={0,1,2,2,3,3,3,3}; - - -/* side effect: changes *lsp to cosines of lsp */ -void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,float *lsp,int m, - float amp,float ampoffset){ - - /* 0 <= m < 256 */ - - /* set up for using all int later */ - int i; - int ampoffseti=rint(ampoffset*4096.f); - int ampi=rint(amp*16.f); - long *ilsp=alloca(m*sizeof(*ilsp)); - for(i=0;i<m;i++)ilsp[i]=vorbis_coslook_i(lsp[i]/M_PI*65536.f+.5f); - - i=0; - while(i<n){ - int j,k=map[i]; - unsigned long pi=46341; /* 2**-.5 in 0.16 */ - unsigned long qi=46341; - int qexp=0,shift; - long wi=vorbis_coslook_i(k*65536/ln); - - qi*=labs(ilsp[0]-wi); - pi*=labs(ilsp[1]-wi); - - for(j=3;j<m;j+=2){ - if(!(shift=MLOOP_1[(pi|qi)>>25])) - if(!(shift=MLOOP_2[(pi|qi)>>19])) - shift=MLOOP_3[(pi|qi)>>16]; - qi=(qi>>shift)*labs(ilsp[j-1]-wi); - pi=(pi>>shift)*labs(ilsp[j]-wi); - qexp+=shift; - } - if(!(shift=MLOOP_1[(pi|qi)>>25])) - if(!(shift=MLOOP_2[(pi|qi)>>19])) - shift=MLOOP_3[(pi|qi)>>16]; - - /* pi,qi normalized collectively, both tracked using qexp */ - - if(m&1){ - /* odd order filter; slightly assymetric */ - /* the last coefficient */ - qi=(qi>>shift)*labs(ilsp[j-1]-wi); - pi=(pi>>shift)<<14; - qexp+=shift; - - if(!(shift=MLOOP_1[(pi|qi)>>25])) - if(!(shift=MLOOP_2[(pi|qi)>>19])) - shift=MLOOP_3[(pi|qi)>>16]; - - pi>>=shift; - qi>>=shift; - qexp+=shift-14*((m+1)>>1); - - pi=((pi*pi)>>16); - qi=((qi*qi)>>16); - qexp=qexp*2+m; - - pi*=(1<<14)-((wi*wi)>>14); - qi+=pi>>14; - - }else{ - /* even order filter; still symmetric */ - - /* p*=p(1-w), q*=q(1+w), let normalization drift because it isn't - worth tracking step by step */ - - pi>>=shift; - qi>>=shift; - qexp+=shift-7*m; - - pi=((pi*pi)>>16); - qi=((qi*qi)>>16); - qexp=qexp*2+m; - - pi*=(1<<14)-wi; - qi*=(1<<14)+wi; - qi=(qi+pi)>>14; - - } - - - /* we've let the normalization drift because it wasn't important; - however, for the lookup, things must be normalized again. We - need at most one right shift or a number of left shifts */ - - if(qi&0xffff0000){ /* checks for 1.xxxxxxxxxxxxxxxx */ - qi>>=1; qexp++; - }else - while(qi && !(qi&0x8000)){ /* checks for 0.0xxxxxxxxxxxxxxx or less*/ - qi<<=1; qexp--; - } - - amp=vorbis_fromdBlook_i(ampi* /* n.4 */ - vorbis_invsqlook_i(qi,qexp)- - /* m.8, m+n<=8 */ - ampoffseti); /* 8.12[0] */ - - curve[i]*=amp; - while(map[++i]==k)curve[i]*=amp; - } -} - -#else - -/* old, nonoptimized but simple version for any poor sap who needs to - figure out what the hell this code does, or wants the other - fraction of a dB precision */ - -/* side effect: changes *lsp to cosines of lsp */ -void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,float *lsp,int m, - float amp,float ampoffset){ - int i; - float wdel=M_PI/ln; - for(i=0;i<m;i++)lsp[i]=2.f*cos(lsp[i]); - - i=0; - while(i<n){ - int j,k=map[i]; - float p=.5f; - float q=.5f; - float w=2.f*cos(wdel*k); - for(j=1;j<m;j+=2){ - q *= w-lsp[j-1]; - p *= w-lsp[j]; - } - if(j==m){ - /* odd order filter; slightly assymetric */ - /* the last coefficient */ - q*=w-lsp[j-1]; - p*=p*(4.f-w*w); - q*=q; - }else{ - /* even order filter; still symmetric */ - p*=p*(2.f-w); - q*=q*(2.f+w); - } - - q=fromdB(amp/sqrt(p+q)-ampoffset); - - curve[i]*=q; - while(map[++i]==k)curve[i]*=q; - } -} - -#endif -#endif - -static void cheby(float *g, int ord) { - int i, j; - - g[0] *= .5f; - for(i=2; i<= ord; i++) { - for(j=ord; j >= i; j--) { - g[j-2] -= g[j]; - g[j] += g[j]; - } - } -} - -static int comp(const void *a,const void *b){ - if(*(float *)a<*(float *)b) - return(1); - else - return(-1); -} - -/* Newton-Raphson-Maehly actually functioned as a decent root finder, - but there are root sets for which it gets into limit cycles - (exacerbated by zero suppression) and fails. We can't afford to - fail, even if the failure is 1 in 100,000,000, so we now use - Laguerre and later polish with Newton-Raphson (which can then - afford to fail) */ - -#define EPSILON 10e-7 -static int Laguerre_With_Deflation(float *a,int ord,float *r){ - int i,m; - double lastdelta=0.f; - double *defl=alloca(sizeof(*defl)*(ord+1)); - for(i=0;i<=ord;i++)defl[i]=a[i]; - - for(m=ord;m>0;m--){ - double new=0.f,delta; - - /* iterate a root */ - while(1){ - double p=defl[m],pp=0.f,ppp=0.f,denom; - - /* eval the polynomial and its first two derivatives */ - for(i=m;i>0;i--){ - ppp = new*ppp + pp; - pp = new*pp + p; - p = new*p + defl[i-1]; - } - - /* Laguerre's method */ - denom=(m-1) * ((m-1)*pp*pp - m*p*ppp); - if(denom<0) - return(-1); /* complex root! The LPC generator handed us a bad filter */ - - if(pp>0){ - denom = pp + sqrt(denom); - if(denom<EPSILON)denom=EPSILON; - }else{ - denom = pp - sqrt(denom); - if(denom>-(EPSILON))denom=-(EPSILON); - } - - delta = m*p/denom; - new -= delta; - - if(delta<0.f)delta*=-1; - - if(fabs(delta/new)<10e-12)break; - lastdelta=delta; - } - - r[m-1]=new; - - /* forward deflation */ - - for(i=m;i>0;i--) - defl[i-1]+=new*defl[i]; - defl++; - - } - return(0); -} - - -/* for spit-and-polish only */ -static int Newton_Raphson(float *a,int ord,float *r){ - int i, k, count=0; - double error=1.f; - double *root=alloca(ord*sizeof(*root)); - - for(i=0; i<ord;i++) root[i] = r[i]; - - while(error>1e-20){ - error=0; - - for(i=0; i<ord; i++) { /* Update each point. */ - double pp=0.,delta; - double rooti=root[i]; - double p=a[ord]; - for(k=ord-1; k>= 0; k--) { - - pp= pp* rooti + p; - p = p * rooti + a[k]; - } - - delta = p/pp; - root[i] -= delta; - error+= delta*delta; - } - - if(count>40)return(-1); - - count++; - } - - /* Replaced the original bubble sort with a real sort. With your - help, we can eliminate the bubble sort in our lifetime. --Monty */ - - for(i=0; i<ord;i++) r[i] = root[i]; - return(0); -} - - -/* Convert lpc coefficients to lsp coefficients */ -int vorbis_lpc_to_lsp(float *lpc,float *lsp,int m){ - int order2=(m+1)>>1; - int g1_order,g2_order; - float *g1=alloca(sizeof(*g1)*(order2+1)); - float *g2=alloca(sizeof(*g2)*(order2+1)); - float *g1r=alloca(sizeof(*g1r)*(order2+1)); - float *g2r=alloca(sizeof(*g2r)*(order2+1)); - int i; - - /* even and odd are slightly different base cases */ - g1_order=(m+1)>>1; - g2_order=(m) >>1; - - /* Compute the lengths of the x polynomials. */ - /* Compute the first half of K & R F1 & F2 polynomials. */ - /* Compute half of the symmetric and antisymmetric polynomials. */ - /* Remove the roots at +1 and -1. */ - - g1[g1_order] = 1.f; - for(i=1;i<=g1_order;i++) g1[g1_order-i] = lpc[i-1]+lpc[m-i]; - g2[g2_order] = 1.f; - for(i=1;i<=g2_order;i++) g2[g2_order-i] = lpc[i-1]-lpc[m-i]; - - if(g1_order>g2_order){ - for(i=2; i<=g2_order;i++) g2[g2_order-i] += g2[g2_order-i+2]; - }else{ - for(i=1; i<=g1_order;i++) g1[g1_order-i] -= g1[g1_order-i+1]; - for(i=1; i<=g2_order;i++) g2[g2_order-i] += g2[g2_order-i+1]; - } - - /* Convert into polynomials in cos(alpha) */ - cheby(g1,g1_order); - cheby(g2,g2_order); - - /* Find the roots of the 2 even polynomials.*/ - if(Laguerre_With_Deflation(g1,g1_order,g1r) || - Laguerre_With_Deflation(g2,g2_order,g2r)) - return(-1); - - Newton_Raphson(g1,g1_order,g1r); /* if it fails, it leaves g1r alone */ - Newton_Raphson(g2,g2_order,g2r); /* if it fails, it leaves g2r alone */ - - qsort(g1r,g1_order,sizeof(*g1r),comp); - qsort(g2r,g2_order,sizeof(*g2r),comp); - - for(i=0;i<g1_order;i++) - lsp[i*2] = acos(g1r[i]); - - for(i=0;i<g2_order;i++) - lsp[i*2+1] = acos(g2r[i]); - return(0); -} diff --git a/lib/lsp.h b/lib/lsp.h deleted file mode 100644 index 4c1d95c3..00000000 --- a/lib/lsp.h +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: LSP (also called LSF) conversion routines - last mod: $Id: lsp.h,v 1.10 2001/12/20 01:00:27 segher Exp $ - - ********************************************************************/ - - -#ifndef _V_LSP_H_ -#define _V_LSP_H_ - -extern int vorbis_lpc_to_lsp(float *lpc,float *lsp,int m); - -extern void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln, - float *lsp,int m, - float amp,float ampoffset); - -#endif diff --git a/lib/mapping0.c b/lib/mapping0.c deleted file mode 100644 index ef2f346a..00000000 --- a/lib/mapping0.c +++ /dev/null @@ -1,701 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: channel mapping 0 implementation - last mod: $Id: mapping0.c,v 1.43 2001/12/20 01:00:27 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <math.h> -#include <ogg/ogg.h> -#include "vorbis/codec.h" -#include "codec_internal.h" -#include "codebook.h" -#include "registry.h" -#include "psy.h" -#include "misc.h" - -/* simplistic, wasteful way of doing this (unique lookup for each - mode/submapping); there should be a central repository for - identical lookups. That will require minor work, so I'm putting it - off as low priority. - - Why a lookup for each backend in a given mode? Because the - blocksize is set by the mode, and low backend lookups may require - parameters from other areas of the mode/mapping */ - -extern int analysis_noisy; - -typedef struct { - drft_lookup fft_look; - vorbis_info_mode *mode; - vorbis_info_mapping0 *map; - - vorbis_look_time **time_look; - vorbis_look_floor **floor_look; - - vorbis_look_residue **residue_look; - vorbis_look_psy *psy_look[2]; - - vorbis_func_time **time_func; - vorbis_func_floor **floor_func; - vorbis_func_residue **residue_func; - - int ch; - long lastframe; /* if a different mode is called, we need to - invalidate decay */ -} vorbis_look_mapping0; - -static vorbis_info_mapping *mapping0_copy_info(vorbis_info_mapping *vm){ - vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)vm; - vorbis_info_mapping0 *ret=_ogg_malloc(sizeof(*ret)); - memcpy(ret,info,sizeof(*ret)); - return(ret); -} - -static void mapping0_free_info(vorbis_info_mapping *i){ - vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)i; - if(info){ - memset(info,0,sizeof(*info)); - _ogg_free(info); - } -} - -static void mapping0_free_look(vorbis_look_mapping *look){ - int i; - vorbis_look_mapping0 *l=(vorbis_look_mapping0 *)look; - if(l){ - drft_clear(&l->fft_look); - - for(i=0;i<l->map->submaps;i++){ - l->time_func[i]->free_look(l->time_look[i]); - l->floor_func[i]->free_look(l->floor_look[i]); - l->residue_func[i]->free_look(l->residue_look[i]); - } - if(l->psy_look[1] && l->psy_look[1]!=l->psy_look[0]){ - _vp_psy_clear(l->psy_look[1]); - _ogg_free(l->psy_look[1]); - } - if(l->psy_look[0]){ - _vp_psy_clear(l->psy_look[0]); - _ogg_free(l->psy_look[0]); - } - _ogg_free(l->time_func); - _ogg_free(l->floor_func); - _ogg_free(l->residue_func); - _ogg_free(l->time_look); - _ogg_free(l->floor_look); - _ogg_free(l->residue_look); - memset(l,0,sizeof(*l)); - _ogg_free(l); - } -} - -static vorbis_look_mapping *mapping0_look(vorbis_dsp_state *vd,vorbis_info_mode *vm, - vorbis_info_mapping *m){ - int i; - vorbis_info *vi=vd->vi; - codec_setup_info *ci=vi->codec_setup; - vorbis_look_mapping0 *look=_ogg_calloc(1,sizeof(*look)); - vorbis_info_mapping0 *info=look->map=(vorbis_info_mapping0 *)m; - look->mode=vm; - - look->time_look=_ogg_calloc(info->submaps,sizeof(*look->time_look)); - look->floor_look=_ogg_calloc(info->submaps,sizeof(*look->floor_look)); - - look->residue_look=_ogg_calloc(info->submaps,sizeof(*look->residue_look)); - - look->time_func=_ogg_calloc(info->submaps,sizeof(*look->time_func)); - look->floor_func=_ogg_calloc(info->submaps,sizeof(*look->floor_func)); - look->residue_func=_ogg_calloc(info->submaps,sizeof(*look->residue_func)); - - for(i=0;i<info->submaps;i++){ - int timenum=info->timesubmap[i]; - int floornum=info->floorsubmap[i]; - int resnum=info->residuesubmap[i]; - - look->time_func[i]=_time_P[ci->time_type[timenum]]; - look->time_look[i]=look->time_func[i]-> - look(vd,vm,ci->time_param[timenum]); - look->floor_func[i]=_floor_P[ci->floor_type[floornum]]; - look->floor_look[i]=look->floor_func[i]-> - look(vd,vm,ci->floor_param[floornum]); - look->residue_func[i]=_residue_P[ci->residue_type[resnum]]; - look->residue_look[i]=look->residue_func[i]-> - look(vd,vm,ci->residue_param[resnum]); - - } - if(ci->psys && vd->analysisp){ - if(info->psy[0] != info->psy[1]){ - - int psynum=info->psy[0]; - look->psy_look[0]=_ogg_calloc(1,sizeof(*look->psy_look[0])); - _vp_psy_init(look->psy_look[0],ci->psy_param[psynum], - &ci->psy_g_param, - ci->blocksizes[vm->blockflag]/2,vi->rate); - - psynum=info->psy[1]; - look->psy_look[1]=_ogg_calloc(1,sizeof(*look->psy_look[1])); - _vp_psy_init(look->psy_look[1],ci->psy_param[psynum], - &ci->psy_g_param, - ci->blocksizes[vm->blockflag]/2,vi->rate); - }else{ - - int psynum=info->psy[0]; - look->psy_look[0]=_ogg_calloc(1,sizeof(*look->psy_look[0])); - look->psy_look[1]=look->psy_look[0]; - _vp_psy_init(look->psy_look[0],ci->psy_param[psynum], - &ci->psy_g_param, - ci->blocksizes[vm->blockflag]/2,vi->rate); - - } - } - - look->ch=vi->channels; - - if(vd->analysisp)drft_init(&look->fft_look,ci->blocksizes[vm->blockflag]); - return(look); -} - -static int ilog2(unsigned int v){ - int ret=0; - while(v>1){ - ret++; - v>>=1; - } - return(ret); -} - -static void mapping0_pack(vorbis_info *vi,vorbis_info_mapping *vm, - oggpack_buffer *opb){ - int i; - vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)vm; - - /* another 'we meant to do it this way' hack... up to beta 4, we - packed 4 binary zeros here to signify one submapping in use. We - now redefine that to mean four bitflags that indicate use of - deeper features; bit0:submappings, bit1:coupling, - bit2,3:reserved. This is backward compatable with all actual uses - of the beta code. */ - - if(info->submaps>1){ - oggpack_write(opb,1,1); - oggpack_write(opb,info->submaps-1,4); - }else - oggpack_write(opb,0,1); - - if(info->coupling_steps>0){ - oggpack_write(opb,1,1); - oggpack_write(opb,info->coupling_steps-1,8); - - for(i=0;i<info->coupling_steps;i++){ - oggpack_write(opb,info->coupling_mag[i],ilog2(vi->channels)); - oggpack_write(opb,info->coupling_ang[i],ilog2(vi->channels)); - } - }else - oggpack_write(opb,0,1); - - oggpack_write(opb,0,2); /* 2,3:reserved */ - - /* we don't write the channel submappings if we only have one... */ - if(info->submaps>1){ - for(i=0;i<vi->channels;i++) - oggpack_write(opb,info->chmuxlist[i],4); - } - for(i=0;i<info->submaps;i++){ - oggpack_write(opb,info->timesubmap[i],8); - oggpack_write(opb,info->floorsubmap[i],8); - oggpack_write(opb,info->residuesubmap[i],8); - } -} - -/* also responsible for range checking */ -static vorbis_info_mapping *mapping0_unpack(vorbis_info *vi,oggpack_buffer *opb){ - int i; - vorbis_info_mapping0 *info=_ogg_calloc(1,sizeof(*info)); - codec_setup_info *ci=vi->codec_setup; - memset(info,0,sizeof(*info)); - - if(oggpack_read(opb,1)) - info->submaps=oggpack_read(opb,4)+1; - else - info->submaps=1; - - if(oggpack_read(opb,1)){ - info->coupling_steps=oggpack_read(opb,8)+1; - - for(i=0;i<info->coupling_steps;i++){ - int testM=info->coupling_mag[i]=oggpack_read(opb,ilog2(vi->channels)); - int testA=info->coupling_ang[i]=oggpack_read(opb,ilog2(vi->channels)); - - if(testM<0 || - testA<0 || - testM==testA || - testM>=vi->channels || - testA>=vi->channels) goto err_out; - } - - } - - if(oggpack_read(opb,2)>0)goto err_out; /* 2,3:reserved */ - - if(info->submaps>1){ - for(i=0;i<vi->channels;i++){ - info->chmuxlist[i]=oggpack_read(opb,4); - if(info->chmuxlist[i]>=info->submaps)goto err_out; - } - } - for(i=0;i<info->submaps;i++){ - info->timesubmap[i]=oggpack_read(opb,8); - if(info->timesubmap[i]>=ci->times)goto err_out; - info->floorsubmap[i]=oggpack_read(opb,8); - if(info->floorsubmap[i]>=ci->floors)goto err_out; - info->residuesubmap[i]=oggpack_read(opb,8); - if(info->residuesubmap[i]>=ci->residues)goto err_out; - } - - return info; - - err_out: - mapping0_free_info(info); - return(NULL); -} - -#include "os.h" -#include "lpc.h" -#include "lsp.h" -#include "envelope.h" -#include "mdct.h" -#include "psy.h" -#include "scales.h" - -/* no time mapping implementation for now */ -static long seq=0; -static int mapping0_forward(vorbis_block *vb,vorbis_look_mapping *l){ - vorbis_dsp_state *vd=vb->vd; - vorbis_info *vi=vd->vi; - codec_setup_info *ci=vi->codec_setup; - backend_lookup_state *b=vb->vd->backend_state; - bitrate_manager_state *bm=&b->bms; - vorbis_look_mapping0 *look=(vorbis_look_mapping0 *)l; - vorbis_info_mapping0 *info=look->map; - vorbis_info_mode *mode=look->mode; - vorbis_block_internal *vbi=(vorbis_block_internal *)vb->internal; - int n=vb->pcmend; - int i,j; - float *window=b->window[vb->W][vb->lW][vb->nW][mode->windowtype]; - int *nonzero=alloca(sizeof(*nonzero)*vi->channels); - - float *work=_vorbis_block_alloc(vb,n*sizeof(*work)); - - float global_ampmax=vbi->ampmax; - float *local_ampmax=alloca(sizeof(*local_ampmax)*vi->channels); - int blocktype=vbi->blocktype; - - /* we differentiate between short and long block types to help the - masking engine; the window shapes also matter. - impulse block (a short block in which an impulse occurs) - padding block (a short block that pads between a transitional - long block and an impulse block, or vice versa) - transition block (the wqeird one; a long block with the transition - window; affects bass/midrange response and that must be - accounted for in masking) - long block (run of the mill long block) - */ - - for(i=0;i<vi->channels;i++){ - float scale=4.f/n; - float scale_dB; - - /* the following makes things clearer to *me* anyway */ - float *pcm =vb->pcm[i]; - float *fft =work; - float *logfft =pcm+n/2; - - /*float *res =pcm; - float *mdct =pcm; - float *codedflr=pcm+n/2; - float *logmax =work; - float *logmask =work+n/2;*/ - - scale_dB=todB(&scale); - _analysis_output("pcm",seq+i,pcm,n,0,0); - - /* window the PCM data */ - for(j=0;j<n;j++) - fft[j]=pcm[j]*=window[j]; - - /*_analysis_output("windowed",seq+i,pcm,n,0,0);*/ - - /* transform the PCM data */ - /* only MDCT right now.... */ - mdct_forward(b->transform[vb->W][0],pcm,pcm); - - /* FFT yields more accurate tonal estimation (not phase sensitive) */ - drft_forward(&look->fft_look,fft); - fft[0]*=scale; - logfft[0]=todB(fft); - local_ampmax[i]=logfft[0]; - for(j=1;j<n-1;j+=2){ - float temp=fft[j]*fft[j]+fft[j+1]*fft[j+1]; - temp=logfft[(j+1)>>1]=scale_dB+.5f*todB(&temp); - if(temp>local_ampmax[i])local_ampmax[i]=temp; - } - - if(local_ampmax[i]>0.f)local_ampmax[i]=0.f; - if(local_ampmax[i]>global_ampmax)global_ampmax=local_ampmax[i]; - - _analysis_output("fft",seq+i,logfft,n/2,1,0); - } - - for(i=0;i<vi->channels;i++){ - int submap=info->chmuxlist[i]; - - /* the following makes things clearer to *me* anyway */ - float *mdct =vb->pcm[i]; - float *res =mdct; - float *codedflr=mdct+n/2; - float *logfft =mdct+n/2; - - float *logmdct =work; - float *logmax =mdct+n/2; - float *logmask =work+n/2; - - for(j=0;j<n/2;j++) - logmdct[j]=todB(mdct+j); - _analysis_output("mdct",seq+i,logmdct,n/2,1,0); - - - /* perform psychoacoustics; do masking */ - _vp_compute_mask(look->psy_look[blocktype], - logfft, /* -> logmax */ - logmdct, - logmask, - global_ampmax, - local_ampmax[i], - bm->avgnoise); - - _analysis_output("mask",seq+i,logmask,n/2,1,0); - /* perform floor encoding */ - nonzero[i]=look->floor_func[submap]-> - forward(vb,look->floor_look[submap], - mdct, - logmdct, - logmask, - logmax, - - codedflr); - - - _vp_remove_floor(look->psy_look[blocktype], - mdct, - codedflr, - res); - - /*for(j=0;j<n/2;j++) - if(fabs(res[j])>1200){ - analysis_noisy=1; - fprintf(stderr,"%ld ",seq+i); - }*/ - - _analysis_output("codedflr",seq+i,codedflr,n/2,1,1); - - } - - vbi->ampmax=global_ampmax; - - /* partition based prequantization and channel coupling */ - /* Steps in prequant and coupling: - - classify by |mag| across all pcm vectors - - down-couple/down-quantize from perfect residue -> quantized vector - - do{ - encode quantized vector; add encoded values to 'so-far' vector - more? [not yet at bitrate/not yet at target] - yes{ - down-couple/down-quantize from perfect-'so-far' -> - quantized vector; when subtracting coupling, - account for +/- out-of-phase component - }no{ - break - } - } - done. - - quantization in each iteration is done (after circular normalization - in coupling) using a by-iteration quantization granule value. - */ - - { - float **pcm=vb->pcm; - float **quantized=alloca(sizeof(*quantized)*vi->channels); - float **sofar=alloca(sizeof(*sofar)*vi->channels); - - long ***classifications=alloca(sizeof(*classifications)*info->submaps); - float ***qbundle=alloca(sizeof(*qbundle)*info->submaps); - float ***pcmbundle=alloca(sizeof(*pcmbundle)*info->submaps); - float ***sobundle=alloca(sizeof(*sobundle)*info->submaps); - int **zerobundle=alloca(sizeof(*zerobundle)*info->submaps); - int *chbundle=alloca(sizeof(*chbundle)*info->submaps); - int chcounter=0; - - /* play a little loose with this abstraction */ - int quant_passes=ci->coupling_passes; - - for(i=0;i<vi->channels;i++){ - quantized[i]=_vorbis_block_alloc(vb,n*sizeof(*sofar[i])); - sofar[i]=quantized[i]+n/2; - memset(sofar[i],0,sizeof(*sofar[i])*n/2); - } - - qbundle[0]=alloca(sizeof(*qbundle[0])*vi->channels); - pcmbundle[0]=alloca(sizeof(*pcmbundle[0])*vi->channels); - sobundle[0]=alloca(sizeof(*sobundle[0])*vi->channels); - zerobundle[0]=alloca(sizeof(*zerobundle[0])*vi->channels); - - /* initial down-quantized coupling */ - - if(info->coupling_steps==0){ - /* this assumes all or nothing coupling right now. it should pass - through any channels left uncoupled, but it doesn't do that now */ - for(i=0;i<vi->channels;i++){ - float *lpcm=pcm[i]; - float *lqua=quantized[i]; - for(j=0;j<n/2;j++) - lqua[j]=lpcm[j]; - } - }else{ - _vp_quantize_couple(look->psy_look[blocktype], - info, - pcm, - sofar, - quantized, - nonzero, - 0); - } - - for(i=0;i<vi->channels;i++) - _analysis_output("quant",seq+i,quantized[i],n/2,1,0); - - - /* classify, by submap */ - - for(i=0;i<info->submaps;i++){ - int ch_in_bundle=0; - qbundle[i]=qbundle[0]+chcounter; - sobundle[i]=sobundle[0]+chcounter; - zerobundle[i]=zerobundle[0]+chcounter; - - for(j=0;j<vi->channels;j++){ - if(info->chmuxlist[j]==i){ - if(nonzero[j]) - zerobundle[i][ch_in_bundle]=1; - else - zerobundle[i][ch_in_bundle]=0; - qbundle[i][ch_in_bundle]=quantized[j]; - pcmbundle[i][ch_in_bundle]=pcm[j]; - sobundle[i][ch_in_bundle++]=sofar[j]; - } - } - chbundle[i]=ch_in_bundle; - chcounter+=ch_in_bundle; - - classifications[i]=look->residue_func[i]-> - class(vb,look->residue_look[i],pcmbundle[i],zerobundle[i],chbundle[i]); - } - - /* actual encoding loop; we pack all the iterations to collect - management data */ - - for(i=0;i<quant_passes;){ - - /* perform residue encoding of this pass's quantized residue - vector, according residue mapping */ - - for(j=0;j<info->submaps;j++){ - look->residue_func[j]-> - forward(vb,look->residue_look[j], - qbundle[j],sobundle[j],zerobundle[j],chbundle[j], - i,classifications[j],vbi->packet_markers); - - } - i++; - - if(i<quant_passes){ - /* down-couple/down-quantize from perfect-'so-far' -> - new quantized vector */ - if(info->coupling_steps==0){ - /* this assumes all or nothing coupling right now. it should pass - through any channels left uncoupled, but it doesn't do that now */ - int k; - for(k=0;k<vi->channels;k++){ - float *lpcm=pcm[k]; - float *lsof=sofar[k]; - float *lqua=quantized[k]; - for(j=0;j<n/2;j++) - lqua[j]=lpcm[j]-lsof[j]; - } - }else{ - - _vp_quantize_couple(look->psy_look[blocktype], - info, - pcm, - sofar, - quantized, - nonzero, - i); - } - } - } - seq+=vi->channels; - } - - look->lastframe=vb->sequence; - return(0); -} - -static int mapping0_inverse(vorbis_block *vb,vorbis_look_mapping *l){ - vorbis_dsp_state *vd=vb->vd; - vorbis_info *vi=vd->vi; - codec_setup_info *ci=vi->codec_setup; - backend_lookup_state *b=vd->backend_state; - vorbis_look_mapping0 *look=(vorbis_look_mapping0 *)l; - vorbis_info_mapping0 *info=look->map; - vorbis_info_mode *mode=look->mode; - int i,j; - long n=vb->pcmend=ci->blocksizes[vb->W]; - - float *window=b->window[vb->W][vb->lW][vb->nW][mode->windowtype]; - float **pcmbundle=alloca(sizeof(*pcmbundle)*vi->channels); - int *zerobundle=alloca(sizeof(*zerobundle)*vi->channels); - - int *nonzero =alloca(sizeof(*nonzero)*vi->channels); - void **floormemo=alloca(sizeof(*floormemo)*vi->channels); - - /* time domain information decode (note that applying the - information would have to happen later; we'll probably add a - function entry to the harness for that later */ - /* NOT IMPLEMENTED */ - - /* recover the spectral envelope; store it in the PCM vector for now */ - for(i=0;i<vi->channels;i++){ - int submap=info->chmuxlist[i]; - floormemo[i]=look->floor_func[submap]-> - inverse1(vb,look->floor_look[submap]); - if(floormemo[i]) - nonzero[i]=1; - else - nonzero[i]=0; - memset(vb->pcm[i],0,sizeof(*vb->pcm[i])*n/2); - } - - /* channel coupling can 'dirty' the nonzero listing */ - for(i=0;i<info->coupling_steps;i++){ - if(nonzero[info->coupling_mag[i]] || - nonzero[info->coupling_ang[i]]){ - nonzero[info->coupling_mag[i]]=1; - nonzero[info->coupling_ang[i]]=1; - } - } - - /* recover the residue into our working vectors */ - for(i=0;i<info->submaps;i++){ - int ch_in_bundle=0; - for(j=0;j<vi->channels;j++){ - if(info->chmuxlist[j]==i){ - if(nonzero[j]) - zerobundle[ch_in_bundle]=1; - else - zerobundle[ch_in_bundle]=0; - pcmbundle[ch_in_bundle++]=vb->pcm[j]; - } - } - - look->residue_func[i]->inverse(vb,look->residue_look[i], - pcmbundle,zerobundle,ch_in_bundle); - } - - /* channel coupling */ - for(i=info->coupling_steps-1;i>=0;i--){ - float *pcmM=vb->pcm[info->coupling_mag[i]]; - float *pcmA=vb->pcm[info->coupling_ang[i]]; - - for(j=0;j<n/2;j++){ - float mag=pcmM[j]; - float ang=pcmA[j]; - - if(mag>0) - if(ang>0){ - pcmM[j]=mag; - pcmA[j]=mag-ang; - }else{ - pcmA[j]=mag; - pcmM[j]=mag+ang; - } - else - if(ang>0){ - pcmM[j]=mag; - pcmA[j]=mag+ang; - }else{ - pcmA[j]=mag; - pcmM[j]=mag-ang; - } - } - } - - /* compute and apply spectral envelope */ - for(i=0;i<vi->channels;i++){ - float *pcm=vb->pcm[i]; - int submap=info->chmuxlist[i]; - look->floor_func[submap]-> - inverse2(vb,look->floor_look[submap],floormemo[i],pcm); - } - - /* transform the PCM data; takes PCM vector, vb; modifies PCM vector */ - /* only MDCT right now.... */ - for(i=0;i<vi->channels;i++){ - float *pcm=vb->pcm[i]; - mdct_backward(b->transform[vb->W][0],pcm,pcm); - } - - /* window the data */ - for(i=0;i<vi->channels;i++){ - float *pcm=vb->pcm[i]; - if(nonzero[i]) - for(j=0;j<n;j++) - pcm[j]*=window[j]; - else - for(j=0;j<n;j++) - pcm[j]=0.f; - - } - - /* all done! */ - return(0); -} - -/* export hooks */ -vorbis_func_mapping mapping0_exportbundle={ - &mapping0_pack, - &mapping0_unpack, - &mapping0_look, - &mapping0_copy_info, - &mapping0_free_info, - &mapping0_free_look, - &mapping0_forward, - &mapping0_inverse -}; diff --git a/lib/masking.h b/lib/masking.h deleted file mode 100644 index 55f41351..00000000 --- a/lib/masking.h +++ /dev/null @@ -1,218 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: masking curve data for psychoacoustics - last mod: $Id: masking.h,v 1.21 2001/12/22 09:40:39 xiphmont Exp $ - - ********************************************************************/ - -#ifndef _V_MASKING_H_ -#define _V_MASKING_H_ - -static float ATH_Bark_dB_lspconservative[]={ - 15, 15, 15, 15, 11, 10, 8, 7, 7, 7, - 6, 2, 0, 0, -3, -5, -6, -6, -4.5f, 2.5f, - 10, 15, 15, 15, 15, 15, 15}; - -/* The below masking curves are straight from the R. Ehmer - (J. Acoustical Society of America) papers ca 1958-59. I modified - them slightly as Ehmer does not correct for the Absolute Threshold - of Hearing, and the low dB portions of the curves are thus highly - suspect. */ - -/* Let's all do the Trek thing and just call them 'Ehmer curves' ;-) - Note these are octaves, not Bark scale. */ - -#define EHMER_OFFSET 16 -#define EHMER_MAX 56 - -static float tone_125_40dB_SL[EHMER_MAX]={ - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 18, 16, 14, 12, 11, 9, 7, 5, 3, 2, 0, -2, -4, -6, -8, - -10, -12, -14, -16, -18, -20, -900, -900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_125_60dB_SL[EHMER_MAX]={ - 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 38, 36, 34, 32, 31, 29, 27, 25, 23, 22, 20, 18, 16, 14, 12, - 10, 8, 6, 4, 2, 0, -3, -5, -8,-10,-14,-17,-20,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_125_80dB_SL[EHMER_MAX]={ - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 58, 56, 54, 52, 51, 49, 47, 45, 43, 42, 40, 38, 36, 34, 32, - 30, 28, 26, 24, 22, 20, 17, 15, 12, 10, 6, 3, 0, -4, -8,-12, --900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_125_100dB_SL[EHMER_MAX]={ - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 77, 75, 74, 73, 72, 71, 70, 69, 68, 67, 65, 64, 63, 62, 60, - 58, 57, 55, 54, 52, 50, 48, 46, 44, 42, 40, 38, 36, 34, 31, 29, - 27, 24, 22, 20, 18, 15, 13, 11}; - -static float tone_250_40dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -19, -13, -7, -1, 4, 9, 15, 20, - 22, 23, 22, 19, 18, 18, 16, 13, 9, 7, 3, 1, -1, -3, -6, -8, - -10, -13, -16, -19,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_250_60dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900, -10, -5, 1, 7, 13, 19, 25, 30, 33, - 36, 39, 38, 37, 38, 39, 39, 40, 38, 36, 35, 34, 33, 31, 29, 28, - 28, 28, 25, 20, 14, 10, 5, 0, -5,-10,-15,-20,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_250_80dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900, -10, 10, 17, 24, 30, 37, 41, 48, 49, - 50, 53, 54, 53, 53, 54, 55, 57, 57, 57, 58, 59, 60, 58, 57, 58, - 59, 58, 57, 54, 52, 50, 49, 47, 46, 47, 46, 44, 43, 42, 41, 40, - 38, 32, 27, 22, 17, 11, 6, 0}; -/* no data, just interpolated from 80 */ -static float tone_250_100dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900, -10, 15, 25, 34, 40, 50, 56, 60, 70, - 70, 73, 74, 73, 73, 74, 75, 77, 77, 77, 78, 79, 80, 78, 77, 78, - 79, 78, 77, 74, 72, 70, 69, 67, 66, 67, 66, 64, 63, 62, 61, 60, - 58, 52, 47, 42, 37, 31, 26, 20}; - -static float tone_500_40dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900, -20, -14, -8, -2, 4, 10, 17, - 23, 16, 12, 9, 6, 3, 0, -3, -7, -10, -13, -16, -20,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_500_60dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -18, -12, -6, 0, 6, 13, 20, 30, - 39, 34, 31, 29, 29, 27, 24, 21, 18, 16, 13, 8, 6, 3, 1, -1, - -5, -2, -5, -8, -12, -15, -18,-900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_500_80dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900,-16,-10, 0, 10, 20, 32, 43, - 53, 52, 52, 50, 49, 50, 52, 55, 55, 54, 51, 49, 46, 44, 44, 42, - 38, 34, 32, 29, 29, 28, 25, 23, 20, 16, 10, 7, 4, 2, -1, -4, - -7, -10, -15, -20,-900,-900,-900,-900}; -static float tone_500_100dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900, -10, -7, 2, 10, 19, 27, 35, 55, 56, - 62, 61, 60, 58, 57, 57, 59, 63, 65, 66, 62, 60, 57, 57, 58, 58, - 57, 56, 56, 56, 57, 57, 56, 57, 57, 54, 47, 41, 37, 28, 21, 16, - 10, 3, -3, -8, -13, -18,-900,-900}; - -static float tone_1000_40dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900, -20, -10, 0, 9, 20, - 27, 20, 13, 14, 13, 5, -1, -6, -11, -20,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_1000_60dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-13,-3, 7, 17, 25, 37, - 42, 33, 25, 25, 23, 18, 13, 9, 4, -1, -7,-13,-18, -23, -28, -33, --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_1000_80dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900,-14, -4, 6, 16, 27, 33, 50, - 59, 57, 47, 41, 40, 43, 47, 48, 47, 42, 39, 37, 37, 36, 35, 32, - 30, 27, 21, 15, 5, -2, -10, -18, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_1000_100dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900,-10, 0, 10, 23, 33, 45, 60, - 70, 72, 55, 49, 43, 40, 44, 54, 59, 58, 49, 43, 52, 57, 57, 58, - 58, 54, 49, 47, 42, 39, 33, 28, 20, 15, 5, 0, -5,-15,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; - -static float tone_2000_40dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900, 5, 12, 20, - 24, 14, 8, 0, -5,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_2000_60dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900, -2, 8, 19, 31, - 38, 30, 15, 15, 15, 13, 8, 5, -2,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_2000_80dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900, 2, 10, 22, 38, - 52, 51, 40, 30, 28, 30, 33, 37, 37, 35, 31, 26, 20, 15, 10, 5, - 0,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_2000_100dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900, 6, 20, 40, 55, - 66, 60, 53, 40, 35, 31, 34, 42, 58, 48, 43, 45, 52, 57, 50, 42, - 45, 45, 35, 25, 20, 11, 2,-900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; - -static float tone_4000_40dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900, 2, 4, 18, - 24, 10, 5, 0, -5,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; - -static float tone_4000_60dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900, -2, 2, 4, 20, - 38, 30, 22, 15, 10, 5, 0, -10, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; - -static float tone_4000_80dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900, 0, 4, 10, 35, - 51, 49, 35, 35, 36, 36, 36, 31, 25, 20, 10, 0,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; - -static float tone_4000_100dB_SL[EHMER_MAX]={ --900, -5, 1, 3, 5, 8, 10, 12, 14, 20, 26, 28, 32, 36, 41, 51, - 61, 59, 45, 45, 48, 48, 40, 25, 40, 30, 18, 5, 0, -900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; - - -/* here the data collected by ehmer is clearly suspect as I have - several samples that provide counterexamples. the data below is - derated from Ehmers original numbers */ - -static float tone_8000_40dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900, -10, 3, 10, 18, - 26, 21, 14, 5, 0, 0, 0, 0, 20, 35, 55, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_8000_60dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900, -10, 5, 12, 30, - 43, 34, 22, 15, 10, 5, 0, 0, 20, 55, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, -900,-900,-900,-900,-900,-900,-900,-900, - -900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_8000_80dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900, -10, -1, 2, 6, 10, 13, 19, 25, 35, - 63, 50, 35, 35, 36, 36, 36, 31, 40, 55, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, -900,-900,-900,-900,-900,-900,-900,-900, - -900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_8000_100dB_SL[EHMER_MAX]={ - -18, -12, -7, -3, 0, 2, 5, 8, 10, 14, 18, 20, 20, 22, 40, 40, - 70, 50, 30, 30, 30, 30, 30, 32, 43, 55, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, -900,-900,-900,-900,-900,-900,-900,-900, - -900,-900,-900,-900,-900,-900,-900,-900}; - -/* a complete guess, but reasonably conservative and borne out by some - empirical testing */ - -static float tone_16000_40dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900, -10, 3, 10, 18, - 26, 35, 55, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, --900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_16000_60dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900, -10, 5, 12, 30, - 43, 55, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, - -900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_16000_80dB_SL[EHMER_MAX]={ --900,-900,-900,-900,-900,-900,-900, -10, -1, 2, 6, 10, 13, 19, 25, 35, - 63, 55, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, - -900,-900,-900,-900,-900,-900,-900,-900}; -static float tone_16000_100dB_SL[EHMER_MAX]={ - -18, -12, -7, -3, 0, 2, 5, 8, 10, 14, 18, 20, 20, 22, 40, 40, - 70, 55, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, --900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, - -900,-900,-900,-900,-900,-900,-900,-900}; - -#endif diff --git a/lib/mdct.c b/lib/mdct.c deleted file mode 100644 index e62f68c4..00000000 --- a/lib/mdct.c +++ /dev/null @@ -1,569 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: normalized modified discrete cosine transform - power of two length transform only [64 <= n ] - last mod: $Id: mdct.c,v 1.29 2002/01/22 08:06:07 xiphmont Exp $ - - Original algorithm adapted long ago from _The use of multirate filter - banks for coding of high quality digital audio_, by T. Sporer, - K. Brandenburg and B. Edler, collection of the European Signal - Processing Conference (EUSIPCO), Amsterdam, June 1992, Vol.1, pp - 211-214 - - The below code implements an algorithm that no longer looks much like - that presented in the paper, but the basic structure remains if you - dig deep enough to see it. - - This module DOES NOT INCLUDE code to generate/apply the window - function. Everybody has their own weird favorite including me... I - happen to like the properties of y=sin(2PI*sin^2(x)), but others may - vehemently disagree. - - ********************************************************************/ - -/* this can also be run as an integer transform by uncommenting a - define in mdct.h; the integerization is a first pass and although - it's likely stable for Vorbis, the dynamic range is constrained and - roundoff isn't done (so it's noisy). Consider it functional, but - only a starting point. There's no point on a machine with an FPU */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include "vorbis/codec.h" -#include "mdct.h" -#include "os.h" -#include "misc.h" - -/* build lookups for trig functions; also pre-figure scaling and - some window function algebra. */ - -void mdct_init(mdct_lookup *lookup,int n){ - int *bitrev=_ogg_malloc(sizeof(*bitrev)*(n/4)); - DATA_TYPE *T=_ogg_malloc(sizeof(*T)*(n+n/4)); - - int i; - int n2=n>>1; - int log2n=lookup->log2n=rint(log((float)n)/log(2.f)); - lookup->n=n; - lookup->trig=T; - lookup->bitrev=bitrev; - -/* trig lookups... */ - - for(i=0;i<n/4;i++){ - T[i*2]=FLOAT_CONV(cos((M_PI/n)*(4*i))); - T[i*2+1]=FLOAT_CONV(-sin((M_PI/n)*(4*i))); - T[n2+i*2]=FLOAT_CONV(cos((M_PI/(2*n))*(2*i+1))); - T[n2+i*2+1]=FLOAT_CONV(sin((M_PI/(2*n))*(2*i+1))); - } - for(i=0;i<n/8;i++){ - T[n+i*2]=FLOAT_CONV(cos((M_PI/n)*(4*i+2))*.5); - T[n+i*2+1]=FLOAT_CONV(-sin((M_PI/n)*(4*i+2))*.5); - } - - /* bitreverse lookup... */ - - { - int mask=(1<<(log2n-1))-1,i,j; - int msb=1<<(log2n-2); - for(i=0;i<n/8;i++){ - int acc=0; - for(j=0;msb>>j;j++) - if((msb>>j)&i)acc|=1<<j; - bitrev[i*2]=((~acc)&mask)-1; - bitrev[i*2+1]=acc; - - } - } - lookup->scale=FLOAT_CONV(4.f/n); -} - -/* 8 point butterfly (in place, 4 register) */ -STIN void mdct_butterfly_8(DATA_TYPE *x){ - REG_TYPE r0 = x[6] + x[2]; - REG_TYPE r1 = x[6] - x[2]; - REG_TYPE r2 = x[4] + x[0]; - REG_TYPE r3 = x[4] - x[0]; - - r0 = x[6] + x[2]; - r1 = x[6] - x[2]; - r2 = x[4] + x[0]; - r3 = x[4] - x[0]; - - x[6] = r0 + r2; - x[4] = r0 - r2; - - r0 = x[5] - x[1]; - r2 = x[7] - x[3]; - x[0] = r1 + r0; - x[2] = r1 - r0; - - r0 = x[5] + x[1]; - r1 = x[7] + x[3]; - x[3] = r2 + r3; - x[1] = r2 - r3; - x[7] = r1 + r0; - x[5] = r1 - r0; - -} - -/* 16 point butterfly (in place, 4 register) */ -STIN void mdct_butterfly_16(DATA_TYPE *x){ - REG_TYPE r0 = x[1] - x[9]; - REG_TYPE r1 = x[0] - x[8]; - - x[8] += x[0]; - x[9] += x[1]; - x[0] = MULT_NORM((r0 + r1) * cPI2_8); - x[1] = MULT_NORM((r0 - r1) * cPI2_8); - - r0 = x[3] - x[11]; - r1 = x[10] - x[2]; - x[10] += x[2]; - x[11] += x[3]; - x[2] = r0; - x[3] = r1; - - r0 = x[12] - x[4]; - r1 = x[13] - x[5]; - x[12] += x[4]; - x[13] += x[5]; - x[4] = MULT_NORM((r0 - r1) * cPI2_8); - x[5] = MULT_NORM((r0 + r1) * cPI2_8); - - r0 = x[14] - x[6]; - r1 = x[15] - x[7]; - x[14] += x[6]; - x[15] += x[7]; - x[6] = r0; - x[7] = r1; - - mdct_butterfly_8(x); - mdct_butterfly_8(x+8); -} - -/* 32 point butterfly (in place, 4 register) */ -STIN void mdct_butterfly_32(DATA_TYPE *x){ - REG_TYPE r0 = x[30] - x[14]; - REG_TYPE r1 = x[31] - x[15]; - - x[30] += x[14]; - x[31] += x[15]; - x[14] = r0; - x[15] = r1; - - r0 = x[28] - x[12]; - r1 = x[29] - x[13]; - x[28] += x[12]; - x[29] += x[13]; - x[12] = MULT_NORM( r0 * cPI1_8 - r1 * cPI3_8 ); - x[13] = MULT_NORM( r0 * cPI3_8 + r1 * cPI1_8 ); - - r0 = x[26] - x[10]; - r1 = x[27] - x[11]; - x[26] += x[10]; - x[27] += x[11]; - x[10] = MULT_NORM(( r0 - r1 ) * cPI2_8); - x[11] = MULT_NORM(( r0 + r1 ) * cPI2_8); - - r0 = x[24] - x[8]; - r1 = x[25] - x[9]; - x[24] += x[8]; - x[25] += x[9]; - x[8] = MULT_NORM( r0 * cPI3_8 - r1 * cPI1_8 ); - x[9] = MULT_NORM( r1 * cPI3_8 + r0 * cPI1_8 ); - - r0 = x[22] - x[6]; - r1 = x[7] - x[23]; - x[22] += x[6]; - x[23] += x[7]; - x[6] = r1; - x[7] = r0; - - r0 = x[4] - x[20]; - r1 = x[5] - x[21]; - x[20] += x[4]; - x[21] += x[5]; - x[4] = MULT_NORM( r1 * cPI1_8 + r0 * cPI3_8 ); - x[5] = MULT_NORM( r1 * cPI3_8 - r0 * cPI1_8 ); - - r0 = x[2] - x[18]; - r1 = x[3] - x[19]; - x[18] += x[2]; - x[19] += x[3]; - x[2] = MULT_NORM(( r1 + r0 ) * cPI2_8); - x[3] = MULT_NORM(( r1 - r0 ) * cPI2_8); - - r0 = x[0] - x[16]; - r1 = x[1] - x[17]; - x[16] += x[0]; - x[17] += x[1]; - x[0] = MULT_NORM( r1 * cPI3_8 + r0 * cPI1_8 ); - x[1] = MULT_NORM( r1 * cPI1_8 - r0 * cPI3_8 ); - - mdct_butterfly_16(x); - mdct_butterfly_16(x+16); - -} - -/* N point first stage butterfly (in place, 2 register) */ -STIN void mdct_butterfly_first(DATA_TYPE *T, - DATA_TYPE *x, - int points){ - - DATA_TYPE *x1 = x + points - 8; - DATA_TYPE *x2 = x + (points>>1) - 8; - REG_TYPE r0; - REG_TYPE r1; - - do{ - - r0 = x1[6] - x2[6]; - r1 = x1[7] - x2[7]; - x1[6] += x2[6]; - x1[7] += x2[7]; - x2[6] = MULT_NORM(r1 * T[1] + r0 * T[0]); - x2[7] = MULT_NORM(r1 * T[0] - r0 * T[1]); - - r0 = x1[4] - x2[4]; - r1 = x1[5] - x2[5]; - x1[4] += x2[4]; - x1[5] += x2[5]; - x2[4] = MULT_NORM(r1 * T[5] + r0 * T[4]); - x2[5] = MULT_NORM(r1 * T[4] - r0 * T[5]); - - r0 = x1[2] - x2[2]; - r1 = x1[3] - x2[3]; - x1[2] += x2[2]; - x1[3] += x2[3]; - x2[2] = MULT_NORM(r1 * T[9] + r0 * T[8]); - x2[3] = MULT_NORM(r1 * T[8] - r0 * T[9]); - - r0 = x1[0] - x2[0]; - r1 = x1[1] - x2[1]; - x1[0] += x2[0]; - x1[1] += x2[1]; - x2[0] = MULT_NORM(r1 * T[13] + r0 * T[12]); - x2[1] = MULT_NORM(r1 * T[12] - r0 * T[13]); - - x1-=8; - x2-=8; - T+=16; - - }while(x2>=x); -} - -/* N/stage point generic N stage butterfly (in place, 2 register) */ -STIN void mdct_butterfly_generic(DATA_TYPE *T, - DATA_TYPE *x, - int points, - int trigint){ - - DATA_TYPE *x1 = x + points - 8; - DATA_TYPE *x2 = x + (points>>1) - 8; - REG_TYPE r0; - REG_TYPE r1; - - do{ - - r0 = x1[6] - x2[6]; - r1 = x1[7] - x2[7]; - x1[6] += x2[6]; - x1[7] += x2[7]; - x2[6] = MULT_NORM(r1 * T[1] + r0 * T[0]); - x2[7] = MULT_NORM(r1 * T[0] - r0 * T[1]); - - T+=trigint; - - r0 = x1[4] - x2[4]; - r1 = x1[5] - x2[5]; - x1[4] += x2[4]; - x1[5] += x2[5]; - x2[4] = MULT_NORM(r1 * T[1] + r0 * T[0]); - x2[5] = MULT_NORM(r1 * T[0] - r0 * T[1]); - - T+=trigint; - - r0 = x1[2] - x2[2]; - r1 = x1[3] - x2[3]; - x1[2] += x2[2]; - x1[3] += x2[3]; - x2[2] = MULT_NORM(r1 * T[1] + r0 * T[0]); - x2[3] = MULT_NORM(r1 * T[0] - r0 * T[1]); - - T+=trigint; - - r0 = x1[0] - x2[0]; - r1 = x1[1] - x2[1]; - x1[0] += x2[0]; - x1[1] += x2[1]; - x2[0] = MULT_NORM(r1 * T[1] + r0 * T[0]); - x2[1] = MULT_NORM(r1 * T[0] - r0 * T[1]); - - T+=trigint; - x1-=8; - x2-=8; - - }while(x2>=x); -} - -STIN void mdct_butterflies(mdct_lookup *init, - DATA_TYPE *x, - int points){ - - DATA_TYPE *T=init->trig; - int stages=init->log2n-5; - int i,j; - - if(--stages>0){ - mdct_butterfly_first(T,x,points); - } - - for(i=1;--stages>0;i++){ - for(j=0;j<(1<<i);j++) - mdct_butterfly_generic(T,x+(points>>i)*j,points>>i,4<<i); - } - - for(j=0;j<points;j+=32) - mdct_butterfly_32(x+j); - -} - -void mdct_clear(mdct_lookup *l){ - if(l){ - if(l->trig)_ogg_free(l->trig); - if(l->bitrev)_ogg_free(l->bitrev); - memset(l,0,sizeof(*l)); - } -} - -STIN void mdct_bitreverse(mdct_lookup *init, - DATA_TYPE *x){ - int n = init->n; - int *bit = init->bitrev; - DATA_TYPE *w0 = x; - DATA_TYPE *w1 = x = w0+(n>>1); - DATA_TYPE *T = init->trig+n; - - do{ - DATA_TYPE *x0 = x+bit[0]; - DATA_TYPE *x1 = x+bit[1]; - - REG_TYPE r0 = x0[1] - x1[1]; - REG_TYPE r1 = x0[0] + x1[0]; - REG_TYPE r2 = MULT_NORM(r1 * T[0] + r0 * T[1]); - REG_TYPE r3 = MULT_NORM(r1 * T[1] - r0 * T[0]); - - w1 -= 4; - - r0 = HALVE(x0[1] + x1[1]); - r1 = HALVE(x0[0] - x1[0]); - - w0[0] = r0 + r2; - w1[2] = r0 - r2; - w0[1] = r1 + r3; - w1[3] = r3 - r1; - - x0 = x+bit[2]; - x1 = x+bit[3]; - - r0 = x0[1] - x1[1]; - r1 = x0[0] + x1[0]; - r2 = MULT_NORM(r1 * T[2] + r0 * T[3]); - r3 = MULT_NORM(r1 * T[3] - r0 * T[2]); - - r0 = HALVE(x0[1] + x1[1]); - r1 = HALVE(x0[0] - x1[0]); - - w0[2] = r0 + r2; - w1[0] = r0 - r2; - w0[3] = r1 + r3; - w1[1] = r3 - r1; - - T += 4; - bit += 4; - w0 += 4; - - }while(w0<w1); -} - -void mdct_backward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out){ - int n=init->n; - int n2=n>>1; - int n4=n>>2; - - /* rotate */ - - DATA_TYPE *iX = in+n2-7; - DATA_TYPE *oX = out+n2+n4; - DATA_TYPE *T = init->trig+n4; - - do{ - oX -= 4; - oX[0] = MULT_NORM(-iX[2] * T[3] - iX[0] * T[2]); - oX[1] = MULT_NORM (iX[0] * T[3] - iX[2] * T[2]); - oX[2] = MULT_NORM(-iX[6] * T[1] - iX[4] * T[0]); - oX[3] = MULT_NORM (iX[4] * T[1] - iX[6] * T[0]); - iX -= 8; - T += 4; - }while(iX>=in); - - iX = in+n2-8; - oX = out+n2+n4; - T = init->trig+n4; - - do{ - T -= 4; - oX[0] = MULT_NORM (iX[4] * T[3] + iX[6] * T[2]); - oX[1] = MULT_NORM (iX[4] * T[2] - iX[6] * T[3]); - oX[2] = MULT_NORM (iX[0] * T[1] + iX[2] * T[0]); - oX[3] = MULT_NORM (iX[0] * T[0] - iX[2] * T[1]); - iX -= 8; - oX += 4; - }while(iX>=in); - - mdct_butterflies(init,out+n2,n2); - mdct_bitreverse(init,out); - - /* roatate + window */ - - { - DATA_TYPE *oX1=out+n2+n4; - DATA_TYPE *oX2=out+n2+n4; - DATA_TYPE *iX =out; - T =init->trig+n2; - - do{ - oX1-=4; - - oX1[3] = MULT_NORM (iX[0] * T[1] - iX[1] * T[0]); - oX2[0] = -MULT_NORM (iX[0] * T[0] + iX[1] * T[1]); - - oX1[2] = MULT_NORM (iX[2] * T[3] - iX[3] * T[2]); - oX2[1] = -MULT_NORM (iX[2] * T[2] + iX[3] * T[3]); - - oX1[1] = MULT_NORM (iX[4] * T[5] - iX[5] * T[4]); - oX2[2] = -MULT_NORM (iX[4] * T[4] + iX[5] * T[5]); - - oX1[0] = MULT_NORM (iX[6] * T[7] - iX[7] * T[6]); - oX2[3] = -MULT_NORM (iX[6] * T[6] + iX[7] * T[7]); - - oX2+=4; - iX += 8; - T += 8; - }while(iX<oX1); - - iX=out+n2+n4; - oX1=out+n4; - oX2=oX1; - - do{ - oX1-=4; - iX-=4; - - oX2[0] = -(oX1[3] = iX[3]); - oX2[1] = -(oX1[2] = iX[2]); - oX2[2] = -(oX1[1] = iX[1]); - oX2[3] = -(oX1[0] = iX[0]); - - oX2+=4; - }while(oX2<iX); - - iX=out+n2+n4; - oX1=out+n2+n4; - oX2=out+n2; - do{ - oX1-=4; - oX1[0]= iX[3]; - oX1[1]= iX[2]; - oX1[2]= iX[1]; - oX1[3]= iX[0]; - iX+=4; - }while(oX1>oX2); - } -} - -void mdct_forward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out){ - int n=init->n; - int n2=n>>1; - int n4=n>>2; - int n8=n>>3; - DATA_TYPE *w=alloca(n*sizeof(*w)); /* forward needs working space */ - DATA_TYPE *w2=w+n2; - - /* rotate */ - - /* window + rotate + step 1 */ - - REG_TYPE r0; - REG_TYPE r1; - DATA_TYPE *x0=in+n2+n4; - DATA_TYPE *x1=x0+1; - DATA_TYPE *T=init->trig+n2; - - int i=0; - - for(i=0;i<n8;i+=2){ - x0 -=4; - T-=2; - r0= x0[2] + x1[0]; - r1= x0[0] + x1[2]; - w2[i]= MULT_NORM(r1*T[1] + r0*T[0]); - w2[i+1]= MULT_NORM(r1*T[0] - r0*T[1]); - x1 +=4; - } - - x1=in+1; - - for(;i<n2-n8;i+=2){ - T-=2; - x0 -=4; - r0= x0[2] - x1[0]; - r1= x0[0] - x1[2]; - w2[i]= MULT_NORM(r1*T[1] + r0*T[0]); - w2[i+1]= MULT_NORM(r1*T[0] - r0*T[1]); - x1 +=4; - } - - x0=in+n; - - for(;i<n2;i+=2){ - T-=2; - x0 -=4; - r0= -x0[2] - x1[0]; - r1= -x0[0] - x1[2]; - w2[i]= MULT_NORM(r1*T[1] + r0*T[0]); - w2[i+1]= MULT_NORM(r1*T[0] - r0*T[1]); - x1 +=4; - } - - - mdct_butterflies(init,w+n2,n2); - mdct_bitreverse(init,w); - - /* roatate + window */ - - T=init->trig+n2; - x0=out+n2; - - for(i=0;i<n4;i++){ - x0--; - out[i] =MULT_NORM((w[0]*T[0]+w[1]*T[1])*init->scale); - x0[0] =MULT_NORM((w[0]*T[1]-w[1]*T[0])*init->scale); - w+=2; - T+=2; - } -} - diff --git a/lib/mdct.h b/lib/mdct.h deleted file mode 100644 index d5caa5f1..00000000 --- a/lib/mdct.h +++ /dev/null @@ -1,79 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: modified discrete cosine transform prototypes - last mod: $Id: mdct.h,v 1.19 2001/12/20 01:00:29 segher Exp $ - - ********************************************************************/ - -#ifndef _OGG_mdct_H_ -#define _OGG_mdct_H_ - -#include "vorbis/codec.h" - -/*#define MDCT_INTEGERIZED <- be warned there could be some hurt left here*/ -#ifdef MDCT_INTEGERIZED - -#define DATA_TYPE int -#define REG_TYPE register int -#define TRIGBITS 14 -#define cPI3_8 6270 -#define cPI2_8 11585 -#define cPI1_8 15137 - -#define FLOAT_CONV(x) ((int)((x)*(1<<TRIGBITS)+.5)) -#define MULT_NORM(x) ((x)>>TRIGBITS) -#define HALVE(x) ((x)>>1) - -#else - -#define DATA_TYPE float -#define REG_TYPE float -#define cPI3_8 .38268343236508977175F -#define cPI2_8 .70710678118654752441F -#define cPI1_8 .92387953251128675613F - -#define FLOAT_CONV(x) (x) -#define MULT_NORM(x) (x) -#define HALVE(x) ((x)*.5f) - -#endif - - -typedef struct { - int n; - int log2n; - - DATA_TYPE *trig; - int *bitrev; - - DATA_TYPE scale; -} mdct_lookup; - -extern void mdct_init(mdct_lookup *lookup,int n); -extern void mdct_clear(mdct_lookup *l); -extern void mdct_forward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out); -extern void mdct_backward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out); - -#endif - - - - - - - - - - - - diff --git a/lib/misc.c b/lib/misc.c deleted file mode 100644 index ab3f0cea..00000000 --- a/lib/misc.c +++ /dev/null @@ -1,213 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ********************************************************************/ - -#define HEAD_ALIGN 32 -#include <pthread.h> -#include <stdlib.h> -#include <string.h> -#include <stdio.h> -#include "vorbis/codec.h" -#define MISC_C -#include "misc.h" -#include <sys/time.h> - -static pthread_mutex_t memlock=PTHREAD_MUTEX_INITIALIZER; -static void **pointers=NULL; -static long *insertlist=NULL; /* We can't embed this in the pointer list; - a pointer can have any value... */ - -static char **files=NULL; -static long *file_bytes=NULL; -static int filecount=0; - -static int ptop=0; -static int palloced=0; -static int pinsert=0; - -typedef struct { - char *file; - long line; - long ptr; - long bytes; -} head; - -long global_bytes=0; -long start_time=-1; - -static void *_insert(void *ptr,long bytes,char *file,long line){ - ((head *)ptr)->file=file; - ((head *)ptr)->line=line; - ((head *)ptr)->ptr=pinsert; - ((head *)ptr)->bytes=bytes-HEAD_ALIGN; - - pthread_mutex_lock(&memlock); - if(pinsert>=palloced){ - palloced+=64; - if(pointers){ - pointers=(void **)realloc(pointers,sizeof(void **)*palloced); - insertlist=(long *)realloc(insertlist,sizeof(long *)*palloced); - }else{ - pointers=(void **)malloc(sizeof(void **)*palloced); - insertlist=(long *)malloc(sizeof(long *)*palloced); - } - } - - pointers[pinsert]=ptr; - - if(pinsert==ptop) - pinsert=++ptop; - else - pinsert=insertlist[pinsert]; - -#ifdef _VDBG_GRAPHFILE - { - FILE *out; - struct timeval tv; - static struct timezone tz; - int i; - char buffer[80]; - gettimeofday(&tv,&tz); - - for(i=0;i<filecount;i++) - if(!strcmp(file,files[i]))break; - - if(i==filecount){ - filecount++; - if(!files){ - files=malloc(filecount*sizeof(*files)); - file_bytes=malloc(filecount*sizeof(*file_bytes)); - }else{ - files=realloc(files,filecount*sizeof(*files)); - file_bytes=realloc(file_bytes,filecount*sizeof(*file_bytes)); - } - files[i]=strdup(file); - file_bytes[i]=0; - } - - file_bytes[i]+=bytes-HEAD_ALIGN; - - if(start_time==-1)start_time=(tv.tv_sec*1000)+(tv.tv_usec/1000); - - snprintf(buffer,80,"%s%s",file,_VDBG_GRAPHFILE); - out=fopen(buffer,"a"); - fprintf(out,"%ld, %ld\n",-start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), - file_bytes[i]-(bytes-HEAD_ALIGN)); - fprintf(out,"%ld, %ld # FILE %s LINE %ld\n", - -start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), - file_bytes[i],file,line); - fclose(out); - - out=fopen(_VDBG_GRAPHFILE,"a"); - fprintf(out,"%ld, %ld\n",-start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), - global_bytes); - fprintf(out,"%ld, %ld\n",-start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), - global_bytes+(bytes-HEAD_ALIGN)); - fclose(out); - } -#endif - - global_bytes+=(bytes-HEAD_ALIGN); - - pthread_mutex_unlock(&memlock); - return(ptr+HEAD_ALIGN); -} - -static void _ripremove(void *ptr){ - int insert; - pthread_mutex_lock(&memlock); - -#ifdef _VDBG_GRAPHFILE - { - FILE *out=fopen(_VDBG_GRAPHFILE,"a"); - struct timeval tv; - static struct timezone tz; - char buffer[80]; - char *file =((head *)ptr)->file; - long bytes =((head *)ptr)->bytes; - int i; - - gettimeofday(&tv,&tz); - fprintf(out,"%ld, %ld\n",-start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), - global_bytes); - fprintf(out,"%ld, %ld\n",-start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), - global_bytes-((head *)ptr)->bytes); - fclose(out); - - for(i=0;i<filecount;i++) - if(!strcmp(file,files[i]))break; - - snprintf(buffer,80,"%s%s",file,_VDBG_GRAPHFILE); - out=fopen(buffer,"a"); - fprintf(out,"%ld, %ld\n",-start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), - file_bytes[i]); - fprintf(out,"%ld, %ld\n",-start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), - file_bytes[i]-bytes); - fclose(out); - - file_bytes[i]-=bytes; - - } -#endif - - global_bytes-=((head *)ptr)->bytes; - - insert=((head *)ptr)->ptr; - insertlist[insert]=pinsert; - pinsert=insert; - - if(pointers[insert]==NULL){ - fprintf(stderr,"DEBUGGING MALLOC ERROR: freeing previously freed memory\n"); - fprintf(stderr,"\t%s %ld\n",((head *)ptr)->file,((head *)ptr)->line); - } - - if(global_bytes<0){ - fprintf(stderr,"DEBUGGING MALLOC ERROR: freeing unmalloced memory\n"); - } - - pointers[insert]=NULL; - pthread_mutex_unlock(&memlock); -} - -void _VDBG_dump(void){ - int i; - pthread_mutex_lock(&memlock); - for(i=0;i<ptop;i++){ - head *ptr=pointers[i]; - if(ptr) - fprintf(stderr,"unfreed bytes from %s:%ld\n", - ptr->file,ptr->line); - } - - pthread_mutex_unlock(&memlock); -} - -extern void *_VDBG_malloc(void *ptr,long bytes,char *file,long line){ - bytes+=HEAD_ALIGN; - if(ptr){ - ptr-=HEAD_ALIGN; - _ripremove(ptr); - ptr=realloc(ptr,bytes); - }else{ - ptr=malloc(bytes); - memset(ptr,0,bytes); - } - return _insert(ptr,bytes,file,line); -} - -extern void _VDBG_free(void *ptr,char *file,long line){ - if(ptr){ - ptr-=HEAD_ALIGN; - _ripremove(ptr); - free(ptr); - } -} - diff --git a/lib/misc.h b/lib/misc.h deleted file mode 100644 index ddcfd741..00000000 --- a/lib/misc.h +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: miscellaneous prototypes - last mod: $Id: misc.h,v 1.11 2002/01/22 08:06:07 xiphmont Exp $ - - ********************************************************************/ - -#ifndef _V_RANDOM_H_ -#define _V_RANDOM_H_ -#include "vorbis/codec.h" - -extern void *_vorbis_block_alloc(vorbis_block *vb,long bytes); -extern void _vorbis_block_ripcord(vorbis_block *vb); -extern void _analysis_output(char *base,int i,float *v,int n,int bark,int dB); - -#ifdef DEBUG_MALLOC - -#define _VDBG_GRAPHFILE "malloc.m" -extern void *_VDBG_malloc(void *ptr,long bytes,char *file,long line); -extern void _VDBG_free(void *ptr,char *file,long line); - -#ifndef MISC_C -#undef _ogg_malloc -#undef _ogg_calloc -#undef _ogg_realloc -#undef _ogg_free - -#define _ogg_malloc(x) _VDBG_malloc(NULL,(x),__FILE__,__LINE__) -#define _ogg_calloc(x,y) _VDBG_malloc(NULL,(x)*(y),__FILE__,__LINE__) -#define _ogg_realloc(x,y) _VDBG_malloc((x),(y),__FILE__,__LINE__) -#define _ogg_free(x) _VDBG_free((x),__FILE__,__LINE__) -#endif -#endif - -#endif - - - - diff --git a/lib/modes/.cvsignore b/lib/modes/.cvsignore deleted file mode 100644 index 282522db..00000000 --- a/lib/modes/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/lib/modes/Makefile.am b/lib/modes/Makefile.am deleted file mode 100644 index 803fd232..00000000 --- a/lib/modes/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -## Process this file with automake to produce Makefile.in - -AUTOMAKE_OPTIONS = foreign - -EXTRA_DIST = floor_44.h psych_44.h residue_44.h diff --git a/lib/modes/floor_44.h b/lib/modes/floor_44.h deleted file mode 100644 index 655ac99d..00000000 --- a/lib/modes/floor_44.h +++ /dev/null @@ -1,184 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: key floor settings for 44.1/48kHz - last mod: $Id: floor_44.h,v 1.2 2001/12/12 09:45:55 xiphmont Exp $ - - ********************************************************************/ - -#include "vorbis/codec.h" -#include "backends.h" - -#include "books/floor/line_128x7_class1.vqh" -#include "books/floor/line_128x7_class2.vqh" - -#include "books/floor/line_128x7_0sub0.vqh" -#include "books/floor/line_128x7_1sub1.vqh" -#include "books/floor/line_128x7_1sub2.vqh" -#include "books/floor/line_128x7_1sub3.vqh" -#include "books/floor/line_128x7_2sub1.vqh" -#include "books/floor/line_128x7_2sub2.vqh" -#include "books/floor/line_128x7_2sub3.vqh" - -#include "books/floor/line_128x9_class1.vqh" -#include "books/floor/line_128x9_class2.vqh" - -#include "books/floor/line_128x9_0sub0.vqh" -#include "books/floor/line_128x9_1sub1.vqh" -#include "books/floor/line_128x9_1sub2.vqh" -#include "books/floor/line_128x9_1sub3.vqh" -#include "books/floor/line_128x9_2sub1.vqh" -#include "books/floor/line_128x9_2sub2.vqh" -#include "books/floor/line_128x9_2sub3.vqh" - -#include "books/floor/line_128x19_class1.vqh" -#include "books/floor/line_128x19_class2.vqh" - -#include "books/floor/line_128x19_0sub0.vqh" -#include "books/floor/line_128x19_1sub1.vqh" -#include "books/floor/line_128x19_1sub2.vqh" -#include "books/floor/line_128x19_1sub3.vqh" -#include "books/floor/line_128x19_2sub1.vqh" -#include "books/floor/line_128x19_2sub2.vqh" -#include "books/floor/line_128x19_2sub3.vqh" - -#include "books/floor/line_1024x31_class0.vqh" -#include "books/floor/line_1024x31_class1.vqh" -#include "books/floor/line_1024x31_class2.vqh" -#include "books/floor/line_1024x31_class3.vqh" - -#include "books/floor/line_1024x31_0sub0.vqh" -#include "books/floor/line_1024x31_0sub1.vqh" -#include "books/floor/line_1024x31_1sub0.vqh" -#include "books/floor/line_1024x31_1sub1.vqh" -#include "books/floor/line_1024x31_2sub1.vqh" -#include "books/floor/line_1024x31_2sub2.vqh" -#include "books/floor/line_1024x31_2sub3.vqh" -#include "books/floor/line_1024x31_3sub1.vqh" -#include "books/floor/line_1024x31_3sub2.vqh" -#include "books/floor/line_1024x31_3sub3.vqh" - -static static_codebook *_floor_44_128x7_books[]={ - &_huff_book_line_128x7_class1, - &_huff_book_line_128x7_class2, - - &_huff_book_line_128x7_0sub0, - &_huff_book_line_128x7_1sub1, - &_huff_book_line_128x7_1sub2, - &_huff_book_line_128x7_1sub3, - &_huff_book_line_128x7_2sub1, - &_huff_book_line_128x7_2sub2, - &_huff_book_line_128x7_2sub3, -}; -static static_codebook *_floor_44_128x9_books[]={ - &_huff_book_line_128x9_class1, - &_huff_book_line_128x9_class2, - - &_huff_book_line_128x9_0sub0, - &_huff_book_line_128x9_1sub1, - &_huff_book_line_128x9_1sub2, - &_huff_book_line_128x9_1sub3, - &_huff_book_line_128x9_2sub1, - &_huff_book_line_128x9_2sub2, - &_huff_book_line_128x9_2sub3, -}; -static static_codebook *_floor_44_128x19_books[]={ - &_huff_book_line_128x19_class1, - &_huff_book_line_128x19_class2, - - &_huff_book_line_128x19_0sub0, - &_huff_book_line_128x19_1sub1, - &_huff_book_line_128x19_1sub2, - &_huff_book_line_128x19_1sub3, - &_huff_book_line_128x19_2sub1, - &_huff_book_line_128x19_2sub2, - &_huff_book_line_128x19_2sub3, -}; - -static static_codebook **_floor_44_128_books[3]={ - _floor_44_128x7_books, - _floor_44_128x9_books, - _floor_44_128x19_books, -}; - -static static_codebook *_floor_44_1024x31_books[]={ - &_huff_book_line_1024x31_class0, - &_huff_book_line_1024x31_class1, - &_huff_book_line_1024x31_class2, - &_huff_book_line_1024x31_class3, - - &_huff_book_line_1024x31_0sub0, - &_huff_book_line_1024x31_0sub1, - &_huff_book_line_1024x31_1sub0, - &_huff_book_line_1024x31_1sub1, - &_huff_book_line_1024x31_2sub1, - &_huff_book_line_1024x31_2sub2, - &_huff_book_line_1024x31_2sub3, - &_huff_book_line_1024x31_3sub1, - &_huff_book_line_1024x31_3sub2, - &_huff_book_line_1024x31_3sub3, -}; - -static static_codebook **_floor_44_1024_books[1]={ - _floor_44_1024x31_books -}; - -static vorbis_info_floor1 _floor_44_128[3]={ - { - 3,{0,1,2},{1,3,3},{0,2,2},{-1,0,1}, - {{2},{-1,3,4,5},{-1,6,7,8}}, - 4,{0,128, 7, 2,1,4, 23,13,45}, - - 60,30,500, - 999,999,0,18., - 8,70, - -1 /* lowpass! */ - }, - - { - 3,{0,1,2},{1,4,4},{0,2,2},{-1,0,1}, - {{2},{-1,3,4,5},{-1,6,7,8}}, - 4,{0,128, 13, 4,2,7,1, 44,30,62,20}, - - 60,30,500, - 999,999,0,18., - 8,70, - -1 /* lowpass! */ - }, - - - { - 6,{0,1,1,1,2,2},{4,3,3},{0,2,2},{-1,0,1}, - {{2},{-1,3,4,5},{-1,6,7,8}}, - 2,{0,128, 6,17,30,58, 2,1,4, 11,8,14, 23,20,26, 41,35,48, 84,69,103}, - - 60,30,500, - 999,999,1,18., - 8,70, - -1 /* lowpass */ - } -}; - -static vorbis_info_floor1 _floor_44_1024[1]={ - { - 10,{0,1,2,2,2,2,2, 3,3,3},{3,4,3,3},{1,1,2,2},{0,1,2,3}, - {{4,5},{6,7},{-1,8,9,10},{-1,11,12,13}}, - 2,{0,1024, 88,31,243, 14,54,143,460, 6,3,10, 22,18,26, 41,36,47, - 69,61,78, 112,99,126, 185,162,211, 329,282,387, 672,553,825}, - - 60,30,400, - 20,8,1,18., - 20,600, - -1 /* lowpass */ - } -}; - diff --git a/lib/modes/psych_44.h b/lib/modes/psych_44.h deleted file mode 100644 index 7001416a..00000000 --- a/lib/modes/psych_44.h +++ /dev/null @@ -1,647 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: key psychoacoustic settings for 44.1/48kHz - last mod: $Id: psych_44.h,v 1.7 2001/12/22 09:40:40 xiphmont Exp $ - - ********************************************************************/ - - -/* preecho trigger settings *****************************************/ - -static vorbis_info_psy_global _psy_global_44[3]={ - - {8, /* lines per eighth octave */ - /*{990.f,990.f,990.f,990.f}, {-990.f,-990.f,-990.f,-990.f}, -90.f, - {0.f,0.f,0.f,0.f}, {-0.f,-0.f,-0.f,-0.f}, -90.f,*/ - {30.f,30.f,30.f,34.f}, {-990.f,-990.f,-990.f,-990.f}, -90.f, - -6.f, 0, - }, - {8, /* lines per eighth octave */ - /*{990.f,990.f,990.f,990.f}, {-990.f,-990.f,-990.f,-990.f}, -90.f,*/ - {26.f,26.f,26.f,30.f}, {-90.f,-90.f,-90.f,-90.f}, -90.f, - -6.f, 0, - }, - {8, /* lines per eighth octave */ - {26.f,26.f,26.f,30.f}, {-26.f,-26.f,-26.f,-30.f}, -90.f, - -6.f, 0, - } -}; - -/* noise compander lookups * low, mid, high quality ****************/ - -static float _psy_compand_44_short[3][NOISE_COMPAND_LEVELS]={ - /* sub-mode Z */ - { - 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, /* 7dB */ - 8.f, 9.f,10.f,11.f,12.f,13.f,14.f, 15.f, /* 15dB */ - 16.f,17.f,18.f,19.f,20.f,21.f,22.f, 23.f, /* 23dB */ - 24.f,25.f,26.f,27.f,28.f,29.f,30.f, 31.f, /* 31dB */ - 32.f,33.f,34.f,35.f,36.f,37.f,38.f, 39.f, /* 39dB */ - }, - /* mode_Z nominal */ - { - 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 6.f, /* 7dB */ - 7.f, 7.f, 7.f, 7.f, 6.f, 6.f, 6.f, 7.f, /* 15dB */ - 7.f, 8.f, 9.f,10.f,11.f,12.f,13.f, 14.f, /* 23dB */ - 15.f,16.f,17.f,17.f,17.f,18.f,18.f, 19.f, /* 31dB */ - 19.f,19.f,20.f,21.f,22.f,23.f,24.f, 25.f, /* 39dB */ - }, - /* mode A */ - { - 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 5.f, 5.f, /* 7dB */ - 6.f, 6.f, 6.f, 5.f, 4.f, 4.f, 4.f, 4.f, /* 15dB */ - 4.f, 4.f, 5.f, 5.f, 5.f, 6.f, 6.f, 6.f, /* 23dB */ - 7.f, 7.f, 7.f, 8.f, 8.f, 8.f, 9.f, 10.f, /* 31dB */ - 11.f,12.f,13.f,14.f,15.f,16.f,17.f, 18.f, /* 39dB */ - } -}; - -static float _psy_compand_44[3][NOISE_COMPAND_LEVELS]={ - /* sub-mode Z */ - { - 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, /* 7dB */ - 8.f, 9.f,10.f,11.f,12.f,13.f,14.f, 15.f, /* 15dB */ - 16.f,17.f,18.f,19.f,20.f,21.f,22.f, 23.f, /* 23dB */ - 24.f,25.f,26.f,27.f,28.f,29.f,30.f, 31.f, /* 31dB */ - 32.f,33.f,34.f,35.f,36.f,37.f,38.f, 39.f, /* 39dB */ - }, - /* mode_Z nominal */ - { - 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, /* 7dB */ - 8.f, 9.f,10.f,11.f,12.f,12.f,13.f, 13.f, /* 15dB */ - 13.f,14.f,14.f,14.f,15.f,15.f,15.f, 15.f, /* 23dB */ - 16.f,16.f,17.f,17.f,17.f,18.f,18.f, 19.f, /* 31dB */ - 19.f,19.f,20.f,21.f,22.f,23.f,24.f, 25.f, /* 39dB */ - }, - /* mode A */ - { - 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, /* 7dB */ - 8.f, 8.f, 7.f, 6.f, 5.f, 4.f, 4.f, 4.f, /* 15dB */ - 4.f, 4.f, 5.f, 5.f, 5.f, 6.f, 6.f, 6.f, /* 23dB */ - 7.f, 7.f, 7.f, 8.f, 8.f, 8.f, 9.f, 10.f, /* 31dB */ - 11.f,12.f,13.f,14.f,15.f,16.f,17.f, 18.f, /* 39dB */ - } -}; - -/* tonal masking curve level adjustments *************************/ -static vp_adjblock _vp_tonemask_adj_longblock[6]={ - /* adjust for mode zero */ - {{ - { 10, 10, 5, }, /*63*/ - { 10, 10, 5, }, - { 10, 10, 5, }, /* 125 */ - { 10, 10, 5, }, - { 10, 10, 5, }, /* 250 */ - { 10, 10, 5, }, - { 10, 10, 5, }, /* 500 */ - { 10, 10, 5, }, - { 10, 10, 5, }, /* 1000 */ - { 10, 10, 5, }, - - { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /* 2000 */ - { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, - { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /* 4000 */ - { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, - { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /* 8000 */ - { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, - { 16, 16, 14, 12, 12, 15, 15, 15, 15, 15, 10}, /* 16000 */ - }}, - - /* adjust for mode two */ - {{ - { 10, 10, 5, }, /*63*/ - { 10, 10, 5, }, - { 10, 10, 5, }, /* 125 */ - { 10, 10, 5, }, - { 10, 10, 5, }, /* 250 */ - { 10, 10, 5, }, - { 10, 10, 5, }, /* 500 */ - { 10, 10, 5, }, - { 10, 10, 5, }, /* 1000 */ - { 10, 10, 5, }, - - { 0, }, /* 2000 */ - { 0, }, - { 10, 5, 5, }, /* 4000 */ - { 10, 10, 5, }, - { 10, 10, 7, 5, }, /* 8000 */ - { 10, 10, 7, 7, 5, 5, 10, 10, 10, 5, }, - { 16, 16, 14, 8, 8, 8, 10, 10, 10, 5, }, /* 16000 */ - }}, - - /* adjust for mode four */ - {{ - { 10, 5, 5, }, /*63*/ - { 10, 5, 5, }, - { 10, 5, 5, }, /* 125 */ - { 10, 5, 5, }, - { 10, 5, 5, }, /* 250 */ - { 10, 5, 5, }, - { 10, 5, 5, }, /* 500 */ - { 10, 5, 5, }, - { 10, 5, 5, }, /* 1000 */ - { 10, 5, 5, }, - - { 0, }, /* 2000 */ - { 0, }, - { 0, }, /* 4000 */ - { 10, 5, 5, }, - { 10, 10, 7, 5, }, /* 8000 */ - { 10, 10, 7, 5, 5, 5, 10, 10, 10, 5, }, - { 16, 16, 14, 8, 8, 8, 10, 10, 10, 5, }, /* 16000 */ - }}, - - /* adjust for mode six */ - {{ - { 10, 5, 5, }, /*63*/ - { 10, 5, 5, }, - { 10, 5, 5, }, /* 125 */ - { 10, 5, 5, }, - { 10, 5, 5, }, /* 250 */ - { 10, 5, 5, }, - { 10, 5, 5, }, /* 500 */ - { 10, 5, 5, }, - { 10, 5, 5, }, /* 1000 */ - { 10, 5, 5, }, - - { 0, }, /* 2000 */ - { 0, }, - { 0, }, /* 4000 */ - { 10, 5, 5, }, - { 10, 10, 7, 5, }, /* 8000 */ - { 10, 10, 7, 5, 5, 5, 5, 5, 5, }, - { 12, 10, 10, 5, 5, 5, 5, 5, 5, }, /* 16000 */ - }}, - - /* adjust for mode eight */ - {{ - { 0, }, /*63*/ - { 0, }, - { 0, }, /* 125 */ - { 0, }, - { 0, }, /* 250 */ - { 0, }, - { 0, }, /* 500 */ - { 0, }, - { 0, }, /* 1000 */ - { 0, }, - - { 0, }, /* 2000 */ - { 0, }, - { 0, }, /* 4000 */ - { 0, }, - { 0, }, /* 8000 */ - { 0, }, - { 5, 5, 5, 5, 5, 5, 5, }, /* 16000 */ - }}, - - /* adjust for mode ten */ - {{ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*63*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*125*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*250*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*500*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*1000*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*2000*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*4000*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*8000*/ - { 0, 0, 0, -5,-10,-10,-10,-15,-15,-15,-15}, - { 0, 0, 0, 0, 0, -5, -5,-10,-15,-15,-15}, /*16000*/ - }}, -}; - -static vp_adjblock _vp_tonemask_adj_otherblock[6]={ - /* adjust for mode zero */ - {{ - { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*63*/ - { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, - { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*125*/ - { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, - { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*250*/ - { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, - { 5, 5, 5, 0, -5, -5, -5, -5, -5, -5, -5}, /*500*/ - { 5, 5, 5, 0, -5, -5, -5, -5, -5, -5, -5}, - - { 5, 5, 5, }, /*1000*/ - { 5, 5, 5, }, - - { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /*2000*/ - { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, - { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /*4000*/ - { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, - { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /*8000*/ - { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, - { 16, 16, 14, 12, 12, 15, 15, 15, 15, 15, 10}, /*16000*/ - }}, - - /* adjust for mode two */ - {{ - { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*63*/ - { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, - { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*125*/ - { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, - { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*250*/ - { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, - { 5, 5, 5, 0, -5, -5, -5, -5, -5, -5, -5}, /*500*/ - { 5, 5, 5, 0, -5, -5, -5, -5, -5, -5, -5}, - - { 10, 10, 5, }, /* 1000 */ - { 10, 10, 5, }, - - { 0, }, /* 2000 */ - { 0, }, - { 0, }, /* 4000 */ - { 10, 5, 5, }, - { 10, 10, 7, 5, }, /* 8000 */ - { 10, 10, 7, 7, 5, 5, 10, 10, 10, 5, }, - { 16, 16, 14, 8, 8, 8, 10, 10, 10, 5, }, /* 16000 */ - }}, - - /* adjust for mode four */ - {{ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*63*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*125*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*250*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*500*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - - { 5, 5, 5, }, /* 1000 */ - { 5, 5, 5, }, - - { 0, }, /* 2000 */ - { 0, }, - { 0, }, /* 4000 */ - { 10, 5, 5, }, - { 10, 10, 7, 5, }, /* 8000 */ - { 10, 10, 7, 5, 5, 5, 10, 10, 10, 5, }, - { 16, 16, 14, 8, 8, 8, 10, 10, 10, 5, }, /* 16000 */ - }}, - - /* adjust for mode six */ - {{ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*63*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*125*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*250*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*500*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - - { 5, 5, 5, }, /* 1000 */ - { 5, 5, 5, }, - - { 0, }, /* 2000 */ - { 0, }, - { 0, }, /* 4000 */ - { 10, 5, 5, }, - { 10, 10, 7, 5, }, /* 8000 */ - { 10, 10, 7, 5, 5, 5, 5, 5, 5, }, - { 12, 10, 10, 5, 5, 5, 5, 5, 5, }, /* 16000 */ - }}, - - /* adjust for mode eight */ - {{ - {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*63*/ - {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, - {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*125*/ - {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, - {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*250*/ - {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, - {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*500*/ - {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, - - { 0,-10,-10,-15,-15,-15,-15,-15,-15,-15,-15}, - { 0,-10,-10,-15,-15,-15,-15,-15,-15,-15,-15}, - - { 0, }, /* 2000 */ - { 0, }, - { 0, }, /* 4000 */ - { 0, }, - { 0, }, /* 8000 */ - { 0, }, - { 5, 5, 5, 5, 5, 5, 5, }, /* 16000 */ - }}, - - /* adjust for mode ten */ - {{ - { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, /*63*/ - { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, - { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, /*125*/ - { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, - { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, /*250*/ - { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, - { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, /*500*/ - { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, - { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, /*1000*/ - { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*2000*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*4000*/ - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, - { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*8000*/ - { 0, 0, 0, -5,-10,-10,-10,-15,-15,-15,-15}, - { 0, 0, 0, 0, 0, -5, -5,-10,-15,-15,-15}, /*16000*/ - }}, -}; - -static vp_adjblock _vp_peakguard[6]={ - /* zero */ - {{ - {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},/*63*/ - {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24}, - {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},/*125*/ - {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24}, - {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},/*250*/ - {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24}, - {-10,-10,-10,-10,-16,-16,-18,-20,-22,-24,-24},/*500*/ - {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24}, - {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},/*1000*/ - {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24}, - {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},/*2000*/ - {-10,-10,-10,-12,-16,-16,-16,-20,-22,-24,-24}, - {-10,-10,-10,-12,-16,-16,-16,-20,-22,-24,-24},/*4000*/ - {-10,-10,-10,-12,-12,-14,-16,-18,-22,-24,-24}, - {-10,-10,-10,-10,-10,-14,-16,-18,-22,-24,-24},/*8000*/ - {-10,-10,-10,-10,-10,-14,-16,-18,-22,-24,-24}, - {-10,-10,-10,-10,-10,-12,-16,-18,-22,-24,-24},/*16000*/ - }}, - /* two */ - {{ - {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*63*/ - {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30}, - {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*125*/ - {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30}, - {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*250*/ - {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30}, - {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*500*/ - {-10,-10,-10,-10,-14,-14,-14,-20,-26,-30,-30}, - {-10,-10,-10,-10,-14,-14,-14,-20,-22,-30,-30},/*1000*/ - {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30}, - {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},/*2000*/ - {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30}, - {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},/*4000*/ - {-10,-10,-10,-10,-10,-11,-12,-13,-22,-30,-30}, - {-10,-10,-10,-10,-10,-11,-12,-13,-22,-30,-30},/*8000*/ - {-10,-10,-10,-10,-10,-10,-10,-11,-22,-30,-30}, - {-10,-10,-10,-10,-10,-10,-10,-10,-20,-30,-30},/*16000*/ - }}, - /* four */ - {{ - {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*63*/ - {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40}, - {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*125*/ - {-14,-20,-20,-20,-20,-20,-20,-30,-32,-32,-40}, - {-14,-20,-20,-20,-20,-20,-20,-30,-32,-32,-40},/*250*/ - {-14,-20,-20,-20,-20,-20,-20,-24,-32,-32,-40}, - {-14,-20,-20,-20,-20,-20,-20,-24,-32,-32,-40},/*500*/ - {-10,-10,-10,-10,-14,-16,-20,-24,-26,-32,-40}, - {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},/*1000*/ - {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40}, - {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},/*2000*/ - {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40}, - {-10,-10,-10,-10,-14,-14,-16,-20,-22,-32,-40},/*4000*/ - {-10,-10,-10,-10,-10,-11,-12,-13,-22,-32,-40}, - {-10,-10,-10,-10,-10,-11,-12,-13,-22,-32,-40},/*8000*/ - {-10,-10,-10,-10,-10,-10,-10,-11,-22,-32,-40}, - {-10,-10,-10,-10,-10,-10,-10,-10,-20,-32,-40},/*16000*/ - }}, - /* six */ - {{ - {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*63*/ - {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40}, - {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*125*/ - {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40}, - {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*250*/ - {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40}, - {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*500*/ - {-14,-14,-14,-16,-20,-22,-24,-24,-28,-32,-40}, - {-14,-14,-14,-16,-20,-22,-24,-24,-28,-32,-40},/*1000*/ - {-14,-14,-14,-16,-20,-22,-24,-24,-28,-32,-40}, - {-14,-14,-16,-20,-24,-26,-26,-28,-30,-32,-40},/*2000*/ - {-14,-14,-16,-20,-24,-26,-26,-28,-30,-32,-40}, - {-14,-14,-16,-20,-24,-26,-26,-28,-30,-32,-40},/*4000*/ - {-14,-14,-14,-20,-22,-22,-24,-24,-26,-32,-40}, - {-14,-14,-14,-18,-20,-20,-24,-24,-24,-32,-40},/*8000*/ - {-14,-14,-14,-18,-20,-20,-24,-24,-24,-32,-40}, - {-14,-14,-14,-18,-20,-20,-22,-24,-24,-32,-40},/*16000*/ - }}, - /* eight */ - {{ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*63*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*88*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*125*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*170*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*250*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*350*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*500*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*700*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*1000*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*1400*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*2000*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*2800*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*4000*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*5600*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*8000*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*11500*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*16600*/ - }}, - /* ten */ - {{ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*63*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*88*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*125*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*170*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*250*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*350*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*500*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*700*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*1000*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*1400*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*2000*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*2800*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*4000*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*5600*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*8000*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*11500*/ - {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*16600*/ - }} -}; - -static int _psy_noisebias_long[11][17]={ - /*63 125 250 500 1k 2k 4k 8k 16k*/ - {-20,-20,-18,-18,-18,-16,-14, -8, -6, -2, 0, 2, 3, 3, 4, 4, 10}, - {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2, -2, -2, 1, 1, 2, 2, 4}, - {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2, -3, -3, -1, -1, 0, 1, 2}, - {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2, -3, -3, -1, -1, 0, 1, 2}, - {-20,-20,-20,-20,-20,-20,-20,-10, -6, -3, -4, -4, -2, -1, 0, 0, 2}, - - {-20,-20,-20,-20,-20,-20,-20,-18,-10, -4, -6, -6, -3, -2, -2, -2, 0}, - {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -8, -8, -7, -7, -6, -6, -4}, - {-24,-24,-24,-24,-24,-24,-24,-18,-14,-14,-16,-16,-14,-12,-10,-10, -8}, - - {-24,-24,-24,-24,-24,-24,-24,-20,-20,-20,-20,-20,-16,-16,-14,-14,-10}, - {-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-24,-24,-24,-24}, - {-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-46}, -}; - -static int _psy_noisebias_impulse[11][17]={ - /*63 125 250 500 1k 2k 4k 8k 16k*/ - {-20,-20,-20,-20,-20,-18,-14,-10,-10, -2, 2, 2, 2, 2, 2, 3, 6}, - {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -2, -2, -2, -2, 2}, - {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, 0}, - {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, -2}, - {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}, - - {-30,-30,-30,-30,-30,-30,-24,-20,-10,-12,-14,-14,-10, -9, -8, -6, -4}, - {-34,-34,-34,-34,-30,-30,-24,-20,-14,-14,-16,-16,-14,-12,-10,-10, -8}, - {-34,-34,-34,-34,-30,-30,-30,-24,-20,-20,-20,-20,-20,-18,-16,-16,-14}, - - {-34,-34,-34,-34,-30,-30,-30,-30,-30,-26,-26,-26,-26,-22,-20,-20,-16}, - {-40,-40,-40,-40,-40,-40,-40,-40,-40,-36,-36,-36,-36,-36,-36,-30,-30}, - {-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50}, -}; - -static int _psy_noisebias_other[11][17]={ - /*63 125 250 500 1k 2k 4k 8k 16k*/ - {-20,-20,-20,-20,-20,-18,-14,-10, -6, -2, 2, 2, 3, 3, 4, 4, 10}, - {-26,-26,-26,-26,-26,-22,-20,-14,-10, -2, -2, -2, 1, 1, 2, 2, 4}, - {-30,-30,-30,-30,-26,-22,-20,-14,-10, -2, -3, -3, -1, -1, 0, 1, 2}, - {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -1, -1, 0, 1, 2}, - {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -2, -1, 0, 0, 2}, - - {-30,-30,-30,-30,-30,-30,-24,-20,-10, -4, -6, -6, -3, -2, -2, -2, 0}, - {-34,-34,-34,-34,-30,-30,-24,-20,-14, -8, -8, -8, -7, -7, -6, -6, -4}, - {-34,-34,-34,-34,-30,-30,-24,-20,-14,-14,-16,-16,-14,-12,-10,-10, -8}, - - {-34,-34,-34,-34,-30,-30,-30,-20,-20,-20,-20,-20,-16,-16,-14,-14,-10}, - {-40,-40,-40,-40,-40,-40,-40,-30,-30,-30,-30,-30,-30,-24,-24,-24,-24}, - {-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-46}, -}; - -static int _psy_noiseguards_short[33]={ - 2,2,-1, - 4,4,-1, - 4,4,15, - 4,4,15, - 4,4,15, - 4,4,15, - 4,4,15, - 4,4,15, - 4,4,15, - 4,4,15, - 4,4,15, -}; -static int _psy_noiseguards_long[33]={ - 10,10,100, - 10,10,100, - 10,10,100, - 10,10,100, - 10,10,100, - 10,10,100, - 10,10,100, - 10,10,100, - 10,10,100, - 10,10,100, - 10,10,100, -}; - -static double _psy_tone_masteratt[11]={ - 3.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0., -}; - -static double _psy_tone_masterguard[11]={ - -18.,-24.,-24.,-24.,-26.,-40.,-40.,-40.,-45.,-45.,-45., -}; - -static double _psy_tone_suppress[11]={ - -10.,-20.,-20.,-20.,-30.,-30.,-40.,-40.,-45.,-45.,-45., -}; - -static double _psy_tone_0dB[11]={ - 95.,95.,95.,95.,95.,105.,105.,105.,105.,105.,105., -}; - -static double _psy_noise_suppress[11]={ - -0.,-24.,-24.,-24.,-24.,-30.,-40.,-40.,-45.,-45.,-45., -}; - -static int _psy_ehmer_bandlimit[11]={ - 0,0,0,0,4,4,30,30,30,30,30, -}; - -static vorbis_info_psy _psy_info_template={ - {-1},-110.,-140., - /* tonemask att,guard,suppr,curves peakattp,curvelimitp,peaksettings*/ - 0.f, -40.f,-40.f, {{{0.}}}, 1, 0, {{{0.}}}, - - /*noisemaskp,supp, low/high window, low/hi guard, minimum */ - 1, -0.f, .5f, .5f, 0,0,0, - {-1},{-1},105.f,{{-1,-1,{{-1,-1,-1,-1}}}} -}; - -/* ath ****************/ - -static double _psy_ath_floater[11]={ - -100.,-100.,-100.,-100.,-100.,-100.,-105.,-105.,-105.,-110.,-120., -}; - -static double _psy_ath_abs[11]={ - -110.,-110.,-120.,-140.,-140.,-140.,-140.,-140.,-140.,-140.,-150., -}; - -static float ATH_Bark_dB[][27]={ - { - 0.f, 15.f, 15.f, 15.f, 11.f, 10.f, 8.f, 7.f, 7.f, 7.f, - 6.f, 2.f, 0.f, 0.f, -2.f, -5.f, -6.f, -6.f, -4.f, 4.f, - 14.f, 20.f, 19.f, 17.f, 30.f, 60.f, 70.f, - }, - { - 0.f, 15.f, 15.f, 15.f, 11.f, 10.f, 8.f, 7.f, 7.f, 7.f, - 6.f, 2.f, 0.f, 0.f, -2.f, -5.f, -6.f, -6.f, -4.f, 0.f, - 2.f, 6.f, 5.f, 5.f, 15.f, 30.f, 50.f, - }, - { - 0.f, 15.f, 15.f, 15.f, 11.f, 10.f, 8.f, 7.f, 7.f, 7.f, - 6.f, 2.f, 0.f, 0.f, -3.f, -5.f, -6.f, -6.f, -4.5f, -4.f, - 2.f, 6.f, 5.f, 5.f, 15.f, 20.f, 40.f, - } -}; - -/* stereo ****************/ -static int _psy_stereo_point_dB_44[11]={3, 3, 2, 2, 1, 0, 0, 0, 0, 0, 0}; -static double _psy_stereo_point_kHz_44[2][11]={ - {4., 6., 6., 6., 10., 6., 6., 4., 4., 4., 4.}, - {6., 6., 6., 10., 10., 6., 6., 4., 4., 4., 4.} -}; - -/* lowpass **************/ -static double _psy_lowpass_44[11]={ - 15.1,15.8,16.5,17.9,20.5,48.,999.,999.,999.,999.,999. -}; - -/* management noise offset */ - -static double _bm_max_noise_offset[11]={ - 1.,2.,3.,3.,4.,4.,4.,4.,4.,4.,4. -}; diff --git a/lib/modes/residue_44.h b/lib/modes/residue_44.h deleted file mode 100644 index b99c91bc..00000000 --- a/lib/modes/residue_44.h +++ /dev/null @@ -1,1406 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: toplevel residue templates for 32/44.1/48kHz - last mod: $Id: residue_44.h,v 1.11 2001/12/23 11:53:54 xiphmont Exp $ - - ********************************************************************/ - -#include "vorbis/codec.h" -#include "backends.h" - -static bitrate_manager_info _bm_44_default={ - /* progressive coding and bitrate controls */ - 4.,.0, - 2., 0, 0, - 0, 0, - - 4.0,2.3, -9999, .02, - - 3.2,5.0, - 0.,0. -}; - -/***** residue backends *********************************************/ - -/* the books used depend on stereo-or-not, but the residue setup below - can apply to coupled or not. These templates are for a first pass; - a last pass is mechanically added in vorbisenc for residue backfill - at 1/3 and 1/9, as well as an optional middle pass for stereo - backfill */ - -/* 0 1 2 4 26 1 2 4 26 + - 0 0 0 0 - - 0 1 2 3 4 5 6 7 8 9 - 1 . . . - 2 . . . - 4 . . . . . . . - - 0 4 4 4 3 4 4 4 3 7 */ -static vorbis_info_residue0 _residue_44_low={ - 0,-1, -1, 8,-1, - {0}, - {-1}, - {9999, 9999, 9999, 9999, 9999, 9999, 9999}, - { .5, 1.5, 2.5, 4.5, 26.5, 1.5, 4.5}, - {0}, - { 99, -1, -1, -1, -1, 99, 99} -}; -/* 26 doesn't cascade well; use 28 instead */ -static vorbis_info_residue0 _residue_44_low_un={ - 0,-1, -1, 8,-1, - {0}, - {-1}, - {9999, 9999, 9999, 9999, 9999, 9999, 9999}, - { .5, 1.5, 2.5, 4.5, 28.5, 1.5, 4.5}, - {0}, - { 99, -1, -1, -1, -1, 99, 99} -}; - -/* 0 1 2 4 1 2 4 16 42 + - 0 0 0 - - 0 1 2 3 4 5 6 7 8 9 - 1 . . . - 2 . . . - 4 . . . . . . . - - 0 4 4 4 4 4 4 3 3 7 */ -static vorbis_info_residue0 _residue_44_mid={ - 0,-1, -1, 10,-1, - /* 0 1 2 3 4 5 6 7 8 9 */ - {0}, - {-1}, - {9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999}, - { .5, 1.5, 1.5, 2.5, 2.5, 4.5, 4.5, 16.5, 42.5}, - {0}, - { 99, -1, 99, -1, 99, -1, 99, 99, 99} -}; - - -/* 0 8 42 1 2 4 8 16 56 + - 0 0 0 - - 0 1 2 3 4 5 6 7 8 9 - 1 . . . . - 2 . . . . - 4 . . . . . . - - 0 4 3 4 4 4 4 3 3 7 */ -static vorbis_info_residue0 _residue_44_high={ - 0,-1, -1, 10,-1, - /* 0 1 2 3 4 5 6 7 8 9 */ - {0}, - {-1}, - {9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999}, - { .5, 8.5, 42.5, 1.5, 2.5, 4.5, 8.5, 16.5, 56.5}, - {0}, - { 99, -1, -1, 99, 99, 99, 99, 99, 99} -}; -/* 56 doesn't cascade well; use 59 */ -static vorbis_info_residue0 _residue_44_high_un={ - 0,-1, -1, 10,-1, - /* 0 1 2 3 4 5 6 7 8 9 */ - {0}, - {-1}, - {9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999}, - { .5, 8.5, 42.5, 1.5, 2.5, 4.5, 8.5, 16.5, 59.5}, - {0}, - { 99, -1, -1, 99, 99, 99, 99, 99, 99} -}; - -#include "books/coupled/_44c0_short.vqh" -#include "books/coupled/_44c0_long.vqh" - -#include "books/coupled/_44c0_s0_p1_0.vqh" -#include "books/coupled/_44c0_s0_p2_0.vqh" -#include "books/coupled/_44c0_s0_p3_0.vqh" -#include "books/coupled/_44c0_s0_p4_0.vqh" -#include "books/coupled/_44c0_s0_p4_1.vqh" -#include "books/coupled/_44c0_s0_p5_0.vqh" -#include "books/coupled/_44c0_s1_p5_0.vqh" -#include "books/coupled/_44c0_s0_p6_0.vqh" -#include "books/coupled/_44c0_s1_p6_0.vqh" -#include "books/coupled/_44c0_s2_p6_0.vqh" -#include "books/coupled/_44c0_s0_p7_0.vqh" -#include "books/coupled/_44c0_s0_p7_1.vqh" -#include "books/coupled/_44c0_s0_p7_2.vqh" -#include "books/coupled/_44c0_s1_p7_0.vqh" -#include "books/coupled/_44c0_s1_p7_1.vqh" -#include "books/coupled/_44c0_s1_p7_2.vqh" -#include "books/coupled/_44c0_s2_p7_0.vqh" -#include "books/coupled/_44c0_s2_p7_1.vqh" -#include "books/coupled/_44c0_s2_p7_2.vqh" -#include "books/coupled/_44c0_s3_p7_0.vqh" -#include "books/coupled/_44c0_s3_p7_1.vqh" -#include "books/coupled/_44c0_s3_p7_2.vqh" - -#include "books/coupled/_44c0_s1_p5_s0.vqh" -#include "books/coupled/_44c0_s1_p6_s0.vqh" -#include "books/coupled/_44c0_s1_p7_s0.vqh" -#include "books/coupled/_44c0_s2_p6_s0.vqh" -#include "books/coupled/_44c0_s2_p7_s0.vqh" -#include "books/coupled/_44c0_s3_p7_s0.vqh" - -#include "books/coupled/_44c0_s0_p0_r0.vqh" -#include "books/coupled/_44c0_s0_pN_r0.vqh" -#include "books/coupled/_44c0_s1_pS_r0.vqh" -#include "books/coupled/_44c0_s0_p0_r1.vqh" -#include "books/coupled/_44c0_s0_pN_r1.vqh" -#include "books/coupled/_44c0_s1_pS_r1.vqh" - -#include "books/coupled/_44c1_short.vqh" -#include "books/coupled/_44c1_long.vqh" - -#include "books/coupled/_44c1_s0_p1_0.vqh" -#include "books/coupled/_44c1_s0_p2_0.vqh" -#include "books/coupled/_44c1_s0_p3_0.vqh" -#include "books/coupled/_44c1_s0_p4_0.vqh" -#include "books/coupled/_44c1_s0_p4_1.vqh" -#include "books/coupled/_44c1_s0_p5_0.vqh" -#include "books/coupled/_44c1_s1_p5_0.vqh" -#include "books/coupled/_44c1_s0_p6_0.vqh" -#include "books/coupled/_44c1_s1_p6_0.vqh" -#include "books/coupled/_44c1_s2_p6_0.vqh" -#include "books/coupled/_44c1_s0_p7_0.vqh" -#include "books/coupled/_44c1_s0_p7_1.vqh" -#include "books/coupled/_44c1_s0_p7_2.vqh" -#include "books/coupled/_44c1_s1_p7_0.vqh" -#include "books/coupled/_44c1_s1_p7_1.vqh" -#include "books/coupled/_44c1_s1_p7_2.vqh" -#include "books/coupled/_44c1_s2_p7_0.vqh" -#include "books/coupled/_44c1_s2_p7_1.vqh" -#include "books/coupled/_44c1_s2_p7_2.vqh" -#include "books/coupled/_44c1_s3_p7_0.vqh" -#include "books/coupled/_44c1_s3_p7_1.vqh" -#include "books/coupled/_44c1_s3_p7_2.vqh" - -#include "books/coupled/_44c2_short.vqh" -#include "books/coupled/_44c2_long.vqh" - -#include "books/coupled/_44c2_s0_p1_0.vqh" -#include "books/coupled/_44c2_s0_p2_0.vqh" -#include "books/coupled/_44c2_s0_p3_0.vqh" -#include "books/coupled/_44c2_s0_p4_0.vqh" -#include "books/coupled/_44c2_s0_p4_1.vqh" -#include "books/coupled/_44c2_s0_p5_0.vqh" -#include "books/coupled/_44c2_s1_p5_0.vqh" -#include "books/coupled/_44c2_s0_p6_0.vqh" -#include "books/coupled/_44c2_s1_p6_0.vqh" -#include "books/coupled/_44c2_s2_p6_0.vqh" -#include "books/coupled/_44c2_s0_p7_0.vqh" -#include "books/coupled/_44c2_s0_p7_1.vqh" -#include "books/coupled/_44c2_s0_p7_2.vqh" -#include "books/coupled/_44c2_s1_p7_0.vqh" -#include "books/coupled/_44c2_s1_p7_1.vqh" -#include "books/coupled/_44c2_s1_p7_2.vqh" -#include "books/coupled/_44c2_s2_p7_0.vqh" -#include "books/coupled/_44c2_s2_p7_1.vqh" -#include "books/coupled/_44c2_s2_p7_2.vqh" -#include "books/coupled/_44c2_s3_p7_0.vqh" -#include "books/coupled/_44c2_s3_p7_1.vqh" -#include "books/coupled/_44c2_s3_p7_2.vqh" - - -#include "books/coupled/_44c3_short.vqh" -#include "books/coupled/_44c3_long.vqh" - -#include "books/coupled/_44c3_s0_p1_0.vqh" -#include "books/coupled/_44c3_s0_p2_0.vqh" -#include "books/coupled/_44c3_s0_p3_0.vqh" -#include "books/coupled/_44c3_s0_p4_0.vqh" -#include "books/coupled/_44c3_s0_p4_1.vqh" -#include "books/coupled/_44c3_s0_p5_0.vqh" -#include "books/coupled/_44c3_s1_p5_0.vqh" -#include "books/coupled/_44c3_s0_p6_0.vqh" -#include "books/coupled/_44c3_s1_p6_0.vqh" -#include "books/coupled/_44c3_s2_p6_0.vqh" -#include "books/coupled/_44c3_s0_p7_0.vqh" -#include "books/coupled/_44c3_s0_p7_1.vqh" -#include "books/coupled/_44c3_s0_p7_2.vqh" -#include "books/coupled/_44c3_s1_p7_0.vqh" -#include "books/coupled/_44c3_s1_p7_1.vqh" -#include "books/coupled/_44c3_s1_p7_2.vqh" -#include "books/coupled/_44c3_s2_p7_0.vqh" -#include "books/coupled/_44c3_s2_p7_1.vqh" -#include "books/coupled/_44c3_s2_p7_2.vqh" -#include "books/coupled/_44c3_s3_p7_0.vqh" -#include "books/coupled/_44c3_s3_p7_1.vqh" -#include "books/coupled/_44c3_s3_p7_2.vqh" - -#include "books/coupled/_44c4_short.vqh" -#include "books/coupled/_44c4_long.vqh" - -#include "books/coupled/_44c4_s0_p1_0.vqh" -#include "books/coupled/_44c4_s0_p2_0.vqh" -#include "books/coupled/_44c4_s1_p2_0.vqh" -#include "books/coupled/_44c4_s0_p3_0.vqh" -#include "books/coupled/_44c4_s0_p4_0.vqh" -#include "books/coupled/_44c4_s1_p4_0.vqh" -#include "books/coupled/_44c4_s0_p5_0.vqh" -#include "books/coupled/_44c4_s0_p6_0.vqh" -#include "books/coupled/_44c4_s1_p6_0.vqh" -#include "books/coupled/_44c4_s2_p6_0.vqh" -#include "books/coupled/_44c4_s0_p7_0.vqh" -#include "books/coupled/_44c4_s0_p7_1.vqh" -#include "books/coupled/_44c4_s1_p7_0.vqh" -#include "books/coupled/_44c4_s1_p7_1.vqh" -#include "books/coupled/_44c4_s2_p7_0.vqh" -#include "books/coupled/_44c4_s2_p7_1.vqh" -#include "books/coupled/_44c4_s3_p7_0.vqh" -#include "books/coupled/_44c4_s3_p7_1.vqh" -#include "books/coupled/_44c4_s0_p8_0.vqh" -#include "books/coupled/_44c4_s0_p8_1.vqh" -#include "books/coupled/_44c4_s1_p8_0.vqh" -#include "books/coupled/_44c4_s1_p8_1.vqh" -#include "books/coupled/_44c4_s2_p8_0.vqh" -#include "books/coupled/_44c4_s2_p8_1.vqh" -#include "books/coupled/_44c4_s3_p8_0.vqh" -#include "books/coupled/_44c4_s3_p8_1.vqh" -#include "books/coupled/_44c4_s0_p9_0.vqh" -#include "books/coupled/_44c4_s0_p9_1.vqh" -#include "books/coupled/_44c4_s0_p9_2.vqh" -#include "books/coupled/_44c4_s1_p9_0.vqh" -#include "books/coupled/_44c4_s1_p9_1.vqh" -#include "books/coupled/_44c4_s1_p9_2.vqh" -#include "books/coupled/_44c4_s2_p9_0.vqh" -#include "books/coupled/_44c4_s2_p9_1.vqh" -#include "books/coupled/_44c4_s2_p9_2.vqh" -#include "books/coupled/_44c4_s3_p9_0.vqh" -#include "books/coupled/_44c4_s3_p9_1.vqh" -#include "books/coupled/_44c4_s3_p9_2.vqh" - -#include "books/coupled/_44c4_s1_p2_s0.vqh" -#include "books/coupled/_44c4_s1_p4_s0.vqh" -#include "books/coupled/_44c4_s1_p6_s0.vqh" -#include "books/coupled/_44c4_s1_p7_s0.vqh" -#include "books/coupled/_44c4_s1_p8_s0.vqh" -#include "books/coupled/_44c4_s1_p9_s0.vqh" - -#include "books/coupled/_44c4_s2_p6_s0.vqh" -#include "books/coupled/_44c4_s2_p7_s0.vqh" -#include "books/coupled/_44c4_s2_p8_s0.vqh" -#include "books/coupled/_44c4_s2_p9_s0.vqh" - -#include "books/coupled/_44c4_s3_p9_s0.vqh" - -#include "books/coupled/_44c4_s0_p0_r0.vqh" -#include "books/coupled/_44c4_s0_p0_r1.vqh" -#include "books/coupled/_44c4_s0_pN_r0.vqh" -#include "books/coupled/_44c4_s0_pN_r1.vqh" -#include "books/coupled/_44c4_s1_pS_r0.vqh" -#include "books/coupled/_44c4_s1_pS_r1.vqh" - -#include "books/coupled/_44c5_short.vqh" -#include "books/coupled/_44c5_long.vqh" - -#include "books/coupled/_44c5_s0_p1_0.vqh" -#include "books/coupled/_44c5_s0_p2_0.vqh" -#include "books/coupled/_44c5_s1_p2_0.vqh" -#include "books/coupled/_44c5_s0_p3_0.vqh" -#include "books/coupled/_44c5_s0_p4_0.vqh" -#include "books/coupled/_44c5_s1_p4_0.vqh" -#include "books/coupled/_44c5_s0_p5_0.vqh" -#include "books/coupled/_44c5_s0_p6_0.vqh" -#include "books/coupled/_44c5_s1_p6_0.vqh" -#include "books/coupled/_44c5_s2_p6_0.vqh" -#include "books/coupled/_44c5_s0_p7_0.vqh" -#include "books/coupled/_44c5_s0_p7_1.vqh" -#include "books/coupled/_44c5_s1_p7_0.vqh" -#include "books/coupled/_44c5_s1_p7_1.vqh" -#include "books/coupled/_44c5_s2_p7_0.vqh" -#include "books/coupled/_44c5_s2_p7_1.vqh" -#include "books/coupled/_44c5_s3_p7_0.vqh" -#include "books/coupled/_44c5_s3_p7_1.vqh" -#include "books/coupled/_44c5_s0_p8_0.vqh" -#include "books/coupled/_44c5_s0_p8_1.vqh" -#include "books/coupled/_44c5_s1_p8_0.vqh" -#include "books/coupled/_44c5_s1_p8_1.vqh" -#include "books/coupled/_44c5_s2_p8_0.vqh" -#include "books/coupled/_44c5_s2_p8_1.vqh" -#include "books/coupled/_44c5_s3_p8_0.vqh" -#include "books/coupled/_44c5_s3_p8_1.vqh" -#include "books/coupled/_44c5_s0_p9_0.vqh" -#include "books/coupled/_44c5_s0_p9_1.vqh" -#include "books/coupled/_44c5_s0_p9_2.vqh" -#include "books/coupled/_44c5_s1_p9_0.vqh" -#include "books/coupled/_44c5_s1_p9_1.vqh" -#include "books/coupled/_44c5_s1_p9_2.vqh" -#include "books/coupled/_44c5_s2_p9_0.vqh" -#include "books/coupled/_44c5_s2_p9_1.vqh" -#include "books/coupled/_44c5_s2_p9_2.vqh" -#include "books/coupled/_44c5_s3_p9_0.vqh" -#include "books/coupled/_44c5_s3_p9_1.vqh" -#include "books/coupled/_44c5_s3_p9_2.vqh" - -#include "books/coupled/_44c6_short.vqh" -#include "books/coupled/_44c6_long.vqh" - -#include "books/coupled/_44c6_s0_p1_0.vqh" -#include "books/coupled/_44c6_s0_p2_0.vqh" -#include "books/coupled/_44c6_s1_p2_0.vqh" -#include "books/coupled/_44c6_s0_p3_0.vqh" -#include "books/coupled/_44c6_s0_p4_0.vqh" -#include "books/coupled/_44c6_s1_p4_0.vqh" -#include "books/coupled/_44c6_s0_p5_0.vqh" -#include "books/coupled/_44c6_s0_p6_0.vqh" -#include "books/coupled/_44c6_s1_p6_0.vqh" -#include "books/coupled/_44c6_s2_p6_0.vqh" -#include "books/coupled/_44c6_s0_p7_0.vqh" -#include "books/coupled/_44c6_s0_p7_1.vqh" -#include "books/coupled/_44c6_s1_p7_0.vqh" -#include "books/coupled/_44c6_s1_p7_1.vqh" -#include "books/coupled/_44c6_s2_p7_0.vqh" -#include "books/coupled/_44c6_s2_p7_1.vqh" -#include "books/coupled/_44c6_s3_p7_0.vqh" -#include "books/coupled/_44c6_s3_p7_1.vqh" -#include "books/coupled/_44c6_s0_p8_0.vqh" -#include "books/coupled/_44c6_s0_p8_1.vqh" -#include "books/coupled/_44c6_s1_p8_0.vqh" -#include "books/coupled/_44c6_s1_p8_1.vqh" -#include "books/coupled/_44c6_s2_p8_0.vqh" -#include "books/coupled/_44c6_s2_p8_1.vqh" -#include "books/coupled/_44c6_s3_p8_0.vqh" -#include "books/coupled/_44c6_s3_p8_1.vqh" -#include "books/coupled/_44c6_s0_p9_0.vqh" -#include "books/coupled/_44c6_s0_p9_1.vqh" -#include "books/coupled/_44c6_s0_p9_2.vqh" -#include "books/coupled/_44c6_s1_p9_0.vqh" -#include "books/coupled/_44c6_s1_p9_1.vqh" -#include "books/coupled/_44c6_s1_p9_2.vqh" -#include "books/coupled/_44c6_s2_p9_0.vqh" -#include "books/coupled/_44c6_s2_p9_1.vqh" -#include "books/coupled/_44c6_s2_p9_2.vqh" -#include "books/coupled/_44c6_s3_p9_0.vqh" -#include "books/coupled/_44c6_s3_p9_1.vqh" -#include "books/coupled/_44c6_s3_p9_2.vqh" - -#include "books/coupled/_44c7_short.vqh" -#include "books/coupled/_44c7_long.vqh" - -#include "books/coupled/_44c7_s0_p1_0.vqh" -#include "books/coupled/_44c7_s0_p1_1.vqh" -#include "books/coupled/_44c7_s0_p2_0.vqh" -#include "books/coupled/_44c7_s0_p2_1.vqh" -#include "books/coupled/_44c7_s0_p3_0.vqh" -#include "books/coupled/_44c7_s0_p4_0.vqh" -#include "books/coupled/_44c7_s0_p5_0.vqh" -#include "books/coupled/_44c7_s0_p6_0.vqh" -#include "books/coupled/_44c7_s0_p6_1.vqh" -#include "books/coupled/_44c7_s0_p7_0.vqh" -#include "books/coupled/_44c7_s0_p7_1.vqh" -#include "books/coupled/_44c7_s0_p8_0.vqh" -#include "books/coupled/_44c7_s0_p8_1.vqh" -#include "books/coupled/_44c7_s0_p9_0.vqh" -#include "books/coupled/_44c7_s0_p9_1.vqh" -#include "books/coupled/_44c7_s0_p9_2.vqh" - -#include "books/coupled/_44c7_s0_p0_r0.vqh" -#include "books/coupled/_44c7_s0_p0_r1.vqh" -#include "books/coupled/_44c7_s0_pN_r0.vqh" -#include "books/coupled/_44c7_s0_pN_r1.vqh" - -#include "books/coupled/_44c8_short.vqh" -#include "books/coupled/_44c8_long.vqh" - -#include "books/coupled/_44c8_s0_p1_0.vqh" -#include "books/coupled/_44c8_s0_p1_1.vqh" -#include "books/coupled/_44c8_s0_p2_0.vqh" -#include "books/coupled/_44c8_s0_p2_1.vqh" -#include "books/coupled/_44c8_s0_p3_0.vqh" -#include "books/coupled/_44c8_s0_p4_0.vqh" -#include "books/coupled/_44c8_s0_p5_0.vqh" -#include "books/coupled/_44c8_s0_p6_0.vqh" -#include "books/coupled/_44c8_s0_p6_1.vqh" -#include "books/coupled/_44c8_s0_p7_0.vqh" -#include "books/coupled/_44c8_s0_p7_1.vqh" -#include "books/coupled/_44c8_s0_p8_0.vqh" -#include "books/coupled/_44c8_s0_p8_1.vqh" -#include "books/coupled/_44c8_s0_p9_0.vqh" -#include "books/coupled/_44c8_s0_p9_1.vqh" -#include "books/coupled/_44c8_s0_p9_2.vqh" - -#include "books/coupled/_44c9_short.vqh" -#include "books/coupled/_44c9_long.vqh" - -#include "books/coupled/_44c9_s0_p1_0.vqh" -#include "books/coupled/_44c9_s0_p1_1.vqh" -#include "books/coupled/_44c9_s0_p2_0.vqh" -#include "books/coupled/_44c9_s0_p2_1.vqh" -#include "books/coupled/_44c9_s0_p3_0.vqh" -#include "books/coupled/_44c9_s0_p4_0.vqh" -#include "books/coupled/_44c9_s0_p5_0.vqh" -#include "books/coupled/_44c9_s0_p6_0.vqh" -#include "books/coupled/_44c9_s0_p6_1.vqh" -#include "books/coupled/_44c9_s0_p7_0.vqh" -#include "books/coupled/_44c9_s0_p7_1.vqh" -#include "books/coupled/_44c9_s0_p8_0.vqh" -#include "books/coupled/_44c9_s0_p8_1.vqh" -#include "books/coupled/_44c9_s0_p9_0.vqh" -#include "books/coupled/_44c9_s0_p9_1.vqh" -#include "books/coupled/_44c9_s0_p9_2.vqh" - -/* residue backfill is entered in the template array as if stereo - backfill is not in use. It's up to vorbisenc to make the - appropriate index adjustment */ -static vorbis_residue_template _residue_template_44_stereo[11]={ - /* mode 0; 64-ish */ - {{&_residue_44_low, &_residue_44_low}, - {&_huff_book__44c0_short,&_huff_book__44c0_long}, - /* mostly temporary entries pending training */ - { {{0},{0,0,&_44c0_s0_p1_0},{0,0,&_44c0_s0_p2_0},{0,0,&_44c0_s0_p3_0}, - {&_44c0_s0_p4_0,&_44c0_s0_p4_1},{0,0,&_44c0_s0_p5_0},{0,0,&_44c0_s0_p6_0}, - {&_44c0_s0_p7_0,&_44c0_s0_p7_1,&_44c0_s0_p7_2}}, /* lossless stereo */ - {{0},{0,0,&_44c0_s0_p1_0},{0,0,&_44c0_s0_p2_0},{0,0,&_44c0_s0_p3_0}, - {&_44c0_s0_p4_0,&_44c0_s0_p4_1},{0,0,&_44c0_s1_p5_0},{0,0,&_44c0_s1_p6_0}, - {&_44c0_s1_p7_0,&_44c0_s1_p7_1,&_44c0_s1_p7_2}}, /* 6dB (2.5) stereo */ - {{0},{0,0,&_44c0_s0_p1_0},{0,0,&_44c0_s0_p2_0},{0,0,&_44c0_s0_p3_0}, - {&_44c0_s0_p4_0,&_44c0_s0_p4_1},{0,0,&_44c0_s1_p5_0},{0,0,&_44c0_s2_p6_0}, - {&_44c0_s2_p7_0,&_44c0_s2_p7_1,&_44c0_s2_p7_2}}, /* 12dB (4.5) stereo */ - {{0},{0,0,&_44c0_s0_p1_0},{0,0,&_44c0_s0_p2_0},{0,0,&_44c0_s0_p3_0}, - {&_44c0_s0_p4_0,&_44c0_s0_p4_1},{0,0,&_44c0_s1_p5_0},{0,0,&_44c0_s2_p6_0}, - {&_44c0_s3_p7_0,&_44c0_s3_p7_1,&_44c0_s3_p7_2}}, /* 18dB (8.5) stereo */ - {{0}}, /* 24dB (16.5) stereo */ - }, - { {0}, /* lossless stereo */ - {0,0,0,0,0,&_44c0_s1_p5_s0,&_44c0_s1_p6_s0,&_44c0_s1_p7_s0}, /* 6dB (2.5) stereo */ - {0,0,0,0,0,0,&_44c0_s2_p6_s0,&_44c0_s2_p7_s0}, /* 12dB (4.5) stereo */ - {0,0,0,0,0,0,0,&_44c0_s3_p7_s0}, /* 18dB (8.5) stereo */ - {0}, - }, - { - {{&_44c0_s0_p0_r0,&_44c0_s0_p0_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}}, /* lossless stereo */ - {{&_44c0_s0_p0_r0,&_44c0_s0_p0_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}}, /* 6dB (2.5) stereo */ - {{&_44c0_s0_p0_r0,&_44c0_s0_p0_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}}, /* 12dB (4.5) stereo */ - {{&_44c0_s0_p0_r0,&_44c0_s0_p0_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}}, /* 18dB (8.5) stereo */ - {{0}}, /* 24dB (16.5) stereo */ - }, - }, - /* mode 1; 80-ish */ - {{&_residue_44_low, &_residue_44_low}, - {&_huff_book__44c1_short,&_huff_book__44c1_long}, - /* mostly temporary entries pending training */ - { {{0},{0,0,&_44c1_s0_p1_0},{0,0,&_44c1_s0_p2_0},{0,0,&_44c1_s0_p3_0}, - {&_44c1_s0_p4_0,&_44c1_s0_p4_1},{0,0,&_44c1_s0_p5_0},{0,0,&_44c1_s0_p6_0}, - {&_44c1_s0_p7_0,&_44c1_s0_p7_1,&_44c1_s0_p7_2}}, /* lossless stereo */ - {{0},{0,0,&_44c1_s0_p1_0},{0,0,&_44c1_s0_p2_0},{0,0,&_44c1_s0_p3_0}, - {&_44c1_s0_p4_0,&_44c1_s0_p4_1},{0,0,&_44c1_s1_p5_0},{0,0,&_44c1_s1_p6_0}, - {&_44c1_s1_p7_0,&_44c1_s1_p7_1,&_44c1_s1_p7_2}}, /* 6dB (2.5) stereo */ - {{0},{0,0,&_44c1_s0_p1_0},{0,0,&_44c1_s0_p2_0},{0,0,&_44c1_s0_p3_0}, - {&_44c1_s0_p4_0,&_44c1_s0_p4_1},{0,0,&_44c1_s1_p5_0},{0,0,&_44c1_s2_p6_0}, - {&_44c1_s2_p7_0,&_44c1_s2_p7_1,&_44c1_s2_p7_2}}, /* 12dB (4.5) stereo */ - {{0},{0,0,&_44c1_s0_p1_0},{0,0,&_44c1_s0_p2_0},{0,0,&_44c1_s0_p3_0}, - {&_44c1_s0_p4_0,&_44c1_s0_p4_1},{0,0,&_44c1_s1_p5_0},{0,0,&_44c1_s2_p6_0}, - {&_44c1_s3_p7_0,&_44c1_s3_p7_1,&_44c1_s3_p7_2}}, /* 18dB (8.5) stereo */ - {{0}}, /* 24dB (16.5) stereo */ - }, - { {0}, /* lossless stereo */ - {0,0,0,0,0,&_44c0_s1_p5_s0,&_44c0_s1_p6_s0,&_44c0_s1_p7_s0}, /* 6dB (2.5) stereo */ - {0,0,0,0,0,0,&_44c0_s2_p6_s0,&_44c0_s2_p7_s0}, /* 12dB (4.5) stereo */ - {0,0,0,0,0,0,0,&_44c0_s3_p7_s0}, /* 18dB (8.5) stereo */ - {0}, - }, - { - {{&_44c0_s0_p0_r0,&_44c0_s0_p0_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}}, /* lossless stereo */ - {{&_44c0_s0_p0_r0,&_44c0_s0_p0_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}}, /* 6dB (2.5) stereo */ - {{&_44c0_s0_p0_r0,&_44c0_s0_p0_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}}, /* 12dB (4.5) stereo */ - {{&_44c0_s0_p0_r0,&_44c0_s0_p0_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}}, /* 18dB (8.5) stereo */ - {{0}}, /* 24dB (16.5) stereo */ - }, - }, - /* mode 2; 96-ish */ - {{&_residue_44_low, &_residue_44_low}, - {&_huff_book__44c2_short,&_huff_book__44c2_long}, - /* mostly temporary entries pending training */ - { {{0},{0,0,&_44c2_s0_p1_0},{0,0,&_44c2_s0_p2_0},{0,0,&_44c2_s0_p3_0}, - {&_44c2_s0_p4_0,&_44c2_s0_p4_1},{0,0,&_44c2_s0_p5_0},{0,0,&_44c2_s0_p6_0}, - {&_44c2_s0_p7_0,&_44c2_s0_p7_1,&_44c2_s0_p7_2}}, /* lossless stereo */ - {{0},{0,0,&_44c2_s0_p1_0},{0,0,&_44c2_s0_p2_0},{0,0,&_44c2_s0_p3_0}, - {&_44c2_s0_p4_0,&_44c2_s0_p4_1},{0,0,&_44c2_s1_p5_0},{0,0,&_44c2_s1_p6_0}, - {&_44c2_s1_p7_0,&_44c2_s1_p7_1,&_44c2_s1_p7_2}}, /* 6dB (2.5) stereo */ - {{0},{0,0,&_44c2_s0_p1_0},{0,0,&_44c2_s0_p2_0},{0,0,&_44c2_s0_p3_0}, - {&_44c2_s0_p4_0,&_44c2_s0_p4_1},{0,0,&_44c2_s1_p5_0},{0,0,&_44c2_s2_p6_0}, - {&_44c2_s2_p7_0,&_44c2_s2_p7_1,&_44c2_s2_p7_2}}, /* 12dB (4.5) stereo */ - {{0},{0,0,&_44c2_s0_p1_0},{0,0,&_44c2_s0_p2_0},{0,0,&_44c2_s0_p3_0}, - {&_44c2_s0_p4_0,&_44c2_s0_p4_1},{0,0,&_44c2_s1_p5_0},{0,0,&_44c2_s2_p6_0}, - {&_44c2_s3_p7_0,&_44c2_s3_p7_1,&_44c2_s3_p7_2}}, /* 18dB (8.5) stereo */ - {{0}}, /* 24dB (16.5) stereo */ - }, - { {0}, /* lossless stereo */ - {0,0,0,0,0,&_44c0_s1_p5_s0,&_44c0_s1_p6_s0,&_44c0_s1_p7_s0}, /* 6dB (2.5) stereo */ - {0,0,0,0,0,0,&_44c0_s2_p6_s0,&_44c0_s2_p7_s0}, /* 12dB (4.5) stereo */ - {0,0,0,0,0,0,0,&_44c0_s3_p7_s0}, /* 18dB (8.5) stereo */ - {0}, - }, - { - {{&_44c0_s0_p0_r0,&_44c0_s0_p0_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}}, /* lossless stereo */ - {{&_44c0_s0_p0_r0,&_44c0_s0_p0_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}}, /* 6dB (2.5) stereo */ - {{&_44c0_s0_p0_r0,&_44c0_s0_p0_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}}, /* 12dB (4.5) stereo */ - {{&_44c0_s0_p0_r0,&_44c0_s0_p0_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}}, /* 18dB (8.5) stereo */ - {{0}}, /* 24dB (16.5) stereo */ - }, - }, - /* mode 3; 112-ish */ - {{&_residue_44_low, &_residue_44_low}, - {&_huff_book__44c3_short,&_huff_book__44c3_long}, - /* mostly temporary entries pending training */ - { {{0},{0,0,&_44c3_s0_p1_0},{0,0,&_44c3_s0_p2_0},{0,0,&_44c3_s0_p3_0}, - {&_44c3_s0_p4_0,&_44c3_s0_p4_1},{0,0,&_44c3_s0_p5_0},{0,0,&_44c3_s0_p6_0}, - {&_44c3_s0_p7_0,&_44c3_s0_p7_1,&_44c3_s0_p7_2}}, /* lossless stereo */ - {{0},{0,0,&_44c3_s0_p1_0},{0,0,&_44c3_s0_p2_0},{0,0,&_44c3_s0_p3_0}, - {&_44c3_s0_p4_0,&_44c3_s0_p4_1},{0,0,&_44c3_s1_p5_0},{0,0,&_44c3_s1_p6_0}, - {&_44c3_s1_p7_0,&_44c3_s1_p7_1,&_44c3_s1_p7_2}}, /* 6dB (2.5) stereo */ - {{0},{0,0,&_44c3_s0_p1_0},{0,0,&_44c3_s0_p2_0},{0,0,&_44c3_s0_p3_0}, - {&_44c3_s0_p4_0,&_44c3_s0_p4_1},{0,0,&_44c3_s1_p5_0},{0,0,&_44c3_s2_p6_0}, - {&_44c3_s2_p7_0,&_44c3_s2_p7_1,&_44c3_s2_p7_2}}, /* 12dB (4.5) stereo */ - {{0},{0,0,&_44c3_s0_p1_0},{0,0,&_44c3_s0_p2_0},{0,0,&_44c3_s0_p3_0}, - {&_44c3_s0_p4_0,&_44c3_s0_p4_1},{0,0,&_44c3_s1_p5_0},{0,0,&_44c3_s2_p6_0}, - {&_44c3_s3_p7_0,&_44c3_s3_p7_1,&_44c3_s3_p7_2}}, /* 18dB (8.5) stereo */ - {{0}}, /* 24dB (16.5) stereo */ - }, - { {0}, /* lossless stereo */ - {0,0,0,0,0,&_44c0_s1_p5_s0,&_44c0_s1_p6_s0,&_44c0_s1_p7_s0}, /* 6dB (2.5) stereo */ - {0,0,0,0,0,0,&_44c0_s2_p6_s0,&_44c0_s2_p7_s0}, /* 12dB (4.5) stereo */ - {0,0,0,0,0,0,0,&_44c0_s3_p7_s0}, /* 18dB (8.5) stereo */ - {0}, - }, - { - {{&_44c0_s0_p0_r0,&_44c0_s0_p0_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}}, /* lossless stereo */ - {{&_44c0_s0_p0_r0,&_44c0_s0_p0_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}}, /* 6dB (2.5) stereo */ - {{&_44c0_s0_p0_r0,&_44c0_s0_p0_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}}, /* 12dB (4.5) stereo */ - {{&_44c0_s0_p0_r0,&_44c0_s0_p0_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s1_pS_r0,&_44c0_s1_pS_r1}, - {&_44c0_s0_pN_r0,&_44c0_s0_pN_r1}}, /* 18dB (8.5) stereo */ - {{0}}, /* 24dB (16.5) stereo */ - }, - }, - - /* mode 4; 128-ish */ - {{&_residue_44_mid, &_residue_44_mid}, - {&_huff_book__44c4_short,&_huff_book__44c4_long}, - { - {{0},{0,0,&_44c4_s0_p1_0},{0,0,&_44c4_s0_p2_0},{0,0,&_44c4_s0_p3_0}, - {0,0,&_44c4_s0_p4_0},{0,0,&_44c4_s0_p5_0},{0,0,&_44c4_s0_p6_0}, - {&_44c4_s0_p7_0,&_44c4_s0_p7_1},{&_44c4_s0_p8_0,&_44c4_s0_p8_1}, - {&_44c4_s0_p9_0,&_44c4_s0_p9_1,&_44c4_s0_p9_2}}, - {{0},{0,0,&_44c4_s0_p1_0},{0,0,&_44c4_s1_p2_0},{0,0,&_44c4_s0_p3_0}, - {0,0,&_44c4_s1_p4_0},{0,0,&_44c4_s0_p5_0},{0,0,&_44c4_s1_p6_0}, - {&_44c4_s1_p7_0,&_44c4_s1_p7_1},{&_44c4_s1_p8_0,&_44c4_s1_p8_1}, - {&_44c4_s1_p9_0,&_44c4_s1_p9_1,&_44c4_s1_p9_2}}, - {{0},{0,0,&_44c4_s0_p1_0},{0,0,&_44c4_s1_p2_0},{0,0,&_44c4_s0_p3_0}, - {0,0,&_44c4_s1_p4_0},{0,0,&_44c4_s0_p5_0},{0,0,&_44c4_s2_p6_0}, - {&_44c4_s2_p7_0,&_44c4_s2_p7_1},{&_44c4_s2_p8_0,&_44c4_s2_p8_1}, - {&_44c4_s2_p9_0,&_44c4_s2_p9_1,&_44c4_s2_p9_2}}, - {{0},{0,0,&_44c4_s0_p1_0},{0,0,&_44c4_s1_p2_0},{0,0,&_44c4_s0_p3_0}, - {0,0,&_44c4_s1_p4_0},{0,0,&_44c4_s0_p5_0},{0,0,&_44c4_s2_p6_0}, - {&_44c4_s3_p7_0,&_44c4_s3_p7_1},{&_44c4_s3_p8_0,&_44c4_s3_p8_1}, - {&_44c4_s3_p9_0,&_44c4_s3_p9_1,&_44c4_s3_p9_2}}, - {{0}}, /* 24dB (16.5) stereo */ - }, - - { {0}, /* lossless stereo */ - {0,0,&_44c4_s1_p2_s0,0,&_44c4_s1_p4_s0,0,&_44c4_s1_p6_s0,&_44c4_s1_p7_s0, - &_44c4_s1_p8_s0,&_44c4_s1_p9_s0}, /* (2.5) stereo */ - {0,0,0,0,0,0,&_44c4_s2_p6_s0,&_44c4_s2_p7_s0,&_44c4_s2_p8_s0, - &_44c4_s2_p9_s0}, /* (4.5) stereo */ - {0,0,0,0,0,0,0,&_44c4_s3_p9_s0,&_44c4_s3_p9_s0,&_44c4_s3_p9_s0}, /* (8.5) stereo */ - {0}, - }, - { - {{&_44c4_s0_p0_r0,&_44c4_s0_p0_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}}, /* lossless stereo */ - {{&_44c4_s0_p0_r0,&_44c4_s0_p0_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}}, /* 6dB stereo */ - {{&_44c4_s0_p0_r0,&_44c4_s0_p0_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}}, /* 12dB stereo */ - {{&_44c4_s0_p0_r0,&_44c4_s0_p0_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}}, /* 18dB stereo */ - {{&_44c4_s0_p0_r0,&_44c4_s0_p0_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}}, /* 24dB stereo */ - }, - }, - /* mode 5; 160-ish */ - {{&_residue_44_mid, &_residue_44_mid}, - {&_huff_book__44c5_short,&_huff_book__44c5_long}, - { - {{0},{0,0,&_44c5_s0_p1_0},{0,0,&_44c5_s0_p2_0},{0,0,&_44c5_s0_p3_0}, - {0,0,&_44c5_s0_p4_0},{0,0,&_44c5_s0_p5_0},{0,0,&_44c5_s0_p6_0}, - {&_44c5_s0_p7_0,&_44c5_s0_p7_1},{&_44c5_s0_p8_0,&_44c5_s0_p8_1}, - {&_44c5_s0_p9_0,&_44c5_s0_p9_1,&_44c5_s0_p9_2}}, - {{0},{0,0,&_44c5_s0_p1_0},{0,0,&_44c5_s1_p2_0},{0,0,&_44c5_s0_p3_0}, - {0,0,&_44c5_s1_p4_0},{0,0,&_44c5_s0_p5_0},{0,0,&_44c5_s1_p6_0}, - {&_44c5_s1_p7_0,&_44c5_s1_p7_1},{&_44c5_s1_p8_0,&_44c5_s1_p8_1}, - {&_44c5_s1_p9_0,&_44c5_s1_p9_1,&_44c5_s1_p9_2}}, - {{0},{0,0,&_44c5_s0_p1_0},{0,0,&_44c5_s1_p2_0},{0,0,&_44c5_s0_p3_0}, - {0,0,&_44c5_s1_p4_0},{0,0,&_44c5_s0_p5_0},{0,0,&_44c5_s2_p6_0}, - {&_44c5_s2_p7_0,&_44c5_s2_p7_1},{&_44c5_s2_p8_0,&_44c5_s2_p8_1}, - {&_44c5_s2_p9_0,&_44c5_s2_p9_1,&_44c5_s2_p9_2}}, - {{0},{0,0,&_44c5_s0_p1_0},{0,0,&_44c5_s1_p2_0},{0,0,&_44c5_s0_p3_0}, - {0,0,&_44c5_s1_p4_0},{0,0,&_44c5_s0_p5_0},{0,0,&_44c5_s2_p6_0}, - {&_44c5_s3_p7_0,&_44c5_s3_p7_1},{&_44c5_s3_p8_0,&_44c5_s3_p8_1}, - {&_44c5_s3_p9_0,&_44c5_s3_p9_1,&_44c5_s3_p9_2}}, - {{0}}, /* 24dB (16.5) stereo */ - }, - - { {0}, /* lossless stereo */ - {0,0,&_44c4_s1_p2_s0,0,&_44c4_s1_p4_s0,0,&_44c4_s1_p6_s0,&_44c4_s1_p7_s0, - &_44c4_s1_p8_s0,&_44c4_s1_p9_s0}, /* (2.5) stereo */ - {0,0,0,0,0,0,&_44c4_s2_p6_s0,&_44c4_s2_p7_s0,&_44c4_s2_p8_s0, - &_44c4_s2_p9_s0}, /* (4.5) stereo */ - {0,0,0,0,0,0,0,&_44c4_s3_p9_s0,&_44c4_s3_p9_s0,&_44c4_s3_p9_s0}, /* (8.5) stereo */ - {0}, - }, - { - {{&_44c4_s0_p0_r0,&_44c4_s0_p0_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}}, /* lossless stereo */ - {{&_44c4_s0_p0_r0,&_44c4_s0_p0_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}}, /* 6dB stereo */ - {{&_44c4_s0_p0_r0,&_44c4_s0_p0_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}}, /* 12dB stereo */ - {{&_44c4_s0_p0_r0,&_44c4_s0_p0_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}}, /* 18dB stereo */ - {{&_44c4_s0_p0_r0,&_44c4_s0_p0_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}}, /* 24dB stereo */ - }, - }, - /* mode 6; 192-ish */ - {{&_residue_44_mid, &_residue_44_mid}, - {&_huff_book__44c6_short,&_huff_book__44c6_long}, - { - {{0},{0,0,&_44c6_s0_p1_0},{0,0,&_44c6_s0_p2_0},{0,0,&_44c6_s0_p3_0}, - {0,0,&_44c6_s0_p4_0},{0,0,&_44c6_s0_p5_0},{0,0,&_44c6_s0_p6_0}, - {&_44c6_s0_p7_0,&_44c6_s0_p7_1},{&_44c6_s0_p8_0,&_44c6_s0_p8_1}, - {&_44c6_s0_p9_0,&_44c6_s0_p9_1,&_44c6_s0_p9_2}}, - {{0},{0,0,&_44c6_s0_p1_0},{0,0,&_44c6_s1_p2_0},{0,0,&_44c6_s0_p3_0}, - {0,0,&_44c6_s1_p4_0},{0,0,&_44c6_s0_p5_0},{0,0,&_44c6_s1_p6_0}, - {&_44c6_s1_p7_0,&_44c6_s1_p7_1},{&_44c6_s1_p8_0,&_44c6_s1_p8_1}, - {&_44c6_s1_p9_0,&_44c6_s1_p9_1,&_44c6_s1_p9_2}}, - {{0},{0,0,&_44c6_s0_p1_0},{0,0,&_44c6_s1_p2_0},{0,0,&_44c6_s0_p3_0}, - {0,0,&_44c6_s1_p4_0},{0,0,&_44c6_s0_p5_0},{0,0,&_44c6_s2_p6_0}, - {&_44c6_s2_p7_0,&_44c6_s2_p7_1},{&_44c6_s2_p8_0,&_44c6_s2_p8_1}, - {&_44c6_s2_p9_0,&_44c6_s2_p9_1,&_44c6_s2_p9_2}}, - {{0},{0,0,&_44c6_s0_p1_0},{0,0,&_44c6_s1_p2_0},{0,0,&_44c6_s0_p3_0}, - {0,0,&_44c6_s1_p4_0},{0,0,&_44c6_s0_p5_0},{0,0,&_44c6_s2_p6_0}, - {&_44c6_s3_p7_0,&_44c6_s3_p7_1},{&_44c6_s3_p8_0,&_44c6_s3_p8_1}, - {&_44c6_s3_p9_0,&_44c6_s3_p9_1,&_44c6_s3_p9_2}}, - {{0}}, /* 24dB (16.5) stereo */ - }, - - { {0}, /* lossless stereo */ - {0,0,&_44c4_s1_p2_s0,0,&_44c4_s1_p4_s0,0,&_44c4_s1_p6_s0,&_44c4_s1_p7_s0, - &_44c4_s1_p8_s0,&_44c4_s1_p9_s0}, /* (2.5) stereo */ - {0,0,0,0,0,0,&_44c4_s2_p6_s0,&_44c4_s2_p7_s0,&_44c4_s2_p8_s0, - &_44c4_s2_p9_s0}, /* (4.5) stereo */ - {0,0,0,0,0,0,0,&_44c4_s3_p9_s0,&_44c4_s3_p9_s0,&_44c4_s3_p9_s0}, /* (8.5) stereo */ - {0}, - }, - { - {{&_44c4_s0_p0_r0,&_44c4_s0_p0_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}}, /* lossless stereo */ - {{&_44c4_s0_p0_r0,&_44c4_s0_p0_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}}, /* 6dB stereo */ - {{&_44c4_s0_p0_r0,&_44c4_s0_p0_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}}, /* 12dB stereo */ - {{&_44c4_s0_p0_r0,&_44c4_s0_p0_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}}, /* 18dB stereo */ - {{&_44c4_s0_p0_r0,&_44c4_s0_p0_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s1_pS_r0,&_44c4_s1_pS_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}, - {&_44c4_s0_pN_r0,&_44c4_s0_pN_r1}}, /* 24dB stereo */ - }, - }, - - /* mode 7; 224-ish */ - {{&_residue_44_high, &_residue_44_high}, - {&_huff_book__44c7_short,&_huff_book__44c7_long}, - { {{0},{&_44c7_s0_p1_0,&_44c7_s0_p1_1}, - {&_44c7_s0_p2_0,&_44c7_s0_p2_1}, - {0,0,&_44c7_s0_p3_0},{0,0,&_44c7_s0_p4_0},{0,0,&_44c7_s0_p5_0}, - {&_44c7_s0_p6_0,&_44c7_s0_p6_1}, - {&_44c7_s0_p7_0,&_44c7_s0_p7_1}, - {&_44c7_s0_p8_0,&_44c7_s0_p8_1}, - {&_44c7_s0_p9_0,&_44c7_s0_p9_1,&_44c7_s0_p9_2}}, - {{0}}, /* 6dB (2.5) stereo */ - {{0}}, /* 12dB (4.5) stereo */ - {{0}}, /* 18dB (8.5) stereo */ - {{0}}, /* 24dB (16.5) stereo */ - }, - { {0}, /* lossless stereo */ - {0}, /* 6dB (2.5) stereo */ - {0}, /* 12dB (4.5) stereo */ - {0}, /* 18dB (8.5) stereo */ - {0}, - /*{0,0,0,0,0,0,0,0,&44c0_s4_s8,&44c0_s4_s9},*/ /* 24dB (16.5) stereo */ - }, - { - {{&_44c7_s0_p0_r0,&_44c7_s0_p0_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}}, /* lossless stereo */ - {{0}}, /* 6dB (2.5) stereo */ - {{0}}, /* 12dB (4.5) stereo */ - {{0}}, /* 18dB (8.5) stereo */ - /*{{&44c0_s0_r0_0,&44c0_s0_r0_1},{&44c0_s0_r1_0,&44c0_s0_r1_1}, - {&44c0_s0_r2_0,&44c0_s0_r2_1},{&44c0_s0_r3_0,&44c0_s0_r3_1}, - {&44c0_s0_r4_0,&44c0_s0_r4_1},{&44c0_s1_r5_0,&44c0_s1_r5_1}, - {&44c0_s1_r6_0,&44c0_s1_r6_1},{&44c0_s2_r7_0,&44c0_s2_r7_1}, - {&44c0_s4_r8_0,&44c0_s3_r8_1},{&44c0_s4_r9_0,&44c0_s3_r9_1}},*/ /* 18dB (8.5) stereo */ - {{0}}, /* 24dB (16.5) stereo */ - }, - }, - - /* mode 8; 256-ish */ - {{&_residue_44_high, &_residue_44_high}, - {&_huff_book__44c8_short,&_huff_book__44c8_long}, - { {{0},{&_44c8_s0_p1_0,&_44c8_s0_p1_1}, - {&_44c8_s0_p2_0,&_44c8_s0_p2_1}, - {0,0,&_44c8_s0_p3_0},{0,0,&_44c8_s0_p4_0},{0,0,&_44c8_s0_p5_0}, - {&_44c8_s0_p6_0,&_44c8_s0_p6_1}, - {&_44c8_s0_p7_0,&_44c8_s0_p7_1}, - {&_44c8_s0_p8_0,&_44c8_s0_p8_1}, - {&_44c8_s0_p9_0,&_44c8_s0_p9_1,&_44c8_s0_p9_2}}, - {{0}}, /* 6dB (2.5) stereo */ - {{0}}, /* 12dB (4.5) stereo */ - {{0}}, /* 18dB (8.5) stereo */ - {{0}}, /* 24dB (16.5) stereo */ - }, - { {0}, /* lossless stereo */ - {0}, /* 6dB (2.5) stereo */ - {0}, /* 12dB (4.5) stereo */ - {0}, /* 18dB (8.5) stereo */ - {0}, - /*{0,0,0,0,0,0,0,0,&44c0_s4_s8,&44c0_s4_s9},*/ /* 24dB (16.5) stereo */ - }, - { - {{&_44c7_s0_p0_r0,&_44c7_s0_p0_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}}, /* lossless stereo */ - {{0}}, /* 6dB (2.5) stereo */ - {{0}}, /* 12dB (4.5) stereo */ - {{0}}, /* 18dB (8.5) stereo */ - /*{{&44c0_s0_r0_0,&44c0_s0_r0_1},{&44c0_s0_r1_0,&44c0_s0_r1_1}, - {&44c0_s0_r2_0,&44c0_s0_r2_1},{&44c0_s0_r3_0,&44c0_s0_r3_1}, - {&44c0_s0_r4_0,&44c0_s0_r4_1},{&44c0_s1_r5_0,&44c0_s1_r5_1}, - {&44c0_s1_r6_0,&44c0_s1_r6_1},{&44c0_s2_r7_0,&44c0_s2_r7_1}, - {&44c0_s4_r8_0,&44c0_s3_r8_1},{&44c0_s4_r9_0,&44c0_s3_r9_1}},*/ /* 18dB (8.5) stereo */ - {{0}}, /* 24dB (16.5) stereo */ - }, - }, - /* mode 9; 320-ish */ - {{&_residue_44_high, &_residue_44_high}, - {&_huff_book__44c9_short,&_huff_book__44c9_long}, - { {{0},{&_44c9_s0_p1_0,&_44c9_s0_p1_1}, - {&_44c9_s0_p2_0,&_44c9_s0_p2_1}, - {0,0,&_44c9_s0_p3_0},{0,0,&_44c9_s0_p4_0},{0,0,&_44c9_s0_p5_0}, - {&_44c9_s0_p6_0,&_44c9_s0_p6_1}, - {&_44c9_s0_p7_0,&_44c9_s0_p7_1}, - {&_44c9_s0_p8_0,&_44c9_s0_p8_1}, - {&_44c9_s0_p9_0,&_44c9_s0_p9_1,&_44c9_s0_p9_2}}, - {{0}}, /* 6dB (2.5) stereo */ - {{0}}, /* 12dB (4.5) stereo */ - {{0}}, /* 18dB (8.5) stereo */ - {{0}}, /* 24dB (16.5) stereo */ - }, - { {0}, /* lossless stereo */ - {0}, /* 6dB (2.5) stereo */ - {0}, /* 12dB (4.5) stereo */ - {0}, /* 18dB (8.5) stereo */ - {0}, - /*{0,0,0,0,0,0,0,0,&44c0_s4_s8,&44c0_s4_s9},*/ /* 24dB (16.5) stereo */ - }, - { - {{&_44c7_s0_p0_r0,&_44c7_s0_p0_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}, - {&_44c7_s0_pN_r0,&_44c7_s0_pN_r1}}, /* lossless stereo */ - {{0}}, /* 6dB (2.5) stereo */ - {{0}}, /* 12dB (4.5) stereo */ - {{0}}, /* 18dB (8.5) stereo */ - /*{{&44c0_s0_r0_0,&44c0_s0_r0_1},{&44c0_s0_r1_0,&44c0_s0_r1_1}, - {&44c0_s0_r2_0,&44c0_s0_r2_1},{&44c0_s0_r3_0,&44c0_s0_r3_1}, - {&44c0_s0_r4_0,&44c0_s0_r4_1},{&44c0_s1_r5_0,&44c0_s1_r5_1}, - {&44c0_s1_r6_0,&44c0_s1_r6_1},{&44c0_s2_r7_0,&44c0_s2_r7_1}, - {&44c0_s4_r8_0,&44c0_s3_r8_1},{&44c0_s4_r9_0,&44c0_s3_r9_1}},*/ /* 18dB (8.5) stereo */ - {{0}}, /* 24dB (16.5) stereo */ - }, - } - -}; - -#include "books/uncoupled/_44u0_p1_0.vqh" -#include "books/uncoupled/_44u0_p2_0.vqh" -#include "books/uncoupled/_44u0_p3_0.vqh" -#include "books/uncoupled/_44u0_p4_0.vqh" -#include "books/uncoupled/_44u0_p4_1.vqh" -#include "books/uncoupled/_44u0_p5_0.vqh" -#include "books/uncoupled/_44u0_p6_0.vqh" -#include "books/uncoupled/_44u0_p7_0.vqh" -#include "books/uncoupled/_44u0_p7_1.vqh" -#include "books/uncoupled/_44u0_p7_2.vqh" - -#include "books/uncoupled/_44u0_p0_r0.vqh" -#include "books/uncoupled/_44u0_p1_r0.vqh" - -#include "books/uncoupled/_44u0_p0_r1.vqh" -#include "books/uncoupled/_44u0_p1_r1.vqh" - -#include "books/uncoupled/_44u4_p1_0.vqh" -#include "books/uncoupled/_44u4_p2_0.vqh" -#include "books/uncoupled/_44u4_p3_0.vqh" -#include "books/uncoupled/_44u4_p4_0.vqh" -#include "books/uncoupled/_44u4_p5_0.vqh" -#include "books/uncoupled/_44u4_p6_0.vqh" -#include "books/uncoupled/_44u4_p7_0.vqh" -#include "books/uncoupled/_44u4_p7_1.vqh" -#include "books/uncoupled/_44u4_p8_0.vqh" -#include "books/uncoupled/_44u4_p8_1.vqh" -#include "books/uncoupled/_44u4_p9_0.vqh" -#include "books/uncoupled/_44u4_p9_1.vqh" -#include "books/uncoupled/_44u4_p9_2.vqh" - -#include "books/uncoupled/_44u4_p0_r0.vqh" -#include "books/uncoupled/_44u4_p1_r0.vqh" - -#include "books/uncoupled/_44u4_p0_r1.vqh" -#include "books/uncoupled/_44u4_p1_r1.vqh" - -#include "books/uncoupled/_44u7_p1_0.vqh" -#include "books/uncoupled/_44u7_p2_0.vqh" -#include "books/uncoupled/_44u7_p2_1.vqh" -#include "books/uncoupled/_44u7_p3_0.vqh" -#include "books/uncoupled/_44u7_p4_0.vqh" -#include "books/uncoupled/_44u7_p5_0.vqh" -#include "books/uncoupled/_44u7_p6_0.vqh" -#include "books/uncoupled/_44u7_p7_0.vqh" -#include "books/uncoupled/_44u7_p7_1.vqh" -#include "books/uncoupled/_44u7_p8_0.vqh" -#include "books/uncoupled/_44u7_p8_1.vqh" -#include "books/uncoupled/_44u7_p9_0.vqh" -#include "books/uncoupled/_44u7_p9_1.vqh" -#include "books/uncoupled/_44u7_p9_2.vqh" - -#include "books/uncoupled/_44u7_p0_r0.vqh" -#include "books/uncoupled/_44u7_p1_r0.vqh" - -#include "books/uncoupled/_44u7_p0_r1.vqh" -#include "books/uncoupled/_44u7_p1_r1.vqh" - - -static vorbis_residue_template _residue_template_44_uncoupled[11]={ - /* mode 0; 40/c-ish */ - {{&_residue_44_low_un, &_residue_44_low_un}, - {&_huff_book__44c0_short,&_huff_book__44c0_long}, - { {{0}, - {0,0,&_44u0_p1_0}, - {0,0,&_44u0_p2_0}, - {0,0,&_44u0_p3_0}, - {&_44u0_p4_0,&_44u0_p4_1}, - {0,0,&_44u0_p5_0}, - {0,0,&_44u0_p6_0}, - {&_44u0_p7_0,&_44u0_p7_1,&_44u0_p7_2}}, - }, - { {0} }, /* no stereo backfill in uncoupled modes */ - { {{&_44u0_p0_r0,&_44u0_p0_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}}, - } - }, - /* mode 1; 50-ish */ - {{&_residue_44_low_un, &_residue_44_low_un}, - {&_huff_book__44c1_short,&_huff_book__44c1_long}, - { {{0}, - {0,0,&_44u0_p1_0}, - {0,0,&_44u0_p2_0}, - {0,0,&_44u0_p3_0}, - {&_44u0_p4_0,&_44u0_p4_1}, - {0,0,&_44u0_p5_0}, - {0,0,&_44u0_p6_0}, - {&_44u0_p7_0,&_44u0_p7_1,&_44u0_p7_2}}, - }, - { {0} }, /* no stereo backfill in uncoupled modes */ - { {{&_44u0_p0_r0,&_44u0_p0_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}}, - } - }, - /* mode 2; 60-ish */ - {{&_residue_44_low_un, &_residue_44_low_un}, - {&_huff_book__44c2_short,&_huff_book__44c2_long}, - { {{0}, - {0,0,&_44u0_p1_0}, - {0,0,&_44u0_p2_0}, - {0,0,&_44u0_p3_0}, - {&_44u0_p4_0,&_44u0_p4_1}, - {0,0,&_44u0_p5_0}, - {0,0,&_44u0_p6_0}, - {&_44u0_p7_0,&_44u0_p7_1,&_44u0_p7_2}}, - }, - { {0} }, /* no stereo backfill in uncoupled modes */ - { {{&_44u0_p0_r0,&_44u0_p0_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}}, - } - }, - /* mode 3; 70-ish */ - {{&_residue_44_low_un, &_residue_44_low_un}, - {&_huff_book__44c3_short,&_huff_book__44c3_long}, - { {{0}, - {0,0,&_44u0_p1_0}, - {0,0,&_44u0_p2_0}, - {0,0,&_44u0_p3_0}, - {&_44u0_p4_0,&_44u0_p4_1}, - {0,0,&_44u0_p5_0}, - {0,0,&_44u0_p6_0}, - {&_44u0_p7_0,&_44u0_p7_1,&_44u0_p7_2}}, - }, - { {0} }, /* no stereo backfill in uncoupled modes */ - { {{&_44u0_p0_r0,&_44u0_p0_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}, - {&_44u0_p1_r0,&_44u0_p1_r1}}, - } - }, - /* mode 4; 80-ish */ - {{&_residue_44_mid, &_residue_44_mid}, - {&_huff_book__44c4_short,&_huff_book__44c4_long}, - { {{0}, - {0,0,&_44u4_p1_0}, - {0,0,&_44u4_p2_0}, - {0,0,&_44u4_p3_0}, - {0,0,&_44u4_p4_0}, - {0,0,&_44u4_p5_0}, - {0,0,&_44u4_p6_0}, - {&_44u4_p7_0,&_44u4_p7_1}, - {&_44u4_p8_0,&_44u4_p8_1}, - {&_44u4_p9_0,&_44u4_p9_1,&_44u4_p9_2}}, - }, - { {0} }, /* no stereo backfill in uncoupled modes */ - { {{&_44u4_p0_r0,&_44u4_p0_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}}, - } - }, - /* mode 5; 90-ish */ - {{&_residue_44_mid, &_residue_44_mid}, - {&_huff_book__44c5_short,&_huff_book__44c5_long}, - { {{0}, - {0,0,&_44u4_p1_0}, - {0,0,&_44u4_p2_0}, - {0,0,&_44u4_p3_0}, - {0,0,&_44u4_p4_0}, - {0,0,&_44u4_p5_0}, - {0,0,&_44u4_p6_0}, - {&_44u4_p7_0,&_44u4_p7_1}, - {&_44u4_p8_0,&_44u4_p8_1}, - {&_44u4_p9_0,&_44u4_p9_1,&_44u4_p9_2}}, - }, - { {0} }, /* no stereo backfill in uncoupled modes */ - { {{&_44u4_p0_r0,&_44u4_p0_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}}, - } - }, - /* mode 6; 100-ish */ - {{&_residue_44_mid, &_residue_44_mid}, - {&_huff_book__44c6_short,&_huff_book__44c6_long}, - { {{0}, - {0,0,&_44u4_p1_0}, - {0,0,&_44u4_p2_0}, - {0,0,&_44u4_p3_0}, - {0,0,&_44u4_p4_0}, - {0,0,&_44u4_p5_0}, - {0,0,&_44u4_p6_0}, - {&_44u4_p7_0,&_44u4_p7_1}, - {&_44u4_p8_0,&_44u4_p8_1}, - {&_44u4_p9_0,&_44u4_p9_1,&_44u4_p9_2}}, - }, - { {0} }, /* no stereo backfill in uncoupled modes */ - { {{&_44u4_p0_r0,&_44u4_p0_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}, - {&_44u4_p1_r0,&_44u4_p1_r1}}, - } - }, - /* mode 7 */ - {{&_residue_44_high_un, &_residue_44_high_un}, - {&_huff_book__44c7_short,&_huff_book__44c7_long}, - { {{0}, - {0,0,&_44u7_p1_0}, - {&_44u7_p2_0,&_44u7_p2_1}, - {0,0,&_44u7_p3_0}, - {0,0,&_44u7_p4_0}, - {0,0,&_44u7_p5_0}, - {0,0,&_44u7_p6_0}, - {&_44u7_p7_0,&_44u7_p7_1}, - {&_44u7_p8_0,&_44u7_p8_1}, - {&_44u7_p9_0,&_44u7_p9_1,&_44u7_p9_2}}, - }, - { {0} }, /* no stereo backfill in uncoupled modes */ - { {{&_44u7_p0_r0,&_44u7_p0_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}}, - } - }, - /* mode 8 */ - {{&_residue_44_high_un, &_residue_44_high_un}, - {&_huff_book__44c8_short,&_huff_book__44c8_long}, - { {{0}, - {0,0,&_44u7_p1_0}, - {&_44u7_p2_0,&_44u7_p2_1}, - {0,0,&_44u7_p3_0}, - {0,0,&_44u7_p4_0}, - {0,0,&_44u7_p5_0}, - {0,0,&_44u7_p6_0}, - {&_44u7_p7_0,&_44u7_p7_1}, - {&_44u7_p8_0,&_44u7_p8_1}, - {&_44u7_p9_0,&_44u7_p9_1,&_44u7_p9_2}}, - }, - { {0} }, /* no stereo backfill in uncoupled modes */ - { {{&_44u7_p0_r0,&_44u7_p0_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}}, - } - }, - /* mode 9 */ - {{&_residue_44_high_un, &_residue_44_high_un}, - {&_huff_book__44c9_short,&_huff_book__44c9_long}, - { {{0}, - {0,0,&_44u7_p1_0}, - {&_44u7_p2_0,&_44u7_p2_1}, - {0,0,&_44u7_p3_0}, - {0,0,&_44u7_p4_0}, - {0,0,&_44u7_p5_0}, - {0,0,&_44u7_p6_0}, - {&_44u7_p7_0,&_44u7_p7_1}, - {&_44u7_p8_0,&_44u7_p8_1}, - {&_44u7_p9_0,&_44u7_p9_1,&_44u7_p9_2}}, - }, - { {0} }, /* no stereo backfill in uncoupled modes */ - { {{&_44u7_p0_r0,&_44u7_p0_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}, - {&_44u7_p1_r0,&_44u7_p1_r1}}, - } - }, -}; - - - - - diff --git a/lib/os.h b/lib/os.h deleted file mode 100644 index a6d179e3..00000000 --- a/lib/os.h +++ /dev/null @@ -1,163 +0,0 @@ -#ifndef _OS_H -#define _OS_H -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: #ifdef jail to whip a few platforms into the UNIX ideal. - last mod: $Id: os.h,v 1.28 2001/12/19 01:08:14 xiphmont Exp $ - - ********************************************************************/ - -#include <math.h> -#include <ogg/os_types.h> - -#ifndef _V_IFDEFJAIL_H_ -# define _V_IFDEFJAIL_H_ - -# ifdef __GNUC__ -# define STIN static __inline__ -# elif _WIN32 -# define STIN static __inline -#else -# define STIN static -#endif - -#ifndef M_PI -# define M_PI (3.1415926536f) -#endif - -#ifdef _WIN32 -# include <malloc.h> -# define rint(x) (floor((x)+0.5f)) -# define NO_FLOAT_MATH_LIB -# define FAST_HYPOT(a, b) sqrt((a)*(a) + (b)*(b)) -#endif - -#ifdef HAVE_SQRTF -# define sqrt sqrtf -#endif -#ifdef HAVE_LOGF -# define log logf -#endif -#ifdef HAVE_EXPF -# define exp expf -#endif -#ifdef HAVE_ACOSF -# define acos acosf -#endif -#ifdef HAVE_ATANF -# define atan atanf -#endif -#ifdef HAVE_FREXPF -# define frexp frexpf -#endif -#ifdef HAVE_RINTF -# define rint rintf -#endif - -#ifndef FAST_HYPOT -# define FAST_HYPOT hypot -#endif - -#endif - -#ifdef HAVE_ALLOCA_H -# include <alloca.h> -#endif - -#ifdef USE_MEMORY_H -# include <memory.h> -#endif - -#ifndef min -# define min(x,y) ((x)>(y)?(y):(x)) -#endif - -#ifndef max -# define max(x,y) ((x)<(y)?(y):(x)) -#endif - -#if defined(__i386__) && defined(__GNUC__) && !defined(__BEOS__) -# define VORBIS_FPU_CONTROL -/* both GCC and MSVC are kinda stupid about rounding/casting to int. - Because of encapsulation constraints (GCC can't see inside the asm - block and so we end up doing stupid things like a store/load that - is collectively a noop), we do it this way */ - -/* we must set up the fpu before this works!! */ - -typedef ogg_int16_t vorbis_fpu_control; - -static inline void vorbis_fpu_setround(vorbis_fpu_control *fpu){ - ogg_int16_t ret; - ogg_int16_t temp; - __asm__ __volatile__("fnstcw %0\n\t" - "movw %0,%%dx\n\t" - "orw $62463,%%dx\n\t" - "movw %%dx,%1\n\t" - "fldcw %1\n\t":"=m"(ret):"m"(temp): "dx"); - *fpu=ret; -} - -static inline void vorbis_fpu_restore(vorbis_fpu_control fpu){ - __asm__ __volatile__("fldcw %0":: "m"(fpu)); -} - -/* assumes the FPU is in round mode! */ -static inline int vorbis_ftoi(double f){ /* yes, double! Otherwise, - we get extra fst/fld to - truncate precision */ - int i; - __asm__("fistl %0": "=m"(i) : "t"(f)); - return(i); -} -#endif - - -#if defined(_WIN32) && !defined(__GNUC__) -# define VORBIS_FPU_CONTROL - -typedef ogg_int16_t vorbis_fpu_control; - -static __inline int vorbis_ftoi(double f){ - int i; - __asm{ - fld f - fistp i - } - return i; -} - -static __inline void vorbis_fpu_setround(vorbis_fpu_control *fpu){ -} - -static __inline void vorbis_fpu_restore(vorbis_fpu_control fpu){ -} - -#endif - - -#ifndef VORBIS_FPU_CONTROL - -typedef int vorbis_fpu_control; - -static int vorbis_ftoi(double f){ - return (int)(f+.5); -} - -/* We don't have special code for this compiler/arch, so do it the slow way */ -# define vorbis_fpu_setround(vorbis_fpu_control) {} -# define vorbis_fpu_restore(vorbis_fpu_control) {} - -#endif - -#endif /* _OS_H */ diff --git a/lib/psy.c b/lib/psy.c deleted file mode 100644 index 0fdda526..00000000 --- a/lib/psy.c +++ /dev/null @@ -1,1008 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: psychoacoustics not including preecho - last mod: $Id: psy.c,v 1.64 2001/12/22 09:40:39 xiphmont Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <math.h> -#include <string.h> -#include "vorbis/codec.h" -#include "codec_internal.h" - -#include "masking.h" -#include "psy.h" -#include "os.h" -#include "lpc.h" -#include "smallft.h" -#include "scales.h" -#include "misc.h" - -#define NEGINF -9999.f - -/* Why Bark scale for encoding but not masking computation? Because - masking has a strong harmonic dependency */ - -vorbis_look_psy_global *_vp_global_look(vorbis_info *vi){ - codec_setup_info *ci=vi->codec_setup; - vorbis_info_psy_global *gi=&ci->psy_g_param; - vorbis_look_psy_global *look=_ogg_calloc(1,sizeof(*look)); - - look->channels=vi->channels; - - look->ampmax=-9999.; - look->gi=gi; - return(look); -} - -void _vp_global_free(vorbis_look_psy_global *look){ - if(look){ - memset(look,0,sizeof(*look)); - _ogg_free(look); - } -} - -void _vi_gpsy_free(vorbis_info_psy_global *i){ - if(i){ - memset(i,0,sizeof(*i)); - _ogg_free(i); - } -} - -void _vi_psy_free(vorbis_info_psy *i){ - if(i){ - memset(i,0,sizeof(*i)); - _ogg_free(i); - } -} - -vorbis_info_psy *_vi_psy_copy(vorbis_info_psy *i){ - vorbis_info_psy *ret=_ogg_malloc(sizeof(*ret)); - memcpy(ret,i,sizeof(*ret)); - return(ret); -} - -/* Set up decibel threshold slopes on a Bark frequency scale */ -/* ATH is the only bit left on a Bark scale. No reason to change it - right now */ -static void set_curve(float *ref,float *c,int n, float crate){ - int i,j=0; - - for(i=0;i<MAX_BARK-1;i++){ - int endpos=rint(fromBARK((float)(i+1))*2*n/crate); - float base=ref[i]; - if(j<endpos){ - float delta=(ref[i+1]-base)/(endpos-j); - for(;j<endpos && j<n;j++){ - c[j]=base; - base+=delta; - } - } - } -} - -static void min_curve(float *c, - float *c2){ - int i; - for(i=0;i<EHMER_MAX;i++)if(c2[i]<c[i])c[i]=c2[i]; -} -static void max_curve(float *c, - float *c2){ - int i; - for(i=0;i<EHMER_MAX;i++)if(c2[i]>c[i])c[i]=c2[i]; -} - -static void attenuate_curve(float *c,float att){ - int i; - for(i=0;i<EHMER_MAX;i++) - c[i]+=att; -} - -static void interp_curve(float *c,float *c1,float *c2,float del){ - int i; - for(i=0;i<EHMER_MAX;i++) - c[i]=c2[i]*del+c1[i]*(1.f-del); -} - -extern int analysis_noisy; -static void setup_curve(float **c, - int band, - float *curveatt_dB){ - int i,j; - float ath[EHMER_MAX]; - float tempc[P_LEVELS][EHMER_MAX]; - float *ATH=ATH_Bark_dB_lspconservative; /* just for limiting here */ - - memcpy(c[0]+2,c[4]+2,sizeof(*c[0])*EHMER_MAX); - memcpy(c[2]+2,c[4]+2,sizeof(*c[2])*EHMER_MAX); - - /* we add back in the ATH to avoid low level curves falling off to - -infinity and unnecessarily cutting off high level curves in the - curve limiting (last step). But again, remember... a half-band's - settings must be valid over the whole band, and it's better to - mask too little than too much, so be pessimistical. */ - - for(i=0;i<EHMER_MAX;i++){ - float oc_min=band*.5+(i-EHMER_OFFSET)*.125; - float oc_max=band*.5+(i-EHMER_OFFSET+1)*.125; - float bark=toBARK(fromOC(oc_min)); - int ibark=floor(bark); - float del=bark-ibark; - float ath_min,ath_max; - - if(ibark<26) - ath_min=ATH[ibark]*(1.f-del)+ATH[ibark+1]*del; - else - ath_min=ATH[25]; - - bark=toBARK(fromOC(oc_max)); - ibark=floor(bark); - del=bark-ibark; - - if(ibark<26) - ath_max=ATH[ibark]*(1.f-del)+ATH[ibark+1]*del; - else - ath_max=ATH[25]; - - ath[i]=min(ath_min,ath_max); - } - - /* The c array comes in as dB curves at 20 40 60 80 100 dB. - interpolate intermediate dB curves */ - for(i=1;i<P_LEVELS;i+=2){ - interp_curve(c[i]+2,c[i-1]+2,c[i+1]+2,.5); - } - - /* normalize curves so the driving amplitude is 0dB */ - /* make temp curves with the ATH overlayed */ - for(i=0;i<P_LEVELS;i++){ - attenuate_curve(c[i]+2,curveatt_dB[i]); - memcpy(tempc[i],ath,EHMER_MAX*sizeof(*tempc[i])); - attenuate_curve(tempc[i],-i*10.f); - max_curve(tempc[i],c[i]+2); - } - - /* Now limit the louder curves. - - the idea is this: We don't know what the playback attenuation - will be; 0dB SL moves every time the user twiddles the volume - knob. So that means we have to use a single 'most pessimal' curve - for all masking amplitudes, right? Wrong. The *loudest* sound - can be in (we assume) a range of ...+100dB] SL. However, sounds - 20dB down will be in a range ...+80], 40dB down is from ...+60], - etc... */ - - for(j=1;j<P_LEVELS;j++){ - min_curve(tempc[j],tempc[j-1]); - min_curve(c[j]+2,tempc[j]); - } - - /* add fenceposts */ - for(j=0;j<P_LEVELS;j++){ - - for(i=0;i<EHMER_OFFSET;i++) - if(c[j][i+2]>-200.f)break; - c[j][0]=i; - - for(i=EHMER_MAX-1;i>EHMER_OFFSET+1;i--) - if(c[j][i+2]>-200.f) - break; - c[j][1]=i; - - } -} - -void _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi, - vorbis_info_psy_global *gi,int n,long rate){ - long i,j,k,lo=-99,hi=0; - long maxoc; - memset(p,0,sizeof(*p)); - - - p->eighth_octave_lines=gi->eighth_octave_lines; - p->shiftoc=rint(log(gi->eighth_octave_lines*8.f)/log(2.f))-1; - - p->firstoc=toOC(.25f*rate/n)*(1<<(p->shiftoc+1))-gi->eighth_octave_lines; - maxoc=toOC((n*.5f-.25f)*rate/n)*(1<<(p->shiftoc+1))+.5f; - p->total_octave_lines=maxoc-p->firstoc+1; - - if(vi->ath) - p->ath=_ogg_malloc(n*sizeof(*p->ath)); - p->octave=_ogg_malloc(n*sizeof(*p->octave)); - p->bark=_ogg_malloc(n*sizeof(*p->bark)); - p->vi=vi; - p->n=n; - p->rate=rate; - - /* set up the lookups for a given blocksize and sample rate */ - if(vi->ath) - set_curve(vi->ath, p->ath,n,(float)rate); - for(i=0;i<n;i++){ - float bark=toBARK(rate/(2*n)*i); - - for(;lo+vi->noisewindowlomin<i && - toBARK(rate/(2*n)*lo)<(bark-vi->noisewindowlo);lo++); - - for(;hi<n && (hi<i+vi->noisewindowhimin || - toBARK(rate/(2*n)*hi)<(bark+vi->noisewindowhi));hi++); - - p->bark[i]=(lo<<16)+hi; - - } - - for(i=0;i<n;i++) - p->octave[i]=toOC((i*.5f+.25f)*rate/n)*(1<<(p->shiftoc+1))+.5f; - - p->tonecurves=_ogg_malloc(P_BANDS*sizeof(*p->tonecurves)); - p->noisethresh=_ogg_malloc(n*sizeof(*p->noisethresh)); - p->noiseoffset=_ogg_malloc(n*sizeof(*p->noiseoffset)); - for(i=0;i<P_BANDS;i++) - p->tonecurves[i]=_ogg_malloc(P_LEVELS*sizeof(*p->tonecurves[i])); - - for(i=0;i<P_BANDS;i++) - for(j=0;j<P_LEVELS;j++) - p->tonecurves[i][j]=_ogg_malloc((EHMER_MAX+2)*sizeof(*p->tonecurves[i][j])); - - - /* OK, yeah, this was a silly way to do it */ - memcpy(p->tonecurves[0][4]+2,tone_125_40dB_SL,sizeof(*p->tonecurves[0][4])*EHMER_MAX); - memcpy(p->tonecurves[0][6]+2,tone_125_60dB_SL,sizeof(*p->tonecurves[0][6])*EHMER_MAX); - memcpy(p->tonecurves[0][8]+2,tone_125_80dB_SL,sizeof(*p->tonecurves[0][8])*EHMER_MAX); - memcpy(p->tonecurves[0][10]+2,tone_125_100dB_SL,sizeof(*p->tonecurves[0][10])*EHMER_MAX); - - memcpy(p->tonecurves[2][4]+2,tone_125_40dB_SL,sizeof(*p->tonecurves[2][4])*EHMER_MAX); - memcpy(p->tonecurves[2][6]+2,tone_125_60dB_SL,sizeof(*p->tonecurves[2][6])*EHMER_MAX); - memcpy(p->tonecurves[2][8]+2,tone_125_80dB_SL,sizeof(*p->tonecurves[2][8])*EHMER_MAX); - memcpy(p->tonecurves[2][10]+2,tone_125_100dB_SL,sizeof(*p->tonecurves[2][10])*EHMER_MAX); - - memcpy(p->tonecurves[4][4]+2,tone_250_40dB_SL,sizeof(*p->tonecurves[4][4])*EHMER_MAX); - memcpy(p->tonecurves[4][6]+2,tone_250_60dB_SL,sizeof(*p->tonecurves[4][6])*EHMER_MAX); - memcpy(p->tonecurves[4][8]+2,tone_250_80dB_SL,sizeof(*p->tonecurves[4][8])*EHMER_MAX); - memcpy(p->tonecurves[4][10]+2,tone_250_100dB_SL,sizeof(*p->tonecurves[4][10])*EHMER_MAX); - - memcpy(p->tonecurves[6][4]+2,tone_500_40dB_SL,sizeof(*p->tonecurves[6][4])*EHMER_MAX); - memcpy(p->tonecurves[6][6]+2,tone_500_60dB_SL,sizeof(*p->tonecurves[6][6])*EHMER_MAX); - memcpy(p->tonecurves[6][8]+2,tone_500_80dB_SL,sizeof(*p->tonecurves[6][8])*EHMER_MAX); - memcpy(p->tonecurves[6][10]+2,tone_500_100dB_SL,sizeof(*p->tonecurves[6][10])*EHMER_MAX); - - memcpy(p->tonecurves[8][4]+2,tone_1000_40dB_SL,sizeof(*p->tonecurves[8][4])*EHMER_MAX); - memcpy(p->tonecurves[8][6]+2,tone_1000_60dB_SL,sizeof(*p->tonecurves[8][6])*EHMER_MAX); - memcpy(p->tonecurves[8][8]+2,tone_1000_80dB_SL,sizeof(*p->tonecurves[8][8])*EHMER_MAX); - memcpy(p->tonecurves[8][10]+2,tone_1000_100dB_SL,sizeof(*p->tonecurves[8][10])*EHMER_MAX); - - memcpy(p->tonecurves[10][4]+2,tone_2000_40dB_SL,sizeof(*p->tonecurves[10][4])*EHMER_MAX); - memcpy(p->tonecurves[10][6]+2,tone_2000_60dB_SL,sizeof(*p->tonecurves[10][6])*EHMER_MAX); - memcpy(p->tonecurves[10][8]+2,tone_2000_80dB_SL,sizeof(*p->tonecurves[10][8])*EHMER_MAX); - memcpy(p->tonecurves[10][10]+2,tone_2000_100dB_SL,sizeof(*p->tonecurves[10][10])*EHMER_MAX); - - memcpy(p->tonecurves[12][4]+2,tone_4000_40dB_SL,sizeof(*p->tonecurves[12][4])*EHMER_MAX); - memcpy(p->tonecurves[12][6]+2,tone_4000_60dB_SL,sizeof(*p->tonecurves[12][6])*EHMER_MAX); - memcpy(p->tonecurves[12][8]+2,tone_4000_80dB_SL,sizeof(*p->tonecurves[12][8])*EHMER_MAX); - memcpy(p->tonecurves[12][10]+2,tone_4000_100dB_SL,sizeof(*p->tonecurves[12][10])*EHMER_MAX); - - memcpy(p->tonecurves[14][4]+2,tone_8000_40dB_SL,sizeof(*p->tonecurves[14][4])*EHMER_MAX); - memcpy(p->tonecurves[14][6]+2,tone_8000_60dB_SL,sizeof(*p->tonecurves[14][6])*EHMER_MAX); - memcpy(p->tonecurves[14][8]+2,tone_8000_80dB_SL,sizeof(*p->tonecurves[14][8])*EHMER_MAX); - memcpy(p->tonecurves[14][10]+2,tone_8000_100dB_SL,sizeof(*p->tonecurves[14][10])*EHMER_MAX); - - memcpy(p->tonecurves[16][4]+2,tone_16000_40dB_SL,sizeof(*p->tonecurves[16][4])*EHMER_MAX); - memcpy(p->tonecurves[16][6]+2,tone_16000_60dB_SL,sizeof(*p->tonecurves[16][6])*EHMER_MAX); - memcpy(p->tonecurves[16][8]+2,tone_16000_80dB_SL,sizeof(*p->tonecurves[16][8])*EHMER_MAX); - memcpy(p->tonecurves[16][10]+2,tone_16000_100dB_SL,sizeof(*p->tonecurves[16][10])*EHMER_MAX); - - for(i=0;i<P_BANDS;i+=2) - for(j=4;j<P_LEVELS;j+=2) - for(k=2;k<EHMER_MAX+2;k++) - p->tonecurves[i][j][k]+=vi->tone_masteratt; - - /* interpolate curves between */ - for(i=1;i<P_BANDS;i+=2) - for(j=4;j<P_LEVELS;j+=2){ - memcpy(p->tonecurves[i][j]+2,p->tonecurves[i-1][j]+2,EHMER_MAX*sizeof(*p->tonecurves[i][j])); - /*interp_curve(p->tonecurves[i][j], - p->tonecurves[i-1][j], - p->tonecurves[i+1][j],.5);*/ - min_curve(p->tonecurves[i][j]+2,p->tonecurves[i+1][j]+2); - } - - /* set up the final curves */ - for(i=0;i<P_BANDS;i++) - setup_curve(p->tonecurves[i],i,vi->toneatt.block[i]); - - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_63Hz",i,p->tonecurves[0][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_88Hz",i,p->tonecurves[1][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_125Hz",i,p->tonecurves[2][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_170Hz",i,p->tonecurves[3][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_250Hz",i,p->tonecurves[4][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_350Hz",i,p->tonecurves[5][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_500Hz",i,p->tonecurves[6][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_700Hz",i,p->tonecurves[7][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_1kHz",i,p->tonecurves[8][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_1.4Hz",i,p->tonecurves[9][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_2kHz",i,p->tonecurves[10][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_2.4kHz",i,p->tonecurves[11][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_4kHz",i,p->tonecurves[12][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_5.6kHz",i,p->tonecurves[13][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_8kHz",i,p->tonecurves[14][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_11.5kHz",i,p->tonecurves[15][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("curve_16kHz",i,p->tonecurves[16][i]+2,EHMER_MAX,0,0); - - if(vi->curvelimitp){ - /* value limit the tonal masking curves; the peakatt not only - optionally specifies maximum dynamic depth, but also - limits the masking curves to a minimum depth */ - for(i=0;i<P_BANDS;i++) - for(j=0;j<P_LEVELS;j++){ - for(k=2;k<EHMER_OFFSET+2+vi->curvelimitp;k++) - if(p->tonecurves[i][j][k]> vi->peakatt.block[i][j]) - p->tonecurves[i][j][k]= vi->peakatt.block[i][j]; - else - break; - } - } - - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_63Hz",i,p->tonecurves[0][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_88Hz",i,p->tonecurves[1][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_125Hz",i,p->tonecurves[2][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_170Hz",i,p->tonecurves[3][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_250Hz",i,p->tonecurves[4][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_350Hz",i,p->tonecurves[5][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_500Hz",i,p->tonecurves[6][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_700Hz",i,p->tonecurves[7][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_1kHz",i,p->tonecurves[8][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_1.4Hz",i,p->tonecurves[9][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_2kHz",i,p->tonecurves[10][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_2.4kHz",i,p->tonecurves[11][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_4kHz",i,p->tonecurves[12][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_5.6kHz",i,p->tonecurves[13][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_8kHz",i,p->tonecurves[14][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_11.5kHz",i,p->tonecurves[15][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("licurve_16kHz",i,p->tonecurves[16][i]+2,EHMER_MAX,0,0); - - if(vi->peakattp) /* we limit maximum depth only optionally */ - for(i=0;i<P_BANDS;i++) - for(j=0;j<P_LEVELS;j++) - if(p->tonecurves[i][j][EHMER_OFFSET+2]< vi->peakatt.block[i][j]) - p->tonecurves[i][j][EHMER_OFFSET+2]= vi->peakatt.block[i][j]; - - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_63Hz",i,p->tonecurves[0][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_88Hz",i,p->tonecurves[1][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_125Hz",i,p->tonecurves[2][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_170Hz",i,p->tonecurves[3][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_250Hz",i,p->tonecurves[4][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_350Hz",i,p->tonecurves[5][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_500Hz",i,p->tonecurves[6][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_700Hz",i,p->tonecurves[7][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_1kHz",i,p->tonecurves[8][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_1.4Hz",i,p->tonecurves[9][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_2kHz",i,p->tonecurves[10][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_2.4kHz",i,p->tonecurves[11][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_4kHz",i,p->tonecurves[12][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_5.6kHz",i,p->tonecurves[13][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_8kHz",i,p->tonecurves[14][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_11.5kHz",i,p->tonecurves[15][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("pcurve_16kHz",i,p->tonecurves[16][i]+2,EHMER_MAX,0,0); - - /* but guarding is mandatory */ - for(i=0;i<P_BANDS;i++) - for(j=0;j<P_LEVELS;j++) - if(p->tonecurves[i][j][EHMER_OFFSET+2]< vi->tone_guard) - p->tonecurves[i][j][EHMER_OFFSET+2]= vi->tone_guard; - - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_63Hz",i,p->tonecurves[0][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_88Hz",i,p->tonecurves[1][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_125Hz",i,p->tonecurves[2][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_170Hz",i,p->tonecurves[3][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_250Hz",i,p->tonecurves[4][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_350Hz",i,p->tonecurves[5][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_500Hz",i,p->tonecurves[6][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_700Hz",i,p->tonecurves[7][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_1kHz",i,p->tonecurves[8][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_1.4Hz",i,p->tonecurves[9][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_2kHz",i,p->tonecurves[10][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_2.4kHz",i,p->tonecurves[11][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_4kHz",i,p->tonecurves[12][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_5.6kHz",i,p->tonecurves[13][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_8kHz",i,p->tonecurves[14][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_11.5kHz",i,p->tonecurves[15][i]+2,EHMER_MAX,0,0); - for(i=0;i<P_LEVELS;i++) - _analysis_output("fcurve_16kHz",i,p->tonecurves[16][i]+2,EHMER_MAX,0,0); - - /* set up rolling noise median */ - for(i=0;i<n;i++){ - float halfoc=toOC((i+.5)*rate/(2.*n))*2.; - int inthalfoc; - float del; - - if(halfoc<0)halfoc=0; - if(halfoc>=P_BANDS-1)halfoc=P_BANDS-1; - inthalfoc=(int)halfoc; - del=halfoc-inthalfoc; - p->noiseoffset[i]= - p->vi->noiseoff[inthalfoc]*(1.-del) + - p->vi->noiseoff[inthalfoc+1]*del; - } - - analysis_noisy=1; - _analysis_output("noiseoff",0,p->noiseoffset,n,1,0); - _analysis_output("noisethresh",0,p->noisethresh,n,1,0); - analysis_noisy=1; - -} - -void _vp_psy_clear(vorbis_look_psy *p){ - int i,j; - if(p){ - if(p->ath)_ogg_free(p->ath); - if(p->octave)_ogg_free(p->octave); - if(p->bark)_ogg_free(p->bark); - if(p->tonecurves){ - for(i=0;i<P_BANDS;i++){ - for(j=0;j<P_LEVELS;j++){ - _ogg_free(p->tonecurves[i][j]); - } - _ogg_free(p->tonecurves[i]); - } - _ogg_free(p->tonecurves); - } - _ogg_free(p->noiseoffset); - _ogg_free(p->noisethresh); - memset(p,0,sizeof(*p)); - } -} - -/* octave/(8*eighth_octave_lines) x scale and dB y scale */ -static void seed_curve(float *seed, - const float **curves, - float amp, - int oc, int n, - int linesper,float dBoffset){ - int i,post1; - int seedptr; - const float *posts,*curve; - - int choice=(int)((amp+dBoffset)*.1f); - choice=max(choice,0); - choice=min(choice,P_LEVELS-1); - posts=curves[choice]; - curve=posts+2; - post1=(int)posts[1]; - seedptr=oc+(posts[0]-16)*linesper-(linesper>>1); - - for(i=posts[0];i<post1;i++){ - if(seedptr>0){ - float lin=amp+curve[i]; - if(seed[seedptr]<lin)seed[seedptr]=lin; - } - seedptr+=linesper; - if(seedptr>=n)break; - } -} - -static void seed_loop(vorbis_look_psy *p, - const float ***curves, - const float *f, - const float *flr, - float *seed, - float specmax){ - vorbis_info_psy *vi=p->vi; - long n=p->n,i; - float dBoffset=vi->max_curve_dB-specmax; - - /* prime the working vector with peak values */ - - for(i=0;i<n;i++){ - float max=f[i]; - long oc=p->octave[i]; - while(i+1<n && p->octave[i+1]==oc){ - i++; - if(f[i]>max)max=f[i]; - } - - if(max+6.f>flr[i]){ - oc=oc>>p->shiftoc; - if(oc>=P_BANDS)oc=P_BANDS-1; - if(oc<0)oc=0; - seed_curve(seed, - curves[oc], - max, - p->octave[i]-p->firstoc, - p->total_octave_lines, - p->eighth_octave_lines, - dBoffset); - } - } -} - -static void seed_chase(float *seeds, int linesper, long n){ - long *posstack=alloca(n*sizeof(*posstack)); - float *ampstack=alloca(n*sizeof(*ampstack)); - long stack=0; - long pos=0; - long i; - - for(i=0;i<n;i++){ - if(stack<2){ - posstack[stack]=i; - ampstack[stack++]=seeds[i]; - }else{ - while(1){ - if(seeds[i]<ampstack[stack-1]){ - posstack[stack]=i; - ampstack[stack++]=seeds[i]; - break; - }else{ - if(i<posstack[stack-1]+linesper){ - if(stack>1 && ampstack[stack-1]<=ampstack[stack-2] && - i<posstack[stack-2]+linesper){ - /* we completely overlap, making stack-1 irrelevant. pop it */ - stack--; - continue; - } - } - posstack[stack]=i; - ampstack[stack++]=seeds[i]; - break; - - } - } - } - } - - /* the stack now contains only the positions that are relevant. Scan - 'em straight through */ - - for(i=0;i<stack;i++){ - long endpos; - if(i<stack-1 && ampstack[i+1]>ampstack[i]){ - endpos=posstack[i+1]; - }else{ - endpos=posstack[i]+linesper+1; /* +1 is important, else bin 0 is - discarded in short frames */ - } - if(endpos>n)endpos=n; - for(;pos<endpos;pos++) - seeds[pos]=ampstack[i]; - } - - /* there. Linear time. I now remember this was on a problem set I - had in Grad Skool... I didn't solve it at the time ;-) */ - -} - -/* bleaugh, this is more complicated than it needs to be */ -static void max_seeds(vorbis_look_psy *p, - float *seed, - float *flr){ - long n=p->total_octave_lines; - int linesper=p->eighth_octave_lines; - long linpos=0; - long pos; - - seed_chase(seed,linesper,n); /* for masking */ - - pos=p->octave[0]-p->firstoc-(linesper>>1); - while(linpos+1<p->n){ - float minV=seed[pos]; - long end=((p->octave[linpos]+p->octave[linpos+1])>>1)-p->firstoc; - if(minV>p->vi->tone_abs_limit)minV=p->vi->tone_abs_limit; - while(pos+1<=end){ - pos++; - if((seed[pos]>NEGINF && seed[pos]<minV) || minV==NEGINF) - minV=seed[pos]; - } - - /* seed scale is log. Floor is linear. Map back to it */ - end=pos+p->firstoc; - for(;linpos<p->n && p->octave[linpos]<=end;linpos++) - if(flr[linpos]<minV)flr[linpos]=minV; - } - - { - float minV=seed[p->total_octave_lines-1]; - for(;linpos<p->n;linpos++) - if(flr[linpos]<minV)flr[linpos]=minV; - } - -} - -static void bark_noise_hybridmp(int n,const long *b, - const float *f, - float *noise, - const float offset, - const int fixed){ - long i,hi=b[0]>>16,lo=b[0]>>16,hif=0,lof=0; - double xa=0,xb=0; - double ya=0,yb=0; - double x2a=0,x2b=0; - double xya=0,xyb=0; - double na=0,nb=0; - - for(i=0;i<n;i++){ - if(hi<n){ - /* find new lo/hi */ - int bi=b[i]&0xffffL; - for(;hi<bi;hi++){ - int ii=(hi<0?-hi:hi); - double bin=(f[ii]<-offset?1.:f[ii]+offset); - double nn= bin*bin; - na += nn; - xa += hi*nn; - ya += bin*nn; - x2a += hi*hi*nn; - xya += hi*bin*nn; - } - bi=b[i]>>16; - for(;lo<bi;lo++){ - int ii=(lo<0?-lo:lo); - double bin=(f[ii]<-offset?1.:f[ii]+offset); - double nn= bin*bin; - na -= nn; - xa -= lo*nn; - ya -= bin*nn; - x2a -= lo*lo*nn; - xya -= lo*bin*nn; - } - } - - if(hif<n && fixed>0){ - int bi=i+fixed/2; - if(bi>n)bi=n; - - for(;hif<bi;hif++){ - int ii=(hif<0?-hif:hif); - double bin=(f[ii]<-offset?1.:f[ii]+offset); - double nn= bin*bin; - nb += nn; - xb += hif*nn; - yb += bin*nn; - x2b += hif*hif*nn; - xyb += hif*bin*nn; - } - bi=i-(fixed+1)/2; - for(;lof<bi;lof++){ - int ii=(lof<0?-lof:lof); - double bin=(f[ii]<-offset?1.:f[ii]+offset); - double nn= bin*bin; - nb -= nn; - xb -= lof*nn; - yb -= bin*nn; - x2b -= lof*lof*nn; - xyb -= lof*bin*nn; - } - } - - { - double va=0.f; - - if(na>2){ - double denom=1./(na*x2a-xa*xa); - double a=(ya*x2a-xya*xa)*denom; - double b=(na*xya-xa*ya)*denom; - va=a+b*i; - } - if(va<0.)va=0.; - - if(fixed>0){ - double vb=0.f; - - if(nb>2){ - double denomf=1./(nb*x2b-xb*xb); - double af=(yb*x2b-xyb*xb)*denomf; - double bf=(nb*xyb-xb*yb)*denomf; - vb=af+bf*i; - } - if(vb<0.)vb=0.; - if(va>vb && vb>0.)va=vb; - - } - - noise[i]=va-offset; - } - } -} - - -void _vp_remove_floor(vorbis_look_psy *p, - float *mdct, - float *codedflr, - float *residue){ - int i,n=p->n; - - for(i=0;i<n;i++) - if(mdct[i]!=0.f) - residue[i]=mdct[i]/codedflr[i]; - else - residue[i]=0.f; -} - - -void _vp_compute_mask(vorbis_look_psy *p, - float *logfft, - float *logmdct, - float *logmask, - float global_specmax, - float local_specmax, - float bitrate_noise_offset){ - int i,n=p->n; - static int seq=0; - - float *seed=alloca(sizeof(*seed)*p->total_octave_lines); - for(i=0;i<p->total_octave_lines;i++)seed[i]=NEGINF; - - /* noise masking */ - if(p->vi->noisemaskp){ - float *work=alloca(n*sizeof(*work)); - - bark_noise_hybridmp(n,p->bark,logmdct,logmask, - 140.,-1); - - for(i=0;i<n;i++)work[i]=logmdct[i]-logmask[i]; - - bark_noise_hybridmp(n,p->bark,work,logmask,0., - p->vi->noisewindowfixed); - - for(i=0;i<n;i++)work[i]=logmdct[i]-work[i]; - - /* work[i] holds the median line (.5), logmask holds the upper - envelope line (1.) */ - _analysis_output("noisemedian",seq,work,n,1,0); - - for(i=0;i<n;i++)logmask[i]+=work[i]; - _analysis_output("noiseenvelope",seq,logmask,n,1,0); - for(i=0;i<n;i++)logmask[i]-=work[i]; - - for(i=0;i<n;i++){ - int dB=logmask[i]+.5; - if(dB>=NOISE_COMPAND_LEVELS)dB=NOISE_COMPAND_LEVELS-1; - logmask[i]= work[i]+p->vi->noisecompand[dB]+p->noiseoffset[i]+bitrate_noise_offset; - if(logmask[i]>p->vi->noisemaxsupp)logmask[i]=p->vi->noisemaxsupp; - } - _analysis_output("noise",seq,logmask,n,1,0); - - }else{ - for(i=0;i<n;i++)logmask[i]=NEGINF; - } - - /* set the ATH (floating below localmax, not global max by a - specified att) */ - if(p->vi->ath){ - float att=local_specmax+p->vi->ath_adjatt; - if(att<p->vi->ath_maxatt)att=p->vi->ath_maxatt; - - for(i=0;i<n;i++){ - float av=p->ath[i]+att; - if(av>logmask[i])logmask[i]=av; - } - } - - /* tone masking */ - seed_loop(p,(const float ***)p->tonecurves,logfft,logmask,seed,global_specmax); - max_seeds(p,seed,logmask); - - /* doing this here is clean, but we need to find a faster way to do - it than to just tack it on */ - - for(i=0;i<n;i++)if(logmdct[i]>=logmask[i])break; - if(i==n) - for(i=0;i<n;i++)logmask[i]=NEGINF; - else - for(i=0;i<n;i++) - logfft[i]=max(logmdct[i],logfft[i]); - - seq++; - -} - -float _vp_ampmax_decay(float amp,vorbis_dsp_state *vd){ - vorbis_info *vi=vd->vi; - codec_setup_info *ci=vi->codec_setup; - vorbis_info_psy_global *gi=&ci->psy_g_param; - - int n=ci->blocksizes[vd->W]/2; - float secs=(float)n/vi->rate; - - amp+=secs*gi->ampmax_att_per_sec; - if(amp<-9999)amp=-9999; - return(amp); -} - -static void couple_lossless(float A, float B, - float granule,float igranule, - float *mag, float *ang, - int flip_p){ - - if(fabs(A)>fabs(B)){ - A=rint(A*igranule)*granule; /* must be done *after* the comparison */ - B=rint(B*igranule)*granule; - - *mag=A; *ang=(A>0.f?A-B:B-A); - }else{ - A=rint(A*igranule)*granule; - B=rint(B*igranule)*granule; - - *mag=B; *ang=(B>0.f?A-B:B-A); - } - - if(flip_p && *ang>fabs(*mag)*1.9999f){ - *ang= -fabs(*mag)*2.f; - *mag= -*mag; - } -} - -static void couple_point(float A, float B, float fA, float fB, - float granule,float igranule, - float fmag, float *mag, float *ang){ - - float origmag=FAST_HYPOT(A*fA,B*fB),corr; - - if(fmag!=0.f){ - - if(fabs(A)>fabs(B)){ - *mag=A; - }else{ - *mag=B; - } - - corr=origmag/FAST_HYPOT(fmag*fA,fmag*fB); - *mag=rint(*mag*corr*igranule)*granule; - *ang=0.f; - - }else{ - *mag=0.f; - *ang=0.f; - } -} - - -void _vp_quantize_couple(vorbis_look_psy *p, - vorbis_info_mapping0 *vi, - float **pcm, - float **sofar, - float **quantized, - int *nonzero, - int passno){ - - int i,j,k,n=p->n; - vorbis_info_psy *info=p->vi; - - /* perform any requested channel coupling */ - for(i=0;i<vi->coupling_steps;i++){ - float granulem=info->couple_pass[passno].granulem; - float igranulem=info->couple_pass[passno].igranulem; - - /* make sure coupling a zero and a nonzero channel results in two - nonzero channels. */ - if(nonzero[vi->coupling_mag[i]] || - nonzero[vi->coupling_ang[i]]){ - - float *pcmM=pcm[vi->coupling_mag[i]]; - float *pcmA=pcm[vi->coupling_ang[i]]; - float *floorM=pcm[vi->coupling_mag[i]]+n; - float *floorA=pcm[vi->coupling_ang[i]]+n; - float *sofarM=sofar[vi->coupling_mag[i]]; - float *sofarA=sofar[vi->coupling_ang[i]]; - float *qM=quantized[vi->coupling_mag[i]]; - float *qA=quantized[vi->coupling_ang[i]]; - - nonzero[vi->coupling_mag[i]]=1; - nonzero[vi->coupling_ang[i]]=1; - - for(j=0,k=0;j<n;k++){ - vp_couple *part=info->couple_pass[passno].couple_pass+k; - float rqlimit=part->outofphase_requant_limit; - int flip_p=part->outofphase_redundant_flip_p; - - for(;j<part->limit && j<p->n;j++){ - /* partition by partition; k is our by-location partition - class counter */ - float ang,mag,fmag=max(fabs(pcmM[j]),fabs(pcmA[j])); - - if(fmag<part->amppost_point){ - couple_point(pcmM[j],pcmA[j],floorM[j],floorA[j], - granulem,igranulem,fmag,&mag,&ang); - - }else{ - couple_lossless(pcmM[j],pcmA[j], - granulem,igranulem,&mag,&ang,flip_p); - } - - /* executive decision time: when requantizing and recoupling - residue in order to progressively encode at finer - resolution, an out of phase component that originally - quntized to 2*mag can flip flop magnitude/angle if it - requantizes to not-quite out of phase. If that happens, - we opt not to fill in additional resolution (in order to - simplify the iterative codebook design and - efficiency). */ - - qM[j]=mag-sofarM[j]; - qA[j]=ang-sofarA[j]; - - if(qA[j]<-rqlimit || qA[j]>rqlimit){ - qM[j]=0.f; - qA[j]=0.f; - } - } - } - } - } -} diff --git a/lib/psy.h b/lib/psy.h deleted file mode 100644 index 542062a3..00000000 --- a/lib/psy.h +++ /dev/null @@ -1,161 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: random psychoacoustics (not including preecho) - last mod: $Id: psy.h,v 1.27 2001/12/20 01:00:29 segher Exp $ - - ********************************************************************/ - -#ifndef _V_PSY_H_ -#define _V_PSY_H_ -#include "smallft.h" - -#include "backends.h" - -#ifndef EHMER_MAX -#define EHMER_MAX 56 -#endif - -/* psychoacoustic setup ********************************************/ -#define MAX_BARK 27 -#define P_BANDS 17 -#define P_LEVELS 11 - -typedef struct vp_couple{ - int limit; /* sample post */ - - int outofphase_redundant_flip_p; - float outofphase_requant_limit; - - float amppost_point; - -} vp_couple; - -typedef struct vp_couple_pass{ - float granulem; - float igranulem; - - vp_couple couple_pass[8]; -} vp_couple_pass; - -typedef struct vp_attenblock{ - float block[P_BANDS][P_LEVELS]; -} vp_attenblock; - -#define NOISE_COMPAND_LEVELS 40 -typedef struct vorbis_info_psy{ - float ath[27]; - - float ath_adjatt; - float ath_maxatt; - - float tone_masteratt; - float tone_guard; - float tone_abs_limit; - vp_attenblock toneatt; - - int peakattp; - int curvelimitp; - vp_attenblock peakatt; - - int noisemaskp; - float noisemaxsupp; - float noisewindowlo; - float noisewindowhi; - int noisewindowlomin; - int noisewindowhimin; - int noisewindowfixed; - float noiseoff[P_BANDS]; - float noisecompand[NOISE_COMPAND_LEVELS]; - - float max_curve_dB; - - vp_couple_pass couple_pass[8]; - -} vorbis_info_psy; - -typedef struct{ - int eighth_octave_lines; - - /* for block long/short tuning; encode only */ - float preecho_thresh[4]; - float postecho_thresh[4]; - float preecho_minenergy; - - float ampmax_att_per_sec; - - /* delay caching... how many samples to keep around prior to our - current block to aid in analysis? */ - int delaycache; -} vorbis_info_psy_global; - -typedef struct { - float ampmax; - int channels; - - vorbis_info_psy_global *gi; -} vorbis_look_psy_global; - - -typedef struct { - int n; - struct vorbis_info_psy *vi; - - float ***tonecurves; - float *noisethresh; - float *noiseoffset; - - float *ath; - long *octave; /* in n.ocshift format */ - long *bark; - - long firstoc; - long shiftoc; - int eighth_octave_lines; /* power of two, please */ - int total_octave_lines; - long rate; /* cache it */ -} vorbis_look_psy; - -extern void _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi, - vorbis_info_psy_global *gi,int n,long rate); -extern void _vp_psy_clear(vorbis_look_psy *p); -extern void *_vi_psy_dup(void *source); - -extern void _vi_psy_free(vorbis_info_psy *i); -extern vorbis_info_psy *_vi_psy_copy(vorbis_info_psy *i); - -extern void _vp_remove_floor(vorbis_look_psy *p, - float *mdct, - float *codedflr, - float *residue); - -extern void _vp_compute_mask(vorbis_look_psy *p, - float *fft, - float *mdct, - float *mask, - float global_specmax, - float local_specmax, - float bitrate_noise_offset); - -extern void _vp_quantize_couple(vorbis_look_psy *p, - vorbis_info_mapping0 *vi, - float **pcm, - float **sofar, - float **quantized, - int *nonzero, - int passno); - -extern float _vp_ampmax_decay(float amp,vorbis_dsp_state *vd); - -#endif - - diff --git a/lib/psytune.c b/lib/psytune.c deleted file mode 100644 index 6e5584f8..00000000 --- a/lib/psytune.c +++ /dev/null @@ -1,521 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: simple utility that runs audio through the psychoacoustics - without encoding - last mod: $Id: psytune.c,v 1.19 2002/01/22 08:06:07 xiphmont Exp $ - - ********************************************************************/ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> - -#include "vorbis/codec.h" -#include "codec_internal.h" -#include "os.h" -#include "misc.h" -#include "psy.h" -#include "mdct.h" -#include "smallft.h" -#include "window.h" -#include "scales.h" -#include "lpc.h" -#include "lsp.h" -#include "masking.h" -#include "registry.h" - -static vorbis_info_psy_global _psy_set0G={ - 0, /* decaydBpms */ - 8, /* lines per eighth octave */ - - /* thresh sample period, preecho clamp trigger threshhold, range, minenergy */ - 256, {26.f,26.f,26.f,30.f}, {-90.f,-90.f,-90.f,-90.f}, -90.f, - -6.f, - - 0, - - 0., - 0., -}; - -static vp_part _vp_part0[]={ - { 1,9e10f, 9e10f, 1.f,9999.f}, - { 9999, .75f, 9e10f, .5f,9999.f}, -/*{ 9999, 1.5f, 9e10f, .5f,9999.f},*/ - { 18,9e10f, 9e10f, .5f, 30.f}, - { 9999,9e10f, 9e10f, .5f, 30.f} -}; - -static vp_couple _vp_couple0[]={ - { 1, {9e10f,9e10f,0}, { 0.f, 0.f,0}, { 0.f, 0.f,0}, {0.f,0.f,0}}, - { 18, {9e10f,9e10f,0}, { 0.f, 0.f,0}, { 0.f, 0.f,0}, {0.f,0.f,0}}, - { 9999, {9e10f,9e10f,0}, { 0.f, 9e10f,0}, { 0.f,22.f,1}, {0.f,0.f,0}} -}; - -static vorbis_info_psy _psy_set0={ - ATH_Bark_dB_lineaggressive, - - -100.f, - -140.f, - 6.f, /* floor master att */ - - /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */ - /* x: 63 88 125 175 250 350 500 700 1k 1.4k 2k 2.8k 4k 5.6k 8k 11.5k 16k Hz */ - /* y: 0 10 20 30 40 50 60 70 80 90 100 dB */ - 1, /* tonemaskp */ - 0.f, /* tone master att */ - /* 0 10 20 30 40 50 60 70 80 90 100 */ - { - {-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f}, /*63*/ - {-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f}, /*88*/ - {-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f}, /*125*/ - - {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*175*/ - {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*250*/ - {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*350*/ - {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*500*/ - {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*700*/ - {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1000*/ - {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1400*/ - {-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*2000*/ - {-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*2800*/ - {-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*4000*/ - - {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*5600*/ - - {-30.f,-30.f,-33.f,-35.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*8000*/ - {-30.f,-30.f,-33.f,-35.f,-40.f,-45.f,-50.f,-60.f,-70.f,-85.f,-100.f}, /*11500*/ - {-24.f,-24.f,-26.f,-32.f,-32.f,-42.f,-50.f,-60.f,-70.f,-85.f,-100.f}, /*16000*/ - - }, - - 1,/* peakattp */ - {{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*63*/ - {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*88*/ - {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*125*/ - {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*175*/ - {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*250*/ - {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*350*/ - {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*500*/ - {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*700*/ - {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*1000*/ - {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*1400*/ - {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*2000*/ - {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*2800*/ - {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*4000*/ - {-10.f,-12.f,-14.f,-16.f,-16.f,-20.f,-24.f,-30.f,-32.f,-40.f,-40.f},/*5600*/ - {-10.f,-12.f,-14.f,-16.f,-16.f,-20.f,-24.f,-30.f,-32.f,-40.f,-40.f},/*8000*/ - {-10.f,-10.f,-10.f,-12.f,-14.f,-18.f,-22.f,-28.f,-32.f,-40.f,-40.f},/*11500*/ - {-10.f,-10.f,-10.f,-12.f,-14.f,-18.f,-22.f,-28.f,-32.f,-40.f,-40.f},/*16000*/ - }, - - 1,/*noisemaskp */ - -10.f, /* suppress any noise curve over maxspec+n */ - .5f, /* low window */ - .5f, /* high window */ - 10, - 10, - 25, - {.000f, 0.f, /*63*/ - .000f, 0.f, /*88*/ - .000f, 0.f, /*125*/ - .000f, 0.f, /*175*/ - .000f, 0.f, /*250*/ - .000f, 0.f, /*350*/ - .000f, 0.f, /*500*/ - .000f, 0.f, /*700*/ - .000f, 0.f, /*1000*/ - .300f, 0.f, /*1400*/ - .300f, 0.f, /*2000*/ - .300f, 0.f, /*2800*/ - .500f, 0.f, /*4000*/ - .700f, 0.f, /*5600*/ - .850f, 0.f, /*8000*/ - .900f, 0.f, /*11500*/ - .900f, 1.f, /*16000*/ - }, - - 95.f, /* even decade + 5 is important; saves an rint() later in a - tight loop) */ - -44., - - 32, - _vp_part0,_vp_couple0 -}; - -static vorbis_info_floor1 _floor_set0={1, - {0}, - - {32}, - {0}, - {0}, - {{-1}}, - - 2, - {0,1024, - - 88,31,243, - - 14,54,143,460, - - 6,3,10, 22,18,26, 41,36,47, - 69,61,78, 112,99,126, 185,162,211, - 329,282,387, 672,553,825 - }, - - 60,30,400, - 20,8,1,18., - 20,600, - 960}; - - -static vorbis_info_mapping0 mapping_info={1,{0,1},{0},{0},{0},0, 1, {0},{1}}; -static codec_setup_info codec_setup0={ {0,0}, - 1,1,1,1,1,0,1, - {NULL}, - {0},{&mapping_info}, - {0},{NULL}, - {1},{&_floor_set0}, - {2},{NULL}, - {NULL}, - {&_psy_set0}, - &_psy_set0G}; - -static int noisy=0; -void analysis(char *base,int i,float *v,int n,int bark,int dB){ - if(noisy){ - int j; - FILE *of; - char buffer[80]; - sprintf(buffer,"%s_%d.m",base,i); - of=fopen(buffer,"w"); - - for(j=0;j<n;j++){ - if(dB && v[j]==0) - fprintf(of,"\n\n"); - else{ - if(bark) - fprintf(of,"%g ",toBARK(22050.f*j/n)); - else - fprintf(of,"%g ",(float)j); - - if(dB){ - fprintf(of,"%g\n",todB(v+j)); - }else{ - fprintf(of,"%g\n",v[j]); - } - } - } - fclose(of); - } -} - -long frameno=0; - -/****************************************************************/ - -int main(int argc,char *argv[]){ - int eos=0; - float nonz=0.f; - float acc=0.f; - float tot=0.f; - float ampmax=-9999,newmax; - float local_ampmax[2]; - - int framesize=2048; - float ampmax_att_per_sec=-6.; - - float *pcm[2],*out[2],*window,*flr[2],*mask[2],*work[2]; - signed char *buffer,*buffer2; - mdct_lookup m_look; - drft_lookup f_look; - vorbis_look_psy p_look; - vorbis_look_psy_global *pg_look; - vorbis_look_floor *floor_look; - vorbis_info vi; - long i,j,k; - - int ath=0; - int decayp=0; - - argv++; - while(*argv){ - if(*argv[0]=='-'){ - /* option */ - if(argv[0][1]=='v'){ - noisy=0; - } - }else - if(*argv[0]=='+'){ - /* option */ - if(argv[0][1]=='v'){ - noisy=1; - } - }else - framesize=atoi(argv[0]); - argv++; - } - - vi.channels=2; - vi.codec_setup=&codec_setup0; - - pcm[0]=_ogg_malloc(framesize*sizeof(float)); - pcm[1]=_ogg_malloc(framesize*sizeof(float)); - out[0]=_ogg_calloc(framesize/2,sizeof(float)); - out[1]=_ogg_calloc(framesize/2,sizeof(float)); - work[0]=_ogg_calloc(framesize,sizeof(float)); - work[1]=_ogg_calloc(framesize,sizeof(float)); - flr[0]=_ogg_calloc(framesize/2,sizeof(float)); - flr[1]=_ogg_calloc(framesize/2,sizeof(float)); - buffer=_ogg_malloc(framesize*4); - buffer2=buffer+framesize*2; - window=_vorbis_window(0,framesize,framesize/2,framesize/2); - mdct_init(&m_look,framesize); - drft_init(&f_look,framesize); - _vp_psy_init(&p_look,&_psy_set0,&_psy_set0G,framesize/2,44100); - pg_look=_vp_global_look(&vi); - floor_look=_floor_P[1]->look(NULL,NULL,&_floor_set0); - - /* we cheat on the WAV header; we just bypass 44 bytes and never - verify that it matches 16bit/stereo/44.1kHz. */ - - fread(buffer,1,44,stdin); - fwrite(buffer,1,44,stdout); - memset(buffer,0,framesize*2); - - analysis("window",0,window,framesize,0,0); - - fprintf(stderr,"Processing for frame size %d...\n",framesize); - - while(!eos){ - long bytes=fread(buffer2,1,framesize*2,stdin); - if(bytes<framesize*2) - memset(buffer2+bytes,0,framesize*2-bytes); - - if(bytes!=0){ - int nonzero[2]; - - /* uninterleave samples */ - for(i=0;i<framesize;i++){ - pcm[0][i]=((buffer[i*4+1]<<8)| - (0x00ff&(int)buffer[i*4]))/32768.f; - pcm[1][i]=((buffer[i*4+3]<<8)| - (0x00ff&(int)buffer[i*4+2]))/32768.f; - } - - { - float secs=framesize/44100.; - - ampmax+=secs*ampmax_att_per_sec; - if(ampmax<-9999)ampmax=-9999; - } - - for(i=0;i<2;i++){ - float scale=4.f/framesize; - float *fft=work[i]; - float *mdct=pcm[i]; - float *logmdct=mdct+framesize/2; - - analysis("pre",frameno+i,pcm[i],framesize,0,0); - - /* fft and mdct transforms */ - for(j=0;j<framesize;j++) - fft[j]=pcm[i][j]*=window[j]; - - drft_forward(&f_look,fft); - - local_ampmax[i]=-9999.f; - fft[0]*=scale; - fft[0]=todB(fft); - for(j=1;j<framesize-1;j+=2){ - float temp=scale*FAST_HYPOT(fft[j],fft[j+1]); - temp=fft[(j+1)>>1]=todB(&temp); - if(temp>local_ampmax[i])local_ampmax[i]=temp; - } - if(local_ampmax[i]>ampmax)ampmax=local_ampmax[i]; - - mdct_forward(&m_look,pcm[i],mdct); - for(j=0;j<framesize/2;j++) - logmdct[j]=todB(mdct+j); - - analysis("mdct",frameno+i,logmdct,framesize/2,1,0); - analysis("fft",frameno+i,fft,framesize/2,1,0); - } - - for(i=0;i<2;i++){ - float amp; - float *fft=work[i]; - float *logmax=fft; - float *mdct=pcm[i]; - float *logmdct=mdct+framesize/2; - float *mask=fft+framesize/2; - - /* floor psychoacoustics */ - _vp_compute_mask(&p_look, - pg_look, - i, - fft, - logmdct, - mask, - ampmax, - local_ampmax[i], - framesize/2); - - analysis("mask",frameno+i,mask,framesize/2,1,0); - - { - vorbis_block vb; - vorbis_dsp_state vd; - memset(&vd,0,sizeof(vd)); - vd.vi=&vi; - vb.vd=&vd; - vb.pcmend=framesize; - - /* floor quantization/application */ - nonzero[i]=_floor_P[1]->forward(&vb,floor_look, - mdct, - logmdct, - mask, - logmax, - - flr[i]); - } - - _vp_remove_floor(&p_look, - pg_look, - logmdct, - mdct, - flr[i], - pcm[i], - local_ampmax[i]); - - for(j=0;j<framesize/2;j++) - if(fabs(pcm[i][j])>1500) - fprintf(stderr,"%ld ",frameno+i); - - analysis("res",frameno+i,pcm[i],framesize/2,1,0); - analysis("codedflr",frameno+i,flr[i],framesize/2,1,1); - } - - /* residue prequantization */ - _vp_partition_prequant(&p_look, - &vi, - pcm, - nonzero); - - for(i=0;i<2;i++) - analysis("quant",frameno+i,pcm[i],framesize/2,1,0); - - /* channel coupling / stereo quantization */ - - _vp_couple(&p_look, - &mapping_info, - pcm, - nonzero); - - for(i=0;i<2;i++) - analysis("coupled",frameno+i,pcm[i],framesize/2,1,0); - - /* decoupling */ - for(i=mapping_info.coupling_steps-1;i>=0;i--){ - float *pcmM=pcm[mapping_info.coupling_mag[i]]; - float *pcmA=pcm[mapping_info.coupling_ang[i]]; - - for(j=0;j<framesize/2;j++){ - float mag=pcmM[j]; - float ang=pcmA[j]; - - if(mag>0) - if(ang>0){ - pcmM[j]=mag; - pcmA[j]=mag-ang; - }else{ - pcmA[j]=mag; - pcmM[j]=mag+ang; - } - else - if(ang>0){ - pcmM[j]=mag; - pcmA[j]=mag+ang; - }else{ - pcmA[j]=mag; - pcmM[j]=mag-ang; - } - } - } - - for(i=0;i<2;i++) - analysis("decoupled",frameno+i,pcm[i],framesize/2,1,0); - - for(i=0;i<2;i++){ - float amp; - - for(j=0;j<framesize/2;j++) - pcm[i][j]*=flr[i][j]; - - analysis("final",frameno+i,pcm[i],framesize/2,1,1); - - /* take it back to time */ - mdct_backward(&m_look,pcm[i],pcm[i]); - - for(j=0;j<framesize/2;j++) - out[i][j]+=pcm[i][j]*window[j]; - - analysis("out",frameno+i,out[i],framesize/2,0,0); - - - } - - /* write data. Use the part of buffer we're about to shift out */ - for(i=0;i<2;i++){ - char *ptr=buffer+i*2; - float *mono=out[i]; - int flag=0; - for(j=0;j<framesize/2;j++){ - int val=mono[j]*32767.; - /* might as well guard against clipping */ - if(val>32767){ - if(!flag)fprintf(stderr,"clipping in frame %ld ",frameno+i); - flag=1; - val=32767; - } - if(val<-32768){ - if(!flag)fprintf(stderr,"clipping in frame %ld ",frameno+i); - flag=1; - val=-32768; - } - ptr[0]=val&0xff; - ptr[1]=(val>>8)&0xff; - ptr+=4; - } - } - - fprintf(stderr,"*"); - fwrite(buffer,1,framesize*2,stdout); - memmove(buffer,buffer2,framesize*2); - - for(i=0;i<2;i++){ - for(j=0,k=framesize/2;j<framesize/2;j++,k++) - out[i][j]=pcm[i][k]*window[k]; - } - frameno+=2; - }else - eos=1; - } - fprintf(stderr,"average raw bits of entropy: %.03g/sample\n",acc/tot); - fprintf(stderr,"average nonzero samples: %.03g/%d\n",nonz/tot*framesize/2, - framesize/2); - fprintf(stderr,"Done\n\n"); - return 0; -} diff --git a/lib/registry-api.h b/lib/registry-api.h deleted file mode 100644 index 8438a39e..00000000 --- a/lib/registry-api.h +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: registry exposure - last mod: $Id: registry-api.h,v 1.2 2001/12/12 09:45:25 xiphmont Exp $ - - ********************************************************************/ - -#ifndef _V_REGAPI_H_ -#define _V_REGAPI_H_ - -extern void residue_free_info(vorbis_info_residue *r,int type); - -#endif diff --git a/lib/registry.c b/lib/registry.c deleted file mode 100644 index f1d7b4eb..00000000 --- a/lib/registry.c +++ /dev/null @@ -1,60 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: registry for time, floor, res backends and channel mappings - last mod: $Id: registry.c,v 1.13 2001/12/20 01:00:29 segher Exp $ - - ********************************************************************/ - -#include "vorbis/codec.h" -#include "codec_internal.h" -#include "registry.h" -#include "registry-api.h" -#include "misc.h" - - -/* seems like major overkill now; the backend numbers will grow into - the infrastructure soon enough */ - -extern vorbis_func_time time0_exportbundle; -extern vorbis_func_floor floor0_exportbundle; -extern vorbis_func_floor floor1_exportbundle; -extern vorbis_func_residue residue0_exportbundle; -extern vorbis_func_residue residue1_exportbundle; -extern vorbis_func_residue residue2_exportbundle; -extern vorbis_func_mapping mapping0_exportbundle; - -vorbis_func_time *_time_P[]={ - &time0_exportbundle, -}; - -vorbis_func_floor *_floor_P[]={ - &floor0_exportbundle, - &floor1_exportbundle, -}; - -vorbis_func_residue *_residue_P[]={ - &residue0_exportbundle, - &residue1_exportbundle, - &residue2_exportbundle, -}; - -vorbis_func_mapping *_mapping_P[]={ - &mapping0_exportbundle, -}; - -/* make Windows happy; can't access the registry directly outside of - libvorbis, and vorbisenc needs a few functions */ -void residue_free_info(vorbis_info_residue *r,int type){ - _residue_P[type]->free_info(r); -} - diff --git a/lib/registry.h b/lib/registry.h deleted file mode 100644 index fe8b00e6..00000000 --- a/lib/registry.h +++ /dev/null @@ -1,39 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: registry for time, floor, res backends and channel mappings - last mod: $Id: registry.h,v 1.11 2001/12/20 01:00:29 segher Exp $ - - ********************************************************************/ - -#ifndef _V_REG_H_ -#define _V_REG_H_ - -#define VI_TRANSFORMB 1 -#define VI_WINDOWB 1 -#define VI_TIMEB 1 -#define VI_FLOORB 2 -#define VI_RESB 3 -#define VI_MAPB 1 - -#if defined(_WIN32) && defined(VORBISDLL_IMPORT) -# define EXTERN __declspec(dllimport) extern -#else -# define EXTERN extern -#endif - -EXTERN vorbis_func_time *_time_P[]; -EXTERN vorbis_func_floor *_floor_P[]; -EXTERN vorbis_func_residue *_residue_P[]; -EXTERN vorbis_func_mapping *_mapping_P[]; - -#endif diff --git a/lib/res0.c b/lib/res0.c deleted file mode 100644 index 67019f81..00000000 --- a/lib/res0.c +++ /dev/null @@ -1,959 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: residue backend 0, 1 and 2 implementation - last mod: $Id: res0.c,v 1.45 2002/01/22 08:06:07 xiphmont Exp $ - - ********************************************************************/ - -/* Slow, slow, slow, simpleminded and did I mention it was slow? The - encode/decode loops are coded for clarity and performance is not - yet even a nagging little idea lurking in the shadows. Oh and BTW, - it's slow. */ - -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <ogg/ogg.h> -#include "vorbis/codec.h" -#include "codec_internal.h" -#include "registry.h" -#include "codebook.h" -#include "misc.h" -#include "os.h" - -#ifdef TRAIN_RES -#include <stdio.h> -#endif - -typedef struct { - vorbis_info_residue0 *info; - int map; - - int parts; - int stages; - codebook *fullbooks; - codebook *phrasebook; - codebook ***partbooks; - - int partvals; - int **decodemap; - - long postbits; - long phrasebits; - long frames; - - int qoffsets[BITTRACK_DIVISOR+1]; - -#ifdef TRAIN_RES - long *training_data[8][64]; - float training_max[8][64]; - float training_min[8][64]; - int longp; - float tmin; - float tmax; -#endif - -} vorbis_look_residue0; - -vorbis_info_residue *res0_copy_info(vorbis_info_residue *vr){ - vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr; - vorbis_info_residue0 *ret=_ogg_malloc(sizeof(*ret)); - memcpy(ret,info,sizeof(*ret)); - return(ret); -} - -void res0_free_info(vorbis_info_residue *i){ - vorbis_info_residue0 *info=(vorbis_info_residue0 *)i; - if(info){ - memset(info,0,sizeof(*info)); - _ogg_free(info); - } -} - -void res0_free_look(vorbis_look_residue *i){ - int j; - if(i){ - - vorbis_look_residue0 *look=(vorbis_look_residue0 *)i; - -#ifdef TRAIN_RES - { - int j,k,l; - for(j=0;j<look->parts;j++){ - fprintf(stderr,"partition %d: ",j); - for(k=0;k<8;k++) - if(look->training_data[k][j]){ - char buffer[80]; - FILE *of; - codebook *statebook=look->partbooks[j][k]; - - /* long and short into the same bucket by current convention */ - sprintf(buffer,"res_part%d_pass%d.vqd",j,k); - of=fopen(buffer,"a"); - - for(l=0;l<statebook->entries;l++) - fprintf(of,"%d:%ld\n",l,look->training_data[k][j][l]); - - fclose(of); - - fprintf(stderr,"%d(%.2f|%.2f) ",k,look->training_min[k][j],look->training_max[k][j]); - - _ogg_free(look->training_data[k][j]); - } - fprintf(stderr,"\n"); - } - } - fprintf(stderr,"min/max residue: %g::%g\n",look->tmin,look->tmax); - - fprintf(stderr,"residue bit usage %f:%f (%f total)\n", - (float)look->phrasebits/look->frames, - (float)look->postbits/look->frames, - (float)(look->postbits+look->phrasebits)/look->frames); -#endif - - - /*vorbis_info_residue0 *info=look->info; - - fprintf(stderr, - "%ld frames encoded in %ld phrasebits and %ld residue bits " - "(%g/frame) \n",look->frames,look->phrasebits, - look->resbitsflat, - (look->phrasebits+look->resbitsflat)/(float)look->frames); - - for(j=0;j<look->parts;j++){ - long acc=0; - fprintf(stderr,"\t[%d] == ",j); - for(k=0;k<look->stages;k++) - if((info->secondstages[j]>>k)&1){ - fprintf(stderr,"%ld,",look->resbits[j][k]); - acc+=look->resbits[j][k]; - } - - fprintf(stderr,":: (%ld vals) %1.2fbits/sample\n",look->resvals[j], - acc?(float)acc/(look->resvals[j]*info->grouping):0); - } - fprintf(stderr,"\n");*/ - - for(j=0;j<look->parts;j++) - if(look->partbooks[j])_ogg_free(look->partbooks[j]); - _ogg_free(look->partbooks); - for(j=0;j<look->partvals;j++) - _ogg_free(look->decodemap[j]); - _ogg_free(look->decodemap); - - memset(look,0,sizeof(*look)); - _ogg_free(look); - } -} - -static int ilog(unsigned int v){ - int ret=0; - while(v){ - ret++; - v>>=1; - } - return(ret); -} - -static int icount(unsigned int v){ - int ret=0; - while(v){ - ret+=v&1; - v>>=1; - } - return(ret); -} - - -void res0_pack(vorbis_info_residue *vr,oggpack_buffer *opb){ - vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr; - int j,acc=0; - oggpack_write(opb,info->begin,24); - oggpack_write(opb,info->end,24); - - oggpack_write(opb,info->grouping-1,24); /* residue vectors to group and - code with a partitioned book */ - oggpack_write(opb,info->partitions-1,6); /* possible partition choices */ - oggpack_write(opb,info->groupbook,8); /* group huffman book */ - - /* secondstages is a bitmask; as encoding progresses pass by pass, a - bitmask of one indicates this partition class has bits to write - this pass */ - for(j=0;j<info->partitions;j++){ - if(ilog(info->secondstages[j])>3){ - /* yes, this is a minor hack due to not thinking ahead */ - oggpack_write(opb,info->secondstages[j],3); - oggpack_write(opb,1,1); - oggpack_write(opb,info->secondstages[j]>>3,5); - }else - oggpack_write(opb,info->secondstages[j],4); /* trailing zero */ - acc+=icount(info->secondstages[j]); - } - for(j=0;j<acc;j++) - oggpack_write(opb,info->booklist[j],8); - -} - -/* vorbis_info is for range checking */ -vorbis_info_residue *res0_unpack(vorbis_info *vi,oggpack_buffer *opb){ - int j,acc=0; - vorbis_info_residue0 *info=_ogg_calloc(1,sizeof(*info)); - codec_setup_info *ci=vi->codec_setup; - - info->begin=oggpack_read(opb,24); - info->end=oggpack_read(opb,24); - info->grouping=oggpack_read(opb,24)+1; - info->partitions=oggpack_read(opb,6)+1; - info->groupbook=oggpack_read(opb,8); - - for(j=0;j<info->partitions;j++){ - int cascade=oggpack_read(opb,3); - if(oggpack_read(opb,1)) - cascade|=(oggpack_read(opb,5)<<3); - info->secondstages[j]=cascade; - - acc+=icount(cascade); - } - for(j=0;j<acc;j++) - info->booklist[j]=oggpack_read(opb,8); - - if(info->groupbook>=ci->books)goto errout; - for(j=0;j<acc;j++) - if(info->booklist[j]>=ci->books)goto errout; - - return(info); - errout: - res0_free_info(info); - return(NULL); -} - -vorbis_look_residue *res0_look(vorbis_dsp_state *vd,vorbis_info_mode *vm, - vorbis_info_residue *vr){ - vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr; - vorbis_look_residue0 *look=_ogg_calloc(1,sizeof(*look)); - codec_setup_info *ci=vd->vi->codec_setup; - - int j,k,acc=0; - int dim; - int maxstage=0; - look->info=info; - look->map=vm->mapping; - - look->parts=info->partitions; - look->fullbooks=ci->fullbooks; - look->phrasebook=ci->fullbooks+info->groupbook; - dim=look->phrasebook->dim; - - look->partbooks=_ogg_calloc(look->parts,sizeof(*look->partbooks)); - - for(j=0;j<look->parts;j++){ - int stages=ilog(info->secondstages[j]); - if(stages){ - if(stages>maxstage)maxstage=stages; - look->partbooks[j]=_ogg_calloc(stages,sizeof(*look->partbooks[j])); - for(k=0;k<stages;k++) - if(info->secondstages[j]&(1<<k)){ - look->partbooks[j][k]=ci->fullbooks+info->booklist[acc++]; -#ifdef TRAIN_RES - look->training_data[k][j]=calloc(look->partbooks[j][k]->entries, - sizeof(***look->training_data)); -#endif - } - } - } - - look->partvals=rint(pow((float)look->parts,(float)dim)); - look->stages=maxstage; - look->decodemap=_ogg_malloc(look->partvals*sizeof(*look->decodemap)); - for(j=0;j<look->partvals;j++){ - long val=j; - long mult=look->partvals/look->parts; - look->decodemap[j]=_ogg_malloc(dim*sizeof(*look->decodemap[j])); - for(k=0;k<dim;k++){ - long deco=val/mult; - val-=deco*mult; - mult/=look->parts; - look->decodemap[j][k]=deco; - } - } - - { - int samples_per_partition=info->grouping; - int n=info->end-info->begin,i; - int partvals=n/samples_per_partition; - - for(i=0;i<BITTRACK_DIVISOR;i++) - look->qoffsets[i]=partvals*(i+1)/BITTRACK_DIVISOR; - - look->qoffsets[i]=9999999; - } - - return(look); -} - - -#if 0 -/* does not guard against invalid settings; eg, a subn of 16 and a - subgroup request of 32. Max subn of 128 */ -static int _interleaved_testhack(float *vec,int n,vorbis_look_residue0 *look, - int auxparts,int auxpartnum){ - vorbis_info_residue0 *info=look->info; - int i,j=0; - float max,localmax=0.f; - float temp[128]; - float entropy[8]; - - /* setup */ - for(i=0;i<n;i++)temp[i]=fabs(vec[i]); - - /* handle case subgrp==1 outside */ - for(i=0;i<n;i++) - if(temp[i]>localmax)localmax=temp[i]; - max=localmax; - - for(i=0;i<n;i++)temp[i]=rint(temp[i]); - - while(1){ - entropy[j]=localmax; - n>>=1; - if(!n)break; - j++; - - for(i=0;i<n;i++){ - temp[i]+=temp[i+n]; - } - localmax=0.f; - for(i=0;i<n;i++) - if(temp[i]>localmax)localmax=temp[i]; - } - - for(i=0;i<auxparts-1;i++) - if(auxpartnum<info->blimit[i] && - entropy[info->subgrp[i]]<=info->entmax[i] && - max<=info->ampmax[i]) - break; - - return(i); -} -#endif - - -static int _testhack(float *vec,int n,vorbis_look_residue0 *look, - int auxparts,int auxpartnum){ - vorbis_info_residue0 *info=look->info; - int i; - float max=0.f; - float temp[128]; - float entropy=0.f; - - /* setup */ - for(i=0;i<n;i++)temp[i]=fabs(vec[i]); - - for(i=0;i<n;i++) - if(temp[i]>max)max=temp[i]; - - for(i=0;i<n;i++)temp[i]=rint(temp[i]); - - for(i=0;i<n;i++) - entropy+=temp[i]; - - for(i=0;i<auxparts-1;i++) - if(auxpartnum<info->blimit[i] && - entropy<=info->entmax[i] && - max<=info->ampmax[i]) - break; - - return(i); -} - -static int _interleaved_encodepart(oggpack_buffer *opb,float *vec, int n, - codebook *book,long *acc){ - int i,bits=0; - int dim=book->dim; - int step=n/dim; - - for(i=0;i<step;i++){ - int entry=vorbis_book_besterror(book,vec+i,step,0); - -#ifdef TRAIN_RES - acc[entry]++; -#endif - - bits+=vorbis_book_encode(book,entry,opb); - } - - return(bits); -} - -static int _encodepart(oggpack_buffer *opb,float *vec, int n, - codebook *book,long *acc){ - int i,bits=0; - int dim=book->dim; - int step=n/dim; - - for(i=0;i<step;i++){ - int entry=vorbis_book_besterror(book,vec+i*dim,1,0); - -#ifdef TRAIN_RES - acc[entry]++; -#endif - - bits+=vorbis_book_encode(book,entry,opb); - } - - return(bits); -} - -static long **_01class(vorbis_block *vb,vorbis_look_residue *vl, - float **in,int ch, - int (*classify)(float *,int,vorbis_look_residue0 *, - int,int)){ - long i,j; - vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl; - vorbis_info_residue0 *info=look->info; - - /* move all this setup out later */ - int samples_per_partition=info->grouping; - int possible_partitions=info->partitions; - int n=info->end-info->begin; - - int partvals=n/samples_per_partition; - long **partword=_vorbis_block_alloc(vb,ch*sizeof(*partword)); - - /* we find the partition type for each partition of each - channel. We'll go back and do the interleaved encoding in a - bit. For now, clarity */ - - for(i=0;i<ch;i++){ - partword[i]=_vorbis_block_alloc(vb,n/samples_per_partition*sizeof(*partword[i])); - memset(partword[i],0,n/samples_per_partition*sizeof(*partword[i])); - } - - for(i=0;i<partvals;i++){ - for(j=0;j<ch;j++) - /* do the partition decision based on the 'entropy' - int the block */ - partword[j][i]= - classify(in[j]+i*samples_per_partition+info->begin, - samples_per_partition,look,possible_partitions,i); - - } - -#ifdef TRAIN_RES - look->longp=vb->W; - { - FILE *of; - char buffer[80]; - - for(i=0;i<ch;i++){ - sprintf(buffer,"resaux_%s.vqd",(vb->mode?"long":"short")); - of=fopen(buffer,"a"); - for(j=0;j<partvals;j++) - fprintf(of,"%ld, ",partword[i][j]); - fprintf(of,"\n"); - fclose(of); - } - } -#endif - look->frames++; - - return(partword); -} - -static long **_2class(vorbis_block *vb,vorbis_look_residue *vl, - float **in,int ch, - int (*classify)(float *,int,vorbis_look_residue0 *, - int,int)){ - long i,j,k,l; - vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl; - vorbis_info_residue0 *info=look->info; - - /* move all this setup out later */ - int samples_per_partition=info->grouping; - int possible_partitions=info->partitions; - int n=info->end-info->begin; - - int partvals=n/samples_per_partition; - long **partword=_vorbis_block_alloc(vb,sizeof(*partword)); - float *work=alloca(sizeof(*work)*samples_per_partition); - -#ifdef TRAIN_RES - FILE *of; - char buffer[80]; -#endif - - partword[0]=_vorbis_block_alloc(vb,n*ch/samples_per_partition*sizeof(*partword[0])); - memset(partword[0],0,n*ch/samples_per_partition*sizeof(*partword[0])); - - for(i=0,j=0,k=0,l=info->begin;i<partvals;i++){ - for(k=0;k<samples_per_partition;k++){ - work[k]=in[j][l]; - j++; - if(j>=ch){ - j=0; - l++; - } - } - - partword[0][i]= - classify(work,samples_per_partition,look,possible_partitions,i); - - - } - -#ifdef TRAIN_RES - look->longp=vb->W; - sprintf(buffer,"resaux_%s.vqd",(vb->mode?"long":"short")); - of=fopen(buffer,"a"); - for(i=0;i<partvals;i++) - fprintf(of,"%ld, ",partword[0][i]); - fprintf(of,"\n"); - fclose(of); -#endif - - look->frames++; - - return(partword); -} - -static int _01forward(vorbis_block *vb,vorbis_look_residue *vl, - float **in,int ch, - int pass,long **partword, - int (*encode)(oggpack_buffer *,float *,int, - codebook *,long *), - ogg_uint32_t *stats){ - long i,j,k,s; - vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl; - vorbis_info_residue0 *info=look->info; - - vorbis_dsp_state *vd=vb->vd; - vorbis_info *vi=vd->vi; - codec_setup_info *ci=vi->codec_setup; - - - /* move all this setup out later */ - int samples_per_partition=info->grouping; - int possible_partitions=info->partitions; - int partitions_per_word=look->phrasebook->dim; - int n=info->end-info->begin; - - int partvals=n/samples_per_partition; - long resbits[128]; - long resvals[128]; - -#ifdef TRAIN_RES - for(i=0;i<ch;i++) - for(j=info->begin;j<info->end;j++){ - if(in[i][j]>look->tmax)look->tmax=in[i][j]; - if(in[i][j]<look->tmin)look->tmin=in[i][j]; - } -#endif - - memset(resbits,0,sizeof(resbits)); - memset(resvals,0,sizeof(resvals)); - - /* we code the partition words for each channel, then the residual - words for a partition per channel until we've written all the - residual words for that partition word. Then write the next - partition channel words... */ - - for(s=(pass==0?0:ci->passlimit[pass-1]);s<ci->passlimit[pass];s++){ - int bin=0; - ogg_uint32_t *qptr=NULL; - if(stats)qptr=stats+s*BITTRACK_DIVISOR; - - for(i=0;i<partvals;){ - - /* first we encode a partition codeword for each channel */ - if(s==0){ - for(j=0;j<ch;j++){ - long val=partword[j][i]; - for(k=1;k<partitions_per_word;k++){ - val*=possible_partitions; - if(i+k<partvals) - val+=partword[j][i+k]; - } - - /* training hack */ - if(val<look->phrasebook->entries) - look->phrasebits+=vorbis_book_encode(look->phrasebook,val,&vb->opb); -#ifdef TRAIN_RES - else - fprintf(stderr,"!"); -#endif - - } - } - - /* now we encode interleaved residual values for the partitions */ - for(k=0;k<partitions_per_word && i<partvals;k++,i++){ - long offset=i*samples_per_partition+info->begin; - - if(qptr)while(i>=look->qoffsets[bin]) - qptr[bin++]=oggpack_bits(&vb->opb); - - for(j=0;j<ch;j++){ - if(s==0)resvals[partword[j][i]]+=samples_per_partition; - if(info->secondstages[partword[j][i]]&(1<<s)){ - codebook *statebook=look->partbooks[partword[j][i]][s]; - if(statebook){ - int ret; - long *accumulator=NULL; - -#ifdef TRAIN_RES - accumulator=look->training_data[s][partword[j][i]]; - { - int l; - float *samples=in[j]+offset; - for(l=0;l<samples_per_partition;l++){ - if(samples[l]<look->training_min[s][partword[j][i]]) - look->training_min[s][partword[j][i]]=samples[l]; - if(samples[l]>look->training_max[s][partword[j][i]]) - look->training_max[s][partword[j][i]]=samples[l]; - } - } -#endif - - ret=encode(&vb->opb,in[j]+offset,samples_per_partition, - statebook,accumulator); - - look->postbits+=ret; - resbits[partword[j][i]]+=ret; - } - } - } - } - if(qptr)while(i>=look->qoffsets[bin]) - qptr[bin++]=oggpack_bits(&vb->opb); - } - } - - /*{ - long total=0; - long totalbits=0; - fprintf(stderr,"%d :: ",vb->mode); - for(k=0;k<possible_partitions;k++){ - fprintf(stderr,"%ld/%1.2g, ",resvals[k],(float)resbits[k]/resvals[k]); - total+=resvals[k]; - totalbits+=resbits[k]; - } - - fprintf(stderr,":: %ld:%1.2g\n",total,(double)totalbits/total); - }*/ - return(0); -} - -/* a truncated packet here just means 'stop working'; it's not an error */ -static int _01inverse(vorbis_block *vb,vorbis_look_residue *vl, - float **in,int ch, - long (*decodepart)(codebook *, float *, - oggpack_buffer *,int)){ - - long i,j,k,l,s; - vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl; - vorbis_info_residue0 *info=look->info; - - /* move all this setup out later */ - int samples_per_partition=info->grouping; - int partitions_per_word=look->phrasebook->dim; - int n=info->end-info->begin; - - int partvals=n/samples_per_partition; - int partwords=(partvals+partitions_per_word-1)/partitions_per_word; - int ***partword=alloca(ch*sizeof(*partword)); - - for(j=0;j<ch;j++) - partword[j]=_vorbis_block_alloc(vb,partwords*sizeof(*partword[j])); - - for(s=0;s<look->stages;s++){ - - /* each loop decodes on partition codeword containing - partitions_pre_word partitions */ - for(i=0,l=0;i<partvals;l++){ - if(s==0){ - /* fetch the partition word for each channel */ - for(j=0;j<ch;j++){ - int temp=vorbis_book_decode(look->phrasebook,&vb->opb); - if(temp==-1)goto eopbreak; - partword[j][l]=look->decodemap[temp]; - if(partword[j][l]==NULL)goto errout; - } - } - - /* now we decode residual values for the partitions */ - for(k=0;k<partitions_per_word && i<partvals;k++,i++) - for(j=0;j<ch;j++){ - long offset=info->begin+i*samples_per_partition; - if(info->secondstages[partword[j][l][k]]&(1<<s)){ - codebook *stagebook=look->partbooks[partword[j][l][k]][s]; - if(stagebook){ - if(decodepart(stagebook,in[j]+offset,&vb->opb, - samples_per_partition)==-1)goto eopbreak; - } - } - } - } - } - - errout: - eopbreak: - return(0); -} - -/* residue 0 and 1 are just slight variants of one another. 0 is - interleaved, 1 is not */ -long **res0_class(vorbis_block *vb,vorbis_look_residue *vl, - float **in,int *nonzero,int ch){ - /* we encode only the nonzero parts of a bundle */ - int i,used=0; - for(i=0;i<ch;i++) - if(nonzero[i]) - in[used++]=in[i]; - if(used) - /*return(_01class(vb,vl,in,used,_interleaved_testhack));*/ - return(_01class(vb,vl,in,used,_testhack)); - else - return(0); -} - -int res0_forward(vorbis_block *vb,vorbis_look_residue *vl, - float **in,float **out,int *nonzero,int ch, - int pass, long **partword,ogg_uint32_t *stats){ - /* we encode only the nonzero parts of a bundle */ - int i,j,used=0,n=vb->pcmend/2; - for(i=0;i<ch;i++) - if(nonzero[i]){ - for(j=0;j<n;j++) - out[i][j]+=in[i][j]; - in[used++]=in[i]; - } - if(used){ - int ret=_01forward(vb,vl,in,used,pass,partword, - _interleaved_encodepart,stats); - used=0; - for(i=0;i<ch;i++) - if(nonzero[i]){ - for(j=0;j<n;j++) - out[i][j]-=in[used][j]; - used++; - } - return(ret); - }else{ - for(i=0;i<vorbis_bitrate_maxmarkers();i++) - stats[i]=oggpack_bits(&vb->opb); - - return(0); - } -} - -int res0_inverse(vorbis_block *vb,vorbis_look_residue *vl, - float **in,int *nonzero,int ch){ - int i,used=0; - for(i=0;i<ch;i++) - if(nonzero[i]) - in[used++]=in[i]; - if(used) - return(_01inverse(vb,vl,in,used,vorbis_book_decodevs_add)); - else - return(0); -} - -int res1_forward(vorbis_block *vb,vorbis_look_residue *vl, - float **in,float **out,int *nonzero,int ch, - int pass, long **partword, ogg_uint32_t *stats){ - int i,j,used=0,n=vb->pcmend/2; - for(i=0;i<ch;i++) - if(nonzero[i]){ - for(j=0;j<n;j++) - out[i][j]+=in[i][j]; - in[used++]=in[i]; - } - - if(used){ - int ret=_01forward(vb,vl,in,used,pass,partword,_encodepart,stats); - used=0; - for(i=0;i<ch;i++) - if(nonzero[i]){ - for(j=0;j<n;j++) - out[i][j]-=in[used][j]; - used++; - } - return(ret); - }else{ - for(i=0;i<vorbis_bitrate_maxmarkers();i++) - stats[i]=oggpack_bits(&vb->opb); - - return(0); - } -} - -long **res1_class(vorbis_block *vb,vorbis_look_residue *vl, - float **in,int *nonzero,int ch){ - int i,used=0; - for(i=0;i<ch;i++) - if(nonzero[i]) - in[used++]=in[i]; - if(used) - return(_01class(vb,vl,in,used,_testhack)); - else - return(0); -} - -int res1_inverse(vorbis_block *vb,vorbis_look_residue *vl, - float **in,int *nonzero,int ch){ - int i,used=0; - for(i=0;i<ch;i++) - if(nonzero[i]) - in[used++]=in[i]; - if(used) - return(_01inverse(vb,vl,in,used,vorbis_book_decodev_add)); - else - return(0); -} - -long **res2_class(vorbis_block *vb,vorbis_look_residue *vl, - float **in,int *nonzero,int ch){ - int i,used=0; - for(i=0;i<ch;i++) - if(nonzero[i]) - in[used++]=in[i]; - if(used) - return(_2class(vb,vl,in,used,_testhack)); - else - return(0); -} - -/* res2 is slightly more different; all the channels are interleaved - into a single vector and encoded. */ - -int res2_forward(vorbis_block *vb,vorbis_look_residue *vl, - float **in,float **out,int *nonzero,int ch, - int pass,long **partword,ogg_uint32_t *stats){ - long i,j,k,n=vb->pcmend/2,used=0; - - /* don't duplicate the code; use a working vector hack for now and - reshape ourselves into a single channel res1 */ - /* ugly; reallocs for each coupling pass :-( */ - float *work=_vorbis_block_alloc(vb,ch*n*sizeof(*work)); - for(i=0;i<ch;i++){ - float *pcm=in[i]; - if(nonzero[i])used++; - for(j=0,k=i;j<n;j++,k+=ch) - work[k]=pcm[j]; - } - - if(used){ - int ret=_01forward(vb,vl,&work,1,pass,partword,_encodepart,stats); - /* update the sofar vector */ - for(i=0;i<ch;i++){ - float *pcm=in[i]; - float *sofar=out[i]; - for(j=0,k=i;j<n;j++,k+=ch) - sofar[j]+=pcm[j]-work[k]; - - } - return(ret); - }else{ - for(i=0;i<vorbis_bitrate_maxmarkers();i++) - stats[i]=oggpack_bits(&vb->opb); - - return(0); - } -} - -/* duplicate code here as speed is somewhat more important */ -int res2_inverse(vorbis_block *vb,vorbis_look_residue *vl, - float **in,int *nonzero,int ch){ - long i,k,l,s; - vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl; - vorbis_info_residue0 *info=look->info; - - /* move all this setup out later */ - int samples_per_partition=info->grouping; - int partitions_per_word=look->phrasebook->dim; - int n=info->end-info->begin; - - int partvals=n/samples_per_partition; - int partwords=(partvals+partitions_per_word-1)/partitions_per_word; - int **partword=_vorbis_block_alloc(vb,partwords*sizeof(*partword)); - - for(i=0;i<ch;i++)if(nonzero[i])break; - if(i==ch)return(0); /* no nonzero vectors */ - - for(s=0;s<look->stages;s++){ - for(i=0,l=0;i<partvals;l++){ - - if(s==0){ - /* fetch the partition word */ - int temp=vorbis_book_decode(look->phrasebook,&vb->opb); - if(temp==-1)goto eopbreak; - partword[l]=look->decodemap[temp]; - if(partword[l]==NULL)goto errout; - } - - /* now we decode residual values for the partitions */ - for(k=0;k<partitions_per_word && i<partvals;k++,i++) - if(info->secondstages[partword[l][k]]&(1<<s)){ - codebook *stagebook=look->partbooks[partword[l][k]][s]; - - if(stagebook){ - if(vorbis_book_decodevv_add(stagebook,in, - i*samples_per_partition+info->begin,ch, - &vb->opb,samples_per_partition)==-1) - goto eopbreak; - } - } - } - } - - errout: - eopbreak: - return(0); -} - - -vorbis_func_residue residue0_exportbundle={ - &res0_pack, - &res0_unpack, - &res0_look, - &res0_copy_info, - &res0_free_info, - &res0_free_look, - &res0_class, - &res0_forward, - &res0_inverse -}; - -vorbis_func_residue residue1_exportbundle={ - &res0_pack, - &res0_unpack, - &res0_look, - &res0_copy_info, - &res0_free_info, - &res0_free_look, - &res1_class, - &res1_forward, - &res1_inverse -}; - -vorbis_func_residue residue2_exportbundle={ - &res0_pack, - &res0_unpack, - &res0_look, - &res0_copy_info, - &res0_free_info, - &res0_free_look, - &res2_class, - &res2_forward, - &res2_inverse -}; diff --git a/lib/scales.h b/lib/scales.h deleted file mode 100644 index a4197d93..00000000 --- a/lib/scales.h +++ /dev/null @@ -1,132 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: linear scale -> dB, Bark and Mel scales - last mod: $Id: scales.h,v 1.18 2001/12/22 05:17:11 segher Exp $ - - ********************************************************************/ - -#ifndef _V_SCALES_H_ -#define _V_SCALES_H_ - -#include <math.h> -#include "os.h" - -/* 20log10(x) */ -#ifdef VORBIS_IEEE_FLOAT32 -static float todB_LOOKUP[256]={ - -140.277330f, -139.633636f, -139.034372f, -138.473797f, - -137.450747f, -136.535597f, -135.707743f, -134.951972f, - -134.256730f, -133.613036f, -133.013772f, -132.453198f, - -131.430147f, -130.514997f, -129.687144f, -128.931372f, - -128.236130f, -127.592437f, -126.993172f, -126.432598f, - -125.409547f, -124.494397f, -123.666544f, -122.910772f, - -122.215530f, -121.571837f, -120.972572f, -120.411998f, - -119.388947f, -118.473797f, -117.645944f, -116.890173f, - -116.194930f, -115.551237f, -114.951972f, -114.391398f, - -113.368347f, -112.453198f, -111.625344f, -110.869573f, - -110.174331f, -109.530637f, -108.931372f, -108.370798f, - -107.347748f, -106.432598f, -105.604744f, -104.848973f, - -104.153731f, -103.510037f, -102.910773f, -102.350198f, - -101.327148f, -100.411998f, -99.584144f, -98.828373f, - -98.133131f, -97.489437f, -96.890173f, -96.329598f, - -95.306548f, -94.391398f, -93.563544f, -92.807773f, - -92.112531f, -91.468837f, -90.869573f, -90.308998f, - -89.285948f, -88.370798f, -87.542944f, -86.787173f, - -86.091931f, -85.448237f, -84.848973f, -84.288398f, - -83.265348f, -82.350198f, -81.522344f, -80.766573f, - -80.071331f, -79.427637f, -78.828373f, -78.267799f, - -77.244748f, -76.329598f, -75.501745f, -74.745973f, - -74.050731f, -73.407038f, -72.807773f, -72.247199f, - -71.224148f, -70.308998f, -69.481145f, -68.725373f, - -68.030131f, -67.386438f, -66.787173f, -66.226599f, - -65.203548f, -64.288399f, -63.460545f, -62.704774f, - -62.009531f, -61.365838f, -60.766573f, -60.205999f, - -59.182948f, -58.267799f, -57.439945f, -56.684174f, - -55.988932f, -55.345238f, -54.745973f, -54.185399f, - -53.162349f, -52.247199f, -51.419345f, -50.663574f, - -49.968332f, -49.324638f, -48.725374f, -48.164799f, - -47.141749f, -46.226599f, -45.398745f, -44.642974f, - -43.947732f, -43.304038f, -42.704774f, -42.144199f, - -41.121149f, -40.205999f, -39.378145f, -38.622374f, - -37.927132f, -37.283438f, -36.684174f, -36.123599f, - -35.100549f, -34.185399f, -33.357545f, -32.601774f, - -31.906532f, -31.262838f, -30.663574f, -30.102999f, - -29.079949f, -28.164799f, -27.336945f, -26.581174f, - -25.885932f, -25.242238f, -24.642974f, -24.082400f, - -23.059349f, -22.144199f, -21.316346f, -20.560574f, - -19.865332f, -19.221639f, -18.622374f, -18.061800f, - -17.038749f, -16.123599f, -15.295746f, -14.539974f, - -13.844732f, -13.201039f, -12.601774f, -12.041200f, - -11.018149f, -10.103000f, -9.275146f, -8.519375f, - -7.824132f, -7.180439f, -6.581174f, -6.020600f, - -4.997549f, -4.082400f, -3.254546f, -2.498775f, - -1.803533f, -1.159839f, -0.560574f, 0.000000f, - 1.023050f, 1.938200f, 2.766054f, 3.521825f, - 4.217067f, 4.860761f, 5.460025f, 6.020600f, - 7.043650f, 7.958800f, 8.786654f, 9.542425f, - 10.237667f, 10.881361f, 11.480625f, 12.041200f, - 13.064250f, 13.979400f, 14.807254f, 15.563025f, - 16.258267f, 16.901961f, 17.501225f, 18.061800f, - 19.084850f, 20.000000f, 20.827854f, 21.583625f, - 22.278867f, 22.922561f, 23.521825f, 24.082400f, - 25.105450f, 26.020600f, 26.848453f, 27.604225f, - 28.299467f, 28.943161f, 29.542425f, 30.102999f, - 31.126050f, 32.041200f, 32.869053f, 33.624825f, - 34.320067f, 34.963760f, 35.563025f, 36.123599f, - 37.146650f, 38.061800f, 38.889653f, 39.645424f, - 40.340667f, 40.984360f, 41.583625f, 42.144199f, - 43.167250f, 44.082399f, 44.910253f, 45.666024f, - 46.361266f, 47.004960f, 47.604225f, 48.164799f, - 49.187850f, 50.102999f, 50.930853f, 51.686624f -}; - -static float todB(const float *x){ - ogg_int32_t *i=(ogg_int32_t *)x; - ogg_int32_t temp=((*i&0x7fffffff)-0x33cfffff)>>20; - if(temp<0)return -400.f; - return(todB_LOOKUP[temp]); -} - -#define todB_nn(x) todB(x) - -#else - -#define todB(x) (*(x)==0?-400.f:log(*(x)**(x))*4.34294480f) -#define todB_nn(x) (*(x)==0.f?-400.f:log(*(x))*8.6858896f) - -#endif - -#define fromdB(x) (exp((x)*.11512925f)) - -/* The bark scale equations are approximations, since the original - table was somewhat hand rolled. The below are chosen to have the - best possible fit to the rolled tables, thus their somewhat odd - appearance (these are more accurate and over a longer range than - the oft-quoted bark equations found in the texts I have). The - approximations are valid from 0 - 30kHz (nyquist) or so. - - all f in Hz, z in Bark */ - -#define toBARK(n) (13.1f*atan(.00074f*(n))+2.24f*atan((n)*(n)*1.85e-8f)+1e-4f*(n)) -#define fromBARK(z) (102.f*(z)-2.f*pow(z,2.f)+.4f*pow(z,3.f)+pow(1.46f,z)-1.f) -#define toMEL(n) (log(1.f+(n)*.001f)*1442.695f) -#define fromMEL(m) (1000.f*exp((m)/1442.695f)-1000.f) - -/* Frequency to octave. We arbitrarily declare 63.5 Hz to be octave - 0.0 */ - -#define toOC(n) (log(n)*1.442695f-5.965784f) -#define fromOC(o) (exp(((o)+5.965784f)*.693147f)) - -#endif - diff --git a/lib/sharedbook.c b/lib/sharedbook.c deleted file mode 100644 index 263e0e2a..00000000 --- a/lib/sharedbook.c +++ /dev/null @@ -1,743 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: basic shared codebook operations - last mod: $Id: sharedbook.c,v 1.27 2002/01/22 08:06:07 xiphmont Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <math.h> -#include <string.h> -#include <ogg/ogg.h> -#include "os.h" -#include "misc.h" -#include "vorbis/codec.h" -#include "codebook.h" -#include "scales.h" - -/**** pack/unpack helpers ******************************************/ -int _ilog(unsigned int v){ - int ret=0; - while(v){ - ret++; - v>>=1; - } - return(ret); -} - -/* 32 bit float (not IEEE; nonnormalized mantissa + - biased exponent) : neeeeeee eeemmmmm mmmmmmmm mmmmmmmm - Why not IEEE? It's just not that important here. */ - -#define VQ_FEXP 10 -#define VQ_FMAN 21 -#define VQ_FEXP_BIAS 768 /* bias toward values smaller than 1. */ - -/* doesn't currently guard under/overflow */ -long _float32_pack(float val){ - int sign=0; - long exp; - long mant; - if(val<0){ - sign=0x80000000; - val= -val; - } - exp= floor(log(val)/log(2.f)); - mant=rint(ldexp(val,(VQ_FMAN-1)-exp)); - exp=(exp+VQ_FEXP_BIAS)<<VQ_FMAN; - - return(sign|exp|mant); -} - -float _float32_unpack(long val){ - double mant=val&0x1fffff; - int sign=val&0x80000000; - long exp =(val&0x7fe00000L)>>VQ_FMAN; - if(sign)mant= -mant; - return(ldexp(mant,exp-(VQ_FMAN-1)-VQ_FEXP_BIAS)); -} - -/* given a list of word lengths, generate a list of codewords. Works - for length ordered or unordered, always assigns the lowest valued - codewords first. Extended to handle unused entries (length 0) */ -ogg_uint32_t *_make_words(long *l,long n,long sparsecount){ - long i,j,count=0; - ogg_uint32_t marker[33]; - ogg_uint32_t *r=_ogg_malloc((sparsecount?sparsecount:n)*sizeof(*r)); - memset(marker,0,sizeof(marker)); - - for(i=0;i<n;i++){ - long length=l[i]; - if(length>0){ - ogg_uint32_t entry=marker[length]; - - /* when we claim a node for an entry, we also claim the nodes - below it (pruning off the imagined tree that may have dangled - from it) as well as blocking the use of any nodes directly - above for leaves */ - - /* update ourself */ - if(length<32 && (entry>>length)){ - /* error condition; the lengths must specify an overpopulated tree */ - _ogg_free(r); - return(NULL); - } - r[count++]=entry; - - /* Look to see if the next shorter marker points to the node - above. if so, update it and repeat. */ - { - for(j=length;j>0;j--){ - - if(marker[j]&1){ - /* have to jump branches */ - if(j==1) - marker[1]++; - else - marker[j]=marker[j-1]<<1; - break; /* invariant says next upper marker would already - have been moved if it was on the same path */ - } - marker[j]++; - } - } - - /* prune the tree; the implicit invariant says all the longer - markers were dangling from our just-taken node. Dangle them - from our *new* node. */ - for(j=length+1;j<33;j++) - if((marker[j]>>1) == entry){ - entry=marker[j]; - marker[j]=marker[j-1]<<1; - }else - break; - }else - if(sparsecount==0)count++; - } - - /* bitreverse the words because our bitwise packer/unpacker is LSb - endian */ - for(i=0,count=0;i<n;i++){ - ogg_uint32_t temp=0; - for(j=0;j<l[i];j++){ - temp<<=1; - temp|=(r[count]>>j)&1; - } - - if(sparsecount){ - if(l[i]) - r[count++]=temp; - }else - r[count++]=temp; - } - - return(r); -} - -/* there might be a straightforward one-line way to do the below - that's portable and totally safe against roundoff, but I haven't - thought of it. Therefore, we opt on the side of caution */ -long _book_maptype1_quantvals(const static_codebook *b){ - long vals=floor(pow((float)b->entries,1.f/b->dim)); - - /* the above *should* be reliable, but we'll not assume that FP is - ever reliable when bitstream sync is at stake; verify via integer - means that vals really is the greatest value of dim for which - vals^b->bim <= b->entries */ - /* treat the above as an initial guess */ - while(1){ - long acc=1; - long acc1=1; - int i; - for(i=0;i<b->dim;i++){ - acc*=vals; - acc1*=vals+1; - } - if(acc<=b->entries && acc1>b->entries){ - return(vals); - }else{ - if(acc>b->entries){ - vals--; - }else{ - vals++; - } - } - } -} - -/* unpack the quantized list of values for encode/decode ***********/ -/* we need to deal with two map types: in map type 1, the values are - generated algorithmically (each column of the vector counts through - the values in the quant vector). in map type 2, all the values came - in in an explicit list. Both value lists must be unpacked */ -float *_book_unquantize(const static_codebook *b,int n,int *sparsemap){ - long j,k,count=0; - if(b->maptype==1 || b->maptype==2){ - int quantvals; - float mindel=_float32_unpack(b->q_min); - float delta=_float32_unpack(b->q_delta); - float *r=_ogg_calloc(n*b->dim,sizeof(*r)); - - /* maptype 1 and 2 both use a quantized value vector, but - different sizes */ - switch(b->maptype){ - case 1: - /* most of the time, entries%dimensions == 0, but we need to be - well defined. We define that the possible vales at each - scalar is values == entries/dim. If entries%dim != 0, we'll - have 'too few' values (values*dim<entries), which means that - we'll have 'left over' entries; left over entries use zeroed - values (and are wasted). So don't generate codebooks like - that */ - quantvals=_book_maptype1_quantvals(b); - for(j=0;j<b->entries;j++){ - if((sparsemap && b->lengthlist[j]) || !sparsemap){ - float last=0.f; - int indexdiv=1; - for(k=0;k<b->dim;k++){ - int index= (j/indexdiv)%quantvals; - float val=b->quantlist[index]; - val=fabs(val)*delta+mindel+last; - if(b->q_sequencep)last=val; - if(sparsemap) - r[sparsemap[count]*b->dim+k]=val; - else - r[count*b->dim+k]=val; - indexdiv*=quantvals; - } - count++; - } - - } - break; - case 2: - for(j=0;j<b->entries;j++){ - if((sparsemap && b->lengthlist[j]) || !sparsemap){ - float last=0.f; - - for(k=0;k<b->dim;k++){ - float val=b->quantlist[j*b->dim+k]; - val=fabs(val)*delta+mindel+last; - if(b->q_sequencep)last=val; - if(sparsemap) - r[sparsemap[count]*b->dim+k]=val; - else - r[count*b->dim+k]=val; - } - count++; - } - } - break; - } - - return(r); - } - return(NULL); -} - -void vorbis_staticbook_clear(static_codebook *b){ - if(b->allocedp){ - if(b->quantlist)_ogg_free(b->quantlist); - if(b->lengthlist)_ogg_free(b->lengthlist); - if(b->nearest_tree){ - _ogg_free(b->nearest_tree->ptr0); - _ogg_free(b->nearest_tree->ptr1); - _ogg_free(b->nearest_tree->p); - _ogg_free(b->nearest_tree->q); - memset(b->nearest_tree,0,sizeof(*b->nearest_tree)); - _ogg_free(b->nearest_tree); - } - if(b->thresh_tree){ - _ogg_free(b->thresh_tree->quantthresh); - _ogg_free(b->thresh_tree->quantmap); - memset(b->thresh_tree,0,sizeof(*b->thresh_tree)); - _ogg_free(b->thresh_tree); - } - - memset(b,0,sizeof(*b)); - } -} - -void vorbis_staticbook_destroy(static_codebook *b){ - if(b->allocedp){ - vorbis_staticbook_clear(b); - _ogg_free(b); - } -} - -void vorbis_book_clear(codebook *b){ - /* static book is not cleared; we're likely called on the lookup and - the static codebook belongs to the info struct */ - if(b->valuelist)_ogg_free(b->valuelist); - if(b->codelist)_ogg_free(b->codelist); - - if(b->dec_index)_ogg_free(b->dec_index); - if(b->dec_codelengths)_ogg_free(b->dec_codelengths); - if(b->dec_firsttable)_ogg_free(b->dec_firsttable); - - memset(b,0,sizeof(*b)); -} - -int vorbis_book_init_encode(codebook *c,const static_codebook *s){ - - memset(c,0,sizeof(*c)); - c->c=s; - c->entries=s->entries; - c->used_entries=s->entries; - c->dim=s->dim; - c->codelist=_make_words(s->lengthlist,s->entries,0); - c->valuelist=_book_unquantize(s,s->entries,NULL); - - return(0); -} - -static ogg_uint32_t bitreverse(ogg_uint32_t x){ - x= ((x>>16)&0x0000ffffUL) | ((x<<16)&0xffff0000UL); - x= ((x>> 8)&0x00ff00ffUL) | ((x<< 8)&0xff00ff00UL); - x= ((x>> 4)&0x0f0f0f0fUL) | ((x<< 4)&0xf0f0f0f0UL); - x= ((x>> 2)&0x33333333UL) | ((x<< 2)&0xccccccccUL); - return((x>> 1)&0x55555555UL) | ((x<< 1)&0xaaaaaaaaUL); -} - -static int sort32a(const void *a,const void *b){ - return ( (**(ogg_uint32_t **)a>**(ogg_uint32_t **)b)<<1)-1; -} - -/* decode codebook arrangement is more heavily optimized than encode */ -int vorbis_book_init_decode(codebook *c,const static_codebook *s){ - int i,j,n=0,tabn; - int *sortindex; - memset(c,0,sizeof(*c)); - - /* count actually used entries */ - for(i=0;i<s->entries;i++) - if(s->lengthlist[i]>0) - n++; - - c->entries=s->entries; - c->used_entries=n; - c->dim=s->dim; - - /* two different remappings go on here. - - First, we collapse the likely sparse codebook down only to - actually represented values/words. This collapsing needs to be - indexed as map-valueless books are used to encode original entry - positions as integers. - - Second, we reorder all vectors, including the entry index above, - by sorted bitreversed codeword to allow treeless decode. */ - - { - /* perform sort */ - ogg_uint32_t *codes=_make_words(s->lengthlist,s->entries,c->used_entries); - ogg_uint32_t **codep=alloca(sizeof(*codep)*n); - - if(codes==NULL)goto err_out; - - for(i=0;i<n;i++){ - codes[i]=bitreverse(codes[i]); - codep[i]=codes+i; - } - - qsort(codep,n,sizeof(*codep),sort32a); - - sortindex=alloca(n*sizeof(*sortindex)); - c->codelist=_ogg_malloc(n*sizeof(*c->codelist)); - /* the index is a reverse index */ - for(i=0;i<n;i++){ - int position=codep[i]-codes; - sortindex[position]=i; - } - - for(i=0;i<n;i++) - c->codelist[sortindex[i]]=codes[i]; - _ogg_free(codes); - } - - c->valuelist=_book_unquantize(s,n,sortindex); - c->dec_index=_ogg_malloc(n*sizeof(*c->dec_index)); - - for(n=0,i=0;i<s->entries;i++) - if(s->lengthlist[i]>0) - c->dec_index[sortindex[n++]]=i; - - c->dec_codelengths=_ogg_malloc(n*sizeof(*c->dec_codelengths)); - for(n=0,i=0;i<s->entries;i++) - if(s->lengthlist[i]>0) - c->dec_codelengths[sortindex[n++]]=s->lengthlist[i]; - - c->dec_firsttablen=_ilog(c->used_entries)-4; /* this is magic */ - if(c->dec_firsttablen<5)c->dec_firsttablen=5; - if(c->dec_firsttablen>8)c->dec_firsttablen=8; - - tabn=1<<c->dec_firsttablen; - c->dec_firsttable=_ogg_calloc(tabn,sizeof(*c->dec_firsttable)); - c->dec_maxlength=0; - - for(i=0;i<n;i++){ - if(c->dec_maxlength<c->dec_codelengths[i]) - c->dec_maxlength=c->dec_codelengths[i]; - if(c->dec_codelengths[i]<=c->dec_firsttablen){ - ogg_uint32_t orig=bitreverse(c->codelist[i]); - for(j=0;j<(1<<(c->dec_firsttablen-c->dec_codelengths[i]));j++) - c->dec_firsttable[orig|(j<<c->dec_codelengths[i])]=i+1; - } - } - - /* now fill in 'unused' entries in the firsttable with hi/lo search - hints for the non-direct-hits */ - { - ogg_uint32_t mask=0xfffffffeUL<<(31-c->dec_firsttablen); - long lo=0,hi=0; - - for(i=0;i<tabn;i++){ - ogg_uint32_t word=i<<(32-c->dec_firsttablen); - if(c->dec_firsttable[bitreverse(word)]==0){ - while((lo+1)<n && c->codelist[lo+1]<=word)lo++; - while( hi<n && word>=(c->codelist[hi]&mask))hi++; - - /* we only actually have 15 bits per hint to play with here. - In order to overflow gracefully (nothing breaks, efficiency - just drops), encode as the difference from the extremes. */ - { - unsigned long loval=lo; - unsigned long hival=n-hi; - - if(loval>0x7fff)loval=0x7fff; - if(hival>0x7fff)hival=0x7fff; - c->dec_firsttable[bitreverse(word)]= - 0x80000000UL | (loval<<15) | hival; - } - } - } - } - - - return(0); - err_out: - vorbis_book_clear(c); - return(-1); -} - -static float _dist(int el,float *ref, float *b,int step){ - int i; - float acc=0.f; - for(i=0;i<el;i++){ - float val=(ref[i]-b[i*step]); - acc+=val*val; - } - return(acc); -} - -int _best(codebook *book, float *a, int step){ - encode_aux_nearestmatch *nt=book->c->nearest_tree; - encode_aux_threshmatch *tt=book->c->thresh_tree; - encode_aux_pigeonhole *pt=book->c->pigeon_tree; - int dim=book->dim; - int ptr=0,k,o; - /*int savebest=-1; - float saverr;*/ - - /* do we have a threshhold encode hint? */ - if(tt){ - int index=0; - /* find the quant val of each scalar */ - for(k=0,o=step*(dim-1);k<dim;k++,o-=step){ - int i; - /* linear search the quant list for now; it's small and although - with > ~8 entries, it would be faster to bisect, this would be - a misplaced optimization for now */ - for(i=0;i<tt->threshvals-1;i++) - if(a[o]<tt->quantthresh[i])break; - - index=(index*tt->quantvals)+tt->quantmap[i]; - } - /* regular lattices are easy :-) */ - if(book->c->lengthlist[index]>0) /* is this unused? If so, we'll - use a decision tree after all - and fall through*/ - return(index); - } - - /* do we have a pigeonhole encode hint? */ - if(pt){ - const static_codebook *c=book->c; - int i,besti=-1; - float best=0.f; - int entry=0; - - /* dealing with sequentialness is a pain in the ass */ - if(c->q_sequencep){ - int pv; - long mul=1; - float qlast=0; - for(k=0,o=0;k<dim;k++,o+=step){ - pv=(int)((a[o]-qlast-pt->min)/pt->del); - if(pv<0 || pv>=pt->mapentries)break; - entry+=pt->pigeonmap[pv]*mul; - mul*=pt->quantvals; - qlast+=pv*pt->del+pt->min; - } - }else{ - for(k=0,o=step*(dim-1);k<dim;k++,o-=step){ - int pv=(int)((a[o]-pt->min)/pt->del); - if(pv<0 || pv>=pt->mapentries)break; - entry=entry*pt->quantvals+pt->pigeonmap[pv]; - } - } - - /* must be within the pigeonholable range; if we quant outside (or - in an entry that we define no list for), brute force it */ - if(k==dim && pt->fitlength[entry]){ - /* search the abbreviated list */ - long *list=pt->fitlist+pt->fitmap[entry]; - for(i=0;i<pt->fitlength[entry];i++){ - float this=_dist(dim,book->valuelist+list[i]*dim,a,step); - if(besti==-1 || this<best){ - best=this; - besti=list[i]; - } - } - - return(besti); - } - } - - if(nt){ - /* optimized using the decision tree */ - while(1){ - float c=0.f; - float *p=book->valuelist+nt->p[ptr]; - float *q=book->valuelist+nt->q[ptr]; - - for(k=0,o=0;k<dim;k++,o+=step) - c+=(p[k]-q[k])*(a[o]-(p[k]+q[k])*.5); - - if(c>0.f) /* in A */ - ptr= -nt->ptr0[ptr]; - else /* in B */ - ptr= -nt->ptr1[ptr]; - if(ptr<=0)break; - } - return(-ptr); - } - - /* brute force it! */ - { - const static_codebook *c=book->c; - int i,besti=-1; - float best=0.f; - float *e=book->valuelist; - for(i=0;i<book->entries;i++){ - if(c->lengthlist[i]>0){ - float this=_dist(dim,e,a,step); - if(besti==-1 || this<best){ - best=this; - besti=i; - } - } - e+=dim; - } - - /*if(savebest!=-1 && savebest!=besti){ - fprintf(stderr,"brute force/pigeonhole disagreement:\n" - "original:"); - for(i=0;i<dim*step;i+=step)fprintf(stderr,"%g,",a[i]); - fprintf(stderr,"\n" - "pigeonhole (entry %d, err %g):",savebest,saverr); - for(i=0;i<dim;i++)fprintf(stderr,"%g,", - (book->valuelist+savebest*dim)[i]); - fprintf(stderr,"\n" - "bruteforce (entry %d, err %g):",besti,best); - for(i=0;i<dim;i++)fprintf(stderr,"%g,", - (book->valuelist+besti*dim)[i]); - fprintf(stderr,"\n"); - }*/ - return(besti); - } -} - -/* returns the entry number and *modifies a* to the remainder value ********/ -int vorbis_book_besterror(codebook *book,float *a,int step,int addmul){ - int dim=book->dim,i,o; - int best=_best(book,a,step); - switch(addmul){ - case 0: - for(i=0,o=0;i<dim;i++,o+=step) - a[o]-=(book->valuelist+best*dim)[i]; - break; - case 1: - for(i=0,o=0;i<dim;i++,o+=step){ - float val=(book->valuelist+best*dim)[i]; - if(val==0){ - a[o]=0; - }else{ - a[o]/=val; - } - } - break; - } - return(best); -} - -long vorbis_book_codeword(codebook *book,int entry){ - if(book->c) /* only use with encode; decode optimizations are - allowed to break this */ - return book->codelist[entry]; - return -1; -} - -long vorbis_book_codelen(codebook *book,int entry){ - if(book->c) /* only use with encode; decode optimizations are - allowed to break this */ - return book->c->lengthlist[entry]; - return -1; -} - -#ifdef _V_SELFTEST - -/* Unit tests of the dequantizer; this stuff will be OK - cross-platform, I simply want to be sure that special mapping cases - actually work properly; a bug could go unnoticed for a while */ - -#include <stdio.h> - -/* cases: - - no mapping - full, explicit mapping - algorithmic mapping - - nonsequential - sequential -*/ - -static long full_quantlist1[]={0,1,2,3, 4,5,6,7, 8,3,6,1}; -static long partial_quantlist1[]={0,7,2}; - -/* no mapping */ -static_codebook test1={ - 4,16, - NULL, - 0, - 0,0,0,0, - NULL, - NULL,NULL -}; -static float *test1_result=NULL; - -/* linear, full mapping, nonsequential */ -static_codebook test2={ - 4,3, - NULL, - 2, - -533200896,1611661312,4,0, - full_quantlist1, - NULL,NULL -}; -static float test2_result[]={-3,-2,-1,0, 1,2,3,4, 5,0,3,-2}; - -/* linear, full mapping, sequential */ -static_codebook test3={ - 4,3, - NULL, - 2, - -533200896,1611661312,4,1, - full_quantlist1, - NULL,NULL -}; -static float test3_result[]={-3,-5,-6,-6, 1,3,6,10, 5,5,8,6}; - -/* linear, algorithmic mapping, nonsequential */ -static_codebook test4={ - 3,27, - NULL, - 1, - -533200896,1611661312,4,0, - partial_quantlist1, - NULL,NULL -}; -static float test4_result[]={-3,-3,-3, 4,-3,-3, -1,-3,-3, - -3, 4,-3, 4, 4,-3, -1, 4,-3, - -3,-1,-3, 4,-1,-3, -1,-1,-3, - -3,-3, 4, 4,-3, 4, -1,-3, 4, - -3, 4, 4, 4, 4, 4, -1, 4, 4, - -3,-1, 4, 4,-1, 4, -1,-1, 4, - -3,-3,-1, 4,-3,-1, -1,-3,-1, - -3, 4,-1, 4, 4,-1, -1, 4,-1, - -3,-1,-1, 4,-1,-1, -1,-1,-1}; - -/* linear, algorithmic mapping, sequential */ -static_codebook test5={ - 3,27, - NULL, - 1, - -533200896,1611661312,4,1, - partial_quantlist1, - NULL,NULL -}; -static float test5_result[]={-3,-6,-9, 4, 1,-2, -1,-4,-7, - -3, 1,-2, 4, 8, 5, -1, 3, 0, - -3,-4,-7, 4, 3, 0, -1,-2,-5, - -3,-6,-2, 4, 1, 5, -1,-4, 0, - -3, 1, 5, 4, 8,12, -1, 3, 7, - -3,-4, 0, 4, 3, 7, -1,-2, 2, - -3,-6,-7, 4, 1, 0, -1,-4,-5, - -3, 1, 0, 4, 8, 7, -1, 3, 2, - -3,-4,-5, 4, 3, 2, -1,-2,-3}; - -void run_test(static_codebook *b,float *comp){ - float *out=_book_unquantize(b,b->entries,NULL); - int i; - - if(comp){ - if(!out){ - fprintf(stderr,"_book_unquantize incorrectly returned NULL\n"); - exit(1); - } - - for(i=0;i<b->entries*b->dim;i++) - if(fabs(out[i]-comp[i])>.0001){ - fprintf(stderr,"disagreement in unquantized and reference data:\n" - "position %d, %g != %g\n",i,out[i],comp[i]); - exit(1); - } - - }else{ - if(out){ - fprintf(stderr,"_book_unquantize returned a value array: \n" - " correct result should have been NULL\n"); - exit(1); - } - } -} - -int main(){ - /* run the nine dequant tests, and compare to the hand-rolled results */ - fprintf(stderr,"Dequant test 1... "); - run_test(&test1,test1_result); - fprintf(stderr,"OK\nDequant test 2... "); - run_test(&test2,test2_result); - fprintf(stderr,"OK\nDequant test 3... "); - run_test(&test3,test3_result); - fprintf(stderr,"OK\nDequant test 4... "); - run_test(&test4,test4_result); - fprintf(stderr,"OK\nDequant test 5... "); - run_test(&test5,test5_result); - fprintf(stderr,"OK\n\n"); - - return(0); -} - -#endif diff --git a/lib/smallft.c b/lib/smallft.c deleted file mode 100644 index f3ccb422..00000000 --- a/lib/smallft.c +++ /dev/null @@ -1,1254 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: *unnormalized* fft transform - last mod: $Id: smallft.c,v 1.16 2001/12/20 01:00:30 segher Exp $ - - ********************************************************************/ - -/* FFT implementation from OggSquish, minus cosine transforms, - * minus all but radix 2/4 case. In Vorbis we only need this - * cut-down version. - * - * To do more than just power-of-two sized vectors, see the full - * version I wrote for NetLib. - * - * Note that the packing is a little strange; rather than the FFT r/i - * packing following R_0, I_n, R_1, I_1, R_2, I_2 ... R_n-1, I_n-1, - * it follows R_0, R_1, I_1, R_2, I_2 ... R_n-1, I_n-1, I_n like the - * FORTRAN version - */ - -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include "smallft.h" -#include "misc.h" - -static void drfti1(int n, float *wa, int *ifac){ - static int ntryh[4] = { 4,2,3,5 }; - static float tpi = 6.28318530717958648f; - float arg,argh,argld,fi; - int ntry=0,i,j=-1; - int k1, l1, l2, ib; - int ld, ii, ip, is, nq, nr; - int ido, ipm, nfm1; - int nl=n; - int nf=0; - - L101: - j++; - if (j < 4) - ntry=ntryh[j]; - else - ntry+=2; - - L104: - nq=nl/ntry; - nr=nl-ntry*nq; - if (nr!=0) goto L101; - - nf++; - ifac[nf+1]=ntry; - nl=nq; - if(ntry!=2)goto L107; - if(nf==1)goto L107; - - for (i=1;i<nf;i++){ - ib=nf-i+1; - ifac[ib+1]=ifac[ib]; - } - ifac[2] = 2; - - L107: - if(nl!=1)goto L104; - ifac[0]=n; - ifac[1]=nf; - argh=tpi/n; - is=0; - nfm1=nf-1; - l1=1; - - if(nfm1==0)return; - - for (k1=0;k1<nfm1;k1++){ - ip=ifac[k1+2]; - ld=0; - l2=l1*ip; - ido=n/l2; - ipm=ip-1; - - for (j=0;j<ipm;j++){ - ld+=l1; - i=is; - argld=(float)ld*argh; - fi=0.f; - for (ii=2;ii<ido;ii+=2){ - fi+=1.f; - arg=fi*argld; - wa[i++]=cos(arg); - wa[i++]=sin(arg); - } - is+=ido; - } - l1=l2; - } -} - -static void fdrffti(int n, float *wsave, int *ifac){ - - if (n == 1) return; - drfti1(n, wsave+n, ifac); -} - -static void dradf2(int ido,int l1,float *cc,float *ch,float *wa1){ - int i,k; - float ti2,tr2; - int t0,t1,t2,t3,t4,t5,t6; - - t1=0; - t0=(t2=l1*ido); - t3=ido<<1; - for(k=0;k<l1;k++){ - ch[t1<<1]=cc[t1]+cc[t2]; - ch[(t1<<1)+t3-1]=cc[t1]-cc[t2]; - t1+=ido; - t2+=ido; - } - - if(ido<2)return; - if(ido==2)goto L105; - - t1=0; - t2=t0; - for(k=0;k<l1;k++){ - t3=t2; - t4=(t1<<1)+(ido<<1); - t5=t1; - t6=t1+t1; - for(i=2;i<ido;i+=2){ - t3+=2; - t4-=2; - t5+=2; - t6+=2; - tr2=wa1[i-2]*cc[t3-1]+wa1[i-1]*cc[t3]; - ti2=wa1[i-2]*cc[t3]-wa1[i-1]*cc[t3-1]; - ch[t6]=cc[t5]+ti2; - ch[t4]=ti2-cc[t5]; - ch[t6-1]=cc[t5-1]+tr2; - ch[t4-1]=cc[t5-1]-tr2; - } - t1+=ido; - t2+=ido; - } - - if(ido%2==1)return; - - L105: - t3=(t2=(t1=ido)-1); - t2+=t0; - for(k=0;k<l1;k++){ - ch[t1]=-cc[t2]; - ch[t1-1]=cc[t3]; - t1+=ido<<1; - t2+=ido; - t3+=ido; - } -} - -static void dradf4(int ido,int l1,float *cc,float *ch,float *wa1, - float *wa2,float *wa3){ - static float hsqt2 = .70710678118654752f; - int i,k,t0,t1,t2,t3,t4,t5,t6; - float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4; - t0=l1*ido; - - t1=t0; - t4=t1<<1; - t2=t1+(t1<<1); - t3=0; - - for(k=0;k<l1;k++){ - tr1=cc[t1]+cc[t2]; - tr2=cc[t3]+cc[t4]; - - ch[t5=t3<<2]=tr1+tr2; - ch[(ido<<2)+t5-1]=tr2-tr1; - ch[(t5+=(ido<<1))-1]=cc[t3]-cc[t4]; - ch[t5]=cc[t2]-cc[t1]; - - t1+=ido; - t2+=ido; - t3+=ido; - t4+=ido; - } - - if(ido<2)return; - if(ido==2)goto L105; - - - t1=0; - for(k=0;k<l1;k++){ - t2=t1; - t4=t1<<2; - t5=(t6=ido<<1)+t4; - for(i=2;i<ido;i+=2){ - t3=(t2+=2); - t4+=2; - t5-=2; - - t3+=t0; - cr2=wa1[i-2]*cc[t3-1]+wa1[i-1]*cc[t3]; - ci2=wa1[i-2]*cc[t3]-wa1[i-1]*cc[t3-1]; - t3+=t0; - cr3=wa2[i-2]*cc[t3-1]+wa2[i-1]*cc[t3]; - ci3=wa2[i-2]*cc[t3]-wa2[i-1]*cc[t3-1]; - t3+=t0; - cr4=wa3[i-2]*cc[t3-1]+wa3[i-1]*cc[t3]; - ci4=wa3[i-2]*cc[t3]-wa3[i-1]*cc[t3-1]; - - tr1=cr2+cr4; - tr4=cr4-cr2; - ti1=ci2+ci4; - ti4=ci2-ci4; - - ti2=cc[t2]+ci3; - ti3=cc[t2]-ci3; - tr2=cc[t2-1]+cr3; - tr3=cc[t2-1]-cr3; - - ch[t4-1]=tr1+tr2; - ch[t4]=ti1+ti2; - - ch[t5-1]=tr3-ti4; - ch[t5]=tr4-ti3; - - ch[t4+t6-1]=ti4+tr3; - ch[t4+t6]=tr4+ti3; - - ch[t5+t6-1]=tr2-tr1; - ch[t5+t6]=ti1-ti2; - } - t1+=ido; - } - if(ido&1)return; - - L105: - - t2=(t1=t0+ido-1)+(t0<<1); - t3=ido<<2; - t4=ido; - t5=ido<<1; - t6=ido; - - for(k=0;k<l1;k++){ - ti1=-hsqt2*(cc[t1]+cc[t2]); - tr1=hsqt2*(cc[t1]-cc[t2]); - - ch[t4-1]=tr1+cc[t6-1]; - ch[t4+t5-1]=cc[t6-1]-tr1; - - ch[t4]=ti1-cc[t1+t0]; - ch[t4+t5]=ti1+cc[t1+t0]; - - t1+=ido; - t2+=ido; - t4+=t3; - t6+=ido; - } -} - -static void dradfg(int ido,int ip,int l1,int idl1,float *cc,float *c1, - float *c2,float *ch,float *ch2,float *wa){ - - static float tpi=6.283185307179586f; - int idij,ipph,i,j,k,l,ic,ik,is; - int t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10; - float dc2,ai1,ai2,ar1,ar2,ds2; - int nbd; - float dcp,arg,dsp,ar1h,ar2h; - int idp2,ipp2; - - arg=tpi/(float)ip; - dcp=cos(arg); - dsp=sin(arg); - ipph=(ip+1)>>1; - ipp2=ip; - idp2=ido; - nbd=(ido-1)>>1; - t0=l1*ido; - t10=ip*ido; - - if(ido==1)goto L119; - for(ik=0;ik<idl1;ik++)ch2[ik]=c2[ik]; - - t1=0; - for(j=1;j<ip;j++){ - t1+=t0; - t2=t1; - for(k=0;k<l1;k++){ - ch[t2]=c1[t2]; - t2+=ido; - } - } - - is=-ido; - t1=0; - if(nbd>l1){ - for(j=1;j<ip;j++){ - t1+=t0; - is+=ido; - t2= -ido+t1; - for(k=0;k<l1;k++){ - idij=is-1; - t2+=ido; - t3=t2; - for(i=2;i<ido;i+=2){ - idij+=2; - t3+=2; - ch[t3-1]=wa[idij-1]*c1[t3-1]+wa[idij]*c1[t3]; - ch[t3]=wa[idij-1]*c1[t3]-wa[idij]*c1[t3-1]; - } - } - } - }else{ - - for(j=1;j<ip;j++){ - is+=ido; - idij=is-1; - t1+=t0; - t2=t1; - for(i=2;i<ido;i+=2){ - idij+=2; - t2+=2; - t3=t2; - for(k=0;k<l1;k++){ - ch[t3-1]=wa[idij-1]*c1[t3-1]+wa[idij]*c1[t3]; - ch[t3]=wa[idij-1]*c1[t3]-wa[idij]*c1[t3-1]; - t3+=ido; - } - } - } - } - - t1=0; - t2=ipp2*t0; - if(nbd<l1){ - for(j=1;j<ipph;j++){ - t1+=t0; - t2-=t0; - t3=t1; - t4=t2; - for(i=2;i<ido;i+=2){ - t3+=2; - t4+=2; - t5=t3-ido; - t6=t4-ido; - for(k=0;k<l1;k++){ - t5+=ido; - t6+=ido; - c1[t5-1]=ch[t5-1]+ch[t6-1]; - c1[t6-1]=ch[t5]-ch[t6]; - c1[t5]=ch[t5]+ch[t6]; - c1[t6]=ch[t6-1]-ch[t5-1]; - } - } - } - }else{ - for(j=1;j<ipph;j++){ - t1+=t0; - t2-=t0; - t3=t1; - t4=t2; - for(k=0;k<l1;k++){ - t5=t3; - t6=t4; - for(i=2;i<ido;i+=2){ - t5+=2; - t6+=2; - c1[t5-1]=ch[t5-1]+ch[t6-1]; - c1[t6-1]=ch[t5]-ch[t6]; - c1[t5]=ch[t5]+ch[t6]; - c1[t6]=ch[t6-1]-ch[t5-1]; - } - t3+=ido; - t4+=ido; - } - } - } - -L119: - for(ik=0;ik<idl1;ik++)c2[ik]=ch2[ik]; - - t1=0; - t2=ipp2*idl1; - for(j=1;j<ipph;j++){ - t1+=t0; - t2-=t0; - t3=t1-ido; - t4=t2-ido; - for(k=0;k<l1;k++){ - t3+=ido; - t4+=ido; - c1[t3]=ch[t3]+ch[t4]; - c1[t4]=ch[t4]-ch[t3]; - } - } - - ar1=1.f; - ai1=0.f; - t1=0; - t2=ipp2*idl1; - t3=(ip-1)*idl1; - for(l=1;l<ipph;l++){ - t1+=idl1; - t2-=idl1; - ar1h=dcp*ar1-dsp*ai1; - ai1=dcp*ai1+dsp*ar1; - ar1=ar1h; - t4=t1; - t5=t2; - t6=t3; - t7=idl1; - - for(ik=0;ik<idl1;ik++){ - ch2[t4++]=c2[ik]+ar1*c2[t7++]; - ch2[t5++]=ai1*c2[t6++]; - } - - dc2=ar1; - ds2=ai1; - ar2=ar1; - ai2=ai1; - - t4=idl1; - t5=(ipp2-1)*idl1; - for(j=2;j<ipph;j++){ - t4+=idl1; - t5-=idl1; - - ar2h=dc2*ar2-ds2*ai2; - ai2=dc2*ai2+ds2*ar2; - ar2=ar2h; - - t6=t1; - t7=t2; - t8=t4; - t9=t5; - for(ik=0;ik<idl1;ik++){ - ch2[t6++]+=ar2*c2[t8++]; - ch2[t7++]+=ai2*c2[t9++]; - } - } - } - - t1=0; - for(j=1;j<ipph;j++){ - t1+=idl1; - t2=t1; - for(ik=0;ik<idl1;ik++)ch2[ik]+=c2[t2++]; - } - - if(ido<l1)goto L132; - - t1=0; - t2=0; - for(k=0;k<l1;k++){ - t3=t1; - t4=t2; - for(i=0;i<ido;i++)cc[t4++]=ch[t3++]; - t1+=ido; - t2+=t10; - } - - goto L135; - - L132: - for(i=0;i<ido;i++){ - t1=i; - t2=i; - for(k=0;k<l1;k++){ - cc[t2]=ch[t1]; - t1+=ido; - t2+=t10; - } - } - - L135: - t1=0; - t2=ido<<1; - t3=0; - t4=ipp2*t0; - for(j=1;j<ipph;j++){ - - t1+=t2; - t3+=t0; - t4-=t0; - - t5=t1; - t6=t3; - t7=t4; - - for(k=0;k<l1;k++){ - cc[t5-1]=ch[t6]; - cc[t5]=ch[t7]; - t5+=t10; - t6+=ido; - t7+=ido; - } - } - - if(ido==1)return; - if(nbd<l1)goto L141; - - t1=-ido; - t3=0; - t4=0; - t5=ipp2*t0; - for(j=1;j<ipph;j++){ - t1+=t2; - t3+=t2; - t4+=t0; - t5-=t0; - t6=t1; - t7=t3; - t8=t4; - t9=t5; - for(k=0;k<l1;k++){ - for(i=2;i<ido;i+=2){ - ic=idp2-i; - cc[i+t7-1]=ch[i+t8-1]+ch[i+t9-1]; - cc[ic+t6-1]=ch[i+t8-1]-ch[i+t9-1]; - cc[i+t7]=ch[i+t8]+ch[i+t9]; - cc[ic+t6]=ch[i+t9]-ch[i+t8]; - } - t6+=t10; - t7+=t10; - t8+=ido; - t9+=ido; - } - } - return; - - L141: - - t1=-ido; - t3=0; - t4=0; - t5=ipp2*t0; - for(j=1;j<ipph;j++){ - t1+=t2; - t3+=t2; - t4+=t0; - t5-=t0; - for(i=2;i<ido;i+=2){ - t6=idp2+t1-i; - t7=i+t3; - t8=i+t4; - t9=i+t5; - for(k=0;k<l1;k++){ - cc[t7-1]=ch[t8-1]+ch[t9-1]; - cc[t6-1]=ch[t8-1]-ch[t9-1]; - cc[t7]=ch[t8]+ch[t9]; - cc[t6]=ch[t9]-ch[t8]; - t6+=t10; - t7+=t10; - t8+=ido; - t9+=ido; - } - } - } -} - -static void drftf1(int n,float *c,float *ch,float *wa,int *ifac){ - int i,k1,l1,l2; - int na,kh,nf; - int ip,iw,ido,idl1,ix2,ix3; - - nf=ifac[1]; - na=1; - l2=n; - iw=n; - - for(k1=0;k1<nf;k1++){ - kh=nf-k1; - ip=ifac[kh+1]; - l1=l2/ip; - ido=n/l2; - idl1=ido*l1; - iw-=(ip-1)*ido; - na=1-na; - - if(ip!=4)goto L102; - - ix2=iw+ido; - ix3=ix2+ido; - if(na!=0) - dradf4(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1); - else - dradf4(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1); - goto L110; - - L102: - if(ip!=2)goto L104; - if(na!=0)goto L103; - - dradf2(ido,l1,c,ch,wa+iw-1); - goto L110; - - L103: - dradf2(ido,l1,ch,c,wa+iw-1); - goto L110; - - L104: - if(ido==1)na=1-na; - if(na!=0)goto L109; - - dradfg(ido,ip,l1,idl1,c,c,c,ch,ch,wa+iw-1); - na=1; - goto L110; - - L109: - dradfg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa+iw-1); - na=0; - - L110: - l2=l1; - } - - if(na==1)return; - - for(i=0;i<n;i++)c[i]=ch[i]; -} - -static void dradb2(int ido,int l1,float *cc,float *ch,float *wa1){ - int i,k,t0,t1,t2,t3,t4,t5,t6; - float ti2,tr2; - - t0=l1*ido; - - t1=0; - t2=0; - t3=(ido<<1)-1; - for(k=0;k<l1;k++){ - ch[t1]=cc[t2]+cc[t3+t2]; - ch[t1+t0]=cc[t2]-cc[t3+t2]; - t2=(t1+=ido)<<1; - } - - if(ido<2)return; - if(ido==2)goto L105; - - t1=0; - t2=0; - for(k=0;k<l1;k++){ - t3=t1; - t5=(t4=t2)+(ido<<1); - t6=t0+t1; - for(i=2;i<ido;i+=2){ - t3+=2; - t4+=2; - t5-=2; - t6+=2; - ch[t3-1]=cc[t4-1]+cc[t5-1]; - tr2=cc[t4-1]-cc[t5-1]; - ch[t3]=cc[t4]-cc[t5]; - ti2=cc[t4]+cc[t5]; - ch[t6-1]=wa1[i-2]*tr2-wa1[i-1]*ti2; - ch[t6]=wa1[i-2]*ti2+wa1[i-1]*tr2; - } - t2=(t1+=ido)<<1; - } - - if(ido%2==1)return; - -L105: - t1=ido-1; - t2=ido-1; - for(k=0;k<l1;k++){ - ch[t1]=cc[t2]+cc[t2]; - ch[t1+t0]=-(cc[t2+1]+cc[t2+1]); - t1+=ido; - t2+=ido<<1; - } -} - -static void dradb3(int ido,int l1,float *cc,float *ch,float *wa1, - float *wa2){ - static float taur = -.5f; - static float taui = .8660254037844386f; - int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10; - float ci2,ci3,di2,di3,cr2,cr3,dr2,dr3,ti2,tr2; - t0=l1*ido; - - t1=0; - t2=t0<<1; - t3=ido<<1; - t4=ido+(ido<<1); - t5=0; - for(k=0;k<l1;k++){ - tr2=cc[t3-1]+cc[t3-1]; - cr2=cc[t5]+(taur*tr2); - ch[t1]=cc[t5]+tr2; - ci3=taui*(cc[t3]+cc[t3]); - ch[t1+t0]=cr2-ci3; - ch[t1+t2]=cr2+ci3; - t1+=ido; - t3+=t4; - t5+=t4; - } - - if(ido==1)return; - - t1=0; - t3=ido<<1; - for(k=0;k<l1;k++){ - t7=t1+(t1<<1); - t6=(t5=t7+t3); - t8=t1; - t10=(t9=t1+t0)+t0; - - for(i=2;i<ido;i+=2){ - t5+=2; - t6-=2; - t7+=2; - t8+=2; - t9+=2; - t10+=2; - tr2=cc[t5-1]+cc[t6-1]; - cr2=cc[t7-1]+(taur*tr2); - ch[t8-1]=cc[t7-1]+tr2; - ti2=cc[t5]-cc[t6]; - ci2=cc[t7]+(taur*ti2); - ch[t8]=cc[t7]+ti2; - cr3=taui*(cc[t5-1]-cc[t6-1]); - ci3=taui*(cc[t5]+cc[t6]); - dr2=cr2-ci3; - dr3=cr2+ci3; - di2=ci2+cr3; - di3=ci2-cr3; - ch[t9-1]=wa1[i-2]*dr2-wa1[i-1]*di2; - ch[t9]=wa1[i-2]*di2+wa1[i-1]*dr2; - ch[t10-1]=wa2[i-2]*dr3-wa2[i-1]*di3; - ch[t10]=wa2[i-2]*di3+wa2[i-1]*dr3; - } - t1+=ido; - } -} - -static void dradb4(int ido,int l1,float *cc,float *ch,float *wa1, - float *wa2,float *wa3){ - static float sqrt2=1.414213562373095f; - int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8; - float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4; - t0=l1*ido; - - t1=0; - t2=ido<<2; - t3=0; - t6=ido<<1; - for(k=0;k<l1;k++){ - t4=t3+t6; - t5=t1; - tr3=cc[t4-1]+cc[t4-1]; - tr4=cc[t4]+cc[t4]; - tr1=cc[t3]-cc[(t4+=t6)-1]; - tr2=cc[t3]+cc[t4-1]; - ch[t5]=tr2+tr3; - ch[t5+=t0]=tr1-tr4; - ch[t5+=t0]=tr2-tr3; - ch[t5+=t0]=tr1+tr4; - t1+=ido; - t3+=t2; - } - - if(ido<2)return; - if(ido==2)goto L105; - - t1=0; - for(k=0;k<l1;k++){ - t5=(t4=(t3=(t2=t1<<2)+t6))+t6; - t7=t1; - for(i=2;i<ido;i+=2){ - t2+=2; - t3+=2; - t4-=2; - t5-=2; - t7+=2; - ti1=cc[t2]+cc[t5]; - ti2=cc[t2]-cc[t5]; - ti3=cc[t3]-cc[t4]; - tr4=cc[t3]+cc[t4]; - tr1=cc[t2-1]-cc[t5-1]; - tr2=cc[t2-1]+cc[t5-1]; - ti4=cc[t3-1]-cc[t4-1]; - tr3=cc[t3-1]+cc[t4-1]; - ch[t7-1]=tr2+tr3; - cr3=tr2-tr3; - ch[t7]=ti2+ti3; - ci3=ti2-ti3; - cr2=tr1-tr4; - cr4=tr1+tr4; - ci2=ti1+ti4; - ci4=ti1-ti4; - - ch[(t8=t7+t0)-1]=wa1[i-2]*cr2-wa1[i-1]*ci2; - ch[t8]=wa1[i-2]*ci2+wa1[i-1]*cr2; - ch[(t8+=t0)-1]=wa2[i-2]*cr3-wa2[i-1]*ci3; - ch[t8]=wa2[i-2]*ci3+wa2[i-1]*cr3; - ch[(t8+=t0)-1]=wa3[i-2]*cr4-wa3[i-1]*ci4; - ch[t8]=wa3[i-2]*ci4+wa3[i-1]*cr4; - } - t1+=ido; - } - - if(ido%2 == 1)return; - - L105: - - t1=ido; - t2=ido<<2; - t3=ido-1; - t4=ido+(ido<<1); - for(k=0;k<l1;k++){ - t5=t3; - ti1=cc[t1]+cc[t4]; - ti2=cc[t4]-cc[t1]; - tr1=cc[t1-1]-cc[t4-1]; - tr2=cc[t1-1]+cc[t4-1]; - ch[t5]=tr2+tr2; - ch[t5+=t0]=sqrt2*(tr1-ti1); - ch[t5+=t0]=ti2+ti2; - ch[t5+=t0]=-sqrt2*(tr1+ti1); - - t3+=ido; - t1+=t2; - t4+=t2; - } -} - -static void dradbg(int ido,int ip,int l1,int idl1,float *cc,float *c1, - float *c2,float *ch,float *ch2,float *wa){ - static float tpi=6.283185307179586f; - int idij,ipph,i,j,k,l,ik,is,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10, - t11,t12; - float dc2,ai1,ai2,ar1,ar2,ds2; - int nbd; - float dcp,arg,dsp,ar1h,ar2h; - int ipp2; - - t10=ip*ido; - t0=l1*ido; - arg=tpi/(float)ip; - dcp=cos(arg); - dsp=sin(arg); - nbd=(ido-1)>>1; - ipp2=ip; - ipph=(ip+1)>>1; - if(ido<l1)goto L103; - - t1=0; - t2=0; - for(k=0;k<l1;k++){ - t3=t1; - t4=t2; - for(i=0;i<ido;i++){ - ch[t3]=cc[t4]; - t3++; - t4++; - } - t1+=ido; - t2+=t10; - } - goto L106; - - L103: - t1=0; - for(i=0;i<ido;i++){ - t2=t1; - t3=t1; - for(k=0;k<l1;k++){ - ch[t2]=cc[t3]; - t2+=ido; - t3+=t10; - } - t1++; - } - - L106: - t1=0; - t2=ipp2*t0; - t7=(t5=ido<<1); - for(j=1;j<ipph;j++){ - t1+=t0; - t2-=t0; - t3=t1; - t4=t2; - t6=t5; - for(k=0;k<l1;k++){ - ch[t3]=cc[t6-1]+cc[t6-1]; - ch[t4]=cc[t6]+cc[t6]; - t3+=ido; - t4+=ido; - t6+=t10; - } - t5+=t7; - } - - if (ido == 1)goto L116; - if(nbd<l1)goto L112; - - t1=0; - t2=ipp2*t0; - t7=0; - for(j=1;j<ipph;j++){ - t1+=t0; - t2-=t0; - t3=t1; - t4=t2; - - t7+=(ido<<1); - t8=t7; - for(k=0;k<l1;k++){ - t5=t3; - t6=t4; - t9=t8; - t11=t8; - for(i=2;i<ido;i+=2){ - t5+=2; - t6+=2; - t9+=2; - t11-=2; - ch[t5-1]=cc[t9-1]+cc[t11-1]; - ch[t6-1]=cc[t9-1]-cc[t11-1]; - ch[t5]=cc[t9]-cc[t11]; - ch[t6]=cc[t9]+cc[t11]; - } - t3+=ido; - t4+=ido; - t8+=t10; - } - } - goto L116; - - L112: - t1=0; - t2=ipp2*t0; - t7=0; - for(j=1;j<ipph;j++){ - t1+=t0; - t2-=t0; - t3=t1; - t4=t2; - t7+=(ido<<1); - t8=t7; - t9=t7; - for(i=2;i<ido;i+=2){ - t3+=2; - t4+=2; - t8+=2; - t9-=2; - t5=t3; - t6=t4; - t11=t8; - t12=t9; - for(k=0;k<l1;k++){ - ch[t5-1]=cc[t11-1]+cc[t12-1]; - ch[t6-1]=cc[t11-1]-cc[t12-1]; - ch[t5]=cc[t11]-cc[t12]; - ch[t6]=cc[t11]+cc[t12]; - t5+=ido; - t6+=ido; - t11+=t10; - t12+=t10; - } - } - } - -L116: - ar1=1.f; - ai1=0.f; - t1=0; - t9=(t2=ipp2*idl1); - t3=(ip-1)*idl1; - for(l=1;l<ipph;l++){ - t1+=idl1; - t2-=idl1; - - ar1h=dcp*ar1-dsp*ai1; - ai1=dcp*ai1+dsp*ar1; - ar1=ar1h; - t4=t1; - t5=t2; - t6=0; - t7=idl1; - t8=t3; - for(ik=0;ik<idl1;ik++){ - c2[t4++]=ch2[t6++]+ar1*ch2[t7++]; - c2[t5++]=ai1*ch2[t8++]; - } - dc2=ar1; - ds2=ai1; - ar2=ar1; - ai2=ai1; - - t6=idl1; - t7=t9-idl1; - for(j=2;j<ipph;j++){ - t6+=idl1; - t7-=idl1; - ar2h=dc2*ar2-ds2*ai2; - ai2=dc2*ai2+ds2*ar2; - ar2=ar2h; - t4=t1; - t5=t2; - t11=t6; - t12=t7; - for(ik=0;ik<idl1;ik++){ - c2[t4++]+=ar2*ch2[t11++]; - c2[t5++]+=ai2*ch2[t12++]; - } - } - } - - t1=0; - for(j=1;j<ipph;j++){ - t1+=idl1; - t2=t1; - for(ik=0;ik<idl1;ik++)ch2[ik]+=ch2[t2++]; - } - - t1=0; - t2=ipp2*t0; - for(j=1;j<ipph;j++){ - t1+=t0; - t2-=t0; - t3=t1; - t4=t2; - for(k=0;k<l1;k++){ - ch[t3]=c1[t3]-c1[t4]; - ch[t4]=c1[t3]+c1[t4]; - t3+=ido; - t4+=ido; - } - } - - if(ido==1)goto L132; - if(nbd<l1)goto L128; - - t1=0; - t2=ipp2*t0; - for(j=1;j<ipph;j++){ - t1+=t0; - t2-=t0; - t3=t1; - t4=t2; - for(k=0;k<l1;k++){ - t5=t3; - t6=t4; - for(i=2;i<ido;i+=2){ - t5+=2; - t6+=2; - ch[t5-1]=c1[t5-1]-c1[t6]; - ch[t6-1]=c1[t5-1]+c1[t6]; - ch[t5]=c1[t5]+c1[t6-1]; - ch[t6]=c1[t5]-c1[t6-1]; - } - t3+=ido; - t4+=ido; - } - } - goto L132; - - L128: - t1=0; - t2=ipp2*t0; - for(j=1;j<ipph;j++){ - t1+=t0; - t2-=t0; - t3=t1; - t4=t2; - for(i=2;i<ido;i+=2){ - t3+=2; - t4+=2; - t5=t3; - t6=t4; - for(k=0;k<l1;k++){ - ch[t5-1]=c1[t5-1]-c1[t6]; - ch[t6-1]=c1[t5-1]+c1[t6]; - ch[t5]=c1[t5]+c1[t6-1]; - ch[t6]=c1[t5]-c1[t6-1]; - t5+=ido; - t6+=ido; - } - } - } - -L132: - if(ido==1)return; - - for(ik=0;ik<idl1;ik++)c2[ik]=ch2[ik]; - - t1=0; - for(j=1;j<ip;j++){ - t2=(t1+=t0); - for(k=0;k<l1;k++){ - c1[t2]=ch[t2]; - t2+=ido; - } - } - - if(nbd>l1)goto L139; - - is= -ido-1; - t1=0; - for(j=1;j<ip;j++){ - is+=ido; - t1+=t0; - idij=is; - t2=t1; - for(i=2;i<ido;i+=2){ - t2+=2; - idij+=2; - t3=t2; - for(k=0;k<l1;k++){ - c1[t3-1]=wa[idij-1]*ch[t3-1]-wa[idij]*ch[t3]; - c1[t3]=wa[idij-1]*ch[t3]+wa[idij]*ch[t3-1]; - t3+=ido; - } - } - } - return; - - L139: - is= -ido-1; - t1=0; - for(j=1;j<ip;j++){ - is+=ido; - t1+=t0; - t2=t1; - for(k=0;k<l1;k++){ - idij=is; - t3=t2; - for(i=2;i<ido;i+=2){ - idij+=2; - t3+=2; - c1[t3-1]=wa[idij-1]*ch[t3-1]-wa[idij]*ch[t3]; - c1[t3]=wa[idij-1]*ch[t3]+wa[idij]*ch[t3-1]; - } - t2+=ido; - } - } -} - -static void drftb1(int n, float *c, float *ch, float *wa, int *ifac){ - int i,k1,l1,l2; - int na; - int nf,ip,iw,ix2,ix3,ido,idl1; - - nf=ifac[1]; - na=0; - l1=1; - iw=1; - - for(k1=0;k1<nf;k1++){ - ip=ifac[k1 + 2]; - l2=ip*l1; - ido=n/l2; - idl1=ido*l1; - if(ip!=4)goto L103; - ix2=iw+ido; - ix3=ix2+ido; - - if(na!=0) - dradb4(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1); - else - dradb4(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1); - na=1-na; - goto L115; - - L103: - if(ip!=2)goto L106; - - if(na!=0) - dradb2(ido,l1,ch,c,wa+iw-1); - else - dradb2(ido,l1,c,ch,wa+iw-1); - na=1-na; - goto L115; - - L106: - if(ip!=3)goto L109; - - ix2=iw+ido; - if(na!=0) - dradb3(ido,l1,ch,c,wa+iw-1,wa+ix2-1); - else - dradb3(ido,l1,c,ch,wa+iw-1,wa+ix2-1); - na=1-na; - goto L115; - - L109: -/* The radix five case can be translated later..... */ -/* if(ip!=5)goto L112; - - ix2=iw+ido; - ix3=ix2+ido; - ix4=ix3+ido; - if(na!=0) - dradb5(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1,wa+ix4-1); - else - dradb5(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1,wa+ix4-1); - na=1-na; - goto L115; - - L112:*/ - if(na!=0) - dradbg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa+iw-1); - else - dradbg(ido,ip,l1,idl1,c,c,c,ch,ch,wa+iw-1); - if(ido==1)na=1-na; - - L115: - l1=l2; - iw+=(ip-1)*ido; - } - - if(na==0)return; - - for(i=0;i<n;i++)c[i]=ch[i]; -} - -void drft_forward(drft_lookup *l,float *data){ - if(l->n==1)return; - drftf1(l->n,data,l->trigcache,l->trigcache+l->n,l->splitcache); -} - -void drft_backward(drft_lookup *l,float *data){ - if (l->n==1)return; - drftb1(l->n,data,l->trigcache,l->trigcache+l->n,l->splitcache); -} - -void drft_init(drft_lookup *l,int n){ - l->n=n; - l->trigcache=_ogg_calloc(3*n,sizeof(*l->trigcache)); - l->splitcache=_ogg_calloc(32,sizeof(*l->splitcache)); - fdrffti(n, l->trigcache, l->splitcache); -} - -void drft_clear(drft_lookup *l){ - if(l){ - if(l->trigcache)_ogg_free(l->trigcache); - if(l->splitcache)_ogg_free(l->splitcache); - memset(l,0,sizeof(*l)); - } -} diff --git a/lib/smallft.h b/lib/smallft.h deleted file mode 100644 index cfe5821d..00000000 --- a/lib/smallft.h +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: fft transform - last mod: $Id: smallft.h,v 1.11 2001/12/20 01:00:30 segher Exp $ - - ********************************************************************/ - -#ifndef _V_SMFT_H_ -#define _V_SMFT_H_ - -#include "vorbis/codec.h" - -typedef struct { - int n; - float *trigcache; - int *splitcache; -} drft_lookup; - -extern void drft_forward(drft_lookup *l,float *data); -extern void drft_backward(drft_lookup *l,float *data); -extern void drft_init(drft_lookup *l,int n); -extern void drft_clear(drft_lookup *l); - -#endif diff --git a/lib/synthesis.c b/lib/synthesis.c deleted file mode 100644 index 52cf51aa..00000000 --- a/lib/synthesis.c +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: single-block PCM synthesis - last mod: $Id: synthesis.c,v 1.25 2001/12/20 01:00:30 segher Exp $ - - ********************************************************************/ - -#include <stdio.h> -#include <ogg/ogg.h> -#include "vorbis/codec.h" -#include "codec_internal.h" -#include "registry.h" -#include "misc.h" -#include "os.h" - -int vorbis_synthesis(vorbis_block *vb,ogg_packet *op){ - vorbis_dsp_state *vd=vb->vd; - backend_lookup_state *b=vd->backend_state; - vorbis_info *vi=vd->vi; - codec_setup_info *ci=vi->codec_setup; - oggpack_buffer *opb=&vb->opb; - int type,mode,i; - - /* first things first. Make sure decode is ready */ - _vorbis_block_ripcord(vb); - oggpack_readinit(opb,op->packet,op->bytes); - - /* Check the packet type */ - if(oggpack_read(opb,1)!=0){ - /* Oops. This is not an audio data packet */ - return(OV_ENOTAUDIO); - } - - /* read our mode and pre/post windowsize */ - mode=oggpack_read(opb,b->modebits); - if(mode==-1)return(OV_EBADPACKET); - - vb->mode=mode; - vb->W=ci->mode_param[mode]->blockflag; - if(vb->W){ - vb->lW=oggpack_read(opb,1); - vb->nW=oggpack_read(opb,1); - if(vb->nW==-1) return(OV_EBADPACKET); - }else{ - vb->lW=0; - vb->nW=0; - } - - /* more setup */ - vb->granulepos=op->granulepos; - vb->sequence=op->packetno-3; /* first block is third packet */ - vb->eofflag=op->e_o_s; - - /* alloc pcm passback storage */ - vb->pcmend=ci->blocksizes[vb->W]; - vb->pcm=_vorbis_block_alloc(vb,sizeof(*vb->pcm)*vi->channels); - for(i=0;i<vi->channels;i++) - vb->pcm[i]=_vorbis_block_alloc(vb,vb->pcmend*sizeof(*vb->pcm[i])); - - /* unpack_header enforces range checking */ - type=ci->map_type[ci->mode_param[mode]->mapping]; - - return(_mapping_P[type]->inverse(vb,b->mode[mode])); -} - -long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op){ - codec_setup_info *ci=vi->codec_setup; - oggpack_buffer opb; - int mode; - - oggpack_readinit(&opb,op->packet,op->bytes); - - /* Check the packet type */ - if(oggpack_read(&opb,1)!=0){ - /* Oops. This is not an audio data packet */ - return(OV_ENOTAUDIO); - } - - { - int modebits=0; - int v=ci->modes; - while(v>1){ - modebits++; - v>>=1; - } - - /* read our mode and pre/post windowsize */ - mode=oggpack_read(&opb,modebits); - } - if(mode==-1)return(OV_EBADPACKET); - return(ci->blocksizes[ci->mode_param[mode]->blockflag]); -} - - diff --git a/lib/time0.c b/lib/time0.c deleted file mode 100644 index 3d3f1d8f..00000000 --- a/lib/time0.c +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: time backend 0 (dummy) - last mod: $Id: time0.c,v 1.11 2001/12/20 01:00:30 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <string.h> -#include "vorbis/codec.h" -#include "codec_internal.h" -#include "registry.h" -#include "misc.h" - -static void time0_pack (vorbis_info_time *i,oggpack_buffer *opb){ -} -static vorbis_info_time *time0_unpack (vorbis_info *vi,oggpack_buffer *opb){ - return ""; - -} -static vorbis_info_time *time0_copy_info (vorbis_info_time *vi){ - return ""; -} -static vorbis_look_time *time0_look (vorbis_dsp_state *vd,vorbis_info_mode *mi, - vorbis_info_time *i){ - return ""; -} -static void time0_free_info(vorbis_info_time *i){ -} -static void time0_free_look(vorbis_look_time *i){ -} -static int time0_forward(vorbis_block *vb,vorbis_look_time *i, - float *in,float *out){ - return(0); -} -static int time0_inverse(vorbis_block *vb,vorbis_look_time *i, - float *in,float *out){ - return(0); -} - -/* export hooks */ -vorbis_func_time time0_exportbundle={ - &time0_pack,&time0_unpack,&time0_look,&time0_copy_info,&time0_free_info, - &time0_free_look,&time0_forward,&time0_inverse -}; diff --git a/lib/tone.c b/lib/tone.c deleted file mode 100644 index daf2f931..00000000 --- a/lib/tone.c +++ /dev/null @@ -1,54 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <string.h> - -void usage(){ - fprintf(stderr,"tone <frequency_Hz>,[<amplitude>] [<frequency_Hz>,[<amplitude>]...]\n"); - exit(1); -} - -int main (int argc,char *argv[]){ - int i,j; - double *f; - double *amp; - - if(argc<2)usage(); - - f=alloca(sizeof(*f)*(argc-1)); - amp=alloca(sizeof(*amp)*(argc-1)); - - i=0; - while(argv[i+1]){ - char *pos=strchr(argv[i+1],','); - - f[i]=atof(argv[i+1]); - if(pos) - amp[i]=atof(pos+1)*32767.f; - else - amp[i]=32767.f; - - fprintf(stderr,"%g Hz, %g amp\n",f[i],amp[i]); - - i++; - } - - for(i=0;i<44100*10;i++){ - float val=0; - int ival; - for(j=0;j<argc-1;j++) - val+=amp[j]*sin(i/44100.f*f[j]*2*M_PI); - ival=rint(val); - - if(ival>32767.f)ival=32767.f; - if(ival<-32768.f)ival=-32768.f; - - fprintf(stdout,"%c%c%c%c", - (char)(ival&0xff), - (char)((ival>>8)&0xff), - (char)(ival&0xff), - (char)((ival>>8)&0xff)); - } - return(0); -} - diff --git a/lib/vorbisfile.c b/lib/vorbisfile.c deleted file mode 100644 index 01855467..00000000 --- a/lib/vorbisfile.c +++ /dev/null @@ -1,1532 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: stdio-based convenience library for opening/seeking/decoding - last mod: $Id: vorbisfile.c,v 1.55 2002/01/22 08:06:08 xiphmont Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <stdio.h> -#include <errno.h> -#include <string.h> -#include <math.h> - -#include "vorbis/codec.h" -#include "vorbis/vorbisfile.h" - -#include "os.h" -#include "misc.h" - -/* A 'chained bitstream' is a Vorbis bitstream that contains more than - one logical bitstream arranged end to end (the only form of Ogg - multiplexing allowed in a Vorbis bitstream; grouping [parallel - multiplexing] is not allowed in Vorbis) */ - -/* A Vorbis file can be played beginning to end (streamed) without - worrying ahead of time about chaining (see decoder_example.c). If - we have the whole file, however, and want random access - (seeking/scrubbing) or desire to know the total length/time of a - file, we need to account for the possibility of chaining. */ - -/* We can handle things a number of ways; we can determine the entire - bitstream structure right off the bat, or find pieces on demand. - This example determines and caches structure for the entire - bitstream, but builds a virtual decoder on the fly when moving - between links in the chain. */ - -/* There are also different ways to implement seeking. Enough - information exists in an Ogg bitstream to seek to - sample-granularity positions in the output. Or, one can seek by - picking some portion of the stream roughly in the desired area if - we only want coarse navigation through the stream. */ - -/************************************************************************* - * Many, many internal helpers. The intention is not to be confusing; - * rampant duplication and monolithic function implementation would be - * harder to understand anyway. The high level functions are last. Begin - * grokking near the end of the file */ - -/* read a little more data from the file/pipe into the ogg_sync framer -*/ -#define CHUNKSIZE 8500 /* a shade over 8k; anyone using pages well - over 8k gets what they deserve */ -static long _get_data(OggVorbis_File *vf){ - errno=0; - if(vf->datasource){ - char *buffer=ogg_sync_buffer(&vf->oy,CHUNKSIZE); - long bytes=(vf->callbacks.read_func)(buffer,1,CHUNKSIZE,vf->datasource); - if(bytes>0)ogg_sync_wrote(&vf->oy,bytes); - if(bytes==0 && errno)return(-1); - return(bytes); - }else - return(0); -} - -/* save a tiny smidge of verbosity to make the code more readable */ -static void _seek_helper(OggVorbis_File *vf,long offset){ - if(vf->datasource){ - (vf->callbacks.seek_func)(vf->datasource, offset, SEEK_SET); - vf->offset=offset; - ogg_sync_reset(&vf->oy); - }else{ - /* shouldn't happen unless someone writes a broken callback */ - return; - } -} - -/* The read/seek functions track absolute position within the stream */ - -/* from the head of the stream, get the next page. boundary specifies - if the function is allowed to fetch more data from the stream (and - how much) or only use internally buffered data. - - boundary: -1) unbounded search - 0) read no additional data; use cached only - n) search for a new page beginning for n bytes - - return: <0) did not find a page (OV_FALSE, OV_EOF, OV_EREAD) - n) found a page at absolute offset n */ - -static long _get_next_page(OggVorbis_File *vf,ogg_page *og,int boundary){ - if(boundary>0)boundary+=vf->offset; - while(1){ - long more; - - if(boundary>0 && vf->offset>=boundary)return(OV_FALSE); - more=ogg_sync_pageseek(&vf->oy,og); - - if(more<0){ - /* skipped n bytes */ - vf->offset-=more; - }else{ - if(more==0){ - /* send more paramedics */ - if(!boundary)return(OV_FALSE); - { - long ret=_get_data(vf); - if(ret==0)return(OV_EOF); - if(ret<0)return(OV_EREAD); - } - }else{ - /* got a page. Return the offset at the page beginning, - advance the internal offset past the page end */ - long ret=vf->offset; - vf->offset+=more; - return(ret); - - } - } - } -} - -/* find the latest page beginning before the current stream cursor - position. Much dirtier than the above as Ogg doesn't have any - backward search linkage. no 'readp' as it will certainly have to - read. */ -/* returns offset or OV_EREAD, OV_FAULT */ -static long _get_prev_page(OggVorbis_File *vf,ogg_page *og){ - long begin=vf->offset; - long ret; - int offset=-1; - - while(offset==-1){ - begin-=CHUNKSIZE; - if(begin<0) - begin=0; - _seek_helper(vf,begin); - while(vf->offset<begin+CHUNKSIZE){ - ret=_get_next_page(vf,og,begin+CHUNKSIZE-vf->offset); - if(ret==OV_EREAD)return(OV_EREAD); - if(ret<0){ - break; - }else{ - offset=ret; - } - } - } - - /* we have the offset. Actually snork and hold the page now */ - _seek_helper(vf,offset); - ret=_get_next_page(vf,og,CHUNKSIZE); - if(ret<0) - /* this shouldn't be possible */ - return(OV_EFAULT); - - return(offset); -} - -/* finds each bitstream link one at a time using a bisection search - (has to begin by knowing the offset of the lb's initial page). - Recurses for each link so it can alloc the link storage after - finding them all, then unroll and fill the cache at the same time */ -static int _bisect_forward_serialno(OggVorbis_File *vf, - long begin, - long searched, - long end, - long currentno, - long m){ - long endsearched=end; - long next=end; - ogg_page og; - long ret; - - /* the below guards against garbage seperating the last and - first pages of two links. */ - while(searched<endsearched){ - long bisect; - - if(endsearched-searched<CHUNKSIZE){ - bisect=searched; - }else{ - bisect=(searched+endsearched)/2; - } - - _seek_helper(vf,bisect); - ret=_get_next_page(vf,&og,-1); - if(ret==OV_EREAD)return(OV_EREAD); - if(ret<0 || ogg_page_serialno(&og)!=currentno){ - endsearched=bisect; - if(ret>=0)next=ret; - }else{ - searched=ret+og.header_len+og.body_len; - } - } - - _seek_helper(vf,next); - ret=_get_next_page(vf,&og,-1); - if(ret==OV_EREAD)return(OV_EREAD); - - if(searched>=end || ret<0){ - vf->links=m+1; - vf->offsets=_ogg_malloc((m+2)*sizeof(*vf->offsets)); - vf->offsets[m+1]=searched; - }else{ - ret=_bisect_forward_serialno(vf,next,vf->offset, - end,ogg_page_serialno(&og),m+1); - if(ret==OV_EREAD)return(OV_EREAD); - } - - vf->offsets[m]=begin; - return(0); -} - -/* uses the local ogg_stream storage in vf; this is important for - non-streaming input sources */ -static int _fetch_headers(OggVorbis_File *vf,vorbis_info *vi,vorbis_comment *vc, - long *serialno,ogg_page *og_ptr){ - ogg_page og; - ogg_packet op; - int i,ret=0; - - if(!og_ptr){ - ret=_get_next_page(vf,&og,CHUNKSIZE); - if(ret==OV_EREAD)return(OV_EREAD); - if(ret<0)return OV_ENOTVORBIS; - og_ptr=&og; - } - - if(serialno)*serialno=ogg_page_serialno(og_ptr); - ogg_stream_init(&vf->os,ogg_page_serialno(og_ptr)); - vf->ready_state=STREAMSET; - - /* extract the initial header from the first page and verify that the - Ogg bitstream is in fact Vorbis data */ - - vorbis_info_init(vi); - vorbis_comment_init(vc); - - i=0; - while(i<3){ - ogg_stream_pagein(&vf->os,og_ptr); - while(i<3){ - int result=ogg_stream_packetout(&vf->os,&op); - if(result==0)break; - if(result==-1){ - ret=OV_EBADHEADER; - goto bail_header; - } - if((ret=vorbis_synthesis_headerin(vi,vc,&op))){ - goto bail_header; - } - i++; - } - if(i<3) - if(_get_next_page(vf,og_ptr,CHUNKSIZE)<0){ - ret=OV_EBADHEADER; - goto bail_header; - } - } - return 0; - - bail_header: - vorbis_info_clear(vi); - vorbis_comment_clear(vc); - ogg_stream_clear(&vf->os); - vf->ready_state=OPENED; - - return ret; -} - -/* last step of the OggVorbis_File initialization; get all the - vorbis_info structs and PCM positions. Only called by the seekable - initialization (local stream storage is hacked slightly; pay - attention to how that's done) */ - -/* this is void and does not propogate errors up because we want to be - able to open and use damaged bitstreams as well as we can. Just - watch out for missing information for links in the OggVorbis_File - struct */ -static void _prefetch_all_headers(OggVorbis_File *vf, long dataoffset){ - ogg_page og; - int i,ret; - - vf->vi=_ogg_realloc(vf->vi,vf->links*sizeof(*vf->vi)); - vf->vc=_ogg_realloc(vf->vc,vf->links*sizeof(*vf->vc)); - vf->dataoffsets=_ogg_malloc(vf->links*sizeof(*vf->dataoffsets)); - vf->pcmlengths=_ogg_malloc(vf->links*sizeof(*vf->pcmlengths)); - vf->serialnos=_ogg_malloc(vf->links*sizeof(*vf->serialnos)); - - for(i=0;i<vf->links;i++){ - if(i==0){ - /* we already grabbed the initial header earlier. Just set the offset */ - vf->dataoffsets[i]=dataoffset; - }else{ - - /* seek to the location of the initial header */ - - _seek_helper(vf,vf->offsets[i]); - if(_fetch_headers(vf,vf->vi+i,vf->vc+i,NULL,NULL)<0){ - vf->dataoffsets[i]=-1; - }else{ - vf->dataoffsets[i]=vf->offset; - ogg_stream_clear(&vf->os); - } - } - - /* get the serial number and PCM length of this link. To do this, - get the last page of the stream */ - { - long end=vf->offsets[i+1]; - _seek_helper(vf,end); - - while(1){ - ret=_get_prev_page(vf,&og); - if(ret<0){ - /* this should not be possible */ - vorbis_info_clear(vf->vi+i); - vorbis_comment_clear(vf->vc+i); - break; - } - if(ogg_page_granulepos(&og)!=-1){ - vf->serialnos[i]=ogg_page_serialno(&og); - vf->pcmlengths[i]=ogg_page_granulepos(&og); - break; - } - vf->offset=ret; - } - } - } -} - -static void _make_decode_ready(OggVorbis_File *vf){ - if(vf->ready_state!=STREAMSET)return; - if(vf->seekable){ - vorbis_synthesis_init(&vf->vd,vf->vi+vf->current_link); - }else{ - vorbis_synthesis_init(&vf->vd,vf->vi); - } - vorbis_block_init(&vf->vd,&vf->vb); - vf->ready_state=INITSET; - return; -} - -static int _open_seekable2(OggVorbis_File *vf){ - long serialno=vf->current_serialno,end; - long dataoffset=vf->offset; - ogg_page og; - - /* we're partially open and have a first link header state in - storage in vf */ - /* we can seek, so set out learning all about this file */ - (vf->callbacks.seek_func)(vf->datasource,0,SEEK_END); - vf->offset=vf->end=(vf->callbacks.tell_func)(vf->datasource); - - /* We get the offset for the last page of the physical bitstream. - Most OggVorbis files will contain a single logical bitstream */ - end=_get_prev_page(vf,&og); - if(end<0){ - ov_clear(vf); - return(end); - } - - /* more than one logical bitstream? */ - if(ogg_page_serialno(&og)!=serialno){ - - /* Chained bitstream. Bisect-search each logical bitstream - section. Do so based on serial number only */ - if(_bisect_forward_serialno(vf,0,0,end+1,serialno,0)<0){ - ov_clear(vf); - return(OV_EREAD); - } - - }else{ - - /* Only one logical bitstream */ - if(_bisect_forward_serialno(vf,0,end,end+1,serialno,0)){ - ov_clear(vf); - return(OV_EREAD); - } - - } - - /* the initial header memory is referenced by vf after; don't free it */ - _prefetch_all_headers(vf,dataoffset); - return(ov_raw_seek(vf,0)); -} - -/* clear out the current logical bitstream decoder */ -static void _decode_clear(OggVorbis_File *vf){ - ogg_stream_clear(&vf->os); - vorbis_dsp_clear(&vf->vd); - vorbis_block_clear(&vf->vb); - vf->ready_state=OPENED; - - vf->bittrack=0.f; - vf->samptrack=0.f; -} - -/* fetch and process a packet. Handles the case where we're at a - bitstream boundary and dumps the decoding machine. If the decoding - machine is unloaded, it loads it. It also keeps pcm_offset up to - date (seek and read both use this. seek uses a special hack with - readp). - - return: <0) error, OV_HOLE (lost packet) or OV_EOF - 0) need more data (only if readp==0) - 1) got a packet -*/ - -static int _process_packet(OggVorbis_File *vf,int readp){ - ogg_page og; - - /* handle one packet. Try to fetch it from current stream state */ - /* extract packets from page */ - while(1){ - - /* process a packet if we can. If the machine isn't loaded, - neither is a page */ - if(vf->ready_state==INITSET){ - while(1) { - ogg_packet op; - int result=ogg_stream_packetout(&vf->os,&op); - ogg_int64_t granulepos; - - if(result==-1)return(OV_HOLE); /* hole in the data. */ - if(result>0){ - /* got a packet. process it */ - granulepos=op.granulepos; - if(!vorbis_synthesis(&vf->vb,&op)){ /* lazy check for lazy - header handling. The - header packets aren't - audio, so if/when we - submit them, - vorbis_synthesis will - reject them */ - - /* suck in the synthesis data and track bitrate */ - { - int oldsamples=vorbis_synthesis_pcmout(&vf->vd,NULL); - vorbis_synthesis_blockin(&vf->vd,&vf->vb); - vf->samptrack+=vorbis_synthesis_pcmout(&vf->vd,NULL)-oldsamples; - vf->bittrack+=op.bytes*8; - } - - /* update the pcm offset. */ - if(granulepos!=-1 && !op.e_o_s){ - int link=(vf->seekable?vf->current_link:0); - int i,samples; - - /* this packet has a pcm_offset on it (the last packet - completed on a page carries the offset) After processing - (above), we know the pcm position of the *last* sample - ready to be returned. Find the offset of the *first* - - As an aside, this trick is inaccurate if we begin - reading anew right at the last page; the end-of-stream - granulepos declares the last frame in the stream, and the - last packet of the last page may be a partial frame. - So, we need a previous granulepos from an in-sequence page - to have a reference point. Thus the !op.e_o_s clause - above */ - - samples=vorbis_synthesis_pcmout(&vf->vd,NULL); - - granulepos-=samples; - for(i=0;i<link;i++) - granulepos+=vf->pcmlengths[i]; - vf->pcm_offset=granulepos; - } - return(1); - } - } - else - break; - } - } - - if(vf->ready_state>=OPENED){ - if(!readp)return(0); - if(_get_next_page(vf,&og,-1)<0)return(OV_EOF); /* eof. - leave unitialized */ - /* bitrate tracking; add the header's bytes here, the body bytes - are done by packet above */ - vf->bittrack+=og.header_len*8; - - /* has our decoding just traversed a bitstream boundary? */ - if(vf->ready_state==INITSET){ - if(vf->current_serialno!=ogg_page_serialno(&og)){ - _decode_clear(vf); - - if(!vf->seekable){ - vorbis_info_clear(vf->vi); - vorbis_comment_clear(vf->vc); - } - } - } - } - - /* Do we need to load a new machine before submitting the page? */ - /* This is different in the seekable and non-seekable cases. - - In the seekable case, we already have all the header - information loaded and cached; we just initialize the machine - with it and continue on our merry way. - - In the non-seekable (streaming) case, we'll only be at a - boundary if we just left the previous logical bitstream and - we're now nominally at the header of the next bitstream - */ - - if(vf->ready_state!=INITSET){ - int link; - - if(vf->ready_state<STREAMSET){ - if(vf->seekable){ - vf->current_serialno=ogg_page_serialno(&og); - - /* match the serialno to bitstream section. We use this rather than - offset positions to avoid problems near logical bitstream - boundaries */ - for(link=0;link<vf->links;link++) - if(vf->serialnos[link]==vf->current_serialno)break; - if(link==vf->links)return(OV_EBADLINK); /* sign of a bogus - stream. error out, - leave machine - uninitialized */ - - vf->current_link=link; - - ogg_stream_init(&vf->os,vf->current_serialno); - ogg_stream_reset(&vf->os); - vf->ready_state=STREAMSET; - - }else{ - /* we're streaming */ - /* fetch the three header packets, build the info struct */ - - int ret=_fetch_headers(vf,vf->vi,vf->vc,&vf->current_serialno,&og); - if(ret)return(ret); - vf->current_link++; - link=0; - } - } - - _make_decode_ready(vf); - } - ogg_stream_pagein(&vf->os,&og); - } -} - -static int _fseek64_wrap(FILE *f,ogg_int64_t off,int whence){ - if(f==NULL)return(-1); - return fseek(f,(int)off,whence); -} - -static int _ov_open1(void *f,OggVorbis_File *vf,char *initial, - long ibytes, ov_callbacks callbacks){ - long offset=(f?callbacks.seek_func(f,0,SEEK_CUR):-1); - int ret; - - memset(vf,0,sizeof(*vf)); - vf->datasource=f; - vf->callbacks = callbacks; - - /* init the framing state */ - ogg_sync_init(&vf->oy); - - /* perhaps some data was previously read into a buffer for testing - against other stream types. Allow initialization from this - previously read data (as we may be reading from a non-seekable - stream) */ - if(initial){ - char *buffer=ogg_sync_buffer(&vf->oy,ibytes); - memcpy(buffer,initial,ibytes); - ogg_sync_wrote(&vf->oy,ibytes); - } - - /* can we seek? Stevens suggests the seek test was portable */ - if(offset!=-1)vf->seekable=1; - - /* No seeking yet; Set up a 'single' (current) logical bitstream - entry for partial open */ - vf->links=1; - vf->vi=_ogg_calloc(vf->links,sizeof(*vf->vi)); - vf->vc=_ogg_calloc(vf->links,sizeof(*vf->vc)); - - /* Try to fetch the headers, maintaining all the storage */ - if((ret=_fetch_headers(vf,vf->vi,vf->vc,&vf->current_serialno,NULL))<0){ - vf->datasource=NULL; - ov_clear(vf); - }else if(vf->ready_state < PARTOPEN) - vf->ready_state=PARTOPEN; - return(ret); -} - -static int _ov_open2(OggVorbis_File *vf){ - if(vf->ready_state < OPENED) - vf->ready_state=OPENED; - if(vf->seekable){ - int ret=_open_seekable2(vf); - if(ret){ - vf->datasource=NULL; - ov_clear(vf); - } - return(ret); - } - return 0; -} - - -/* clear out the OggVorbis_File struct */ -int ov_clear(OggVorbis_File *vf){ - if(vf){ - vorbis_block_clear(&vf->vb); - vorbis_dsp_clear(&vf->vd); - ogg_stream_clear(&vf->os); - - if(vf->vi && vf->links){ - int i; - for(i=0;i<vf->links;i++){ - vorbis_info_clear(vf->vi+i); - vorbis_comment_clear(vf->vc+i); - } - _ogg_free(vf->vi); - _ogg_free(vf->vc); - } - if(vf->dataoffsets)_ogg_free(vf->dataoffsets); - if(vf->pcmlengths)_ogg_free(vf->pcmlengths); - if(vf->serialnos)_ogg_free(vf->serialnos); - if(vf->offsets)_ogg_free(vf->offsets); - ogg_sync_clear(&vf->oy); - if(vf->datasource)(vf->callbacks.close_func)(vf->datasource); - memset(vf,0,sizeof(*vf)); - } -#ifdef DEBUG_LEAKS - _VDBG_dump(); -#endif - return(0); -} - -/* inspects the OggVorbis file and finds/documents all the logical - bitstreams contained in it. Tries to be tolerant of logical - bitstream sections that are truncated/woogie. - - return: -1) error - 0) OK -*/ - -int ov_open_callbacks(void *f,OggVorbis_File *vf,char *initial,long ibytes, - ov_callbacks callbacks){ - int ret=_ov_open1(f,vf,initial,ibytes,callbacks); - if(ret)return ret; - return _ov_open2(vf); -} - -int ov_open(FILE *f,OggVorbis_File *vf,char *initial,long ibytes){ - ov_callbacks callbacks = { - (size_t (*)(void *, size_t, size_t, void *)) fread, - (int (*)(void *, ogg_int64_t, int)) _fseek64_wrap, - (int (*)(void *)) fclose, - (long (*)(void *)) ftell - }; - - return ov_open_callbacks((void *)f, vf, initial, ibytes, callbacks); -} - -/* Only partially open the vorbis file; test for Vorbisness, and load - the headers for the first chain. Do not seek (although test for - seekability). Use ov_test_open to finish opening the file, else - ov_clear to close/free it. Same return codes as open. */ - -int ov_test_callbacks(void *f,OggVorbis_File *vf,char *initial,long ibytes, - ov_callbacks callbacks) -{ - return _ov_open1(f,vf,initial,ibytes,callbacks); -} - -int ov_test(FILE *f,OggVorbis_File *vf,char *initial,long ibytes){ - ov_callbacks callbacks = { - (size_t (*)(void *, size_t, size_t, void *)) fread, - (int (*)(void *, ogg_int64_t, int)) _fseek64_wrap, - (int (*)(void *)) fclose, - (long (*)(void *)) ftell - }; - - return ov_test_callbacks((void *)f, vf, initial, ibytes, callbacks); -} - -int ov_test_open(OggVorbis_File *vf){ - if(vf->ready_state!=PARTOPEN)return(OV_EINVAL); - return _ov_open2(vf); -} - -/* How many logical bitstreams in this physical bitstream? */ -long ov_streams(OggVorbis_File *vf){ - return vf->links; -} - -/* Is the FILE * associated with vf seekable? */ -long ov_seekable(OggVorbis_File *vf){ - return vf->seekable; -} - -/* returns the bitrate for a given logical bitstream or the entire - physical bitstream. If the file is open for random access, it will - find the *actual* average bitrate. If the file is streaming, it - returns the nominal bitrate (if set) else the average of the - upper/lower bounds (if set) else -1 (unset). - - If you want the actual bitrate field settings, get them from the - vorbis_info structs */ - -long ov_bitrate(OggVorbis_File *vf,int i){ - if(vf->ready_state<OPENED)return(OV_EINVAL); - if(i>=vf->links)return(OV_EINVAL); - if(!vf->seekable && i!=0)return(ov_bitrate(vf,0)); - if(i<0){ - ogg_int64_t bits=0; - int i; - for(i=0;i<vf->links;i++) - bits+=(vf->offsets[i+1]-vf->dataoffsets[i])*8; - return(rint(bits/ov_time_total(vf,-1))); - }else{ - if(vf->seekable){ - /* return the actual bitrate */ - return(rint((vf->offsets[i+1]-vf->dataoffsets[i])*8/ov_time_total(vf,i))); - }else{ - /* return nominal if set */ - if(vf->vi[i].bitrate_nominal>0){ - return vf->vi[i].bitrate_nominal; - }else{ - if(vf->vi[i].bitrate_upper>0){ - if(vf->vi[i].bitrate_lower>0){ - return (vf->vi[i].bitrate_upper+vf->vi[i].bitrate_lower)/2; - }else{ - return vf->vi[i].bitrate_upper; - } - } - return(OV_FALSE); - } - } - } -} - -/* returns the actual bitrate since last call. returns -1 if no - additional data to offer since last call (or at beginning of stream), - EINVAL if stream is only partially open -*/ -long ov_bitrate_instant(OggVorbis_File *vf){ - int link=(vf->seekable?vf->current_link:0); - long ret; - if(vf->ready_state<OPENED)return(OV_EINVAL); - if(vf->samptrack==0)return(OV_FALSE); - ret=vf->bittrack/vf->samptrack*vf->vi[link].rate+.5; - vf->bittrack=0.f; - vf->samptrack=0.f; - return(ret); -} - -/* Guess */ -long ov_serialnumber(OggVorbis_File *vf,int i){ - if(i>=vf->links)return(ov_serialnumber(vf,vf->links-1)); - if(!vf->seekable && i>=0)return(ov_serialnumber(vf,-1)); - if(i<0){ - return(vf->current_serialno); - }else{ - return(vf->serialnos[i]); - } -} - -/* returns: total raw (compressed) length of content if i==-1 - raw (compressed) length of that logical bitstream for i==0 to n - OV_EINVAL if the stream is not seekable (we can't know the length) - or if stream is only partially open -*/ -ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i){ - if(vf->ready_state<OPENED)return(OV_EINVAL); - if(!vf->seekable || i>=vf->links)return(OV_EINVAL); - if(i<0){ - long acc=0; - int i; - for(i=0;i<vf->links;i++) - acc+=ov_raw_total(vf,i); - return(acc); - }else{ - return(vf->offsets[i+1]-vf->offsets[i]); - } -} - -/* returns: total PCM length (samples) of content if i==-1 PCM length - (samples) of that logical bitstream for i==0 to n - OV_EINVAL if the stream is not seekable (we can't know the - length) or only partially open -*/ -ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i){ - if(vf->ready_state<OPENED)return(OV_EINVAL); - if(!vf->seekable || i>=vf->links)return(OV_EINVAL); - if(i<0){ - ogg_int64_t acc=0; - int i; - for(i=0;i<vf->links;i++) - acc+=ov_pcm_total(vf,i); - return(acc); - }else{ - return(vf->pcmlengths[i]); - } -} - -/* returns: total seconds of content if i==-1 - seconds in that logical bitstream for i==0 to n - OV_EINVAL if the stream is not seekable (we can't know the - length) or only partially open -*/ -double ov_time_total(OggVorbis_File *vf,int i){ - if(vf->ready_state<OPENED)return(OV_EINVAL); - if(!vf->seekable || i>=vf->links)return(OV_EINVAL); - if(i<0){ - double acc=0; - int i; - for(i=0;i<vf->links;i++) - acc+=ov_time_total(vf,i); - return(acc); - }else{ - return((float)(vf->pcmlengths[i])/vf->vi[i].rate); - } -} - -/* seek to an offset relative to the *compressed* data. This also - scans packets to update the PCM cursor. It will cross a logical - bitstream boundary, but only if it can't get any packets out of the - tail of the bitstream we seek to (so no surprises). - - returns zero on success, nonzero on failure */ - -int ov_raw_seek(OggVorbis_File *vf,long pos){ - ogg_stream_state work_os; - - if(vf->ready_state<OPENED)return(OV_EINVAL); - if(!vf->seekable) - return(OV_ENOSEEK); /* don't dump machine if we can't seek */ - - if(pos<0 || pos>vf->offsets[vf->links])return(OV_EINVAL); - - /* clear out decoding machine state */ - vf->pcm_offset=-1; - _decode_clear(vf); - - _seek_helper(vf,pos); - - /* we need to make sure the pcm_offset is set, but we don't want to - advance the raw cursor past good packets just to get to the first - with a granulepos. That's not equivalent behavior to beginning - decoding as immediately after the seek position as possible. - - So, a hack. We use two stream states; a local scratch state and - a the shared vf->os stream state. We use the local state to - scan, and the shared state as a buffer for later decode. - - Unfortuantely, on the last page we still advance to last packet - because the granulepos on the last page is not necessarily on a - packet boundary, and we need to make sure the granpos is - correct. - */ - - { - ogg_page og; - ogg_packet op; - int lastblock=0; - int accblock=0; - int thisblock; - int eosflag; - - memset(&work_os,0,sizeof(work_os));/* so that it's safe to clear - it later even if we don't - init it */ - - while(1){ - if(vf->ready_state==STREAMSET){ - /* snarf/scan a packet if we can */ - int result=ogg_stream_packetout(&work_os,&op); - - if(result>0){ - - if(vf->vi[vf->current_link].codec_setup) - thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op); - if(eosflag) - ogg_stream_packetout(&vf->os,NULL); - else - if(lastblock)accblock+=(lastblock+thisblock)>>2; - - if(op.granulepos!=-1){ - int i,link=vf->current_link; - ogg_int64_t granulepos=op.granulepos; - - for(i=0;i<link;i++) - granulepos+=vf->pcmlengths[i]; - vf->pcm_offset=granulepos-accblock; - break; - } - lastblock=thisblock; - continue; - } - } - - if(!lastblock){ - if(_get_next_page(vf,&og,-1)<0){ - vf->pcm_offset=ov_pcm_total(vf,-1); - break; - } - }else{ - /* huh? Bogus stream with packets but no granulepos */ - vf->pcm_offset=-1; - break; - } - - /* has our decoding just traversed a bitstream boundary? */ - if(vf->ready_state==STREAMSET) - if(vf->current_serialno!=ogg_page_serialno(&og)){ - _decode_clear(vf); /* clear out stream state */ - ogg_stream_clear(&work_os); - } - - if(vf->ready_state<STREAMSET){ - int link; - - vf->current_serialno=ogg_page_serialno(&og); - for(link=0;link<vf->links;link++) - if(vf->serialnos[link]==vf->current_serialno)break; - if(link==vf->links)goto seek_error; /* sign of a bogus stream. - error out, leave - machine uninitialized */ - vf->current_link=link; - - ogg_stream_init(&vf->os,vf->current_serialno); - ogg_stream_reset(&vf->os); - ogg_stream_init(&work_os,vf->current_serialno); - ogg_stream_reset(&work_os); - vf->ready_state=STREAMSET; - - } - - ogg_stream_pagein(&vf->os,&og); - ogg_stream_pagein(&work_os,&og); - eosflag=ogg_page_eos(&og); - } - } - - ogg_stream_clear(&work_os); - return(0); - - seek_error: - /* dump the machine so we're in a known state */ - vf->pcm_offset=-1; - ogg_stream_clear(&work_os); - _decode_clear(vf); - return OV_EBADLINK; -} - -/* Page granularity seek (faster than sample granularity because we - don't do the last bit of decode to find a specific sample). - - Seek to the last [granule marked] page preceeding the specified pos - location, such that decoding past the returned point will quickly - arrive at the requested position. */ -int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){ - int link=-1; - long ret; - ogg_int64_t total=ov_pcm_total(vf,-1); - - if(vf->ready_state<OPENED)return(OV_EINVAL); - if(!vf->seekable)return(OV_ENOSEEK); - if(pos<0 || pos>total)return(OV_EINVAL); - - /* which bitstream section does this pcm offset occur in? */ - for(link=vf->links-1;link>=0;link--){ - total-=vf->pcmlengths[link]; - if(pos>=total)break; - } - - /* search within the logical bitstream for the page with the highest - pcm_pos preceeding (or equal to) pos. There is a danger here; - missing pages or incorrect frame number information in the - bitstream could make our task impossible. Account for that (it - would be an error condition) */ - - /* new search algorithm by HB (Nicholas Vinen) */ - { - ogg_int64_t target=pos-total; - long end=vf->offsets[link+1]; - long begin=vf->offsets[link]; - ogg_int64_t endtime = vf->pcmlengths[link]; - ogg_int64_t begintime = 0; - long best=begin; - - ogg_page og; - while(begin<end){ - long bisect; - - if(end-begin<CHUNKSIZE){ - bisect=begin; - }else{ - /* take a (pretty decent) guess. */ - bisect=begin + - (target-begintime)*(end-begin)/(endtime-begintime) - CHUNKSIZE; - if(bisect<=begin) - bisect=begin+1; - } - _seek_helper(vf,bisect); - - while(begin<end){ - ret=_get_next_page(vf,&og,end-bisect); - if(ret==OV_EREAD) goto seek_error; - if(ret<0){ - if(bisect<=begin+1) - end=begin; /* found it */ - else{ - if(bisect==0)goto seek_error; - bisect-=CHUNKSIZE; - if(bisect<=begin)bisect=begin+1; - _seek_helper(vf,bisect); - } - }else{ - ogg_int64_t granulepos=ogg_page_granulepos(&og); - if(granulepos<target){ - best=ret; /* raw offset of packet with granulepos */ - begin=vf->offset; /* raw offset of next page */ - begintime=granulepos; - - if(target-begin>44100)break; - bisect=begin; /* *not* begin + 1 */ - }else{ - if(bisect<=begin+1) - end=begin; /* found it */ - else{ - if(end==vf->offset){ /* we're pretty close - we'd be stuck in */ - end=ret; - bisect-=CHUNKSIZE; /* an endless loop otherwise. */ - if(bisect<=begin)bisect=begin+1; - _seek_helper(vf,bisect); - }else{ - end=ret; - endtime=granulepos; - break; - } - } - } - } - } - } - - /* found our page. seek to it, update pcm offset. Easier case than - raw_seek, don't keep packets preceeding granulepos. */ - { - ogg_page og; - ogg_packet op; - /* clear out decoding machine state */ - _decode_clear(vf); - /* seek */ - _seek_helper(vf,best); - - if(_get_next_page(vf,&og,-1)<0)return(OV_EOF); /* shouldn't happen */ - vf->current_serialno=ogg_page_serialno(&og); - vf->current_link=link; - - ogg_stream_init(&vf->os,vf->current_serialno); - ogg_stream_reset(&vf->os); - vf->ready_state=STREAMSET; - ogg_stream_pagein(&vf->os,&og); - - /* pull out all but last packet; the one with granulepos */ - while(1){ - ret=ogg_stream_packetpeek(&vf->os,&op); - if(ret==0){ - /* !!! the packet finishing this page originated on a - preceeding page. Keep fetching previous pages until we - get one with a granulepos or without the 'continued' flag - set. Then just use raw_seek for simplicity. */ - while(1){ - ret=_get_prev_page(vf,&og); - if(ret<0)goto seek_error; - if(ogg_page_granulepos(&og)>-1 || - !ogg_page_continued(&og)){ - return ov_raw_seek(vf,ret); - } - vf->offset=ret; - } - } - if(ret<0)goto seek_error; - if(op.granulepos!=-1){ - vf->pcm_offset=op.granulepos+total; - break; - }else - ret=ogg_stream_packetout(&vf->os,NULL); - } - } - } - - /* verify result */ - if(vf->pcm_offset>pos || pos>ov_pcm_total(vf,-1)){ - ret=OV_EFAULT; - goto seek_error; - } - return(0); - - seek_error: - /* dump machine so we're in a known state */ - vf->pcm_offset=-1; - _decode_clear(vf); - return ret; -} - -/* seek to a sample offset relative to the decompressed pcm stream - returns zero on success, nonzero on failure */ - -int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos){ - int thisblock,lastblock=0; - int ret=ov_pcm_seek_page(vf,pos); - if(ret<0)return(ret); - - /* discard leading packets we don't need for the lapping of the - position we want; don't decode them */ - - while(1){ - ogg_packet op; - ogg_page og; - - int ret=ogg_stream_packetpeek(&vf->os,&op); - if(ret>0){ - thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op); - if(lastblock)vf->pcm_offset+=(lastblock+thisblock)>>2; - - if(vf->pcm_offset+((thisblock+ - vorbis_info_blocksize(vf->vi,1))>>2)>=pos)break; - - ogg_stream_packetout(&vf->os,NULL); - - - /* end of logical stream case is hard, especially with exact - length positioning. */ - - if(op.granulepos>-1){ - int i; - /* always believe the stream markers */ - vf->pcm_offset=op.granulepos; - for(i=0;i<vf->current_link;i++) - vf->pcm_offset+=vf->pcmlengths[i]; - } - - lastblock=thisblock; - - }else{ - if(ret<0 && ret!=OV_HOLE)break; - - /* suck in a new page */ - if(_get_next_page(vf,&og,-1)<0)break; - if(vf->current_serialno!=ogg_page_serialno(&og))_decode_clear(vf); - - if(vf->ready_state<STREAMSET){ - int link; - - vf->current_serialno=ogg_page_serialno(&og); - for(link=0;link<vf->links;link++) - if(vf->serialnos[link]==vf->current_serialno)break; - if(link==vf->links)return(OV_EBADLINK); - vf->current_link=link; - - ogg_stream_init(&vf->os,vf->current_serialno); - ogg_stream_reset(&vf->os); - vf->ready_state=STREAMSET; - lastblock=0; - } - ogg_stream_pagein(&vf->os,&og); - } - } - - /* discard samples until we reach the desired position. Crossing a - logical bitstream boundary with abandon is OK. */ - _make_decode_ready(vf); - while(vf->pcm_offset<pos){ - float **pcm; - long target=pos-vf->pcm_offset; - long samples=vorbis_synthesis_pcmout(&vf->vd,&pcm); - - if(samples>target)samples=target; - vorbis_synthesis_read(&vf->vd,samples); - vf->pcm_offset+=samples; - - if(samples<target) - if(_process_packet(vf,1)<=0) - vf->pcm_offset=ov_pcm_total(vf,-1); /* eof */ - } - return 0; -} - -/* seek to a playback time relative to the decompressed pcm stream - returns zero on success, nonzero on failure */ -int ov_time_seek(OggVorbis_File *vf,double seconds){ - /* translate time to PCM position and call ov_pcm_seek */ - - int link=-1; - ogg_int64_t pcm_total=ov_pcm_total(vf,-1); - double time_total=ov_time_total(vf,-1); - - if(vf->ready_state<OPENED)return(OV_EINVAL); - if(!vf->seekable)return(OV_ENOSEEK); - if(seconds<0 || seconds>time_total)return(OV_EINVAL); - - /* which bitstream section does this time offset occur in? */ - for(link=vf->links-1;link>=0;link--){ - pcm_total-=vf->pcmlengths[link]; - time_total-=ov_time_total(vf,link); - if(seconds>=time_total)break; - } - - /* enough information to convert time offset to pcm offset */ - { - ogg_int64_t target=pcm_total+(seconds-time_total)*vf->vi[link].rate; - return(ov_pcm_seek(vf,target)); - } -} - -/* page-granularity version of ov_time_seek - returns zero on success, nonzero on failure */ -int ov_time_seek_page(OggVorbis_File *vf,double seconds){ - /* translate time to PCM position and call ov_pcm_seek */ - - int link=-1; - ogg_int64_t pcm_total=ov_pcm_total(vf,-1); - double time_total=ov_time_total(vf,-1); - - if(vf->ready_state<OPENED)return(OV_EINVAL); - if(!vf->seekable)return(OV_ENOSEEK); - if(seconds<0 || seconds>time_total)return(OV_EINVAL); - - /* which bitstream section does this time offset occur in? */ - for(link=vf->links-1;link>=0;link--){ - pcm_total-=vf->pcmlengths[link]; - time_total-=ov_time_total(vf,link); - if(seconds>=time_total)break; - } - - /* enough information to convert time offset to pcm offset */ - { - ogg_int64_t target=pcm_total+(seconds-time_total)*vf->vi[link].rate; - return(ov_pcm_seek_page(vf,target)); - } -} - -/* tell the current stream offset cursor. Note that seek followed by - tell will likely not give the set offset due to caching */ -ogg_int64_t ov_raw_tell(OggVorbis_File *vf){ - if(vf->ready_state<OPENED)return(OV_EINVAL); - return(vf->offset); -} - -/* return PCM offset (sample) of next PCM sample to be read */ -ogg_int64_t ov_pcm_tell(OggVorbis_File *vf){ - if(vf->ready_state<OPENED)return(OV_EINVAL); - return(vf->pcm_offset); -} - -/* return time offset (seconds) of next PCM sample to be read */ -double ov_time_tell(OggVorbis_File *vf){ - /* translate time to PCM position and call ov_pcm_seek */ - - int link=-1; - ogg_int64_t pcm_total=0; - double time_total=0.f; - - if(vf->ready_state<OPENED)return(OV_EINVAL); - if(vf->seekable){ - pcm_total=ov_pcm_total(vf,-1); - time_total=ov_time_total(vf,-1); - - /* which bitstream section does this time offset occur in? */ - for(link=vf->links-1;link>=0;link--){ - pcm_total-=vf->pcmlengths[link]; - time_total-=ov_time_total(vf,link); - if(vf->pcm_offset>=pcm_total)break; - } - } - - return((double)time_total+(double)(vf->pcm_offset-pcm_total)/vf->vi[link].rate); -} - -/* link: -1) return the vorbis_info struct for the bitstream section - currently being decoded - 0-n) to request information for a specific bitstream section - - In the case of a non-seekable bitstream, any call returns the - current bitstream. NULL in the case that the machine is not - initialized */ - -vorbis_info *ov_info(OggVorbis_File *vf,int link){ - if(vf->seekable){ - if(link<0) - if(vf->ready_state>=STREAMSET) - return vf->vi+vf->current_link; - else - return vf->vi; - else - if(link>=vf->links) - return NULL; - else - return vf->vi+link; - }else{ - return vf->vi; - } -} - -/* grr, strong typing, grr, no templates/inheritence, grr */ -vorbis_comment *ov_comment(OggVorbis_File *vf,int link){ - if(vf->seekable){ - if(link<0) - if(vf->ready_state>=STREAMSET) - return vf->vc+vf->current_link; - else - return vf->vc; - else - if(link>=vf->links) - return NULL; - else - return vf->vc+link; - }else{ - return vf->vc; - } -} - -static int host_is_big_endian() { - ogg_int32_t pattern = 0xfeedface; /* deadbeef */ - unsigned char *bytewise = (unsigned char *)&pattern; - if (bytewise[0] == 0xfe) return 1; - return 0; -} - -/* up to this point, everything could more or less hide the multiple - logical bitstream nature of chaining from the toplevel application - if the toplevel application didn't particularly care. However, at - the point that we actually read audio back, the multiple-section - nature must surface: Multiple bitstream sections do not necessarily - have to have the same number of channels or sampling rate. - - ov_read returns the sequential logical bitstream number currently - being decoded along with the PCM data in order that the toplevel - application can take action on channel/sample rate changes. This - number will be incremented even for streamed (non-seekable) streams - (for seekable streams, it represents the actual logical bitstream - index within the physical bitstream. Note that the accessor - functions above are aware of this dichotomy). - - input values: buffer) a buffer to hold packed PCM data for return - length) the byte length requested to be placed into buffer - bigendianp) should the data be packed LSB first (0) or - MSB first (1) - word) word size for output. currently 1 (byte) or - 2 (16 bit short) - - return values: <0) error/hole in data (OV_HOLE), partial open (OV_EINVAL) - 0) EOF - n) number of bytes of PCM actually returned. The - below works on a packet-by-packet basis, so the - return length is not related to the 'length' passed - in, just guaranteed to fit. - - *section) set to the logical bitstream number */ - -long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int *bitstream){ - - if(vf->ready_state<OPENED)return(OV_EINVAL); - - while(1){ - if(vf->ready_state>=STREAMSET){ - float **pcm; - long samples=vorbis_synthesis_pcmout(&vf->vd,&pcm); - if(samples){ - if(pcm_channels)*pcm_channels=pcm; - vorbis_synthesis_read(&vf->vd,samples); - vf->pcm_offset+=samples; - if(bitstream)*bitstream=vf->current_link; - return samples; - - } - } - - /* suck in another packet */ - { - int ret=_process_packet(vf,1); - if(ret==OV_EOF)return(0); - if(ret<=0)return(ret); - } - - } -} - -long ov_read(OggVorbis_File *vf,char *buffer,int length, - int bigendianp,int word,int sgned,int *bitstream){ - int i,j; - int host_endian = host_is_big_endian(); - - float **pcm; - long samples; - - if(vf->ready_state<OPENED)return(OV_EINVAL); - - while(1){ - if(vf->ready_state>=STREAMSET){ - samples=vorbis_synthesis_pcmout(&vf->vd,&pcm); - if(samples)break; - } - - /* suck in another packet */ - { - int ret=_process_packet(vf,1); - if(ret==OV_EOF)return(0); - if(ret<=0)return(ret); - } - - } - - if(samples>0){ - - /* yay! proceed to pack data into the byte buffer */ - - long channels=ov_info(vf,-1)->channels; - long bytespersample=word * channels; - vorbis_fpu_control fpu; - if(samples>length/bytespersample)samples=length/bytespersample; - - /* a tight loop to pack each size */ - { - int val; - if(word==1){ - int off=(sgned?0:128); - vorbis_fpu_setround(&fpu); - for(j=0;j<samples;j++) - for(i=0;i<channels;i++){ - val=vorbis_ftoi(pcm[i][j]*128.f); - if(val>127)val=127; - else if(val<-128)val=-128; - *buffer++=val+off; - } - vorbis_fpu_restore(fpu); - }else{ - int off=(sgned?0:32768); - - if(host_endian==bigendianp){ - if(sgned){ - - vorbis_fpu_setround(&fpu); - for(i=0;i<channels;i++) { /* It's faster in this order */ - float *src=pcm[i]; - short *dest=((short *)buffer)+i; - for(j=0;j<samples;j++) { - val=vorbis_ftoi(src[j]*32768.f); - if(val>32767)val=32767; - else if(val<-32768)val=-32768; - *dest=val; - dest+=channels; - } - } - vorbis_fpu_restore(fpu); - - }else{ - - vorbis_fpu_setround(&fpu); - for(i=0;i<channels;i++) { - float *src=pcm[i]; - short *dest=((short *)buffer)+i; - for(j=0;j<samples;j++) { - val=vorbis_ftoi(src[j]*32768.f); - if(val>32767)val=32767; - else if(val<-32768)val=-32768; - *dest=val+off; - dest+=channels; - } - } - vorbis_fpu_restore(fpu); - - } - }else if(bigendianp){ - - vorbis_fpu_setround(&fpu); - for(j=0;j<samples;j++) - for(i=0;i<channels;i++){ - val=vorbis_ftoi(pcm[i][j]*32768.f); - if(val>32767)val=32767; - else if(val<-32768)val=-32768; - val+=off; - *buffer++=(val>>8); - *buffer++=(val&0xff); - } - vorbis_fpu_restore(fpu); - - }else{ - int val; - vorbis_fpu_setround(&fpu); - for(j=0;j<samples;j++) - for(i=0;i<channels;i++){ - val=vorbis_ftoi(pcm[i][j]*32768.f); - if(val>32767)val=32767; - else if(val<-32768)val=-32768; - val+=off; - *buffer++=(val&0xff); - *buffer++=(val>>8); - } - vorbis_fpu_restore(fpu); - - } - } - } - - vorbis_synthesis_read(&vf->vd,samples); - vf->pcm_offset+=samples; - if(bitstream)*bitstream=vf->current_link; - return(samples*bytespersample); - }else{ - return(samples); - } -} - - - - diff --git a/lib/window.c b/lib/window.c deleted file mode 100644 index 72eff2d3..00000000 --- a/lib/window.c +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: window functions - last mod: $Id: window.c,v 1.15 2001/12/20 01:00:30 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <math.h> -#include "os.h" -#include "misc.h" - -float *_vorbis_window(int type, int window,int left,int right){ - float *ret=_ogg_calloc(window,sizeof(*ret)); - - switch(type){ - case 0: - /* The 'vorbis window' (window 0) is sin(sin(x)*sin(x)*2pi) */ - { - int leftbegin=window/4-left/2; - int rightbegin=window-window/4-right/2; - int i; - - for(i=0;i<left;i++){ - float x=(i+.5f)/left*M_PI/2.; - x=sin(x); - x*=x; - x*=M_PI/2.f; - x=sin(x); - ret[i+leftbegin]=x; - } - - for(i=leftbegin+left;i<rightbegin;i++) - ret[i]=1.f; - - for(i=0;i<right;i++){ - float x=(right-i-.5f)/right*M_PI/2.; - x=sin(x); - x*=x; - x*=M_PI/2.f; - x=sin(x); - ret[i+rightbegin]=x; - } - } - break; - default: - _ogg_free(ret); - return(NULL); - } - return(ret); -} - diff --git a/lib/window.h b/lib/window.h deleted file mode 100644 index b4f61a26..00000000 --- a/lib/window.h +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: window functions - last mod: $Id: window.h,v 1.9 2001/12/20 01:00:30 segher Exp $ - - ********************************************************************/ - -#ifndef _V_WINDOW_ -#define _V_WINDOW_ - -extern float *_vorbis_window(int type,int window,int left,int right); - -#endif diff --git a/libvorbis.spec b/libvorbis.spec deleted file mode 100644 index 6f0b1c7b..00000000 --- a/libvorbis.spec +++ /dev/null @@ -1,91 +0,0 @@ -%define name libvorbis -%define version 1.0rc3 -%define release 1 - -Summary: The Vorbis General Audio Compression Codec -Name: %{name} -Version: %{version} -Release: %{release} -Group: Libraries/Multimedia -Copyright: LGPL -URL: http://www.xiph.org/ -Vendor: Xiphophorus <team@xiph.org> -Source: ftp://ftp.xiph.org/pub/ogg/vorbis/%{name}-%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-root -Requires: libogg >= 1.0rc3 -Prefix: %{_prefix} - -%description -Ogg Vorbis is a fully open, non-proprietary, patent-and-royalty-free, -general-purpose compressed audio format for audio and music at fixed -and variable bitrates from 16 to 128 kbps/channel. - -%package devel -Summary: Vorbis Library Development -Group: Development/Libraries -Requires: libogg-devel >= 1.0rc3 -Requires: libvorbis-devel = %{version} - -%description devel -The libvorbis-devel package contains the header files and documentation -needed to develop applications with libvorbis. - -%prep -%setup -q -n %{name}-%{version} - -%build -if [ ! -f configure ]; then - CFLAGS="$RPM_OPT_FLAGS" ./autogen.sh --prefix=%{_prefix} -else - CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{_prefix} -fi -make - -%install -[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT -make DESTDIR=$RPM_BUILD_ROOT install - -%files -%defattr(-,root,root) -%doc COPYING -%doc AUTHORS -%doc README -%{_libdir}/libvorbis.so.* -%{_libdir}/libvorbisfile.so.* -%{_libdir}/libvorbisenc.so.* - -%files devel -%doc doc/*.html -%doc doc/*.png -%doc doc/*.txt -%doc doc/vorbisfile -%doc doc/vorbisenc -%{_datadir}/aclocal/vorbis.m4 -%{_includedir}/vorbis/codec.h -%{_includedir}/vorbis/vorbisfile.h -%{_includedir}/vorbis/vorbisenc.h -%{_libdir}/libvorbis.a -%{_libdir}/libvorbis.so -%{_libdir}/libvorbisfile.a -%{_libdir}/libvorbisfile.so -%{_libdir}/libvorbisenc.a -%{_libdir}/libvorbisenc.so - -%clean -[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT - -%post -/sbin/ldconfig - -%postun -/sbin/ldconfig - -%changelog -* Sun Dec 31 2001 Jack Moffitt <jack@xiph.org> -- Updated for rc3 release. - -* Sun Oct 07 2001 Jack Moffitt <jack@xiph.org> -- Updated for configurable prefixes - -* Sat Oct 21 2000 Jack Moffitt <jack@icecast.org> -- initial spec file created diff --git a/mac/compat/strdup.c b/mac/compat/strdup.c deleted file mode 100644 index 2ef4279c..00000000 --- a/mac/compat/strdup.c +++ /dev/null @@ -1,21 +0,0 @@ -#include <ogg/os_types.h> -#include <sys/types.h> -#include <string.h> -#include <stdlib.h> - -char *strdup(const char *inStr) -{ - char *outStr = NULL; - - if (inStr == NULL) { - return NULL; - } - - outStr = _ogg_malloc(strlen(inStr) + 1); - - if (outStr != NULL) { - strcpy(outStr, inStr); - } - - return outStr; -} diff --git a/mac/compat/sys/types.h b/mac/compat/sys/types.h deleted file mode 100644 index b0d4f920..00000000 --- a/mac/compat/sys/types.h +++ /dev/null @@ -1 +0,0 @@ -#ifndef __SYS_TYPES_H__
#define __SYS_TYPES_H__ 1
#include <MacTypes.h>
#include <alloca.h>
#include <string.h>
typedef short int16_t;
typedef long int32_t;
typedef long long int64_t;
#define vorbis_size32_t long
#if defined(__cplusplus)
extern "C" {
#endif
#pragma options align=power
char *strdup(const char *inStr);
#pragma options align=reset
#if defined(__cplusplus)
}
#endif
#endif /* __SYS_TYPES_H__ */
\ No newline at end of file diff --git a/mac/decoder_example.mcp b/mac/decoder_example.mcp Binary files differdeleted file mode 100644 index 693a4d94..00000000 --- a/mac/decoder_example.mcp +++ /dev/null diff --git a/mac/encoder_example.mcp b/mac/encoder_example.mcp Binary files differdeleted file mode 100644 index 8f055e8b..00000000 --- a/mac/encoder_example.mcp +++ /dev/null diff --git a/mac/libvorbis.mcp b/mac/libvorbis.mcp Binary files differdeleted file mode 100644 index efdc8674..00000000 --- a/mac/libvorbis.mcp +++ /dev/null diff --git a/mac/libvorbis.mcp.exp b/mac/libvorbis.mcp.exp deleted file mode 100644 index 88d6e539..00000000 --- a/mac/libvorbis.mcp.exp +++ /dev/null @@ -1,52 +0,0 @@ -### From "vorbis/codec.h" - -# Vorbis PRIMITIVES: general - -vorbis_info_init -vorbis_info_clear -vorbis_comment_init -vorbis_comment_add -vorbis_comment_add_tag -vorbis_comment_query -vorbis_comment_query_count -vorbis_comment_clear - -vorbis_block_init -vorbis_block_clear -vorbis_dsp_clear - -# Vorbis PRIMITIVES: analysis/DSP layer - -vorbis_analysis_init -vorbis_analysis_headerout -vorbis_analysis_buffer -vorbis_analysis_wrote -vorbis_analysis_blockout -vorbis_analysis - -# Vorbis PRIMITIVES: synthesis layer - -vorbis_synthesis_headerin -vorbis_synthesis_init -vorbis_synthesis -vorbis_synthesis_blockin -vorbis_synthesis_pcmout -vorbis_synthesis_read - -### From "psy.h" (for VorbisEncLib) - -_vp_psy_init -_vp_psy_clear -#_vi_psy_dup - -_vi_psy_free -_vi_psy_copy - -_vp_compute_mask -_vp_apply_floor - -### From "xxx.h" (for VorbisEncLib) -_time_P -_floor_P -_residue_P -_mapping_P diff --git a/mac/libvorbisenc.mcp b/mac/libvorbisenc.mcp Binary files differdeleted file mode 100755 index 81ad175f..00000000 --- a/mac/libvorbisenc.mcp +++ /dev/null diff --git a/mac/libvorbisenc.mcp.exp b/mac/libvorbisenc.mcp.exp deleted file mode 100755 index d586a1b1..00000000 --- a/mac/libvorbisenc.mcp.exp +++ /dev/null @@ -1,5 +0,0 @@ -### From "vorbis/vorbisenc.h" - -vorbis_encode_init - -vorbis_encode_ctl diff --git a/mac/libvorbisfile.mcp b/mac/libvorbisfile.mcp Binary files differdeleted file mode 100755 index a8741579..00000000 --- a/mac/libvorbisfile.mcp +++ /dev/null diff --git a/mac/libvorbisfile.mcp.exp b/mac/libvorbisfile.mcp.exp deleted file mode 100755 index 8e3c1124..00000000 --- a/mac/libvorbisfile.mcp.exp +++ /dev/null @@ -1,30 +0,0 @@ -### From "vorbis/vorbisfile.h" - -ov_clear -ov_open -ov_open_callbacks - -ov_bitrate -ov_bitrate_instant -ov_streams -ov_seekable -ov_serialnumber - -ov_raw_total -ov_pcm_total -ov_time_total - -ov_raw_seek -ov_pcm_seek -ov_pcm_seek_page -ov_time_seek -ov_time_seek_page - -ov_raw_tell -ov_pcm_tell -ov_time_tell - -ov_info -ov_comment - -ov_read diff --git a/macosx/English.lproj/InfoPlist.strings b/macosx/English.lproj/InfoPlist.strings Binary files differdeleted file mode 100644 index 3ac59d1a..00000000 --- a/macosx/English.lproj/InfoPlist.strings +++ /dev/null diff --git a/macosx/vorbis.pbproj/project.pbxproj b/macosx/vorbis.pbproj/project.pbxproj deleted file mode 100644 index f9eb3bcb..00000000 --- a/macosx/vorbis.pbproj/project.pbxproj +++ /dev/null @@ -1,6169 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 34; - objects = { - 014CEA440018CDF011CA2923 = { - buildRules = ( - ); - buildSettings = { - COPY_PHASE_STRIP = NO; - OPTIMIZATION_CFLAGS = "-O0"; - }; - isa = PBXBuildStyle; - name = Development; - }; - 014CEA450018CDF011CA2923 = { - buildRules = ( - ); - buildSettings = { - COPY_PHASE_STRIP = YES; - }; - isa = PBXBuildStyle; - name = Deployment; - }; -//010 -//011 -//012 -//013 -//014 -//030 -//031 -//032 -//033 -//034 - 034768DFFF38A50411DB9C8B = { - children = ( - ); - isa = PBXGroup; - name = Products; - refType = 4; - }; - 034768E0FF38A50411DB9C8B = { - isa = PBXFrameworkReference; - name = Vorbis.framework; - path = "/Volumes/Apps 3 GB/Dev/Sources/vorbis/macosx/build/Vorbis.framework"; - refType = 0; - }; -//030 -//031 -//032 -//033 -//034 -//080 -//081 -//082 -//083 -//084 - 0867D690FE84028FC02AAC07 = { - buildStyles = ( - 014CEA440018CDF011CA2923, - 014CEA450018CDF011CA2923, - ); - isa = PBXProject; - mainGroup = 0867D691FE84028FC02AAC07; - productRefGroup = 034768DFFF38A50411DB9C8B; - projectDirPath = ""; - targets = ( - 0867D69CFE84028FC02AAC07, - ); - }; - 0867D691FE84028FC02AAC07 = { - children = ( - F58520B70191D12B01A802FE, - F53B219E01D43C7701D65C57, - 089C1665FE841158C02AAC07, - 0867D69AFE84028FC02AAC07, - 034768DFFF38A50411DB9C8B, - ); - isa = PBXGroup; - name = vorbis; - refType = 4; - }; - 0867D69AFE84028FC02AAC07 = { - children = ( - F53B253401D43CF701D65C57, - ); - isa = PBXGroup; - name = "External Frameworks and Libraries"; - refType = 4; - }; - 0867D69CFE84028FC02AAC07 = { - buildPhases = ( - 0867D69DFE84028FC02AAC07, - 0867D69EFE84028FC02AAC07, - 0867D69FFE84028FC02AAC07, - 0867D6A0FE84028FC02AAC07, - 0867D6A2FE84028FC02AAC07, - ); - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_SEARCH_PATHS = "/Library/Frameworks ../../ogg/macosx/build"; - FRAMEWORK_VERSION = A; - HEADER_SEARCH_PATHS = ""; - INSTALL_PATH = /Library/Frameworks; - LIBRARY_SEARCH_PATHS = ""; - OTHER_CFLAGS = "-D__MACOSX__"; - OTHER_LDFLAGS = ""; - PRODUCT_NAME = Vorbis; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - WRAPPER_EXTENSION = framework; - }; - dependencies = ( - ); - isa = PBXFrameworkTarget; - name = Vorbis; - productInstallPath = /Library/Frameworks; - productName = vorbis; - productReference = 034768E0FF38A50411DB9C8B; - productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> -<!DOCTYPE plist SYSTEM \"file://localhost/System/Library/DTDs/PropertyList.dtd\"> -<plist version=\"0.9\"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleExecutable</key> - <string>Vorbis</string> - <key>CFBundleIconFile</key> - <string></string> - <key>CFBundleIdentifier</key> - <string></string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundlePackageType</key> - <string>FMWK</string> - <key>CFBundleSignature</key> - <string>Vrbs</string> - <key>CFBundleVersion</key> - <string>0.0.1d1</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> -"; - shouldUseHeadermap = 1; - }; - 0867D69DFE84028FC02AAC07 = { - buildActionMask = 2147483647; - files = ( - F58520BF0191D12B01A802FE, - F58520C00191D12B01A802FE, - F58520C10191D12B01A802FE, - F53B236C01D43C7801D65C57, - F53B236D01D43C7801D65C57, - F53B236E01D43C7801D65C57, - F53B236F01D43C7801D65C57, - F53B237001D43C7801D65C57, - F53B237101D43C7801D65C57, - F53B237201D43C7801D65C57, - F53B237301D43C7801D65C57, - F53B237401D43C7801D65C57, - F53B237501D43C7801D65C57, - F53B237601D43C7801D65C57, - F53B237701D43C7801D65C57, - F53B237801D43C7801D65C57, - F53B237901D43C7801D65C57, - F53B237A01D43C7801D65C57, - F53B237B01D43C7801D65C57, - F53B237C01D43C7801D65C57, - F53B237D01D43C7801D65C57, - F53B237F01D43C7801D65C57, - F53B238001D43C7801D65C57, - F53B238101D43C7801D65C57, - F53B238201D43C7801D65C57, - ); - isa = PBXHeadersBuildPhase; - name = Headers; - }; - 0867D69EFE84028FC02AAC07 = { - buildActionMask = 2147483647; - files = ( - 089C1668FE841158C02AAC07, - F53B238401D43C7801D65C57, - F53B238501D43C7801D65C57, - F53B238601D43C7801D65C57, - F53B238701D43C7801D65C57, - F53B238801D43C7801D65C57, - F53B238901D43C7801D65C57, - F53B238A01D43C7801D65C57, - F53B238B01D43C7801D65C57, - F53B238C01D43C7801D65C57, - F53B238D01D43C7801D65C57, - F53B238E01D43C7801D65C57, - F53B238F01D43C7801D65C57, - F53B239001D43C7801D65C57, - F53B239101D43C7801D65C57, - F53B239201D43C7801D65C57, - F53B239301D43C7801D65C57, - F53B239401D43C7801D65C57, - F53B239501D43C7801D65C57, - F53B239601D43C7801D65C57, - F53B239701D43C7801D65C57, - F53B239801D43C7801D65C57, - F53B239901D43C7801D65C57, - F53B239A01D43C7801D65C57, - F53B239B01D43C7801D65C57, - F53B239C01D43C7801D65C57, - F53B239D01D43C7801D65C57, - F53B239E01D43C7801D65C57, - F53B239F01D43C7801D65C57, - F53B23A001D43C7801D65C57, - F53B23A101D43C7801D65C57, - F53B23A201D43C7801D65C57, - F53B23A301D43C7801D65C57, - F53B23A401D43C7801D65C57, - F53B23A501D43C7801D65C57, - F53B23A601D43C7801D65C57, - F53B23A701D43C7801D65C57, - F53B23A801D43C7801D65C57, - F53B23A901D43C7801D65C57, - F53B23AA01D43C7801D65C57, - F53B23AB01D43C7801D65C57, - F53B23AC01D43C7801D65C57, - F53B23AD01D43C7801D65C57, - F53B23AE01D43C7801D65C57, - F53B23AF01D43C7801D65C57, - F53B23B001D43C7801D65C57, - F53B23B101D43C7801D65C57, - F53B23B201D43C7801D65C57, - F53B23B301D43C7801D65C57, - F53B23B401D43C7801D65C57, - F53B23B501D43C7801D65C57, - F53B23B601D43C7801D65C57, - F53B23B701D43C7801D65C57, - F53B23B801D43C7801D65C57, - F53B23B901D43C7801D65C57, - F53B23BA01D43C7801D65C57, - F53B23BB01D43C7801D65C57, - F53B23BC01D43C7801D65C57, - F53B23BD01D43C7801D65C57, - F53B23BE01D43C7801D65C57, - F53B23BF01D43C7801D65C57, - F53B23C001D43C7801D65C57, - F53B23C101D43C7801D65C57, - F53B23C201D43C7801D65C57, - F53B23C301D43C7801D65C57, - F53B23C401D43C7801D65C57, - F53B23C501D43C7801D65C57, - F53B23C601D43C7801D65C57, - F53B23C701D43C7801D65C57, - F53B23C801D43C7801D65C57, - F53B23C901D43C7801D65C57, - F53B23CA01D43C7801D65C57, - F53B23CB01D43C7801D65C57, - F53B23CC01D43C7801D65C57, - F53B23CD01D43C7801D65C57, - F53B23CE01D43C7801D65C57, - F53B23CF01D43C7801D65C57, - F53B23D001D43C7801D65C57, - F53B23D101D43C7801D65C57, - F53B23D201D43C7801D65C57, - F53B23D301D43C7801D65C57, - F53B23D401D43C7801D65C57, - F53B23D501D43C7801D65C57, - F53B23D601D43C7801D65C57, - F53B23D701D43C7801D65C57, - F53B23D801D43C7801D65C57, - F53B23D901D43C7801D65C57, - F53B23DA01D43C7801D65C57, - F53B23DB01D43C7801D65C57, - F53B23DC01D43C7801D65C57, - F53B23DD01D43C7801D65C57, - F53B23DE01D43C7801D65C57, - F53B23DF01D43C7801D65C57, - F53B23E001D43C7801D65C57, - F53B23E101D43C7801D65C57, - F53B23E201D43C7801D65C57, - F53B23E301D43C7801D65C57, - F53B23E401D43C7801D65C57, - F53B23E501D43C7801D65C57, - F53B23E601D43C7801D65C57, - F53B23E701D43C7801D65C57, - F53B23E801D43C7801D65C57, - F53B23E901D43C7801D65C57, - F53B23EA01D43C7801D65C57, - F53B23EB01D43C7801D65C57, - F53B23EC01D43C7801D65C57, - F53B23ED01D43C7801D65C57, - F53B23EE01D43C7801D65C57, - F53B23EF01D43C7801D65C57, - F53B23F001D43C7801D65C57, - F53B23F101D43C7801D65C57, - F53B23F201D43C7801D65C57, - F53B23F301D43C7801D65C57, - F53B23F401D43C7801D65C57, - F53B23F501D43C7801D65C57, - F53B23F601D43C7801D65C57, - F53B23F701D43C7801D65C57, - F53B23F801D43C7801D65C57, - F53B23F901D43C7801D65C57, - F53B23FA01D43C7801D65C57, - F53B23FB01D43C7801D65C57, - F53B23FC01D43C7801D65C57, - F53B23FD01D43C7801D65C57, - F53B23FE01D43C7801D65C57, - F53B23FF01D43C7801D65C57, - F53B240001D43C7801D65C57, - F53B240101D43C7801D65C57, - F53B240201D43C7801D65C57, - F53B240301D43C7801D65C57, - F53B240401D43C7801D65C57, - F53B240501D43C7801D65C57, - F53B240601D43C7801D65C57, - F53B240701D43C7801D65C57, - F53B240801D43C7801D65C57, - F53B240901D43C7801D65C57, - F53B240A01D43C7801D65C57, - F53B240B01D43C7801D65C57, - F53B240C01D43C7801D65C57, - F53B240D01D43C7801D65C57, - F53B240E01D43C7801D65C57, - F53B240F01D43C7801D65C57, - F53B241001D43C7801D65C57, - F53B241101D43C7801D65C57, - F53B241201D43C7801D65C57, - F53B241301D43C7801D65C57, - F53B241401D43C7801D65C57, - F53B241501D43C7801D65C57, - F53B241601D43C7801D65C57, - F53B241701D43C7801D65C57, - F53B241801D43C7801D65C57, - F53B241901D43C7801D65C57, - F53B241A01D43C7801D65C57, - F53B241B01D43C7801D65C57, - F53B241C01D43C7801D65C57, - F53B241D01D43C7801D65C57, - F53B241E01D43C7801D65C57, - F53B241F01D43C7801D65C57, - F53B242001D43C7801D65C57, - F53B242101D43C7801D65C57, - F53B242201D43C7801D65C57, - F53B242301D43C7801D65C57, - F53B242401D43C7801D65C57, - F53B242501D43C7801D65C57, - F53B242601D43C7801D65C57, - F53B242701D43C7801D65C57, - F53B242801D43C7801D65C57, - F53B242901D43C7801D65C57, - F53B242A01D43C7801D65C57, - F53B242B01D43C7801D65C57, - F53B242C01D43C7801D65C57, - F53B242D01D43C7801D65C57, - F53B242E01D43C7801D65C57, - F53B242F01D43C7801D65C57, - F53B243001D43C7801D65C57, - F53B243101D43C7801D65C57, - F53B243201D43C7801D65C57, - F53B243301D43C7801D65C57, - F53B243401D43C7801D65C57, - F53B243501D43C7801D65C57, - F53B243601D43C7801D65C57, - F53B243701D43C7801D65C57, - F53B243801D43C7801D65C57, - F53B243901D43C7801D65C57, - F53B243A01D43C7801D65C57, - F53B243B01D43C7801D65C57, - F53B243C01D43C7801D65C57, - F53B243D01D43C7801D65C57, - F53B243E01D43C7801D65C57, - F53B243F01D43C7801D65C57, - F53B244001D43C7801D65C57, - F53B244101D43C7801D65C57, - F53B244201D43C7801D65C57, - F53B244301D43C7801D65C57, - F53B244401D43C7801D65C57, - F53B244501D43C7801D65C57, - F53B244601D43C7801D65C57, - F53B244701D43C7801D65C57, - F53B244801D43C7801D65C57, - F53B244901D43C7801D65C57, - F53B244A01D43C7801D65C57, - F53B244B01D43C7801D65C57, - F53B244C01D43C7801D65C57, - F53B244D01D43C7801D65C57, - F53B244E01D43C7801D65C57, - F53B244F01D43C7801D65C57, - F53B245001D43C7801D65C57, - F53B245101D43C7801D65C57, - F53B245201D43C7801D65C57, - F53B245301D43C7801D65C57, - F53B245401D43C7801D65C57, - F53B245501D43C7801D65C57, - F53B245601D43C7801D65C57, - F53B245701D43C7801D65C57, - F53B245801D43C7801D65C57, - F53B245901D43C7801D65C57, - F53B245A01D43C7801D65C57, - F53B245B01D43C7801D65C57, - F53B245C01D43C7801D65C57, - F53B245D01D43C7801D65C57, - F53B245E01D43C7801D65C57, - F53B245F01D43C7801D65C57, - F53B246001D43C7801D65C57, - F53B246101D43C7801D65C57, - F53B246201D43C7801D65C57, - F53B246301D43C7801D65C57, - F53B246401D43C7801D65C57, - F53B246501D43C7801D65C57, - F53B246601D43C7801D65C57, - F53B246701D43C7801D65C57, - F53B246801D43C7801D65C57, - F53B246901D43C7801D65C57, - F53B246A01D43C7801D65C57, - F53B246B01D43C7801D65C57, - F53B246C01D43C7801D65C57, - F53B246D01D43C7801D65C57, - F53B246E01D43C7801D65C57, - F53B246F01D43C7801D65C57, - F53B247001D43C7801D65C57, - F53B247101D43C7801D65C57, - F53B247201D43C7801D65C57, - F53B247301D43C7801D65C57, - F53B247401D43C7801D65C57, - F53B247501D43C7801D65C57, - F53B247601D43C7801D65C57, - F53B247701D43C7801D65C57, - F53B247801D43C7801D65C57, - F53B247901D43C7801D65C57, - F53B247A01D43C7801D65C57, - F53B247B01D43C7801D65C57, - F53B247C01D43C7801D65C57, - F53B247D01D43C7801D65C57, - F53B247E01D43C7801D65C57, - F53B247F01D43C7801D65C57, - F53B248001D43C7801D65C57, - F53B248101D43C7801D65C57, - F53B248201D43C7801D65C57, - F53B248301D43C7801D65C57, - F53B248401D43C7801D65C57, - F53B248501D43C7801D65C57, - F53B248601D43C7801D65C57, - F53B248701D43C7801D65C57, - F53B248801D43C7801D65C57, - F53B248901D43C7801D65C57, - F53B248A01D43C7801D65C57, - F53B248B01D43C7801D65C57, - F53B248C01D43C7801D65C57, - F53B248D01D43C7801D65C57, - F53B248E01D43C7801D65C57, - F53B248F01D43C7801D65C57, - F53B249001D43C7801D65C57, - F53B249101D43C7801D65C57, - F53B249201D43C7801D65C57, - F53B249301D43C7801D65C57, - F53B249401D43C7801D65C57, - F53B249501D43C7801D65C57, - F53B249601D43C7801D65C57, - F53B249701D43C7801D65C57, - F53B249801D43C7801D65C57, - F53B249901D43C7801D65C57, - F53B249A01D43C7801D65C57, - F53B249B01D43C7801D65C57, - F53B249C01D43C7801D65C57, - F53B249D01D43C7801D65C57, - F53B249E01D43C7801D65C57, - F53B249F01D43C7801D65C57, - F53B24A001D43C7801D65C57, - F53B24A101D43C7801D65C57, - F53B24A201D43C7801D65C57, - F53B24A301D43C7801D65C57, - F53B24A401D43C7801D65C57, - F53B24A501D43C7801D65C57, - F53B24A601D43C7801D65C57, - F53B24A701D43C7801D65C57, - F53B24A801D43C7801D65C57, - F53B24A901D43C7801D65C57, - F53B24AA01D43C7801D65C57, - F53B24AB01D43C7801D65C57, - F53B24AC01D43C7801D65C57, - F53B24AD01D43C7801D65C57, - F53B24AE01D43C7801D65C57, - F53B24AF01D43C7801D65C57, - F53B24B001D43C7801D65C57, - F53B24B101D43C7801D65C57, - F53B24B201D43C7801D65C57, - F53B24B301D43C7801D65C57, - F53B24B401D43C7801D65C57, - F53B24B501D43C7801D65C57, - F53B24B601D43C7801D65C57, - F53B24B701D43C7801D65C57, - F53B24B801D43C7801D65C57, - F53B24B901D43C7801D65C57, - F53B24BA01D43C7801D65C57, - F53B24BB01D43C7801D65C57, - F53B24BC01D43C7801D65C57, - F53B24BD01D43C7801D65C57, - F53B24BE01D43C7801D65C57, - F53B24BF01D43C7801D65C57, - F53B24C001D43C7801D65C57, - F53B24C101D43C7801D65C57, - F53B24C201D43C7801D65C57, - F53B24C301D43C7801D65C57, - F53B24C401D43C7801D65C57, - F53B24C501D43C7801D65C57, - F53B24C601D43C7801D65C57, - F53B24C701D43C7801D65C57, - F53B24C801D43C7801D65C57, - F53B24C901D43C7801D65C57, - F53B24CA01D43C7801D65C57, - F53B24CB01D43C7801D65C57, - F53B24CC01D43C7801D65C57, - F53B24CD01D43C7801D65C57, - F53B24CE01D43C7801D65C57, - F53B24CF01D43C7801D65C57, - F53B24D001D43C7801D65C57, - F53B24D101D43C7801D65C57, - F53B24D201D43C7801D65C57, - F53B24D301D43C7801D65C57, - F53B24D401D43C7801D65C57, - F53B24D501D43C7801D65C57, - F53B24D601D43C7801D65C57, - F53B24D701D43C7801D65C57, - F53B24D801D43C7801D65C57, - F53B24D901D43C7801D65C57, - F53B24DA01D43C7801D65C57, - F53B24DB01D43C7801D65C57, - F53B24DC01D43C7801D65C57, - F53B24DD01D43C7801D65C57, - F53B24DE01D43C7801D65C57, - F53B24DF01D43C7801D65C57, - F53B24E001D43C7801D65C57, - F53B24E101D43C7801D65C57, - F53B24E201D43C7801D65C57, - F53B24E301D43C7801D65C57, - F53B24E401D43C7801D65C57, - F53B24E501D43C7801D65C57, - F53B24E601D43C7801D65C57, - F53B24E701D43C7801D65C57, - F53B24E801D43C7801D65C57, - F53B24E901D43C7801D65C57, - F53B24EA01D43C7801D65C57, - F53B24EB01D43C7801D65C57, - F53B24EC01D43C7801D65C57, - F53B24ED01D43C7801D65C57, - F53B24EE01D43C7801D65C57, - F53B24EF01D43C7801D65C57, - F53B24F001D43C7801D65C57, - F53B24F101D43C7801D65C57, - F53B24F201D43C7801D65C57, - F53B24F301D43C7801D65C57, - F53B24F401D43C7801D65C57, - F53B24F501D43C7801D65C57, - F53B24F601D43C7801D65C57, - F53B24F701D43C7801D65C57, - F53B24F801D43C7801D65C57, - F53B24F901D43C7801D65C57, - F53B24FA01D43C7801D65C57, - F53B24FB01D43C7801D65C57, - F53B24FC01D43C7801D65C57, - F53B24FD01D43C7801D65C57, - F53B24FE01D43C7801D65C57, - F53B24FF01D43C7801D65C57, - F53B250001D43C7801D65C57, - F53B250101D43C7801D65C57, - F53B250201D43C7801D65C57, - F53B250301D43C7801D65C57, - F53B250401D43C7801D65C57, - F53B250501D43C7801D65C57, - F53B250601D43C7801D65C57, - F53B250701D43C7801D65C57, - F53B250801D43C7801D65C57, - F53B250901D43C7801D65C57, - F53B250A01D43C7801D65C57, - F53B250B01D43C7801D65C57, - F53B250C01D43C7801D65C57, - F53B250D01D43C7801D65C57, - F53B250E01D43C7801D65C57, - F53B250F01D43C7801D65C57, - F53B251001D43C7801D65C57, - F53B251101D43C7801D65C57, - F53B251201D43C7801D65C57, - F53B251301D43C7801D65C57, - F53B251401D43C7801D65C57, - F53B251601D43C7801D65C57, - F53B251701D43C7801D65C57, - ); - isa = PBXResourcesBuildPhase; - name = "Bundle Resources"; - }; - 0867D69FFE84028FC02AAC07 = { - buildActionMask = 2147483647; - files = ( - F53B251801D43C7801D65C57, - F53B251A01D43C7801D65C57, - F53B251C01D43C7801D65C57, - F53B251D01D43C7801D65C57, - F53B251E01D43C7801D65C57, - F53B251F01D43C7801D65C57, - F53B252101D43C7801D65C57, - F53B252201D43C7801D65C57, - F53B252301D43C7801D65C57, - F53B252401D43C7801D65C57, - F53B252501D43C7801D65C57, - F53B252601D43C7801D65C57, - F53B252801D43C7801D65C57, - F53B252A01D43C7801D65C57, - F53B252B01D43C7801D65C57, - F53B252C01D43C7801D65C57, - F53B252D01D43C7801D65C57, - F53B252E01D43C7801D65C57, - F53B252F01D43C7801D65C57, - F53B253101D43C7801D65C57, - F53B253201D43C7801D65C57, - F53B253301D43C7801D65C57, - F53B253701D440D601D65C57, - ); - isa = PBXSourcesBuildPhase; - name = Sources; - }; - 0867D6A0FE84028FC02AAC07 = { - buildActionMask = 2147483647; - files = ( - F53B253501D43CF701D65C57, - ); - isa = PBXFrameworksBuildPhase; - name = "Frameworks & Libraries"; - }; - 0867D6A2FE84028FC02AAC07 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXRezBuildPhase; - name = "ResourceManager Resources"; - }; - 089C1665FE841158C02AAC07 = { - children = ( - 089C1666FE841158C02AAC07, - ); - isa = PBXGroup; - name = Resources; - refType = 4; - }; - 089C1666FE841158C02AAC07 = { - children = ( - 089C1667FE841158C02AAC07, - ); - isa = PBXVariantGroup; - name = InfoPlist.strings; - refType = 4; - }; - 089C1667FE841158C02AAC07 = { - fileEncoding = 10; - isa = PBXFileReference; - name = English; - path = English.lproj/InfoPlist.strings; - refType = 4; - }; - 089C1668FE841158C02AAC07 = { - fileRef = 089C1666FE841158C02AAC07; - isa = PBXBuildFile; - settings = { - }; - }; -//080 -//081 -//082 -//083 -//084 -//F50 -//F51 -//F52 -//F53 -//F54 - F53B219E01D43C7701D65C57 = { - children = ( - F53B21A001D43C7701D65C57, - F53B21A101D43C7701D65C57, - F53B21A301D43C7701D65C57, - F53B21A401D43C7701D65C57, - F53B21A601D43C7701D65C57, - F53B233A01D43C7801D65C57, - F53B233B01D43C7801D65C57, - F53B233C01D43C7801D65C57, - F53B233D01D43C7801D65C57, - F53B233E01D43C7801D65C57, - F53B233F01D43C7801D65C57, - F53B234001D43C7801D65C57, - F53B234201D43C7801D65C57, - F53B234301D43C7801D65C57, - F53B234401D43C7801D65C57, - F53B234501D43C7801D65C57, - F53B234601D43C7801D65C57, - F53B234701D43C7801D65C57, - F53B234801D43C7801D65C57, - F53B234901D43C7801D65C57, - F53B234A01D43C7801D65C57, - F53B234B01D43C7801D65C57, - F53B234D01D43C7801D65C57, - F53B234E01D43C7801D65C57, - F53B234F01D43C7801D65C57, - F53B235001D43C7801D65C57, - F53B235201D43C7801D65C57, - F53B235301D43C7801D65C57, - F53B235901D43C7801D65C57, - F53B235A01D43C7801D65C57, - F53B235B01D43C7801D65C57, - F53B235E01D43C7801D65C57, - F53B235F01D43C7801D65C57, - F53B236001D43C7801D65C57, - F53B236101D43C7801D65C57, - F53B236201D43C7801D65C57, - F53B236301D43C7801D65C57, - F53B236401D43C7801D65C57, - F53B236501D43C7801D65C57, - F53B236601D43C7801D65C57, - F53B236801D43C7801D65C57, - F53B236901D43C7801D65C57, - F53B236A01D43C7801D65C57, - F53B236B01D43C7801D65C57, - F53B253601D440D601D65C57, - ); - isa = PBXGroup; - name = lib; - path = ../lib; - refType = 4; - }; - F53B21A001D43C7701D65C57 = { - isa = PBXFileReference; - path = analysis.c; - refType = 4; - }; - F53B21A101D43C7701D65C57 = { - isa = PBXFileReference; - path = backends.h; - refType = 4; - }; - F53B21A301D43C7701D65C57 = { - isa = PBXFileReference; - path = bitrate.c; - refType = 4; - }; - F53B21A401D43C7701D65C57 = { - isa = PBXFileReference; - path = bitrate.h; - refType = 4; - }; - F53B21A601D43C7701D65C57 = { - children = ( - F53B21A701D43C7701D65C57, - F53B21A801D43C7701D65C57, - F53B22DD01D43C7701D65C57, - F53B230701D43C7801D65C57, - F53B230801D43C7801D65C57, - ); - isa = PBXGroup; - path = books; - refType = 4; - }; - F53B21A701D43C7701D65C57 = { - isa = PBXFileReference; - path = .cvsignore; - refType = 4; - }; - F53B21A801D43C7701D65C57 = { - children = ( - F53B21A901D43C7701D65C57, - F53B21AA01D43C7701D65C57, - F53B21AB01D43C7701D65C57, - F53B21AC01D43C7701D65C57, - F53B21AD01D43C7701D65C57, - F53B21AE01D43C7701D65C57, - F53B21AF01D43C7701D65C57, - F53B21B001D43C7701D65C57, - F53B21B101D43C7701D65C57, - F53B21B201D43C7701D65C57, - F53B21B301D43C7701D65C57, - F53B21B401D43C7701D65C57, - F53B21B501D43C7701D65C57, - F53B21B601D43C7701D65C57, - F53B21B701D43C7701D65C57, - F53B21B801D43C7701D65C57, - F53B21B901D43C7701D65C57, - F53B21BA01D43C7701D65C57, - F53B21BB01D43C7701D65C57, - F53B21BC01D43C7701D65C57, - F53B21BD01D43C7701D65C57, - F53B21BE01D43C7701D65C57, - F53B21BF01D43C7701D65C57, - F53B21C001D43C7701D65C57, - F53B21C101D43C7701D65C57, - F53B21C201D43C7701D65C57, - F53B21C301D43C7701D65C57, - F53B21C401D43C7701D65C57, - F53B21C501D43C7701D65C57, - F53B21C601D43C7701D65C57, - F53B21C701D43C7701D65C57, - F53B21C801D43C7701D65C57, - F53B21C901D43C7701D65C57, - F53B21CA01D43C7701D65C57, - F53B21CB01D43C7701D65C57, - F53B21CC01D43C7701D65C57, - F53B21CD01D43C7701D65C57, - F53B21CE01D43C7701D65C57, - F53B21CF01D43C7701D65C57, - F53B21D001D43C7701D65C57, - F53B21D101D43C7701D65C57, - F53B21D201D43C7701D65C57, - F53B21D301D43C7701D65C57, - F53B21D401D43C7701D65C57, - F53B21D501D43C7701D65C57, - F53B21D601D43C7701D65C57, - F53B21D701D43C7701D65C57, - F53B21D801D43C7701D65C57, - F53B21D901D43C7701D65C57, - F53B21DA01D43C7701D65C57, - F53B21DB01D43C7701D65C57, - F53B21DC01D43C7701D65C57, - F53B21DD01D43C7701D65C57, - F53B21DE01D43C7701D65C57, - F53B21DF01D43C7701D65C57, - F53B21E001D43C7701D65C57, - F53B21E101D43C7701D65C57, - F53B21E201D43C7701D65C57, - F53B21E301D43C7701D65C57, - F53B21E401D43C7701D65C57, - F53B21E501D43C7701D65C57, - F53B21E601D43C7701D65C57, - F53B21E701D43C7701D65C57, - F53B21E801D43C7701D65C57, - F53B21E901D43C7701D65C57, - F53B21EA01D43C7701D65C57, - F53B21EB01D43C7701D65C57, - F53B21EC01D43C7701D65C57, - F53B21ED01D43C7701D65C57, - F53B21EE01D43C7701D65C57, - F53B21EF01D43C7701D65C57, - F53B21F001D43C7701D65C57, - F53B21F101D43C7701D65C57, - F53B21F201D43C7701D65C57, - F53B21F301D43C7701D65C57, - F53B21F401D43C7701D65C57, - F53B21F501D43C7701D65C57, - F53B21F601D43C7701D65C57, - F53B21F701D43C7701D65C57, - F53B21F801D43C7701D65C57, - F53B21F901D43C7701D65C57, - F53B21FA01D43C7701D65C57, - F53B21FB01D43C7701D65C57, - F53B21FC01D43C7701D65C57, - F53B21FD01D43C7701D65C57, - F53B21FE01D43C7701D65C57, - F53B21FF01D43C7701D65C57, - F53B220001D43C7701D65C57, - F53B220101D43C7701D65C57, - F53B220201D43C7701D65C57, - F53B220301D43C7701D65C57, - F53B220401D43C7701D65C57, - F53B220501D43C7701D65C57, - F53B220601D43C7701D65C57, - F53B220701D43C7701D65C57, - F53B220801D43C7701D65C57, - F53B220901D43C7701D65C57, - F53B220A01D43C7701D65C57, - F53B220B01D43C7701D65C57, - F53B220C01D43C7701D65C57, - F53B220D01D43C7701D65C57, - F53B220E01D43C7701D65C57, - F53B220F01D43C7701D65C57, - F53B221001D43C7701D65C57, - F53B221101D43C7701D65C57, - F53B221201D43C7701D65C57, - F53B221301D43C7701D65C57, - F53B221401D43C7701D65C57, - F53B221501D43C7701D65C57, - F53B221601D43C7701D65C57, - F53B221701D43C7701D65C57, - F53B221801D43C7701D65C57, - F53B221901D43C7701D65C57, - F53B221A01D43C7701D65C57, - F53B221B01D43C7701D65C57, - F53B221C01D43C7701D65C57, - F53B221D01D43C7701D65C57, - F53B221E01D43C7701D65C57, - F53B221F01D43C7701D65C57, - F53B222001D43C7701D65C57, - F53B222101D43C7701D65C57, - F53B222201D43C7701D65C57, - F53B222301D43C7701D65C57, - F53B222401D43C7701D65C57, - F53B222501D43C7701D65C57, - F53B222601D43C7701D65C57, - F53B222701D43C7701D65C57, - F53B222801D43C7701D65C57, - F53B222901D43C7701D65C57, - F53B222A01D43C7701D65C57, - F53B222B01D43C7701D65C57, - F53B222C01D43C7701D65C57, - F53B222D01D43C7701D65C57, - F53B222E01D43C7701D65C57, - F53B222F01D43C7701D65C57, - F53B223001D43C7701D65C57, - F53B223101D43C7701D65C57, - F53B223201D43C7701D65C57, - F53B223301D43C7701D65C57, - F53B223401D43C7701D65C57, - F53B223501D43C7701D65C57, - F53B223601D43C7701D65C57, - F53B223701D43C7701D65C57, - F53B223801D43C7701D65C57, - F53B223901D43C7701D65C57, - F53B223A01D43C7701D65C57, - F53B223B01D43C7701D65C57, - F53B223C01D43C7701D65C57, - F53B223D01D43C7701D65C57, - F53B223E01D43C7701D65C57, - F53B223F01D43C7701D65C57, - F53B224001D43C7701D65C57, - F53B224101D43C7701D65C57, - F53B224201D43C7701D65C57, - F53B224301D43C7701D65C57, - F53B224401D43C7701D65C57, - F53B224501D43C7701D65C57, - F53B224601D43C7701D65C57, - F53B224701D43C7701D65C57, - F53B224801D43C7701D65C57, - F53B224901D43C7701D65C57, - F53B224A01D43C7701D65C57, - F53B224B01D43C7701D65C57, - F53B224C01D43C7701D65C57, - F53B224D01D43C7701D65C57, - F53B224E01D43C7701D65C57, - F53B224F01D43C7701D65C57, - F53B225001D43C7701D65C57, - F53B225101D43C7701D65C57, - F53B225201D43C7701D65C57, - F53B225301D43C7701D65C57, - F53B225401D43C7701D65C57, - F53B225501D43C7701D65C57, - F53B225601D43C7701D65C57, - F53B225701D43C7701D65C57, - F53B225801D43C7701D65C57, - F53B225901D43C7701D65C57, - F53B225A01D43C7701D65C57, - F53B225B01D43C7701D65C57, - F53B225C01D43C7701D65C57, - F53B225D01D43C7701D65C57, - F53B225E01D43C7701D65C57, - F53B225F01D43C7701D65C57, - F53B226001D43C7701D65C57, - F53B226101D43C7701D65C57, - F53B226201D43C7701D65C57, - F53B226301D43C7701D65C57, - F53B226401D43C7701D65C57, - F53B226501D43C7701D65C57, - F53B226601D43C7701D65C57, - F53B226701D43C7701D65C57, - F53B226801D43C7701D65C57, - F53B226901D43C7701D65C57, - F53B226A01D43C7701D65C57, - F53B226B01D43C7701D65C57, - F53B226C01D43C7701D65C57, - F53B226D01D43C7701D65C57, - F53B226E01D43C7701D65C57, - F53B226F01D43C7701D65C57, - F53B227001D43C7701D65C57, - F53B227101D43C7701D65C57, - F53B227201D43C7701D65C57, - F53B227301D43C7701D65C57, - F53B227401D43C7701D65C57, - F53B227501D43C7701D65C57, - F53B227601D43C7701D65C57, - F53B227701D43C7701D65C57, - F53B227801D43C7701D65C57, - F53B227901D43C7701D65C57, - F53B227A01D43C7701D65C57, - F53B227B01D43C7701D65C57, - F53B227C01D43C7701D65C57, - F53B227D01D43C7701D65C57, - F53B227E01D43C7701D65C57, - F53B227F01D43C7701D65C57, - F53B228001D43C7701D65C57, - F53B228101D43C7701D65C57, - F53B228201D43C7701D65C57, - F53B228301D43C7701D65C57, - F53B228401D43C7701D65C57, - F53B228501D43C7701D65C57, - F53B228601D43C7701D65C57, - F53B228701D43C7701D65C57, - F53B228801D43C7701D65C57, - F53B228901D43C7701D65C57, - F53B228A01D43C7701D65C57, - F53B228B01D43C7701D65C57, - F53B228C01D43C7701D65C57, - F53B228D01D43C7701D65C57, - F53B228E01D43C7701D65C57, - F53B228F01D43C7701D65C57, - F53B229001D43C7701D65C57, - F53B229101D43C7701D65C57, - F53B229201D43C7701D65C57, - F53B229301D43C7701D65C57, - F53B229401D43C7701D65C57, - F53B229501D43C7701D65C57, - F53B229601D43C7701D65C57, - F53B229701D43C7701D65C57, - F53B229801D43C7701D65C57, - F53B229901D43C7701D65C57, - F53B229A01D43C7701D65C57, - F53B229B01D43C7701D65C57, - F53B229C01D43C7701D65C57, - F53B229D01D43C7701D65C57, - F53B229E01D43C7701D65C57, - F53B229F01D43C7701D65C57, - F53B22A001D43C7701D65C57, - F53B22A101D43C7701D65C57, - F53B22A201D43C7701D65C57, - F53B22A301D43C7701D65C57, - F53B22A401D43C7701D65C57, - F53B22A501D43C7701D65C57, - F53B22A601D43C7701D65C57, - F53B22A701D43C7701D65C57, - F53B22A801D43C7701D65C57, - F53B22A901D43C7701D65C57, - F53B22AA01D43C7701D65C57, - F53B22AB01D43C7701D65C57, - F53B22AC01D43C7701D65C57, - F53B22AD01D43C7701D65C57, - F53B22AE01D43C7701D65C57, - F53B22AF01D43C7701D65C57, - F53B22B001D43C7701D65C57, - F53B22B101D43C7701D65C57, - F53B22B201D43C7701D65C57, - F53B22B301D43C7701D65C57, - F53B22B401D43C7701D65C57, - F53B22B501D43C7701D65C57, - F53B22B601D43C7701D65C57, - F53B22B701D43C7701D65C57, - F53B22B801D43C7701D65C57, - F53B22B901D43C7701D65C57, - F53B22BA01D43C7701D65C57, - F53B22BB01D43C7701D65C57, - F53B22BC01D43C7701D65C57, - F53B22BD01D43C7701D65C57, - F53B22BE01D43C7701D65C57, - F53B22BF01D43C7701D65C57, - F53B22C001D43C7701D65C57, - F53B22C101D43C7701D65C57, - F53B22C201D43C7701D65C57, - F53B22C301D43C7701D65C57, - F53B22C401D43C7701D65C57, - F53B22C501D43C7701D65C57, - F53B22C601D43C7701D65C57, - F53B22C701D43C7701D65C57, - F53B22C801D43C7701D65C57, - F53B22C901D43C7701D65C57, - F53B22CA01D43C7701D65C57, - F53B22CB01D43C7701D65C57, - F53B22CC01D43C7701D65C57, - F53B22CD01D43C7701D65C57, - F53B22CE01D43C7701D65C57, - F53B22CF01D43C7701D65C57, - F53B22D001D43C7701D65C57, - F53B22D101D43C7701D65C57, - F53B22D201D43C7701D65C57, - F53B22D301D43C7701D65C57, - F53B22D401D43C7701D65C57, - F53B22D501D43C7701D65C57, - F53B22D601D43C7701D65C57, - F53B22D701D43C7701D65C57, - F53B22D801D43C7701D65C57, - F53B22D901D43C7701D65C57, - F53B22DA01D43C7701D65C57, - F53B22DB01D43C7701D65C57, - F53B22DC01D43C7701D65C57, - ); - isa = PBXGroup; - path = coupled; - refType = 4; - }; - F53B21A901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_long.vqh; - refType = 4; - }; - F53B21AA01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s0_p0_r0.vqh; - refType = 4; - }; - F53B21AB01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s0_p0_r1.vqh; - refType = 4; - }; - F53B21AC01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s0_p1_0.vqh; - refType = 4; - }; - F53B21AD01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s0_p2_0.vqh; - refType = 4; - }; - F53B21AE01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s0_p3_0.vqh; - refType = 4; - }; - F53B21AF01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s0_p4_0.vqh; - refType = 4; - }; - F53B21B001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s0_p4_1.vqh; - refType = 4; - }; - F53B21B101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s0_p5_0.vqh; - refType = 4; - }; - F53B21B201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s0_p6_0.vqh; - refType = 4; - }; - F53B21B301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s0_p7_0.vqh; - refType = 4; - }; - F53B21B401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s0_p7_1.vqh; - refType = 4; - }; - F53B21B501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s0_p7_2.vqh; - refType = 4; - }; - F53B21B601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s0_pN_r0.vqh; - refType = 4; - }; - F53B21B701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s0_pN_r1.vqh; - refType = 4; - }; - F53B21B801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s1_p5_0.vqh; - refType = 4; - }; - F53B21B901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s1_p5_s0.vqh; - refType = 4; - }; - F53B21BA01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s1_p6_0.vqh; - refType = 4; - }; - F53B21BB01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s1_p6_s0.vqh; - refType = 4; - }; - F53B21BC01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s1_p7_0.vqh; - refType = 4; - }; - F53B21BD01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s1_p7_1.vqh; - refType = 4; - }; - F53B21BE01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s1_p7_2.vqh; - refType = 4; - }; - F53B21BF01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s1_p7_s0.vqh; - refType = 4; - }; - F53B21C001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s1_pS_r0.vqh; - refType = 4; - }; - F53B21C101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s1_pS_r1.vqh; - refType = 4; - }; - F53B21C201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s2_p6_0.vqh; - refType = 4; - }; - F53B21C301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s2_p6_s0.vqh; - refType = 4; - }; - F53B21C401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s2_p7_0.vqh; - refType = 4; - }; - F53B21C501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s2_p7_1.vqh; - refType = 4; - }; - F53B21C601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s2_p7_2.vqh; - refType = 4; - }; - F53B21C701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s2_p7_s0.vqh; - refType = 4; - }; - F53B21C801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s3_p7_0.vqh; - refType = 4; - }; - F53B21C901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s3_p7_1.vqh; - refType = 4; - }; - F53B21CA01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s3_p7_2.vqh; - refType = 4; - }; - F53B21CB01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s3_p7_s0.vqh; - refType = 4; - }; - F53B21CC01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s4_p7_0.vqh; - refType = 4; - }; - F53B21CD01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s4_p7_1.vqh; - refType = 4; - }; - F53B21CE01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_s4_p7_2.vqh; - refType = 4; - }; - F53B21CF01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c0_short.vqh; - refType = 4; - }; - F53B21D001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_long.vqh; - refType = 4; - }; - F53B21D101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s0_p1_0.vqh; - refType = 4; - }; - F53B21D201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s0_p2_0.vqh; - refType = 4; - }; - F53B21D301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s0_p3_0.vqh; - refType = 4; - }; - F53B21D401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s0_p4_0.vqh; - refType = 4; - }; - F53B21D501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s0_p4_1.vqh; - refType = 4; - }; - F53B21D601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s0_p5_0.vqh; - refType = 4; - }; - F53B21D701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s0_p6_0.vqh; - refType = 4; - }; - F53B21D801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s0_p7_0.vqh; - refType = 4; - }; - F53B21D901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s0_p7_1.vqh; - refType = 4; - }; - F53B21DA01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s0_p7_2.vqh; - refType = 4; - }; - F53B21DB01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s1_p5_0.vqh; - refType = 4; - }; - F53B21DC01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s1_p6_0.vqh; - refType = 4; - }; - F53B21DD01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s1_p7_0.vqh; - refType = 4; - }; - F53B21DE01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s1_p7_1.vqh; - refType = 4; - }; - F53B21DF01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s1_p7_2.vqh; - refType = 4; - }; - F53B21E001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s2_p6_0.vqh; - refType = 4; - }; - F53B21E101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s2_p7_0.vqh; - refType = 4; - }; - F53B21E201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s2_p7_1.vqh; - refType = 4; - }; - F53B21E301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s2_p7_2.vqh; - refType = 4; - }; - F53B21E401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s3_p7_0.vqh; - refType = 4; - }; - F53B21E501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s3_p7_1.vqh; - refType = 4; - }; - F53B21E601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_s3_p7_2.vqh; - refType = 4; - }; - F53B21E701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c1_short.vqh; - refType = 4; - }; - F53B21E801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_long.vqh; - refType = 4; - }; - F53B21E901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s0_p1_0.vqh; - refType = 4; - }; - F53B21EA01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s0_p2_0.vqh; - refType = 4; - }; - F53B21EB01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s0_p3_0.vqh; - refType = 4; - }; - F53B21EC01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s0_p4_0.vqh; - refType = 4; - }; - F53B21ED01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s0_p4_1.vqh; - refType = 4; - }; - F53B21EE01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s0_p5_0.vqh; - refType = 4; - }; - F53B21EF01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s0_p6_0.vqh; - refType = 4; - }; - F53B21F001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s0_p7_0.vqh; - refType = 4; - }; - F53B21F101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s0_p7_1.vqh; - refType = 4; - }; - F53B21F201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s0_p7_2.vqh; - refType = 4; - }; - F53B21F301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s1_p5_0.vqh; - refType = 4; - }; - F53B21F401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s1_p6_0.vqh; - refType = 4; - }; - F53B21F501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s1_p7_0.vqh; - refType = 4; - }; - F53B21F601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s1_p7_1.vqh; - refType = 4; - }; - F53B21F701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s1_p7_2.vqh; - refType = 4; - }; - F53B21F801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s2_p6_0.vqh; - refType = 4; - }; - F53B21F901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s2_p7_0.vqh; - refType = 4; - }; - F53B21FA01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s2_p7_1.vqh; - refType = 4; - }; - F53B21FB01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s2_p7_2.vqh; - refType = 4; - }; - F53B21FC01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s3_p7_0.vqh; - refType = 4; - }; - F53B21FD01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s3_p7_1.vqh; - refType = 4; - }; - F53B21FE01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_s3_p7_2.vqh; - refType = 4; - }; - F53B21FF01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c2_short.vqh; - refType = 4; - }; - F53B220001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_long.vqh; - refType = 4; - }; - F53B220101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s0_p1_0.vqh; - refType = 4; - }; - F53B220201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s0_p2_0.vqh; - refType = 4; - }; - F53B220301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s0_p3_0.vqh; - refType = 4; - }; - F53B220401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s0_p4_0.vqh; - refType = 4; - }; - F53B220501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s0_p4_1.vqh; - refType = 4; - }; - F53B220601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s0_p5_0.vqh; - refType = 4; - }; - F53B220701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s0_p6_0.vqh; - refType = 4; - }; - F53B220801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s0_p7_0.vqh; - refType = 4; - }; - F53B220901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s0_p7_1.vqh; - refType = 4; - }; - F53B220A01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s0_p7_2.vqh; - refType = 4; - }; - F53B220B01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s1_p5_0.vqh; - refType = 4; - }; - F53B220C01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s1_p6_0.vqh; - refType = 4; - }; - F53B220D01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s1_p7_0.vqh; - refType = 4; - }; - F53B220E01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s1_p7_1.vqh; - refType = 4; - }; - F53B220F01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s1_p7_2.vqh; - refType = 4; - }; - F53B221001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s2_p6_0.vqh; - refType = 4; - }; - F53B221101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s2_p7_0.vqh; - refType = 4; - }; - F53B221201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s2_p7_1.vqh; - refType = 4; - }; - F53B221301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s2_p7_2.vqh; - refType = 4; - }; - F53B221401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s3_p7_0.vqh; - refType = 4; - }; - F53B221501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s3_p7_1.vqh; - refType = 4; - }; - F53B221601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_s3_p7_2.vqh; - refType = 4; - }; - F53B221701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c3_short.vqh; - refType = 4; - }; - F53B221801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_long.vqd; - refType = 4; - }; - F53B221901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_long.vqh; - refType = 4; - }; - F53B221A01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_p0_r0.vqh; - refType = 4; - }; - F53B221B01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_p0_r1.vqh; - refType = 4; - }; - F53B221C01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_p1_0.vqh; - refType = 4; - }; - F53B221D01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_p2_0.vqh; - refType = 4; - }; - F53B221E01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_p3_0.vqh; - refType = 4; - }; - F53B221F01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_p4_0.vqh; - refType = 4; - }; - F53B222001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_p5_0.vqh; - refType = 4; - }; - F53B222101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_p6_0.vqh; - refType = 4; - }; - F53B222201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_p7_0.vqh; - refType = 4; - }; - F53B222301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_p7_1.vqh; - refType = 4; - }; - F53B222401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_p8_0.vqh; - refType = 4; - }; - F53B222501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_p8_1.vqh; - refType = 4; - }; - F53B222601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_p9_0.vqh; - refType = 4; - }; - F53B222701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_p9_1.vqh; - refType = 4; - }; - F53B222801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_p9_2.vqh; - refType = 4; - }; - F53B222901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_pN_r0.vqh; - refType = 4; - }; - F53B222A01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s0_pN_r1.vqh; - refType = 4; - }; - F53B222B01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_p2_0.vqh; - refType = 4; - }; - F53B222C01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_p2_s0.vqh; - refType = 4; - }; - F53B222D01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_p4_0.vqh; - refType = 4; - }; - F53B222E01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_p4_s0.vqh; - refType = 4; - }; - F53B222F01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_p6_0.vqh; - refType = 4; - }; - F53B223001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_p6_s0.vqh; - refType = 4; - }; - F53B223101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_p7_0.vqh; - refType = 4; - }; - F53B223201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_p7_1.vqh; - refType = 4; - }; - F53B223301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_p7_s0.vqh; - refType = 4; - }; - F53B223401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_p8_0.vqh; - refType = 4; - }; - F53B223501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_p8_1.vqh; - refType = 4; - }; - F53B223601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_p8_s0.vqh; - refType = 4; - }; - F53B223701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_p9_0.vqh; - refType = 4; - }; - F53B223801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_p9_1.vqh; - refType = 4; - }; - F53B223901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_p9_2.vqh; - refType = 4; - }; - F53B223A01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_p9_s0.vqh; - refType = 4; - }; - F53B223B01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_pS_r0.vqh; - refType = 4; - }; - F53B223C01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s1_pS_r1.vqh; - refType = 4; - }; - F53B223D01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s2_p6_0.vqh; - refType = 4; - }; - F53B223E01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s2_p6_s0.vqh; - refType = 4; - }; - F53B223F01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s2_p7_0.vqh; - refType = 4; - }; - F53B224001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s2_p7_1.vqh; - refType = 4; - }; - F53B224101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s2_p7_s0.vqh; - refType = 4; - }; - F53B224201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s2_p8_0.vqh; - refType = 4; - }; - F53B224301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s2_p8_1.vqh; - refType = 4; - }; - F53B224401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s2_p8_s0.vqh; - refType = 4; - }; - F53B224501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s2_p9_0.vqh; - refType = 4; - }; - F53B224601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s2_p9_1.vqh; - refType = 4; - }; - F53B224701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s2_p9_2.vqh; - refType = 4; - }; - F53B224801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s2_p9_s0.vqh; - refType = 4; - }; - F53B224901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s3_p7_0.vqh; - refType = 4; - }; - F53B224A01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s3_p7_1.vqh; - refType = 4; - }; - F53B224B01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s3_p8_0.vqh; - refType = 4; - }; - F53B224C01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s3_p8_1.vqh; - refType = 4; - }; - F53B224D01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s3_p9_0.vqh; - refType = 4; - }; - F53B224E01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s3_p9_1.vqh; - refType = 4; - }; - F53B224F01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s3_p9_2.vqh; - refType = 4; - }; - F53B225001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_s3_p9_s0.vqh; - refType = 4; - }; - F53B225101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_short.vqd; - refType = 4; - }; - F53B225201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c4_short.vqh; - refType = 4; - }; - F53B225301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_long.vqh; - refType = 4; - }; - F53B225401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s0_p1_0.vqh; - refType = 4; - }; - F53B225501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s0_p2_0.vqh; - refType = 4; - }; - F53B225601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s0_p3_0.vqh; - refType = 4; - }; - F53B225701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s0_p4_0.vqh; - refType = 4; - }; - F53B225801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s0_p5_0.vqh; - refType = 4; - }; - F53B225901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s0_p6_0.vqh; - refType = 4; - }; - F53B225A01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s0_p7_0.vqh; - refType = 4; - }; - F53B225B01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s0_p7_1.vqh; - refType = 4; - }; - F53B225C01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s0_p8_0.vqh; - refType = 4; - }; - F53B225D01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s0_p8_1.vqh; - refType = 4; - }; - F53B225E01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s0_p9_0.vqh; - refType = 4; - }; - F53B225F01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s0_p9_1.vqh; - refType = 4; - }; - F53B226001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s0_p9_2.vqh; - refType = 4; - }; - F53B226101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s1_p2_0.vqh; - refType = 4; - }; - F53B226201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s1_p4_0.vqh; - refType = 4; - }; - F53B226301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s1_p6_0.vqh; - refType = 4; - }; - F53B226401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s1_p7_0.vqh; - refType = 4; - }; - F53B226501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s1_p7_1.vqh; - refType = 4; - }; - F53B226601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s1_p8_0.vqh; - refType = 4; - }; - F53B226701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s1_p8_1.vqh; - refType = 4; - }; - F53B226801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s1_p9_0.vqh; - refType = 4; - }; - F53B226901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s1_p9_1.vqh; - refType = 4; - }; - F53B226A01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s1_p9_2.vqh; - refType = 4; - }; - F53B226B01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s2_p6_0.vqh; - refType = 4; - }; - F53B226C01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s2_p7_0.vqh; - refType = 4; - }; - F53B226D01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s2_p7_1.vqh; - refType = 4; - }; - F53B226E01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s2_p8_0.vqh; - refType = 4; - }; - F53B226F01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s2_p8_1.vqh; - refType = 4; - }; - F53B227001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s2_p9_0.vqh; - refType = 4; - }; - F53B227101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s2_p9_1.vqh; - refType = 4; - }; - F53B227201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s2_p9_2.vqh; - refType = 4; - }; - F53B227301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s3_p7_0.vqh; - refType = 4; - }; - F53B227401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s3_p7_1.vqh; - refType = 4; - }; - F53B227501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s3_p8_0.vqh; - refType = 4; - }; - F53B227601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s3_p8_1.vqh; - refType = 4; - }; - F53B227701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s3_p9_0.vqh; - refType = 4; - }; - F53B227801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s3_p9_1.vqh; - refType = 4; - }; - F53B227901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_s3_p9_2.vqh; - refType = 4; - }; - F53B227A01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c5_short.vqh; - refType = 4; - }; - F53B227B01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_long.vqh; - refType = 4; - }; - F53B227C01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s0_p1_0.vqh; - refType = 4; - }; - F53B227D01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s0_p2_0.vqh; - refType = 4; - }; - F53B227E01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s0_p3_0.vqh; - refType = 4; - }; - F53B227F01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s0_p4_0.vqh; - refType = 4; - }; - F53B228001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s0_p5_0.vqh; - refType = 4; - }; - F53B228101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s0_p6_0.vqh; - refType = 4; - }; - F53B228201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s0_p7_0.vqh; - refType = 4; - }; - F53B228301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s0_p7_1.vqh; - refType = 4; - }; - F53B228401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s0_p8_0.vqh; - refType = 4; - }; - F53B228501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s0_p8_1.vqh; - refType = 4; - }; - F53B228601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s0_p9_0.vqh; - refType = 4; - }; - F53B228701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s0_p9_1.vqh; - refType = 4; - }; - F53B228801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s0_p9_2.vqh; - refType = 4; - }; - F53B228901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s1_p2_0.vqh; - refType = 4; - }; - F53B228A01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s1_p4_0.vqh; - refType = 4; - }; - F53B228B01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s1_p6_0.vqh; - refType = 4; - }; - F53B228C01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s1_p7_0.vqh; - refType = 4; - }; - F53B228D01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s1_p7_1.vqh; - refType = 4; - }; - F53B228E01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s1_p8_0.vqh; - refType = 4; - }; - F53B228F01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s1_p8_1.vqh; - refType = 4; - }; - F53B229001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s1_p9_0.vqh; - refType = 4; - }; - F53B229101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s1_p9_1.vqh; - refType = 4; - }; - F53B229201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s1_p9_2.vqh; - refType = 4; - }; - F53B229301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s2_p6_0.vqh; - refType = 4; - }; - F53B229401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s2_p7_0.vqh; - refType = 4; - }; - F53B229501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s2_p7_1.vqh; - refType = 4; - }; - F53B229601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s2_p8_0.vqh; - refType = 4; - }; - F53B229701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s2_p8_1.vqh; - refType = 4; - }; - F53B229801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s2_p9_0.vqh; - refType = 4; - }; - F53B229901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s2_p9_1.vqh; - refType = 4; - }; - F53B229A01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s2_p9_2.vqh; - refType = 4; - }; - F53B229B01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s3_p7_0.vqh; - refType = 4; - }; - F53B229C01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s3_p7_1.vqh; - refType = 4; - }; - F53B229D01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s3_p8_0.vqh; - refType = 4; - }; - F53B229E01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s3_p8_1.vqh; - refType = 4; - }; - F53B229F01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s3_p9_0.vqh; - refType = 4; - }; - F53B22A001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s3_p9_1.vqh; - refType = 4; - }; - F53B22A101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_s3_p9_2.vqh; - refType = 4; - }; - F53B22A201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c6_short.vqh; - refType = 4; - }; - F53B22A301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_long.vqh; - refType = 4; - }; - F53B22A401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p0_r0.vqh; - refType = 4; - }; - F53B22A501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p0_r1.vqh; - refType = 4; - }; - F53B22A601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p1_0.vqh; - refType = 4; - }; - F53B22A701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p1_1.vqh; - refType = 4; - }; - F53B22A801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p2_0.vqh; - refType = 4; - }; - F53B22A901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p2_1.vqh; - refType = 4; - }; - F53B22AA01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p3_0.vqh; - refType = 4; - }; - F53B22AB01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p4_0.vqh; - refType = 4; - }; - F53B22AC01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p5_0.vqh; - refType = 4; - }; - F53B22AD01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p6_0.vqh; - refType = 4; - }; - F53B22AE01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p6_1.vqh; - refType = 4; - }; - F53B22AF01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p7_0.vqh; - refType = 4; - }; - F53B22B001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p7_1.vqh; - refType = 4; - }; - F53B22B101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p8_0.vqh; - refType = 4; - }; - F53B22B201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p8_1.vqh; - refType = 4; - }; - F53B22B301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p9_0.vqh; - refType = 4; - }; - F53B22B401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p9_1.vqh; - refType = 4; - }; - F53B22B501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_p9_2.vqh; - refType = 4; - }; - F53B22B601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_pN_r0.vqh; - refType = 4; - }; - F53B22B701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_s0_pN_r1.vqh; - refType = 4; - }; - F53B22B801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c7_short.vqh; - refType = 4; - }; - F53B22B901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_long.vqh; - refType = 4; - }; - F53B22BA01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_s0_p1_0.vqh; - refType = 4; - }; - F53B22BB01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_s0_p1_1.vqh; - refType = 4; - }; - F53B22BC01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_s0_p2_0.vqh; - refType = 4; - }; - F53B22BD01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_s0_p2_1.vqh; - refType = 4; - }; - F53B22BE01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_s0_p3_0.vqh; - refType = 4; - }; - F53B22BF01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_s0_p4_0.vqh; - refType = 4; - }; - F53B22C001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_s0_p5_0.vqh; - refType = 4; - }; - F53B22C101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_s0_p6_0.vqh; - refType = 4; - }; - F53B22C201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_s0_p6_1.vqh; - refType = 4; - }; - F53B22C301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_s0_p7_0.vqh; - refType = 4; - }; - F53B22C401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_s0_p7_1.vqh; - refType = 4; - }; - F53B22C501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_s0_p8_0.vqh; - refType = 4; - }; - F53B22C601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_s0_p8_1.vqh; - refType = 4; - }; - F53B22C701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_s0_p9_0.vqh; - refType = 4; - }; - F53B22C801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_s0_p9_1.vqh; - refType = 4; - }; - F53B22C901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_s0_p9_2.vqh; - refType = 4; - }; - F53B22CA01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c8_short.vqh; - refType = 4; - }; - F53B22CB01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_long.vqh; - refType = 4; - }; - F53B22CC01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_s0_p1_0.vqh; - refType = 4; - }; - F53B22CD01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_s0_p1_1.vqh; - refType = 4; - }; - F53B22CE01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_s0_p2_0.vqh; - refType = 4; - }; - F53B22CF01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_s0_p2_1.vqh; - refType = 4; - }; - F53B22D001D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_s0_p3_0.vqh; - refType = 4; - }; - F53B22D101D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_s0_p4_0.vqh; - refType = 4; - }; - F53B22D201D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_s0_p5_0.vqh; - refType = 4; - }; - F53B22D301D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_s0_p6_0.vqh; - refType = 4; - }; - F53B22D401D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_s0_p6_1.vqh; - refType = 4; - }; - F53B22D501D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_s0_p7_0.vqh; - refType = 4; - }; - F53B22D601D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_s0_p7_1.vqh; - refType = 4; - }; - F53B22D701D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_s0_p8_0.vqh; - refType = 4; - }; - F53B22D801D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_s0_p8_1.vqh; - refType = 4; - }; - F53B22D901D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_s0_p9_0.vqh; - refType = 4; - }; - F53B22DA01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_s0_p9_1.vqh; - refType = 4; - }; - F53B22DB01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_s0_p9_2.vqh; - refType = 4; - }; - F53B22DC01D43C7701D65C57 = { - isa = PBXFileReference; - path = _44c9_short.vqh; - refType = 4; - }; - F53B22DD01D43C7701D65C57 = { - children = ( - F53B22DE01D43C7701D65C57, - F53B22DF01D43C7701D65C57, - F53B22E001D43C7701D65C57, - F53B22E101D43C7701D65C57, - F53B22E201D43C7701D65C57, - F53B22E301D43C7701D65C57, - F53B22E401D43C7701D65C57, - F53B22E501D43C7701D65C57, - F53B22E601D43C7701D65C57, - F53B22E701D43C7701D65C57, - F53B22E801D43C7701D65C57, - F53B22E901D43C7701D65C57, - F53B22EA01D43C7701D65C57, - F53B22EB01D43C7701D65C57, - F53B22EC01D43C7801D65C57, - F53B22ED01D43C7801D65C57, - F53B22EE01D43C7801D65C57, - F53B22EF01D43C7801D65C57, - F53B22F001D43C7801D65C57, - F53B22F101D43C7801D65C57, - F53B22F201D43C7801D65C57, - F53B22F301D43C7801D65C57, - F53B22F401D43C7801D65C57, - F53B22F501D43C7801D65C57, - F53B22F601D43C7801D65C57, - F53B22F701D43C7801D65C57, - F53B22F801D43C7801D65C57, - F53B22F901D43C7801D65C57, - F53B22FA01D43C7801D65C57, - F53B22FB01D43C7801D65C57, - F53B22FC01D43C7801D65C57, - F53B22FD01D43C7801D65C57, - F53B22FE01D43C7801D65C57, - F53B22FF01D43C7801D65C57, - F53B230001D43C7801D65C57, - F53B230101D43C7801D65C57, - F53B230201D43C7801D65C57, - F53B230301D43C7801D65C57, - F53B230401D43C7801D65C57, - F53B230501D43C7801D65C57, - F53B230601D43C7801D65C57, - ); - isa = PBXGroup; - path = floor; - refType = 4; - }; - F53B22DE01D43C7701D65C57 = { - isa = PBXFileReference; - path = line_1024x31_0sub0.vqh; - refType = 4; - }; - F53B22DF01D43C7701D65C57 = { - isa = PBXFileReference; - path = line_1024x31_0sub1.vqh; - refType = 4; - }; - F53B22E001D43C7701D65C57 = { - isa = PBXFileReference; - path = line_1024x31_1sub0.vqh; - refType = 4; - }; - F53B22E101D43C7701D65C57 = { - isa = PBXFileReference; - path = line_1024x31_1sub1.vqh; - refType = 4; - }; - F53B22E201D43C7701D65C57 = { - isa = PBXFileReference; - path = line_1024x31_2sub1.vqh; - refType = 4; - }; - F53B22E301D43C7701D65C57 = { - isa = PBXFileReference; - path = line_1024x31_2sub2.vqh; - refType = 4; - }; - F53B22E401D43C7701D65C57 = { - isa = PBXFileReference; - path = line_1024x31_2sub3.vqh; - refType = 4; - }; - F53B22E501D43C7701D65C57 = { - isa = PBXFileReference; - path = line_1024x31_3sub1.vqh; - refType = 4; - }; - F53B22E601D43C7701D65C57 = { - isa = PBXFileReference; - path = line_1024x31_3sub2.vqh; - refType = 4; - }; - F53B22E701D43C7701D65C57 = { - isa = PBXFileReference; - path = line_1024x31_3sub3.vqh; - refType = 4; - }; - F53B22E801D43C7701D65C57 = { - isa = PBXFileReference; - path = line_1024x31_class0.vqh; - refType = 4; - }; - F53B22E901D43C7701D65C57 = { - isa = PBXFileReference; - path = line_1024x31_class1.vqh; - refType = 4; - }; - F53B22EA01D43C7701D65C57 = { - isa = PBXFileReference; - path = line_1024x31_class2.vqh; - refType = 4; - }; - F53B22EB01D43C7701D65C57 = { - isa = PBXFileReference; - path = line_1024x31_class3.vqh; - refType = 4; - }; - F53B22EC01D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x19_0sub0.vqh; - refType = 4; - }; - F53B22ED01D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x19_1sub1.vqh; - refType = 4; - }; - F53B22EE01D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x19_1sub2.vqh; - refType = 4; - }; - F53B22EF01D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x19_1sub3.vqh; - refType = 4; - }; - F53B22F001D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x19_2sub1.vqh; - refType = 4; - }; - F53B22F101D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x19_2sub2.vqh; - refType = 4; - }; - F53B22F201D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x19_2sub3.vqh; - refType = 4; - }; - F53B22F301D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x19_class1.vqh; - refType = 4; - }; - F53B22F401D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x19_class2.vqh; - refType = 4; - }; - F53B22F501D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x7_0sub0.vqh; - refType = 4; - }; - F53B22F601D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x7_1sub1.vqh; - refType = 4; - }; - F53B22F701D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x7_1sub2.vqh; - refType = 4; - }; - F53B22F801D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x7_1sub3.vqh; - refType = 4; - }; - F53B22F901D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x7_2sub1.vqh; - refType = 4; - }; - F53B22FA01D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x7_2sub2.vqh; - refType = 4; - }; - F53B22FB01D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x7_2sub3.vqh; - refType = 4; - }; - F53B22FC01D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x7_class1.vqh; - refType = 4; - }; - F53B22FD01D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x7_class2.vqh; - refType = 4; - }; - F53B22FE01D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x9_0sub0.vqh; - refType = 4; - }; - F53B22FF01D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x9_1sub1.vqh; - refType = 4; - }; - F53B230001D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x9_1sub2.vqh; - refType = 4; - }; - F53B230101D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x9_1sub3.vqh; - refType = 4; - }; - F53B230201D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x9_2sub1.vqh; - refType = 4; - }; - F53B230301D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x9_2sub2.vqh; - refType = 4; - }; - F53B230401D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x9_2sub3.vqh; - refType = 4; - }; - F53B230501D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x9_class1.vqh; - refType = 4; - }; - F53B230601D43C7801D65C57 = { - isa = PBXFileReference; - path = line_128x9_class2.vqh; - refType = 4; - }; - F53B230701D43C7801D65C57 = { - isa = PBXFileReference; - path = Makefile.am; - refType = 4; - }; - F53B230801D43C7801D65C57 = { - children = ( - F53B230901D43C7801D65C57, - F53B230A01D43C7801D65C57, - F53B230B01D43C7801D65C57, - F53B230C01D43C7801D65C57, - F53B230D01D43C7801D65C57, - F53B230E01D43C7801D65C57, - F53B230F01D43C7801D65C57, - F53B231001D43C7801D65C57, - F53B231101D43C7801D65C57, - F53B231201D43C7801D65C57, - F53B231301D43C7801D65C57, - F53B231401D43C7801D65C57, - F53B231501D43C7801D65C57, - F53B231601D43C7801D65C57, - F53B231701D43C7801D65C57, - F53B231801D43C7801D65C57, - F53B231901D43C7801D65C57, - F53B231A01D43C7801D65C57, - F53B231B01D43C7801D65C57, - F53B231C01D43C7801D65C57, - F53B231D01D43C7801D65C57, - F53B231E01D43C7801D65C57, - F53B231F01D43C7801D65C57, - F53B232001D43C7801D65C57, - F53B232101D43C7801D65C57, - F53B232201D43C7801D65C57, - F53B232301D43C7801D65C57, - F53B232401D43C7801D65C57, - F53B232501D43C7801D65C57, - F53B232601D43C7801D65C57, - F53B232701D43C7801D65C57, - F53B232801D43C7801D65C57, - F53B232901D43C7801D65C57, - F53B232A01D43C7801D65C57, - F53B232B01D43C7801D65C57, - F53B232C01D43C7801D65C57, - F53B232D01D43C7801D65C57, - F53B232E01D43C7801D65C57, - F53B232F01D43C7801D65C57, - F53B233001D43C7801D65C57, - F53B233101D43C7801D65C57, - F53B233201D43C7801D65C57, - F53B233301D43C7801D65C57, - F53B233401D43C7801D65C57, - F53B233501D43C7801D65C57, - F53B233601D43C7801D65C57, - F53B233701D43C7801D65C57, - F53B233801D43C7801D65C57, - F53B233901D43C7801D65C57, - ); - isa = PBXGroup; - path = uncoupled; - refType = 4; - }; - F53B230901D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u0_p0_r0.vqh; - refType = 4; - }; - F53B230A01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u0_p0_r1.vqh; - refType = 4; - }; - F53B230B01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u0_p1_0.vqh; - refType = 4; - }; - F53B230C01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u0_p1_r0.vqh; - refType = 4; - }; - F53B230D01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u0_p1_r1.vqh; - refType = 4; - }; - F53B230E01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u0_p2_0.vqh; - refType = 4; - }; - F53B230F01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u0_p3_0.vqh; - refType = 4; - }; - F53B231001D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u0_p4_0.vqh; - refType = 4; - }; - F53B231101D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u0_p4_1.vqh; - refType = 4; - }; - F53B231201D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u0_p5_0.vqh; - refType = 4; - }; - F53B231301D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u0_p6_0.vqh; - refType = 4; - }; - F53B231401D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u0_p7_0.vqh; - refType = 4; - }; - F53B231501D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u0_p7_1.vqh; - refType = 4; - }; - F53B231601D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u0_p7_2.vqh; - refType = 4; - }; - F53B231701D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p0_r0.vqh; - refType = 4; - }; - F53B231801D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p0_r1.vqh; - refType = 4; - }; - F53B231901D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p1_0.vqh; - refType = 4; - }; - F53B231A01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p1_r0.vqh; - refType = 4; - }; - F53B231B01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p1_r1.vqh; - refType = 4; - }; - F53B231C01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p2_0.vqh; - refType = 4; - }; - F53B231D01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p3_0.vqh; - refType = 4; - }; - F53B231E01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p4_0.vqh; - refType = 4; - }; - F53B231F01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p5_0.vqh; - refType = 4; - }; - F53B232001D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p6_0.vqh; - refType = 4; - }; - F53B232101D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p7_0.vqh; - refType = 4; - }; - F53B232201D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p7_1.vqh; - refType = 4; - }; - F53B232301D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p8_0.vqh; - refType = 4; - }; - F53B232401D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p8_1.vqh; - refType = 4; - }; - F53B232501D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p9_0.vqh; - refType = 4; - }; - F53B232601D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p9_1.vqh; - refType = 4; - }; - F53B232701D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u4_p9_2.vqh; - refType = 4; - }; - F53B232801D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p0_r0.vqh; - refType = 4; - }; - F53B232901D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p0_r1.vqh; - refType = 4; - }; - F53B232A01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p1_0.vqh; - refType = 4; - }; - F53B232B01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p1_r0.vqh; - refType = 4; - }; - F53B232C01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p1_r1.vqh; - refType = 4; - }; - F53B232D01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p2_0.vqh; - refType = 4; - }; - F53B232E01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p2_1.vqh; - refType = 4; - }; - F53B232F01D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p3_0.vqh; - refType = 4; - }; - F53B233001D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p4_0.vqh; - refType = 4; - }; - F53B233101D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p5_0.vqh; - refType = 4; - }; - F53B233201D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p6_0.vqh; - refType = 4; - }; - F53B233301D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p7_0.vqh; - refType = 4; - }; - F53B233401D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p7_1.vqh; - refType = 4; - }; - F53B233501D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p8_0.vqh; - refType = 4; - }; - F53B233601D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p8_1.vqh; - refType = 4; - }; - F53B233701D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p9_0.vqh; - refType = 4; - }; - F53B233801D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p9_1.vqh; - refType = 4; - }; - F53B233901D43C7801D65C57 = { - isa = PBXFileReference; - path = _44u7_p9_2.vqh; - refType = 4; - }; - F53B233A01D43C7801D65C57 = { - isa = PBXFileReference; - path = codebook.c; - refType = 4; - }; - F53B233B01D43C7801D65C57 = { - isa = PBXFileReference; - path = codebook.h; - refType = 4; - }; - F53B233C01D43C7801D65C57 = { - isa = PBXFileReference; - path = codec_internal.h; - refType = 4; - }; - F53B233D01D43C7801D65C57 = { - isa = PBXFileReference; - path = envelope.c; - refType = 4; - }; - F53B233E01D43C7801D65C57 = { - isa = PBXFileReference; - path = envelope.h; - refType = 4; - }; - F53B233F01D43C7801D65C57 = { - isa = PBXFileReference; - path = floor0.c; - refType = 4; - }; - F53B234001D43C7801D65C57 = { - isa = PBXFileReference; - path = floor1.c; - refType = 4; - }; - F53B234201D43C7801D65C57 = { - isa = PBXFileReference; - path = iir.h; - refType = 4; - }; - F53B234301D43C7801D65C57 = { - isa = PBXFileReference; - path = info.c; - refType = 4; - }; - F53B234401D43C7801D65C57 = { - isa = PBXFileReference; - path = lookup.c; - refType = 4; - }; - F53B234501D43C7801D65C57 = { - isa = PBXFileReference; - path = lookup.h; - refType = 4; - }; - F53B234601D43C7801D65C57 = { - isa = PBXFileReference; - path = lookup_data.h; - refType = 4; - }; - F53B234701D43C7801D65C57 = { - isa = PBXExecutableFileReference; - path = lookups.pl; - refType = 4; - }; - F53B234801D43C7801D65C57 = { - isa = PBXFileReference; - path = lpc.c; - refType = 4; - }; - F53B234901D43C7801D65C57 = { - isa = PBXFileReference; - path = lpc.h; - refType = 4; - }; - F53B234A01D43C7801D65C57 = { - isa = PBXFileReference; - path = lsp.c; - refType = 4; - }; - F53B234B01D43C7801D65C57 = { - isa = PBXFileReference; - path = lsp.h; - refType = 4; - }; - F53B234D01D43C7801D65C57 = { - isa = PBXFileReference; - path = mapping0.c; - refType = 4; - }; - F53B234E01D43C7801D65C57 = { - isa = PBXFileReference; - path = masking.h; - refType = 4; - }; - F53B234F01D43C7801D65C57 = { - isa = PBXFileReference; - path = mdct.c; - refType = 4; - }; - F53B235001D43C7801D65C57 = { - isa = PBXFileReference; - path = mdct.h; - refType = 4; - }; - F53B235201D43C7801D65C57 = { - isa = PBXFileReference; - path = misc.h; - refType = 4; - }; - F53B235301D43C7801D65C57 = { - children = ( - F53B235401D43C7801D65C57, - F53B235501D43C7801D65C57, - F53B235601D43C7801D65C57, - F53B235701D43C7801D65C57, - F53B235801D43C7801D65C57, - ); - isa = PBXGroup; - path = modes; - refType = 4; - }; - F53B235401D43C7801D65C57 = { - isa = PBXFileReference; - path = .cvsignore; - refType = 4; - }; - F53B235501D43C7801D65C57 = { - isa = PBXFileReference; - path = floor_44.h; - refType = 4; - }; - F53B235601D43C7801D65C57 = { - isa = PBXFileReference; - path = Makefile.am; - refType = 4; - }; - F53B235701D43C7801D65C57 = { - isa = PBXFileReference; - path = psych_44.h; - refType = 4; - }; - F53B235801D43C7801D65C57 = { - isa = PBXFileReference; - path = residue_44.h; - refType = 4; - }; - F53B235901D43C7801D65C57 = { - isa = PBXFileReference; - path = os.h; - refType = 4; - }; - F53B235A01D43C7801D65C57 = { - isa = PBXFileReference; - path = psy.c; - refType = 4; - }; - F53B235B01D43C7801D65C57 = { - isa = PBXFileReference; - path = psy.h; - refType = 4; - }; - F53B235E01D43C7801D65C57 = { - isa = PBXFileReference; - path = registry.c; - refType = 4; - }; - F53B235F01D43C7801D65C57 = { - isa = PBXFileReference; - path = registry.h; - refType = 4; - }; - F53B236001D43C7801D65C57 = { - isa = PBXFileReference; - path = res0.c; - refType = 4; - }; - F53B236101D43C7801D65C57 = { - isa = PBXFileReference; - path = scales.h; - refType = 4; - }; - F53B236201D43C7801D65C57 = { - isa = PBXFileReference; - path = sharedbook.c; - refType = 4; - }; - F53B236301D43C7801D65C57 = { - isa = PBXFileReference; - path = smallft.c; - refType = 4; - }; - F53B236401D43C7801D65C57 = { - isa = PBXFileReference; - path = smallft.h; - refType = 4; - }; - F53B236501D43C7801D65C57 = { - isa = PBXFileReference; - path = synthesis.c; - refType = 4; - }; - F53B236601D43C7801D65C57 = { - isa = PBXFileReference; - path = time0.c; - refType = 4; - }; - F53B236801D43C7801D65C57 = { - isa = PBXFileReference; - path = vorbisenc.c; - refType = 4; - }; - F53B236901D43C7801D65C57 = { - isa = PBXFileReference; - path = vorbisfile.c; - refType = 4; - }; - F53B236A01D43C7801D65C57 = { - isa = PBXFileReference; - path = window.c; - refType = 4; - }; - F53B236B01D43C7801D65C57 = { - isa = PBXFileReference; - path = window.h; - refType = 4; - }; - F53B236C01D43C7801D65C57 = { - fileRef = F53B21A101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B236D01D43C7801D65C57 = { - fileRef = F53B21A401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B236E01D43C7801D65C57 = { - fileRef = F53B233B01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B236F01D43C7801D65C57 = { - fileRef = F53B233C01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B237001D43C7801D65C57 = { - fileRef = F53B233E01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B237101D43C7801D65C57 = { - fileRef = F53B234201D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B237201D43C7801D65C57 = { - fileRef = F53B234501D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B237301D43C7801D65C57 = { - fileRef = F53B234601D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B237401D43C7801D65C57 = { - fileRef = F53B234901D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B237501D43C7801D65C57 = { - fileRef = F53B234B01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B237601D43C7801D65C57 = { - fileRef = F53B234E01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B237701D43C7801D65C57 = { - fileRef = F53B235001D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B237801D43C7801D65C57 = { - fileRef = F53B235201D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B237901D43C7801D65C57 = { - fileRef = F53B235501D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B237A01D43C7801D65C57 = { - fileRef = F53B235701D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B237B01D43C7801D65C57 = { - fileRef = F53B235801D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B237C01D43C7801D65C57 = { - fileRef = F53B235901D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B237D01D43C7801D65C57 = { - fileRef = F53B235B01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B237F01D43C7801D65C57 = { - fileRef = F53B235F01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B238001D43C7801D65C57 = { - fileRef = F53B236101D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B238101D43C7801D65C57 = { - fileRef = F53B236401D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B238201D43C7801D65C57 = { - fileRef = F53B236B01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B238401D43C7801D65C57 = { - fileRef = F53B21A701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B238501D43C7801D65C57 = { - fileRef = F53B21A901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B238601D43C7801D65C57 = { - fileRef = F53B21AA01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B238701D43C7801D65C57 = { - fileRef = F53B21AB01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B238801D43C7801D65C57 = { - fileRef = F53B21AC01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B238901D43C7801D65C57 = { - fileRef = F53B21AD01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B238A01D43C7801D65C57 = { - fileRef = F53B21AE01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B238B01D43C7801D65C57 = { - fileRef = F53B21AF01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B238C01D43C7801D65C57 = { - fileRef = F53B21B001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B238D01D43C7801D65C57 = { - fileRef = F53B21B101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B238E01D43C7801D65C57 = { - fileRef = F53B21B201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B238F01D43C7801D65C57 = { - fileRef = F53B21B301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B239001D43C7801D65C57 = { - fileRef = F53B21B401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B239101D43C7801D65C57 = { - fileRef = F53B21B501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B239201D43C7801D65C57 = { - fileRef = F53B21B601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B239301D43C7801D65C57 = { - fileRef = F53B21B701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B239401D43C7801D65C57 = { - fileRef = F53B21B801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B239501D43C7801D65C57 = { - fileRef = F53B21B901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B239601D43C7801D65C57 = { - fileRef = F53B21BA01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B239701D43C7801D65C57 = { - fileRef = F53B21BB01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B239801D43C7801D65C57 = { - fileRef = F53B21BC01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B239901D43C7801D65C57 = { - fileRef = F53B21BD01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B239A01D43C7801D65C57 = { - fileRef = F53B21BE01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B239B01D43C7801D65C57 = { - fileRef = F53B21BF01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B239C01D43C7801D65C57 = { - fileRef = F53B21C001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B239D01D43C7801D65C57 = { - fileRef = F53B21C101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B239E01D43C7801D65C57 = { - fileRef = F53B21C201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B239F01D43C7801D65C57 = { - fileRef = F53B21C301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23A001D43C7801D65C57 = { - fileRef = F53B21C401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23A101D43C7801D65C57 = { - fileRef = F53B21C501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23A201D43C7801D65C57 = { - fileRef = F53B21C601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23A301D43C7801D65C57 = { - fileRef = F53B21C701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23A401D43C7801D65C57 = { - fileRef = F53B21C801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23A501D43C7801D65C57 = { - fileRef = F53B21C901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23A601D43C7801D65C57 = { - fileRef = F53B21CA01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23A701D43C7801D65C57 = { - fileRef = F53B21CB01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23A801D43C7801D65C57 = { - fileRef = F53B21CC01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23A901D43C7801D65C57 = { - fileRef = F53B21CD01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23AA01D43C7801D65C57 = { - fileRef = F53B21CE01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23AB01D43C7801D65C57 = { - fileRef = F53B21CF01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23AC01D43C7801D65C57 = { - fileRef = F53B21D001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23AD01D43C7801D65C57 = { - fileRef = F53B21D101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23AE01D43C7801D65C57 = { - fileRef = F53B21D201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23AF01D43C7801D65C57 = { - fileRef = F53B21D301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23B001D43C7801D65C57 = { - fileRef = F53B21D401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23B101D43C7801D65C57 = { - fileRef = F53B21D501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23B201D43C7801D65C57 = { - fileRef = F53B21D601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23B301D43C7801D65C57 = { - fileRef = F53B21D701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23B401D43C7801D65C57 = { - fileRef = F53B21D801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23B501D43C7801D65C57 = { - fileRef = F53B21D901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23B601D43C7801D65C57 = { - fileRef = F53B21DA01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23B701D43C7801D65C57 = { - fileRef = F53B21DB01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23B801D43C7801D65C57 = { - fileRef = F53B21DC01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23B901D43C7801D65C57 = { - fileRef = F53B21DD01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23BA01D43C7801D65C57 = { - fileRef = F53B21DE01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23BB01D43C7801D65C57 = { - fileRef = F53B21DF01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23BC01D43C7801D65C57 = { - fileRef = F53B21E001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23BD01D43C7801D65C57 = { - fileRef = F53B21E101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23BE01D43C7801D65C57 = { - fileRef = F53B21E201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23BF01D43C7801D65C57 = { - fileRef = F53B21E301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23C001D43C7801D65C57 = { - fileRef = F53B21E401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23C101D43C7801D65C57 = { - fileRef = F53B21E501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23C201D43C7801D65C57 = { - fileRef = F53B21E601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23C301D43C7801D65C57 = { - fileRef = F53B21E701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23C401D43C7801D65C57 = { - fileRef = F53B21E801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23C501D43C7801D65C57 = { - fileRef = F53B21E901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23C601D43C7801D65C57 = { - fileRef = F53B21EA01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23C701D43C7801D65C57 = { - fileRef = F53B21EB01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23C801D43C7801D65C57 = { - fileRef = F53B21EC01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23C901D43C7801D65C57 = { - fileRef = F53B21ED01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23CA01D43C7801D65C57 = { - fileRef = F53B21EE01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23CB01D43C7801D65C57 = { - fileRef = F53B21EF01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23CC01D43C7801D65C57 = { - fileRef = F53B21F001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23CD01D43C7801D65C57 = { - fileRef = F53B21F101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23CE01D43C7801D65C57 = { - fileRef = F53B21F201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23CF01D43C7801D65C57 = { - fileRef = F53B21F301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23D001D43C7801D65C57 = { - fileRef = F53B21F401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23D101D43C7801D65C57 = { - fileRef = F53B21F501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23D201D43C7801D65C57 = { - fileRef = F53B21F601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23D301D43C7801D65C57 = { - fileRef = F53B21F701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23D401D43C7801D65C57 = { - fileRef = F53B21F801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23D501D43C7801D65C57 = { - fileRef = F53B21F901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23D601D43C7801D65C57 = { - fileRef = F53B21FA01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23D701D43C7801D65C57 = { - fileRef = F53B21FB01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23D801D43C7801D65C57 = { - fileRef = F53B21FC01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23D901D43C7801D65C57 = { - fileRef = F53B21FD01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23DA01D43C7801D65C57 = { - fileRef = F53B21FE01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23DB01D43C7801D65C57 = { - fileRef = F53B21FF01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23DC01D43C7801D65C57 = { - fileRef = F53B220001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23DD01D43C7801D65C57 = { - fileRef = F53B220101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23DE01D43C7801D65C57 = { - fileRef = F53B220201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23DF01D43C7801D65C57 = { - fileRef = F53B220301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23E001D43C7801D65C57 = { - fileRef = F53B220401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23E101D43C7801D65C57 = { - fileRef = F53B220501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23E201D43C7801D65C57 = { - fileRef = F53B220601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23E301D43C7801D65C57 = { - fileRef = F53B220701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23E401D43C7801D65C57 = { - fileRef = F53B220801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23E501D43C7801D65C57 = { - fileRef = F53B220901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23E601D43C7801D65C57 = { - fileRef = F53B220A01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23E701D43C7801D65C57 = { - fileRef = F53B220B01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23E801D43C7801D65C57 = { - fileRef = F53B220C01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23E901D43C7801D65C57 = { - fileRef = F53B220D01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23EA01D43C7801D65C57 = { - fileRef = F53B220E01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23EB01D43C7801D65C57 = { - fileRef = F53B220F01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23EC01D43C7801D65C57 = { - fileRef = F53B221001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23ED01D43C7801D65C57 = { - fileRef = F53B221101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23EE01D43C7801D65C57 = { - fileRef = F53B221201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23EF01D43C7801D65C57 = { - fileRef = F53B221301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23F001D43C7801D65C57 = { - fileRef = F53B221401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23F101D43C7801D65C57 = { - fileRef = F53B221501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23F201D43C7801D65C57 = { - fileRef = F53B221601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23F301D43C7801D65C57 = { - fileRef = F53B221701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23F401D43C7801D65C57 = { - fileRef = F53B221801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23F501D43C7801D65C57 = { - fileRef = F53B221901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23F601D43C7801D65C57 = { - fileRef = F53B221A01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23F701D43C7801D65C57 = { - fileRef = F53B221B01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23F801D43C7801D65C57 = { - fileRef = F53B221C01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23F901D43C7801D65C57 = { - fileRef = F53B221D01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23FA01D43C7801D65C57 = { - fileRef = F53B221E01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23FB01D43C7801D65C57 = { - fileRef = F53B221F01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23FC01D43C7801D65C57 = { - fileRef = F53B222001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23FD01D43C7801D65C57 = { - fileRef = F53B222101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23FE01D43C7801D65C57 = { - fileRef = F53B222201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B23FF01D43C7801D65C57 = { - fileRef = F53B222301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B240001D43C7801D65C57 = { - fileRef = F53B222401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B240101D43C7801D65C57 = { - fileRef = F53B222501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B240201D43C7801D65C57 = { - fileRef = F53B222601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B240301D43C7801D65C57 = { - fileRef = F53B222701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B240401D43C7801D65C57 = { - fileRef = F53B222801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B240501D43C7801D65C57 = { - fileRef = F53B222901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B240601D43C7801D65C57 = { - fileRef = F53B222A01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B240701D43C7801D65C57 = { - fileRef = F53B222B01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B240801D43C7801D65C57 = { - fileRef = F53B222C01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B240901D43C7801D65C57 = { - fileRef = F53B222D01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B240A01D43C7801D65C57 = { - fileRef = F53B222E01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B240B01D43C7801D65C57 = { - fileRef = F53B222F01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B240C01D43C7801D65C57 = { - fileRef = F53B223001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B240D01D43C7801D65C57 = { - fileRef = F53B223101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B240E01D43C7801D65C57 = { - fileRef = F53B223201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B240F01D43C7801D65C57 = { - fileRef = F53B223301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B241001D43C7801D65C57 = { - fileRef = F53B223401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B241101D43C7801D65C57 = { - fileRef = F53B223501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B241201D43C7801D65C57 = { - fileRef = F53B223601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B241301D43C7801D65C57 = { - fileRef = F53B223701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B241401D43C7801D65C57 = { - fileRef = F53B223801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B241501D43C7801D65C57 = { - fileRef = F53B223901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B241601D43C7801D65C57 = { - fileRef = F53B223A01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B241701D43C7801D65C57 = { - fileRef = F53B223B01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B241801D43C7801D65C57 = { - fileRef = F53B223C01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B241901D43C7801D65C57 = { - fileRef = F53B223D01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B241A01D43C7801D65C57 = { - fileRef = F53B223E01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B241B01D43C7801D65C57 = { - fileRef = F53B223F01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B241C01D43C7801D65C57 = { - fileRef = F53B224001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B241D01D43C7801D65C57 = { - fileRef = F53B224101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B241E01D43C7801D65C57 = { - fileRef = F53B224201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B241F01D43C7801D65C57 = { - fileRef = F53B224301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B242001D43C7801D65C57 = { - fileRef = F53B224401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B242101D43C7801D65C57 = { - fileRef = F53B224501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B242201D43C7801D65C57 = { - fileRef = F53B224601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B242301D43C7801D65C57 = { - fileRef = F53B224701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B242401D43C7801D65C57 = { - fileRef = F53B224801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B242501D43C7801D65C57 = { - fileRef = F53B224901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B242601D43C7801D65C57 = { - fileRef = F53B224A01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B242701D43C7801D65C57 = { - fileRef = F53B224B01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B242801D43C7801D65C57 = { - fileRef = F53B224C01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B242901D43C7801D65C57 = { - fileRef = F53B224D01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B242A01D43C7801D65C57 = { - fileRef = F53B224E01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B242B01D43C7801D65C57 = { - fileRef = F53B224F01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B242C01D43C7801D65C57 = { - fileRef = F53B225001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B242D01D43C7801D65C57 = { - fileRef = F53B225101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B242E01D43C7801D65C57 = { - fileRef = F53B225201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B242F01D43C7801D65C57 = { - fileRef = F53B225301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B243001D43C7801D65C57 = { - fileRef = F53B225401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B243101D43C7801D65C57 = { - fileRef = F53B225501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B243201D43C7801D65C57 = { - fileRef = F53B225601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B243301D43C7801D65C57 = { - fileRef = F53B225701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B243401D43C7801D65C57 = { - fileRef = F53B225801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B243501D43C7801D65C57 = { - fileRef = F53B225901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B243601D43C7801D65C57 = { - fileRef = F53B225A01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B243701D43C7801D65C57 = { - fileRef = F53B225B01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B243801D43C7801D65C57 = { - fileRef = F53B225C01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B243901D43C7801D65C57 = { - fileRef = F53B225D01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B243A01D43C7801D65C57 = { - fileRef = F53B225E01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B243B01D43C7801D65C57 = { - fileRef = F53B225F01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B243C01D43C7801D65C57 = { - fileRef = F53B226001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B243D01D43C7801D65C57 = { - fileRef = F53B226101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B243E01D43C7801D65C57 = { - fileRef = F53B226201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B243F01D43C7801D65C57 = { - fileRef = F53B226301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B244001D43C7801D65C57 = { - fileRef = F53B226401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B244101D43C7801D65C57 = { - fileRef = F53B226501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B244201D43C7801D65C57 = { - fileRef = F53B226601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B244301D43C7801D65C57 = { - fileRef = F53B226701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B244401D43C7801D65C57 = { - fileRef = F53B226801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B244501D43C7801D65C57 = { - fileRef = F53B226901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B244601D43C7801D65C57 = { - fileRef = F53B226A01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B244701D43C7801D65C57 = { - fileRef = F53B226B01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B244801D43C7801D65C57 = { - fileRef = F53B226C01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B244901D43C7801D65C57 = { - fileRef = F53B226D01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B244A01D43C7801D65C57 = { - fileRef = F53B226E01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B244B01D43C7801D65C57 = { - fileRef = F53B226F01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B244C01D43C7801D65C57 = { - fileRef = F53B227001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B244D01D43C7801D65C57 = { - fileRef = F53B227101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B244E01D43C7801D65C57 = { - fileRef = F53B227201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B244F01D43C7801D65C57 = { - fileRef = F53B227301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B245001D43C7801D65C57 = { - fileRef = F53B227401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B245101D43C7801D65C57 = { - fileRef = F53B227501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B245201D43C7801D65C57 = { - fileRef = F53B227601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B245301D43C7801D65C57 = { - fileRef = F53B227701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B245401D43C7801D65C57 = { - fileRef = F53B227801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B245501D43C7801D65C57 = { - fileRef = F53B227901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B245601D43C7801D65C57 = { - fileRef = F53B227A01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B245701D43C7801D65C57 = { - fileRef = F53B227B01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B245801D43C7801D65C57 = { - fileRef = F53B227C01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B245901D43C7801D65C57 = { - fileRef = F53B227D01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B245A01D43C7801D65C57 = { - fileRef = F53B227E01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B245B01D43C7801D65C57 = { - fileRef = F53B227F01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B245C01D43C7801D65C57 = { - fileRef = F53B228001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B245D01D43C7801D65C57 = { - fileRef = F53B228101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B245E01D43C7801D65C57 = { - fileRef = F53B228201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B245F01D43C7801D65C57 = { - fileRef = F53B228301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B246001D43C7801D65C57 = { - fileRef = F53B228401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B246101D43C7801D65C57 = { - fileRef = F53B228501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B246201D43C7801D65C57 = { - fileRef = F53B228601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B246301D43C7801D65C57 = { - fileRef = F53B228701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B246401D43C7801D65C57 = { - fileRef = F53B228801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B246501D43C7801D65C57 = { - fileRef = F53B228901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B246601D43C7801D65C57 = { - fileRef = F53B228A01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B246701D43C7801D65C57 = { - fileRef = F53B228B01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B246801D43C7801D65C57 = { - fileRef = F53B228C01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B246901D43C7801D65C57 = { - fileRef = F53B228D01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B246A01D43C7801D65C57 = { - fileRef = F53B228E01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B246B01D43C7801D65C57 = { - fileRef = F53B228F01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B246C01D43C7801D65C57 = { - fileRef = F53B229001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B246D01D43C7801D65C57 = { - fileRef = F53B229101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B246E01D43C7801D65C57 = { - fileRef = F53B229201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B246F01D43C7801D65C57 = { - fileRef = F53B229301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B247001D43C7801D65C57 = { - fileRef = F53B229401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B247101D43C7801D65C57 = { - fileRef = F53B229501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B247201D43C7801D65C57 = { - fileRef = F53B229601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B247301D43C7801D65C57 = { - fileRef = F53B229701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B247401D43C7801D65C57 = { - fileRef = F53B229801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B247501D43C7801D65C57 = { - fileRef = F53B229901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B247601D43C7801D65C57 = { - fileRef = F53B229A01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B247701D43C7801D65C57 = { - fileRef = F53B229B01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B247801D43C7801D65C57 = { - fileRef = F53B229C01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B247901D43C7801D65C57 = { - fileRef = F53B229D01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B247A01D43C7801D65C57 = { - fileRef = F53B229E01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B247B01D43C7801D65C57 = { - fileRef = F53B229F01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B247C01D43C7801D65C57 = { - fileRef = F53B22A001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B247D01D43C7801D65C57 = { - fileRef = F53B22A101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B247E01D43C7801D65C57 = { - fileRef = F53B22A201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B247F01D43C7801D65C57 = { - fileRef = F53B22A301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B248001D43C7801D65C57 = { - fileRef = F53B22A401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B248101D43C7801D65C57 = { - fileRef = F53B22A501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B248201D43C7801D65C57 = { - fileRef = F53B22A601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B248301D43C7801D65C57 = { - fileRef = F53B22A701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B248401D43C7801D65C57 = { - fileRef = F53B22A801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B248501D43C7801D65C57 = { - fileRef = F53B22A901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B248601D43C7801D65C57 = { - fileRef = F53B22AA01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B248701D43C7801D65C57 = { - fileRef = F53B22AB01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B248801D43C7801D65C57 = { - fileRef = F53B22AC01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B248901D43C7801D65C57 = { - fileRef = F53B22AD01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B248A01D43C7801D65C57 = { - fileRef = F53B22AE01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B248B01D43C7801D65C57 = { - fileRef = F53B22AF01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B248C01D43C7801D65C57 = { - fileRef = F53B22B001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B248D01D43C7801D65C57 = { - fileRef = F53B22B101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B248E01D43C7801D65C57 = { - fileRef = F53B22B201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B248F01D43C7801D65C57 = { - fileRef = F53B22B301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B249001D43C7801D65C57 = { - fileRef = F53B22B401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B249101D43C7801D65C57 = { - fileRef = F53B22B501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B249201D43C7801D65C57 = { - fileRef = F53B22B601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B249301D43C7801D65C57 = { - fileRef = F53B22B701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B249401D43C7801D65C57 = { - fileRef = F53B22B801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B249501D43C7801D65C57 = { - fileRef = F53B22B901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B249601D43C7801D65C57 = { - fileRef = F53B22BA01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B249701D43C7801D65C57 = { - fileRef = F53B22BB01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B249801D43C7801D65C57 = { - fileRef = F53B22BC01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B249901D43C7801D65C57 = { - fileRef = F53B22BD01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B249A01D43C7801D65C57 = { - fileRef = F53B22BE01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B249B01D43C7801D65C57 = { - fileRef = F53B22BF01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B249C01D43C7801D65C57 = { - fileRef = F53B22C001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B249D01D43C7801D65C57 = { - fileRef = F53B22C101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B249E01D43C7801D65C57 = { - fileRef = F53B22C201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B249F01D43C7801D65C57 = { - fileRef = F53B22C301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24A001D43C7801D65C57 = { - fileRef = F53B22C401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24A101D43C7801D65C57 = { - fileRef = F53B22C501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24A201D43C7801D65C57 = { - fileRef = F53B22C601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24A301D43C7801D65C57 = { - fileRef = F53B22C701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24A401D43C7801D65C57 = { - fileRef = F53B22C801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24A501D43C7801D65C57 = { - fileRef = F53B22C901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24A601D43C7801D65C57 = { - fileRef = F53B22CA01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24A701D43C7801D65C57 = { - fileRef = F53B22CB01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24A801D43C7801D65C57 = { - fileRef = F53B22CC01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24A901D43C7801D65C57 = { - fileRef = F53B22CD01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24AA01D43C7801D65C57 = { - fileRef = F53B22CE01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24AB01D43C7801D65C57 = { - fileRef = F53B22CF01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24AC01D43C7801D65C57 = { - fileRef = F53B22D001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24AD01D43C7801D65C57 = { - fileRef = F53B22D101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24AE01D43C7801D65C57 = { - fileRef = F53B22D201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24AF01D43C7801D65C57 = { - fileRef = F53B22D301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24B001D43C7801D65C57 = { - fileRef = F53B22D401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24B101D43C7801D65C57 = { - fileRef = F53B22D501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24B201D43C7801D65C57 = { - fileRef = F53B22D601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24B301D43C7801D65C57 = { - fileRef = F53B22D701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24B401D43C7801D65C57 = { - fileRef = F53B22D801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24B501D43C7801D65C57 = { - fileRef = F53B22D901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24B601D43C7801D65C57 = { - fileRef = F53B22DA01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24B701D43C7801D65C57 = { - fileRef = F53B22DB01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24B801D43C7801D65C57 = { - fileRef = F53B22DC01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24B901D43C7801D65C57 = { - fileRef = F53B22DE01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24BA01D43C7801D65C57 = { - fileRef = F53B22DF01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24BB01D43C7801D65C57 = { - fileRef = F53B22E001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24BC01D43C7801D65C57 = { - fileRef = F53B22E101D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24BD01D43C7801D65C57 = { - fileRef = F53B22E201D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24BE01D43C7801D65C57 = { - fileRef = F53B22E301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24BF01D43C7801D65C57 = { - fileRef = F53B22E401D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24C001D43C7801D65C57 = { - fileRef = F53B22E501D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24C101D43C7801D65C57 = { - fileRef = F53B22E601D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24C201D43C7801D65C57 = { - fileRef = F53B22E701D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24C301D43C7801D65C57 = { - fileRef = F53B22E801D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24C401D43C7801D65C57 = { - fileRef = F53B22E901D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24C501D43C7801D65C57 = { - fileRef = F53B22EA01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24C601D43C7801D65C57 = { - fileRef = F53B22EB01D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24C701D43C7801D65C57 = { - fileRef = F53B22EC01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24C801D43C7801D65C57 = { - fileRef = F53B22ED01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24C901D43C7801D65C57 = { - fileRef = F53B22EE01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24CA01D43C7801D65C57 = { - fileRef = F53B22EF01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24CB01D43C7801D65C57 = { - fileRef = F53B22F001D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24CC01D43C7801D65C57 = { - fileRef = F53B22F101D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24CD01D43C7801D65C57 = { - fileRef = F53B22F201D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24CE01D43C7801D65C57 = { - fileRef = F53B22F301D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24CF01D43C7801D65C57 = { - fileRef = F53B22F401D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24D001D43C7801D65C57 = { - fileRef = F53B22F501D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24D101D43C7801D65C57 = { - fileRef = F53B22F601D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24D201D43C7801D65C57 = { - fileRef = F53B22F701D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24D301D43C7801D65C57 = { - fileRef = F53B22F801D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24D401D43C7801D65C57 = { - fileRef = F53B22F901D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24D501D43C7801D65C57 = { - fileRef = F53B22FA01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24D601D43C7801D65C57 = { - fileRef = F53B22FB01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24D701D43C7801D65C57 = { - fileRef = F53B22FC01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24D801D43C7801D65C57 = { - fileRef = F53B22FD01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24D901D43C7801D65C57 = { - fileRef = F53B22FE01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24DA01D43C7801D65C57 = { - fileRef = F53B22FF01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24DB01D43C7801D65C57 = { - fileRef = F53B230001D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24DC01D43C7801D65C57 = { - fileRef = F53B230101D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24DD01D43C7801D65C57 = { - fileRef = F53B230201D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24DE01D43C7801D65C57 = { - fileRef = F53B230301D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24DF01D43C7801D65C57 = { - fileRef = F53B230401D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24E001D43C7801D65C57 = { - fileRef = F53B230501D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24E101D43C7801D65C57 = { - fileRef = F53B230601D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24E201D43C7801D65C57 = { - fileRef = F53B230701D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24E301D43C7801D65C57 = { - fileRef = F53B230901D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24E401D43C7801D65C57 = { - fileRef = F53B230A01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24E501D43C7801D65C57 = { - fileRef = F53B230B01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24E601D43C7801D65C57 = { - fileRef = F53B230C01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24E701D43C7801D65C57 = { - fileRef = F53B230D01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24E801D43C7801D65C57 = { - fileRef = F53B230E01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24E901D43C7801D65C57 = { - fileRef = F53B230F01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24EA01D43C7801D65C57 = { - fileRef = F53B231001D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24EB01D43C7801D65C57 = { - fileRef = F53B231101D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24EC01D43C7801D65C57 = { - fileRef = F53B231201D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24ED01D43C7801D65C57 = { - fileRef = F53B231301D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24EE01D43C7801D65C57 = { - fileRef = F53B231401D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24EF01D43C7801D65C57 = { - fileRef = F53B231501D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24F001D43C7801D65C57 = { - fileRef = F53B231601D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24F101D43C7801D65C57 = { - fileRef = F53B231701D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24F201D43C7801D65C57 = { - fileRef = F53B231801D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24F301D43C7801D65C57 = { - fileRef = F53B231901D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24F401D43C7801D65C57 = { - fileRef = F53B231A01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24F501D43C7801D65C57 = { - fileRef = F53B231B01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24F601D43C7801D65C57 = { - fileRef = F53B231C01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24F701D43C7801D65C57 = { - fileRef = F53B231D01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24F801D43C7801D65C57 = { - fileRef = F53B231E01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24F901D43C7801D65C57 = { - fileRef = F53B231F01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24FA01D43C7801D65C57 = { - fileRef = F53B232001D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24FB01D43C7801D65C57 = { - fileRef = F53B232101D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24FC01D43C7801D65C57 = { - fileRef = F53B232201D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24FD01D43C7801D65C57 = { - fileRef = F53B232301D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24FE01D43C7801D65C57 = { - fileRef = F53B232401D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B24FF01D43C7801D65C57 = { - fileRef = F53B232501D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B250001D43C7801D65C57 = { - fileRef = F53B232601D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B250101D43C7801D65C57 = { - fileRef = F53B232701D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B250201D43C7801D65C57 = { - fileRef = F53B232801D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B250301D43C7801D65C57 = { - fileRef = F53B232901D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B250401D43C7801D65C57 = { - fileRef = F53B232A01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B250501D43C7801D65C57 = { - fileRef = F53B232B01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B250601D43C7801D65C57 = { - fileRef = F53B232C01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B250701D43C7801D65C57 = { - fileRef = F53B232D01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B250801D43C7801D65C57 = { - fileRef = F53B232E01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B250901D43C7801D65C57 = { - fileRef = F53B232F01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B250A01D43C7801D65C57 = { - fileRef = F53B233001D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B250B01D43C7801D65C57 = { - fileRef = F53B233101D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B250C01D43C7801D65C57 = { - fileRef = F53B233201D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B250D01D43C7801D65C57 = { - fileRef = F53B233301D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B250E01D43C7801D65C57 = { - fileRef = F53B233401D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B250F01D43C7801D65C57 = { - fileRef = F53B233501D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B251001D43C7801D65C57 = { - fileRef = F53B233601D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B251101D43C7801D65C57 = { - fileRef = F53B233701D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B251201D43C7801D65C57 = { - fileRef = F53B233801D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B251301D43C7801D65C57 = { - fileRef = F53B233901D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B251401D43C7801D65C57 = { - fileRef = F53B234701D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B251601D43C7801D65C57 = { - fileRef = F53B235401D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B251701D43C7801D65C57 = { - fileRef = F53B235601D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B251801D43C7801D65C57 = { - fileRef = F53B21A001D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B251A01D43C7801D65C57 = { - fileRef = F53B21A301D43C7701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B251C01D43C7801D65C57 = { - fileRef = F53B233A01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B251D01D43C7801D65C57 = { - fileRef = F53B233D01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B251E01D43C7801D65C57 = { - fileRef = F53B233F01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B251F01D43C7801D65C57 = { - fileRef = F53B234001D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B252101D43C7801D65C57 = { - fileRef = F53B234301D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B252201D43C7801D65C57 = { - fileRef = F53B234401D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B252301D43C7801D65C57 = { - fileRef = F53B234801D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B252401D43C7801D65C57 = { - fileRef = F53B234A01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B252501D43C7801D65C57 = { - fileRef = F53B234D01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B252601D43C7801D65C57 = { - fileRef = F53B234F01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B252801D43C7801D65C57 = { - fileRef = F53B235A01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B252A01D43C7801D65C57 = { - fileRef = F53B235E01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B252B01D43C7801D65C57 = { - fileRef = F53B236001D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B252C01D43C7801D65C57 = { - fileRef = F53B236201D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B252D01D43C7801D65C57 = { - fileRef = F53B236301D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B252E01D43C7801D65C57 = { - fileRef = F53B236501D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B252F01D43C7801D65C57 = { - fileRef = F53B236601D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B253101D43C7801D65C57 = { - fileRef = F53B236801D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B253201D43C7801D65C57 = { - fileRef = F53B236901D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B253301D43C7801D65C57 = { - fileRef = F53B236A01D43C7801D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B253401D43CF701D65C57 = { - isa = PBXFrameworkReference; - name = ogg.framework; - path = ../../ogg/macosx/build/ogg.framework; - refType = 2; - }; - F53B253501D43CF701D65C57 = { - fileRef = F53B253401D43CF701D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F53B253601D440D601D65C57 = { - isa = PBXFileReference; - name = block.c; - path = ../lib/block.c; - refType = 2; - }; - F53B253701D440D601D65C57 = { - fileRef = F53B253601D440D601D65C57; - isa = PBXBuildFile; - settings = { - }; - }; - F58520B70191D12B01A802FE = { - children = ( - F58520B90191D12B01A802FE, - F58520BA0191D12B01A802FE, - F58520BB0191D12B01A802FE, - ); - isa = PBXGroup; - name = Headers; - path = ../include/vorbis; - refType = 2; - }; - F58520B90191D12B01A802FE = { - isa = PBXFileReference; - path = codec.h; - refType = 4; - }; - F58520BA0191D12B01A802FE = { - isa = PBXFileReference; - path = vorbisenc.h; - refType = 4; - }; - F58520BB0191D12B01A802FE = { - isa = PBXFileReference; - path = vorbisfile.h; - refType = 4; - }; - F58520BF0191D12B01A802FE = { - fileRef = F58520B90191D12B01A802FE; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - Public, - ); - }; - }; - F58520C00191D12B01A802FE = { - fileRef = F58520BA0191D12B01A802FE; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - Public, - ); - }; - }; - F58520C10191D12B01A802FE = { - fileRef = F58520BB0191D12B01A802FE; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - Public, - ); - }; - }; - }; - rootObject = 0867D690FE84028FC02AAC07; -} diff --git a/todo.txt b/todo.txt deleted file mode 100644 index d0e1665c..00000000 --- a/todo.txt +++ /dev/null @@ -1,22 +0,0 @@ -Development hit list for 1.0: - -libvorbis: - -Meaningful error code returns - -still some padding at EOS - -Option for brute-forcing vq search on maptype 2 (helps on undertrained -sets). - -encoder switch interface for binary compat through changes; ioctl()-like? - -API changes: - break up some of the more monolithic calls (eg, allow access - to MDCT domain data, additional low level framing capability) - convenience calls for text comments - -other: - -command line suite -'crashme'
\ No newline at end of file diff --git a/vorbis.m4 b/vorbis.m4 deleted file mode 100644 index 9910dada..00000000 --- a/vorbis.m4 +++ /dev/null @@ -1,109 +0,0 @@ -# Configure paths for libvorbis -# Jack Moffitt <jack@icecast.org> 10-21-2000 -# Shamelessly stolen from Owen Taylor and Manish Singh - -dnl AM_PATH_VORBIS([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -dnl Test for libvorbis, and define VORBIS_CFLAGS and VORBIS_LIBS -dnl -AC_DEFUN(AM_PATH_VORBIS, -[dnl -dnl Get the cflags and libraries -dnl -AC_ARG_WITH(vorbis,[ --with-vorbis=PFX Prefix where libvorbis is installed (optional)], vorbis_prefix="$withval", vorbis_prefix="") -AC_ARG_WITH(vorbis-libraries,[ --with-vorbis-libraries=DIR Directory where libvorbis library is installed (optional)], vorbis_libraries="$withval", vorbis_libraries="") -AC_ARG_WITH(vorbis-includes,[ --with-vorbis-includes=DIR Directory where libvorbis header files are installed (optional)], vorbis_includes="$withval", vorbis_includes="") -AC_ARG_ENABLE(vorbistest, [ --disable-vorbistest Do not try to compile and run a test Vorbis program],, enable_vorbistest=yes) - - if test "x$vorbis_libraries" != "x" ; then - VORBIS_LIBS="-L$vorbis_libraries" - elif test "x$vorbis_prefix" != "x" ; then - VORBIS_LIBS="-L$vorbis_prefix/lib" - elif test "x$prefix" != "xNONE"; then - VORBIS_LIBS="-L$prefix/lib" - fi - - VORBIS_LIBS="$VORBIS_LIBS -lvorbis -lm" - VORBISFILE_LIBS="-lvorbisfile" - VORBISENC_LIBS="-lvorbisenc" - - if test "x$vorbis_includes" != "x" ; then - VORBIS_CFLAGS="-I$vorbis_includes" - elif test "x$vorbis_prefix" != "x" ; then - VORBIS_CFLAGS="-I$vorbis_prefix/include" - elif test "x$prefix" != "xNONE"; then - VORBIS_CFLAGS="-I$prefix/include" - fi - - - AC_MSG_CHECKING(for Vorbis) - no_vorbis="" - - - if test "x$enable_vorbistest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $VORBIS_CFLAGS $OGG_CFLAGS" - LIBS="$LIBS $VORBIS_LIBS $OGG_LIBS" -dnl -dnl Now check if the installed Vorbis is sufficiently new. -dnl - rm -f conf.vorbistest - AC_TRY_RUN([ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <vorbis/codec.h> - -int main () -{ - system("touch conf.vorbistest"); - return 0; -} - -],, no_vorbis=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - - if test "x$no_vorbis" = "x" ; then - AC_MSG_RESULT(yes) - ifelse([$1], , :, [$1]) - else - AC_MSG_RESULT(no) - if test -f conf.vorbistest ; then - : - else - echo "*** Could not run Vorbis test program, checking why..." - CFLAGS="$CFLAGS $VORBIS_CFLAGS" - LIBS="$LIBS $VORBIS_LIBS $OGG_LIBS" - AC_TRY_LINK([ -#include <stdio.h> -#include <vorbis/codec.h> -], [ return 0; ], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding Vorbis or finding the wrong" - echo "*** version of Vorbis. If it is not finding Vorbis, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], - [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means Vorbis was incorrectly installed" - echo "*** or that you have moved Vorbis since it was installed." ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - VORBIS_CFLAGS="" - VORBIS_LIBS="" - VORBISFILE_LIBS="" - VORBISENC_LIBS="" - ifelse([$2], , :, [$2]) - fi - AC_SUBST(VORBIS_CFLAGS) - AC_SUBST(VORBIS_LIBS) - AC_SUBST(VORBISFILE_LIBS) - AC_SUBST(VORBISENC_LIBS) - rm -f conf.vorbistest -]) diff --git a/vq/.cvsignore b/vq/.cvsignore deleted file mode 100644 index 02b05239..00000000 --- a/vq/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -Makefile -Makefile.in -.deps -.libs diff --git a/vq/44c0.vqs b/vq/44c0.vqs deleted file mode 100644 index 59aebe12..00000000 --- a/vq/44c0.vqs +++ /dev/null @@ -1,74 +0,0 @@ -cp 44c0_s0/resaux_short.vqd _44c0_short.vqd -cp 44c0_s0/resaux_long.vqd _44c0_long.vqd - - -GO - ->_44c0s noninterleaved -haux _44c0_short.vqd 0,12,2 - ->_44c0 noninterleaved -haux _44c0_long.vqd 0,44,2 - -#iter 0 - -# 0 1 2 4 26 1 4 + -# 0 0 0 0 -# -# 0 1 2 3 4 5 6 7 -# 1 . . -# 2 . . -# 4 . . . . . . - -:_s0_p1_0 44c0_s0/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_s0_p2_0 44c0_s0/res_part2_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 -:_s0_p3_0 44c0_s0/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s0_p4_0 44c0_s0/res_part4_pass0.vqd, 2, nonseq, 0 +- 7 14 21 28 35 42 49 -:_s0_p4_1 44c0_s0/res_part4_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 - -:_s0_p5_0 44c0_s0/res_part5_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_s1_p5_0 44c0_s1/res_part5_pass2.vqd, 4, nonseq cull, 0 +- 1 - -:_s0_p6_0 44c0_s0/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s1_p6_0 44c0_s1/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s2_p6_0 44c0_s2/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 - -:_s0_p7_0 44c0_s0/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 201 -:_s0_p7_1 44c0_s0/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_s0_p7_2 44c0_s0/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - -:_s1_p7_0 44c0_s1/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 201 -:_s1_p7_1 44c0_s1/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_s1_p7_2 44c0_s1/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - -:_s2_p7_0 44c0_s2/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 201 -:_s2_p7_1 44c0_s2/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_s2_p7_2 44c0_s2/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - -:_s3_p7_0 44c0_s3/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 201 -:_s3_p7_1 44c0_s3/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_s3_p7_2 44c0_s3/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - -#iter 1 (stereo 3(8.)->2 2(4.)->1 1(2.)->0) shared for all 'low' modes - -:_s1_p5_s0 44cL_s1/res_part5_pass3.vqd, 2, nonseq, 0 +- 1 2 -:_s1_p6_s0 44cL_s1/res_part6_pass3.vqd, 2, nonseq, 0 +- 1 2 3 4 -:_s1_p7_s0 44cL_s1/res_part7_pass3.vqd, 2, nonseq, 0 +- 1 2 3 4 - -:_s2_p6_s0 44cL_s2/res_part6_pass3.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 -:_s2_p7_s0 44cL_s2/res_part7_pass3.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 - -:_s3_p7_s0 44cL_s3/res_part7_pass3.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 - -#iter 2 (residue backfill) shared for all 'low' modes - -:_s0_p0_r0 44cL_s0/res_part0_r0.vqd, 2, nonseq, 0 +- .333333333 .666666667 -:_s0_pN_r0 44cL_s0/res_partN_r0.vqd, 2, nonseq, 0 +- .333333333 .666666667 -:_s1_pS_r0 44cL_s1/res_partS_r0.vqd, 2, nonseq, 0 +- .333333333 - -#iter 3 (residue backfill) - -:_s0_p0_r1 44cL_s0/res_part0_r1.vqd, 2, nonseq, 0 +- .111111111 .222222222 -:_s0_pN_r1 44cL_s0/res_partN_r1.vqd, 2, nonseq, 0 +- .111111111 .222222222 -:_s1_pS_r1 44cL_s1/res_partS_r1.vqd, 2, nonseq, 0 +- .111111111 - diff --git a/vq/44c1.vqs b/vq/44c1.vqs deleted file mode 100644 index a90001ee..00000000 --- a/vq/44c1.vqs +++ /dev/null @@ -1,51 +0,0 @@ -cp 44c1_s0/resaux_short.vqd _44c1_short.vqd -cp 44c1_s0/resaux_long.vqd _44c1_long.vqd - - -GO - ->_44c1s noninterleaved -haux _44c1_short.vqd 0,12,2 - ->_44c1 noninterleaved -haux _44c1_long.vqd 0,46,2 - -#iter 0 - -# 0 1 2 4 26 1 4 + -# 0 0 0 0 -# -# 0 1 2 3 4 5 6 7 -# 1 . . -# 2 . . -# 4 . . . . . . - -:_s0_p1_0 44c1_s0/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_s0_p2_0 44c1_s0/res_part2_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 -:_s0_p3_0 44c1_s0/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s0_p4_0 44c1_s0/res_part4_pass0.vqd, 2, nonseq, 0 +- 7 14 21 28 35 42 49 -:_s0_p4_1 44c1_s0/res_part4_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 - -:_s0_p5_0 44c1_s0/res_part5_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_s1_p5_0 44c1_s1/res_part5_pass2.vqd, 4, nonseq cull, 0 +- 1 - -:_s0_p6_0 44c1_s0/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s1_p6_0 44c1_s1/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s2_p6_0 44c1_s2/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 - -:_s0_p7_0 44c1_s0/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 201 -:_s0_p7_1 44c1_s0/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_s0_p7_2 44c1_s0/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - -:_s1_p7_0 44c1_s1/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 201 -:_s1_p7_1 44c1_s1/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_s1_p7_2 44c1_s1/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - -:_s2_p7_0 44c1_s2/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 201 -:_s2_p7_1 44c1_s2/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_s2_p7_2 44c1_s2/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - -:_s3_p7_0 44c1_s3/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 201 -:_s3_p7_1 44c1_s3/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_s3_p7_2 44c1_s3/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - diff --git a/vq/44c2.vqs b/vq/44c2.vqs deleted file mode 100644 index edcfdcc7..00000000 --- a/vq/44c2.vqs +++ /dev/null @@ -1,51 +0,0 @@ -cp 44c2_s0/resaux_short.vqd _44c2_short.vqd -cp 44c2_s0/resaux_long.vqd _44c2_long.vqd - - -GO - ->_44c2s noninterleaved -haux _44c2_short.vqd 0,12,2 - ->_44c2 noninterleaved -haux _44c2_long.vqd 0,48,2 - -#iter 0 - -# 0 1 2 4 26 1 4 + -# 0 0 0 0 -# -# 0 1 2 3 4 5 6 7 -# 1 . . -# 2 . . -# 4 . . . . . . - -:_s0_p1_0 44c2_s0/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_s0_p2_0 44c2_s0/res_part2_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 -:_s0_p3_0 44c2_s0/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s0_p4_0 44c2_s0/res_part4_pass0.vqd, 2, nonseq, 0 +- 7 14 21 28 35 42 49 -:_s0_p4_1 44c2_s0/res_part4_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 - -:_s0_p5_0 44c2_s0/res_part5_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_s1_p5_0 44c2_s1/res_part5_pass2.vqd, 4, nonseq cull, 0 +- 1 - -:_s0_p6_0 44c2_s0/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s1_p6_0 44c2_s1/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s2_p6_0 44c2_s2/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 - -:_s0_p7_0 44c2_s0/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 201 -:_s0_p7_1 44c2_s0/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_s0_p7_2 44c2_s0/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - -:_s1_p7_0 44c2_s1/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 201 -:_s1_p7_1 44c2_s1/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_s1_p7_2 44c2_s1/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - -:_s2_p7_0 44c2_s2/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 201 -:_s2_p7_1 44c2_s2/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_s2_p7_2 44c2_s2/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - -:_s3_p7_0 44c2_s3/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 201 -:_s3_p7_1 44c2_s3/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_s3_p7_2 44c2_s3/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - diff --git a/vq/44c3.vqs b/vq/44c3.vqs deleted file mode 100644 index e0232c83..00000000 --- a/vq/44c3.vqs +++ /dev/null @@ -1,52 +0,0 @@ -cp 44c3_s0/resaux_short.vqd _44c3_short.vqd -cp 44c3_s0/resaux_long.vqd _44c3_long.vqd - - -GO - ->_44c3s noninterleaved -haux _44c3_short.vqd 0,14,2 - ->_44c3 noninterleaved -haux _44c3_long.vqd 0,52,2 - -#iter 0 - -# 0 1 2 4 26 1 4 + -# 0 0 0 0 -# -# 0 1 2 3 4 5 6 7 -# 1 . . -# 2 . . -# 4 . . . . . . - -:_s0_p1_0 44c3_s0/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_s0_p2_0 44c3_s0/res_part2_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 -:_s0_p3_0 44c3_s0/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s0_p4_0 44c3_s0/res_part4_pass0.vqd, 2, nonseq, 0 +- 7 14 21 28 35 42 49 -:_s0_p4_1 44c3_s0/res_part4_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 - -:_s0_p5_0 44c3_s0/res_part5_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_s1_p5_0 44c3_s1/res_part5_pass2.vqd, 4, nonseq cull, 0 +- 1 - -:_s0_p6_0 44c3_s0/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s1_p6_0 44c3_s1/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s2_p6_0 44c3_s2/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 - -:_s0_p7_0 44c3_s0/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 201 268 335 402 -:_s0_p7_1 44c3_s0/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_s0_p7_2 44c3_s0/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - -:_s1_p7_0 44c3_s1/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 201 268 335 402 -:_s1_p7_1 44c3_s1/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_s1_p7_2 44c3_s1/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - -:_s2_p7_0 44c3_s2/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 201 268 335 402 -:_s2_p7_1 44c3_s2/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_s2_p7_2 44c3_s2/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - -:_s3_p7_0 44c3_s3/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 201 268 335 402 -:_s3_p7_1 44c3_s3/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_s3_p7_2 44c3_s3/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - - diff --git a/vq/44c4.vqs b/vq/44c4.vqs deleted file mode 100644 index 717700c3..00000000 --- a/vq/44c4.vqs +++ /dev/null @@ -1,105 +0,0 @@ -cp 44c4_s0/resaux_short.vqd _44c4_short.vqd -cp 44c4_s0/resaux_long.vqd _44c4_long.vqd - -GO - ->_44c4s noninterleaved -haux _44c4_short.vqd 0,16,2 - ->_44c4 noninterleaved -haux _44c4_long.vqd 0,64,2 - -#iter 0 - -# 0 1 1 2 2 4 4 16 42 + -# 0 0 0 - -# 0 1 2 3 4 5 6 7 8 9 -# 1 . . . -# 2 . . . -# 4 . . . . . . . - -:_s0_p1_0 44c4_s0/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 2 - -:_s0_p2_0 44c4_s0/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_s1_p2_0 44c4_s1/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 - -:_s0_p3_0 44c4_s0/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 - -:_s0_p4_0 44c4_s0/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 -:_s1_p4_0 44c4_s1/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2 - -:_s0_p5_0 44c4_s0/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 - -:_s0_p6_0 44c4_s0/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s1_p6_0 44c4_s1/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s2_p6_0 44c4_s2/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 - -:_s0_p7_0 44c4_s0/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 -:_s0_p7_1 44c4_s0/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 -:_s1_p7_0 44c4_s1/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 -:_s1_p7_1 44c4_s1/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 -:_s2_p7_0 44c4_s2/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 -:_s2_p7_1 44c4_s2/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 -:_s3_p7_0 44c4_s3/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 -:_s3_p7_1 44c4_s3/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 - -:_s0_p8_0 44c4_s0/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78 -:_s0_p8_1 44c4_s0/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 -:_s1_p8_0 44c4_s1/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78 -:_s1_p8_1 44c4_s1/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 -:_s2_p8_0 44c4_s2/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78 -:_s2_p8_1 44c4_s2/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 -:_s3_p8_0 44c4_s3/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78 -:_s3_p8_1 44c4_s3/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 - -:_s0_p9_0 44c4_s0/res_part9_pass0.vqd, 2, nonseq, 0 +- 169 338 507 676 845 1014 -:_s0_p9_1 44c4_s0/res_part9_pass1.vqd, 2, nonseq, 0 +- 13 26 39 52 65 78 -:_s0_p9_2 44c4_s0/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 -:_s1_p9_0 44c4_s1/res_part9_pass0.vqd, 2, nonseq, 0 +- 169 338 507 676 845 1014 -:_s1_p9_1 44c4_s1/res_part9_pass1.vqd, 2, nonseq, 0 +- 13 26 39 52 65 78 -:_s1_p9_2 44c4_s1/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 -:_s2_p9_0 44c4_s2/res_part9_pass0.vqd, 2, nonseq, 0 +- 169 338 507 676 845 1014 -:_s2_p9_1 44c4_s2/res_part9_pass1.vqd, 2, nonseq, 0 +- 13 26 39 52 65 78 -:_s2_p9_2 44c4_s2/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 -:_s3_p9_0 44c4_s3/res_part9_pass0.vqd, 2, nonseq, 0 +- 169 338 507 676 845 1014 -:_s3_p9_1 44c4_s3/res_part9_pass1.vqd, 2, nonseq, 0 +- 13 26 39 52 65 78 -:_s3_p9_2 44c4_s3/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 - -#iter 1 (stereo 3(8.)->2 2(4.)->1 1(2.)->0) shared for all 'mid' modes - -# 0 1 1 2 2 4 4 16 42 + -# 0 0 0 - -# 0 1 2 3 4 5 6 7 8 9 -# 1 . . . -# 2 . . . -# 4 . . . . . . . - -:_s1_p2_s0 44cM_s1/res_part2_pass3.vqd, 2, nonseq, 0 +- 1 2 -:_s1_p4_s0 44cM_s1/res_part4_pass3.vqd, 2, nonseq, 0 +- 1 2 3 4 -:_s1_p6_s0 44cM_s1/res_part6_pass3.vqd, 2, nonseq, 0 +- 1 2 3 4 -:_s1_p7_s0 44cM_s1/res_part7_pass3.vqd, 2, nonseq, 0 +- 1 2 3 4 -:_s1_p8_s0 44cM_s1/res_part8_pass3.vqd, 2, nonseq, 0 +- 1 2 3 4 -:_s1_p9_s0 44cM_s1/res_part9_pass3.vqd, 2, nonseq, 0 +- 1 2 3 4 - -:_s2_p6_s0 44cM_s2/res_part6_pass3.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 -:_s2_p7_s0 44cM_s2/res_part7_pass3.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 -:_s2_p8_s0 44cM_s2/res_part8_pass3.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 -:_s2_p9_s0 44cM_s2/res_part9_pass3.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 - -:_s3_p9_s0 44cM_s3/res_part789_pass3.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 - -#iter 2 (residue backfill) shared for all 'mid' modes - -:_s0_p0_r0 44cM_s0/res_part0_r0.vqd, 2, nonseq, 0 +- .333333333 .666666667 -:_s0_pN_r0 44cM_s0/res_partN_r0.vqd, 2, nonseq, 0 +- .333333333 .666666667 -:_s1_pS_r0 44cM_s1/res_partS_r0.vqd, 2, nonseq, 0 +- .333333333 - -#iter 3 (residue backfill) - -:_s0_p0_r1 44cM_s0/res_part0_r1.vqd, 2, nonseq, 0 +- .111111111 .222222222 -:_s0_pN_r1 44cM_s0/res_partN_r1.vqd, 2, nonseq, 0 +- .111111111 .222222222 -:_s1_pS_r1 44cM_s1/res_partS_r1.vqd, 2, nonseq, 0 +- .111111111 - - diff --git a/vq/44c5.vqs b/vq/44c5.vqs deleted file mode 100644 index 27ce7480..00000000 --- a/vq/44c5.vqs +++ /dev/null @@ -1,67 +0,0 @@ -cp 44c5_s0/resaux_short.vqd _44c5_short.vqd -cp 44c5_s0/resaux_long.vqd _44c5_long.vqd - -GO - ->_44c5s noninterleaved -haux _44c5_short.vqd 0,16,2 - ->_44c5 noninterleaved -haux _44c5_long.vqd 0,64,2 - -#iter 0 - -# 0 1 1 2 2 4 4 16 42 + -# 0 0 0 - -# 0 1 2 3 4 5 6 7 8 9 -# 1 . . . -# 2 . . . -# 4 . . . . . . . - -:_s0_p1_0 44c5_s0/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 2 - -:_s0_p2_0 44c5_s0/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_s1_p2_0 44c5_s1/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 - -:_s0_p3_0 44c5_s0/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 - -:_s0_p4_0 44c5_s0/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 -:_s1_p4_0 44c5_s1/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2 - -:_s0_p5_0 44c5_s0/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 - -:_s0_p6_0 44c5_s0/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s1_p6_0 44c5_s1/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s2_p6_0 44c5_s2/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 - -:_s0_p7_0 44c5_s0/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 -:_s0_p7_1 44c5_s0/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 -:_s1_p7_0 44c5_s1/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 -:_s1_p7_1 44c5_s1/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 -:_s2_p7_0 44c5_s2/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 -:_s2_p7_1 44c5_s2/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 -:_s3_p7_0 44c5_s3/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 -:_s3_p7_1 44c5_s3/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 - -:_s0_p8_0 44c5_s0/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78 -:_s0_p8_1 44c5_s0/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 -:_s1_p8_0 44c5_s1/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78 -:_s1_p8_1 44c5_s1/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 -:_s2_p8_0 44c5_s2/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78 -:_s2_p8_1 44c5_s2/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 -:_s3_p8_0 44c5_s3/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78 -:_s3_p8_1 44c5_s3/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 - -:_s0_p9_0 44c5_s0/res_part9_pass0.vqd, 2, nonseq, 0 +- 221 442 663 884 1105 1326 1547 -:_s0_p9_1 44c5_s0/res_part9_pass1.vqd, 2, nonseq, 0 +- 13 26 39 52 65 78 91 104 -:_s0_p9_2 44c5_s0/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 -:_s1_p9_0 44c5_s1/res_part9_pass0.vqd, 2, nonseq, 0 +- 221 442 663 884 1105 1326 1547 -:_s1_p9_1 44c5_s1/res_part9_pass1.vqd, 2, nonseq, 0 +- 13 26 39 52 65 78 91 104 -:_s1_p9_2 44c5_s1/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 -:_s2_p9_0 44c5_s2/res_part9_pass0.vqd, 2, nonseq, 0 +- 221 442 663 884 1105 1326 1547 -:_s2_p9_1 44c5_s2/res_part9_pass1.vqd, 2, nonseq, 0 +- 13 26 39 52 65 78 91 104 -:_s2_p9_2 44c5_s2/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 -:_s3_p9_0 44c5_s3/res_part9_pass0.vqd, 2, nonseq, 0 +- 221 442 663 884 1105 1326 1547 -:_s3_p9_1 44c5_s3/res_part9_pass1.vqd, 2, nonseq, 0 +- 13 26 39 52 65 78 91 104 -:_s3_p9_2 44c5_s3/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 diff --git a/vq/44c6.vqs b/vq/44c6.vqs deleted file mode 100644 index 7c0663d1..00000000 --- a/vq/44c6.vqs +++ /dev/null @@ -1,67 +0,0 @@ -cp 44c6_s0/resaux_short.vqd _44c6_short.vqd -cp 44c6_s0/resaux_long.vqd _44c6_long.vqd - -GO - ->_44c6s noninterleaved -haux _44c6_short.vqd 0,16,2 - ->_44c6 noninterleaved -haux _44c6_long.vqd 0,64,2 - -#iter 0 - -# 0 1 1 2 2 4 4 16 42 + -# 0 0 0 - -# 0 1 2 3 4 5 6 7 8 9 -# 1 . . . -# 2 . . . -# 4 . . . . . . . - -:_s0_p1_0 44c6_s0/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 2 - -:_s0_p2_0 44c6_s0/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_s1_p2_0 44c6_s1/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 - -:_s0_p3_0 44c6_s0/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 - -:_s0_p4_0 44c6_s0/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 -:_s1_p4_0 44c6_s1/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2 - -:_s0_p5_0 44c6_s0/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 - -:_s0_p6_0 44c6_s0/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s1_p6_0 44c6_s1/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_s2_p6_0 44c6_s2/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 - -:_s0_p7_0 44c6_s0/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 -:_s0_p7_1 44c6_s0/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 -:_s1_p7_0 44c6_s1/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 -:_s1_p7_1 44c6_s1/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 -:_s2_p7_0 44c6_s2/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 -:_s2_p7_1 44c6_s2/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 -:_s3_p7_0 44c6_s3/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 -:_s3_p7_1 44c6_s3/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 - -:_s0_p8_0 44c6_s0/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78 -:_s0_p8_1 44c6_s0/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 -:_s1_p8_0 44c6_s1/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78 -:_s1_p8_1 44c6_s1/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 -:_s2_p8_0 44c6_s2/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78 -:_s2_p8_1 44c6_s2/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 -:_s3_p8_0 44c6_s3/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78 -:_s3_p8_1 44c6_s3/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 - -:_s0_p9_0 44c6_s0/res_part9_pass0.vqd, 2, nonseq, 0 +- 637 1274 1911 2548 -:_s0_p9_1 44c6_s0/res_part9_pass1.vqd, 2, nonseq, 0 +- 49 98 147 196 245 294 -:_s0_p9_2 44c6_s0/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 -:_s1_p9_0 44c6_s1/res_part9_pass0.vqd, 2, nonseq, 0 +- 637 1274 1911 2548 -:_s1_p9_1 44c6_s1/res_part9_pass1.vqd, 2, nonseq, 0 +- 49 98 147 196 245 294 -:_s1_p9_2 44c6_s1/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 -:_s2_p9_0 44c6_s2/res_part9_pass0.vqd, 2, nonseq, 0 +- 637 1274 1911 2548 -:_s2_p9_1 44c6_s2/res_part9_pass1.vqd, 2, nonseq, 0 +- 49 98 147 196 245 294 -:_s2_p9_2 44c6_s2/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 -:_s3_p9_0 44c6_s3/res_part9_pass0.vqd, 2, nonseq, 0 +- 637 1274 1911 2548 -:_s3_p9_1 44c6_s3/res_part9_pass1.vqd, 2, nonseq, 0 +- 49 98 147 196 245 294 -:_s3_p9_2 44c6_s3/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 diff --git a/vq/44c7.vqs b/vq/44c7.vqs deleted file mode 100644 index 4105a459..00000000 --- a/vq/44c7.vqs +++ /dev/null @@ -1,57 +0,0 @@ -cp 44c7_s0/resaux_short.vqd _44c7_short.vqd -cp 44c7_s0/resaux_long.vqd _44c7_long.vqd - -GO - ->_44c7s noninterleaved -haux _44c7_short.vqd 0,16,2 - ->_44c7 noninterleaved -haux _44c7_long.vqd 0,64,2 - -#iter 0 - -# 0 8 42 1 2 4 8 16 56 + -# 0 0 0 - -# 0 1 2 3 4 5 6 7 8 9 -# 1 . . . . . . -# 2 . . . . . . -# 4 . . . . - - -:_s0_p1_0 44c7_s0/res_part1_pass0.vqd, 2, nonseq cull, 0 +- 3 6 19 12 15 -:_s0_p1_1 44c7_s0/res_part1_pass1.vqd, 2, nonseq cull, 0 +- 1 - -:_s0_p2_0 44c7_s0/res_part2_pass0.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78 -:_s0_p2_1 44c7_s0/res_part2_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 - -:_s0_p3_0 44c7_s0/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_s0_p4_0 44c7_s0/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 -:_s0_p5_0 44c7_s0/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 - -:_s0_p6_0 44c7_s0/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 3 6 19 12 15 -:_s0_p6_1 44c7_s0/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 - -:_s0_p7_0 44c7_s0/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 -:_s0_p7_1 44c7_s0/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 - -:_s0_p8_0 44c7_s0/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 15 30 45 60 75 90 105 -:_s0_p8_1 44c7_s0/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 - -:_s0_p9_0 44c7_s0/res_part9_pass0.vqd, 2, nonseq, 0 +- 637 1274 1911 2548 -:_s0_p9_1 44c7_s0/res_part9_pass1.vqd, 2, nonseq, 0 +- 49 98 147 196 245 294 -:_s0_p9_2 44c7_s0/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - -#iter 1 - -:_s0_p0_r0 44cH_s0/res_part0_r0.vqd, 2, nonseq, 0 +- .333333333 .666666667 -:_s0_pN_r0 44cH_s0/res_partN_r0.vqd, 2, nonseq, 0 +- .333333333 .666666667 - -#iter 2 - -:_s0_p0_r1 44cH_s0/res_part0_r1.vqd, 2, nonseq, 0 +- .111111111 .222222222 -:_s0_pN_r1 44cH_s0/res_partN_r1.vqd, 2, nonseq, 0 +- .111111111 .222222222 - - - diff --git a/vq/44c8.vqs b/vq/44c8.vqs deleted file mode 100644 index 0d045c46..00000000 --- a/vq/44c8.vqs +++ /dev/null @@ -1,44 +0,0 @@ -cp 44c8_s0/resaux_short.vqd _44c8_short.vqd -cp 44c8_s0/resaux_long.vqd _44c8_long.vqd - -GO - ->_44c8s noninterleaved -haux _44c8_short.vqd 0,16,2 - ->_44c8 noninterleaved -haux _44c8_long.vqd 0,64,2 - -#iter 0 - -# 0 8 42 1 2 4 8 16 56 + -# 0 0 0 - -# 0 1 2 3 4 5 6 7 8 9 -# 1 . . . . . . -# 2 . . . . . . -# 4 . . . . - - -:_s0_p1_0 44c8_s0/res_part1_pass0.vqd, 2, nonseq cull, 0 +- 3 6 19 12 15 -:_s0_p1_1 44c8_s0/res_part1_pass1.vqd, 2, nonseq cull, 0 +- 1 - -:_s0_p2_0 44c8_s0/res_part2_pass0.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78 -:_s0_p2_1 44c8_s0/res_part2_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 - -:_s0_p3_0 44c8_s0/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_s0_p4_0 44c8_s0/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 -:_s0_p5_0 44c8_s0/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 - -:_s0_p6_0 44c8_s0/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 3 6 19 12 15 -:_s0_p6_1 44c8_s0/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 - -:_s0_p7_0 44c8_s0/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 -:_s0_p7_1 44c8_s0/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 - -:_s0_p8_0 44c8_s0/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 15 30 45 60 75 90 105 -:_s0_p8_1 44c8_s0/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 - -:_s0_p9_0 44c8_s0/res_part9_pass0.vqd, 2, nonseq, 0 +- 637 1274 1911 2548 3185 -:_s0_p9_1 44c8_s0/res_part9_pass1.vqd, 2, nonseq, 0 +- 49 98 147 196 245 294 -:_s0_p9_2 44c8_s0/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 diff --git a/vq/44c9.vqs b/vq/44c9.vqs deleted file mode 100644 index 4de5a928..00000000 --- a/vq/44c9.vqs +++ /dev/null @@ -1,44 +0,0 @@ -cp 44c9_s0/resaux_short.vqd _44c9_short.vqd -cp 44c9_s0/resaux_long.vqd _44c9_long.vqd - -GO - ->_44c9s noninterleaved -haux _44c9_short.vqd 0,16,2 - ->_44c9 noninterleaved -haux _44c9_long.vqd 0,64,2 - -#iter 0 - -# 0 8 42 1 2 4 8 16 56 + -# 0 0 0 - -# 0 1 2 3 4 5 6 7 8 9 -# 1 . . . . . . -# 2 . . . . . . -# 4 . . . . - - -:_s0_p1_0 44c9_s0/res_part1_pass0.vqd, 2, nonseq cull, 0 +- 3 6 19 12 15 -:_s0_p1_1 44c9_s0/res_part1_pass1.vqd, 2, nonseq cull, 0 +- 1 - -:_s0_p2_0 44c9_s0/res_part2_pass0.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78 -:_s0_p2_1 44c9_s0/res_part2_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 - -:_s0_p3_0 44c9_s0/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_s0_p4_0 44c9_s0/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 -:_s0_p5_0 44c9_s0/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 - -:_s0_p6_0 44c9_s0/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 3 6 19 12 15 -:_s0_p6_1 44c9_s0/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 - -:_s0_p7_0 44c9_s0/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 -:_s0_p7_1 44c9_s0/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 - -:_s0_p8_0 44c9_s0/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 15 30 45 60 75 90 105 -:_s0_p8_1 44c9_s0/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 - -:_s0_p9_0 44c9_s0/res_part9_pass0.vqd, 2, nonseq, 0 +- 1863 3726 5589 7452 9315 11178 13041 14904 16767 18630 20493 -:_s0_p9_1 44c9_s0/res_part9_pass1.vqd, 2, nonseq, 0 +- 81 162 243 324 405 486 567 648 729 810 891 -:_s0_p9_2 44c9_s0/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 diff --git a/vq/44u0.vqs b/vq/44u0.vqs deleted file mode 100644 index 8d4761ea..00000000 --- a/vq/44u0.vqs +++ /dev/null @@ -1,36 +0,0 @@ - -GO - ->_44u0 noninterleaved - -#iter 0 - -# 0 1 2 4 26 1 4 + -# 0 0 0 0 -# -# 0 1 2 3 4 5 6 7 -# 1 . . -# 2 . . -# 4 . . . . . . - -:_p1_0 44u0/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 -:_p2_0 44u0/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_p3_0 44u0/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 -:_p4_0 44u0/res_part4_pass0.vqd, 2, nonseq , 0 +- 3 6 9 12 15 18 21 24 27 -:_p4_1 44u0/res_part4_pass1.vqd, 4, nonseq cull, 0 +- 1 -:_p5_0 44u0/res_part5_pass2.vqd, 4, nonseq cull, 0 +- 1 -:_p6_0 44u0/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 - -:_p7_0 44u0/res_part7_pass0.vqd, 2, nonseq, 0 +- 67 134 -:_p7_1 44u0/res_part7_pass1.vqd, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33 -:_p7_2 44u0/res_part7_pass2.vqd, 4, nonseq, 0 +- 1 - -#iter 1 - -:_p0_r0 44u0/res_part0_pass3.vqd, 2, nonseq cull, 0 +- .33333333 -:_p1_r0 44u0/res_partN_pass3.vqd, 2, nonseq cull, 0 +- .33333333 - -#iter 2 - -:_p0_r1 44u0/res_part0_pass4.vqd, 2, nonseq cull, 0 +- .11111111 -:_p1_r1 44u0/res_partN_pass4.vqd, 2, nonseq cull, 0 +- .11111111 diff --git a/vq/44u4.vqs b/vq/44u4.vqs deleted file mode 100644 index b955c004..00000000 --- a/vq/44u4.vqs +++ /dev/null @@ -1,37 +0,0 @@ -GO - ->_44u4 noninterleaved - - -#iter 0 - -# 0 1 1 2 2 4 4 16 42 + -# 0 0 0 - -# 0 1 2 3 4 5 6 7 8 9 -# 1 . . . -# 2 . . . -# 4 . . . . . . . - -:_p1_0 44u4/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 -:_p2_0 44u4/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 -:_p3_0 44u4/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_p4_0 44u4/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_p5_0 44u4/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 -:_p6_0 44u4/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 -:_p7_0 44u4/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 3 6 9 12 15 -:_p7_1 44u4/res_part7_pass1.vqd, 4, nonseq cull, 0 +- 1 -:_p8_0 44u4/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 35 40 -:_p8_1 44u4/res_part8_pass1.vqd, 4, nonseq cull, 0 +- 1 2 -:_p9_0 44u4/res_part9_pass0.vqd, 2, nonseq, 0 +- 637 1274 1911 -:_p9_1 44u4/res_part9_pass1.vqd, 2, nonseq, 0 +- 49 98 147 196 245 294 -:_p9_2 44u4/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 -#iter 1 - -:_p0_r0 44u4/res_part0_pass3.vqd, 2, nonseq cull, 0 +- .33333333 -:_p1_r0 44u4/res_partN_pass3.vqd, 2, nonseq cull, 0 +- .33333333 - -#iter 2 - -:_p0_r1 44u4/res_part0_pass4.vqd, 2, nonseq cull, 0 +- .11111111 -:_p1_r1 44u4/res_partN_pass4.vqd, 2, nonseq cull, 0 +- .11111111 diff --git a/vq/44u7.vqs b/vq/44u7.vqs deleted file mode 100644 index 65303ac9..00000000 --- a/vq/44u7.vqs +++ /dev/null @@ -1,40 +0,0 @@ -GO - ->_44u7 noninterleaved - -# 0 8 42 1 2 4 8 16 59 + -# 0 0 0 - -# 0 1 2 3 4 5 6 7 8 9 -# 1 . . . . -# 2 . . . . -# 4 . . . . . . - -:_p1_0 44u7/res_part1_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_p2_0 44u7/res_part2_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30 35 40 -:_p2_1 44u7/res_part2_pass1.vqd, 4, nonseq cull, 0 +- 1 2 - -:_p3_0 44u7/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 -:_p4_0 44u7/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2 -:_p5_0 44u7/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 -:_p6_0 44u7/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 -:_p7_0 44u7/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 3 6 9 12 15 -:_p7_1 44u7/res_part7_pass1.vqd, 4, nonseq cull, 0 +- 1 - -:_p8_0 44u7/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 7 14 21 28 35 42 49 56 -:_p8_1 44u7/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 - - -:_p9_0 44u7/res_part9_pass0.vqd, 2, nonseq, 0 +- 1863 3726 5589 7452 9315 11178 13041 -:_p9_1 44u7/res_part9_pass1.vqd, 2, nonseq, 0 +- 81 162 243 324 405 486 567 648 729 810 891 -:_p9_2 44u7/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 - -#iter 1 - -:_p0_r0 44u7/res_part0_pass3.vqd, 2, nonseq cull, 0 +- .33333333 -:_p1_r0 44u7/res_partN_pass3.vqd, 2, nonseq cull, 0 +- .33333333 - -#iter 2 - -:_p0_r1 44u7/res_part0_pass4.vqd, 2, nonseq cull, 0 +- .11111111 -:_p1_r1 44u7/res_partN_pass4.vqd, 2, nonseq cull, 0 +- .11111111 diff --git a/vq/Makefile.am b/vq/Makefile.am deleted file mode 100644 index 232b64c2..00000000 --- a/vq/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -## Process this file with automake to produce Makefile.in - -AUTOMAKE_OPTIONS = foreign - -INCLUDES = -I../lib -I$(top_srcdir)/include @OGG_CFLAGS@ - -EXTRA_PROGRAMS = lspvqtrain genericvqtrain residuevqtrain vqbuild\ - vqcascade vqmetrics latticebuild latticepare latticehint\ - latticetune huffbuild residuesplit distribution -CLEANFILES = $(EXTRA_PROGRAMS) - -LDFLAGS = -static -LDADD = ../lib/libvorbis.la - -lspvqtrain_SOURCES = lspdata.c train.c vqgen.c bookutil.c\ - vqgen.h bookutil.h vqext.h -genericvqtrain_SOURCES = genericdata.c train.c vqgen.c bookutil.c\ - vqgen.h bookutil.h vqext.h -residuevqtrain_SOURCES = residuedata.c train.c vqgen.c bookutil.c\ - vqgen.h bookutil.h vqext.h -vqbuild_SOURCES = build.c vqgen.c bookutil.c vqsplit.c\ - vqgen.h bookutil.h vqext.h -vqcascade_SOURCES = run.c cascade.c vqgen.c bookutil.c\ - vqgen.h bookutil.h -vqmetrics_SOURCES = run.c metrics.c vqgen.c bookutil.c\ - vqgen.h bookutil.h -latticebuild_SOURCES = latticebuild.c vqgen.c bookutil.c\ - vqgen.h bookutil.h -latticepare_SOURCES = latticepare.c vqgen.c bookutil.c vqsplit.c\ - vqgen.h bookutil.h -latticehint_SOURCES = latticehint.c bookutil.c\ - bookutil.h -latticetune_SOURCES = latticetune.c vqgen.c bookutil.c\ - vqgen.h bookutil.h -huffbuild_SOURCES = huffbuild.c vqgen.c bookutil.c\ - vqgen.h bookutil.h -residuesplit_SOURCES = residuesplit.c vqgen.c bookutil.c\ - vqgen.h bookutil.h -distribution_SOURCES = distribution.c bookutil.c\ - bookutil.h - -EXTRA_DIST = residue_entropy auxpartition.pl - -debugvq: - $(MAKE) vq CFLAGS="@DEBUG@" - -profilevq: - $(MAKE) vq CFLAGS="@PROFILE@" - -vq: - $(MAKE) $(EXTRA_PROGRAMS) diff --git a/vq/auxpartition.pl b/vq/auxpartition.pl deleted file mode 100755 index 05c5ed94..00000000 --- a/vq/auxpartition.pl +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/perl - -if($#ARGV<0){ - &usage; -} - -$|=1; - -$bands=0; - -foreach $arg (@ARGV){ - ($entries[$bands],$file[$bands])=split(/,/,$arg); - $bands++; -} - -# no time to deal with globs right now -if($bands>0){ - die unless open(ONE,"<".$file[0]); -} -if($bands>1){ - die unless open(TWO,"<".$file[1]); -} -if($bands>2){ - die unless open(THREE,"<".$file[2]); -} - - -while (<ONE>) { - my@nums = (); - @nums = split(/,/); - my$cols=$#nums; - for($i=0;$i<$cols;$i++){ - print 0+$nums[$i].", "; - } - if($bands>1){ - $_=<TWO>; - @nums = (); - @nums = split(/,/); - $cols=$#nums; - for($i=0;$i<$cols;$i++){ - print $nums[$i]+$entries[0].", "; - } - if($bands>2){ - $_=<THREE>; - @nums = (); - @nums = split(/,/); - $cols=$#nums; - for($i=0;$i<$cols;$i++){ - print $nums[$i]+$entries[0]+$entries[1].", "; - } - } - } - print "\n"; - -} - -if($bands>0){ - close ONE; -} -if($bands>1){ - close TWO; -} -if($bands>2){ - close THREE; -} - -sub usage{ - print "\nOggVorbis auxbook spectral partitioner\n\n"; - print "auxpartition.pl <part_entries>,file [<part_entries>,file...]\n\n"; - exit(1); -} diff --git a/vq/bookutil.c b/vq/bookutil.c deleted file mode 100644 index 9503e3cf..00000000 --- a/vq/bookutil.c +++ /dev/null @@ -1,738 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: utility functions for loading .vqh and .vqd files - last mod: $Id: bookutil.c,v 1.26 2001/12/20 01:00:39 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <errno.h> -#include "bookutil.h" - -/* A few little utils for reading files */ -/* read a line. Use global, persistent buffering */ -static char *linebuffer=NULL; -static int lbufsize=0; -char *get_line(FILE *in){ - long sofar=0; - if(feof(in))return NULL; - - while(1){ - int gotline=0; - - while(!gotline){ - if(sofar+1>=lbufsize){ - if(!lbufsize){ - lbufsize=1024; - linebuffer=_ogg_malloc(lbufsize); - }else{ - lbufsize*=2; - linebuffer=_ogg_realloc(linebuffer,lbufsize); - } - } - { - long c=fgetc(in); - switch(c){ - case EOF: - if(sofar==0)return(NULL); - /* fallthrough correct */ - case '\n': - linebuffer[sofar]='\0'; - gotline=1; - break; - default: - linebuffer[sofar++]=c; - linebuffer[sofar]='\0'; - break; - } - } - } - - if(linebuffer[0]=='#'){ - sofar=0; - }else{ - return(linebuffer); - } - } -} - -/* read the next numerical value from the given file */ -static char *value_line_buff=NULL; - -int get_line_value(FILE *in,float *value){ - char *next; - - if(!value_line_buff)return(-1); - - *value=strtod(value_line_buff, &next); - if(next==value_line_buff){ - value_line_buff=NULL; - return(-1); - }else{ - value_line_buff=next; - while(*value_line_buff>44)value_line_buff++; - if(*value_line_buff==44)value_line_buff++; - return(0); - } -} - -int get_next_value(FILE *in,float *value){ - while(1){ - if(get_line_value(in,value)){ - value_line_buff=get_line(in); - if(!value_line_buff)return(-1); - }else{ - return(0); - } - } -} - -int get_next_ivalue(FILE *in,long *ivalue){ - float value; - int ret=get_next_value(in,&value); - *ivalue=value; - return(ret); -} - -static float sequence_base=0.f; -static int v_sofar=0; -void reset_next_value(void){ - value_line_buff=NULL; - sequence_base=0.f; - v_sofar=0; -} - -char *setup_line(FILE *in){ - reset_next_value(); - value_line_buff=get_line(in); - return(value_line_buff); -} - - -int get_vector(codebook *b,FILE *in,int start, int n,float *a){ - int i; - const static_codebook *c=b->c; - - while(1){ - - if(v_sofar==n || get_line_value(in,a)){ - reset_next_value(); - if(get_next_value(in,a)) - break; - for(i=0;i<start;i++){ - sequence_base=*a; - get_line_value(in,a); - } - } - - for(i=1;i<c->dim;i++) - if(get_line_value(in,a+i)) - break; - - if(i==c->dim){ - float temp=a[c->dim-1]; - for(i=0;i<c->dim;i++)a[i]-=sequence_base; - if(c->q_sequencep)sequence_base=temp; - v_sofar++; - return(0); - } - sequence_base=0.f; - } - - return(-1); -} - -/* read lines fromt he beginning until we find one containing the - specified string */ -char *find_seek_to(FILE *in,char *s){ - rewind(in); - while(1){ - char *line=get_line(in); - if(line){ - if(strstr(line,s)) - return(line); - }else - return(NULL); - } -} - - -/* this reads the format as written by vqbuild/latticebuild; innocent - (legal) tweaking of the file that would not affect its valid - header-ness will break this routine */ - -codebook *codebook_load(char *filename){ - codebook *b=_ogg_calloc(1,sizeof(codebook)); - static_codebook *c=(static_codebook *)(b->c=_ogg_calloc(1,sizeof(static_codebook))); - encode_aux_nearestmatch *a=NULL; - encode_aux_threshmatch *t=NULL; - encode_aux_pigeonhole *p=NULL; - int quant_to_read=0; - FILE *in=fopen(filename,"r"); - char *line; - long i; - - if(in==NULL){ - fprintf(stderr,"Couldn't open codebook %s\n",filename); - exit(1); - } - - /* find the codebook struct */ - find_seek_to(in,"static static_codebook "); - - /* get the major important values */ - line=get_line(in); - if(sscanf(line,"%ld, %ld,", - &(c->dim),&(c->entries))!=2){ - fprintf(stderr,"1: syntax in %s in line:\t %s",filename,line); - exit(1); - } - line=get_line(in); - line=get_line(in); - if(sscanf(line,"%d, %ld, %ld, %d, %d,", - &(c->maptype),&(c->q_min),&(c->q_delta),&(c->q_quant), - &(c->q_sequencep))!=5){ - fprintf(stderr,"1: syntax in %s in line:\t %s",filename,line); - exit(1); - } - - /* find the auxiliary encode struct[s] (if any) */ - if(find_seek_to(in,"static encode_aux_nearestmatch _vq_aux")){ - /* how big? */ - c->nearest_tree=a=_ogg_calloc(1,sizeof(encode_aux_nearestmatch)); - line=get_line(in); - line=get_line(in); - line=get_line(in); - line=get_line(in); - line=get_line(in); - if(sscanf(line,"%ld, %ld",&(a->aux),&(a->alloc))!=2){ - fprintf(stderr,"2: syntax in %s in line:\t %s",filename,line); - exit(1); - } - - /* load ptr0 */ - find_seek_to(in,"static long _vq_ptr0"); - reset_next_value(); - a->ptr0=_ogg_malloc(sizeof(long)*a->aux); - for(i=0;i<a->aux;i++) - if(get_next_ivalue(in,a->ptr0+i)){ - fprintf(stderr,"out of data while reading codebook %s\n",filename); - exit(1); - } - - /* load ptr1 */ - find_seek_to(in,"static long _vq_ptr1"); - reset_next_value(); - a->ptr1=_ogg_malloc(sizeof(long)*a->aux); - for(i=0;i<a->aux;i++) - if(get_next_ivalue(in,a->ptr1+i)){ - fprintf(stderr,"out of data while reading codebook %s\n",filename); - exit(1); - } - - - /* load p */ - find_seek_to(in,"static long _vq_p_"); - reset_next_value(); - a->p=_ogg_malloc(sizeof(long)*a->aux); - for(i=0;i<a->aux;i++) - if(get_next_ivalue(in,a->p+i)){ - fprintf(stderr,"out of data while reading codebook %s\n",filename); - exit(1); - } - - /* load q */ - find_seek_to(in,"static long _vq_q_"); - reset_next_value(); - a->q=_ogg_malloc(sizeof(long)*a->aux); - for(i=0;i<a->aux;i++) - if(get_next_ivalue(in,a->q+i)){ - fprintf(stderr,"out of data while reading codebook %s\n",filename); - exit(1); - } - } - - if(find_seek_to(in,"static encode_aux_threshmatch _vq_aux")){ - /* how big? */ - c->thresh_tree=t=_ogg_calloc(1,sizeof(encode_aux_threshmatch)); - line=get_line(in); - line=get_line(in); - line=get_line(in); - if(sscanf(line,"%d",&(t->quantvals))!=1){ - fprintf(stderr,"3: syntax in %s in line:\t %s",filename,line); - exit(1); - } - line=get_line(in); - if(sscanf(line,"%d",&(t->threshvals))!=1){ - fprintf(stderr,"4: syntax in %s in line:\t %s",filename,line); - exit(1); - } - /* load quantthresh */ - find_seek_to(in,"static float _vq_quantthresh_"); - reset_next_value(); - t->quantthresh=_ogg_malloc(sizeof(float)*t->threshvals); - for(i=0;i<t->threshvals-1;i++) - if(get_next_value(in,t->quantthresh+i)){ - fprintf(stderr,"out of data 1 while reading codebook %s\n",filename); - exit(1); - } - /* load quantmap */ - find_seek_to(in,"static long _vq_quantmap_"); - reset_next_value(); - t->quantmap=_ogg_malloc(sizeof(long)*t->threshvals); - for(i=0;i<t->threshvals;i++) - if(get_next_ivalue(in,t->quantmap+i)){ - fprintf(stderr,"out of data 2 while reading codebook %s\n",filename); - exit(1); - } - } - - if(find_seek_to(in,"static encode_aux_pigeonhole _vq_aux")){ - int pigeons=1,i; - /* how big? */ - c->pigeon_tree=p=_ogg_calloc(1,sizeof(encode_aux_pigeonhole)); - line=get_line(in); - if(sscanf(line,"%f, %f, %d, %d",&(p->min),&(p->del), - &(p->mapentries),&(p->quantvals))!=4){ - fprintf(stderr,"5: syntax in %s in line:\t %s",filename,line); - exit(1); - } - line=get_line(in); - line=get_line(in); - if(sscanf(line,"%ld",&(p->fittotal))!=1){ - fprintf(stderr,"6: syntax in %s in line:\t %s",filename,line); - exit(1); - } - /* load pigeonmap */ - find_seek_to(in,"static long _vq_pigeonmap_"); - reset_next_value(); - p->pigeonmap=_ogg_malloc(sizeof(long)*p->mapentries); - for(i=0;i<p->mapentries;i++) - if(get_next_ivalue(in,p->pigeonmap+i)){ - fprintf(stderr,"out of data (pigeonmap) while reading codebook %s\n",filename); - exit(1); - } - /* load fitlist */ - find_seek_to(in,"static long _vq_fitlist_"); - reset_next_value(); - p->fitlist=_ogg_malloc(sizeof(long)*p->fittotal); - for(i=0;i<p->fittotal;i++) - if(get_next_ivalue(in,p->fitlist+i)){ - fprintf(stderr,"out of data (fitlist) while reading codebook %s\n",filename); - exit(1); - } - /* load fitmap */ - find_seek_to(in,"static long _vq_fitmap_"); - reset_next_value(); - for(i=0;i<c->dim;i++)pigeons*=p->quantvals; - p->fitmap=_ogg_malloc(sizeof(long)*pigeons); - for(i=0;i<pigeons;i++) - if(get_next_ivalue(in,p->fitmap+i)){ - fprintf(stderr,"out of data (fitmap) while reading codebook %s\n",filename); - exit(1); - } - - /* load fitlength */ - find_seek_to(in,"static long _vq_fitlength_"); - reset_next_value(); - p->fitlength=_ogg_malloc(sizeof(long)*pigeons); - for(i=0;i<pigeons;i++) - if(get_next_ivalue(in,p->fitlength+i)){ - fprintf(stderr,"out of data (fitlength) while reading codebook %s\n",filename); - exit(1); - } - } - - switch(c->maptype){ - case 0: - quant_to_read=0; - break; - case 1: - quant_to_read=_book_maptype1_quantvals(c); - break; - case 2: - quant_to_read=c->entries*c->dim; - break; - } - - /* load the quantized entries */ - find_seek_to(in,"static long _vq_quantlist_"); - reset_next_value(); - c->quantlist=_ogg_malloc(sizeof(long)*quant_to_read); - for(i=0;i<quant_to_read;i++) - if(get_next_ivalue(in,c->quantlist+i)){ - fprintf(stderr,"out of data while reading codebook %s\n",filename); - exit(1); - } - - /* load the lengthlist */ - find_seek_to(in,"_lengthlist"); - reset_next_value(); - c->lengthlist=_ogg_malloc(sizeof(long)*c->entries); - for(i=0;i<c->entries;i++) - if(get_next_ivalue(in,c->lengthlist+i)){ - fprintf(stderr,"out of data while reading codebook %s\n",filename); - exit(1); - } - - /* got it all */ - fclose(in); - - vorbis_book_init_encode(b,c); - - return(b); -} - -void spinnit(char *s,int n){ - static int p=0; - static long lasttime=0; - long test; - struct timeval thistime; - - gettimeofday(&thistime,NULL); - test=thistime.tv_sec*10+thistime.tv_usec/100000; - if(lasttime!=test){ - lasttime=test; - - fprintf(stderr,"%s%d ",s,n); - - p++;if(p>3)p=0; - switch(p){ - case 0: - fprintf(stderr,"| \r"); - break; - case 1: - fprintf(stderr,"/ \r"); - break; - case 2: - fprintf(stderr,"- \r"); - break; - case 3: - fprintf(stderr,"\\ \r"); - break; - } - fflush(stderr); - } -} - -void build_tree_from_lengths(int vals, long *hist, long *lengths){ - int i,j; - long *membership=_ogg_malloc(vals*sizeof(long)); - long *histsave=alloca(vals*sizeof(long)); - memcpy(histsave,hist,vals*sizeof(long)); - - for(i=0;i<vals;i++)membership[i]=i; - - /* find codeword lengths */ - /* much more elegant means exist. Brute force n^2, minimum thought */ - for(i=vals;i>1;i--){ - int first=-1,second=-1; - long least=-1; - - spinnit("building... ",i); - - /* find the two nodes to join */ - for(j=0;j<vals;j++) - if(least==-1 || hist[j]<least){ - least=hist[j]; - first=membership[j]; - } - least=-1; - for(j=0;j<vals;j++) - if((least==-1 || hist[j]<least) && membership[j]!=first){ - least=hist[j]; - second=membership[j]; - } - if(first==-1 || second==-1){ - fprintf(stderr,"huffman fault; no free branch\n"); - exit(1); - } - - /* join them */ - least=hist[first]+hist[second]; - for(j=0;j<vals;j++) - if(membership[j]==first || membership[j]==second){ - membership[j]=first; - hist[j]=least; - lengths[j]++; - } - } - for(i=0;i<vals-1;i++) - if(membership[i]!=membership[i+1]){ - fprintf(stderr,"huffman fault; failed to build single tree\n"); - exit(1); - } - - /* for sanity check purposes: how many bits would it have taken to - encode the training set? */ - { - long bitsum=0; - long samples=0; - for(i=0;i<vals;i++){ - bitsum+=(histsave[i]-1)*lengths[i]; - samples+=histsave[i]-1; - } - - if(samples){ - fprintf(stderr,"\rTotal samples in training set: %ld \n",samples); - fprintf(stderr,"\rTotal bits used to represent training set: %ld\n", - bitsum); - } - } - - free(membership); -} - -/* wrap build_tree_from_lengths to allow zero entries in the histogram */ -void build_tree_from_lengths0(int vals, long *hist, long *lengths){ - - /* pack the 'sparse' hit list into a dense list, then unpack - the lengths after the build */ - - int upper=0,i; - long *lengthlist=_ogg_calloc(vals,sizeof(long)); - long *newhist=alloca(vals*sizeof(long)); - - for(i=0;i<vals;i++) - if(hist[i]>0) - newhist[upper++]=hist[i]; - - if(upper != vals){ - fprintf(stderr,"\rEliminating %d unused entries; %d entries remain\n", - vals-upper,upper); - } - - build_tree_from_lengths(upper,newhist,lengthlist); - - upper=0; - for(i=0;i<vals;i++) - if(hist[i]>0) - lengths[i]=lengthlist[upper++]; - else - lengths[i]=0; - - free(lengthlist); -} - -void write_codebook(FILE *out,char *name,const static_codebook *c){ - encode_aux_pigeonhole *p=c->pigeon_tree; - encode_aux_threshmatch *t=c->thresh_tree; - encode_aux_nearestmatch *n=c->nearest_tree; - int i,j,k; - - /* save the book in C header form */ - fprintf(out, - "/********************************************************************\n" - " * *\n" - " * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *\n" - " * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *\n" - " * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *\n" - " * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *\n" - " * *\n" - " * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *\n" - " * by the XIPHOPHORUS Company http://www.xiph.org/ *\n" - " * *\n" - " ********************************************************************\n" - "\n" - " function: static codebook autogenerated by vq/somethingorother\n" - "\n" - " ********************************************************************/\n\n"); - - fprintf(out,"#ifndef _V_%s_VQH_\n#define _V_%s_VQH_\n",name,name); - fprintf(out,"#include \"codebook.h\"\n\n"); - - /* first, the static vectors, then the book structure to tie it together. */ - /* quantlist */ - if(c->quantlist){ - long vals=(c->maptype==1?_book_maptype1_quantvals(c):c->entries*c->dim); - fprintf(out,"static long _vq_quantlist_%s[] = {\n",name); - for(j=0;j<vals;j++){ - fprintf(out,"\t%ld,\n",c->quantlist[j]); - } - fprintf(out,"};\n\n"); - } - - /* lengthlist */ - fprintf(out,"static long _vq_lengthlist_%s[] = {\n",name); - for(j=0;j<c->entries;){ - fprintf(out,"\t"); - for(k=0;k<16 && j<c->entries;k++,j++) - fprintf(out,"%2ld,",c->lengthlist[j]); - fprintf(out,"\n"); - } - fprintf(out,"};\n\n"); - - if(t){ - /* quantthresh */ - fprintf(out,"static float _vq_quantthresh_%s[] = {\n",name); - for(j=0;j<t->threshvals-1;){ - fprintf(out,"\t"); - for(k=0;k<8 && j<t->threshvals-1;k++,j++) - fprintf(out,"%.5g, ",t->quantthresh[j]); - fprintf(out,"\n"); - } - fprintf(out,"};\n\n"); - - /* quantmap */ - fprintf(out,"static long _vq_quantmap_%s[] = {\n",name); - for(j=0;j<t->threshvals;){ - fprintf(out,"\t"); - for(k=0;k<8 && j<t->threshvals;k++,j++) - fprintf(out,"%5ld,",t->quantmap[j]); - fprintf(out,"\n"); - } - fprintf(out,"};\n\n"); - - fprintf(out,"static encode_aux_threshmatch _vq_auxt_%s = {\n",name); - fprintf(out,"\t_vq_quantthresh_%s,\n",name); - fprintf(out,"\t_vq_quantmap_%s,\n",name); - fprintf(out,"\t%d,\n",t->quantvals); - fprintf(out,"\t%d\n};\n\n",t->threshvals); - } - - if(p){ - int pigeons=1; - for(i=0;i<c->dim;i++)pigeons*=p->quantvals; - - /* pigeonmap */ - fprintf(out,"static long _vq_pigeonmap_%s[] = {\n",name); - for(j=0;j<p->mapentries;){ - fprintf(out,"\t"); - for(k=0;k<8 && j<p->mapentries;k++,j++) - fprintf(out,"%5ld, ",p->pigeonmap[j]); - fprintf(out,"\n"); - } - fprintf(out,"};\n\n"); - /* fitlist */ - fprintf(out,"static long _vq_fitlist_%s[] = {\n",name); - for(j=0;j<p->fittotal;){ - fprintf(out,"\t"); - for(k=0;k<8 && j<p->fittotal;k++,j++) - fprintf(out,"%5ld, ",p->fitlist[j]); - fprintf(out,"\n"); - } - fprintf(out,"};\n\n"); - /* fitmap */ - fprintf(out,"static long _vq_fitmap_%s[] = {\n",name); - for(j=0;j<pigeons;){ - fprintf(out,"\t"); - for(k=0;k<8 && j<pigeons;k++,j++) - fprintf(out,"%5ld, ",p->fitmap[j]); - fprintf(out,"\n"); - } - fprintf(out,"};\n\n"); - /* fitlength */ - fprintf(out,"static long _vq_fitlength_%s[] = {\n",name); - for(j=0;j<pigeons;){ - fprintf(out,"\t"); - for(k=0;k<8 && j<pigeons;k++,j++) - fprintf(out,"%5ld, ",p->fitlength[j]); - fprintf(out,"\n"); - } - fprintf(out,"};\n\n"); - - fprintf(out,"static encode_aux_pigeonhole _vq_auxp_%s = {\n",name); - fprintf(out,"\t%g, %g, %d, %d,\n", - p->min,p->del,p->mapentries,p->quantvals); - - fprintf(out,"\t_vq_pigeonmap_%s,\n",name); - - fprintf(out,"\t%ld,\n",p->fittotal); - fprintf(out,"\t_vq_fitlist_%s,\n",name); - fprintf(out,"\t_vq_fitmap_%s,\n",name); - fprintf(out,"\t_vq_fitlength_%s\n};\n\n",name); - } - - if(n){ - - /* ptr0 */ - fprintf(out,"static long _vq_ptr0_%s[] = {\n",name); - for(j=0;j<n->aux;){ - fprintf(out,"\t"); - for(k=0;k<8 && j<n->aux;k++,j++) - fprintf(out,"%6ld,",n->ptr0[j]); - fprintf(out,"\n"); - } - fprintf(out,"};\n\n"); - - /* ptr1 */ - fprintf(out,"static long _vq_ptr1_%s[] = {\n",name); - for(j=0;j<n->aux;){ - fprintf(out,"\t"); - for(k=0;k<8 && j<n->aux;k++,j++) - fprintf(out,"%6ld,",n->ptr1[j]); - fprintf(out,"\n"); - } - fprintf(out,"};\n\n"); - - /* p */ - fprintf(out,"static long _vq_p_%s[] = {\n",name); - for(j=0;j<n->aux;){ - fprintf(out,"\t"); - for(k=0;k<8 && j<n->aux;k++,j++) - fprintf(out,"%6ld,",n->p[j]*c->dim); - fprintf(out,"\n"); - } - fprintf(out,"};\n\n"); - - /* q */ - fprintf(out,"static long _vq_q_%s[] = {\n",name); - for(j=0;j<n->aux;){ - fprintf(out,"\t"); - for(k=0;k<8 && j<n->aux;k++,j++) - fprintf(out,"%6ld,",n->q[j]*c->dim); - fprintf(out,"\n"); - } - fprintf(out,"};\n\n"); - - fprintf(out,"static encode_aux_nearestmatch _vq_auxn_%s = {\n",name); - fprintf(out,"\t_vq_ptr0_%s,\n",name); - fprintf(out,"\t_vq_ptr1_%s,\n",name); - fprintf(out,"\t_vq_p_%s,\n",name); - fprintf(out,"\t_vq_q_%s,\n",name); - fprintf(out,"\t%ld, %ld\n};\n\n",n->aux,n->aux); - } - - /* tie it all together */ - - fprintf(out,"static static_codebook %s = {\n",name); - - fprintf(out,"\t%ld, %ld,\n",c->dim,c->entries); - fprintf(out,"\t_vq_lengthlist_%s,\n",name); - fprintf(out,"\t%d, %ld, %ld, %d, %d,\n", - c->maptype,c->q_min,c->q_delta,c->q_quant,c->q_sequencep); - if(c->quantlist) - fprintf(out,"\t_vq_quantlist_%s,\n",name); - else - fprintf(out,"\tNULL,\n"); - - if(n) - fprintf(out,"\t&_vq_auxn_%s,\n",name); - else - fprintf(out,"\tNULL,\n"); - if(t) - fprintf(out,"\t&_vq_auxt_%s,\n",name); - else - fprintf(out,"\tNULL,\n"); - if(p) - fprintf(out,"\t&_vq_auxp_%s,\n",name); - else - fprintf(out,"\tNULL,\n"); - - fprintf(out,"\t0\n};\n\n"); - - fprintf(out,"\n#endif\n"); -} diff --git a/vq/bookutil.h b/vq/bookutil.h deleted file mode 100644 index 957df1d9..00000000 --- a/vq/bookutil.h +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: utility functions for loading .vqh and .vqd files - last mod: $Id: bookutil.h,v 1.12 2001/12/20 01:00:39 segher Exp $ - - ********************************************************************/ - -#ifndef _V_BOOKUTIL_H_ -#define _V_BOOKUTIL_H_ - -#include <stdio.h> -#include <sys/time.h> - -#include "codebook.h" - -extern char *get_line(FILE *in); -extern char *setup_line(FILE *in); -extern int get_line_value(FILE *in,float *value); -extern int get_next_value(FILE *in,float *value); -extern int get_next_ivalue(FILE *in,long *ivalue); -extern void reset_next_value(void); -extern int get_vector(codebook *b,FILE *in,int start,int num,float *a); -extern char *find_seek_to(FILE *in,char *s); - -extern codebook *codebook_load(char *filename); -extern void write_codebook(FILE *out,char *name,const static_codebook *c); - -extern void spinnit(char *s,int n); -extern void build_tree_from_lengths(int vals, long *hist, long *lengths); -extern void build_tree_from_lengths0(int vals, long *hist, long *lengths); - -#endif - diff --git a/vq/build.c b/vq/build.c deleted file mode 100644 index 0ff1f790..00000000 --- a/vq/build.c +++ /dev/null @@ -1,195 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: utility main for building codebooks from training sets - last mod: $Id: build.c,v 1.21 2001/12/20 01:00:39 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <errno.h> -#include "bookutil.h" - -#include "vqgen.h" -#include "vqsplit.h" - -static char *linebuffer=NULL; -static int lbufsize=0; -static char *rline(FILE *in,FILE *out){ - long sofar=0; - if(feof(in))return NULL; - - while(1){ - int gotline=0; - - while(!gotline){ - if(sofar>=lbufsize){ - if(!lbufsize){ - lbufsize=1024; - linebuffer=_ogg_malloc(lbufsize); - }else{ - lbufsize*=2; - linebuffer=_ogg_realloc(linebuffer,lbufsize); - } - } - { - long c=fgetc(in); - switch(c){ - case '\n': - case EOF: - gotline=1; - break; - default: - linebuffer[sofar++]=c; - linebuffer[sofar]='\0'; - break; - } - } - } - - if(linebuffer[0]=='#'){ - sofar=0; - }else{ - return(linebuffer); - } - } -} - -/* command line: - buildvq file -*/ - -int main(int argc,char *argv[]){ - vqgen v; - static_codebook c; - codebook b; - quant_meta q; - - long *quantlist=NULL; - int entries=-1,dim=-1,aux=-1; - FILE *out=NULL; - FILE *in=NULL; - char *line,*name; - long i,j,k; - - b.c=&c; - - if(argv[1]==NULL){ - fprintf(stderr,"Need a trained data set on the command line.\n"); - exit(1); - } - - { - char *ptr; - char *filename=strdup(argv[1]); - - in=fopen(filename,"r"); - if(!in){ - fprintf(stderr,"Could not open input file %s\n",filename); - exit(1); - } - - ptr=strrchr(filename,'-'); - if(ptr){ - *ptr='\0'; - name=strdup(filename); - sprintf(ptr,".vqh"); - }else{ - name=strdup(filename); - strcat(filename,".vqh"); - } - - out=fopen(filename,"w"); - if(out==NULL){ - fprintf(stderr,"Unable to open %s for writing\n",filename); - exit(1); - } - } - - /* suck in the trained book */ - - /* read book type, but it doesn't matter */ - line=rline(in,out); - - line=rline(in,out); - if(sscanf(line,"%d %d %d",&entries,&dim,&aux)!=3){ - fprintf(stderr,"Syntax error reading book file\n"); - exit(1); - } - - /* just use it to allocate mem */ - vqgen_init(&v,dim,0,entries,0.f,NULL,NULL,0); - - /* quant */ - line=rline(in,out); - if(sscanf(line,"%ld %ld %d %d",&q.min,&q.delta, - &q.quant,&q.sequencep)!=4){ - fprintf(stderr,"Syntax error reading book file\n"); - exit(1); - } - - /* quantized entries */ - /* save quant data; we don't want to requantize later as our method - is currently imperfect wrt repeated application */ - i=0; - quantlist=_ogg_malloc(sizeof(long)*v.elements*v.entries); - for(j=0;j<entries;j++){ - float a; - for(k=0;k<dim;k++){ - line=rline(in,out); - sscanf(line,"%f",&a); - v.entrylist[i]=a; - quantlist[i++]=rint(a); - } - } - - /* ignore bias */ - for(j=0;j<entries;j++)line=rline(in,out); - free(v.bias); - v.bias=NULL; - - /* training points */ - { - float *b=alloca(sizeof(float)*(dim+aux)); - i=0; - v.entries=0; /* hack to avoid reseeding */ - while(1){ - for(k=0;k<dim+aux;k++){ - line=rline(in,out); - if(!line)break; - sscanf(line,"%f",b+k); - } - if(feof(in))break; - vqgen_addpoint(&v,b,NULL); - } - v.entries=entries; - } - - fclose(in); - vqgen_unquantize(&v,&q); - - /* build the book */ - vqsp_book(&v,&b,quantlist); - c.q_min=q.min; - c.q_delta=q.delta; - c.q_quant=q.quant; - c.q_sequencep=q.sequencep; - - /* save the book in C header form */ - write_codebook(out,name,b.c); - - fclose(out); - exit(0); -} diff --git a/vq/cascade.c b/vq/cascade.c deleted file mode 100644 index 7993f7a1..00000000 --- a/vq/cascade.c +++ /dev/null @@ -1,91 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: function call to do simple data cascading - last mod: $Id: cascade.c,v 1.13 2001/12/20 01:00:39 segher Exp $ - - ********************************************************************/ - -/* this one outputs residue to stdout. */ - -#include <stdlib.h> -#include <unistd.h> -#include <math.h> -#include "bookutil.h" - -/* set up metrics */ - -float count=0.f; - - -void process_preprocess(codebook **bs,char *basename){ -} - -void process_postprocess(codebook **b,char *basename){ - fprintf(stderr,"Done. \n"); -} - -float process_one(codebook *b,float *a,int dim,int step,int addmul, - float base){ - int j; - - if(b->c->q_sequencep){ - float temp; - for(j=0;j<dim;j++){ - temp=a[j*step]; - a[j*step]-=base; - } - base=temp; - } - - vorbis_book_besterror(b,a,step,addmul); - - return base; -} - -void process_vector(codebook **bs,int *addmul,int inter,float *a,int n){ - int i,bi=0; - int booknum=0; - - while(*bs){ - float base=0.f; - codebook *b=*bs; - int dim=b->dim; - - if(inter){ - for(i=0;i<n/dim;i++) - base=process_one(b,a+i,dim,n/dim,addmul[bi],base); - }else{ - for(i=0;i<=n-dim;i+=dim) - base=process_one(b,a+i,dim,1,addmul[bi],base); - } - - bs++; - booknum++; - bi++; - } - - for(i=0;i<n;i++) - fprintf(stdout,"%f, ",a[i]); - fprintf(stdout,"\n"); - - if((long)(count++)%100)spinnit("working.... lines: ",count); -} - -void process_usage(void){ - fprintf(stderr, - "usage: vqcascade [-i] +|*<codebook>.vqh [ +|*<codebook.vqh> ]... \n" - " datafile.vqd [datafile.vqd]...\n\n" - " data can be taken on stdin. residual error data sent to\n" - " stdout.\n\n"); - -} diff --git a/vq/distribution.c b/vq/distribution.c deleted file mode 100644 index c65b36a4..00000000 --- a/vq/distribution.c +++ /dev/null @@ -1,248 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: utility for finding the distribution in a data set - last mod: $Id: distribution.c,v 1.9 2001/12/20 01:00:39 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <errno.h> -#include "bookutil.h" - -/* command line: - distribution file.vqd -*/ - -int ascend(const void *a,const void *b){ - return(**((long **)a)-**((long **)b)); -} - -int main(int argc,char *argv[]){ - FILE *in; - long lines=0; - float min; - float max; - long bins=-1; - int flag=0; - long *countarray; - long total=0; - char *line; - - if(argv[1]==NULL){ - fprintf(stderr,"Usage: distribution {data.vqd [bins]| book.vqh} \n\n"); - exit(1); - } - if(argv[2]!=NULL) - bins=atoi(argv[2])-1; - - in=fopen(argv[1],"r"); - if(!in){ - fprintf(stderr,"Could not open input file %s\n",argv[1]); - exit(1); - } - - if(strrchr(argv[1],'.') && strcmp(strrchr(argv[1],'.'),".vqh")==0){ - /* load/decode a book */ - - codebook *b=codebook_load(argv[1]); - static_codebook *c=(static_codebook *)(b->c); - float delta; - int i; - fclose(in); - - switch(c->maptype){ - case 0: - printf("entropy codebook only; no mappings\n"); - exit(0); - break; - case 1: - bins=_book_maptype1_quantvals(c); - break; - case 2: - bins=c->entries*c->dim; - break; - } - - max=min=_float32_unpack(c->q_min); - delta=_float32_unpack(c->q_delta); - - for(i=0;i<bins;i++){ - float val=c->quantlist[i]*delta+min; - if(val>max)max=val; - } - - printf("Minimum scalar value: %f\n",min); - printf("Maximum scalar value: %f\n",max); - - switch(c->maptype){ - case 1: - { - /* lattice codebook. dump it. */ - int j,k; - long maxcount=0; - long **sort=calloc(bins,sizeof(long *)); - long base=c->lengthlist[0]; - countarray=calloc(bins,sizeof(long)); - - for(i=0;i<bins;i++)sort[i]=c->quantlist+i; - qsort(sort,bins,sizeof(long *),ascend); - - for(i=0;i<b->entries;i++) - if(c->lengthlist[i]>base)base=c->lengthlist[i]; - - /* dump a full, correlated count */ - for(j=0;j<b->entries;j++){ - if(c->lengthlist[j]){ - int indexdiv=1; - printf("%4d: ",j); - for(k=0;k<b->dim;k++){ - int index= (j/indexdiv)%bins; - printf("%+3.1f,", c->quantlist[index]*_float32_unpack(c->q_delta)+ - _float32_unpack(c->q_min)); - indexdiv*=bins; - } - printf("\t|"); - for(k=0;k<base-c->lengthlist[j];k++)printf("*"); - printf("\n"); - } - } - - /* do a rough count */ - for(j=0;j<b->entries;j++){ - int indexdiv=1; - for(k=0;k<b->dim;k++){ - if(c->lengthlist[j]){ - int index= (j/indexdiv)%bins; - countarray[index]+=(1<<(base-c->lengthlist[j])); - indexdiv*=bins; - } - } - } - - /* dump the count */ - - { - long maxcount=0,i,j; - for(i=0;i<bins;i++) - if(countarray[i]>maxcount)maxcount=countarray[i]; - - for(i=0;i<bins;i++){ - int ptr=sort[i]-c->quantlist; - int stars=rint(50./maxcount*countarray[ptr]); - printf("%+08f (%8ld) |",c->quantlist[ptr]*delta+min,countarray[ptr]); - for(j=0;j<stars;j++)printf("*"); - printf("\n"); - } - } - } - break; - case 2: - { - /* trained, full mapping codebook. */ - printf("Can't do probability dump of a trained [type 2] codebook (yet)\n"); - } - break; - } - }else{ - /* load/count a data file */ - - /* do it the simple way; two pass. */ - line=setup_line(in); - while(line){ - float code; - char buf[80]; - lines++; - - sprintf(buf,"getting min/max (%.2f::%.2f). lines...",min,max); - if(!(lines&0xff))spinnit(buf,lines); - - while(!flag && sscanf(line,"%f",&code)==1){ - line=strchr(line,','); - min=max=code; - flag=1; - } - - while(line && sscanf(line,"%f",&code)==1){ - line=strchr(line,','); - if(line)line++; - if(code<min)min=code; - if(code>max)max=code; - } - - line=setup_line(in); - } - - if(bins<1){ - if((int)(max-min)==min-max){ - bins=max-min; - }else{ - bins=25; - } - } - - printf("\r \r"); - printf("Minimum scalar value: %f\n",min); - printf("Maximum scalar value: %f\n",max); - - if(argv[2]){ - - printf("\n counting hits into %ld bins...\n",bins+1); - countarray=calloc(bins+1,sizeof(long)); - - rewind(in); - line=setup_line(in); - while(line){ - float code; - lines--; - if(!(lines&0xff))spinnit("counting distribution. lines so far...",lines); - - while(line && sscanf(line,"%f",&code)==1){ - line=strchr(line,','); - if(line)line++; - - code-=min; - code/=(max-min); - code*=bins; - countarray[(int)rint(code)]++; - total++; - } - - line=setup_line(in); - } - - /* make a pretty graph */ - { - long maxcount=0,i,j; - for(i=0;i<bins+1;i++) - if(countarray[i]>maxcount)maxcount=countarray[i]; - - printf("\r \r"); - printf("Total scalars: %ld\n",total); - for(i=0;i<bins+1;i++){ - int stars=rint(50./maxcount*countarray[i]); - printf("%08f (%8ld) |",(max-min)/bins*i+min,countarray[i]); - for(j=0;j<stars;j++)printf("*"); - printf("\n"); - } - } - } - - fclose(in); - - } - printf("\nDone.\n"); - exit(0); -} diff --git a/vq/genericdata.c b/vq/genericdata.c deleted file mode 100644 index 01b372ee..00000000 --- a/vq/genericdata.c +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: generic euclidian distance metric for VQ codebooks - last mod: $Id: genericdata.c,v 1.11 2001/12/20 01:00:39 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <math.h> -#include <stdio.h> -#include "vqgen.h" -#include "vqext.h" - -char *vqext_booktype="GENERICdata"; -int vqext_aux=0; -quant_meta q={0,0,0,0}; /* non sequence data; each scalar - independent */ - -void vqext_quantize(vqgen *v,quant_meta *q){ - vqgen_quantize(v,q); -} - -float *vqext_weight(vqgen *v,float *p){ - /*noop*/ - return(p); -} - - /* candidate,actual */ -float vqext_metric(vqgen *v,float *e, float *p){ - int i; - float acc=0.f; - for(i=0;i<v->elements;i++){ - float val=p[i]-e[i]; - acc+=val*val; - } - return sqrt(acc/v->elements); -} - -void vqext_addpoint_adj(vqgen *v,float *b,int start,int dim,int cols,int num){ - vqgen_addpoint(v,b+start,NULL); -} - -void vqext_preprocess(vqgen *v){ - /* noop */ -} - - - - - - diff --git a/vq/huffbuild.c b/vq/huffbuild.c deleted file mode 100644 index ad1c295e..00000000 --- a/vq/huffbuild.c +++ /dev/null @@ -1,222 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: hufftree builder - last mod: $Id: huffbuild.c,v 1.12 2001/12/20 01:00:39 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <stdio.h> -#include "bookutil.h" - -static int nsofar=0; -static int getval(FILE *in,int begin,int n,int group,int max){ - float v; - int i; - long val=0; - - if(nsofar>=n || get_line_value(in,&v)){ - reset_next_value(); - nsofar=0; - if(get_next_value(in,&v)) - return(-1); - for(i=1;i<=begin;i++) - get_line_value(in,&v); - } - - val=(int)v; - nsofar++; - - for(i=1;i<group;i++,nsofar++) - if(nsofar>=n || get_line_value(in,&v)) - return(getval(in,begin,n,group,max)); - else - val = val*max+(int)v; - return(val); -} - -static void usage(){ - fprintf(stderr, - "usage:\n" - "huffbuild <input>.vqd <begin,n,group>|<lorange-hirange> [noguard]\n" - " where begin,n,group is first scalar, \n" - " number of scalars of each in line,\n" - " number of scalars in a group\n" - "eg: huffbuild reslongaux.vqd 0,1024,4\n" - "produces reslongaux.vqh\n\n"); - exit(1); -} - -int main(int argc, char *argv[]){ - char *base; - char *infile; - int i,j,k,begin,n,subn,guard=1; - FILE *file; - int maxval=0; - int loval=0; - - if(argc<3)usage(); - if(argc==4)guard=0; - - infile=strdup(argv[1]); - base=strdup(infile); - if(strrchr(base,'.')) - strrchr(base,'.')[0]='\0'; - - { - char *pos=strchr(argv[2],','); - char *dpos=strchr(argv[2],'-'); - if(dpos){ - loval=atoi(argv[2]); - maxval=atoi(dpos+1); - subn=1; - begin=0; - }else{ - begin=atoi(argv[2]); - if(!pos) - usage(); - else - n=atoi(pos+1); - pos=strchr(pos+1,','); - if(!pos) - usage(); - else - subn=atoi(pos+1); - if(n/subn*subn != n){ - fprintf(stderr,"n must be divisible by group\n"); - exit(1); - } - } - } - - /* scan the file for maximum value */ - file=fopen(infile,"r"); - if(!file){ - fprintf(stderr,"Could not open file %s\n",infile); - if(!maxval) - exit(1); - else - fprintf(stderr," making untrained books.\n"); - - } - - if(!maxval){ - i=0; - while(1){ - long v; - if(get_next_ivalue(file,&v))break; - if(v>maxval)maxval=v; - - if(!(i++&0xff))spinnit("loading... ",i); - } - rewind(file); - maxval++; - } - - { - long vals=pow(maxval,subn); - long *hist=_ogg_malloc(vals*sizeof(long)); - long *lengths=_ogg_malloc(vals*sizeof(long)); - - for(j=loval;j<vals;j++)hist[j]=guard; - - if(file){ - reset_next_value(); - i/=subn; - while(!feof(file)){ - long val=getval(file,begin,n,subn,maxval); - if(val==-1 || val>=vals)break; - hist[val]++; - if(!(i--&0xff))spinnit("loading... ",i*subn); - } - fclose(file); - } - - /* we have the probabilities, build the tree */ - fprintf(stderr,"Building tree for %ld entries\n",vals); - build_tree_from_lengths0(vals,hist,lengths); - - /* save the book */ - { - char *buffer=alloca(strlen(base)+5); - strcpy(buffer,base); - strcat(buffer,".vqh"); - file=fopen(buffer,"w"); - if(!file){ - fprintf(stderr,"Could not open file %s\n",buffer); - exit(1); - } - } - - fprintf(file, - "/********************************************************************\n" - " * *\n" - " * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *\n" - " * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *\n" - " * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *\n" - " * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *\n" - " * *\n" - " * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *\n" - " * by the XIPHOPHORUS Company http://www.xiph.org/ *\n" - " * *\n" - " ********************************************************************\n" - "\n" - " function: static codebook autogenerated by huff/huffbuld\n" - "\n" - " ********************************************************************/\n\n"); - - fprintf(file,"#ifndef _V_%s_VQH_\n#define _V_%s_VQH_\n",base,base); - fprintf(file,"#include \"codebook.h\"\n\n"); - - /* first, the static vectors, then the book structure to tie it together. */ - /* lengthlist */ - fprintf(file,"static long _huff_lengthlist_%s[] = {\n",base); - for(j=0;j<vals;){ - fprintf(file,"\t"); - for(k=0;k<16 && j<vals;k++,j++) - fprintf(file,"%2ld,",lengths[j]); - fprintf(file,"\n"); - } - fprintf(file,"};\n\n"); - - /* the toplevel book */ - fprintf(file,"static static_codebook _huff_book_%s = {\n",base); - fprintf(file,"\t%d, %ld,\n",subn,vals); - fprintf(file,"\t_huff_lengthlist_%s,\n",base); - fprintf(file,"\t0, 0, 0, 0, 0,\n"); - fprintf(file,"\tNULL,\n"); - - fprintf(file,"\tNULL,\n"); - fprintf(file,"\tNULL,\n"); - fprintf(file,"\tNULL,\n"); - fprintf(file,"\t0\n};\n\n"); - - fprintf(file,"\n#endif\n"); - fclose(file); - fprintf(stderr,"Done. \n\n"); - } - exit(0); -} - - - - - - - - - - - diff --git a/vq/latticebuild.c b/vq/latticebuild.c deleted file mode 100644 index 5efbf119..00000000 --- a/vq/latticebuild.c +++ /dev/null @@ -1,177 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: utility main for building codebooks from lattice descriptions - last mod: $Id: latticebuild.c,v 1.12 2001/12/20 01:00:39 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <errno.h> -#include "bookutil.h" - -/* The purpose of this util is just to finish packaging the - description into a static codebook. It used to count hits for a - histogram, but I've divorced that out to add some flexibility (it - currently generates an equal probability codebook) - - command line: - latticebuild description.vql - - the lattice description file contains two lines: - - <n> <dim> <multiplicitavep> <sequentialp> - <value_0> <value_1> <value_2> ... <value_n-1> - - a threshmap (or pigeonmap) struct is generated by latticehint; - there are fun tricks one can do with the threshmap and cascades, - but the utils don't know them... - - entropy encoding is done by feeding an entry list collected from a - training set and feeding it to latticetune along with the book. - - latticebuild produces a codebook on stdout */ - -static int ilog(unsigned int v){ - int ret=0; - while(v){ - ret++; - v>>=1; - } - return(ret); -} - -int main(int argc,char *argv[]){ - codebook b; - static_codebook c; - double *quantlist; - long *hits; - - int entries=-1,dim=-1,quantvals=-1,addmul=-1,sequencep=0; - FILE *in=NULL; - char *line,*name; - long i,j; - - memset(&b,0,sizeof(b)); - memset(&c,0,sizeof(c)); - - if(argv[1]==NULL){ - fprintf(stderr,"Need a lattice description file on the command line.\n"); - exit(1); - } - - { - char *ptr; - char *filename=_ogg_calloc(strlen(argv[1])+4,1); - - strcpy(filename,argv[1]); - in=fopen(filename,"r"); - if(!in){ - fprintf(stderr,"Could not open input file %s\n",filename); - exit(1); - } - - ptr=strrchr(filename,'.'); - if(ptr){ - *ptr='\0'; - name=strdup(filename); - }else{ - name=strdup(filename); - } - - } - - /* read the description */ - line=get_line(in); - if(sscanf(line,"%d %d %d %d",&quantvals,&dim,&addmul,&sequencep)!=4){ - if(sscanf(line,"%d %d %d",&quantvals,&dim,&addmul)!=3){ - fprintf(stderr,"Syntax error reading description file (line 1)\n"); - exit(1); - } - } - entries=pow(quantvals,dim); - c.dim=dim; - c.entries=entries; - c.lengthlist=_ogg_malloc(entries*sizeof(long)); - c.maptype=1; - c.q_sequencep=sequencep; - c.quantlist=_ogg_calloc(quantvals,sizeof(long)); - - quantlist=_ogg_malloc(sizeof(double)*c.dim*c.entries); - hits=_ogg_malloc(c.entries*sizeof(long)); - for(j=0;j<entries;j++)hits[j]=1; - for(j=0;j<entries;j++)c.lengthlist[j]=1; - - reset_next_value(); - line=setup_line(in); - for(j=0;j<quantvals;j++){ - char *temp; - if(!line || sscanf(line,"%lf",quantlist+j)!=1){ - fprintf(stderr,"Ran out of data on line 2 of description file\n"); - exit(1); - } - temp=strchr(line,','); - if(!temp)temp=strchr(line,' '); - if(temp)temp++; - line=temp; - } - - /* gen a real quant list from the more easily human-grokked input */ - { - double min=quantlist[0]; - double mindel=-1; - int fac=1; - for(j=1;j<quantvals;j++)if(quantlist[j]<min)min=quantlist[j]; - for(j=0;j<quantvals;j++) - for(i=j+1;i<quantvals;i++) - if(mindel==-1 || fabs(quantlist[j]-quantlist[i])<mindel) - mindel=fabs(quantlist[j]-quantlist[i]); - - j=0; - while(j<quantvals){ - for(j=0;j<quantvals;j++){ - double test=fac*(quantlist[j]-min)/mindel; - if( fabs(rint(test)-test)>.00001f) break; - } - if(fac>100)break; - if(j<quantvals)fac++; - } - - mindel/=fac; - fprintf(stderr,"min=%g mindel=%g\n",min,mindel); - - c.q_min=_float32_pack(min); - c.q_delta=_float32_pack(mindel); - c.q_quant=0; - - min=_float32_unpack(c.q_min); - mindel=_float32_unpack(c.q_delta); - for(j=0;j<quantvals;j++){ - c.quantlist[j]=rint((quantlist[j]-min)/mindel); - if(ilog(c.quantlist[j])>c.q_quant)c.q_quant=ilog(c.quantlist[j]); - } - } - - /* build the [default] codeword lengths */ - memset(c.lengthlist,0,sizeof(long)*entries); - for(i=0;i<entries;i++)hits[i]=1; - build_tree_from_lengths(entries,hits,c.lengthlist); - - /* save the book in C header form */ - write_codebook(stdout,name,&c); - fprintf(stderr,"\r " - "\nDone.\n"); - exit(0); -} diff --git a/vq/latticehint.c b/vq/latticehint.c deleted file mode 100644 index d6ef8fe0..00000000 --- a/vq/latticehint.c +++ /dev/null @@ -1,430 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: utility main for building thresh/pigeonhole encode hints - last mod: $Id: latticehint.c,v 1.12 2001/12/20 01:00:39 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <errno.h> -#include "../lib/scales.h" -#include "bookutil.h" -#include "vqgen.h" -#include "vqsplit.h" - -/* The purpose of this util is to build encode hints for lattice - codebooks so that brute forcing each codebook entry isn't needed. - Threshhold hints are for books in which each scalar in the vector - is independant (eg, residue) and pigeonhole lookups provide a - minimum error fit for words where the scalars are interdependant - (each affecting the fit of the next in sequence) as in an LSP - sequential book (or can be used along with a sparse threshhold map, - like a splitting tree that need not be trained) - - If the input book is non-sequential, a threshhold hint is built. - If the input book is sequential, a pigeonholing hist is built. - If the book is sparse, a pigeonholing hint is built, possibly in addition - to the threshhold hint - - command line: - latticehint book.vqh [threshlist] - - latticehint produces book.vqh on stdout */ - -static int longsort(const void *a, const void *b){ - return(**((long **)a)-**((long **)b)); -} - -static int addtosearch(int entry,long **tempstack,long *tempcount,int add){ - long *ptr=tempstack[entry]; - long i=tempcount[entry]; - - if(ptr){ - while(i--) - if(*ptr++==add)return(0); - tempstack[entry]=_ogg_realloc(tempstack[entry], - (tempcount[entry]+1)*sizeof(long)); - }else{ - tempstack[entry]=_ogg_malloc(sizeof(long)); - } - - tempstack[entry][tempcount[entry]++]=add; - return(1); -} - -static void setvals(int dim,encode_aux_pigeonhole *p, - long *temptrack,float *tempmin,float *tempmax, - int seqp){ - int i; - float last=0.f; - for(i=0;i<dim;i++){ - tempmin[i]=(temptrack[i])*p->del+p->min+last; - tempmax[i]=tempmin[i]+p->del; - if(seqp)last=tempmin[i]; - } -} - -/* note that things are currently set up such that input fits that - quantize outside the pigeonmap are dropped and brute-forced. So we - can ignore the <0 and >=n boundary cases in min/max error */ - -static float minerror(int dim,float *a,encode_aux_pigeonhole *p, - long *temptrack,float *tempmin,float *tempmax){ - int i; - float err=0.f; - for(i=0;i<dim;i++){ - float eval=0.f; - if(a[i]<tempmin[i]){ - eval=tempmin[i]-a[i]; - }else if(a[i]>tempmax[i]){ - eval=a[i]-tempmax[i]; - } - err+=eval*eval; - } - return(err); -} - -static float maxerror(int dim,float *a,encode_aux_pigeonhole *p, - long *temptrack,float *tempmin,float *tempmax){ - int i; - float err=0.f,eval; - for(i=0;i<dim;i++){ - if(a[i]<tempmin[i]){ - eval=tempmax[i]-a[i]; - }else if(a[i]>tempmax[i]){ - eval=a[i]-tempmin[i]; - }else{ - float t1=a[i]-tempmin[i]; - eval=tempmax[i]-a[i]; - if(t1>eval)eval=t1; - } - err+=eval*eval; - } - return(err); -} - -int main(int argc,char *argv[]){ - codebook *b; - static_codebook *c; - int entries=-1,dim=-1; - float min,del; - char *name; - long i,j; - float *suggestions; - int suggcount=0; - - if(argv[1]==NULL){ - fprintf(stderr,"Need a lattice book on the command line.\n"); - exit(1); - } - - { - char *ptr; - char *filename=strdup(argv[1]); - - b=codebook_load(filename); - c=(static_codebook *)(b->c); - - ptr=strrchr(filename,'.'); - if(ptr){ - *ptr='\0'; - name=strdup(filename); - }else{ - name=strdup(filename); - } - } - - if(c->maptype!=1){ - fprintf(stderr,"Provided book is not a latticebook.\n"); - exit(1); - } - - entries=b->entries; - dim=b->dim; - min=_float32_unpack(c->q_min); - del=_float32_unpack(c->q_delta); - - /* Do we want to gen a threshold hint? */ - if(c->q_sequencep==0){ - /* yes. Discard any preexisting threshhold hint */ - long quantvals=_book_maptype1_quantvals(c); - long **quantsort=alloca(quantvals*sizeof(long *)); - encode_aux_threshmatch *t=_ogg_calloc(1,sizeof(encode_aux_threshmatch)); - c->thresh_tree=t; - - fprintf(stderr,"Adding threshold hint to %s...\n",name); - - /* partial/complete suggestions */ - if(argv[2]){ - char *ptr=strdup(argv[2]); - suggestions=alloca(sizeof(float)*quantvals); - - for(suggcount=0;ptr && suggcount<quantvals;suggcount++){ - char *ptr2=strchr(ptr,','); - if(ptr2)*ptr2++='\0'; - suggestions[suggcount]=atof(ptr); - ptr=ptr2; - } - } - - /* simplest possible threshold hint only */ - t->quantthresh=_ogg_calloc(quantvals-1,sizeof(float)); - t->quantmap=_ogg_calloc(quantvals,sizeof(int)); - t->threshvals=quantvals; - t->quantvals=quantvals; - - /* the quantvals may not be in order; sort em first */ - for(i=0;i<quantvals;i++)quantsort[i]=c->quantlist+i; - qsort(quantsort,quantvals,sizeof(long *),longsort); - - /* ok, gen the map and thresholds */ - for(i=0;i<quantvals;i++)t->quantmap[i]=quantsort[i]-c->quantlist; - for(i=0;i<quantvals-1;i++){ - float v1=*(quantsort[i])*del+min; - float v2=*(quantsort[i+1])*del+min; - - for(j=0;j<suggcount;j++) - if(v1<suggestions[j] && suggestions[j]<v2){ - t->quantthresh[i]=suggestions[j]; - break; - } - - if(j==suggcount){ - t->quantthresh[i]=(v1+v2)*.5; - } - } - } - - /* Do we want to gen a pigeonhole hint? */ -#if 0 - for(i=0;i<entries;i++)if(c->lengthlist[i]==0)break; - if(c->q_sequencep || i<entries){ - long **tempstack; - long *tempcount; - long *temptrack; - float *tempmin; - float *tempmax; - long totalstack=0; - long pigeons; - long subpigeons; - long quantvals=_book_maptype1_quantvals(c); - int changep=1,factor; - - encode_aux_pigeonhole *p=_ogg_calloc(1,sizeof(encode_aux_pigeonhole)); - c->pigeon_tree=p; - - fprintf(stderr,"Adding pigeonhole hint to %s...\n",name); - - /* the idea is that we quantize uniformly, even in a nonuniform - lattice, so that quantization of one scalar has a predictable - result on the next sequential scalar in a greedy matching - algorithm. We generate a lookup based on the quantization of - the vector (pigeonmap groups quantized entries together) and - list the entries that could possible be the best fit for any - given member of that pigeonhole. The encode process then has a - much smaller list to brute force */ - - /* find our pigeonhole-specific quantization values, fill in the - quant value->pigeonhole map */ - factor=3; - p->del=del; - p->min=min; - p->quantvals=quantvals; - { - int max=0; - for(i=0;i<quantvals;i++)if(max<c->quantlist[i])max=c->quantlist[i]; - p->mapentries=max; - } - p->pigeonmap=_ogg_malloc(p->mapentries*sizeof(long)); - p->quantvals=(quantvals+factor-1)/factor; - - /* pigeonhole roughly on the boundaries of the quantvals; the - exact pigeonhole grouping is an optimization issue, not a - correctness issue */ - for(i=0;i<p->mapentries;i++){ - float thisval=del*i+min; /* middle of the quant zone */ - int quant=0; - float err=fabs(c->quantlist[0]*del+min-thisval); - for(j=1;j<quantvals;j++){ - float thiserr=fabs(c->quantlist[j]*del+min-thisval); - if(thiserr<err){ - quant=j/factor; - err=thiserr; - } - } - p->pigeonmap[i]=quant; - } - - /* pigeonmap complete. Now do the grungy business of finding the - entries that could possibly be the best fit for a value appearing - in the pigeonhole. The trick that allows the below to work is the - uniform quantization; even though the scalars may be 'sequential' - (each a delta from the last), the uniform quantization means that - the error variance is *not* dependant. Given a pigeonhole and an - entry, we can find the minimum and maximum possible errors - (relative to the entry) for any point that could appear in the - pigeonhole */ - - /* must iterate over both pigeonholes and entries */ - /* temporarily (in order to avoid thinking hard), we grow each - pigeonhole seperately, the build a stack of 'em later */ - pigeons=1; - subpigeons=1; - for(i=0;i<dim;i++)subpigeons*=p->mapentries; - for(i=0;i<dim;i++)pigeons*=p->quantvals; - temptrack=_ogg_calloc(dim,sizeof(long)); - tempmin=_ogg_calloc(dim,sizeof(float)); - tempmax=_ogg_calloc(dim,sizeof(float)); - tempstack=_ogg_calloc(pigeons,sizeof(long *)); - tempcount=_ogg_calloc(pigeons,sizeof(long)); - - while(1){ - float errorpost=-1; - char buffer[80]; - - /* map our current pigeonhole to a 'big pigeonhole' so we know - what list we're after */ - int entry=0; - for(i=dim-1;i>=0;i--)entry=entry*p->quantvals+p->pigeonmap[temptrack[i]]; - setvals(dim,p,temptrack,tempmin,tempmax,c->q_sequencep); - sprintf(buffer,"Building pigeonhole search list [%ld]...",totalstack); - - - /* Search all entries to find the one with the minimum possible - maximum error. Record that error */ - for(i=0;i<entries;i++){ - if(c->lengthlist[i]>0){ - float this=maxerror(dim,b->valuelist+i*dim,p, - temptrack,tempmin,tempmax); - if(errorpost==-1 || this<errorpost)errorpost=this; - spinnit(buffer,subpigeons); - } - } - - /* Our search list will contain all entries with a minimum - possible error <= our errorpost */ - for(i=0;i<entries;i++) - if(c->lengthlist[i]>0){ - spinnit(buffer,subpigeons); - if(minerror(dim,b->valuelist+i*dim,p, - temptrack,tempmin,tempmax)<errorpost) - totalstack+=addtosearch(entry,tempstack,tempcount,i); - } - - for(i=0;i<dim;i++){ - temptrack[i]++; - if(temptrack[i]<p->mapentries)break; - temptrack[i]=0; - } - if(i==dim)break; - subpigeons--; - } - - fprintf(stderr,"\r " - "\rTotal search list size (all entries): %ld\n",totalstack); - - /* pare the index of lists for improbable quantizations (where - improbable is determined by c->lengthlist; we assume that - pigeonholing is in sync with the codeword cells, which it is */ - /*for(i=0;i<entries;i++){ - float probability= 1.f/(1<<c->lengthlist[i]); - if(c->lengthlist[i]==0 || probability*entries<cutoff){ - totalstack-=tempcount[i]; - tempcount[i]=0; - } - }*/ - - /* pare the list of shortlists; merge contained and similar lists - together */ - p->fitmap=_ogg_malloc(pigeons*sizeof(long)); - for(i=0;i<pigeons;i++)p->fitmap[i]=-1; - while(changep){ - char buffer[80]; - changep=0; - - for(i=0;i<pigeons;i++){ - if(p->fitmap[i]<0 && tempcount[i]){ - for(j=i+1;j<pigeons;j++){ - if(p->fitmap[j]<0 && tempcount[j]){ - /* is one list a superset, or are they sufficiently similar? */ - int amiss=0,bmiss=0,ii,jj; - for(ii=0;ii<tempcount[i];ii++){ - for(jj=0;jj<tempcount[j];jj++) - if(tempstack[i][ii]==tempstack[j][jj])break; - if(jj==tempcount[j])amiss++; - } - for(jj=0;jj<tempcount[j];jj++){ - for(ii=0;ii<tempcount[i];ii++) - if(tempstack[i][ii]==tempstack[j][jj])break; - if(ii==tempcount[i])bmiss++; - } - if(amiss==0 || - bmiss==0 || - (amiss*2<tempcount[i] && bmiss*2<tempcount[j] && - tempcount[i]+bmiss<entries/30)){ - - /*superset/similar Add all of one to the other. */ - for(jj=0;jj<tempcount[j];jj++) - totalstack+=addtosearch(i,tempstack,tempcount, - tempstack[j][jj]); - totalstack-=tempcount[j]; - p->fitmap[j]=i; - changep=1; - } - } - } - sprintf(buffer,"Consolidating [%ld total, %s]... ",totalstack, - changep?"reit":"nochange"); - spinnit(buffer,pigeons-i); - } - } - } - - /* repack the temp stack in final form */ - fprintf(stderr,"\r " - "\rFinal total list size: %ld\n",totalstack); - - - p->fittotal=totalstack; - p->fitlist=_ogg_malloc((totalstack+1)*sizeof(long)); - p->fitlength=_ogg_malloc(pigeons*sizeof(long)); - { - long usage=0; - for(i=0;i<pigeons;i++){ - if(p->fitmap[i]==-1){ - if(tempcount[i]) - memcpy(p->fitlist+usage,tempstack[i],tempcount[i]*sizeof(long)); - p->fitmap[i]=usage; - p->fitlength[i]=tempcount[i]; - usage+=tempcount[i]; - if(usage>totalstack){ - fprintf(stderr,"Internal error; usage>totalstack\n"); - exit(1); - } - }else{ - p->fitlength[i]=p->fitlength[p->fitmap[i]]; - p->fitmap[i]=p->fitmap[p->fitmap[i]]; - } - } - } - } -#endif - - write_codebook(stdout,name,c); - fprintf(stderr,"\r " - "\nDone.\n"); - exit(0); -} diff --git a/vq/latticepare.c b/vq/latticepare.c deleted file mode 100644 index 222b7e05..00000000 --- a/vq/latticepare.c +++ /dev/null @@ -1,595 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: utility for paring low hit count cells from lattice codebook - last mod: $Id: latticepare.c,v 1.11 2001/12/20 01:00:39 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <errno.h> -#include "../lib/scales.h" -#include "bookutil.h" -#include "vqgen.h" -#include "vqsplit.h" -#include "../lib/os.h" - -/* Lattice codebooks have two strengths: important fetaures that are - poorly modelled by global error minimization training (eg, strong - peaks) are not neglected 2) compact quantized representation. - - A fully populated lattice codebook, however, swings point 1 too far - in the opposite direction; rare features need not be modelled quite - so religiously and as such, we waste bits unless we eliminate the - least common cells. The codebook rep supports unused cells, so we - need to tag such cells and build an auxiliary (non-thresh) search - mechanism to find the proper match quickly */ - -/* two basic steps; first is pare the cell for which dispersal creates - the least additional error. This will naturally choose - low-population cells and cells that have not taken on points from - neighboring paring (but does not result in the lattice collapsing - inward and leaving low population ares totally unmodelled). After - paring has removed the desired number of cells, we need to build an - auxiliary search for each culled point */ - -/* Although lattice books (due to threshhold-based matching) do not - actually use error to make cell selections (in fact, it need not - bear any relation), the 'secondbest' entry finder here is in fact - error/distance based, so latticepare is only useful on such books */ - -/* command line: - latticepare latticebook.vqh input_data.vqd <target_cells> - - produces a new output book on stdout -*/ - -static float _dist(int el,float *a, float *b){ - int i; - float acc=0.f; - for(i=0;i<el;i++){ - float val=(a[i]-b[i]); - acc+=val*val; - } - return(acc); -} - -static float *pointlist; -static long points=0; - -void add_vector(codebook *b,float *vec,long n){ - int dim=b->dim,i,j; - int step=n/dim; - for(i=0;i<step;i++){ - for(j=i;j<n;j+=step){ - pointlist[points++]=vec[j]; - } - } -} - -static int bestm(codebook *b,float *vec){ - encode_aux_threshmatch *tt=b->c->thresh_tree; - int dim=b->dim; - int i,k,o; - int best=0; - - /* what would be the closest match if the codebook was fully - populated? */ - - for(k=0,o=dim-1;k<dim;k++,o--){ - int i; - for(i=0;i<tt->threshvals-1;i++) - if(vec[o]<tt->quantthresh[i])break; - best=(best*tt->quantvals)+tt->quantmap[i]; - } - return(best); -} - -static int closest(codebook *b,float *vec,int current){ - encode_aux_threshmatch *tt=b->c->thresh_tree; - int dim=b->dim; - int i,k,o; - - float bestmetric=0; - int bestentry=-1; - int best=bestm(b,vec); - - if(current<0 && b->c->lengthlist[best]>0)return best; - - for(i=0;i<b->entries;i++){ - if(b->c->lengthlist[i]>0 && i!=best && i!=current){ - float thismetric=_dist(dim, vec, b->valuelist+i*dim); - if(bestentry==-1 || thismetric<bestmetric){ - bestentry=i; - bestmetric=thismetric; - } - } - } - - return(bestentry); -} - -static float _heuristic(codebook *b,float *ppt,int secondbest){ - float *secondcell=b->valuelist+secondbest*b->dim; - int best=bestm(b,ppt); - float *firstcell=b->valuelist+best*b->dim; - float error=_dist(b->dim,firstcell,secondcell); - float *zero=alloca(b->dim*sizeof(float)); - float fromzero; - - memset(zero,0,b->dim*sizeof(float)); - fromzero=sqrt(_dist(b->dim,firstcell,zero)); - - return(error/fromzero); -} - -static int longsort(const void *a, const void *b){ - return **(long **)b-**(long **)a; -} - -void usage(void){ - fprintf(stderr,"Ogg/Vorbis lattice codebook paring utility\n\n" - "usage: latticepare book.vqh data.vqd <target_cells> <protected_cells> base\n" - "where <target_cells> is the desired number of final cells (or -1\n" - " for no change)\n" - " <protected_cells> is the number of highest-hit count cells\n" - " to protect from dispersal\n" - " base is the base name (not including .vqh) of the new\n" - " book\n\n"); - exit(1); -} - -int main(int argc,char *argv[]){ - char *basename; - codebook *b=NULL; - int entries=0; - int dim=0; - long i,j,target=-1,protect=-1; - FILE *out=NULL; - - int argnum=0; - - argv++; - if(*argv==NULL){ - usage(); - exit(1); - } - - while(*argv){ - if(*argv[0]=='-'){ - - argv++; - - }else{ - switch (argnum++){ - case 0:case 1: - { - /* yes, this is evil. However, it's very convenient to parse file - extentions */ - - /* input file. What kind? */ - char *dot; - char *ext=NULL; - char *name=strdup(*argv++); - dot=strrchr(name,'.'); - if(dot) - ext=dot+1; - else{ - ext=""; - - } - - - /* codebook */ - if(!strcmp(ext,"vqh")){ - - basename=strrchr(name,'/'); - if(basename) - basename=strdup(basename)+1; - else - basename=strdup(name); - dot=strrchr(basename,'.'); - if(dot)*dot='\0'; - - b=codebook_load(name); - dim=b->dim; - entries=b->entries; - } - - /* data file; we do actually need to suck it into memory */ - /* we're dealing with just one book, so we can de-interleave */ - if(!strcmp(ext,"vqd") && !points){ - int cols; - long lines=0; - char *line; - float *vec; - FILE *in=fopen(name,"r"); - if(!in){ - fprintf(stderr,"Could not open input file %s\n",name); - exit(1); - } - - reset_next_value(); - line=setup_line(in); - /* count cols before we start reading */ - { - char *temp=line; - while(*temp==' ')temp++; - for(cols=0;*temp;cols++){ - while(*temp>32)temp++; - while(*temp==' ')temp++; - } - } - vec=alloca(cols*sizeof(float)); - /* count, then load, to avoid fragmenting the hell out of - memory */ - while(line){ - lines++; - for(j=0;j<cols;j++) - if(get_line_value(in,vec+j)){ - fprintf(stderr,"Too few columns on line %ld in data file\n",lines); - exit(1); - } - if((lines&0xff)==0)spinnit("counting samples...",lines*cols); - line=setup_line(in); - } - pointlist=_ogg_malloc((cols*lines+entries*dim)*sizeof(float)); - - rewind(in); - line=setup_line(in); - while(line){ - lines--; - for(j=0;j<cols;j++) - if(get_line_value(in,vec+j)){ - fprintf(stderr,"Too few columns on line %ld in data file\n",lines); - exit(1); - } - /* deinterleave, add to heap */ - add_vector(b,vec,cols); - if((lines&0xff)==0)spinnit("loading samples...",lines*cols); - - line=setup_line(in); - } - fclose(in); - } - } - break; - case 2: - target=atol(*argv++); - if(target==0)target=entries; - break; - case 3: - protect=atol(*argv++); - break; - case 4: - { - char *buff=alloca(strlen(*argv)+5); - sprintf(buff,"%s.vqh",*argv); - basename=*argv++; - - out=fopen(buff,"w"); - if(!out){ - fprintf(stderr,"unable ot open %s for output",buff); - exit(1); - } - } - break; - default: - usage(); - } - } - } - if(!entries || !points || !out)usage(); - if(target==-1)usage(); - - /* add guard points */ - for(i=0;i<entries;i++) - for(j=0;j<dim;j++) - pointlist[points++]=b->valuelist[i*dim+j]; - - points/=dim; - - /* set up auxiliary vectors for error tracking */ - { - encode_aux_nearestmatch *nt=NULL; - long pointssofar=0; - long *pointindex; - long indexedpoints=0; - long *entryindex; - long *reventry; - long *membership=_ogg_malloc(points*sizeof(long)); - long *firsthead=_ogg_malloc(entries*sizeof(long)); - long *secondary=_ogg_malloc(points*sizeof(long)); - long *secondhead=_ogg_malloc(entries*sizeof(long)); - - long *cellcount=_ogg_calloc(entries,sizeof(long)); - long *cellcount2=_ogg_calloc(entries,sizeof(long)); - float *cellerror=_ogg_calloc(entries,sizeof(float)); - float *cellerrormax=_ogg_calloc(entries,sizeof(float)); - long cellsleft=entries; - for(i=0;i<points;i++)membership[i]=-1; - for(i=0;i<entries;i++)firsthead[i]=-1; - for(i=0;i<points;i++)secondary[i]=-1; - for(i=0;i<entries;i++)secondhead[i]=-1; - - for(i=0;i<points;i++){ - /* assign vectors to the nearest cell. Also keep track of second - nearest for error statistics */ - float *ppt=pointlist+i*dim; - int firstentry=closest(b,ppt,-1); - int secondentry=closest(b,ppt,firstentry); - float firstmetric=_dist(dim,b->valuelist+dim*firstentry,ppt); - float secondmetric=_dist(dim,b->valuelist+dim*secondentry,ppt); - - if(!(i&0xff))spinnit("initializing... ",points-i); - - membership[i]=firsthead[firstentry]; - firsthead[firstentry]=i; - secondary[i]=secondhead[secondentry]; - secondhead[secondentry]=i; - - if(i<points-entries){ - cellerror[firstentry]+=secondmetric-firstmetric; - cellerrormax[firstentry]=max(cellerrormax[firstentry], - _heuristic(b,ppt,secondentry)); - cellcount[firstentry]++; - cellcount2[secondentry]++; - } - } - - /* which cells are most heavily populated? Protect as many from - dispersal as the user has requested */ - { - long **countindex=_ogg_calloc(entries,sizeof(long *)); - for(i=0;i<entries;i++)countindex[i]=cellcount+i; - qsort(countindex,entries,sizeof(long *),longsort); - for(i=0;i<protect;i++){ - int ptr=countindex[i]-cellcount; - cellerrormax[ptr]=9e50f; - } - } - - { - fprintf(stderr,"\r"); - for(i=0;i<entries;i++){ - /* decompose index */ - int entry=i; - for(j=0;j<dim;j++){ - fprintf(stderr,"%d:",entry%b->c->thresh_tree->quantvals); - entry/=b->c->thresh_tree->quantvals; - } - - fprintf(stderr,":%ld/%ld, ",cellcount[i],cellcount2[i]); - } - fprintf(stderr,"\n"); - } - - /* do the automatic cull request */ - while(cellsleft>target){ - int bestcell=-1; - float besterror=0; - float besterror2=0; - long head=-1; - char spinbuf[80]; - sprintf(spinbuf,"cells left to eliminate: %ld : ",cellsleft-target); - - /* find the cell with lowest removal impact */ - for(i=0;i<entries;i++){ - if(b->c->lengthlist[i]>0){ - if(bestcell==-1 || cellerrormax[i]<=besterror2){ - if(bestcell==-1 || cellerrormax[i]<besterror2 || - besterror>cellerror[i]){ - besterror=cellerror[i]; - besterror2=cellerrormax[i]; - bestcell=i; - } - } - } - } - - fprintf(stderr,"\reliminating cell %d \n" - " dispersal error of %g max/%g total (%ld hits)\n", - bestcell,besterror2,besterror,cellcount[bestcell]); - - /* disperse it. move each point out, adding it (properly) to - the second best */ - b->c->lengthlist[bestcell]=0; - head=firsthead[bestcell]; - firsthead[bestcell]=-1; - while(head!=-1){ - /* head is a point number */ - float *ppt=pointlist+head*dim; - int firstentry=closest(b,ppt,-1); - int secondentry=closest(b,ppt,firstentry); - float firstmetric=_dist(dim,b->valuelist+dim*firstentry,ppt); - float secondmetric=_dist(dim,b->valuelist+dim*secondentry,ppt); - long next=membership[head]; - - if(head<points-entries){ - cellcount[firstentry]++; - cellcount[bestcell]--; - cellerror[firstentry]+=secondmetric-firstmetric; - cellerrormax[firstentry]=max(cellerrormax[firstentry], - _heuristic(b,ppt,secondentry)); - } - - membership[head]=firsthead[firstentry]; - firsthead[firstentry]=head; - head=next; - if(cellcount[bestcell]%128==0) - spinnit(spinbuf,cellcount[bestcell]+cellcount2[bestcell]); - - } - - /* now see that all points that had the dispersed cell as second - choice have second choice reassigned */ - head=secondhead[bestcell]; - secondhead[bestcell]=-1; - while(head!=-1){ - float *ppt=pointlist+head*dim; - /* who are we assigned to now? */ - int firstentry=closest(b,ppt,-1); - /* what is the new second closest match? */ - int secondentry=closest(b,ppt,firstentry); - /* old second closest is the cell being disbanded */ - float oldsecondmetric=_dist(dim,b->valuelist+dim*bestcell,ppt); - /* new second closest error */ - float secondmetric=_dist(dim,b->valuelist+dim*secondentry,ppt); - long next=secondary[head]; - - if(head<points-entries){ - cellcount2[secondentry]++; - cellcount2[bestcell]--; - cellerror[firstentry]+=secondmetric-oldsecondmetric; - cellerrormax[firstentry]=max(cellerrormax[firstentry], - _heuristic(b,ppt,secondentry)); - } - - secondary[head]=secondhead[secondentry]; - secondhead[secondentry]=head; - head=next; - - if(cellcount2[bestcell]%128==0) - spinnit(spinbuf,cellcount2[bestcell]); - } - - cellsleft--; - } - - /* paring is over. Build decision trees using points that now fall - through the thresh matcher. */ - /* we don't free membership; we flatten it in order to use in lp_split */ - - for(i=0;i<entries;i++){ - long head=firsthead[i]; - spinnit("rearranging membership cache... ",entries-i); - while(head!=-1){ - long next=membership[head]; - membership[head]=i; - head=next; - } - } - - free(secondhead); - free(firsthead); - free(cellerror); - free(cellerrormax); - free(secondary); - - pointindex=_ogg_malloc(points*sizeof(long)); - /* make a point index of fall-through points */ - for(i=0;i<points;i++){ - int best=_best(b,pointlist+i*dim,1); - if(best==-1) - pointindex[indexedpoints++]=i; - spinnit("finding orphaned points... ",points-i); - } - - /* make an entry index */ - entryindex=_ogg_malloc(entries*sizeof(long)); - target=0; - for(i=0;i<entries;i++){ - if(b->c->lengthlist[i]>0) - entryindex[target++]=i; - } - - /* make working space for a reverse entry index */ - reventry=_ogg_malloc(entries*sizeof(long)); - - /* do the split */ - nt=b->c->nearest_tree= - _ogg_calloc(1,sizeof(encode_aux_nearestmatch)); - - nt->alloc=4096; - nt->ptr0=_ogg_malloc(sizeof(long)*nt->alloc); - nt->ptr1=_ogg_malloc(sizeof(long)*nt->alloc); - nt->p=_ogg_malloc(sizeof(long)*nt->alloc); - nt->q=_ogg_malloc(sizeof(long)*nt->alloc); - nt->aux=0; - - fprintf(stderr,"Leaves added: %d \n", - lp_split(pointlist,points, - b,entryindex,target, - pointindex,indexedpoints, - membership,reventry, - 0,&pointssofar)); - free(membership); - free(reventry); - free(pointindex); - - /* hack alert. I should just change the damned splitter and - codebook writer */ - for(i=0;i<nt->aux;i++)nt->p[i]*=dim; - for(i=0;i<nt->aux;i++)nt->q[i]*=dim; - - /* recount hits. Build new lengthlist. reuse entryindex storage */ - for(i=0;i<entries;i++)entryindex[i]=1; - for(i=0;i<points-entries;i++){ - int best=_best(b,pointlist+i*dim,1); - float *a=pointlist+i*dim; - if(!(i&0xff))spinnit("counting hits...",i); - if(best==-1){ - fprintf(stderr,"\nINTERNAL ERROR; a point count not be matched to a\n" - "codebook entry. The new decision tree is broken.\n"); - exit(1); - } - entryindex[best]++; - } - for(i=0;i<nt->aux;i++)nt->p[i]/=dim; - for(i=0;i<nt->aux;i++)nt->q[i]/=dim; - - /* the lengthlist builder doesn't actually deal with 0 hit entries. - So, we pack the 'sparse' hit list into a dense list, then unpack - the lengths after the build */ - { - int upper=0; - long *lengthlist=_ogg_calloc(entries,sizeof(long)); - for(i=0;i<entries;i++){ - if(b->c->lengthlist[i]>0) - entryindex[upper++]=entryindex[i]; - else{ - if(entryindex[i]>1){ - fprintf(stderr,"\nINTERNAL ERROR; _best matched to unused entry\n"); - exit(1); - } - } - } - - /* sanity check */ - if(upper != target){ - fprintf(stderr,"\nINTERNAL ERROR; packed the wrong number of entries\n"); - exit(1); - } - - build_tree_from_lengths(upper,entryindex,lengthlist); - - upper=0; - for(i=0;i<entries;i++){ - if(b->c->lengthlist[i]>0) - b->c->lengthlist[i]=lengthlist[upper++]; - } - - } - } - /* we're done. write it out. */ - write_codebook(out,basename,b->c); - - fprintf(stderr,"\r \nDone.\n"); - return(0); -} - - - - diff --git a/vq/latticetune.c b/vq/latticetune.c deleted file mode 100644 index b1d760e5..00000000 --- a/vq/latticetune.c +++ /dev/null @@ -1,164 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: utility main for setting entropy encoding parameters - for lattice codebooks - last mod: $Id: latticetune.c,v 1.11 2001/12/20 01:00:39 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <errno.h> -#include "bookutil.h" - -static int strrcmp_i(char *s,char *cmp){ - return(strncmp(s+strlen(s)-strlen(cmp),cmp,strlen(cmp))); -} - -/* This util takes a training-collected file listing codewords used in - LSP fitting, then generates new codeword lengths for maximally - efficient integer-bits entropy encoding. - - command line: - latticetune book.vqh input.vqd [unused_entriesp] - - latticetune produces book.vqh on stdout */ - -int main(int argc,char *argv[]){ - codebook *b; - static_codebook *c; - long *lengths; - long *hits; - - int entries=-1,dim=-1,guard=1; - FILE *in=NULL; - char *line,*name; - long j; - - if(argv[1]==NULL){ - fprintf(stderr,"Need a lattice codebook on the command line.\n"); - exit(1); - } - if(argv[2]==NULL){ - fprintf(stderr,"Need a codeword data file on the command line.\n"); - exit(1); - } - if(argv[3]!=NULL)guard=0; - - { - char *ptr; - char *filename=strdup(argv[1]); - - b=codebook_load(filename); - c=(static_codebook *)(b->c); - - ptr=strrchr(filename,'.'); - if(ptr){ - *ptr='\0'; - name=strdup(filename); - }else{ - name=strdup(filename); - } - } - - if(c->maptype!=1){ - fprintf(stderr,"Provided book is not a latticebook.\n"); - exit(1); - } - - entries=b->entries; - dim=b->dim; - - hits=_ogg_malloc(entries*sizeof(long)); - lengths=_ogg_calloc(entries,sizeof(long)); - for(j=0;j<entries;j++)hits[j]=guard; - - in=fopen(argv[2],"r"); - if(!in){ - fprintf(stderr,"Could not open input file %s\n",argv[2]); - exit(1); - } - - if(!strrcmp_i(argv[0],"latticetune")){ - long lines=0; - line=setup_line(in); - while(line){ - long code; - lines++; - if(!(lines&0xfff))spinnit("codewords so far...",lines); - - if(sscanf(line,"%ld",&code)==1) - hits[code]++; - - line=setup_line(in); - } - } - - /* now we simply count already collated by-entry data */ - if(!strrcmp_i(argv[0],"res0tune") || !strrcmp_i(argv[0],"res1tune")){ - - line=setup_line(in); - while(line){ - - /* code:hits\n */ - /* likely to have multiple listing for each code entry; must - accumulate */ - - char *pos=strchr(line,':'); - if(pos){ - long code=atol(line); - long val=atol(pos+1); - hits[code]+=val; - } - - line=setup_line(in); - } - } - - fclose(in); - - /* build the codeword lengths */ - build_tree_from_lengths0(entries,hits,lengths); - - c->lengthlist=lengths; - write_codebook(stdout,name,c); - - { - long bins=_book_maptype1_quantvals(c); - long i,k,base=c->lengthlist[0]; - for(i=0;i<entries;i++) - if(c->lengthlist[i]>base)base=c->lengthlist[i]; - - for(j=0;j<entries;j++){ - if(c->lengthlist[j]){ - int indexdiv=1; - fprintf(stderr,"%4ld: ",j); - for(k=0;k<c->dim;k++){ - int index= (j/indexdiv)%bins; - fprintf(stderr,"%+3.1f,", c->quantlist[index]*_float32_unpack(c->q_delta)+ - _float32_unpack(c->q_min)); - indexdiv*=bins; - } - fprintf(stderr,"\t|"); - for(k=0;k<base-c->lengthlist[j];k++)fprintf(stderr,"*"); - fprintf(stderr,"\n"); - } - } - } - - fprintf(stderr,"\r " - "\nDone.\n"); - exit(0); -} diff --git a/vq/lspdata.c b/vq/lspdata.c deleted file mode 100644 index c7b2d2e9..00000000 --- a/vq/lspdata.c +++ /dev/null @@ -1,157 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: metrics and quantization code for LSP VQ codebooks - last mod: $Id: lspdata.c,v 1.19 2001/12/20 01:00:39 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <math.h> -#include <stdio.h> -#include "vqgen.h" -#include "vqext.h" -#include "codebook.h" - -char *vqext_booktype="LSPdata"; -quant_meta q={0,0,0,1}; /* set sequence data */ -int vqext_aux=1; - -float global_maxdel=M_PI; -float global_mindel=M_PI; -#if 0 -void vqext_quantize(vqgen *v,quant_meta *q){ - float delta,mindel; - float maxquant=((1<<q->quant)-1); - int j,k; - - /* first find the basic delta amount from the maximum span to be - encoded. Loosen the delta slightly to allow for additional error - during sequence quantization */ - - delta=(global_maxdel-global_mindel)/((1<<q->quant)-1.5f); - - q->min=_float32_pack(global_mindel); - q->delta=_float32_pack(delta); - - mindel=_float32_unpack(q->min); - delta=_float32_unpack(q->delta); - - for(j=0;j<v->entries;j++){ - float last=0; - for(k=0;k<v->elements;k++){ - float val=_now(v,j)[k]; - float now=rint((val-last-mindel)/delta); - - _now(v,j)[k]=now; - if(now<0){ - /* be paranoid; this should be impossible */ - fprintf(stderr,"fault; quantized value<0\n"); - exit(1); - } - - if(now>maxquant){ - /* be paranoid; this should be impossible */ - fprintf(stderr,"fault; quantized value>max\n"); - exit(1); - } - last=(now*delta)+mindel+last; - } - } - -} -#else -void vqext_quantize(vqgen *v,quant_meta *q){ - vqgen_quantize(v,q); -} -#endif - -float *weight=NULL; -#if 0 -/* LSP training metric. We weight error proportional to distance - *between* LSP vector values. The idea of this metric is not to set - final cells, but get the midpoint spacing into a form conducive to - what we want, which is weighting toward preserving narrower - features. */ - -#define FUDGE (global_maxdel-weight[i]) - -float *vqext_weight(vqgen *v,float *p){ - int i; - int el=v->elements; - float lastp=0.f; - for(i=0;i<el;i++){ - float predist=(p[i]-lastp); - float postdist=(p[i+1]-p[i]); - weight[i]=(predist<postdist?predist:postdist); - lastp=p[i]; - } - return p; -} -#else -#define FUDGE 1.f -float *vqext_weight(vqgen *v,float *p){ - return p; -} -#endif - - /* candidate,actual */ -float vqext_metric(vqgen *v,float *e, float *p){ - int i; - int el=v->elements; - float acc=0.f; - for(i=0;i<el;i++){ - float val=(p[i]-e[i])*FUDGE; - acc+=val*val; - } - return sqrt(acc/v->elements); -} - -/* Data files are line-vectors, now just deltas. The codebook entries - want to be monotonically increasing, so we adjust */ - -/* assume vqext_aux==1 */ -void vqext_addpoint_adj(vqgen *v,float *b,int start,int dim,int cols,int num){ - float *a=alloca(sizeof(float)*(dim+1)); /* +aux */ - float base=0; - int i; - - for(i=0;i<dim;i++) - base=a[i]=b[i+start]+base; - - if(start+dim+1>cols) /* +aux */ - a[i]=M_PI; - else - a[i]=b[i+start]+base; - - vqgen_addpoint(v,a,a+dim); -} - -/* we just need to calc the global_maxdel from the training set */ -void vqext_preprocess(vqgen *v){ - long j,k; - - global_maxdel=0.f; - global_mindel=M_PI; - for(j=0;j<v->points;j++){ - float last=0.; - for(k=0;k<v->elements+v->aux;k++){ - float p=_point(v,j)[k]; - if(p-last>global_maxdel)global_maxdel=p-last; - if(p-last<global_mindel)global_mindel=p-last; - last=p; - } - } - - weight=_ogg_malloc(sizeof(float)*v->elements); -} - diff --git a/vq/make_residue_books.pl b/vq/make_residue_books.pl deleted file mode 100755 index 5411f5a2..00000000 --- a/vq/make_residue_books.pl +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/perl - -# quick, very dirty little script so that we can put all the -# information for building a residue book set (except the original -# partitioning) in one spec file. - -#eg: - -# >res0_128_128 interleaved -# haux res0_96_128aux.vqd 0,4,2 -# :1 res0_128_128_1.vqd, 4, nonseq cull, 0 +- 1 -# :2 res0_128_128_2.vqd, 4, nonseq, 0 +- 1(.7) 2 -# :3 res0_128_128_3.vqd, 4, nonseq, 0 +- 1(.7) 3 5 -# :4 res0_128_128_4.vqd, 2, nonseq, 0 +- 1(.7) 3 5 8 11 -# :5 res0_128_128_5.vqd, 1, nonseq, 0 +- 1 3 5 8 11 14 17 20 24 28 31 35 39 - - -die "Could not open $ARGV[0]: $!" unless open (F,$ARGV[0]); - -$goflag=0; -while($line=<F>){ - - print "#### $line"; - if($line=~m/^GO/){ - $goflag=1; - next; - } - - if($goflag==0){ - if($line=~m/\S+/ && !($line=~m/^\#/) ){ - my $command=$line; - print ">>> $command"; - die "Couldn't shell command.\n\tcommand:$command\n" - if syst($command); - } - next; - } - - # >res0_128_128 - if($line=~m/^>(\S+)\s+(\S*)/){ - # set the output name - $globalname=$1; - $interleave=$2; - next; - } - - # haux res0_96_128aux.vqd 0,4,2 - if($line=~m/^h(.*)/){ - # build a huffman book (no mapping) - my($name,$datafile,$arg)=split(' ',$1); - - my $command="huffbuild $datafile $arg"; - print ">>> $command\n"; - die "Couldn't build huffbook.\n\tcommand:$command\n" - if syst($command); - next; - } - - # :1 res0_128_128_1.vqd, 4, nonseq, 0 +- 1 - if($line=~m/^:(.*)/){ - my($namedata,$dim,$seqp,$vals)=split(',',$1); - my($name,$datafile)=split(' ',$namedata); - # build value list - my$plusminus="+"; - my$list; - my$thlist; - my$count=0; - foreach my$val (split(' ',$vals)){ - if($val=~/\-?\+?\d+/){ - my$th; - - # got an explicit threshhint? - if($val=~/([0-9\.]+)\(([^\)]+)/){ - $val=$1; - $th=$2; - } - - if($plusminus=~/-/){ - $list.="-$val "; - if(defined($th)){ - $thlist.="," if(defined($thlist)); - $thlist.="-$th"; - } - $count++; - } - if($plusminus=~/\+/){ - $list.="$val "; - if(defined($th)){ - $thlist.="," if(defined($thlist)); - $thlist.="$th"; - } - $count++; - } - }else{ - $plusminus=$val; - } - } - die "Couldn't open temp file temp$$.vql: $!" unless - open(G,">temp$$.vql"); - print G "$count $dim 0 "; - if($seqp=~/non/){ - print G "0\n$list\n"; - }else{ - print G "1\n$list\n"; - } - close(G); - - my $command="latticebuild temp$$.vql > $globalname$name.vqh"; - print ">>> $command\n"; - die "Couldn't build latticebook.\n\tcommand:$command\n" - if syst($command); - - my $command="latticehint $globalname$name.vqh $thlist > temp$$.vqh"; - print ">>> $command\n"; - die "Couldn't pre-hint latticebook.\n\tcommand:$command\n" - if syst($command); - - if(-e $datafile){ - - if($interleave=~/non/){ - $restune="res1tune"; - }else{ - $restune="res0tune"; - } - - if($seqp=~/cull/){ - my $command="$restune temp$$.vqh $datafile 1 > $globalname$name.vqh"; - print ">>> $command\n"; - die "Couldn't tune latticebook.\n\tcommand:$command\n" - if syst($command); - }else{ - my $command="$restune temp$$.vqh $datafile > $globalname$name.vqh"; - print ">>> $command\n"; - die "Couldn't tune latticebook.\n\tcommand:$command\n" - if syst($command); - } - - my $command="latticehint $globalname$name.vqh $thlist > temp$$.vqh"; - print ">>> $command\n"; - die "Couldn't post-hint latticebook.\n\tcommand:$command\n" - if syst($command); - - }else{ - print "No matching training file; leaving this codebook untrained.\n"; - } - - my $command="mv temp$$.vqh $globalname$name.vqh"; - print ">>> $command\n"; - die "Couldn't rename latticebook.\n\tcommand:$command\n" - if syst($command); - - my $command="rm temp$$.vql"; - print ">>> $command\n"; - die "Couldn't remove temp files.\n\tcommand:$command\n" - if syst($command); - - next; - } -} - -$command="rm -f temp$$.vqd"; -print ">>> $command\n"; -die "Couldn't remove temp files.\n\tcommand:$command\n" - if syst($command); - -sub syst{ - system(@_)/256; -} diff --git a/vq/metrics.c b/vq/metrics.c deleted file mode 100644 index 237a9565..00000000 --- a/vq/metrics.c +++ /dev/null @@ -1,295 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: function calls to collect codebook metrics - last mod: $Id: metrics.c,v 1.15 2001/12/20 01:00:39 segher Exp $ - - ********************************************************************/ - - -#include <stdlib.h> -#include <unistd.h> -#include <math.h> -#include "bookutil.h" - -/* collect the following metrics: - - mean and mean squared amplitude - mean and mean squared error - mean and mean squared error (per sample) by entry - worst case fit by entry - entry cell size - hits by entry - total bits - total samples - (average bits per sample)*/ - - -/* set up metrics */ - -float meanamplitude_acc=0.f; -float meanamplitudesq_acc=0.f; -float meanerror_acc=0.f; -float meanerrorsq_acc=0.f; - -float **histogram=NULL; -float **histogram_error=NULL; -float **histogram_errorsq=NULL; -float **histogram_hi=NULL; -float **histogram_lo=NULL; -float bits=0.f; -float count=0.f; - -static float *_now(codebook *c, int i){ - return c->valuelist+i*c->c->dim; -} - -int books=0; - -void process_preprocess(codebook **bs,char *basename){ - int i; - while(bs[books])books++; - - if(books){ - histogram=_ogg_calloc(books,sizeof(float *)); - histogram_error=_ogg_calloc(books,sizeof(float *)); - histogram_errorsq=_ogg_calloc(books,sizeof(float *)); - histogram_hi=_ogg_calloc(books,sizeof(float *)); - histogram_lo=_ogg_calloc(books,sizeof(float *)); - }else{ - fprintf(stderr,"Specify at least one codebook\n"); - exit(1); - } - - for(i=0;i<books;i++){ - codebook *b=bs[i]; - histogram[i]=_ogg_calloc(b->entries,sizeof(float)); - histogram_error[i]=_ogg_calloc(b->entries*b->dim,sizeof(float)); - histogram_errorsq[i]=_ogg_calloc(b->entries*b->dim,sizeof(float)); - histogram_hi[i]=_ogg_calloc(b->entries*b->dim,sizeof(float)); - histogram_lo[i]=_ogg_calloc(b->entries*b->dim,sizeof(float)); - } -} - -static float _dist(int el,float *a, float *b){ - int i; - float acc=0.f; - for(i=0;i<el;i++){ - float val=(a[i]-b[i]); - acc+=val*val; - } - return acc; -} - -void cell_spacing(codebook *c){ - int j,k; - float min=-1.f,max=-1.f,mean=0.f,meansq=0.f; - long total=0; - - /* minimum, maximum, mean, ms cell spacing */ - for(j=0;j<c->c->entries;j++){ - if(c->c->lengthlist[j]>0){ - float localmin=-1.; - for(k=0;k<c->c->entries;k++){ - if(c->c->lengthlist[k]>0){ - float this=_dist(c->c->dim,_now(c,j),_now(c,k)); - if(j!=k && - (localmin==-1 || this<localmin)) - localmin=this; - } - } - - if(min==-1 || localmin<min)min=localmin; - if(max==-1 || localmin>max)max=localmin; - mean+=sqrt(localmin); - meansq+=localmin; - total++; - } - } - - fprintf(stderr,"\tminimum cell spacing (closest side): %g\n",sqrt(min)); - fprintf(stderr,"\tmaximum cell spacing (closest side): %g\n",sqrt(max)); - fprintf(stderr,"\tmean closest side spacing: %g\n",mean/total); - fprintf(stderr,"\tmean sq closest side spacing: %g\n",sqrt(meansq/total)); -} - -void process_postprocess(codebook **bs,char *basename){ - int i,k,book; - char *buffer=alloca(strlen(basename)+80); - - fprintf(stderr,"Done. Processed %ld data points:\n\n", - (long)count); - - fprintf(stderr,"Global statistics:******************\n\n"); - - fprintf(stderr,"\ttotal samples: %ld\n",(long)count); - fprintf(stderr,"\ttotal bits required to code: %ld\n",(long)bits); - fprintf(stderr,"\taverage bits per sample: %g\n\n",bits/count); - - fprintf(stderr,"\tmean sample amplitude: %g\n", - meanamplitude_acc/count); - fprintf(stderr,"\tmean squared sample amplitude: %g\n\n", - sqrt(meanamplitudesq_acc/count)); - - fprintf(stderr,"\tmean code error: %g\n", - meanerror_acc/count); - fprintf(stderr,"\tmean squared code error: %g\n\n", - sqrt(meanerrorsq_acc/count)); - - for(book=0;book<books;book++){ - FILE *out; - codebook *b=bs[book]; - int n=b->c->entries; - int dim=b->c->dim; - - fprintf(stderr,"Book %d statistics:------------------\n",book); - - cell_spacing(b); - - sprintf(buffer,"%s-%d-mse.m",basename,book); - out=fopen(buffer,"w"); - if(!out){ - fprintf(stderr,"Could not open file %s for writing\n",buffer); - exit(1); - } - - for(i=0;i<n;i++){ - for(k=0;k<dim;k++){ - fprintf(out,"%d, %g, %g\n", - i*dim+k,(b->valuelist+i*dim)[k], - sqrt((histogram_errorsq[book]+i*dim)[k]/histogram[book][i])); - } - } - fclose(out); - - sprintf(buffer,"%s-%d-me.m",basename,book); - out=fopen(buffer,"w"); - if(!out){ - fprintf(stderr,"Could not open file %s for writing\n",buffer); - exit(1); - } - - for(i=0;i<n;i++){ - for(k=0;k<dim;k++){ - fprintf(out,"%d, %g, %g\n", - i*dim+k,(b->valuelist+i*dim)[k], - (histogram_error[book]+i*dim)[k]/histogram[book][i]); - } - } - fclose(out); - - sprintf(buffer,"%s-%d-worst.m",basename,book); - out=fopen(buffer,"w"); - if(!out){ - fprintf(stderr,"Could not open file %s for writing\n",buffer); - exit(1); - } - - for(i=0;i<n;i++){ - for(k=0;k<dim;k++){ - fprintf(out,"%d, %g, %g, %g\n", - i*dim+k,(b->valuelist+i*dim)[k], - (b->valuelist+i*dim)[k]+(histogram_lo[book]+i*dim)[k], - (b->valuelist+i*dim)[k]+(histogram_hi[book]+i*dim)[k]); - } - } - fclose(out); - } -} - -float process_one(codebook *b,int book,float *a,int dim,int step,int addmul, - float base){ - int j,entry; - float amplitude=0.f; - - if(book==0){ - float last=base; - for(j=0;j<dim;j++){ - amplitude=a[j*step]-(b->c->q_sequencep?last:0); - meanamplitude_acc+=fabs(amplitude); - meanamplitudesq_acc+=amplitude*amplitude; - count++; - last=a[j*step]; - } - } - - if(b->c->q_sequencep){ - float temp; - for(j=0;j<dim;j++){ - temp=a[j*step]; - a[j*step]-=base; - } - base=temp; - } - - entry=vorbis_book_besterror(b,a,step,addmul); - - if(entry==-1){ - fprintf(stderr,"Internal error: _best returned -1.\n"); - exit(1); - } - - histogram[book][entry]++; - bits+=vorbis_book_codelen(b,entry); - - for(j=0;j<dim;j++){ - float error=a[j*step]; - - if(book==books-1){ - meanerror_acc+=fabs(error); - meanerrorsq_acc+=error*error; - } - histogram_errorsq[book][entry*dim+j]+=error*error; - histogram_error[book][entry*dim+j]+=fabs(error); - if(histogram[book][entry]==0 || histogram_hi[book][entry*dim+j]<error) - histogram_hi[book][entry*dim+j]=error; - if(histogram[book][entry]==0 || histogram_lo[book][entry*dim+j]>error) - histogram_lo[book][entry*dim+j]=error; - } - return base; -} - - -void process_vector(codebook **bs,int *addmul,int inter,float *a,int n){ - int bi; - int i; - - for(bi=0;bi<books;bi++){ - codebook *b=bs[bi]; - int dim=b->dim; - float base=0.f; - - if(inter){ - for(i=0;i<n/dim;i++) - base=process_one(b,bi,a+i,dim,n/dim,addmul[bi],base); - }else{ - for(i=0;i<=n-dim;i+=dim) - base=process_one(b,bi,a+i,dim,1,addmul[bi],base); - } - } - - if((long)(count)%100)spinnit("working.... samples: ",count); -} - -void process_usage(void){ - fprintf(stderr, - "usage: vqmetrics [-i] +|*<codebook>.vqh [ +|*<codebook.vqh> ]... \n" - " datafile.vqd [datafile.vqd]...\n\n" - " data can be taken on stdin. -i indicates interleaved coding.\n" - " Output goes to output files:\n" - " basename-me.m: gnuplot: mean error by entry value\n" - " basename-mse.m: gnuplot: mean square error by entry value\n" - " basename-worst.m: gnuplot: worst error by entry value\n" - " basename-distance.m: gnuplot file showing distance probability\n" - "\n"); - -} diff --git a/vq/residue_entropy b/vq/residue_entropy deleted file mode 100755 index 49c55a53..00000000 --- a/vq/residue_entropy +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/perl - -@quant=( - 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, - 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, - 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12 -); - - -use POSIX; -my($groupn)=@ARGV; -my%hash; -my$count=0; -my$lines=0; - -if(!defined($groupn)){ - print "Usage: residue_entropy <groupsize> \n"; - exit(1); -} -$|=1; - -while (<STDIN>) { - chop; - my@nums = (); - @nums = split(/,/); - $lines++; - - my$step=$#nums/$groupn; - for(my$i=0;$i<$step;$i++){ - my$key=""; - for(my$j=$i;$j<$#nums;$j+=$step){ - if($nums[$j]<0){ - $num=-$quant[int(-$nums[$j]*2)]; - }else{ - $num=$quant[int($nums[$j]*2)]; - } - $key.=":$num"; - } - - if(!defined($hash{$key})){ - $count++; - $hash{$key}=1; - } - } - - if(($lines % 1000)==0){ - print "\rworking... $lines lines, found $count values so far"; - } -} - -foreach $key (keys %hash){ - print "\t$key\n"; -} - -print "\r$count values total \n"; -print "Done.\n\n"; diff --git a/vq/residuedata.c b/vq/residuedata.c deleted file mode 100644 index ed0fa788..00000000 --- a/vq/residuedata.c +++ /dev/null @@ -1,160 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: metrics and quantization code for residue VQ codebooks - last mod: $Id: residuedata.c,v 1.10 2001/12/20 01:00:39 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <math.h> -#include <stdio.h> -#include <string.h> -#include "vqgen.h" -#include "bookutil.h" -#include "../lib/scales.h" -#include "vqext.h" - -float scalequant=3.f; -char *vqext_booktype="RESdata"; -quant_meta q={0,0,0,0}; /* set sequence data */ -int vqext_aux=0; - -static float *quant_save=NULL; - -float *vqext_weight(vqgen *v,float *p){ - return p; -} - -/* quantize aligned on unit boundaries. Because our grid is likely - very coarse, play 'shuffle the blocks'; don't allow multiple - entries to fill the same spot as is nearly certain to happen. */ - -void vqext_quantize(vqgen *v,quant_meta *q){ - int j,k; - long dim=v->elements; - long n=v->entries; - float max=-1; - float *test=alloca(sizeof(float)*dim); - int moved=0; - - - /* allow movement only to unoccupied coordinates on the coarse grid */ - for(j=0;j<n;j++){ - for(k=0;k<dim;k++){ - float val=_now(v,j)[k]; - float norm=rint(fabs(val)/scalequant); - if(norm>max)max=norm; - test[k]=norm; - } - - /* allow move only if unoccupied */ - if(quant_save){ - for(k=0;k<n;k++) - if(j!=k && memcmp(test,quant_save+dim*k,dim*sizeof(float))==0) - break; - if(k==n){ - if(memcmp(test,quant_save+dim*j,dim*sizeof(float))) - moved++; - memcpy(quant_save+dim*j,test,sizeof(float)*dim); - } - }else{ - memcpy(_now(v,j),test,sizeof(float)*dim); - } - } - - /* unlike the other trainers, we fill in our quantization - information (as we know granularity beforehand and don't need to - maximize it) */ - - q->min=_float32_pack(0.f); - q->delta=_float32_pack(scalequant); - q->quant=_ilog(max); - - if(quant_save){ - memcpy(_now(v,0),quant_save,sizeof(float)*dim*n); - fprintf(stderr,"cells shifted this iteration: %d\n",moved); - } -} - - /* candidate,actual */ -float vqext_metric(vqgen *v,float *e, float *p){ - int i; - float acc=0.f; - for(i=0;i<v->elements;i++){ - float val=p[i]-e[i]; - acc+=val*val; - } - return sqrt(acc); -} - -/* We don't interleave here; we assume that the interleave is provided - for us by residuesplit in vorbis/huff/ */ -void vqext_addpoint_adj(vqgen *v,float *b,int start,int dim,int cols,int num){ - vqgen_addpoint(v,b+start,NULL); -} - -/* need to reseed because of the coarse quantization we tend to use on - residuals (which causes lots & lots of dupes) */ -void vqext_preprocess(vqgen *v){ - long i,j,k,l; - float *test=alloca(sizeof(float)*v->elements); - scalequant=q.quant; - - vqext_quantize(v,&q); - vqgen_unquantize(v,&q); - - /* if there are any dupes, reseed */ - for(k=0;k<v->entries;k++){ - for(l=0;l<k;l++){ - if(memcmp(_now(v,k),_now(v,l),sizeof(float)*v->elements)==0) - break; - } - if(l<k)break; - } - - if(k<v->entries){ - fprintf(stderr,"reseeding with quantization....\n"); - - /* seed the inputs to input points, but points on unit boundaries, - ignoring quantbits for now, making sure each seed is unique */ - - for(i=0,j=0;i<v->points && j<v->entries;i++){ - for(k=0;k<v->elements;k++){ - float val=_point(v,i)[k]; - test[k]=rint(val/scalequant)*scalequant; - } - - for(l=0;l<j;l++){ - for(k=0;k<v->elements;k++) - if(test[k]!=_now(v,l)[k]) - break; - if(k==v->elements)break; - } - if(l==j){ - memcpy(_now(v,j),test,v->elements*sizeof(float)); - j++; - } - } - - if(j<v->elements){ - fprintf(stderr,"Not enough unique entries after prequantization\n"); - exit(1); - } - } - vqext_quantize(v,&q); - quant_save=_ogg_malloc(sizeof(float)*v->elements*v->entries); - memcpy(quant_save,_now(v,0),sizeof(float)*v->elements*v->entries); - vqgen_unquantize(v,&q); - -} - diff --git a/vq/residuesplit.c b/vq/residuesplit.c deleted file mode 100644 index 0a136f52..00000000 --- a/vq/residuesplit.c +++ /dev/null @@ -1,282 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: residue backend 0 partitioner/classifier - last mod: $Id: residuesplit.c,v 1.13 2001/12/20 01:00:40 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <stdio.h> -#include "bookutil.h" - -/* does not guard against invalid settings; eg, a subn of 16 and a - subgroup request of 32. Max subn of 128 */ -static float _testhack(float *vec,int n){ - int i,j=0; - float max=0.f; - float temp[128]; - float entropy=0.; - - /* setup */ - for(i=0;i<n;i++)temp[i]=fabs(vec[i]); - - /* handle case subgrp==1 outside */ - for(i=0;i<n;i++) - if(temp[i]>max)max=temp[i]; - - for(i=0;i<n;i++)temp[i]=rint(temp[i]); - - for(i=0;i<n;i++) - entropy+=temp[i]; - return entropy; - - /*while(1){ - entropy[j]=max; - n>>=1; - j++; - - if(n<=0)break; - for(i=0;i<n;i++){ - temp[i]+=temp[i+n]; - } - max=0.f; - for(i=0;i<n;i++) - if(temp[i]>max)max=temp[i]; - }*/ -} - -static FILE *of; -static FILE **or; - -/* we evaluate the the entropy measure for each interleaved subgroup */ -/* This is currently a bit specific to/hardwired for mapping 0; things - will need to change in the future when we get real multichannel - mappings */ -int quantaux(float *res,int n,float *ebound,float *mbound,int *subgrp,int parts, int subn, - int *class){ - long i,j,part=0; - int aux; - - for(i=0;i<=n-subn;i+=subn,part++){ - float max=0.f; - float lentropy=0.f; - - lentropy=_testhack(res+i,subn); - - for(j=0;j<subn;j++) - if(fabs(res[i+j])>max)max=fabs(res[i+j]); - - for(j=0;j<parts-1;j++) - if(lentropy<=ebound[j] && - max<=mbound[j] && - part<subgrp[j]) - break; - class[part]=aux=j; - - fprintf(of,"%d, ",aux); - } - fprintf(of,"\n"); - - return(0); -} - -int quantwrite(float *res,int n,int subn, int *class,int offset){ - long i,j,part=0; - int aux; - - for(i=0;i<=n-subn;i+=subn,part++){ - aux=class[part]; - - for(j=0;j<subn;j++) - fprintf(or[aux+offset],"%g, ",res[j+i]); - - fprintf(or[aux+offset],"\n"); - } - - return(0); -} - -static int getline(FILE *in,float *vec,int begin,int n){ - int i,next=0; - - reset_next_value(); - if(get_next_value(in,vec))return(0); - if(begin){ - for(i=1;i<begin;i++) - get_line_value(in,vec); - next=0; - }else{ - next=1; - } - - for(i=next;i<n;i++) - if(get_line_value(in,vec+i)){ - fprintf(stderr,"ran out of columns in input data\n"); - exit(1); - } - - return(1); -} - -static void usage(){ - fprintf(stderr, - "usage:\n" - "residuesplit <res> [<res>] <begin,n,group> <baseout> <ent,peak,sub> [<ent,peak,sub>]...\n" - " where begin,n,group is first scalar, \n" - " number of scalars of each in line,\n" - " number of scalars in a group\n" - " ent is the maximum entropy value allowed for membership in a group\n" - " peak is the maximum amplitude value allowed for membership in a group\n" - " subn is the maximum subpartiton number allowed in the group\n\n"); - exit(1); -} - -int main(int argc, char *argv[]){ - char *buffer; - char *base; - int i,j,parts,begin,n,subn,*subgrp,*class; - FILE **res; - int resfiles=0; - float *ebound,*mbound,*vec; - long c=0; - if(argc<5)usage(); - - /* count the res file names, open the files */ - while(!strcmp(argv[resfiles+1]+strlen(argv[resfiles+1])-4,".vqd")) - resfiles++; - if(resfiles<1)usage(); - - res=alloca(sizeof(*res)*resfiles); - for(i=0;i<resfiles;i++){ - res[i]=fopen(argv[i+1],"r"); - if(!(res+i)){ - fprintf(stderr,"Could not open file %s\n",argv[1+i]); - exit(1); - } - } - - base=strdup(argv[2+resfiles]); - buffer=alloca(strlen(base)+20); - { - char *pos=strchr(argv[1+resfiles],','); - begin=atoi(argv[1+resfiles]); - if(!pos) - usage(); - else - n=atoi(pos+1); - pos=strchr(pos+1,','); - if(!pos) - usage(); - else - subn=atoi(pos+1); - if(n/subn*subn != n){ - fprintf(stderr,"n must be divisible by group\n"); - exit(1); - } - } - - /* how many parts?... */ - parts=argc-resfiles-2; - - ebound=_ogg_malloc(sizeof(float)*parts); - mbound=_ogg_malloc(sizeof(float)*parts); - subgrp=_ogg_malloc(sizeof(int)*parts); - - for(i=0;i<parts-1;i++){ - char *pos=strchr(argv[3+i+resfiles],','); - subgrp[i]=0; - if(*argv[3+i+resfiles]==',') - ebound[i]=1e50f; - else - ebound[i]=atof(argv[3+i+resfiles]); - - if(!pos){ - mbound[i]=1e50f; - }else{ - if(*(pos+1)==',') - mbound[i]=1e50f; - else - mbound[i]=atof(pos+1); - pos=strchr(pos+1,','); - - if(pos) - subgrp[i]=atoi(pos+1); - - } - if(subgrp[i]<=0)subgrp[i]=99999; - } - - ebound[i]=1e50f; - mbound[i]=1e50f; - subgrp[i]=9999999; - - or=alloca(parts*resfiles*sizeof(FILE*)); - sprintf(buffer,"%saux.vqd",base); - of=fopen(buffer,"w"); - if(!of){ - fprintf(stderr,"Could not open file %s for writing\n",buffer); - exit(1); - } - - for(j=0;j<resfiles;j++){ - for(i=0;i<parts;i++){ - sprintf(buffer,"%s_%d%c.vqd",base,i,j+65); - or[i+j*parts]=fopen(buffer,"w"); - if(!or[i+j*parts]){ - fprintf(stderr,"Could not open file %s for writing\n",buffer); - exit(1); - } - } - } - - vec=_ogg_malloc(sizeof(float)*n); - class=_ogg_malloc(sizeof(float)*n); - /* get the input line by line and process it */ - while(1){ - if(getline(res[0],vec,begin,n)){ - quantaux(vec,n,ebound,mbound,subgrp,parts,subn,class); - quantwrite(vec,n,subn,class,0); - - for(i=1;i<resfiles;i++){ - if(getline(res[i],vec,begin,n)){ - quantwrite(vec,n,subn,class,parts*i); - }else{ - fprintf(stderr,"Getline loss of sync (%d).\n\n",i); - exit(1); - } - } - }else{ - if(feof(res[0]))break; - fprintf(stderr,"Getline loss of sync (0).\n\n"); - exit(1); - } - - c++; - if(!(c&0xf)){ - spinnit("kB so far...",(int)(ftell(res[0])/1024)); - } - } - for(i=0;i<resfiles;i++) - fclose(res[i]); - fclose(of); - for(i=0;i<parts*resfiles;i++) - fclose(or[i]); - fprintf(stderr,"\rDone \n"); - return(0); -} - - - - diff --git a/vq/run.c b/vq/run.c deleted file mode 100644 index 40df4a24..00000000 --- a/vq/run.c +++ /dev/null @@ -1,216 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: utility main for loading and operating on codebooks - last mod: $Id: run.c,v 1.15 2001/12/20 01:00:40 segher Exp $ - - ********************************************************************/ - -#include <unistd.h> -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <errno.h> -#include <sys/stat.h> -#include <sys/types.h> -#include <fcntl.h> - -#include "bookutil.h" - -/* command line: - utilname [-i] +|* input_book.vqh [+|* input_book.vqh] - input_data.vqd [input_data.vqd] - - produces output data on stdout - (may also take input data from stdin) - - */ - -extern void process_preprocess(codebook **b,char *basename); -extern void process_postprocess(codebook **b,char *basename); -extern void process_vector(codebook **b,int *addmul, int inter,float *a,int n); -extern void process_usage(void); - -int main(int argc,char *argv[]){ - char *basename; - codebook **b=_ogg_calloc(1,sizeof(codebook *)); - int *addmul=_ogg_calloc(1,sizeof(int)); - int books=0; - int input=0; - int interleave=0; - int j; - int start=0; - int num=-1; - argv++; - - if(*argv==NULL){ - process_usage(); - exit(1); - } - - /* yes, this is evil. However, it's very convenient to parse file - extentions */ - - while(*argv){ - if(*argv[0]=='-'){ - /* option */ - if(argv[0][1]=='s'){ - /* subvector */ - if(sscanf(argv[1],"%d,%d",&start,&num)!=2){ - num= -1; - if(sscanf(argv[1],"%d",&start)!=1){ - fprintf(stderr,"Syntax error using -s\n"); - exit(1); - } - } - argv+=2; - } - if(argv[0][1]=='i'){ - /* interleave */ - interleave=1; - argv+=1; - } - }else{ - /* input file. What kind? */ - char *dot; - char *ext=NULL; - char *name=strdup(*argv++); - dot=strrchr(name,'.'); - if(dot) - ext=dot+1; - else - ext=""; - - /* codebook */ - if(!strcmp(ext,"vqh")){ - int multp=0; - if(input){ - fprintf(stderr,"specify all input data (.vqd) files following\n" - "codebook header (.vqh) files\n"); - exit(1); - } - /* is it additive or multiplicative? */ - if(name[0]=='*'){ - multp=1; - name++; - } - if(name[0]=='+')name++; - - basename=strrchr(name,'/'); - if(basename) - basename=strdup(basename)+1; - else - basename=strdup(name); - dot=strrchr(basename,'.'); - if(dot)*dot='\0'; - - b=_ogg_realloc(b,sizeof(codebook *)*(books+2)); - b[books]=codebook_load(name); - addmul=_ogg_realloc(addmul,sizeof(int)*(books+1)); - addmul[books++]=multp; - b[books]=NULL; - } - - /* data file */ - if(!strcmp(ext,"vqd")){ - int cols; - long lines=0; - char *line; - float *vec; - FILE *in=fopen(name,"r"); - if(!in){ - fprintf(stderr,"Could not open input file %s\n",name); - exit(1); - } - - if(!input){ - process_preprocess(b,basename); - input++; - } - - reset_next_value(); - line=setup_line(in); - /* count cols before we start reading */ - { - char *temp=line; - while(*temp==' ')temp++; - for(cols=0;*temp;cols++){ - while(*temp>32)temp++; - while(*temp==' ')temp++; - } - } - vec=alloca(cols*sizeof(float)); - while(line){ - lines++; - for(j=0;j<cols;j++) - if(get_line_value(in,vec+j)){ - fprintf(stderr,"Too few columns on line %ld in data file\n",lines); - exit(1); - } - /* ignores -s for now */ - process_vector(b,addmul,interleave,vec,cols); - - line=setup_line(in); - } - fclose(in); - } - } - } - - /* take any data from stdin */ - { - struct stat st; - if(fstat(STDIN_FILENO,&st)==-1){ - fprintf(stderr,"Could not stat STDIN\n"); - exit(1); - } - if((S_IFIFO|S_IFREG|S_IFSOCK)&st.st_mode){ - int cols; - char *line; - long lines=0; - float *vec; - if(!input){ - process_preprocess(b,basename); - input++; - } - - line=setup_line(stdin); - /* count cols before we start reading */ - { - char *temp=line; - while(*temp==' ')temp++; - for(cols=0;*temp;cols++){ - while(*temp>32)temp++; - while(*temp==' ')temp++; - } - } - vec=alloca(cols*sizeof(float)); - while(line){ - lines++; - for(j=0;j<cols;j++) - if(get_line_value(stdin,vec+j)){ - fprintf(stderr,"Too few columns on line %ld in data file\n",lines); - exit(1); - } - /* ignores -s for now */ - process_vector(b,addmul,interleave,vec,cols); - - line=setup_line(stdin); - } - } - } - - process_postprocess(b,basename); - - return 0; -} diff --git a/vq/train.c b/vq/train.c deleted file mode 100644 index 474d2661..00000000 --- a/vq/train.c +++ /dev/null @@ -1,364 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: utility main for training codebooks - last mod: $Id: train.c,v 1.24 2001/12/20 01:00:40 segher Exp $ - - ********************************************************************/ - -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <errno.h> -#include <signal.h> -#include "vqgen.h" -#include "vqext.h" -#include "bookutil.h" - -static char *rline(FILE *in,FILE *out,int pass){ - while(1){ - char *line=get_line(in); - if(line && line[0]=='#'){ - if(pass)fprintf(out,"%s\n",line); - }else{ - return(line); - } - } -} - -/* command line: - trainvq vqfile [options] trainfile [trainfile] - - options: -params entries,dim,quant - -subvector start[,num] - -error desired_error - -iterations iterations -*/ - -static void usage(void){ - fprintf(stderr, "\nOggVorbis %s VQ codebook trainer\n\n" - "<foo>vqtrain vqfile [options] [datasetfile] [datasetfile]\n" - "options: -p[arams] <entries,dim,quant>\n" - " -s[ubvector] <start[,num]>\n" - " -e[rror] <desired_error>\n" - " -i[terations] <maxiterations>\n" - " -d[istance] quantization mesh spacing for density limitation\n" - " -b <dummy> eliminate cell size biasing; use normal LBG\n\n" - " -c <dummy> Use centroid (not median) midpoints\n" - - "examples:\n" - " train a new codebook to 1%% tolerance on datafile 'foo':\n" - " xxxvqtrain book -p 256,6,8 -e .01 foo\n" - " (produces a trained set in book-0.vqi)\n\n" - " continue training 'book-0.vqi' (produces book-1.vqi):\n" - " xxxvqtrain book-0.vqi\n\n" - " add subvector from element 1 to <dimension> from files\n" - " data*.m to the training in progress, prodicing book-1.vqi:\n" - " xxxvqtrain book-0.vqi -s 1,1 data*.m\n\n",vqext_booktype); -} - -int exiting=0; -void setexit(int dummy){ - fprintf(stderr,"\nexiting... please wait to finish this iteration\n"); - exiting=1; -} - -int main(int argc,char *argv[]){ - vqgen v; - - int entries=-1,dim=-1; - int start=0,num=-1; - float desired=.05f,mindist=0.f; - int iter=1000; - int biasp=1; - int centroid=0; - - FILE *out=NULL; - char *line; - long i,j,k; - int init=0; - q.quant=-1; - - argv++; - if(!*argv){ - usage(); - exit(0); - } - - /* get the book name, a preexisting book to continue training */ - { - FILE *in=NULL; - char *filename=alloca(strlen(*argv)+30),*ptr; - - strcpy(filename,*argv); - in=fopen(filename,"r"); - ptr=strrchr(filename,'-'); - if(ptr){ - int num; - ptr++; - num=atoi(ptr); - sprintf(ptr,"%d.vqi",num+1); - }else - strcat(filename,"-0.vqi"); - - out=fopen(filename,"w"); - if(out==NULL){ - fprintf(stderr,"Unable to open %s for writing\n",filename); - exit(1); - } - - if(in){ - /* we wish to suck in a preexisting book and continue to train it */ - float a; - - line=rline(in,out,1); - if(strcmp(line,vqext_booktype)){ - fprintf(stderr,"wrong book type; %s!=%s\n",line,vqext_booktype); - exit(1); - } - - line=rline(in,out,1); - if(sscanf(line,"%d %d %d",&entries,&dim,&vqext_aux)!=3){ - fprintf(stderr,"Syntax error reading book file\n"); - exit(1); - } - - vqgen_init(&v,dim,vqext_aux,entries,mindist, - vqext_metric,vqext_weight,centroid); - init=1; - - /* quant setup */ - line=rline(in,out,1); - if(sscanf(line,"%ld %ld %d %d",&q.min,&q.delta, - &q.quant,&q.sequencep)!=4){ - fprintf(stderr,"Syntax error reading book file\n"); - exit(1); - } - - /* quantized entries */ - i=0; - for(j=0;j<entries;j++){ - for(k=0;k<dim;k++){ - line=rline(in,out,0); - sscanf(line,"%f",&a); - v.entrylist[i++]=a; - } - } - vqgen_unquantize(&v,&q); - - /* bias */ - i=0; - for(j=0;j<entries;j++){ - line=rline(in,out,0); - sscanf(line,"%f",&a); - v.bias[i++]=a; - } - - v.seeded=1; - { - float *b=alloca((dim+vqext_aux)*sizeof(float)); - i=0; - while(1){ - for(k=0;k<dim+vqext_aux;k++){ - line=rline(in,out,0); - if(!line)break; - sscanf(line,"%f",b+k); - } - if(feof(in))break; - vqgen_addpoint(&v,b,b+dim); - } - } - - fclose(in); - } - } - - /* get the rest... */ - argv=argv++; - while(*argv){ - if(argv[0][0]=='-'){ - /* it's an option */ - if(!argv[1]){ - fprintf(stderr,"Option %s missing argument.\n",argv[0]); - exit(1); - } - switch(argv[0][1]){ - case 'p': - if(sscanf(argv[1],"%d,%d,%d",&entries,&dim,&q.quant)!=3) - goto syner; - break; - case 's': - if(sscanf(argv[1],"%d,%d",&start,&num)!=2){ - num= -1; - if(sscanf(argv[1],"%d",&start)!=1) - goto syner; - } - break; - case 'e': - if(sscanf(argv[1],"%f",&desired)!=1) - goto syner; - break; - case 'd': - if(sscanf(argv[1],"%f",&mindist)!=1) - goto syner; - if(init)v.mindist=mindist; - break; - case 'i': - if(sscanf(argv[1],"%d",&iter)!=1) - goto syner; - break; - case 'b': - biasp=0; - break; - case 'c': - centroid=1; - break; - default: - fprintf(stderr,"Unknown option %s\n",argv[0]); - exit(1); - } - argv+=2; - }else{ - /* it's an input file */ - char *file=strdup(*argv++); - FILE *in; - int cols=-1; - - if(!init){ - if(dim==-1 || entries==-1 || q.quant==-1){ - fprintf(stderr,"-p required when training a new set\n"); - exit(1); - } - vqgen_init(&v,dim,vqext_aux,entries,mindist, - vqext_metric,vqext_weight,centroid); - init=1; - } - - in=fopen(file,"r"); - if(in==NULL){ - fprintf(stderr,"Could not open input file %s\n",file); - exit(1); - } - fprintf(out,"# training file entry: %s\n",file); - - while((line=rline(in,out,0))){ - if(cols==-1){ - char *temp=line; - while(*temp==' ')temp++; - for(cols=0;*temp;cols++){ - while(*temp>32)temp++; - while(*temp==' ')temp++; - } - - fprintf(stderr,"%d colums per line in file %s\n",cols,file); - - } - { - int i; - float b[cols]; - if(start+num*dim>cols){ - fprintf(stderr,"ran out of columns reading %s\n",file); - exit(1); - } - while(*line==' ')line++; - for(i=0;i<cols;i++){ - - /* static length buffer bug workaround */ - char *temp=line; - char old; - while(*temp>32)temp++; - - old=temp[0]; - temp[0]='\0'; - b[i]=atof(line); - temp[0]=old; - - while(*line>32)line++; - while(*line==' ')line++; - } - if(num<=0)num=(cols-start)/dim; - for(i=0;i<num;i++) - vqext_addpoint_adj(&v,b,start+i*dim,dim,cols,num); - - } - } - fclose(in); - } - } - - if(!init){ - fprintf(stderr,"No input files!\n"); - exit(1); - } - - vqext_preprocess(&v); - - /* train the book */ - signal(SIGTERM,setexit); - signal(SIGINT,setexit); - - for(i=0;i<iter && !exiting;i++){ - float result; - if(i!=0){ - vqgen_unquantize(&v,&q); - vqgen_cellmetric(&v); - } - result=vqgen_iterate(&v,biasp); - vqext_quantize(&v,&q); - if(result<desired)break; - } - - /* save the book */ - - fprintf(out,"# OggVorbis VQ codebook trainer, intermediate file\n"); - fprintf(out,"%s\n",vqext_booktype); - fprintf(out,"%d %d %d\n",entries,dim,vqext_aux); - fprintf(out,"%ld %ld %d %d\n", - q.min,q.delta,q.quant,q.sequencep); - - /* quantized entries */ - fprintf(out,"# quantized entries---\n"); - i=0; - for(j=0;j<entries;j++) - for(k=0;k<dim;k++) - fprintf(out,"%d\n",(int)(rint(v.entrylist[i++]))); - - fprintf(out,"# biases---\n"); - i=0; - for(j=0;j<entries;j++) - fprintf(out,"%f\n",v.bias[i++]); - - /* we may have done the density limiting mesh trick; refetch the - training points from the temp file */ - - rewind(v.asciipoints); - fprintf(out,"# points---\n"); - { - /* sloppy, no error handling */ - long bytes; - char buff[4096]; - while((bytes=fread(buff,1,4096,v.asciipoints))) - while(bytes)bytes-=fwrite(buff,1,bytes,out); - } - - fclose(out); - fclose(v.asciipoints); - - vqgen_unquantize(&v,&q); - vqgen_cellmetric(&v); - exit(0); - - syner: - fprintf(stderr,"Syntax error in argument '%s'\n",*argv); - exit(1); -} diff --git a/vq/vqext.h b/vq/vqext.h deleted file mode 100644 index 74fa2c1f..00000000 --- a/vq/vqext.h +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: prototypes for extermal metrics specific to data type - last mod: $Id: vqext.h,v 1.14 2001/12/20 01:00:40 segher Exp $ - - ********************************************************************/ - -#ifndef _V_VQEXT_ -#define _V_VQEXT_ - -#include "vqgen.h" - -extern char *vqext_booktype; -extern quant_meta q; -extern int vqext_aux; - -extern float vqext_metric(vqgen *v,float *e, float *p); -extern float *vqext_weight(vqgen *v,float *p); -extern void vqext_addpoint_adj(vqgen *v,float *b,int start,int dim,int cols,int num); -extern void vqext_preprocess(vqgen *v); -extern void vqext_quantize(vqgen *v,quant_meta *); - - -#endif diff --git a/vq/vqgen.c b/vq/vqgen.c deleted file mode 100644 index 3407c6f9..00000000 --- a/vq/vqgen.c +++ /dev/null @@ -1,568 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: train a VQ codebook - last mod: $Id: vqgen.c,v 1.40 2001/12/20 01:00:40 segher Exp $ - - ********************************************************************/ - -/* This code is *not* part of libvorbis. It is used to generate - trained codebooks offline and then spit the results into a - pregenerated codebook that is compiled into libvorbis. It is an - expensive (but good) algorithm. Run it on big iron. */ - -/* There are so many optimizations to explore in *both* stages that - considering the undertaking is almost withering. For now, we brute - force it all */ - -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <string.h> - -#include "vqgen.h" -#include "bookutil.h" - -/* Codebook generation happens in two steps: - - 1) Train the codebook with data collected from the encoder: We use - one of a few error metrics (which represent the distance between a - given data point and a candidate point in the training set) to - divide the training set up into cells representing roughly equal - probability of occurring. - - 2) Generate the codebook and auxiliary data from the trained data set -*/ - -/* Codebook training **************************************************** - * - * The basic idea here is that a VQ codebook is like an m-dimensional - * foam with n bubbles. The bubbles compete for space/volume and are - * 'pressurized' [biased] according to some metric. The basic alg - * iterates through allowing the bubbles to compete for space until - * they converge (if the damping is dome properly) on a steady-state - * solution. Individual input points, collected from libvorbis, are - * used to train the algorithm monte-carlo style. */ - -/* internal helpers *****************************************************/ -#define vN(data,i) (data+v->elements*i) - -/* default metric; squared 'distance' from desired value. */ -float _dist(vqgen *v,float *a, float *b){ - int i; - int el=v->elements; - float acc=0.f; - for(i=0;i<el;i++){ - float val=(a[i]-b[i]); - acc+=val*val; - } - return sqrt(acc); -} - -float *_weight_null(vqgen *v,float *a){ - return a; -} - -/* *must* be beefed up. */ -void _vqgen_seed(vqgen *v){ - long i; - for(i=0;i<v->entries;i++) - memcpy(_now(v,i),_point(v,i),sizeof(float)*v->elements); - v->seeded=1; -} - -int directdsort(const void *a, const void *b){ - float av=*((float *)a); - float bv=*((float *)b); - if(av>bv)return(-1); - return(1); -} - -void vqgen_cellmetric(vqgen *v){ - int j,k; - float min=-1.f,max=-1.f,mean=0.f,acc=0.f; - long dup=0,unused=0; - #ifdef NOISY - int i; - char buff[80]; - float spacings[v->entries]; - int count=0; - FILE *cells; - sprintf(buff,"cellspace%d.m",v->it); - cells=fopen(buff,"w"); -#endif - - /* minimum, maximum, cell spacing */ - for(j=0;j<v->entries;j++){ - float localmin=-1.; - - for(k=0;k<v->entries;k++){ - if(j!=k){ - float this=_dist(v,_now(v,j),_now(v,k)); - if(this>0){ - if(v->assigned[k] && (localmin==-1 || this<localmin)) - localmin=this; - }else{ - if(k<j){ - dup++; - break; - } - } - } - } - if(k<v->entries)continue; - - if(v->assigned[j]==0){ - unused++; - continue; - } - - localmin=v->max[j]+localmin/2; /* this gives us rough diameter */ - if(min==-1 || localmin<min)min=localmin; - if(max==-1 || localmin>max)max=localmin; - mean+=localmin; - acc++; -#ifdef NOISY - spacings[count++]=localmin; -#endif - } - - fprintf(stderr,"cell diameter: %.03g::%.03g::%.03g (%ld unused/%ld dup)\n", - min,mean/acc,max,unused,dup); - -#ifdef NOISY - qsort(spacings,count,sizeof(float),directdsort); - for(i=0;i<count;i++) - fprintf(cells,"%g\n",spacings[i]); - fclose(cells); -#endif - -} - -/* External calls *******************************************************/ - -/* We have two forms of quantization; in the first, each vector - element in the codebook entry is orthogonal. Residues would use this - quantization for example. - - In the second, we have a sequence of monotonically increasing - values that we wish to quantize as deltas (to save space). We - still need to quantize so that absolute values are accurate. For - example, LSP quantizes all absolute values, but the book encodes - distance between values because each successive value is larger - than the preceeding value. Thus the desired quantibits apply to - the encoded (delta) values, not abs positions. This requires minor - additional encode-side trickery. */ - -void vqgen_quantize(vqgen *v,quant_meta *q){ - - float maxdel; - float mindel; - - float delta; - float maxquant=((1<<q->quant)-1); - - int j,k; - - mindel=maxdel=_now(v,0)[0]; - - for(j=0;j<v->entries;j++){ - float last=0.f; - for(k=0;k<v->elements;k++){ - if(mindel>_now(v,j)[k]-last)mindel=_now(v,j)[k]-last; - if(maxdel<_now(v,j)[k]-last)maxdel=_now(v,j)[k]-last; - if(q->sequencep)last=_now(v,j)[k]; - } - } - - - /* first find the basic delta amount from the maximum span to be - encoded. Loosen the delta slightly to allow for additional error - during sequence quantization */ - - delta=(maxdel-mindel)/((1<<q->quant)-1.5f); - - q->min=_float32_pack(mindel); - q->delta=_float32_pack(delta); - - mindel=_float32_unpack(q->min); - delta=_float32_unpack(q->delta); - - for(j=0;j<v->entries;j++){ - float last=0; - for(k=0;k<v->elements;k++){ - float val=_now(v,j)[k]; - float now=rint((val-last-mindel)/delta); - - _now(v,j)[k]=now; - if(now<0){ - /* be paranoid; this should be impossible */ - fprintf(stderr,"fault; quantized value<0\n"); - exit(1); - } - - if(now>maxquant){ - /* be paranoid; this should be impossible */ - fprintf(stderr,"fault; quantized value>max\n"); - exit(1); - } - if(q->sequencep)last=(now*delta)+mindel+last; - } - } -} - -/* much easier :-). Unlike in the codebook, we don't un-log log - scales; we just make sure they're properly offset. */ -void vqgen_unquantize(vqgen *v,quant_meta *q){ - long j,k; - float mindel=_float32_unpack(q->min); - float delta=_float32_unpack(q->delta); - - for(j=0;j<v->entries;j++){ - float last=0.f; - for(k=0;k<v->elements;k++){ - float now=_now(v,j)[k]; - now=fabs(now)*delta+last+mindel; - if(q->sequencep)last=now; - _now(v,j)[k]=now; - } - } -} - -void vqgen_init(vqgen *v,int elements,int aux,int entries,float mindist, - float (*metric)(vqgen *,float *, float *), - float *(*weight)(vqgen *,float *),int centroid){ - memset(v,0,sizeof(vqgen)); - - v->centroid=centroid; - v->elements=elements; - v->aux=aux; - v->mindist=mindist; - v->allocated=32768; - v->pointlist=_ogg_malloc(v->allocated*(v->elements+v->aux)*sizeof(float)); - - v->entries=entries; - v->entrylist=_ogg_malloc(v->entries*v->elements*sizeof(float)); - v->assigned=_ogg_malloc(v->entries*sizeof(long)); - v->bias=_ogg_calloc(v->entries,sizeof(float)); - v->max=_ogg_calloc(v->entries,sizeof(float)); - if(metric) - v->metric_func=metric; - else - v->metric_func=_dist; - if(weight) - v->weight_func=weight; - else - v->weight_func=_weight_null; - - v->asciipoints=tmpfile(); - -} - -void vqgen_addpoint(vqgen *v, float *p,float *a){ - int k; - for(k=0;k<v->elements;k++) - fprintf(v->asciipoints,"%.12g\n",p[k]); - for(k=0;k<v->aux;k++) - fprintf(v->asciipoints,"%.12g\n",a[k]); - - if(v->points>=v->allocated){ - v->allocated*=2; - v->pointlist=_ogg_realloc(v->pointlist,v->allocated*(v->elements+v->aux)* - sizeof(float)); - } - - memcpy(_point(v,v->points),p,sizeof(float)*v->elements); - if(v->aux)memcpy(_point(v,v->points)+v->elements,a,sizeof(float)*v->aux); - - /* quantize to the density mesh if it's selected */ - if(v->mindist>0.f){ - /* quantize to the mesh */ - for(k=0;k<v->elements+v->aux;k++) - _point(v,v->points)[k]= - rint(_point(v,v->points)[k]/v->mindist)*v->mindist; - } - v->points++; - if(!(v->points&0xff))spinnit("loading... ",v->points); -} - -/* yes, not threadsafe. These utils aren't */ -static int sortit=0; -static int sortsize=0; -static int meshcomp(const void *a,const void *b){ - if(((sortit++)&0xfff)==0)spinnit("sorting mesh...",sortit); - return(memcmp(a,b,sortsize)); -} - -void vqgen_sortmesh(vqgen *v){ - sortit=0; - if(v->mindist>0.f){ - long i,march=1; - - /* sort to make uniqueness detection trivial */ - sortsize=(v->elements+v->aux)*sizeof(float); - qsort(v->pointlist,v->points,sortsize,meshcomp); - - /* now march through and eliminate dupes */ - for(i=1;i<v->points;i++){ - if(memcmp(_point(v,i),_point(v,i-1),sortsize)){ - /* a new, unique entry. march it down */ - if(i>march)memcpy(_point(v,march),_point(v,i),sortsize); - march++; - } - spinnit("eliminating density... ",v->points-i); - } - - /* we're done */ - fprintf(stderr,"\r%ld training points remining out of %ld" - " after density mesh (%ld%%)\n",march,v->points,march*100/v->points); - v->points=march; - - } - v->sorted=1; -} - -float vqgen_iterate(vqgen *v,int biasp){ - long i,j,k; - - float fdesired; - long desired; - long desired2; - - float asserror=0.f; - float meterror=0.f; - float *new; - float *new2; - long *nearcount; - float *nearbias; - #ifdef NOISY - char buff[80]; - FILE *assig; - FILE *bias; - FILE *cells; - sprintf(buff,"cells%d.m",v->it); - cells=fopen(buff,"w"); - sprintf(buff,"assig%d.m",v->it); - assig=fopen(buff,"w"); - sprintf(buff,"bias%d.m",v->it); - bias=fopen(buff,"w"); - #endif - - - if(v->entries<2){ - fprintf(stderr,"generation requires at least two entries\n"); - exit(1); - } - - if(!v->sorted)vqgen_sortmesh(v); - if(!v->seeded)_vqgen_seed(v); - - fdesired=(float)v->points/v->entries; - desired=fdesired; - desired2=desired*2; - new=_ogg_malloc(sizeof(float)*v->entries*v->elements); - new2=_ogg_malloc(sizeof(float)*v->entries*v->elements); - nearcount=_ogg_malloc(v->entries*sizeof(long)); - nearbias=_ogg_malloc(v->entries*desired2*sizeof(float)); - - /* fill in nearest points for entry biasing */ - /*memset(v->bias,0,sizeof(float)*v->entries);*/ - memset(nearcount,0,sizeof(long)*v->entries); - memset(v->assigned,0,sizeof(long)*v->entries); - if(biasp){ - for(i=0;i<v->points;i++){ - float *ppt=v->weight_func(v,_point(v,i)); - float firstmetric=v->metric_func(v,_now(v,0),ppt)+v->bias[0]; - float secondmetric=v->metric_func(v,_now(v,1),ppt)+v->bias[1]; - long firstentry=0; - long secondentry=1; - - if(!(i&0xff))spinnit("biasing... ",v->points+v->points+v->entries-i); - - if(firstmetric>secondmetric){ - float temp=firstmetric; - firstmetric=secondmetric; - secondmetric=temp; - firstentry=1; - secondentry=0; - } - - for(j=2;j<v->entries;j++){ - float thismetric=v->metric_func(v,_now(v,j),ppt)+v->bias[j]; - if(thismetric<secondmetric){ - if(thismetric<firstmetric){ - secondmetric=firstmetric; - secondentry=firstentry; - firstmetric=thismetric; - firstentry=j; - }else{ - secondmetric=thismetric; - secondentry=j; - } - } - } - - j=firstentry; - for(j=0;j<v->entries;j++){ - - float thismetric,localmetric; - float *nearbiasptr=nearbias+desired2*j; - long k=nearcount[j]; - - localmetric=v->metric_func(v,_now(v,j),ppt); - /* 'thismetric' is to be the bias value necessary in the current - arrangement for entry j to capture point i */ - if(firstentry==j){ - /* use the secondary entry as the threshhold */ - thismetric=secondmetric-localmetric; - }else{ - /* use the primary entry as the threshhold */ - thismetric=firstmetric-localmetric; - } - - /* support the idea of 'minimum distance'... if we want the - cells in a codebook to be roughly some minimum size (as with - the low resolution residue books) */ - - /* a cute two-stage delayed sorting hack */ - if(k<desired){ - nearbiasptr[k]=thismetric; - k++; - if(k==desired){ - spinnit("biasing... ",v->points+v->points+v->entries-i); - qsort(nearbiasptr,desired,sizeof(float),directdsort); - } - - }else if(thismetric>nearbiasptr[desired-1]){ - nearbiasptr[k]=thismetric; - k++; - if(k==desired2){ - spinnit("biasing... ",v->points+v->points+v->entries-i); - qsort(nearbiasptr,desired2,sizeof(float),directdsort); - k=desired; - } - } - nearcount[j]=k; - } - } - - /* inflate/deflate */ - - for(i=0;i<v->entries;i++){ - float *nearbiasptr=nearbias+desired2*i; - - spinnit("biasing... ",v->points+v->entries-i); - - /* due to the delayed sorting, we likely need to finish it off....*/ - if(nearcount[i]>desired) - qsort(nearbiasptr,nearcount[i],sizeof(float),directdsort); - - v->bias[i]=nearbiasptr[desired-1]; - - } - }else{ - memset(v->bias,0,v->entries*sizeof(float)); - } - - /* Now assign with new bias and find new midpoints */ - for(i=0;i<v->points;i++){ - float *ppt=v->weight_func(v,_point(v,i)); - float firstmetric=v->metric_func(v,_now(v,0),ppt)+v->bias[0]; - long firstentry=0; - - if(!(i&0xff))spinnit("centering... ",v->points-i); - - for(j=0;j<v->entries;j++){ - float thismetric=v->metric_func(v,_now(v,j),ppt)+v->bias[j]; - if(thismetric<firstmetric){ - firstmetric=thismetric; - firstentry=j; - } - } - - j=firstentry; - -#ifdef NOISY - fprintf(cells,"%g %g\n%g %g\n\n", - _now(v,j)[0],_now(v,j)[1], - ppt[0],ppt[1]); -#endif - - firstmetric-=v->bias[j]; - meterror+=firstmetric; - - if(v->centroid==0){ - /* set up midpoints for next iter */ - if(v->assigned[j]++){ - for(k=0;k<v->elements;k++) - vN(new,j)[k]+=ppt[k]; - if(firstmetric>v->max[j])v->max[j]=firstmetric; - }else{ - for(k=0;k<v->elements;k++) - vN(new,j)[k]=ppt[k]; - v->max[j]=firstmetric; - } - }else{ - /* centroid */ - if(v->assigned[j]++){ - for(k=0;k<v->elements;k++){ - if(vN(new,j)[k]>ppt[k])vN(new,j)[k]=ppt[k]; - if(vN(new2,j)[k]<ppt[k])vN(new2,j)[k]=ppt[k]; - } - if(firstmetric>v->max[firstentry])v->max[j]=firstmetric; - }else{ - for(k=0;k<v->elements;k++){ - vN(new,j)[k]=ppt[k]; - vN(new2,j)[k]=ppt[k]; - } - v->max[firstentry]=firstmetric; - } - } - } - - /* assign midpoints */ - - for(j=0;j<v->entries;j++){ -#ifdef NOISY - fprintf(assig,"%ld\n",v->assigned[j]); - fprintf(bias,"%g\n",v->bias[j]); -#endif - asserror+=fabs(v->assigned[j]-fdesired); - if(v->assigned[j]){ - if(v->centroid==0){ - for(k=0;k<v->elements;k++) - _now(v,j)[k]=vN(new,j)[k]/v->assigned[j]; - }else{ - for(k=0;k<v->elements;k++) - _now(v,j)[k]=(vN(new,j)[k]+vN(new2,j)[k])/2.f; - } - } - } - - asserror/=(v->entries*fdesired); - - fprintf(stderr,"Pass #%d... ",v->it); - fprintf(stderr,": dist %g(%g) metric error=%g \n", - asserror,fdesired,meterror/v->points); - v->it++; - - free(new); - free(nearcount); - free(nearbias); -#ifdef NOISY - fclose(assig); - fclose(bias); - fclose(cells); -#endif - return(asserror); -} - diff --git a/vq/vqgen.h b/vq/vqgen.h deleted file mode 100644 index 256d5a54..00000000 --- a/vq/vqgen.h +++ /dev/null @@ -1,85 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: build a VQ codebook - last mod: $Id: vqgen.h,v 1.19 2001/12/20 01:00:40 segher Exp $ - - ********************************************************************/ - -#ifndef _VQGEN_H_ -#define _VQGEN_H_ - -typedef struct vqgen{ - int seeded; - int sorted; - - int it; - int elements; - - int aux; - float mindist; - int centroid; - - /* point cache */ - float *pointlist; - long points; - long allocated; - - /* entries */ - float *entrylist; - long *assigned; - float *bias; - long entries; - float *max; - - float (*metric_func) (struct vqgen *v,float *entry,float *point); - float *(*weight_func) (struct vqgen *v,float *point); - - FILE *asciipoints; -} vqgen; - -typedef struct { - long min; /* packed 24 bit float */ - long delta; /* packed 24 bit float */ - int quant; /* 0 < quant <= 16 */ - int sequencep; /* bitflag */ -} quant_meta; - -static inline float *_point(vqgen *v,long ptr){ - return v->pointlist+((v->elements+v->aux)*ptr); -} - -static inline float *_aux(vqgen *v,long ptr){ - return _point(v,ptr)+v->aux; -} - -static inline float *_now(vqgen *v,long ptr){ - return v->entrylist+(v->elements*ptr); -} - -extern void vqgen_init(vqgen *v, - int elements,int aux,int entries,float mindist, - float (*metric)(vqgen *,float *, float *), - float *(*weight)(vqgen *,float *),int centroid); -extern void vqgen_addpoint(vqgen *v, float *p,float *aux); - -extern float vqgen_iterate(vqgen *v,int biasp); -extern void vqgen_unquantize(vqgen *v,quant_meta *q); -extern void vqgen_quantize(vqgen *v,quant_meta *q); -extern void vqgen_cellmetric(vqgen *v); - -#endif - - - - - diff --git a/vq/vqsplit.c b/vq/vqsplit.c deleted file mode 100644 index b79e807d..00000000 --- a/vq/vqsplit.c +++ /dev/null @@ -1,612 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: build a VQ codebook and the encoding decision 'tree' - last mod: $Id: vqsplit.c,v 1.26 2001/12/20 01:00:40 segher Exp $ - - ********************************************************************/ - -/* This code is *not* part of libvorbis. It is used to generate - trained codebooks offline and then spit the results into a - pregenerated codebook that is compiled into libvorbis. It is an - expensive (but good) algorithm. Run it on big iron. */ - -/* There are so many optimizations to explore in *both* stages that - considering the undertaking is almost withering. For now, we brute - force it all */ - -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <sys/time.h> - -#include "vqgen.h" -#include "vqsplit.h" -#include "bookutil.h" - -/* Codebook generation happens in two steps: - - 1) Train the codebook with data collected from the encoder: We use - one of a few error metrics (which represent the distance between a - given data point and a candidate point in the training set) to - divide the training set up into cells representing roughly equal - probability of occurring. - - 2) Generate the codebook and auxiliary data from the trained data set -*/ - -/* Building a codebook from trained set ********************************** - - The codebook in raw form is technically finished once it's trained. - However, we want to finalize the representative codebook values for - each entry and generate auxiliary information to optimize encoding. - We generate the auxiliary coding tree using collected data, - probably the same data as in the original training */ - -/* At each recursion, the data set is split in half. Cells with data - points on side A go into set A, same with set B. The sets may - overlap. If the cell overlaps the deviding line only very slightly - (provided parameter), we may choose to ignore the overlap in order - to pare the tree down */ - -long *isortvals; -int iascsort(const void *a,const void *b){ - long av=isortvals[*((long *)a)]; - long bv=isortvals[*((long *)b)]; - return(av-bv); -} - -static float _Ndist(int el,float *a, float *b){ - int i; - float acc=0.f; - for(i=0;i<el;i++){ - float val=(a[i]-b[i]); - acc+=val*val; - } - return sqrt(acc); -} - -#define _Npoint(i) (pointlist+dim*(i)) -#define _Nnow(i) (entrylist+dim*(i)) - - -/* goes through the split, but just counts it and returns a metric*/ -int vqsp_count(float *entrylist,float *pointlist,int dim, - long *membership,long *reventry, - long *entryindex,long entries, - long *pointindex,long points,int splitp, - long *entryA,long *entryB, - long besti,long bestj, - long *entriesA,long *entriesB,long *entriesC){ - long i,j; - long A=0,B=0,C=0; - long pointsA=0; - long pointsB=0; - long *temppointsA=NULL; - long *temppointsB=NULL; - - if(splitp){ - temppointsA=_ogg_malloc(points*sizeof(long)); - temppointsB=_ogg_malloc(points*sizeof(long)); - } - - memset(entryA,0,sizeof(long)*entries); - memset(entryB,0,sizeof(long)*entries); - - /* Do the points belonging to this cell occur on sideA, sideB or - both? */ - - for(i=0;i<points;i++){ - float *ppt=_Npoint(pointindex[i]); - long firstentry=membership[pointindex[i]]; - - if(firstentry==besti){ - entryA[reventry[firstentry]]=1; - if(splitp)temppointsA[pointsA++]=pointindex[i]; - continue; - } - if(firstentry==bestj){ - entryB[reventry[firstentry]]=1; - if(splitp)temppointsB[pointsB++]=pointindex[i]; - continue; - } - { - float distA=_Ndist(dim,ppt,_Nnow(besti)); - float distB=_Ndist(dim,ppt,_Nnow(bestj)); - if(distA<distB){ - entryA[reventry[firstentry]]=1; - if(splitp)temppointsA[pointsA++]=pointindex[i]; - }else{ - entryB[reventry[firstentry]]=1; - if(splitp)temppointsB[pointsB++]=pointindex[i]; - } - } - } - - /* The entry splitting isn't total, so that storage has to be - allocated for recursion. Reuse the entryA/entryB vectors */ - /* keep the entries in ascending order (relative to the original - list); we rely on that stability when ordering p/q choice */ - for(j=0;j<entries;j++){ - if(entryA[j] && entryB[j])C++; - if(entryA[j])entryA[A++]=entryindex[j]; - if(entryB[j])entryB[B++]=entryindex[j]; - } - *entriesA=A; - *entriesB=B; - *entriesC=C; - if(splitp){ - memcpy(pointindex,temppointsA,sizeof(long)*pointsA); - memcpy(pointindex+pointsA,temppointsB,sizeof(long)*pointsB); - free(temppointsA); - free(temppointsB); - } - return(pointsA); -} - -int lp_split(float *pointlist,long totalpoints, - codebook *b, - long *entryindex,long entries, - long *pointindex,long points, - long *membership,long *reventry, - long depth, long *pointsofar){ - - encode_aux_nearestmatch *t=b->c->nearest_tree; - - /* The encoder, regardless of book, will be using a straight - euclidian distance-to-point metric to determine closest point. - Thus we split the cells using the same (we've already trained the - codebook set spacing and distribution using special metrics and - even a midpoint division won't disturb the basic properties) */ - - int dim=b->dim; - float *entrylist=b->valuelist; - long ret; - long *entryA=_ogg_calloc(entries,sizeof(long)); - long *entryB=_ogg_calloc(entries,sizeof(long)); - long entriesA=0; - long entriesB=0; - long entriesC=0; - long pointsA=0; - long i,j,k; - - long besti=-1; - long bestj=-1; - - char spinbuf[80]; - sprintf(spinbuf,"splitting [%ld left]... ",totalpoints-*pointsofar); - - /* one reverse index needed */ - for(i=0;i<b->entries;i++)reventry[i]=-1; - for(i=0;i<entries;i++)reventry[entryindex[i]]=i; - - /* We need to find the dividing hyperplane. find the median of each - axis as the centerpoint and the normal facing farthest point */ - - /* more than one way to do this part. For small sets, we can brute - force it. */ - - if(entries<8 || (float)points*entries*entries<16.f*1024*1024){ - /* try every pair possibility */ - float best=0; - float this; - for(i=0;i<entries-1;i++){ - for(j=i+1;j<entries;j++){ - spinnit(spinbuf,entries-i); - vqsp_count(b->valuelist,pointlist,dim, - membership,reventry, - entryindex,entries, - pointindex,points,0, - entryA,entryB, - entryindex[i],entryindex[j], - &entriesA,&entriesB,&entriesC); - this=(entriesA-entriesC)*(entriesB-entriesC); - - /* when choosing best, we also want some form of stability to - make sure more branches are pared later; secondary - weighting isn;t needed as the entry lists are in ascending - order, and we always try p/q in the same sequence */ - - if( (besti==-1) || - (this>best) ){ - - best=this; - besti=entryindex[i]; - bestj=entryindex[j]; - - } - } - } - }else{ - float *p=alloca(dim*sizeof(float)); - float *q=alloca(dim*sizeof(float)); - float best=0.f; - - /* try COG/normal and furthest pairs */ - /* meanpoint */ - /* eventually, we want to select the closest entry and figure n/c - from p/q (because storing n/c is too large */ - for(k=0;k<dim;k++){ - spinnit(spinbuf,entries); - - p[k]=0.f; - for(j=0;j<entries;j++) - p[k]+=b->valuelist[entryindex[j]*dim+k]; - p[k]/=entries; - - } - - /* we go through the entries one by one, looking for the entry on - the other side closest to the point of reflection through the - center */ - - for(i=0;i<entries;i++){ - float *ppi=_Nnow(entryindex[i]); - float ref_best=0.f; - float ref_j=-1; - float this; - spinnit(spinbuf,entries-i); - - for(k=0;k<dim;k++) - q[k]=2*p[k]-ppi[k]; - - for(j=0;j<entries;j++){ - if(j!=i){ - float this=_Ndist(dim,q,_Nnow(entryindex[j])); - if(ref_j==-1 || this<=ref_best){ /* <=, not <; very important */ - ref_best=this; - ref_j=entryindex[j]; - } - } - } - - vqsp_count(b->valuelist,pointlist,dim, - membership,reventry, - entryindex,entries, - pointindex,points,0, - entryA,entryB, - entryindex[i],ref_j, - &entriesA,&entriesB,&entriesC); - this=(entriesA-entriesC)*(entriesB-entriesC); - - /* when choosing best, we also want some form of stability to - make sure more branches are pared later; secondary - weighting isn;t needed as the entry lists are in ascending - order, and we always try p/q in the same sequence */ - - if( (besti==-1) || - (this>best) ){ - - best=this; - besti=entryindex[i]; - bestj=ref_j; - - } - } - if(besti>bestj){ - long temp=besti; - besti=bestj; - bestj=temp; - } - - } - - /* find cells enclosing points */ - /* count A/B points */ - - pointsA=vqsp_count(b->valuelist,pointlist,dim, - membership,reventry, - entryindex,entries, - pointindex,points,1, - entryA,entryB, - besti,bestj, - &entriesA,&entriesB,&entriesC); - - /* fprintf(stderr,"split: total=%ld depth=%ld set A=%ld:%ld:%ld=B\n", - entries,depth,entriesA-entriesC,entriesC,entriesB-entriesC);*/ - { - long thisaux=t->aux++; - if(t->aux>=t->alloc){ - t->alloc*=2; - t->ptr0=_ogg_realloc(t->ptr0,sizeof(long)*t->alloc); - t->ptr1=_ogg_realloc(t->ptr1,sizeof(long)*t->alloc); - t->p=_ogg_realloc(t->p,sizeof(long)*t->alloc); - t->q=_ogg_realloc(t->q,sizeof(long)*t->alloc); - } - - t->p[thisaux]=besti; - t->q[thisaux]=bestj; - - if(entriesA==1){ - ret=1; - t->ptr0[thisaux]=entryA[0]; - *pointsofar+=pointsA; - }else{ - t->ptr0[thisaux]= -t->aux; - ret=lp_split(pointlist,totalpoints,b,entryA,entriesA,pointindex,pointsA, - membership,reventry,depth+1,pointsofar); - } - if(entriesB==1){ - ret++; - t->ptr1[thisaux]=entryB[0]; - *pointsofar+=points-pointsA; - }else{ - t->ptr1[thisaux]= -t->aux; - ret+=lp_split(pointlist,totalpoints,b,entryB,entriesB,pointindex+pointsA, - points-pointsA,membership,reventry, - depth+1,pointsofar); - } - } - free(entryA); - free(entryB); - return(ret); -} - -static int _node_eq(encode_aux_nearestmatch *v, long a, long b){ - long Aptr0=v->ptr0[a]; - long Aptr1=v->ptr1[a]; - long Bptr0=v->ptr0[b]; - long Bptr1=v->ptr1[b]; - - /* the possibility of choosing the same p and q, but switched, can;t - happen because we always look for the best p/q in the same search - order and the search is stable */ - - if(Aptr0==Bptr0 && Aptr1==Bptr1) - return(1); - - return(0); -} - -void vqsp_book(vqgen *v, codebook *b, long *quantlist){ - long i,j; - static_codebook *c=(static_codebook *)b->c; - encode_aux_nearestmatch *t; - - memset(b,0,sizeof(codebook)); - memset(c,0,sizeof(static_codebook)); - b->c=c; - t=c->nearest_tree=_ogg_calloc(1,sizeof(encode_aux_nearestmatch)); - c->maptype=2; - - /* make sure there are no duplicate entries and that every - entry has points */ - - for(i=0;i<v->entries;){ - /* duplicate? if so, eliminate */ - for(j=0;j<i;j++){ - if(_Ndist(v->elements,_now(v,i),_now(v,j))==0.f){ - fprintf(stderr,"found a duplicate entry! removing...\n"); - v->entries--; - memcpy(_now(v,i),_now(v,v->entries),sizeof(float)*v->elements); - memcpy(quantlist+i*v->elements,quantlist+v->entries*v->elements, - sizeof(long)*v->elements); - break; - } - } - if(j==i)i++; - } - - { - v->assigned=_ogg_calloc(v->entries,sizeof(long)); - for(i=0;i<v->points;i++){ - float *ppt=_point(v,i); - float firstmetric=_Ndist(v->elements,_now(v,0),ppt); - long firstentry=0; - - if(!(i&0xff))spinnit("checking... ",v->points-i); - - for(j=0;j<v->entries;j++){ - float thismetric=_Ndist(v->elements,_now(v,j),ppt); - if(thismetric<firstmetric){ - firstmetric=thismetric; - firstentry=j; - } - } - - v->assigned[firstentry]++; - } - - for(j=0;j<v->entries;){ - if(v->assigned[j]==0){ - fprintf(stderr,"found an unused entry! removing...\n"); - v->entries--; - memcpy(_now(v,j),_now(v,v->entries),sizeof(float)*v->elements); - v->assigned[j]=v->assigned[v->elements]; - memcpy(quantlist+j*v->elements,quantlist+v->entries*v->elements, - sizeof(long)*v->elements); - continue; - } - j++; - } - } - - fprintf(stderr,"Building a book with %ld unique entries...\n",v->entries); - - { - long *entryindex=_ogg_malloc(v->entries*sizeof(long *)); - long *pointindex=_ogg_malloc(v->points*sizeof(long)); - long *membership=_ogg_malloc(v->points*sizeof(long)); - long *reventry=_ogg_malloc(v->entries*sizeof(long)); - long pointssofar=0; - - for(i=0;i<v->entries;i++)entryindex[i]=i; - for(i=0;i<v->points;i++)pointindex[i]=i; - - t->alloc=4096; - t->ptr0=_ogg_malloc(sizeof(long)*t->alloc); - t->ptr1=_ogg_malloc(sizeof(long)*t->alloc); - t->p=_ogg_malloc(sizeof(long)*t->alloc); - t->q=_ogg_malloc(sizeof(long)*t->alloc); - t->aux=0; - c->dim=v->elements; - c->entries=v->entries; - c->lengthlist=_ogg_calloc(c->entries,sizeof(long)); - b->valuelist=v->entrylist; /* temporary; replaced later */ - b->dim=c->dim; - b->entries=c->entries; - - for(i=0;i<v->points;i++)membership[i]=-1; - for(i=0;i<v->points;i++){ - float *ppt=_point(v,i); - long firstentry=0; - float firstmetric=_Ndist(v->elements,_now(v,0),ppt); - - if(!(i&0xff))spinnit("assigning... ",v->points-i); - - for(j=1;j<v->entries;j++){ - if(v->assigned[j]!=-1){ - float thismetric=_Ndist(v->elements,_now(v,j),ppt); - if(thismetric<=firstmetric){ - firstmetric=thismetric; - firstentry=j; - } - } - } - - membership[i]=firstentry; - } - - fprintf(stderr,"Leaves added: %d \n", - lp_split(v->pointlist,v->points, - b,entryindex,v->entries, - pointindex,v->points, - membership,reventry, - 0,&pointssofar)); - - free(pointindex); - free(membership); - free(reventry); - - fprintf(stderr,"Paring/rerouting redundant branches... "); - - /* The tree is likely big and redundant. Pare and reroute branches */ - { - int changedflag=1; - - while(changedflag){ - changedflag=0; - - /* span the tree node by node; list unique decision nodes and - short circuit redundant branches */ - - for(i=0;i<t->aux;){ - int k; - - /* check list of unique decisions */ - for(j=0;j<i;j++) - if(_node_eq(t,i,j))break; - - if(j<i){ - /* a redundant entry; find all higher nodes referencing it and - short circuit them to the previously noted unique entry */ - changedflag=1; - for(k=0;k<t->aux;k++){ - if(t->ptr0[k]==-i)t->ptr0[k]=-j; - if(t->ptr1[k]==-i)t->ptr1[k]=-j; - } - - /* Now, we need to fill in the hole from this redundant - entry in the listing. Insert the last entry in the list. - Fix the forward pointers to that last entry */ - t->aux--; - t->ptr0[i]=t->ptr0[t->aux]; - t->ptr1[i]=t->ptr1[t->aux]; - t->p[i]=t->p[t->aux]; - t->q[i]=t->q[t->aux]; - for(k=0;k<t->aux;k++){ - if(t->ptr0[k]==-t->aux)t->ptr0[k]=-i; - if(t->ptr1[k]==-t->aux)t->ptr1[k]=-i; - } - /* hole plugged */ - - }else - i++; - } - - fprintf(stderr,"\rParing/rerouting redundant branches... " - "%ld remaining ",t->aux); - } - fprintf(stderr,"\n"); - } - } - - /* run all training points through the decision tree to get a final - probability count */ - { - long *probability=_ogg_malloc(c->entries*sizeof(long)); - for(i=0;i<c->entries;i++)probability[i]=1; /* trivial guard */ - b->dim=c->dim; - - /* sigh. A necessary hack */ - for(i=0;i<t->aux;i++)t->p[i]*=c->dim; - for(i=0;i<t->aux;i++)t->q[i]*=c->dim; - - for(i=0;i<v->points;i++){ - /* we use the linear matcher regardless becuase the trainer - doesn't convert log to linear */ - int ret=_best(b,v->pointlist+i*v->elements,1); - probability[ret]++; - if(!(i&0xff))spinnit("counting hits... ",v->points-i); - } - for(i=0;i<t->aux;i++)t->p[i]/=c->dim; - for(i=0;i<t->aux;i++)t->q[i]/=c->dim; - - build_tree_from_lengths(c->entries,probability,c->lengthlist); - - free(probability); - } - - /* Sort the entries by codeword length, short to long (eases - assignment and packing to do it now) */ - { - long *wordlen=c->lengthlist; - long *index=_ogg_malloc(c->entries*sizeof(long)); - long *revindex=_ogg_malloc(c->entries*sizeof(long)); - int k; - for(i=0;i<c->entries;i++)index[i]=i; - isortvals=c->lengthlist; - qsort(index,c->entries,sizeof(long),iascsort); - - /* rearrange storage; ptr0/1 first as it needs a reverse index */ - /* n and c stay unchanged */ - for(i=0;i<c->entries;i++)revindex[index[i]]=i; - for(i=0;i<t->aux;i++){ - if(!(i&0x3f))spinnit("sorting... ",t->aux-i); - - if(t->ptr0[i]>=0)t->ptr0[i]=revindex[t->ptr0[i]]; - if(t->ptr1[i]>=0)t->ptr1[i]=revindex[t->ptr1[i]]; - t->p[i]=revindex[t->p[i]]; - t->q[i]=revindex[t->q[i]]; - } - free(revindex); - - /* map lengthlist and vallist with index */ - c->lengthlist=_ogg_calloc(c->entries,sizeof(long)); - b->valuelist=_ogg_malloc(sizeof(float)*c->entries*c->dim); - c->quantlist=_ogg_malloc(sizeof(long)*c->entries*c->dim); - for(i=0;i<c->entries;i++){ - long e=index[i]; - for(k=0;k<c->dim;k++){ - b->valuelist[i*c->dim+k]=v->entrylist[e*c->dim+k]; - c->quantlist[i*c->dim+k]=quantlist[e*c->dim+k]; - } - c->lengthlist[i]=wordlen[e]; - } - - free(wordlen); - } - - fprintf(stderr,"Done. \n\n"); -} - diff --git a/vq/vqsplit.h b/vq/vqsplit.h deleted file mode 100644 index cdaa3279..00000000 --- a/vq/vqsplit.h +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: build a VQ codebook decision tree - last mod: $Id: vqsplit.h,v 1.8 2001/12/20 01:00:40 segher Exp $ - - ********************************************************************/ - -#ifndef _VQSPL_H_ -#define _VQSPL_H_ - -#include "codebook.h" - -extern void vqsp_book(vqgen *v,codebook *b,long *quantlist); -extern int vqenc_entry(codebook *b,float *val); -extern int lp_split(float *pointlist,long totalpoints, - codebook *b, - long *entryindex,long entries, - long *pointindex,long points, - long *membership,long *reventry, - long depth, long *pointsofar); - -#endif - - - - - diff --git a/win32/.cvsignore b/win32/.cvsignore deleted file mode 100644 index 91448ec0..00000000 --- a/win32/.cvsignore +++ /dev/null @@ -1,20 +0,0 @@ -Makefile -Makefile.in -VorbisEnc_Dynamic_Debug -VorbisEnc_Dynamic_Release -VorbisEnc_Static_Debug -VorbisEnc_Static_Release -VorbisFile_Dynamic_Debug -VorbisFile_Dynamic_Release -VorbisFile_Static_Debug -VorbisFile_Static_Release -Vorbis_Dynamic_Debug -Vorbis_Dynamic_Release -Vorbis_Static_Debug -Vorbis_Static_Release -*.dep -*.mak -*.ncb -*.opt -*.dsw -*.plg diff --git a/win32/Makefile.am b/win32/Makefile.am deleted file mode 100644 index f262326c..00000000 --- a/win32/Makefile.am +++ /dev/null @@ -1,14 +0,0 @@ -## Process this with automake to create Makefile.in - -AUTOMAKE_OPTIONS = foreign - - -EXTRA_DIST = vorbis.def vorbis_dynamic.dsp vorbis_static.dsp\ - vorbisfile.def vorbisfile_dynamic.dsp vorbisfile_static.dsp\ - vorbisenc.def vorbisenc_dynamic.dsp vorbisenc_static.dsp\ - build_vorbis_dynamic.bat build_vorbis_dynamic_debug.bat\ - build_vorbis_static.bat build_vorbis_static_debug.bat\ - build_vorbisenc_dynamic.bat build_vorbisenc_dynamic_debug.bat\ - build_vorbisenc_static.bat build_vorbisenc_static_debug.bat\ - build_vorbisfile_dynamic.bat build_vorbisfile_dynamic_debug.bat\ - build_vorbisfile_static.bat build_vorbisfile_static_debug.bat diff --git a/win32/build_vorbis_dynamic.bat b/win32/build_vorbis_dynamic.bat deleted file mode 100755 index 9434779e..00000000 --- a/win32/build_vorbis_dynamic.bat +++ /dev/null @@ -1,19 +0,0 @@ -@echo off -echo ---+++--- Building Vorbis (Dynamic) ---+++--- - -if .%SRCROOT%==. set SRCROOT=i:\xiph - -set OLDPATH=%PATH% -set OLDINCLUDE=%INCLUDE% -set OLDLIB=%LIB% - -call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat" -echo Setting include/lib paths for Vorbis -set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include -set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Release -echo Compiling... -msdev vorbis_dynamic.dsp /useenv /make "vorbis_dynamic - Win32 Release" /rebuild - -set PATH=%OLDPATH% -set INCLUDE=%OLDINCLUDE% -set LIB=%OLDLIB% diff --git a/win32/build_vorbis_dynamic_debug.bat b/win32/build_vorbis_dynamic_debug.bat deleted file mode 100755 index ffe5bd63..00000000 --- a/win32/build_vorbis_dynamic_debug.bat +++ /dev/null @@ -1,19 +0,0 @@ -@echo off -echo ---+++--- Building Vorbis (Dynamic) ---+++--- - -if .%SRCROOT%==. set SRCROOT=i:\xiph - -set OLDPATH=%PATH% -set OLDINCLUDE=%INCLUDE% -set OLDLIB=%LIB% - -call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat" -echo Setting include/lib paths for Vorbis -set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include -set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Debug -echo Compiling... -msdev vorbis_dynamic.dsp /useenv /make "vorbis_dynamic - Win32 Debug" /rebuild - -set PATH=%OLDPATH% -set INCLUDE=%OLDINCLUDE% -set LIB=%OLDLIB% diff --git a/win32/build_vorbis_static.bat b/win32/build_vorbis_static.bat deleted file mode 100755 index 35cb60af..00000000 --- a/win32/build_vorbis_static.bat +++ /dev/null @@ -1,19 +0,0 @@ -@echo off -echo ---+++--- Building Vorbis (Static) ---+++--- - -if .%SRCROOT%==. set SRCROOT=i:\xiph - -set OLDPATH=%PATH% -set OLDINCLUDE=%INCLUDE% -set OLDLIB=%LIB% - -call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat" -echo Setting include/lib paths for Vorbis -set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include -set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Release -echo Compiling... -msdev vorbis_static.dsp /useenv /make "vorbis_static - Win32 Release" /rebuild - -set PATH=%OLDPATH% -set INCLUDE=%OLDINCLUDE% -set LIB=%OLDLIB% diff --git a/win32/build_vorbis_static_debug.bat b/win32/build_vorbis_static_debug.bat deleted file mode 100755 index fd302949..00000000 --- a/win32/build_vorbis_static_debug.bat +++ /dev/null @@ -1,19 +0,0 @@ -@echo off -echo ---+++--- Building Vorbis (Static) ---+++--- - -if .%SRCROOT%==. set SRCROOT=i:\xiph - -set OLDPATH=%PATH% -set OLDINCLUDE=%INCLUDE% -set OLDLIB=%LIB% - -call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat" -echo Setting include/lib paths for Vorbis -set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include -set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Debug -echo Compiling... -msdev vorbis_static.dsp /useenv /make "vorbis_static - Win32 Debug" /rebuild - -set PATH=%OLDPATH% -set INCLUDE=%OLDINCLUDE% -set LIB=%OLDLIB% diff --git a/win32/build_vorbisenc_dynamic.bat b/win32/build_vorbisenc_dynamic.bat deleted file mode 100755 index 7cbcd94b..00000000 --- a/win32/build_vorbisenc_dynamic.bat +++ /dev/null @@ -1,19 +0,0 @@ -@echo off -echo ---+++--- Building Vorbisenc (Dynamic) ---+++--- - -if .%SRCROOT%==. set SRCROOT=i:\xiph - -set OLDPATH=%PATH% -set OLDINCLUDE=%INCLUDE% -set OLDLIB=%LIB% - -call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat" -echo Setting include/lib paths for Vorbis -set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include -set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Release;%SRCROOT%\vorbis\win32\Dynamic_Release -echo Compiling... -msdev vorbisenc_dynamic.dsp /useenv /make "vorbisenc_dynamic - Win32 Release" /rebuild - -set PATH=%OLDPATH% -set INCLUDE=%OLDINCLUDE% -set LIB=%OLDLIB% diff --git a/win32/build_vorbisenc_dynamic_debug.bat b/win32/build_vorbisenc_dynamic_debug.bat deleted file mode 100755 index eb997849..00000000 --- a/win32/build_vorbisenc_dynamic_debug.bat +++ /dev/null @@ -1,19 +0,0 @@ -@echo off -echo ---+++--- Building Vorbisenc (Dynamic) ---+++--- - -if .%SRCROOT%==. set SRCROOT=i:\xiph - -set OLDPATH=%PATH% -set OLDINCLUDE=%INCLUDE% -set OLDLIB=%LIB% - -call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat" -echo Setting include/lib paths for Vorbis -set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include -set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Debug;%SRCROOT%\vorbis\win32\Dynamic_Debug -echo Compiling... -msdev vorbisenc_dynamic.dsp /useenv /make "vorbisenc_dynamic - Win32 Debug" /rebuild - -set PATH=%OLDPATH% -set INCLUDE=%OLDINCLUDE% -set LIB=%OLDLIB% diff --git a/win32/build_vorbisenc_static.bat b/win32/build_vorbisenc_static.bat deleted file mode 100755 index 338c460a..00000000 --- a/win32/build_vorbisenc_static.bat +++ /dev/null @@ -1,19 +0,0 @@ -@echo off -echo ---+++--- Building Vorbisenc (Static) ---+++--- - -if .%SRCROOT%==. set SRCROOT=i:\xiph - -set OLDPATH=%PATH% -set OLDINCLUDE=%INCLUDE% -set OLDLIB=%LIB% - -call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat" -echo Setting include/lib paths for Vorbis -set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include -set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Release;%SRCROOT%\vorbis\win32\Dynamic_Release -echo Compiling... -msdev vorbisenc_static.dsp /useenv /make "vorbisenc_static - Win32 Release" /rebuild - -set PATH=%OLDPATH% -set INCLUDE=%OLDINCLUDE% -set LIB=%OLDLIB% diff --git a/win32/build_vorbisenc_static_debug.bat b/win32/build_vorbisenc_static_debug.bat deleted file mode 100755 index 2141b5db..00000000 --- a/win32/build_vorbisenc_static_debug.bat +++ /dev/null @@ -1,19 +0,0 @@ -@echo off -echo ---+++--- Building Vorbisenc (Static) ---+++--- - -if .%SRCROOT%==. set SRCROOT=i:\xiph - -set OLDPATH=%PATH% -set OLDINCLUDE=%INCLUDE% -set OLDLIB=%LIB% - -call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat" -echo Setting include/lib paths for Vorbis -set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include -set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Debug;%SRCROOT%\vorbis\win32\Dynamic_Debug -echo Compiling... -msdev vorbisenc_static.dsp /useenv /make "vorbisenc_static - Win32 Debug" /rebuild - -set PATH=%OLDPATH% -set INCLUDE=%OLDINCLUDE% -set LIB=%OLDLIB% diff --git a/win32/build_vorbisfile_dynamic.bat b/win32/build_vorbisfile_dynamic.bat deleted file mode 100755 index 5a38feee..00000000 --- a/win32/build_vorbisfile_dynamic.bat +++ /dev/null @@ -1,19 +0,0 @@ -@echo off -echo ---+++--- Building Vorbisfile (Dynamic) ---+++--- - -if .%SRCROOT%==. set SRCROOT=i:\xiph - -set OLDPATH=%PATH% -set OLDINCLUDE=%INCLUDE% -set OLDLIB=%LIB% - -call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat" -echo Setting include/lib paths for Vorbis -set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include -set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Release;%SRCROOT%\vorbis\win32\Dynamic_Release -echo Compiling... -msdev vorbisfile_dynamic.dsp /useenv /make "vorbisfile_dynamic - Win32 Release" /rebuild - -set PATH=%OLDPATH% -set INCLUDE=%OLDINCLUDE% -set LIB=%OLDLIB% diff --git a/win32/build_vorbisfile_dynamic_debug.bat b/win32/build_vorbisfile_dynamic_debug.bat deleted file mode 100755 index 82101625..00000000 --- a/win32/build_vorbisfile_dynamic_debug.bat +++ /dev/null @@ -1,19 +0,0 @@ -@echo off -echo ---+++--- Building Vorbisfile (Dynamic) ---+++--- - -if .%SRCROOT%==. set SRCROOT=i:\xiph - -set OLDPATH=%PATH% -set OLDINCLUDE=%INCLUDE% -set OLDLIB=%LIB% - -call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat" -echo Setting include/lib paths for Vorbis -set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include -set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Debug;%SRCROOT%\vorbis\win32\Dynamic_Debug -echo Compiling... -msdev vorbisfile_dynamic.dsp /useenv /make "vorbisfile_dynamic - Win32 Debug" /rebuild - -set PATH=%OLDPATH% -set INCLUDE=%OLDINCLUDE% -set LIB=%OLDLIB% diff --git a/win32/build_vorbisfile_static.bat b/win32/build_vorbisfile_static.bat deleted file mode 100755 index 1de78463..00000000 --- a/win32/build_vorbisfile_static.bat +++ /dev/null @@ -1,19 +0,0 @@ -@echo off -echo ---+++--- Building Vorbisfile (Static) ---+++--- - -if .%SRCROOT%==. set SRCROOT=i:\xiph - -set OLDPATH=%PATH% -set OLDINCLUDE=%INCLUDE% -set OLDLIB=%LIB% - -call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat" -echo Setting include/lib paths for Vorbis -set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include -set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Release;%SRCROOT%\vorbis\win32\Dynamic_Release -echo Compiling... -msdev vorbisfile_static.dsp /useenv /make "vorbisfile_static - Win32 Release" /rebuild - -set PATH=%OLDPATH% -set INCLUDE=%OLDINCLUDE% -set LIB=%OLDLIB% diff --git a/win32/build_vorbisfile_static_debug.bat b/win32/build_vorbisfile_static_debug.bat deleted file mode 100755 index 7f2250e5..00000000 --- a/win32/build_vorbisfile_static_debug.bat +++ /dev/null @@ -1,19 +0,0 @@ -@echo off -echo ---+++--- Building Vorbisfile (Static) ---+++--- - -if .%SRCROOT%==. set SRCROOT=i:\xiph - -set OLDPATH=%PATH% -set OLDINCLUDE=%INCLUDE% -set OLDLIB=%LIB% - -call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat" -echo Setting include/lib paths for Vorbis -set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include -set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Debug;%SRCROOT%\vorbis\win32\Dynamic_Debug -echo Compiling... -msdev vorbisfile_static.dsp /useenv /make "vorbisfile_static - Win32 Debug" /rebuild - -set PATH=%OLDPATH% -set INCLUDE=%OLDINCLUDE% -set LIB=%OLDLIB% diff --git a/win32/vorbis.def b/win32/vorbis.def deleted file mode 100644 index a79b2ce5..00000000 --- a/win32/vorbis.def +++ /dev/null @@ -1,39 +0,0 @@ -; -; $Id: vorbis.def,v 1.8 2001/12/27 14:25:20 cwolf Exp $ -; -LIBRARY -EXPORTS -_floor_P -_mapping_P -_residue_P -_time_P -_vi_psy_copy -residue_free_info -vorbis_analysis -vorbis_analysis_blockout -vorbis_analysis_buffer -vorbis_analysis_headerout -vorbis_analysis_init -vorbis_analysis_wrote -vorbis_block_clear -vorbis_block_init -vorbis_bitrate_addblock -vorbis_bitrate_flushpacket -vorbis_comment_add -vorbis_comment_add_tag -vorbis_comment_clear -vorbis_comment_init -vorbis_comment_query -vorbis_comment_query_count -vorbis_commentheader_out -vorbis_dsp_clear -vorbis_info_blocksize -vorbis_info_clear -vorbis_info_init -vorbis_packet_blocksize -vorbis_synthesis -vorbis_synthesis_blockin -vorbis_synthesis_headerin -vorbis_synthesis_init -vorbis_synthesis_pcmout -vorbis_synthesis_read diff --git a/win32/vorbis_dynamic.dsp b/win32/vorbis_dynamic.dsp deleted file mode 100644 index 54398b29..00000000 --- a/win32/vorbis_dynamic.dsp +++ /dev/null @@ -1,295 +0,0 @@ -# Microsoft Developer Studio Project File - Name="vorbis_dynamic" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=vorbis_dynamic - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "vorbis_dynamic.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "vorbis_dynamic.mak" CFG="vorbis_dynamic - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "vorbis_dynamic - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "vorbis_dynamic - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "vorbis_dynamic - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Vorbis_Dynamic_Release"
-# PROP Intermediate_Dir "Vorbis_Dynamic_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBIS_DYNAMIC_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\ogg\include" /I "..\include" /I "..\win32\src" /I "..\..\vorbis\lib" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ogg.lib /nologo /dll /machine:I386 /out:"Vorbis_Dynamic_Release/vorbis.dll" /libpath:"..\..\ogg\win32\Dynamic_Release"
-
-!ELSEIF "$(CFG)" == "vorbis_dynamic - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "vorbis_dynamic___Win32_Debug"
-# PROP BASE Intermediate_Dir "vorbis_dynamic___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Vorbis_Dynamic_Debug"
-# PROP Intermediate_Dir "Vorbis_Dynamic_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBIS_DYNAMIC_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\ogg\include" /I "..\include" /I "..\win32\src" /I "..\..\vorbis\lib" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ogg_d.lib /nologo /dll /debug /machine:I386 /def:".\vorbis.def" /out:"Vorbis_Dynamic_Debug/vorbis_d.dll" /pdbtype:sept /libpath:"..\..\ogg\win32\Dynamic_Debug"
-# SUBTRACT LINK32 /verbose /pdb:none
-
-!ENDIF
-
-# Begin Target
-
-# Name "vorbis_dynamic - Win32 Release"
-# Name "vorbis_dynamic - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\lib\analysis.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\barkmel.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\bitrate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\block.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\codebook.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\envelope.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\floor0.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\floor1.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\info.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lpc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lsp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\mapping0.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\mdct.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\psy.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\registry.c
-
-!IF "$(CFG)" == "vorbis_dynamic - Win32 Release"
-
-!ELSEIF "$(CFG)" == "vorbis_dynamic - Win32 Debug"
-
-# ADD CPP /I "..\src"
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\res0.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\sharedbook.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\smallft.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\synthesis.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\time0.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\window.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\lib\backends.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\bitbuffer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\codebook.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\codec.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\codec_internal.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\envelope.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\iir.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lookup.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lookup_data.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lpc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lsp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\masking.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\mdct.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\misc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\os.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\psy.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\registry.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\scales.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\smallft.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\window.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# Begin Group "Other Files"
-
-# PROP Default_Filter ".def"
-# Begin Source File
-
-SOURCE=.\vorbis.def
-
-!IF "$(CFG)" == "vorbis_dynamic - Win32 Release"
-
-!ELSEIF "$(CFG)" == "vorbis_dynamic - Win32 Debug"
-
-# PROP Exclude_From_Build 1
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/win32/vorbis_static.dsp b/win32/vorbis_static.dsp deleted file mode 100644 index e83f8776..00000000 --- a/win32/vorbis_static.dsp +++ /dev/null @@ -1,552 +0,0 @@ -# Microsoft Developer Studio Project File - Name="vorbis_static" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=vorbis_static - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "vorbis_static.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "vorbis_static.mak" CFG="vorbis_static - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "vorbis_static - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "vorbis_static - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "vorbis_static - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Vorbis_Static_Release"
-# PROP Intermediate_Dir "Vorbis_Static_Release"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W2 /GX /O2 /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "vorbis_static - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Vorbis_Static_Debug"
-# PROP Intermediate_Dir "Vorbis_Static_Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"Vorbis_Static_Debug\vorbis_static_d.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "vorbis_static - Win32 Release"
-# Name "vorbis_static - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\lib\analysis.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\bitrate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\block.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\codebook.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\envelope.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\floor0.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\floor1.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\info.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lpc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lsp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\mapping0.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\mdct.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\psy.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\registry.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\res0.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\sharedbook.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\smallft.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\synthesis.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\time0.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\window.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\include\vorbis\backends.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\bitbuffer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\bitrate.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\bookinternal.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\codebook.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\codec.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\envelope.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\iir.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lpc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lsp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\lsp12_0.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\lsp30_0.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\masking.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\mdct.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\misc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\mode_A.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\mode_B.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\mode_C.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\mode_D.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\mode_E.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\modes.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\os.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\psy.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\registry.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_6.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_7.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_8.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_9.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_6.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_7.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_8.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_9.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_192_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_192_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_192_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_192_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_192_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_256_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_256_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_256_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_256_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_256_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_350_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_350_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_350_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_350_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_350_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_128_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_128_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_128_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_128_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_128_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_160_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_160_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_160_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_160_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_160_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_192_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_192_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_192_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_192_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_192_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_256_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_256_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_256_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_256_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_256_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_350_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_350_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_350_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_350_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_350_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_1024a_128.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_1024a_160.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_1024a_192.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_1024a_256.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_1024a_350.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_128a_128.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_128a_160.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_128a_192.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_128a_256.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_128a_350.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\sharedbook.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\smallft.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\window.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/win32/vorbisenc.def b/win32/vorbisenc.def deleted file mode 100644 index 1074851b..00000000 --- a/win32/vorbisenc.def +++ /dev/null @@ -1,9 +0,0 @@ -; -; $Id: vorbisenc.def,v 1.3 2001/09/29 22:49:49 cwolf Exp $ -; -LIBRARY - -EXPORTS -vorbis_encode_init -vorbis_encode_init_vbr -vorbis_encode_ctl diff --git a/win32/vorbisenc_dynamic.dsp b/win32/vorbisenc_dynamic.dsp deleted file mode 100644 index c8c44996..00000000 --- a/win32/vorbisenc_dynamic.dsp +++ /dev/null @@ -1,134 +0,0 @@ -# Microsoft Developer Studio Project File - Name="vorbisenc_dynamic" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=vorbisenc_dynamic - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "vorbisenc_dynamic.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "vorbisenc_dynamic.mak" CFG="vorbisenc_dynamic - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "vorbisenc_dynamic - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "vorbisenc_dynamic - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "vorbisenc_dynamic - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "VorbisEnc_Dynamic_Release"
-# PROP Intermediate_Dir "VorbisEnc_Dynamic_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISENC_DYNAMIC_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\ogg\include" /I "..\include" /I "..\win32\src" /I "..\..\vorbis\lib" /D "WIN32" /D "_WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISDLL_IMPORT" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ogg.lib vorbis.lib /nologo /dll /machine:I386 /out:"VorbisEnc_Dynamic_Release/vorbisenc.dll" /libpath:"..\..\ogg\win32\Dynamic_Release" /libpath:".\Vorbis_Dynamic_Release"
-
-!ELSEIF "$(CFG)" == "vorbisenc_dynamic - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "vorbisenc_dynamic___Win32_Debug"
-# PROP BASE Intermediate_Dir "vorbisenc_dynamic___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "VorbisEnc_Dynamic_Debug"
-# PROP Intermediate_Dir "VorbisEnc_Dynamic_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISENC_DYNAMIC_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\ogg\include" /I "..\include" /I "..\win32\src" /I "..\..\vorbis\lib" /D "WIN32" /D "_WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISDLL_IMPORT" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib vorbis_d.lib /nologo /dll /debug /machine:I386 /def:".\vorbisenc.def" /out:"VorbisEnc_Dynamic_Debug/vorbisenc_d.dll" /pdbtype:sept /libpath:"../../vorbis/win32/Vorbis_Dynamic_Debug"
-# SUBTRACT LINK32 /pdb:none
-
-!ENDIF
-
-# Begin Target
-
-# Name "vorbisenc_dynamic - Win32 Release"
-# Name "vorbisenc_dynamic - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\lib\vorbisenc.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\src\shmmap.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\vorbisenc.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# Begin Group "Other Files"
-
-# PROP Default_Filter ".def"
-# Begin Source File
-
-SOURCE=.\vorbisenc.def
-
-!IF "$(CFG)" == "vorbisenc_dynamic - Win32 Release"
-
-!ELSEIF "$(CFG)" == "vorbisenc_dynamic - Win32 Debug"
-
-# PROP Exclude_From_Build 1
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/win32/vorbisenc_static.dsp b/win32/vorbisenc_static.dsp deleted file mode 100644 index eaca5a63..00000000 --- a/win32/vorbisenc_static.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="vorbisenc_static" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=vorbisenc_static - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "vorbisenc_static.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "vorbisenc_static.mak" CFG="vorbisenc_static - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "vorbisenc_static - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "vorbisenc_static - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "vorbisenc_static - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "VorbisEnc_Static_Release"
-# PROP Intermediate_Dir "VorbisEnc_Static_Release"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W2 /GX /O2 /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "vorbisenc_static - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "VorbisEnc_Static_Debug"
-# PROP Intermediate_Dir "VorbisEnc_Static_Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"VorbisEnc_Static_Debug\vorbisenc_static_d.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "vorbisenc_static - Win32 Release"
-# Name "vorbisenc_static - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\lib\vorbisenc.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# End Target
-# End Project
diff --git a/win32/vorbisfile.def b/win32/vorbisfile.def deleted file mode 100644 index 403e7e36..00000000 --- a/win32/vorbisfile.def +++ /dev/null @@ -1,32 +0,0 @@ -; -; vorbisfile.def -; -; last modified: $Id: vorbisfile.def,v 1.3 2001/09/13 15:21:19 cwolf Exp $ -; -LIBRARY -EXPORTS -ov_clear -ov_open -ov_open_callbacks -ov_bitrate -ov_bitrate_instant -ov_streams -ov_seekable -ov_serialnumber -ov_raw_total -ov_pcm_total -ov_time_total -ov_raw_seek -ov_pcm_seek -ov_pcm_seek_page -ov_time_seek -ov_time_seek_page -ov_raw_tell -ov_pcm_tell -ov_time_tell -ov_info -ov_comment -ov_read -ov_test -ov_test_callbacks -ov_test_open diff --git a/win32/vorbisfile_dynamic.dsp b/win32/vorbisfile_dynamic.dsp deleted file mode 100644 index 76090d54..00000000 --- a/win32/vorbisfile_dynamic.dsp +++ /dev/null @@ -1,115 +0,0 @@ -# Microsoft Developer Studio Project File - Name="vorbisfile_dynamic" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=vorbisfile_dynamic - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "vorbisfile_dynamic.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "vorbisfile_dynamic.mak" CFG="vorbisfile_dynamic - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "vorbisfile_dynamic - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "vorbisfile_dynamic - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "vorbisfile_dynamic - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "VorbisFile_Dynamic_Release"
-# PROP Intermediate_Dir "VorbisFile_Dynamic_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISFILE_DYNAMIC_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\ogg\include" /I "..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_WIN32" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ogg.lib vorbis.lib /nologo /dll /machine:I386 /out:"VorbisFile_Dynamic_Release/vorbisfile.dll" /libpath:"..\..\ogg\win32\Dynamic_Release" /libpath:".\Vorbis_Dynamic_Release"
-
-!ELSEIF "$(CFG)" == "vorbisfile_dynamic - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "vorbisfile_dynamic___Win32_Debug"
-# PROP BASE Intermediate_Dir "vorbisfile_dynamic___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "VorbisFile_Dynamic_Debug"
-# PROP Intermediate_Dir "VorbisFile_Dynamic_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISFILE_DYNAMIC_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\ogg\include" /I "..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_WIN32" /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ogg_d.lib vorbis_d.lib /nologo /dll /debug /machine:I386 /out:"VorbisFile_Dynamic_Debug/vorbisfile_d.dll" /pdbtype:sept /libpath:"..\..\ogg\win32\Dynamic_Debug" /libpath:".\Vorbis_Dynamic_Debug"
-
-!ENDIF
-
-# Begin Target
-
-# Name "vorbisfile_dynamic - Win32 Release"
-# Name "vorbisfile_dynamic - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\lib\vorbisfile.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# Begin Group "Other Files"
-
-# PROP Default_Filter ".def"
-# Begin Source File
-
-SOURCE=.\vorbisfile.def
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/win32/vorbisfile_static.dsp b/win32/vorbisfile_static.dsp deleted file mode 100644 index e5081860..00000000 --- a/win32/vorbisfile_static.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="vorbisfile_static" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=vorbisfile_static - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "vorbisfile_static.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "vorbisfile_static.mak" CFG="vorbisfile_static - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "vorbisfile_static - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "vorbisfile_static - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "vorbisfile_static - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "VorbisFile_Static_Release"
-# PROP Intermediate_Dir "VorbisFile_Static_Release"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W2 /GX /O2 /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "_WIN32" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "vorbisfile_static - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "VorbisFile_Static_Debug"
-# PROP Intermediate_Dir "VorbisFile_Static_Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"VorbisFile_Static_Debug\vorbisfile_static_d.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "vorbisfile_static - Win32 Release"
-# Name "vorbisfile_static - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\lib\vorbisfile.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# End Target
-# End Project
|