summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <unknown@xiph.org>2004-03-20 20:06:27 +0000
committerunknown <unknown@xiph.org>2004-03-20 20:06:27 +0000
commit73e455efdddf173acca33b9a3a41c8186c1892fe (patch)
tree898d89390b3074f15dce39d0b563e40da36300b3
parent8bc503a5542c92625e705000f381995a55af1b88 (diff)
downloadlibvorbis-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
-rw-r--r--.cvsignore18
-rw-r--r--AUTHORS3
-rw-r--r--COPYING28
-rw-r--r--HACKING48
-rw-r--r--Makefile.am17
-rw-r--r--README142
-rw-r--r--acinclude.m4106
-rwxr-xr-xautogen.sh61
-rw-r--r--configure.in190
-rw-r--r--debian/.cvsignore2
-rw-r--r--debian/Makefile.am7
-rw-r--r--debian/changelog78
-rw-r--r--debian/control23
-rw-r--r--debian/copyright38
-rw-r--r--debian/libvorbis-dev.docs1
-rw-r--r--debian/libvorbis-dev.examples1
-rw-r--r--debian/libvorbis-dev.files6
-rw-r--r--debian/libvorbis0.README.Debian6
-rw-r--r--debian/libvorbis0.files1
-rwxr-xr-xdebian/rules91
-rw-r--r--examples/.cvsignore9
-rw-r--r--examples/Makefile.am27
-rw-r--r--examples/chaining_example.c70
-rw-r--r--examples/decoder_example.c307
-rw-r--r--examples/encoder_example.c219
-rw-r--r--examples/seeking_example.c207
-rw-r--r--examples/vorbisfile_example.c87
-rw-r--r--include/.cvsignore2
-rw-r--r--include/Makefile.am5
-rw-r--r--include/vorbis/.cvsignore2
-rw-r--r--include/vorbis/Makefile.am9
-rw-r--r--include/vorbis/codec.h232
-rw-r--r--include/vorbis/vorbisenc.h70
-rw-r--r--include/vorbis/vorbisfile.h131
-rw-r--r--lib/.cvsignore6
-rw-r--r--lib/Makefile.am43
-rw-r--r--lib/analysis.c117
-rw-r--r--lib/backends.h192
-rw-r--r--lib/barkmel.c64
-rw-r--r--lib/bitrate.c622
-rw-r--r--lib/bitrate.h95
-rw-r--r--lib/block.c821
-rw-r--r--lib/books/.cvsignore2
-rw-r--r--lib/books/Makefile.am4
-rw-r--r--lib/books/coupled/.cvsignore2
-rw-r--r--lib/books/coupled/Makefile.am106
-rw-r--r--lib/books/coupled/_44c0_long.vqh40
-rw-r--r--lib/books/coupled/_44c0_s0_p0_r0.vqh61
-rw-r--r--lib/books/coupled/_44c0_s0_p0_r1.vqh61
-rw-r--r--lib/books/coupled/_44c0_s0_p1_0.vqh99
-rw-r--r--lib/books/coupled/_44c0_s0_p2_0.vqh70
-rw-r--r--lib/books/coupled/_44c0_s0_p3_0.vqh93
-rw-r--r--lib/books/coupled/_44c0_s0_p4_0.vqh86
-rw-r--r--lib/books/coupled/_44c0_s0_p4_1.vqh65
-rw-r--r--lib/books/coupled/_44c0_s0_p5_0.vqh99
-rw-r--r--lib/books/coupled/_44c0_s0_p6_0.vqh93
-rw-r--r--lib/books/coupled/_44c0_s0_p7_0.vqh65
-rw-r--r--lib/books/coupled/_44c0_s0_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c0_s0_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c0_s0_pN_r0.vqh61
-rw-r--r--lib/books/coupled/_44c0_s0_pN_r1.vqh61
-rw-r--r--lib/books/coupled/_44c0_s1_p5_0.vqh63
-rw-r--r--lib/books/coupled/_44c0_s1_p5_s0.vqh61
-rw-r--r--lib/books/coupled/_44c0_s1_p6_0.vqh93
-rw-r--r--lib/books/coupled/_44c0_s1_p6_s0.vqh70
-rw-r--r--lib/books/coupled/_44c0_s1_p7_0.vqh65
-rw-r--r--lib/books/coupled/_44c0_s1_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c0_s1_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c0_s1_p7_s0.vqh70
-rw-r--r--lib/books/coupled/_44c0_s1_pS_r0.vqh58
-rw-r--r--lib/books/coupled/_44c0_s1_pS_r1.vqh58
-rw-r--r--lib/books/coupled/_44c0_s2_p6_0.vqh70
-rw-r--r--lib/books/coupled/_44c0_s2_p6_s0.vqh93
-rw-r--r--lib/books/coupled/_44c0_s2_p7_0.vqh65
-rw-r--r--lib/books/coupled/_44c0_s2_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c0_s2_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c0_s2_p7_s0.vqh93
-rw-r--r--lib/books/coupled/_44c0_s3_p7_0.vqh65
-rw-r--r--lib/books/coupled/_44c0_s3_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c0_s3_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c0_s3_p7_s0.vqh163
-rw-r--r--lib/books/coupled/_44c0_s4_p7_0.vqh65
-rw-r--r--lib/books/coupled/_44c0_s4_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c0_s4_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c0_short.vqh40
-rw-r--r--lib/books/coupled/_44c1_long.vqh40
-rw-r--r--lib/books/coupled/_44c1_s0_p1_0.vqh99
-rw-r--r--lib/books/coupled/_44c1_s0_p2_0.vqh70
-rw-r--r--lib/books/coupled/_44c1_s0_p3_0.vqh93
-rw-r--r--lib/books/coupled/_44c1_s0_p4_0.vqh86
-rw-r--r--lib/books/coupled/_44c1_s0_p4_1.vqh65
-rw-r--r--lib/books/coupled/_44c1_s0_p5_0.vqh99
-rw-r--r--lib/books/coupled/_44c1_s0_p6_0.vqh93
-rw-r--r--lib/books/coupled/_44c1_s0_p7_0.vqh65
-rw-r--r--lib/books/coupled/_44c1_s0_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c1_s0_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c1_s1_p5_0.vqh63
-rw-r--r--lib/books/coupled/_44c1_s1_p6_0.vqh93
-rw-r--r--lib/books/coupled/_44c1_s1_p7_0.vqh65
-rw-r--r--lib/books/coupled/_44c1_s1_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c1_s1_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c1_s2_p6_0.vqh70
-rw-r--r--lib/books/coupled/_44c1_s2_p7_0.vqh65
-rw-r--r--lib/books/coupled/_44c1_s2_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c1_s2_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c1_s3_p7_0.vqh65
-rw-r--r--lib/books/coupled/_44c1_s3_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c1_s3_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c1_short.vqh40
-rw-r--r--lib/books/coupled/_44c2_long.vqh40
-rw-r--r--lib/books/coupled/_44c2_s0_p1_0.vqh99
-rw-r--r--lib/books/coupled/_44c2_s0_p2_0.vqh70
-rw-r--r--lib/books/coupled/_44c2_s0_p3_0.vqh93
-rw-r--r--lib/books/coupled/_44c2_s0_p4_0.vqh86
-rw-r--r--lib/books/coupled/_44c2_s0_p4_1.vqh65
-rw-r--r--lib/books/coupled/_44c2_s0_p5_0.vqh99
-rw-r--r--lib/books/coupled/_44c2_s0_p6_0.vqh93
-rw-r--r--lib/books/coupled/_44c2_s0_p7_0.vqh65
-rw-r--r--lib/books/coupled/_44c2_s0_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c2_s0_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c2_s1_p5_0.vqh63
-rw-r--r--lib/books/coupled/_44c2_s1_p6_0.vqh93
-rw-r--r--lib/books/coupled/_44c2_s1_p7_0.vqh65
-rw-r--r--lib/books/coupled/_44c2_s1_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c2_s1_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c2_s2_p6_0.vqh70
-rw-r--r--lib/books/coupled/_44c2_s2_p7_0.vqh65
-rw-r--r--lib/books/coupled/_44c2_s2_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c2_s2_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c2_s3_p7_0.vqh65
-rw-r--r--lib/books/coupled/_44c2_s3_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c2_s3_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c2_short.vqh40
-rw-r--r--lib/books/coupled/_44c3_long.vqh40
-rw-r--r--lib/books/coupled/_44c3_s0_p1_0.vqh99
-rw-r--r--lib/books/coupled/_44c3_s0_p2_0.vqh70
-rw-r--r--lib/books/coupled/_44c3_s0_p3_0.vqh93
-rw-r--r--lib/books/coupled/_44c3_s0_p4_0.vqh86
-rw-r--r--lib/books/coupled/_44c3_s0_p4_1.vqh65
-rw-r--r--lib/books/coupled/_44c3_s0_p5_0.vqh99
-rw-r--r--lib/books/coupled/_44c3_s0_p6_0.vqh93
-rw-r--r--lib/books/coupled/_44c3_s0_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c3_s0_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c3_s0_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c3_s1_p5_0.vqh63
-rw-r--r--lib/books/coupled/_44c3_s1_p6_0.vqh93
-rw-r--r--lib/books/coupled/_44c3_s1_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c3_s1_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c3_s1_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c3_s2_p6_0.vqh70
-rw-r--r--lib/books/coupled/_44c3_s2_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c3_s2_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c3_s2_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c3_s3_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c3_s3_p7_1.vqh115
-rw-r--r--lib/books/coupled/_44c3_s3_p7_2.vqh63
-rw-r--r--lib/books/coupled/_44c3_short.vqh40
-rw-r--r--lib/books/coupled/_44c4_long.vqd3415
-rw-r--r--lib/books/coupled/_44c4_long.vqh43
-rw-r--r--lib/books/coupled/_44c4_s0_p0_r0.vqh61
-rw-r--r--lib/books/coupled/_44c4_s0_p0_r1.vqh61
-rw-r--r--lib/books/coupled/_44c4_s0_p1_0.vqh99
-rw-r--r--lib/books/coupled/_44c4_s0_p2_0.vqh99
-rw-r--r--lib/books/coupled/_44c4_s0_p3_0.vqh70
-rw-r--r--lib/books/coupled/_44c4_s0_p4_0.vqh70
-rw-r--r--lib/books/coupled/_44c4_s0_p5_0.vqh93
-rw-r--r--lib/books/coupled/_44c4_s0_p6_0.vqh93
-rw-r--r--lib/books/coupled/_44c4_s0_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c4_s0_p7_1.vqh61
-rw-r--r--lib/books/coupled/_44c4_s0_p8_0.vqh80
-rw-r--r--lib/books/coupled/_44c4_s0_p8_1.vqh80
-rw-r--r--lib/books/coupled/_44c4_s0_p9_0.vqh80
-rw-r--r--lib/books/coupled/_44c4_s0_p9_1.vqh80
-rw-r--r--lib/books/coupled/_44c4_s0_p9_2.vqh80
-rw-r--r--lib/books/coupled/_44c4_s0_pN_r0.vqh61
-rw-r--r--lib/books/coupled/_44c4_s0_pN_r1.vqh61
-rw-r--r--lib/books/coupled/_44c4_s1_p2_0.vqh63
-rw-r--r--lib/books/coupled/_44c4_s1_p2_s0.vqh61
-rw-r--r--lib/books/coupled/_44c4_s1_p4_0.vqh99
-rw-r--r--lib/books/coupled/_44c4_s1_p4_s0.vqh70
-rw-r--r--lib/books/coupled/_44c4_s1_p6_0.vqh93
-rw-r--r--lib/books/coupled/_44c4_s1_p6_s0.vqh70
-rw-r--r--lib/books/coupled/_44c4_s1_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c4_s1_p7_1.vqh61
-rw-r--r--lib/books/coupled/_44c4_s1_p7_s0.vqh70
-rw-r--r--lib/books/coupled/_44c4_s1_p8_0.vqh80
-rw-r--r--lib/books/coupled/_44c4_s1_p8_1.vqh80
-rw-r--r--lib/books/coupled/_44c4_s1_p8_s0.vqh70
-rw-r--r--lib/books/coupled/_44c4_s1_p9_0.vqh80
-rw-r--r--lib/books/coupled/_44c4_s1_p9_1.vqh80
-rw-r--r--lib/books/coupled/_44c4_s1_p9_2.vqh80
-rw-r--r--lib/books/coupled/_44c4_s1_p9_s0.vqh70
-rw-r--r--lib/books/coupled/_44c4_s1_pS_r0.vqh58
-rw-r--r--lib/books/coupled/_44c4_s1_pS_r1.vqh58
-rw-r--r--lib/books/coupled/_44c4_s2_p6_0.vqh70
-rw-r--r--lib/books/coupled/_44c4_s2_p6_s0.vqh93
-rw-r--r--lib/books/coupled/_44c4_s2_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c4_s2_p7_1.vqh61
-rw-r--r--lib/books/coupled/_44c4_s2_p7_s0.vqh93
-rw-r--r--lib/books/coupled/_44c4_s2_p8_0.vqh80
-rw-r--r--lib/books/coupled/_44c4_s2_p8_1.vqh80
-rw-r--r--lib/books/coupled/_44c4_s2_p8_s0.vqh93
-rw-r--r--lib/books/coupled/_44c4_s2_p9_0.vqh80
-rw-r--r--lib/books/coupled/_44c4_s2_p9_1.vqh80
-rw-r--r--lib/books/coupled/_44c4_s2_p9_2.vqh80
-rw-r--r--lib/books/coupled/_44c4_s2_p9_s0.vqh93
-rw-r--r--lib/books/coupled/_44c4_s3_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c4_s3_p7_1.vqh61
-rw-r--r--lib/books/coupled/_44c4_s3_p8_0.vqh80
-rw-r--r--lib/books/coupled/_44c4_s3_p8_1.vqh80
-rw-r--r--lib/books/coupled/_44c4_s3_p9_0.vqh80
-rw-r--r--lib/books/coupled/_44c4_s3_p9_1.vqh80
-rw-r--r--lib/books/coupled/_44c4_s3_p9_2.vqh80
-rw-r--r--lib/books/coupled/_44c4_s3_p9_s0.vqh163
-rw-r--r--lib/books/coupled/_44c4_short.vqd5340
-rw-r--r--lib/books/coupled/_44c4_short.vqh43
-rw-r--r--lib/books/coupled/_44c5_long.vqh43
-rw-r--r--lib/books/coupled/_44c5_s0_p1_0.vqh99
-rw-r--r--lib/books/coupled/_44c5_s0_p2_0.vqh99
-rw-r--r--lib/books/coupled/_44c5_s0_p3_0.vqh70
-rw-r--r--lib/books/coupled/_44c5_s0_p4_0.vqh70
-rw-r--r--lib/books/coupled/_44c5_s0_p5_0.vqh93
-rw-r--r--lib/books/coupled/_44c5_s0_p6_0.vqh93
-rw-r--r--lib/books/coupled/_44c5_s0_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c5_s0_p7_1.vqh61
-rw-r--r--lib/books/coupled/_44c5_s0_p8_0.vqh80
-rw-r--r--lib/books/coupled/_44c5_s0_p8_1.vqh80
-rw-r--r--lib/books/coupled/_44c5_s0_p9_0.vqh86
-rw-r--r--lib/books/coupled/_44c5_s0_p9_1.vqh93
-rw-r--r--lib/books/coupled/_44c5_s0_p9_2.vqh80
-rw-r--r--lib/books/coupled/_44c5_s1_p2_0.vqh63
-rw-r--r--lib/books/coupled/_44c5_s1_p4_0.vqh99
-rw-r--r--lib/books/coupled/_44c5_s1_p6_0.vqh93
-rw-r--r--lib/books/coupled/_44c5_s1_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c5_s1_p7_1.vqh61
-rw-r--r--lib/books/coupled/_44c5_s1_p8_0.vqh80
-rw-r--r--lib/books/coupled/_44c5_s1_p8_1.vqh80
-rw-r--r--lib/books/coupled/_44c5_s1_p9_0.vqh86
-rw-r--r--lib/books/coupled/_44c5_s1_p9_1.vqh93
-rw-r--r--lib/books/coupled/_44c5_s1_p9_2.vqh80
-rw-r--r--lib/books/coupled/_44c5_s2_p6_0.vqh70
-rw-r--r--lib/books/coupled/_44c5_s2_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c5_s2_p7_1.vqh61
-rw-r--r--lib/books/coupled/_44c5_s2_p8_0.vqh80
-rw-r--r--lib/books/coupled/_44c5_s2_p8_1.vqh80
-rw-r--r--lib/books/coupled/_44c5_s2_p9_0.vqh86
-rw-r--r--lib/books/coupled/_44c5_s2_p9_1.vqh93
-rw-r--r--lib/books/coupled/_44c5_s2_p9_2.vqh80
-rw-r--r--lib/books/coupled/_44c5_s3_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c5_s3_p7_1.vqh61
-rw-r--r--lib/books/coupled/_44c5_s3_p8_0.vqh80
-rw-r--r--lib/books/coupled/_44c5_s3_p8_1.vqh80
-rw-r--r--lib/books/coupled/_44c5_s3_p9_0.vqh86
-rw-r--r--lib/books/coupled/_44c5_s3_p9_1.vqh93
-rw-r--r--lib/books/coupled/_44c5_s3_p9_2.vqh80
-rw-r--r--lib/books/coupled/_44c5_short.vqh43
-rw-r--r--lib/books/coupled/_44c6_long.vqh43
-rw-r--r--lib/books/coupled/_44c6_s0_p1_0.vqh99
-rw-r--r--lib/books/coupled/_44c6_s0_p2_0.vqh99
-rw-r--r--lib/books/coupled/_44c6_s0_p3_0.vqh70
-rw-r--r--lib/books/coupled/_44c6_s0_p4_0.vqh70
-rw-r--r--lib/books/coupled/_44c6_s0_p5_0.vqh93
-rw-r--r--lib/books/coupled/_44c6_s0_p6_0.vqh93
-rw-r--r--lib/books/coupled/_44c6_s0_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c6_s0_p7_1.vqh61
-rw-r--r--lib/books/coupled/_44c6_s0_p8_0.vqh80
-rw-r--r--lib/books/coupled/_44c6_s0_p8_1.vqh80
-rw-r--r--lib/books/coupled/_44c6_s0_p9_0.vqh70
-rw-r--r--lib/books/coupled/_44c6_s0_p9_1.vqh80
-rw-r--r--lib/books/coupled/_44c6_s0_p9_2.vqh118
-rw-r--r--lib/books/coupled/_44c6_s1_p2_0.vqh63
-rw-r--r--lib/books/coupled/_44c6_s1_p4_0.vqh99
-rw-r--r--lib/books/coupled/_44c6_s1_p6_0.vqh93
-rw-r--r--lib/books/coupled/_44c6_s1_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c6_s1_p7_1.vqh61
-rw-r--r--lib/books/coupled/_44c6_s1_p8_0.vqh80
-rw-r--r--lib/books/coupled/_44c6_s1_p8_1.vqh80
-rw-r--r--lib/books/coupled/_44c6_s1_p9_0.vqh70
-rw-r--r--lib/books/coupled/_44c6_s1_p9_1.vqh80
-rw-r--r--lib/books/coupled/_44c6_s1_p9_2.vqh118
-rw-r--r--lib/books/coupled/_44c6_s2_p6_0.vqh70
-rw-r--r--lib/books/coupled/_44c6_s2_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c6_s2_p7_1.vqh61
-rw-r--r--lib/books/coupled/_44c6_s2_p8_0.vqh80
-rw-r--r--lib/books/coupled/_44c6_s2_p8_1.vqh80
-rw-r--r--lib/books/coupled/_44c6_s2_p9_0.vqh70
-rw-r--r--lib/books/coupled/_44c6_s2_p9_1.vqh80
-rw-r--r--lib/books/coupled/_44c6_s2_p9_2.vqh118
-rw-r--r--lib/books/coupled/_44c6_s3_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c6_s3_p7_1.vqh61
-rw-r--r--lib/books/coupled/_44c6_s3_p8_0.vqh80
-rw-r--r--lib/books/coupled/_44c6_s3_p8_1.vqh80
-rw-r--r--lib/books/coupled/_44c6_s3_p9_0.vqh70
-rw-r--r--lib/books/coupled/_44c6_s3_p9_1.vqh80
-rw-r--r--lib/books/coupled/_44c6_s3_p9_2.vqh118
-rw-r--r--lib/books/coupled/_44c6_short.vqh43
-rw-r--r--lib/books/coupled/_44c7_long.vqh43
-rw-r--r--lib/books/coupled/_44c7_s0_p0_r0.vqh61
-rw-r--r--lib/books/coupled/_44c7_s0_p0_r1.vqh61
-rw-r--r--lib/books/coupled/_44c7_s0_p1_0.vqh75
-rw-r--r--lib/books/coupled/_44c7_s0_p1_1.vqh58
-rw-r--r--lib/books/coupled/_44c7_s0_p2_0.vqh80
-rw-r--r--lib/books/coupled/_44c7_s0_p2_1.vqh80
-rw-r--r--lib/books/coupled/_44c7_s0_p3_0.vqh99
-rw-r--r--lib/books/coupled/_44c7_s0_p4_0.vqh70
-rw-r--r--lib/books/coupled/_44c7_s0_p5_0.vqh93
-rw-r--r--lib/books/coupled/_44c7_s0_p6_0.vqh75
-rw-r--r--lib/books/coupled/_44c7_s0_p6_1.vqh58
-rw-r--r--lib/books/coupled/_44c7_s0_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c7_s0_p7_1.vqh61
-rw-r--r--lib/books/coupled/_44c7_s0_p8_0.vqh86
-rw-r--r--lib/books/coupled/_44c7_s0_p8_1.vqh86
-rw-r--r--lib/books/coupled/_44c7_s0_p9_0.vqh70
-rw-r--r--lib/books/coupled/_44c7_s0_p9_1.vqh80
-rw-r--r--lib/books/coupled/_44c7_s0_p9_2.vqh118
-rw-r--r--lib/books/coupled/_44c7_s0_pN_r0.vqh61
-rw-r--r--lib/books/coupled/_44c7_s0_pN_r1.vqh61
-rw-r--r--lib/books/coupled/_44c7_short.vqh43
-rw-r--r--lib/books/coupled/_44c8_long.vqh43
-rw-r--r--lib/books/coupled/_44c8_s0_p1_0.vqh75
-rw-r--r--lib/books/coupled/_44c8_s0_p1_1.vqh58
-rw-r--r--lib/books/coupled/_44c8_s0_p2_0.vqh80
-rw-r--r--lib/books/coupled/_44c8_s0_p2_1.vqh80
-rw-r--r--lib/books/coupled/_44c8_s0_p3_0.vqh99
-rw-r--r--lib/books/coupled/_44c8_s0_p4_0.vqh70
-rw-r--r--lib/books/coupled/_44c8_s0_p5_0.vqh93
-rw-r--r--lib/books/coupled/_44c8_s0_p6_0.vqh75
-rw-r--r--lib/books/coupled/_44c8_s0_p6_1.vqh58
-rw-r--r--lib/books/coupled/_44c8_s0_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c8_s0_p7_1.vqh61
-rw-r--r--lib/books/coupled/_44c8_s0_p8_0.vqh86
-rw-r--r--lib/books/coupled/_44c8_s0_p8_1.vqh86
-rw-r--r--lib/books/coupled/_44c8_s0_p9_0.vqh75
-rw-r--r--lib/books/coupled/_44c8_s0_p9_1.vqh80
-rw-r--r--lib/books/coupled/_44c8_s0_p9_2.vqh118
-rw-r--r--lib/books/coupled/_44c8_short.vqh43
-rw-r--r--lib/books/coupled/_44c9_long.vqh43
-rw-r--r--lib/books/coupled/_44c9_s0_p1_0.vqh75
-rw-r--r--lib/books/coupled/_44c9_s0_p1_1.vqh58
-rw-r--r--lib/books/coupled/_44c9_s0_p2_0.vqh80
-rw-r--r--lib/books/coupled/_44c9_s0_p2_1.vqh80
-rw-r--r--lib/books/coupled/_44c9_s0_p3_0.vqh99
-rw-r--r--lib/books/coupled/_44c9_s0_p4_0.vqh70
-rw-r--r--lib/books/coupled/_44c9_s0_p5_0.vqh93
-rw-r--r--lib/books/coupled/_44c9_s0_p6_0.vqh75
-rw-r--r--lib/books/coupled/_44c9_s0_p6_1.vqh58
-rw-r--r--lib/books/coupled/_44c9_s0_p7_0.vqh80
-rw-r--r--lib/books/coupled/_44c9_s0_p7_1.vqh61
-rw-r--r--lib/books/coupled/_44c9_s0_p8_0.vqh86
-rw-r--r--lib/books/coupled/_44c9_s0_p8_1.vqh86
-rw-r--r--lib/books/coupled/_44c9_s0_p9_0.vqh115
-rw-r--r--lib/books/coupled/_44c9_s0_p9_1.vqh115
-rw-r--r--lib/books/coupled/_44c9_s0_p9_2.vqh160
-rw-r--r--lib/books/coupled/_44c9_short.vqh43
-rw-r--r--lib/books/floor/.cvsignore2
-rw-r--r--lib/books/floor/Makefile.am18
-rw-r--r--lib/books/floor/line_1024x31_0sub0.vqh38
-rw-r--r--lib/books/floor/line_1024x31_0sub1.vqh44
-rw-r--r--lib/books/floor/line_1024x31_1sub0.vqh38
-rw-r--r--lib/books/floor/line_1024x31_1sub1.vqh44
-rw-r--r--lib/books/floor/line_1024x31_2sub1.vqh38
-rw-r--r--lib/books/floor/line_1024x31_2sub2.vqh40
-rw-r--r--lib/books/floor/line_1024x31_2sub3.vqh44
-rw-r--r--lib/books/floor/line_1024x31_3sub1.vqh38
-rw-r--r--lib/books/floor/line_1024x31_3sub2.vqh40
-rw-r--r--lib/books/floor/line_1024x31_3sub3.vqh44
-rw-r--r--lib/books/floor/line_1024x31_class0.vqh37
-rw-r--r--lib/books/floor/line_1024x31_class1.vqh37
-rw-r--r--lib/books/floor/line_1024x31_class2.vqh40
-rw-r--r--lib/books/floor/line_1024x31_class3.vqh40
-rw-r--r--lib/books/floor/line_128x19_0sub0.vqh44
-rw-r--r--lib/books/floor/line_128x19_1sub1.vqh38
-rw-r--r--lib/books/floor/line_128x19_1sub2.vqh40
-rw-r--r--lib/books/floor/line_128x19_1sub3.vqh44
-rw-r--r--lib/books/floor/line_128x19_2sub1.vqh38
-rw-r--r--lib/books/floor/line_128x19_2sub2.vqh40
-rw-r--r--lib/books/floor/line_128x19_2sub3.vqh44
-rw-r--r--lib/books/floor/line_128x19_class1.vqh40
-rw-r--r--lib/books/floor/line_128x19_class2.vqh40
-rw-r--r--lib/books/floor/line_128x7_0sub0.vqh40
-rw-r--r--lib/books/floor/line_128x7_1sub1.vqh37
-rw-r--r--lib/books/floor/line_128x7_1sub2.vqh38
-rw-r--r--lib/books/floor/line_128x7_1sub3.vqh40
-rw-r--r--lib/books/floor/line_128x7_2sub1.vqh37
-rw-r--r--lib/books/floor/line_128x7_2sub2.vqh38
-rw-r--r--lib/books/floor/line_128x7_2sub3.vqh40
-rw-r--r--lib/books/floor/line_128x7_class1.vqh40
-rw-r--r--lib/books/floor/line_128x7_class2.vqh40
-rw-r--r--lib/books/floor/line_128x9_0sub0.vqh40
-rw-r--r--lib/books/floor/line_128x9_1sub1.vqh37
-rw-r--r--lib/books/floor/line_128x9_1sub2.vqh38
-rw-r--r--lib/books/floor/line_128x9_1sub3.vqh40
-rw-r--r--lib/books/floor/line_128x9_2sub1.vqh37
-rw-r--r--lib/books/floor/line_128x9_2sub2.vqh38
-rw-r--r--lib/books/floor/line_128x9_2sub3.vqh40
-rw-r--r--lib/books/floor/line_128x9_class1.vqh52
-rw-r--r--lib/books/floor/line_128x9_class2.vqh52
-rw-r--r--lib/books/uncoupled/.cvsignore2
-rw-r--r--lib/books/uncoupled/Makefile.am20
-rw-r--r--lib/books/uncoupled/_44u0_p0_r0.vqh58
-rw-r--r--lib/books/uncoupled/_44u0_p0_r1.vqh58
-rw-r--r--lib/books/uncoupled/_44u0_p1_0.vqh63
-rw-r--r--lib/books/uncoupled/_44u0_p1_r0.vqh58
-rw-r--r--lib/books/uncoupled/_44u0_p1_r1.vqh58
-rw-r--r--lib/books/uncoupled/_44u0_p2_0.vqh99
-rw-r--r--lib/books/uncoupled/_44u0_p3_0.vqh70
-rw-r--r--lib/books/uncoupled/_44u0_p4_0.vqh100
-rw-r--r--lib/books/uncoupled/_44u0_p4_1.vqh63
-rw-r--r--lib/books/uncoupled/_44u0_p5_0.vqh63
-rw-r--r--lib/books/uncoupled/_44u0_p6_0.vqh70
-rw-r--r--lib/books/uncoupled/_44u0_p7_0.vqh61
-rw-r--r--lib/books/uncoupled/_44u0_p7_1.vqh115
-rw-r--r--lib/books/uncoupled/_44u0_p7_2.vqh63
-rw-r--r--lib/books/uncoupled/_44u4_p0_r0.vqh58
-rw-r--r--lib/books/uncoupled/_44u4_p0_r1.vqh58
-rw-r--r--lib/books/uncoupled/_44u4_p1_0.vqh63
-rw-r--r--lib/books/uncoupled/_44u4_p1_r0.vqh58
-rw-r--r--lib/books/uncoupled/_44u4_p1_r1.vqh58
-rw-r--r--lib/books/uncoupled/_44u4_p2_0.vqh63
-rw-r--r--lib/books/uncoupled/_44u4_p3_0.vqh99
-rw-r--r--lib/books/uncoupled/_44u4_p4_0.vqh99
-rw-r--r--lib/books/uncoupled/_44u4_p5_0.vqh70
-rw-r--r--lib/books/uncoupled/_44u4_p6_0.vqh70
-rw-r--r--lib/books/uncoupled/_44u4_p7_0.vqh75
-rw-r--r--lib/books/uncoupled/_44u4_p7_1.vqh63
-rw-r--r--lib/books/uncoupled/_44u4_p8_0.vqh93
-rw-r--r--lib/books/uncoupled/_44u4_p8_1.vqh99
-rw-r--r--lib/books/uncoupled/_44u4_p9_0.vqh65
-rw-r--r--lib/books/uncoupled/_44u4_p9_1.vqh80
-rw-r--r--lib/books/uncoupled/_44u4_p9_2.vqh118
-rw-r--r--lib/books/uncoupled/_44u7_p0_r0.vqh58
-rw-r--r--lib/books/uncoupled/_44u7_p0_r1.vqh58
-rw-r--r--lib/books/uncoupled/_44u7_p1_0.vqh93
-rw-r--r--lib/books/uncoupled/_44u7_p1_r0.vqh58
-rw-r--r--lib/books/uncoupled/_44u7_p1_r1.vqh58
-rw-r--r--lib/books/uncoupled/_44u7_p2_0.vqh93
-rw-r--r--lib/books/uncoupled/_44u7_p2_1.vqh99
-rw-r--r--lib/books/uncoupled/_44u7_p3_0.vqh63
-rw-r--r--lib/books/uncoupled/_44u7_p4_0.vqh99
-rw-r--r--lib/books/uncoupled/_44u7_p5_0.vqh70
-rw-r--r--lib/books/uncoupled/_44u7_p6_0.vqh93
-rw-r--r--lib/books/uncoupled/_44u7_p7_0.vqh75
-rw-r--r--lib/books/uncoupled/_44u7_p7_1.vqh63
-rw-r--r--lib/books/uncoupled/_44u7_p8_0.vqh93
-rw-r--r--lib/books/uncoupled/_44u7_p8_1.vqh65
-rw-r--r--lib/books/uncoupled/_44u7_p9_0.vqh86
-rw-r--r--lib/books/uncoupled/_44u7_p9_1.vqh115
-rw-r--r--lib/books/uncoupled/_44u7_p9_2.vqh160
-rw-r--r--lib/codebook.c624
-rw-r--r--lib/codebook.h162
-rw-r--r--lib/codec_internal.h174
-rw-r--r--lib/envelope.c286
-rw-r--r--lib/envelope.h48
-rw-r--r--lib/floor0.c468
-rw-r--r--lib/floor1.c1152
-rw-r--r--lib/iir.c301
-rw-r--r--lib/iir.h36
-rw-r--r--lib/info.c602
-rw-r--r--lib/lookup.c94
-rw-r--r--lib/lookup.h32
-rw-r--r--lib/lookup_data.h189
-rwxr-xr-xlib/lookups.pl142
-rw-r--r--lib/lpc.c200
-rw-r--r--lib/lpc.h43
-rw-r--r--lib/lsp.c457
-rw-r--r--lib/lsp.h28
-rw-r--r--lib/mapping0.c701
-rw-r--r--lib/masking.h218
-rw-r--r--lib/mdct.c569
-rw-r--r--lib/mdct.h79
-rw-r--r--lib/misc.c213
-rw-r--r--lib/misc.h49
-rw-r--r--lib/modes/.cvsignore2
-rw-r--r--lib/modes/Makefile.am5
-rw-r--r--lib/modes/floor_44.h184
-rw-r--r--lib/modes/psych_44.h647
-rw-r--r--lib/modes/residue_44.h1406
-rw-r--r--lib/os.h163
-rw-r--r--lib/psy.c1008
-rw-r--r--lib/psy.h161
-rw-r--r--lib/psytune.c521
-rw-r--r--lib/registry-api.h23
-rw-r--r--lib/registry.c60
-rw-r--r--lib/registry.h39
-rw-r--r--lib/res0.c959
-rw-r--r--lib/scales.h132
-rw-r--r--lib/sharedbook.c743
-rw-r--r--lib/smallft.c1254
-rw-r--r--lib/smallft.h34
-rw-r--r--lib/synthesis.c104
-rw-r--r--lib/time0.c55
-rw-r--r--lib/tone.c54
-rw-r--r--lib/vorbisfile.c1532
-rw-r--r--lib/window.c62
-rw-r--r--lib/window.h23
-rw-r--r--libvorbis.spec91
-rw-r--r--mac/compat/strdup.c21
-rw-r--r--mac/compat/sys/types.h1
-rw-r--r--mac/decoder_example.mcpbin63173 -> 0 bytes
-rw-r--r--mac/encoder_example.mcpbin66521 -> 0 bytes
-rw-r--r--mac/libvorbis.mcpbin70814 -> 0 bytes
-rw-r--r--mac/libvorbis.mcp.exp52
-rwxr-xr-xmac/libvorbisenc.mcpbin81746 -> 0 bytes
-rwxr-xr-xmac/libvorbisenc.mcp.exp5
-rwxr-xr-xmac/libvorbisfile.mcpbin75906 -> 0 bytes
-rwxr-xr-xmac/libvorbisfile.mcp.exp30
-rw-r--r--macosx/English.lproj/InfoPlist.stringsbin546 -> 0 bytes
-rw-r--r--macosx/vorbis.pbproj/project.pbxproj6169
-rw-r--r--todo.txt22
-rw-r--r--vorbis.m4109
-rw-r--r--vq/.cvsignore4
-rw-r--r--vq/44c0.vqs74
-rw-r--r--vq/44c1.vqs51
-rw-r--r--vq/44c2.vqs51
-rw-r--r--vq/44c3.vqs52
-rw-r--r--vq/44c4.vqs105
-rw-r--r--vq/44c5.vqs67
-rw-r--r--vq/44c6.vqs67
-rw-r--r--vq/44c7.vqs57
-rw-r--r--vq/44c8.vqs44
-rw-r--r--vq/44c9.vqs44
-rw-r--r--vq/44u0.vqs36
-rw-r--r--vq/44u4.vqs37
-rw-r--r--vq/44u7.vqs40
-rw-r--r--vq/Makefile.am51
-rwxr-xr-xvq/auxpartition.pl71
-rw-r--r--vq/bookutil.c738
-rw-r--r--vq/bookutil.h43
-rw-r--r--vq/build.c195
-rw-r--r--vq/cascade.c91
-rw-r--r--vq/distribution.c248
-rw-r--r--vq/genericdata.c61
-rw-r--r--vq/huffbuild.c222
-rw-r--r--vq/latticebuild.c177
-rw-r--r--vq/latticehint.c430
-rw-r--r--vq/latticepare.c595
-rw-r--r--vq/latticetune.c164
-rw-r--r--vq/lspdata.c157
-rwxr-xr-xvq/make_residue_books.pl168
-rw-r--r--vq/metrics.c295
-rwxr-xr-xvq/residue_entropy58
-rw-r--r--vq/residuedata.c160
-rw-r--r--vq/residuesplit.c282
-rw-r--r--vq/run.c216
-rw-r--r--vq/train.c364
-rw-r--r--vq/vqext.h34
-rw-r--r--vq/vqgen.c568
-rw-r--r--vq/vqgen.h85
-rw-r--r--vq/vqsplit.c612
-rw-r--r--vq/vqsplit.h37
-rw-r--r--win32/.cvsignore20
-rw-r--r--win32/Makefile.am14
-rwxr-xr-xwin32/build_vorbis_dynamic.bat19
-rwxr-xr-xwin32/build_vorbis_dynamic_debug.bat19
-rwxr-xr-xwin32/build_vorbis_static.bat19
-rwxr-xr-xwin32/build_vorbis_static_debug.bat19
-rwxr-xr-xwin32/build_vorbisenc_dynamic.bat19
-rwxr-xr-xwin32/build_vorbisenc_dynamic_debug.bat19
-rwxr-xr-xwin32/build_vorbisenc_static.bat19
-rwxr-xr-xwin32/build_vorbisenc_static_debug.bat19
-rwxr-xr-xwin32/build_vorbisfile_dynamic.bat19
-rwxr-xr-xwin32/build_vorbisfile_dynamic_debug.bat19
-rwxr-xr-xwin32/build_vorbisfile_static.bat19
-rwxr-xr-xwin32/build_vorbisfile_static_debug.bat19
-rw-r--r--win32/vorbis.def39
-rw-r--r--win32/vorbis_dynamic.dsp295
-rw-r--r--win32/vorbis_static.dsp552
-rw-r--r--win32/vorbisenc.def9
-rw-r--r--win32/vorbisenc_dynamic.dsp134
-rw-r--r--win32/vorbisenc_static.dsp96
-rw-r--r--win32/vorbisfile.def32
-rw-r--r--win32/vorbisfile_dynamic.dsp115
-rw-r--r--win32/vorbisfile_static.dsp96
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,&current_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
deleted file mode 100644
index 693a4d94..00000000
--- a/mac/decoder_example.mcp
+++ /dev/null
Binary files differ
diff --git a/mac/encoder_example.mcp b/mac/encoder_example.mcp
deleted file mode 100644
index 8f055e8b..00000000
--- a/mac/encoder_example.mcp
+++ /dev/null
Binary files differ
diff --git a/mac/libvorbis.mcp b/mac/libvorbis.mcp
deleted file mode 100644
index efdc8674..00000000
--- a/mac/libvorbis.mcp
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 81ad175f..00000000
--- a/mac/libvorbisenc.mcp
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index a8741579..00000000
--- a/mac/libvorbisfile.mcp
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 3ac59d1a..00000000
--- a/macosx/English.lproj/InfoPlist.strings
+++ /dev/null
Binary files differ
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