summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorAnas Nashif <anas.nashif@intel.com>2012-11-04 07:15:40 -0800
committerAnas Nashif <anas.nashif@intel.com>2012-11-04 07:15:40 -0800
commit20e158548a02a6ac87e5e662d790e88882e0e4d9 (patch)
tree9dc5064254d717cb8e242a1b68e4d8d77b04e84d /doc
downloadlibtheora-20e158548a02a6ac87e5e662d790e88882e0e4d9.tar.gz
libtheora-20e158548a02a6ac87e5e662d790e88882e0e4d9.tar.bz2
libtheora-20e158548a02a6ac87e5e662d790e88882e0e4d9.zip
Imported Upstream version 1.1.1upstream/1.1.1upstream
Diffstat (limited to 'doc')
-rw-r--r--doc/Doxyfile.in1142
-rw-r--r--doc/Makefile.am74
-rw-r--r--doc/Makefile.in508
-rw-r--r--doc/color.html602
-rw-r--r--doc/draft-ietf-avt-rtp-theora-00.txt1400
-rw-r--r--doc/draft-ietf-avt-rtp-theora-00.xml1146
-rw-r--r--doc/libtheora/html/annotated.html46
-rw-r--r--doc/libtheora/html/classes.html38
-rw-r--r--doc/libtheora/html/codec_8h.html411
-rw-r--r--doc/libtheora/html/codec_8h_source.html195
-rw-r--r--doc/libtheora/html/doxygen.css498
-rw-r--r--doc/libtheora/html/doxygen.pngbin0 -> 1281 bytes
-rw-r--r--doc/libtheora/html/files.html39
-rw-r--r--doc/libtheora/html/functions.html353
-rw-r--r--doc/libtheora/html/functions_vars.html353
-rw-r--r--doc/libtheora/html/globals.html464
-rw-r--r--doc/libtheora/html/globals_defs.html215
-rw-r--r--doc/libtheora/html/globals_enum.html58
-rw-r--r--doc/libtheora/html/globals_eval.html97
-rw-r--r--doc/libtheora/html/globals_func.html215
-rw-r--r--doc/libtheora/html/globals_type.html64
-rw-r--r--doc/libtheora/html/globals_vars.html52
-rw-r--r--doc/libtheora/html/group__basefuncs.html542
-rw-r--r--doc/libtheora/html/group__decfuncs.html367
-rw-r--r--doc/libtheora/html/group__encfuncs.html317
-rw-r--r--doc/libtheora/html/group__oldfuncs.html1606
-rw-r--r--doc/libtheora/html/index.html40
-rw-r--r--doc/libtheora/html/modules.html33
-rw-r--r--doc/libtheora/html/structth__comment.html119
-rw-r--r--doc/libtheora/html/structth__huff__code.html83
-rw-r--r--doc/libtheora/html/structth__img__plane.html116
-rw-r--r--doc/libtheora/html/structth__info.html358
-rw-r--r--doc/libtheora/html/structth__quant__info.html132
-rw-r--r--doc/libtheora/html/structth__quant__ranges.html100
-rw-r--r--doc/libtheora/html/structth__stripe__callback.html82
-rw-r--r--doc/libtheora/html/structtheora__comment.html121
-rw-r--r--doc/libtheora/html/structtheora__info.html491
-rw-r--r--doc/libtheora/html/structtheora__state.html106
-rw-r--r--doc/libtheora/html/structyuv__buffer.html207
-rw-r--r--doc/libtheora/html/tab_b.gifbin0 -> 35 bytes
-rw-r--r--doc/libtheora/html/tab_l.gifbin0 -> 706 bytes
-rw-r--r--doc/libtheora/html/tab_r.gifbin0 -> 2585 bytes
-rw-r--r--doc/libtheora/html/tabs.css105
-rw-r--r--doc/libtheora/html/theora_8h.html212
-rw-r--r--doc/libtheora/html/theora_8h_source.html245
-rw-r--r--doc/libtheora/html/theoradec_8h.html361
-rw-r--r--doc/libtheora/html/theoradec_8h_source.html108
-rw-r--r--doc/libtheora/html/theoraenc_8h.html674
-rw-r--r--doc/libtheora/html/theoraenc_8h_source.html117
-rw-r--r--doc/libtheora/latex/Makefile39
-rw-r--r--doc/libtheora/latex/annotated.tex14
-rw-r--r--doc/libtheora/latex/codec_8h.tex233
-rw-r--r--doc/libtheora/latex/doxygen.sty351
-rw-r--r--doc/libtheora/latex/files.tex7
-rw-r--r--doc/libtheora/latex/group__basefuncs.tex190
-rw-r--r--doc/libtheora/latex/group__decfuncs.tex111
-rw-r--r--doc/libtheora/latex/group__encfuncs.tex107
-rw-r--r--doc/libtheora/latex/group__oldfuncs.tex611
-rw-r--r--doc/libtheora/latex/index.tex12
-rw-r--r--doc/libtheora/latex/modules.tex7
-rw-r--r--doc/libtheora/latex/refman.tex64
-rw-r--r--doc/libtheora/latex/structth__comment.tex53
-rw-r--r--doc/libtheora/latex/structth__huff__code.tex35
-rw-r--r--doc/libtheora/latex/structth__img__plane.tex49
-rw-r--r--doc/libtheora/latex/structth__info.tex164
-rw-r--r--doc/libtheora/latex/structth__quant__info.tex81
-rw-r--r--doc/libtheora/latex/structth__quant__ranges.tex42
-rw-r--r--doc/libtheora/latex/structth__stripe__callback.tex35
-rw-r--r--doc/libtheora/latex/structtheora__comment.tex53
-rw-r--r--doc/libtheora/latex/structtheora__info.tex197
-rw-r--r--doc/libtheora/latex/structtheora__state.tex41
-rw-r--r--doc/libtheora/latex/structyuv__buffer.tex90
-rw-r--r--doc/libtheora/latex/theora_8h.tex185
-rw-r--r--doc/libtheora/latex/theoradec_8h.tex194
-rw-r--r--doc/libtheora/latex/theoraenc_8h.tex343
-rw-r--r--doc/spec/Makefile.am83
-rw-r--r--doc/spec/Makefile.in498
-rw-r--r--doc/spec/Theora.pdf20770
-rw-r--r--doc/spec/fdct.fig371
-rw-r--r--doc/spec/hilbert-block.fig104
-rw-r--r--doc/spec/hilbert-mb.fig32
-rw-r--r--doc/spec/idct.fig369
-rw-r--r--doc/spec/lflim.fig23
-rw-r--r--doc/spec/ltablex.sty237
-rw-r--r--doc/spec/macroblock.fig37
-rw-r--r--doc/spec/pic-frame.fig75
-rw-r--r--doc/spec/pic_even.fig102
-rw-r--r--doc/spec/pic_even_odd.fig88
-rw-r--r--doc/spec/pic_odd.fig90
-rw-r--r--doc/spec/pic_odd_even.fig84
-rw-r--r--doc/spec/pixel420.fig56
-rw-r--r--doc/spec/pixel422.fig70
-rw-r--r--doc/spec/pixel444.fig44
-rw-r--r--doc/spec/raster-block.fig91
-rw-r--r--doc/spec/reference-frames.fig46
-rw-r--r--doc/spec/spec.bib120
-rw-r--r--doc/spec/spec.tex8171
-rw-r--r--doc/spec/superblock.fig72
-rw-r--r--doc/spec/vp3huff.c918
-rw-r--r--doc/spec/xifish.fig85
-rw-r--r--doc/vp3-format.txt1305
101 files changed, 51861 insertions, 0 deletions
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
new file mode 100644
index 0000000..43b5e99
--- /dev/null
+++ b/doc/Doxyfile.in
@@ -0,0 +1,1142 @@
+# Doxyfile 1.3.7
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = @PACKAGE@
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = @VERSION@
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = libtheora
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 2 levels of 10 sub-directories under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of source
+# files, where putting all generated files in the same directory would otherwise
+# cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch,
+# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en
+# (Japanese with English messages), Korean, Korean-en, Norwegian, Polish, Portuguese,
+# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE = English
+
+# This tag can be used to specify the encoding used in the generated output.
+# The encoding is not always determined by the language that is chosen,
+# but also whether or not the output is meant for Windows or non-Windows users.
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
+# forces the Windows encoding (this is the default for the Windows binary),
+# whereas setting the tag to NO uses a Unix-style encoding (the default for
+# all platforms other than Windows).
+#This tag is now obsolete, according to doxygen 1.5.2
+#USE_WINDOWS_ENCODING = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is used
+# as the annotated text. Otherwise, the brief description is used as-is. If left
+# blank, the following values are used ("$name" is automatically replaced with the
+# name of the entity): "The $name class" "The $name widget" "The $name file"
+# "is" "provides" "specifies" "contains" "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited
+# members of a class in the documentation of that class as if those members were
+# ordinary class members. Constructors, destructors and assignment operators of
+# the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like the Qt-style comments (thus requiring an
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF = YES
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member
+# documentation.
+
+DETAILS_AT_TOP = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources
+# only. Doxygen will then generate output that is more tailored for Java.
+# For instance, namespaces will be presented as packages, qualified scopes
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text.
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = @top_srcdir@/include/theora
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp
+# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
+
+FILE_PATTERNS =
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories
+# that are symbolic links (a Unix filesystem feature) are excluded from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+
+EXCLUDE_PATTERNS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+
+INPUT_FILTER =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default)
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default)
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = YES
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader. This is useful
+# if you want to understand what is going on. On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse the
+# parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or
+# super classes. Setting the tag to NO turns the diagrams off. Note that this
+# option is superseded by the HAVE_DOT option below. This is only a fallback. It is
+# recommended to install and use dot, since it yields more powerful graphs.
+
+CLASS_DIAGRAMS = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a call dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found on the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+#This tag is now obsolete, according to doxygen 1.5.2
+#MAX_DOT_GRAPH_WIDTH = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+#This tag is now obsolete, according to doxygen 1.5.2
+#MAX_DOT_GRAPH_HEIGHT = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes that
+# lay further from the root node will be omitted. Note that setting this option to
+# 1 or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that a graph may be further truncated if the graph's image dimensions are
+# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT).
+# If 0 is used for the depth value (the default), the graph is not depth-constrained.
+#This tag is now obsolete, according to doxygen 1.5.2
+#MAX_DOT_GRAPH_DEPTH = 0
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..30eaad8
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,74 @@
+## Process this file with automake to produce Makefile.in
+
+SUBDIRS = spec
+
+docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)
+
+static_docs = vp3-format.txt color.html \
+ draft-ietf-avt-rtp-theora-00.xml \
+ draft-ietf-avt-rtp-theora-00.txt
+
+doc_DATA = $(static_docs) doxygen-build.stamp
+
+EXTRA_DIST = $(static_docs) Doxyfile.in
+
+if HAVE_DOXYGEN
+doxygen-build.stamp: Doxyfile $(top_srcdir)/include/theora/*.h
+ doxygen
+ touch doxygen-build.stamp
+else
+doxygen-build.stamp:
+ echo "*** Warning: Doxygen not found; documentation will not be built."
+ touch doxygen-build.stamp
+endif
+
+dist_docdir = $(distdir)/libtheora
+
+dist-hook:
+ if test -d libtheora; then \
+ mkdir $(dist_docdir); \
+ echo -n "copying built documenation..."; \
+ for dir in libtheora/*; do \
+ b=`basename $$dir`; \
+ if test $$b != ".svn"; then \
+ if test -d $$dir; then \
+ mkdir $(dist_docdir)/$$b; \
+ for f in $$dir/*; do \
+ cp -p $$f $(dist_docdir)/$$b; \
+ done; \
+ fi; \
+ fi; \
+ done; \
+ echo "OK"; \
+ fi
+ for item in $(EXTRA_DIST); do \
+ if test -d $$item; then \
+ echo -n "cleaning $$item dir for distribution..."; \
+ rm -rf `find $(distdir)/$$item -name .svn`; \
+ echo "OK"; \
+ fi; \
+ done
+
+
+
+install-data-local: doxygen-build.stamp
+ $(mkinstalldirs) $(DESTDIR)$(docdir)
+ if test -d libtheora; then \
+ for dir in libtheora/*; do \
+ if test -d $$dir; then \
+ b=`basename $$dir`; \
+ $(mkinstalldirs) $(DESTDIR)$(docdir)/$$b; \
+ for f in $$dir/*; do \
+ $(INSTALL_DATA) $$f $(DESTDIR)$(docdir)/$$b; \
+ done \
+ fi \
+ done \
+ fi
+
+uninstall-local:
+ rm -rf $(DESTDIR)$(docdir)
+
+clean-local:
+ if test -d libtheora; then rm -rf libtheora; fi
+ if test -f doxygen-build.stamp; then rm -f doxygen-build.stamp; fi
+
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644
index 0000000..aae84ac
--- /dev/null
+++ b/doc/Makefile.in
@@ -0,0 +1,508 @@
+# Makefile.in generated by automake 1.6.3 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+bindir = @bindir@
+sbindir = @sbindir@
+libexecdir = @libexecdir@
+datadir = @datadir@
+sysconfdir = @sysconfdir@
+sharedstatedir = @sharedstatedir@
+localstatedir = @localstatedir@
+libdir = @libdir@
+infodir = @infodir@
+mandir = @mandir@
+includedir = @includedir@
+oldincludedir = /usr/include
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = @program_transform_name@
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_alias = @host_alias@
+host_triplet = @host@
+
+EXEEXT = @EXEEXT@
+OBJEXT = @OBJEXT@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMTAR = @AMTAR@
+AR = @AR@
+ARGZ_H = @ARGZ_H@
+AS = @AS@
+AWK = @AWK@
+BUILDABLE_EXAMPLES = @BUILDABLE_EXAMPLES@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CC = @CC@
+CPP = @CPP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+DEBUG = @DEBUG@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+F77 = @F77@
+GCJ = @GCJ@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_OBJS = @GETOPT_OBJS@
+GREP = @GREP@
+HAVE_BIBTEX = @HAVE_BIBTEX@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PDFLATEX = @HAVE_PDFLATEX@
+HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
+HAVE_TRANSFIG = @HAVE_TRANSFIG@
+HAVE_VALGRIND = @HAVE_VALGRIND@
+INCLTDL = @INCLTDL@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LIBADD_DL = @LIBADD_DL@
+LIBADD_DLD_LINK = @LIBADD_DLD_LINK@
+LIBADD_DLOPEN = @LIBADD_DLOPEN@
+LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@
+LIBLTDL = @LIBLTDL@
+LIBM = @LIBM@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTDLDEPS = @LTDLDEPS@
+LTDLINCL = @LTDLINCL@
+LTDLOPEN = @LTDLOPEN@
+LT_CONFIG_H = @LT_CONFIG_H@
+LT_DLLOADERS = @LT_DLLOADERS@
+LT_DLPREOPEN = @LT_DLPREOPEN@
+MAINT = @MAINT@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+OSS_LIBS = @OSS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PKG_CONFIG = @PKG_CONFIG@
+PNG_CFLAGS = @PNG_CFLAGS@
+PNG_LIBS = @PNG_LIBS@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+RC = @RC@
+SDL_CFLAGS = @SDL_CFLAGS@
+SDL_CONFIG = @SDL_CONFIG@
+SDL_LIBS = @SDL_LIBS@
+SED = @SED@
+STRIP = @STRIP@
+THDEC_LIB_AGE = @THDEC_LIB_AGE@
+THDEC_LIB_CURRENT = @THDEC_LIB_CURRENT@
+THDEC_LIB_REVISION = @THDEC_LIB_REVISION@
+THENC_LIB_AGE = @THENC_LIB_AGE@
+THENC_LIB_CURRENT = @THENC_LIB_CURRENT@
+THENC_LIB_REVISION = @THENC_LIB_REVISION@
+THEORADEC_LDFLAGS = @THEORADEC_LDFLAGS@
+THEORAENC_LDFLAGS = @THEORAENC_LDFLAGS@
+THEORA_LDFLAGS = @THEORA_LDFLAGS@
+TH_LIB_AGE = @TH_LIB_AGE@
+TH_LIB_CURRENT = @TH_LIB_CURRENT@
+TH_LIB_REVISION = @TH_LIB_REVISION@
+VALGRIND_ENVIRONMENT = @VALGRIND_ENVIRONMENT@
+VERSION = @VERSION@
+VORBISENC_LIBS = @VORBISENC_LIBS@
+VORBISFILE_LIBS = @VORBISFILE_LIBS@
+VORBIS_CFLAGS = @VORBIS_CFLAGS@
+VORBIS_LIBS = @VORBIS_LIBS@
+am__include = @am__include@
+am__quote = @am__quote@
+install_sh = @install_sh@
+lt_ECHO = @lt_ECHO@
+ltdl_LIBOBJS = @ltdl_LIBOBJS@
+ltdl_LTLIBOBJS = @ltdl_LTLIBOBJS@
+sys_symbol_underscore = @sys_symbol_underscore@
+
+SUBDIRS = spec
+
+docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)
+
+static_docs = vp3-format.txt color.html \
+ draft-ietf-avt-rtp-theora-00.xml \
+ draft-ietf-avt-rtp-theora-00.txt
+
+
+doc_DATA = $(static_docs) doxygen-build.stamp
+
+EXTRA_DIST = $(static_docs) Doxyfile.in
+
+dist_docdir = $(distdir)/libtheora
+subdir = doc
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = Doxyfile
+DIST_SOURCES =
+DATA = $(doc_DATA)
+
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \
+ uninstall-info-recursive all-recursive install-data-recursive \
+ install-exec-recursive installdirs-recursive install-recursive \
+ uninstall-recursive check-recursive installcheck-recursive
+DIST_COMMON = Doxyfile.in Makefile.am Makefile.in
+DIST_SUBDIRS = $(SUBDIRS)
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+Doxyfile: $(top_builddir)/config.status Doxyfile.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+docDATA_INSTALL = $(INSTALL_DATA)
+install-docDATA: $(doc_DATA)
+ @$(NORMAL_INSTALL)
+ $(mkinstalldirs) $(DESTDIR)$(docdir)
+ @list='$(doc_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f="`echo $$p | sed -e 's|^.*/||'`"; \
+ echo " $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f"; \
+ $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f; \
+ done
+
+uninstall-docDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(doc_DATA)'; for p in $$list; do \
+ f="`echo $$p | sed -e 's|^.*/||'`"; \
+ echo " rm -f $(DESTDIR)$(docdir)/$$f"; \
+ rm -f $(DESTDIR)$(docdir)/$$f; \
+ done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+ @list='$(DISTFILES)'; for file in $$list; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d $(distdir)/$$subdir \
+ || mkdir $(distdir)/$$subdir \
+ || exit 1; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" \
+ distdir=../$(distdir)/$$subdir \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="${top_distdir}" distdir="$(distdir)" \
+ dist-hook
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+ $(mkinstalldirs) $(DESTDIR)$(docdir)
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-recursive
+
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-data-local install-docDATA
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+uninstall-am: uninstall-docDATA uninstall-info-am uninstall-local
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \
+ clean-generic clean-libtool clean-local clean-recursive \
+ distclean distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am \
+ dvi-recursive info info-am info-recursive install install-am \
+ install-data install-data-am install-data-local \
+ install-data-recursive install-docDATA install-exec \
+ install-exec-am install-exec-recursive install-info \
+ install-info-am install-info-recursive install-man \
+ install-recursive install-strip installcheck installcheck-am \
+ installdirs installdirs-am installdirs-recursive \
+ maintainer-clean maintainer-clean-generic \
+ maintainer-clean-recursive mostlyclean mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-recursive tags tags-recursive \
+ uninstall uninstall-am uninstall-docDATA uninstall-info-am \
+ uninstall-info-recursive uninstall-local uninstall-recursive
+
+
+@HAVE_DOXYGEN_TRUE@doxygen-build.stamp: Doxyfile $(top_srcdir)/include/theora/*.h
+@HAVE_DOXYGEN_TRUE@ doxygen
+@HAVE_DOXYGEN_TRUE@ touch doxygen-build.stamp
+@HAVE_DOXYGEN_FALSE@doxygen-build.stamp:
+@HAVE_DOXYGEN_FALSE@ echo "*** Warning: Doxygen not found; documentation will not be built."
+@HAVE_DOXYGEN_FALSE@ touch doxygen-build.stamp
+
+dist-hook:
+ if test -d libtheora; then \
+ mkdir $(dist_docdir); \
+ echo -n "copying built documenation..."; \
+ for dir in libtheora/*; do \
+ b=`basename $$dir`; \
+ if test $$b != ".svn"; then \
+ if test -d $$dir; then \
+ mkdir $(dist_docdir)/$$b; \
+ for f in $$dir/*; do \
+ cp -p $$f $(dist_docdir)/$$b; \
+ done; \
+ fi; \
+ fi; \
+ done; \
+ echo "OK"; \
+ fi
+ for item in $(EXTRA_DIST); do \
+ if test -d $$item; then \
+ echo -n "cleaning $$item dir for distribution..."; \
+ rm -rf `find $(distdir)/$$item -name .svn`; \
+ echo "OK"; \
+ fi; \
+ done
+
+install-data-local: doxygen-build.stamp
+ $(mkinstalldirs) $(DESTDIR)$(docdir)
+ if test -d libtheora; then \
+ for dir in libtheora/*; do \
+ if test -d $$dir; then \
+ b=`basename $$dir`; \
+ $(mkinstalldirs) $(DESTDIR)$(docdir)/$$b; \
+ for f in $$dir/*; do \
+ $(INSTALL_DATA) $$f $(DESTDIR)$(docdir)/$$b; \
+ done \
+ fi \
+ done \
+ fi
+
+uninstall-local:
+ rm -rf $(DESTDIR)$(docdir)
+
+clean-local:
+ if test -d libtheora; then rm -rf libtheora; fi
+ if test -f doxygen-build.stamp; then rm -f doxygen-build.stamp; fi
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/color.html b/doc/color.html
new file mode 100644
index 0000000..9bc2450
--- /dev/null
+++ b/doc/color.html
@@ -0,0 +1,602 @@
+<HTML>
+<HEAD><TITLE>xiph.org: Ogg Theora documentation</TITLE></HEAD>
+<BODY BGCOLOR="#FFFFFF" TEXT="#202020" LINK="#006666" VLINK="#000000">
+<H1><FONT COLOR="#000070">
+Ogg Theora I specification: color space conventions
+</FONT></H1>
+<H1>Overview</H1>
+<P>
+There are a large number of different color standards used in digital video.
+Since Theora is a lossy codec, it restricts itself to only a few of them to
+ simplify playback.
+Unlike the alternate method of describing all the parameters of the color
+ model, this allows a few dedicated routines for color conversion to be written
+ and heavily optimized in a decoder.
+More flexible conversion functions should instead be specified in an encoder,
+ where additional computational complexity is more easily tolerated.
+The color spaces were selected to give a fair representation of color standards
+ in use around the world today.
+Most of the standards that do not exactly match one of these can be converted
+ to one fairly easily.
+</P>
+<P>
+The Theora codec identification header contains an 8-bit value that describes
+ the color space.
+This merely selects one of the color spaces available from an enumerated list.
+Currently, only two color spaces are defined, with a third possibility that
+ indicates the color space is "unknown".
+All of them are Y'C<SUB>b</SUB>C<SUB>r</SUB> color spaces with one luma channel
+ and two chroma channels.
+Each channel contains 8-bit discrete values in the range 0-255, which represent
+ non-linear gamma pre-corrected signals.
+</P>
+<H2>color space parameters</H2>
+<P>
+The parameters which describe each color space are listed below.
+These are the parameters needed to map colors from the encoded
+ Y'C<SUB>b</SUB>C<SUB>r</SUB> representation to the device-independent color
+ space CIE XYZ (1931).
+</P>
+<DL>
+<DT>Y'C<SUB>b</SUB>C<SUB>r</SUB> to Y'P<SUB>b</SUB>P<SUB>r</SUB></DT>
+<DD>
+<P>
+This conversion takes 8-bit discrete values in the range 0-255 and maps them to
+ real values in the range [0,1] for Y and [-1/2,1/2] for P<SUB>b</SUB>
+ and P<SUB>r</SUB>.
+Because some values may fall outside the offset and excursion defined for each
+ channel in the Y'C<SUB>b</SUB>C<SUB>r</SUB> space, the results may fall
+ outside these ranges in Y'P<SUB>b</SUB>P<SUB>r</SUB> space.
+No clamping should be done at this stage.
+</P>
+<P>
+Parameters: <EM>Offset<SUB>Y,C<SUB>b</SUB>,C<SUB>r</SUB></SUB></EM>,
+ <EM>Excursion<SUB>Y,C<SUB>b</SUB>,C<SUB>r</SUB>,</SUB></EM>
+</P>
+<TABLE>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">Y'<SUB>out</SUB></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">
+(Y'<SUB>in</SUB>-<EM>Offset<SUB>Y</SUB></EM>)/
+ <EM>Excursion<SUB>Y</SUB></EM>
+</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">P<SUB>b</SUB></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">
+(C<SUB>b</SUB>-<EM>Offset<SUB>C<SUB>b</SUB></SUB></EM>)/
+ <EM>Excursion<SUB>C<SUB>b</SUB></SUB></EM>
+</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">P<SUB>r</SUB></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">
+(C<SUB>r</SUB>-<EM>Offset<SUB>C<SUB>r</SUB></SUB></EM>)/
+ <EM>Excursion<SUB>C<SUB>r</SUB></SUB></EM>
+</TD>
+</TR>
+</TABLE>
+</DD>
+<DT>Y'P<SUB>b</SUB>P<SUB>r</SUB> to R'G'B'</DT>
+<DD>
+<P>
+This conversion takes the one luma and two chroma channel representation and
+ maps it to the non-linear R'G'B' space used to drive actual output devices.
+Values should be clamped into the range [0,1] after this stage.
+<P>
+Parameters: <EM>K<SUB>b</SUB></EM>, <EM>K<SUB>r</SUB></EM>
+</P>
+<TABLE>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">R'</TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">Y' + 2(1-<EM>K<SUB>r</SUB></EM>)P<SUB>r</SUB></TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">G'</TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">
+Y' +
+ 2((<EM>K<SUB>b</SUB></EM>-1)<EM>K<SUB>b</SUB></EM>/
+ (1-<EM>K<SUB>b</SUB></EM>-<EM>K<SUB>r</SUB></EM>))P<SUB>b</SUB> +
+ 2((<EM>K<SUB>r</SUB></EM>-1)<EM>K<SUB>r</SUB></EM>/
+ (1-<EM>K<SUB>b</SUB></EM>-<EM>K<SUB>r</SUB></EM>))P<SUB>r</SUB>
+</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">B'</TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">Y' + 2(1-<EM>K<SUB>b</SUB></EM>)P<SUB>b</SUB></TD>
+</TR>
+</TABLE>
+</DD>
+<DT>R'G'B' to RGB (Output device gamma correction)</DT>
+<DD>
+<P>
+This conversion takes the non-linear R'G'B' voltage levels and maps it to the
+ linear light levels produced by the actual output device.
+Note that this conversion is only that of the output device, and its inverse is
+ <EM>not</EM> that used by the input device.
+Because a dim viewing environment is assumed in most television standards, the
+ overall gamma between the input and output devices is usually around 1.1 to
+ 1.2, and not a strict 1.0.
+</P>
+<P>
+For calibration with actual output devices, the model
+<TABLE>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">L</TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">(E'+&Delta;)<SUP><EM>&gamma;</EM></SUP></TD>
+</TR>
+</TABLE>
+should be used, with &Delta; the free parameter and <EM>&gamma;</EM> held
+ fixed to the value specified in this document.
+The conversion function presented here is an idealized version with &Delta;=0.
+</P>
+<P>
+Parameters: <EM>&gamma;</EM>
+</P>
+<TABLE>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">R</TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">R'<SUP><EM>&gamma;</EM></SUP></TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">G</TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">G'<SUP><EM>&gamma;</EM></SUP></TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">B</TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">B'<SUP><EM>&gamma;</EM></SUP></TD>
+</TR>
+</TABLE>
+</DD>
+<DT>RGB to R'G'B' (Input device gamma correction)</DT>
+<DD>
+<P>
+This conversion takes linear light levels and maps them to the non-linear
+ voltage levels used to drive the actual output device.
+This information is merely informative.
+It is not required for building a decoder or for converting between the various
+ formats and the actual output capabilities of a particular device.
+</P>
+<P>
+A linear segment is introduced on the low end to reduce noise in dark areas of
+ the image.
+The rest of the scale is adjusted so that the power segment of the curve
+ intersects the linear segment with the proper slope, and so that it still maps
+ 0 to 0 and 1 to 1.
+</P>
+<P>
+Parameters: <EM>&beta;</EM>, <EM>&alpha;</EM>, <EM>&delta;</EM>,
+ <EM>&epsilon;</EM>
+</P>
+<TABLE>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">R'</TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">
+(1+<EM>&epsilon;</EM>)R<SUP>&beta;</SUP>-<EM>&epsilon;</EM>
+</TD>
+<TD>for <EM>&delta;</EM> &le; R &le; 1</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">R'</TD>
+<TD>=</TD>
+<TD ALIGN="LEFT"><EM>&alpha;</EM>R</TD>
+<TD>for 0 &le; R &lt; <EM>&delta;</EM></TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">G'</TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">
+(1+<EM>&epsilon;</EM>)G<SUP>&beta;</SUP>-<EM>&epsilon;</EM>
+</TD>
+<TD>for <EM>&delta;</EM> &le; G &le; 1</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">G'</TD>
+<TD>=</TD>
+<TD ALIGN="LEFT"><EM>&alpha;</EM>G</TD>
+<TD>for 0 &le; G &lt; <EM>&delta;</EM></TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">B'</TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">
+(1+<EM>&epsilon;</EM>)B<SUP>&beta;</SUP>-<EM>&epsilon;</EM>
+</TD>
+<TD>for <EM>&delta;</EM> &le; B &le; 1</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">B'</TD>
+<TD>=</TD>
+<TD ALIGN="LEFT"><EM>&alpha;</EM>B</TD>
+<TD>for 0 &le; B &lt; <EM>&delta;</EM></TD>
+</TR>
+</TABLE>
+</DD>
+<DT>RGB to CIE XYZ (1931)</DT>
+<DD>
+<P>
+This conversion maps a device-dependent linear RGB space to the
+ device-independent linear CIE XYZ space.
+The parameters are the CIE chromaticity coordinates of the three primaries,
+ red, green, and blue, as well as the chromaticity coordinates of the white
+ point of the device.
+This is how hardware manufacturers and standards typically describe a
+ particular RGB space.
+The math required to convert these parameters into a useful transformation
+ matrix is reproduced below.
+</P>
+<P>
+Parameters: <EM>x<SUB>r,g,b,w</SUB></EM>, <EM>y<SUB>r,g,b,w</SUB></EM>
+</P>
+<TABLE>
+<TR>
+<TD ALIGN="RIGHT">F</TD>
+<TD>=</TD>
+<TD ALIGN="LEFT"><TABLE><TR>
+<TD><FONT SIZE="300%">(</FONT></TD>
+<TD><TABLE>
+<TR>
+<TD ALIGN="CENTER"><EM>x<SUB>r</SUB></EM>/<EM>y<SUB>r</SUB></EM></TD>
+<TD ALIGN="CENTER"><EM>x<SUB>g</SUB></EM>/<EM>y<SUB>g</SUB></EM></TD>
+<TD ALIGN="CENTER"><EM>x<SUB>b</SUB></EM>/<EM>y<SUB>b</SUB></EM></TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">1</TD>
+<TD ALIGN="CENTER">1</TD>
+<TD ALIGN="CENTER">1</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+(1-<EM>x<SUB>r</SUB></EM>-<EM>y<SUB>r</SUB></EM>)/<EM>y<SUB>r</SUB></EM>
+</TD>
+<TD ALIGN="CENTER">
+(1-<EM>x<SUB>g</SUB></EM>-<EM>y<SUB>g</SUB></EM>)/<EM>y<SUB>g</SUB></EM>
+</TD>
+<TD ALIGN="CENTER">
+(1-<EM>x<SUB>b</SUB></EM>-<EM>y<SUB>b</SUB></EM>)/<EM>y<SUB>b</SUB></EM>
+</TD>
+</TR>
+</TABLE></TD>
+<TD<FONT SIZE="300%">)</FONT></TD>
+</TR></TABLE></TD>
+</TR>
+<TR>
+<TD ALIGN="RIGHT"><TABLE><TR>
+<TD><FONT SIZE="300%">(</FONT></TD>
+<TD><TABLE>
+<TR><TD ALIGN="CENTER">s<SUB>r</SUB></TD></TR>
+<TR><TD ALIGN="CENTER">s<SUB>g</SUB></TD></TR>
+<TR><TD ALIGN="CENTER">s<SUB>b</SUB></TD></TR>
+</TABLE></TD>
+<TD><FONT SIZE="300%">)</FONT></TD>
+</TR></TABLE></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT"><TABLE><TR>
+<TD>F<SUP>-1</SUP><FONT SIZE="300%">(</FONT></TD>
+<TD><TABLE>
+<TR><TD ALIGN="CENTER"><EM>x<SUB>w</SUB></EM>/<EM>y<SUB>w</SUB></EM></TD></TR>
+<TR><TD ALIGN="CENTER">1</TD></TR>
+<TR><TD ALIGN="CENTER">
+(1-<EM>x<SUB>w</SUB></EM>-<EM>y<SUB>w</SUB></EM>)/<EM>y<SUB>w</SUB></EM>
+</TD></TR>
+</TABLE></TD>
+<TD><FONT SIZE="300%">)</FONT></TD>
+</TR></TABLE></TD>
+</TR>
+<TR>
+<TD ALIGN="RIGHT"><TABLE><TR>
+<TD><FONT SIZE="300%">(</FONT></TD>
+<TD><TABLE>
+<TR><TD ALIGN="CENTER">X</TD></TR>
+<TR><TD ALIGN="CENTER">Y</TD></TR>
+<TR><TD ALIGN="CENTER">Z</TD></TR>
+</TABLE></TD>
+<TD><FONT SIZE="300%">)</FONT></TD>
+</TR></TABLE></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT"><TABLE><TR>
+<TD>F<FONT SIZE="300%">(</FONT></TD>
+<TD><TABLE>
+<TR><TD ALIGN="CENTER">s<SUB>r</SUB>R</TD></TR>
+<TR><TD ALIGN="CENTER">s<SUB>g</SUB>G</TD></TR>
+<TR><TD ALIGN="CENTER">s<SUB>b</SUB>B</TD></TR>
+</TABLE></TD>
+<TD><FONT SIZE="300%">)</FONT></TD>
+</TR></TABLE></TD>
+</TR>
+</TABLE>
+</DD>
+</DL>
+<H2>available color spaces</H2>
+<P>
+These are the color spaces currently defined for use by Ogg Theora video.
+Each one has a short name, with which it is referred to in this document, and
+ a more detailed specification of the standards from which its parameters are
+ derived.
+Some standards do not specify all the parameters necessary.
+For these unspecified parameters, this document serves as the definition of
+ what should be used when encoding or decoding Ogg Theora video.
+<H3>Rec 470M (Rec. ITU-R BT.470-6 System M/NTSC with Rec. ITU-R BT.601-5)</H3>
+<P>
+This color space is used by broadcast television and DVDs in much of the
+ Americas, Japan, Korea, and the Union of Myanmar
+ [<A HREF="#Rec470">Rec470</A>].
+This color space may also be used for System M/PAL (Brazil), with an
+ appropriate conversion supplied by the encoder to compensate for the
+ different gamma value.
+See the Rec 470BG section for an appropriate gamma value to assume for M/PAL
+ input.
+</P>
+<P>
+In the US, studio monitors are adjusted to a D65 white point
+ (<EM>x<SUB>w</SUB></EM>,<EM>y<SUB>w</SUB></EM>=0.313,0.329).
+In Japan, studio monitors are adjusted to a D white of 9300K
+ (<EM>x<SUB>w</SUB></EM>,<EM>y<SUB>w</SUB></EM>=0.285,0.293).
+</P>
+<P>
+Rec 470 does not specify a digital encoding of the color signals.
+For Ogg Theora, Rec. ITU-R BT.601-5 is used, starting from the R'G'B' signals
+ specified by Rec 470 [<A HREF="#Rec601">Rec601</A>].
+</P>
+<P>
+<P>
+Rec 470 does not specify an input gamma function.
+For Ogg Theora, the Rec 709 input function is used.
+This is the same as that specified by SMPTE 170M, which claims to reflect
+ modern practice in the creation of NTSC signals (c. 1994)
+ [<A HREF="#SMPTE170M">SMPTE170M</A>].
+</P>
+<H4>parameters</H4>
+<TABLE>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>Offset<SUB>Y,C<SUB>b</SUB>,C<SUB>r</SUB></SUB></EM></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT" COLSPAN="2">(16,128,128)</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">
+<EM>Excursion<SUB>Y,C<SUB>b</SUB>,C<SUB>r</SUB></SUB></EM>
+</TD>
+<TD>=</TD>
+<TD ALIGN="LEFT" COLSPAN="2">(219,224,224)</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>K<SUB>b</SUB></EM></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT" COLSPAN="2">0.114</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>K<SUB>r</SUB></EM></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT" COLSPAN="2">0.299</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>&gamma;</EM></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">2.2</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>&beta;</EM></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">0.45</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>&alpha;</EM></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">4.5</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>&delta;</EM></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">0.018</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>&epsilon;</EM></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">0.099</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>x<SUB>r</SUB></EM>,<EM>y<SUB>r</SUB></EM></TD>
+<TD>=</TD>
+<TD>0.67,</TD>
+<TD>0.33</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>x<SUB>g</SUB></EM>,<EM>y<SUB>g</SUB></EM></TD>
+<TD>=</TD>
+<TD>0.21,</TD>
+<TD>0.71</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>x<SUB>b</SUB></EM>,<EM>y<SUB>b</SUB></EM></TD>
+<TD>=</TD>
+<TD>0.14,</TD>
+<TD>0.08</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">
+(Illuminant C) <EM>x<SUB>w</SUB></EM>,<EM>y<SUB>w</SUB></EM>
+</TD>
+<TD>=</TD>
+<TD>0.310,</TD>
+<TD>0.316</TD>
+</TR>
+</TABLE>
+<H3>
+Rec 470BG (Rec. ITU-R BT.470-6 Systems B and G with Rec. ITU-R BT.601-5)
+</H3>
+<P>
+This color space is used by the PAL and SECAM systems in much of the rest of
+ the world [<A HREF="#Rec470">Rec470</A>].
+This can be used directly by systems (B, B1, D, D1, G, H, I, K, N)/PAL and (B,
+ D, G, H, K, K1, L)/SECAM.
+</P>
+<P>
+Note that the Rec 470BG chromaticity values are different from those specified
+ in Rec 470M.
+When PAL and SECAM systems were first designed, they were based upon the same
+ primaries as NTSC.
+However, as methods of making color picture tubes have changed, the primaries
+ used have changed as well.
+The US recommends using correction circuitry to approximate the existing,
+ standard NTSC primaries.
+Current PAL and SECAM systems have standardized on primaries in accord with
+ more recent technology.
+</P>
+<P>
+Rec 470 provisionally permits the use of the NTSC chromaticity values (given
+ above) with legacy PAL and SECAM equipment.
+In Ogg Theora, material must be decoded assuming the new PAL and SECAM
+ primaries.
+Material intended for display on old legacy devices should be converted by the
+ decoder.
+</P>
+<P>
+The official Rec 470BG specifies a gamma value of <EM>&gamma;</EM>=2.8.
+However, in practice this value is unrealistically high
+ [<A HREF="#RefPoy97">Poy97</A>].
+Rec 470BG states that the overall system gamma should be approximately
+ <EM>&gamma;</EM>/<EM>&beta;</EM>=1.2.
+However, most cameras pre-correct with a gamma value of <EM>&beta;</EM>=0.45,
+ which suggests an output device gamma of approximately <EM>&gamma;</EM>=2.67.
+This is the value recommended for use with PAL systems in Ogg Theora.
+</P>
+<P>
+Rec 470 does not specify a digital encoding of the color signals.
+For Ogg Theora, Rec. ITU-R BT.601-5 is used, starting from the R'G'B' signals
+ specified by Rec 470 [<A HREF="#Rec601">Rec601</A>].
+</P>
+<P>
+Rec 470 does not specify an input gamma function.
+For Ogg Theora, the Rec 709 input function is used.
+</P>
+<H4>parameters</H4>
+<TABLE>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>Offset<SUB>Y,C<SUB>b</SUB>,C<SUB>r</SUB></SUB></EM></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT" COLSPAN="2">(16,128,128)</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">
+<EM>Excursion<SUB>Y,C<SUB>b</SUB>,C<SUB>r</SUB></SUB></EM>
+</TD>
+<TD>=</TD>
+<TD ALIGN="LEFT" COLSPAN="2">(219,224,224)</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>K<SUB>b</SUB></EM></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT" COLSPAN="2">0.114</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>K<SUB>r</SUB></EM></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT" COLSPAN="2">0.299</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>&gamma;</EM></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">2.67</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>&beta;</EM></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">0.45</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>&alpha;</EM></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">4.5</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>&delta;</EM></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">0.018</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>&epsilon;</EM></TD>
+<TD>=</TD>
+<TD ALIGN="LEFT">0.099</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>x<SUB>r</SUB></EM>,<EM>y<SUB>r</SUB></EM></TD>
+<TD>=</TD>
+<TD>0.64,</TD>
+<TD>0.33</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>x<SUB>g</SUB></EM>,<EM>y<SUB>g</SUB></EM></TD>
+<TD>=</TD>
+<TD>0.29,</TD>
+<TD>0.60</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT"><EM>x<SUB>b</SUB></EM>,<EM>y<SUB>b</SUB></EM></TD>
+<TD>=</TD>
+<TD>0.15,</TD>
+<TD>0.06</TD>
+</TR>
+<TR VALIGN="BOTTOM">
+<TD ALIGN="RIGHT">
+(D65) <EM>x<SUB>w</SUB></EM>,<EM>y<SUB>w</SUB></EM>
+</TD>
+<TD>=</TD>
+<TD>0.313,</TD>
+<TD>0.329</TD>
+</TR>
+</TABLE>
+<H2>references</H2>
+<DL>
+<DT>[<A NAME="Poy97">Poy97</A>]</DT>
+<DD>
+Poynton, Charles, <I>Frequently-Asked Questions about Gamma</I>.
+ <A HREF="http://www.poynton.com/GammaFAQ.html">http://www.poynton.com/GammaFAQ/html</A>,
+ Feb. 1997.
+</DD>
+<DT>[<A NAME="Rec470">Rec470</A>]</DT>
+<DD>
+Recommendation ITU-R BT.470-6, <I>Conventional Television Systems</I>
+ (1970, revised 1998). International Telecommunications Union, 1211 Geneva 20,
+ Switzerland.
+</DD>
+<DT>[<A NAME="Rec601">Rec601</A>]</DT>
+<DD>
+Recommendation ITU-R BT.601-5, <I>Studio Encoding Parameters of
+ Digital Television for Standard 4:3 and Wide-Screen 16:9 Aspect Ratios</I>
+ (1982, revised 1995). International Telecommunications Union, 1211 Geneva 20,
+ Switzerland.
+</DD>
+<DT>[<A NAME="Rec709">Rec709</A>]</DT>
+<DD>
+Recommendation ITU-R BT.709-5, <I>Parameter values for the
+ HDTV standards for production and international programme exchange</I>
+ (1990, revised 2002). International Telecommunications Union, 1211 Geneva 20,
+ Switzerland.
+</DD>
+<DT>[<A NAME="SMPTE170M">SMPTE170M</A>]</DT>
+<DD>
+Society of Motion Picture and Television Engineers, <I>Television &mdash;
+ Composite Analog Video Signal &mdash; NTSC for Studio Applications</I>.
+ SMPTE-170M, 1994
+</DD>
+<DT>[<A NAME="SMPTE240M">SMPTE240M</A>]</DT>
+<DD>
+Society of Motion Picture and Television Engineers, <I>Television &mdash;
+ Signal Parameters &mdash; 1125-Line High-Definition Production</I>.
+ SMPTE-240M, 1999.
+</DD>
+</DL>
+</BODY>
+</HTML>
diff --git a/doc/draft-ietf-avt-rtp-theora-00.txt b/doc/draft-ietf-avt-rtp-theora-00.txt
new file mode 100644
index 0000000..f759aef
--- /dev/null
+++ b/doc/draft-ietf-avt-rtp-theora-00.txt
@@ -0,0 +1,1400 @@
+
+
+
+AVT Working Group L. Barbato
+Internet-Draft Xiph.Org
+Expires: January 22, 2007 July 21, 2006
+
+
+ draft-ietf-avt-rtp-theora-00
+ RTP Payload Format for Theora Encoded Video
+
+Status of this Memo
+
+ By submitting this Internet-Draft, each author represents that any
+ applicable patent or other IPR claims of which he or she is aware
+ have been or will be disclosed, and any of which he or she becomes
+ aware will be disclosed, in accordance with Section 6 of BCP 79.
+
+ Internet-Drafts are working documents of the Internet Engineering
+ Task Force (IETF), its areas, and its working groups. Note that
+ other groups may also distribute working documents as Internet-
+ Drafts.
+
+ Internet-Drafts are draft documents valid for a maximum of six months
+ and may be updated, replaced, or obsoleted by other documents at any
+ time. It is inappropriate to use Internet-Drafts as reference
+ material or to cite them other than as "work in progress."
+
+ The list of current Internet-Drafts can be accessed at
+ http://www.ietf.org/ietf/1id-abstracts.txt.
+
+ The list of Internet-Draft Shadow Directories can be accessed at
+ http://www.ietf.org/shadow.html.
+
+ This Internet-Draft will expire on January 22, 2007.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2006).
+
+Abstract
+
+ This document describes a RTP payload format for transporting Theora
+ encoded video. It details the RTP encapsulation mechanism for raw
+ Theora data and configuration headers necessary to configure the
+ decoder.
+
+ Also included within the document are the necessary details for the
+ use of Theora with MIME and Session Description Protocol (SDP).
+
+Editors Note
+
+
+
+Barbato Expires January 22, 2007 [Page 1]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ All references to RFC XXXX are to be replaced by references to the
+ RFC number of this memo, when published.
+
+
+Table of Contents
+
+ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
+ 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4
+ 2. Payload Format . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 2.1. RTP Header . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 2.2. Payload Header . . . . . . . . . . . . . . . . . . . . . . 5
+ 2.3. Payload Data . . . . . . . . . . . . . . . . . . . . . . . 6
+ 2.4. Example RTP Packet . . . . . . . . . . . . . . . . . . . . 7
+ 3. Configuration Headers . . . . . . . . . . . . . . . . . . . . 8
+ 3.1. In-band Header Transmission . . . . . . . . . . . . . . . 9
+ 3.1.1. Packed Configuration . . . . . . . . . . . . . . . . . 9
+ 3.2. Out of Band Transmission . . . . . . . . . . . . . . . . . 10
+ 3.2.1. Packed Headers . . . . . . . . . . . . . . . . . . . . 11
+ 3.3. Loss of Configuration Headers . . . . . . . . . . . . . . 13
+ 4. Comment Headers . . . . . . . . . . . . . . . . . . . . . . . 13
+ 5. Frame Packetizing . . . . . . . . . . . . . . . . . . . . . . 14
+ 5.1. Example Fragmented Theora Packet . . . . . . . . . . . . . 15
+ 5.2. Packet Loss . . . . . . . . . . . . . . . . . . . . . . . 17
+ 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18
+ 6.1. Mapping MIME Parameters into SDP . . . . . . . . . . . . . 19
+ 6.1.1. SDP Example . . . . . . . . . . . . . . . . . . . . . 20
+ 6.2. Usage with the SDP Offer/Answer Model . . . . . . . . . . 20
+ 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
+ 7.1. Stream Video . . . . . . . . . . . . . . . . . . . . . . . 21
+ 8. Security Considerations . . . . . . . . . . . . . . . . . . . 21
+ 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 22
+ 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 22
+ 10.1. Normative References . . . . . . . . . . . . . . . . . . . 22
+ 10.2. Informative References . . . . . . . . . . . . . . . . . . 23
+ Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 24
+ Intellectual Property and Copyright Statements . . . . . . . . . . 25
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Barbato Expires January 22, 2007 [Page 2]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+1. Introduction
+
+ Theora is a general purpose, lossy video codec. It is based on the
+ VP3 video codec produced by On2 Technologies and has been donated to
+ the Xiph.org Foundation.
+
+ Theora I is a block-based lossy transform codec that utilizes an 8 x
+ 8 Type-II Discrete Cosine Transform and block-based motion
+ compensation. This places it in the same class of codecs as MPEG-1,
+ MPEG-2, MPEG-4, and H.263. The details of how individual blocks are
+ organized and how DCT coefficients are stored in the bitstream differ
+ substantially from these codecs, however. Theora supports only intra
+ frames (I frames in MPEG) and inter frames (P frames in MPEG).
+
+ Theora provides none of its own framing, synchronization, or
+ protection against transmission errors. Instead, the codec expects
+ to receive a discrete sequence of data packets. Theora is a free-
+ form variable bit rate (VBR) codec, and these packets have no minimum
+ size, maximum size, or fixed/expected size. Theora packets are thus
+ intended to be used with a transport mechanism that provides free-
+ form framing, synchronization, positioning, and error correction in
+ accordance with these design assumptions, such as Ogg [1] or RTP/AVP
+ [3].
+
+ Theora I currently supports progressive video data of arbitrary
+ dimensions at a constant frame rate in one of several Y'CbCr color
+ spaces. Three different chroma subsampling formats are supported:
+ 4:2:0, 4:2:2, and 4:4:4. The Theora I format does not support
+ interlaced material, variable frame rates, bit-depths larger than 8
+ bits per component, nor alternate color spaces such as RGB or
+ arbitrary multi-channel spaces. Black and white content can be
+ efficiently encoded, however, because the uniform chroma planes
+ compress well. For performance reason, arbitrary frame sizes will be
+ encoded rounding both dimensions to the upper multiple of 16. The
+ original width and height will be encoded in the header and the
+ decoder will use this information to clip the decoded frame to the
+ right dimensions.
+
+ Theora is similar to the Vorbis audio [10] in that the decoder reads
+ the probability model for the entropy coder and all quantization
+ parameters from special "header" packets at the start of the
+ compressed data. It is therefore impossible to decode any video data
+ without having previously fetched the codec info and codec setup
+ headers, although Theora can begin to decode at an arbitrary intra-
+ frame packet so long as the codec has been initialized with the
+ associated headers.
+
+
+
+
+
+Barbato Expires January 22, 2007 [Page 3]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+1.1. Terminology
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in RFC 2119 [2].
+
+
+2. Payload Format
+
+ For RTP based transportation of Theora encoded video the standard RTP
+ header is followed by a 4 octets payload header, then the payload
+ data. The payload headers are used to associate the Theora data with
+ its associated decoding codebooks as well as indicating if the
+ following packet contains fragmented Theora data and/or the number of
+ whole Theora data frames. The payload data contains the raw Theora
+ bitstream information.
+
+ For RTP based transport of Theora encoded video the standard RTP
+ header is followed by a 4 octets payload header, then the payload
+ data.
+
+2.1. RTP Header
+
+ The format of the RTP header is specified in [3] and shown in Figure
+ 1. This payload format uses the fields of the header in a manner
+ consistent with that specification.
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |V=2|P|X| CC |M| PT | sequence number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | timestamp |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | synchronization source (SSRC) identifier |
+ +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+ | contributing source (CSRC) identifiers |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 1: RTP Header
+
+ The RTP header begins with an octet of fields (V, P, X, and CC) to
+ support specialized RTP uses (see [3] and [4] for details). For
+ Theora RTP, the following values are used.
+
+ Version (V): 2 bits
+
+
+
+
+Barbato Expires January 22, 2007 [Page 4]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ This field identifies the version of RTP. The version used by this
+ specification is two (2).
+
+ Padding (P): 1 bit
+
+ Padding MAY be used with this payload format according to section 5.1
+ of [3].
+
+ Extension (X): 1 bit
+
+ The Extension bit is used in accordance with [3].
+
+ CSRC count (CC): 4 bits
+
+ The CSRC count is used in accordance with [3].
+
+ Marker (M): 1 bit
+
+ The Marker bit is used in accordance with [3].
+
+ Payload Type (PT): 7 bits
+
+ An RTP profile for a class of applications is expected to assign a
+ payload type for this format, or a dynamically allocated payload type
+ SHOULD be chosen which designates the payload as Theora.
+
+ Sequence number: 16 bits
+
+ The sequence number increments by one for each RTP data packet sent,
+ and may be used by the receiver to detect packet loss and to restore
+ packet sequence. This field is detailed further in [3].
+
+ Timestamp: 32 bits
+
+ A timestamp representing the presentation time of the first sample of
+ the first Theora packet in the RTP packet. The clock frequency MUST
+ be set to 90kHz.
+
+ SSRC/CSRC identifiers:
+
+ These two fields, 32 bits each with one SSRC field and a maximum of
+ 16 CSRC fields, are as defined in [3].
+
+2.2. Payload Header
+
+ The 4 octets following the RTP Header section represent the Payload
+ Header. This header is split into a number of bitfields detailing
+ the format of the following Payload Datagrams.
+
+
+
+Barbato Expires January 22, 2007 [Page 5]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Configuration Ident | F |TDT|# pkts.|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +-+-+-+-+-+-+-+-+
+
+ Figure 2: Payload Header
+
+ Configuration Ident: 24 bits
+
+ This 24 bit field is used to associate the Theora data to a decoding
+ Packed Configuration.
+
+ Fragment type (F): 2 bit
+
+ This field is set according to the following list
+
+ 0 = Not Fragmented
+ 1 = Start Fragment
+ 2 = Continuation Fragment
+ 3 = End Fragment
+
+ This field must be zero if the number of packets field is non-zero.
+
+ Theora Data Type (TDT): 2 bits
+
+ This field sets the packet payload type for the Theora data. There
+ are currently three Theora payload types currently used and one
+ reserved for future use.
+
+ 0 = Raw Theora payload
+ 1 = Theora Packed Configuration payload
+ 2 = Legacy Theora Comment payload
+ 3 = Reserved
+
+ The packets with a TDT of value 3 MUST be ignored
+
+ The last 4 bits represent the number of complete packets in this
+ payload. This provides a maximum number of 15 Theora packets in the
+ payload. If the packet contains fragmented data the number of
+ packets MUST be set to 0.
+
+2.3. Payload Data
+
+ Each Theora payload section starts with a two octets length header
+ that is used to represent the size of the following data payload,
+
+
+
+Barbato Expires January 22, 2007 [Page 6]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ followed by the raw Theora packet data.
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Payload Length | Theora Data ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 3: Payload Data
+
+ The Theora codec uses relatively unstructured raw packets containing
+ binary integer fields of arbitrary width that often do not fall on an
+ octet boundary. When a Theora encoder produces packets, unused space
+ in the last byte of a packet is always zeroed during the encoding
+ process. Thus, should this unused space be read, it will return
+ binary zeros.
+
+ For payloads which consist of multiple Theora packets the payload
+ data consists of the payload length field followed by the first
+ Theora packet's data, then the payload length followed by the second
+ Theora packet, and so on for each of the Theora packets in the
+ payload.
+
+2.4. Example RTP Packet
+
+ Here is an example RTP packet containing two Theora packets.
+
+ RTP Packet Header:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 2 |0|0| 0 |0| PT | sequence number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | timestamp |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | synchronisation source (SSRC) identifier |
+ +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+ | contributing source (CSRC) identifiers |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 4: Example RTP Packet
+
+ Payload Data:
+
+
+
+
+
+
+Barbato Expires January 22, 2007 [Page 7]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Configuration Ident | 0 | 0 | 2 pks |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Payload Length | ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Theora data ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. data | Payload Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Theora data |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 5: Example Theora Payload Packet
+
+ The payload portion of the packet begins with the 24 bit
+ Configuration ident field followed by 8 bits describing the payload.
+ The Fragment type field is set to 0, indicating that this packet
+ contains whole Theora frame data. The Data type field is set to 0
+ (theora raw data). The number of whole Theora data packets is set to
+ 2.
+
+ Each of the payload blocks starts with the two octets length field
+ followed by the variable length Theora packet data.
+
+
+3. Configuration Headers
+
+ To decode a Theora stream three configuration header packets are
+ needed. The first (Identification Header) indicates frame
+ dimensions, quality, blocks used and Theora encoder version. The
+ second (Comment Header) contains stream metadata and the third (Setup
+ Header) contains details of the dequantization and Huffman tables.
+
+ Since this information must be transmitted reliably, and as the RTP
+ stream may change certain configuration data mid-session, there are
+ different methods for delivering this configuration data to a client,
+ both in-band and out-of-band, which are detailed below. SDP delivery
+ is used to set up an initial state for the client application. The
+ changes may be due to different dequantization and Huffman tables as
+ well as different bitrates of the stream.
+
+ The delivery vectors in use are specified by an SDP attribute that
+ indicates the method and the optional URI where the Theora Packed
+ Configuration (Section 3.1.1) Packets could be fetched. Different
+ delivery methods MAY be advertised for the same session. The in-band
+ codebook delivery SHOULD be considered as baseline, out-of-band
+
+
+
+Barbato Expires January 22, 2007 [Page 8]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ delivery methods that don't use RTP will not be described in this
+ document. For non chained streams, the RECOMMENDED Configuration
+ delivery method is inline the Packed Configuration (Section 3.1.1) in
+ the SDP as explained in the IANA considerations (Section 6.1)
+
+ The 24 bit Ident field is used to map which Configuration will be
+ used to decode a packet. When the Ident field changes, it indicates
+ that a change in the stream has taken place. The client application
+ MUST have in advance the correct configuration and if the client
+ detects a change in the Ident value and does not have this
+ information it MUST NOT decode the raw data associated until it has
+ fetched the correct Configuration.
+
+3.1. In-band Header Transmission
+
+ The Packed Configuration (Section 3.1.1) Payload is sent in-band with
+ the packet type bits set to match the payload type. Clients MUST be
+ capable of dealing with periodic re-transmission of the configuration
+ headers.
+
+3.1.1. Packed Configuration
+
+ A Theora Packed Configuration is identified by a payload type field
+ of 1. Of the three headers, defined in the Theora I specification
+ [16], the identification and the setup will be packed together, while
+ the comment header will be completely suppressed. It is up to the
+ client to provide a minimal size comment header to the decoder if
+ required by the implementation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Barbato Expires January 22, 2007 [Page 9]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |V=2|P|X| CC |M| PT | xxxx |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | xxxxx |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | synchronization source (SSRC) identifier |
+ +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+ | contributing source (CSRC) identifiers |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Configuration Ident | 0 | 1 | 1|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length | Identification ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Identification ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Identification ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Identification |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. | Setup ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Setup ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Setup |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 6: Packed Configuration Figure
+
+ The Ident field is set with the value that will be used by the Raw
+ Payload Packets to address this Configuration. The Fragment type is
+ set to 0 since the packet bears full Packed configuration, the number
+ of packet is set to 1. In practice, Packed Headers usually need to
+ be fragmented to fit the path MTU.
+
+3.2. Out of Band Transmission
+
+ This section, as stated above, does not cover all the possible out-
+ of-band delivery methods since they rely on different protocols and
+ are linked to specific applications. The following packet definition
+ SHOULD be used in out-of-band delivery and MUST be used when
+ Configuration is inlined in the SDP.
+
+
+
+
+
+
+Barbato Expires January 22, 2007 [Page 10]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+3.2.1. Packed Headers
+
+ As mentioned above, the recommended delivery vector for Theora
+ configuration data is via a retrieval method that can be performed
+ using a reliable transport protocol. As the RTP headers are not
+ required for this method of delivery the structure of the
+ configuration data is slightly different. The packed header starts
+ with a 32 bit count field which details the number of packed headers
+ that are contained in the bundle. Next is the Packed header payload
+ for each setup id.
+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Number of packed headers |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Packed header |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Packed header |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 7: Packed Headers Overview
+
+ Since the Configuration Ident and the Identification Header are fixed
+ length there is only a 16bit Length tag to define the length of the
+ packed headers.
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Configuration Ident | ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Length | Identification Header ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Identification Header |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Setup Header ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Setup Header |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 8: Packed Headers Detail
+
+ The key difference from the in-band format is that there is no need
+ for the payload header octet.
+
+
+
+
+
+
+Barbato Expires January 22, 2007 [Page 11]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+3.2.1.1. Packed Headers IANA Considerations
+
+ The following IANA considerations MUST only be applied to the packed
+ headers.
+
+ MIME media type name: audio
+
+ MIME subtype: theora-config
+
+ Required Parameters:
+
+ None
+
+ Optional Parameters:
+
+ None
+
+ Encoding considerations:
+
+ This media type contains binary data.
+
+ Security Considerations:
+
+ See Section 6 of RFC XXXX.
+
+ Interoperability considerations:
+
+ None
+
+ Published specification:
+
+ RFC XXXX [RFC Editor: please replace by the RFC number of this
+ memo, when published]
+
+ Applications which use this media type:
+
+ Theora encoded video, configuration data.
+
+ Additional information:
+
+ None
+
+ Person & email address to contact for further information:
+
+ Luca Barbato: <lu_zero@gentoo.org>
+ IETF Audio/Video Transport Working Group
+
+
+
+
+
+Barbato Expires January 22, 2007 [Page 12]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ Intended usage: COMMON
+
+ Restriction on usage:
+
+ This media type does not depend on the transport.
+
+ Author:
+
+ Luca Barbato
+
+ Change controller:
+
+ IETF AVT Working Group
+
+3.3. Loss of Configuration Headers
+
+ Unlike the loss of raw Theora payload data, the loss of a
+ configuration header can lead to a situation where it will not be
+ possible to successfully decode the stream.
+
+ A loss of a Configuration Packet causes the stream decoder to halt
+ and SHOULD be reported to the client as well as a loss report sent
+ via RTCP.
+
+
+4. Comment Headers
+
+ When the payload type is set to 2, the packet contains comment
+ metadata such as artist name, track title and so on. These metadata
+ messages are not intended to be fully descriptive but to offer basic
+ title information. Clients MAY choose to completely ignore them.
+ The details on the comments format can be found in the Theora
+ documentation [16].
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Barbato Expires January 22, 2007 [Page 13]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |V=2|P|X| CC |M| PT | xxxx |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | xxxxx |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | synchronization source (SSRC) identifier |
+ +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+ | contributing source (CSRC) identifiers |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Configuration Ident | 0 | 2 | 1|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length | Comment ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Comment ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Comment |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 9: Comment Packet
+
+ The 2 byte length field is necessary since this Theora packet could
+ be fragmented.
+
+
+5. Frame Packetizing
+
+ Each RTP packet contains either one complete Theora packet, one
+ Theora packet fragment, or an integer number of complete Theora
+ packets (up to a maximum of 15 packets, since the number of packets
+ is defined by a 4 bit value).
+
+ Any Theora data packet that is less than path MTU SHOULD be bundled
+ in the RTP packet with as many Theora packets as will fit, up to a
+ maximum of 15. Path MTU is detailed in [7] and [8].
+
+ A fragmented packet has a zero in the last four bits of the payload
+ header. The RTP packet containing the first fragment will set the
+ Fragment type to 1. Each RTP packet after the first will set the
+ Fragment type to 2 in the payload header. The RTP packet containing
+ the last fragment of the Theora packet will have the Fragment type
+ set to 3. If the fragmented Theora packet spans only two RTP
+ packets, the first will set the Fragment type field to 1 and the
+ second will set it to 2. To maintain the correct sequence for
+ fragmented packet reception the timestamp field of fragmented packets
+
+
+
+Barbato Expires January 22, 2007 [Page 14]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ MUST be the same as the first packet sent, with the sequence number
+ incremented as normal for the subsequent RTP packets.
+
+5.1. Example Fragmented Theora Packet
+
+ Here is an example fragmented Theora packet split over three RTP
+ packets. Each packet contains the standard RTP headers as well as
+ the 4 octets Theora headers.
+
+ Packet 1:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |V=2|P|X| CC |M| PT | 1000 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | xxxxx |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | synchronization source (SSRC) identifier |
+ +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+ | contributing source (CSRC) identifiers |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Configuration Ident | 1 | 0 | 0|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Payload Length | Theora data ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Theora data ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 10: Example Fragmented Packet (Packet 1)
+
+ In this packet the initial sequence number is 1000 and the timestamp
+ is xxxxx. The Fragment type field is set to one, indicating it is
+ the start packet of a serie of fragments. The number of packets
+ field is set to 0, and as the payload is raw Theora data the Theora
+ payload type field is set to 0.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Barbato Expires January 22, 2007 [Page 15]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ Packet 2:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |V=2|P|X| CC |M| PT | 1001 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | xxxxx |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | synchronization source (SSRC) identifier |
+ +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+ | contributing source (CSRC) identifiers |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Configuration Ident | 2 | 0 | 0|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Payload Length | ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Theora data ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 11: Example Fragmented Packet (Packet 2)
+
+ The Fragment type field is set to 2 and the number of packets field
+ is set to 0. For large Theora fragments there can be several of
+ these type of payload packets. The maximum RTP packet size SHOULD be
+ no greater than the path MTU, including all RTP and payload headers.
+ The sequence number has been incremented by one but the timestamp
+ field remains the same as the initial packet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Barbato Expires January 22, 2007 [Page 16]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ Packet 3:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |V=2|P|X| CC |M| PT | 1002 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | xxxxx |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | synchronization source (SSRC) identifier |
+ +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+ | contributing source (CSRC) identifiers |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Configuration Ident | 3 | 0 | 0|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Payload Length | ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Theora data ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 12: Example Fragmented Packet (Packet 3)
+
+ This is the last Theora fragment packet. The Fragment type filed is
+ set to 3 and the packet count remains set to 0. As in the previous
+ packets the timestamp remains set to the first packet in the sequence
+ and the sequence number has been incremented.
+
+5.2. Packet Loss
+
+ As there is no error correction within the Theora stream, packet loss
+ will result in a loss of signal. Packet loss is more of an issue for
+ fragmented Theora packets as the client will have to cope with the
+ handling of the Fragment type field. If we use the fragmented Theora
+ packet example above and the first packet is lost the client MUST
+ detect that the next packet has the packet count field set to 0 and
+ the Fragment type is set to 2 and MUST drop it. The next packet,
+ which is the final fragmented packet, MUST be dropped in the same
+ manner. Feedback reports on lost and dropped packets MUST be sent
+ back via RTCP.[note: reordering]
+
+ If a particular multicast session has a large number of participants
+ care must be taken to prevent an RTCP feedback implosion, [9], in the
+ event of packet loss from a large number of participants.
+
+ Loss of any of the Configuration fragment will result in the loss of
+ the full Configuration packet as detailed in the Loss of
+
+
+
+Barbato Expires January 22, 2007 [Page 17]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ Configuration Headers (Section 3.3) section.
+
+
+6. IANA Considerations
+
+ MIME media type name: video
+
+ MIME subtype: theora
+
+ Required Parameters:
+
+ sampling: Determines the chroma subsampling format.
+
+ width: Determines the number of pixels per line. This is an
+ integer between 1 and 1048561 and MUST be in multiples of 16.
+
+ height: Determines the number of lines per frame encoded. This is
+ an integer between 1 and 1048561 and MUST be in multiples of
+ 16.
+
+ delivery-method: indicates the delivery methods in use, the
+ possible values are: inline, in_band, out_band/specific_name
+ Where "specific_name" is the name of the out of band delivery
+ method.
+
+ configuration: the base16 [11] (hexadecimal) representation of the
+ Packed Headers (Section 3.2.1).
+
+ Optional Parameters:
+
+ configuration-uri: the URI of the configuration headers in case of
+ out of band transmission. In the form of
+ "protocol://path/to/resource/". Depending on the specific
+ method the single ident packets could be retrived by their
+ number or aggregated in a single stream, aggregates MAY be
+ compressed using gzip [12] or bzip2 [14] and an sha1 [13]
+ checksum MAY be provided in the form of
+ "protocol://path/to/resource/aggregated.bz2!sha1hash"
+
+ Encoding considerations:
+
+ This media type is framed and contains binary data.
+
+ Security Considerations:
+
+ See Section 6 of RFC XXXX.
+
+
+
+
+
+Barbato Expires January 22, 2007 [Page 18]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ Interoperability considerations:
+
+ None
+
+ Published specification:
+
+ RFC XXXX [RFC Editor: please replace by the RFC number of this
+ memo, when published]
+
+ Ogg Theora I specification: Codec setup and packet decode.
+ Available from the Xiph website, http://www.xiph.org
+
+ Applications which use this media type:
+
+ Audio streaming and conferencing tools
+
+ Additional information:
+
+ None
+
+ Person & email address to contact for further information:
+
+ Luca Barbato: <lu_zero@gentoo.org>
+ IETF Audio/Video Transport Working Group
+
+ Intended usage:
+
+ COMMON
+
+ Restriction on usage:
+
+ This media type depends on RTP framing, and hence is only defined
+ for transfer via RTP [3]
+
+ Author:
+
+ Luca Barbato
+
+ Change controller:
+
+ IETF AVT Working Group
+
+
+6.1. Mapping MIME Parameters into SDP
+
+ The information carried in the MIME media type specification has a
+ specific mapping to fields in the Session Description Protocol (SDP)
+ [6], which is commonly used to describe RTP sessions. When SDP is
+
+
+
+Barbato Expires January 22, 2007 [Page 19]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ used to specify sessions the mapping are as follows:
+
+ o The MIME type ("video") goes in SDP "m=" as the media name.
+
+ o The MIME subtype ("theora") goes in SDP "a=rtpmap" as the encoding
+ name.
+
+ o The clock rate in the "a=rtpmap" line MUST be 90000
+
+ o The mandated parameters "delivery-method" and "configuration" MUST
+ be included in the SDP "a=fmpt" attribute.
+
+ o The optional parameter "configuration-uri", when present, MUST be
+ included in the SDP "a=fmpt" attribute and MUST follow the
+ delivery-method that applies.
+
+ If the stream uses multiple decoder setup configurations and all of
+ them are known in advance, the Configuration Packet for each file
+ SHOULD be packaged together and passed to the client using the
+ configuration attribute.
+
+ The URI specified in the configuration-uri attribute MUST point to a
+ location where all of the Configuration Packets needed for the life
+ of the session reside.
+
+6.1.1. SDP Example
+
+ The following example shows a basic SDP for a single stream. The
+ first configuration packet is inlined in the sdp, other
+ configurations could be fetched at any time from the first provided
+ uri using or all the known configuration could be downloaded using
+ the second uri. The inline base16 [11] configuration string is
+ omitted because of the lenght.
+ c=IN IP4 192.0.0.1
+ m=video RTP/AVP 98
+ a=rtpmap:98 theora/90000
+ a=fmtp:98 sampling=YCbCr-4:2:2; width=1280; height=720; delivery-
+ method=inline; configuration=base16string1; delivery-
+ method=out_band/rtsp; delivery-method=out_band/rtsp;
+ configuration-uri=rtsp://path/to/resource/; delivery-
+ method=out_band/http; configuration-uri=http://another/path/to/
+ resource/aggregate.bz2!sha1hash;
+
+6.2. Usage with the SDP Offer/Answer Model
+
+ The offer, as described in An Offer/Answer Model Session Description
+ Protocol [5], may contain a large number of delivery methods per
+ single fmtp attribute, the answerer MUST remove every delivery-method
+
+
+
+Barbato Expires January 22, 2007 [Page 20]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ and configuration-uri not supported. All the parameters MUST not be
+ altered on answer otherwise.
+
+
+7. Examples
+
+ The following examples are common usage patterns that MAY be applied
+ in such situations, the main scope of this section is to explain
+ better usage of the transmission vectors.
+
+7.1. Stream Video
+
+ This is one of the most common situation: one single server streaming
+ content in multicast, the clients may start a session at random time.
+ The content itself could be a mix of live stream, as the wj's voice
+ or studio scenes, and stored streams, as the music she plays.
+
+ In this situation we don't know in advance how many codebooks we will
+ use. The clients can join anytime and users expect to start the
+ fruition of the content in a short time.
+
+ On join the client will receive the current Configuration necessary
+ to decode the current streams inlined in the SDP so that the decoding
+ will start immediately after.
+
+ When the streamed content changes the new Configuration is sent in-
+ band before the actual stream, and the Configuration that has to be
+ sent inline in the SDP updated. Since the inline method is
+ unreliable, an out of band fallback is provided.
+
+ The client could choose to fetch the Configuration from the alternate
+ source as soon it discovers a Configuration packet got lost inline or
+ use selective retransmission [17], if the server supports the
+ feature.
+
+ A serverside optimization would be to keep an hash list of the
+ Configurations per session to avoid packing all of them and send the
+ same Configuration with different Ident tags
+
+ A clientside optimization would be to keep a tag list of the
+ Configurations per session and don't process configuration packets
+ already known.
+
+
+8. Security Considerations
+
+ RTP packets using this payload format are subject to the security
+ considerations discussed in the RTP specification [3]. This implies
+
+
+
+Barbato Expires January 22, 2007 [Page 21]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ that the confidentiality of the media stream is achieved by using
+ encryption. Because the data compression used with this payload
+ format is applied end-to-end, encryption may be performed on the
+ compressed data. Where the size of a data block is set care MUST be
+ taken to prevent buffer overflows in the client applications.
+
+
+9. Acknowledgments
+
+ This document is a continuation of draft-kerr-avt-theora-rtp-00.txt
+
+ Thanks to the AVT, Ogg Theora Communities / Xiph.org, Fluendo, Ralph
+ Giles, Mike Smith, Phil Kerr, Timothy Terriberry, Stefan Ehmann,
+ Alessandro Salvatori, Politecnico di Torino (LS)^3/IMG Group in
+ particular Federico Ridolfo, Francesco Varano, Giampaolo Mancini,
+ Juan Carlos De Martin.
+
+
+10. References
+
+10.1. Normative References
+
+ [1] Pfeiffer, S., "The Ogg Encapsulation Format Version 0",
+ RFC 3533.
+
+ [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
+ Levels", RFC 2119.
+
+ [3] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson,
+ "RTP: A Transport Protocol for real-time applications",
+ RFC 3550.
+
+ [4] Schulzrinne, H. and S. Casner, "RTP Profile for video and Video
+ Conferences with Minimal Control.", RFC 3551.
+
+ [5] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with
+ Session Description Protocol (SDP)", RFC 3264.
+
+ [6] Handley, M. and V. Jacobson, "SDP: Session Description
+ Protocol", RFC 2327.
+
+ [7] Mogul et al., J., "Path MTU Discovery", RFC 1063.
+
+ [8] McCann et al., J., "Path MTU Discovery for IP version 6",
+ RFC 1981.
+
+ [9] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey,
+ "Extended RTP Profile for RTCP-based Feedback (RTP/AVPF)",
+
+
+
+Barbato Expires January 22, 2007 [Page 22]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+ Internet Draft (draft-ietf-avt-rtcp-feedback-11: Work in
+ progress).
+
+ [10] Barbato, L., "RTP Payload Format for Vorbis Encoded Audio -
+ draft-ietf-avt-vorbis-rtp-00", Internet Draft (Work in
+ progress).
+
+ [11] Josefsson, S., "The Base16, Base32, and Base64 Data Encodings",
+ RFC 3548.
+
+ [12] Deutsch, P., "GZIP file format specification version 4.3",
+ RFC 1952.
+
+ [13] National Institute of Standards and Technology, "Secure Hash
+ Standard", May 1993.
+
+ [14] Seward, J., "libbz2 and bzip2".
+
+10.2. Informative References
+
+ [15] "libTheora: Available from the Xiph website,
+ http://www.xiph.org".
+
+ [16] "Theora I specification: Codec setup and packet decode.
+ http://www.xiph.org/theora/doc/Theora_I_spec.pdf".
+
+ [17] Friedman, T., Caceres, R., and A. Clark, "RTP Control Protocol
+ Extended Reports (RTCP XR)", RFC 3611, November 2003.
+
+ [18] "ITU-T Recommendation V.42, 1994, Rev. 1. Error-correcting
+ Procedures for DCEs Using Asynchronous-to-Synchronous
+ Conversion. International Telecommunications Union. Available
+ from the ITU website, http://www.itu.int".
+
+ [19] "ISO 3309, October 1984, 3rd Edition. Information Processing
+ Systems--Data Communication High-Level Data Link Control
+ Procedure--Frame Structure. International Organization for
+ Standardization.".
+
+
+
+
+
+
+
+
+
+
+
+
+
+Barbato Expires January 22, 2007 [Page 23]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+Author's Address
+
+ Luca Barbato
+ Xiph.Org
+
+ Email: lu_zero@gentoo.org
+ URI: http://www.xiph.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Barbato Expires January 22, 2007 [Page 24]
+
+Internet-Draft draft-ietf-avt-rtp-theora-00 July 2006
+
+
+Intellectual Property Statement
+
+ The IETF takes no position regarding the validity or scope of any
+ Intellectual Property Rights or other rights that might be claimed to
+ pertain to the implementation or use of the technology described in
+ this document or the extent to which any license under such rights
+ might or might not be available; nor does it represent that it has
+ made any independent effort to identify any such rights. Information
+ on the procedures with respect to rights in RFC documents can be
+ found in BCP 78 and BCP 79.
+
+ Copies of IPR disclosures made to the IETF Secretariat and any
+ assurances of licenses to be made available, or the result of an
+ attempt made to obtain a general license or permission for the use of
+ such proprietary rights by implementers or users of this
+ specification can be obtained from the IETF on-line IPR repository at
+ http://www.ietf.org/ipr.
+
+ The IETF invites any interested party to bring to its attention any
+ copyrights, patents or patent applications, or other proprietary
+ rights that may cover technology that may be required to implement
+ this standard. Please address the information to the IETF at
+ ietf-ipr@ietf.org.
+
+
+Disclaimer of Validity
+
+ This document and the information contained herein are provided on an
+ "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+ OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+ ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+ INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+ INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+ WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+
+Copyright Statement
+
+ Copyright (C) The Internet Society (2006). This document is subject
+ to the rights, licenses and restrictions contained in BCP 78, and
+ except as set forth therein, the authors retain all their rights.
+
+
+Acknowledgment
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+Barbato Expires January 22, 2007 [Page 25]
+
diff --git a/doc/draft-ietf-avt-rtp-theora-00.xml b/doc/draft-ietf-avt-rtp-theora-00.xml
new file mode 100644
index 0000000..2f8af39
--- /dev/null
+++ b/doc/draft-ietf-avt-rtp-theora-00.xml
@@ -0,0 +1,1146 @@
+<?xml version='1.0'?>
+<!DOCTYPE rfc SYSTEM 'rfc2629.dtd'>
+<?rfc toc="yes" ?>
+<?rfc compact='yes'?>
+
+<rfc ipr="full3978" docName="RTP Payload Format for Theora Encoded Video">
+
+<front>
+<title>draft-ietf-avt-rtp-theora-00</title>
+
+<author initials="L" surname="Barbato" fullname="Luca Barbato">
+<organization>Xiph.Org</organization>
+<address>
+<email>lu_zero@gentoo.org</email>
+<uri>http://www.xiph.org/</uri>
+</address>
+</author>
+
+<date day="21" month="July" year="2006" />
+<area>General</area>
+<workgroup>AVT Working Group</workgroup>
+<keyword>I-D</keyword>
+
+<keyword>Internet-Draft</keyword>
+<keyword>Theora</keyword>
+<keyword>RTP</keyword>
+
+<abstract>
+<t>
+This document describes a RTP payload format for transporting Theora encoded video. It details the RTP encapsulation mechanism for raw Theora data and configuration headers necessary to configure the decoder.
+</t>
+
+<t>
+Also included within the document are the necessary details for the use of Theora with MIME and Session Description Protocol (SDP).
+</t>
+
+</abstract>
+
+<note title="Editors Note">
+<t>
+All references to RFC XXXX are to be replaced by references to the RFC number of this memo, when published.
+</t>
+</note>
+
+</front>
+
+<middle>
+
+<section anchor="Introduction" title="Introduction">
+<t>
+Theora is a general purpose, lossy video codec. It is based on the VP3 video codec produced by On2 Technologies and has been donated to the Xiph.org Foundation.</t>
+
+<t>
+Theora I is a block-based lossy transform codec that utilizes an 8 x 8 Type-II Discrete Cosine Transform and block-based motion compensation. This places it in the same class of codecs as MPEG-1, MPEG-2, MPEG-4, and H.263. The details of how individual blocks are organized and how DCT coefficients are stored in the bitstream differ substantially from these codecs, however. Theora supports only intra frames (I frames in MPEG) and inter frames (P frames in MPEG).
+</t>
+
+<t>
+Theora provides none of its own framing, synchronization, or protection against transmission errors. Instead, the codec expects to receive a discrete sequence of data packets. Theora is a free-form variable bit rate (VBR) codec, and these packets have no minimum size, maximum size, or fixed/expected size. Theora packets are thus intended to be used with a transport mechanism that provides free-form framing, synchronization, positioning, and error correction in accordance with these design assumptions, such as Ogg <xref target="rfc3533"></xref> or RTP/AVP <xref target="rfc3550"></xref>.
+</t>
+
+<t>
+Theora I currently supports progressive video data of arbitrary dimensions at a constant frame rate in one of several Y'CbCr color spaces.
+Three different chroma subsampling formats are supported: 4:2:0, 4:2:2, and 4:4:4. The Theora I format does not support interlaced material, variable frame rates, bit-depths larger than 8 bits per component, nor alternate color spaces such as RGB or arbitrary multi-channel spaces. Black and white content can be efficiently encoded, however, because the uniform chroma planes compress well. For performance reason, arbitrary frame sizes will be encoded rounding both dimensions to the upper multiple of 16. The original width and height will be encoded in the header and the decoder will use this information to clip the decoded frame to the right dimensions.
+</t>
+
+<t>
+Theora is similar to the Vorbis audio <xref target="vorbisrtp"></xref> in that the decoder reads the probability model for the entropy coder and all quantization parameters from special "header" packets at the start of the compressed data. It is therefore impossible to decode any video data without having previously fetched the codec info and codec setup headers, although Theora can begin to decode at an arbitrary intra-frame packet so long as the codec has been initialized with the associated headers.
+</t>
+
+<section anchor="Terminology" title="Terminology">
+
+<t>
+The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
+and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 <xref target="rfc2119"></xref>.
+</t>
+
+</section>
+</section>
+
+<section anchor="Payload Format" title="Payload Format">
+
+<t>
+For RTP based transportation of Theora encoded video the standard RTP header is followed by a 4 octets payload header, then the payload data. The payload headers are used to associate the Theora data with its associated decoding codebooks as well as indicating if the following packet contains fragmented Theora data and/or the number of whole Theora data frames. The payload data contains the raw Theora bitstream information.
+</t>
+
+<t>
+For RTP based transport of Theora encoded video the standard RTP header is followed by a 4 octets payload header, then the payload data.
+</t>
+
+<section anchor="RTP Header" title="RTP Header">
+
+<t>
+The format of the RTP header is specified in <xref target="rfc3550"></xref> and shown in Figure 1. This payload format uses the fields of the header in a manner consistent with that specification.
+</t>
+
+<figure anchor="RTP Header Figure" title="RTP Header">
+<artwork><![CDATA[
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |V=2|P|X| CC |M| PT | sequence number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | timestamp |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | synchronization source (SSRC) identifier |
+ +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+ | contributing source (CSRC) identifiers |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>
+The RTP header begins with an octet of fields (V, P, X, and CC) to support specialized RTP uses (see <xref target="rfc3550"></xref> and <xref target="rfc3551"></xref> for details). For Theora RTP, the following values are used.
+</t>
+
+<t>
+Version (V): 2 bits</t><t>
+This field identifies the version of RTP. The version used by this specification is two (2).
+</t>
+
+<t>
+Padding (P): 1 bit</t><t>
+Padding MAY be used with this payload format according to section 5.1 of <xref target="rfc3550"></xref>.
+</t>
+
+<t>
+Extension (X): 1 bit</t><t>
+The Extension bit is used in accordance with <xref target="rfc3550"></xref>.
+</t>
+
+<t>
+CSRC count (CC): 4 bits</t><t>
+The CSRC count is used in accordance with <xref target="rfc3550"></xref>.
+</t>
+
+<t>
+Marker (M): 1 bit</t><t>
+The Marker bit is used in accordance with <xref target="rfc3550"></xref>.
+</t>
+
+<t>
+Payload Type (PT): 7 bits</t><t>
+An RTP profile for a class of applications is expected to assign a payload type for this format, or a dynamically allocated payload type SHOULD be chosen which designates the payload as Theora.
+</t>
+
+<t>
+Sequence number: 16 bits</t><t>
+The sequence number increments by one for each RTP data packet sent, and may be used by the receiver to detect packet loss and to restore packet sequence. This field is detailed further in <xref target="rfc3550"></xref>.
+</t>
+
+<t>
+Timestamp: 32 bits</t><t>
+A timestamp representing the presentation time of the first sample of the first Theora packet in the RTP packet. The clock frequency MUST be set to 90kHz.
+</t>
+
+<t>
+SSRC/CSRC identifiers: </t><t>
+These two fields, 32 bits each with one SSRC field and a maximum of 16 CSRC fields, are as defined in <xref target="rfc3550"></xref>.
+</t>
+
+</section>
+
+<section anchor="Payload Header" title="Payload Header">
+
+<t>
+The 4 octets following the RTP Header section represent the Payload Header. This header is split into a number of bitfields detailing the format of the following Payload Datagrams.
+</t>
+
+<figure anchor="Payload Header Figure" title="Payload Header">
+<artwork><![CDATA[
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Configuration Ident | F |TDT|# pkts.|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>
+Configuration Ident: 24 bits</t>
+<t>
+This 24 bit field is used to associate the Theora data to a decoding Packed Configuration.
+</t>
+
+<t>
+Fragment type (F): 2 bit</t>
+<t>
+This field is set according to the following list
+</t>
+<vspace blankLines="1" />
+<list style="empty">
+<t> 0 = Not Fragmented</t>
+<t> 1 = Start Fragment</t>
+<t> 2 = Continuation Fragment</t>
+<t> 3 = End Fragment</t>
+</list>
+
+<t>This field must be zero if the number of packets field is non-zero.</t>
+
+<t>
+Theora Data Type (TDT): 2 bits</t>
+<t>
+This field sets the packet payload type for the Theora data. There are currently three Theora payload types currently used and one reserved for future use.
+</t>
+
+<vspace blankLines="1" />
+<list style="empty">
+<t> 0 = Raw Theora payload</t>
+<t> 1 = Theora Packed Configuration payload</t>
+<t> 2 = Legacy Theora Comment payload</t>
+<t> 3 = Reserved</t>
+</list>
+
+<t> The packets with a TDT of value 3 MUST be ignored </t>
+
+<t>
+The last 4 bits represent the number of complete packets in this payload. This provides a maximum number of 15 Theora packets in the payload. If the packet contains fragmented data the number of packets MUST be set to 0.
+</t>
+
+</section>
+
+<section anchor="Payload Data" title="Payload Data">
+
+<t>
+Each Theora payload section starts with a two octets length header that is used to represent the size of the following data payload, followed by the raw Theora packet data.
+</t>
+
+<figure anchor="Payload Data Figure" title="Payload Data">
+<artwork><![CDATA[
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Payload Length | Theora Data ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>
+The Theora codec uses relatively unstructured raw packets containing binary integer fields of arbitrary width that often do not fall on an octet boundary. When a Theora encoder produces packets, unused space in the last byte of a packet is always zeroed during the encoding process. Thus, should this unused space be read, it will return binary zeros.
+</t>
+
+<t>
+For payloads which consist of multiple Theora packets the payload data consists of the payload length field followed by the first Theora packet's data, then the payload length followed by the second Theora packet, and so on for each of the Theora packets in the payload.
+</t>
+
+</section>
+
+<section anchor="Example RTP Packet" title="Example RTP Packet">
+
+<t>
+Here is an example RTP packet containing two Theora packets.
+</t>
+<t>
+RTP Packet Header:
+</t>
+
+<figure anchor="Example RTP Packet Figure" title="Example RTP Packet">
+<artwork><![CDATA[
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 2 |0|0| 0 |0| PT | sequence number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | timestamp |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | synchronisation source (SSRC) identifier |
+ +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+ | contributing source (CSRC) identifiers |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+
+<t>
+Payload Data:
+</t>
+
+<figure anchor="Example Theora Payload Figure" title="Example Theora Payload Packet">
+<artwork><![CDATA[
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Configuration Ident | 0 | 0 | 2 pks |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Payload Length | ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Theora data ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. data | Payload Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Theora data |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>
+The payload portion of the packet begins with the 24 bit Configuration ident field followed by 8 bits describing the payload. The Fragment type field is set to 0, indicating that this packet contains whole Theora frame data. The Data type field is set to 0 (theora raw data). The number of whole Theora data packets is set to 2.
+</t>
+
+<t>
+Each of the payload blocks starts with the two octets length field followed
+by the variable length Theora packet data.
+</t>
+
+</section>
+</section>
+
+<section anchor="Configuration Headers" title="Configuration Headers">
+
+<t>
+To decode a Theora stream three configuration header packets are needed. The first (Identification Header) indicates frame dimensions, quality, blocks used and Theora encoder version. The second (Comment Header) contains stream metadata and the third (Setup Header) contains details of the dequantization and Huffman tables.
+</t>
+
+<t>
+Since this information must be transmitted reliably, and as the RTP stream may change certain configuration data mid-session, there are different methods for delivering this configuration data to a client, both in-band and out-of-band, which are detailed below. SDP delivery is used to set up an initial state for the client application. The changes may be due to different dequantization and Huffman tables as well as different bitrates of the stream.
+</t>
+
+<t>
+The delivery vectors in use are specified by an SDP attribute that indicates the method and the optional URI where the Theora <xref target="Packed Configuration">Packed Configuration</xref> Packets could be fetched. Different delivery methods MAY be advertised for the same session. The in-band codebook delivery SHOULD be considered as baseline, out-of-band delivery methods that don't use RTP will not be described in this document. For non chained streams, the RECOMMENDED Configuration delivery method is inline the <xref target="Packed Configuration">Packed Configuration</xref> in the SDP as explained in the <xref target="Mapping MIME Parameters into SDP"> IANA considerations</xref>
+</t>
+
+<t>
+The 24 bit Ident field is used to map which Configuration will be used to decode a packet. When the Ident field changes, it indicates that a change in the stream has taken place. The client application MUST have in advance the correct configuration and if the client detects a change in the Ident value and does not have this information it MUST NOT decode the raw data associated until it has fetched the correct Configuration.
+</t>
+
+
+<section anchor="In-band Header Transmission" title="In-band Header Transmission">
+
+<t>
+The <xref target="Packed Configuration">Packed Configuration</xref> Payload is sent in-band with the packet type bits set to match the payload type. Clients MUST be capable of dealing with periodic re-transmission of the configuration headers.
+</t>
+
+<section anchor="Packed Configuration" title="Packed Configuration">
+
+<t>
+A Theora Packed Configuration is identified by a payload type field of 1. Of the three headers, defined in the <xref target="theora-spec-ref">Theora I specification</xref>, the identification and the setup will be packed together, while the comment header will be completely suppressed. It is up to the client to provide a minimal size comment header to the decoder if required by the implementation.
+</t>
+
+<figure anchor="Packed Configuration Figure" title="Packed Configuration Figure">
+<artwork><![CDATA[
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |V=2|P|X| CC |M| PT | xxxx |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | xxxxx |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | synchronization source (SSRC) identifier |
+ +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+ | contributing source (CSRC) identifiers |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Configuration Ident | 0 | 1 | 1|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length | Identification ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Identification ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Identification ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Identification |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. | Setup ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Setup ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Setup |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+<t>The Ident field is set with the value that will be used by the Raw Payload Packets to address this Configuration. The Fragment type is set to 0 since the packet bears full Packed configuration, the number of packet is set to 1. In practice, Packed Headers usually need to be fragmented to fit the path MTU.
+</t>
+
+</section>
+
+</section>
+
+<section anchor="Out of Band Transmission" title="Out of Band Transmission">
+
+<t>
+This section, as stated above, does not cover all the possible out-of-band delivery methods since they rely on different protocols and are linked to specific applications. The following packet definition SHOULD be used in out-of-band delivery and MUST be used when Configuration is inlined in the SDP.
+</t>
+
+<section anchor="Packed Headers" title="Packed Headers">
+
+<t>
+As mentioned above, the recommended delivery vector for Theora configuration data is via a retrieval method that can be performed using a reliable transport protocol. As the RTP headers are not required for this method of delivery the structure of the configuration data is slightly different. The packed header starts with a 32 bit count field which details the number of packed headers that are contained in the bundle. Next is the Packed header payload for each setup id.
+</t>
+
+<figure anchor="Packed Headers Overview Figure" title="Packed Headers Overview">
+<artwork><![CDATA[
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Number of packed headers |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Packed header |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Packed header |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>
+Since the Configuration Ident and the Identification Header are fixed length there is only a 16bit Length tag to define the length of the packed headers.
+</t>
+
+<figure anchor="Packed Headers Detail Figure" title="Packed Headers Detail">
+<artwork><![CDATA[
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Configuration Ident | ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Length | Identification Header ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Identification Header |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Setup Header ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Setup Header |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork></figure>
+
+<t>The key difference from the in-band format is that there is no need for the payload header octet.
+</t>
+
+<section anchor="Packed Headers IANA Considerations" title="Packed Headers IANA Considerations">
+
+<t>
+The following IANA considerations MUST only be applied to the packed headers.
+</t>
+
+<vspace blankLines="1" />
+
+<list style="hanging">
+<t hangText="MIME media type name:"> video </t>
+
+<vspace blankLines="1" />
+
+<t hangText="MIME subtype:"> theora-config </t>
+
+<vspace blankLines="1" />
+
+<t hangText="Required Parameters:">
+<vspace blankLines="1" />
+None
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Optional Parameters:">
+<vspace blankLines="1" />
+None
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Encoding considerations:">
+<vspace blankLines="1" />
+This media type contains binary data.
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Security Considerations:">
+<vspace blankLines="1" />
+See Section 6 of RFC XXXX.
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Interoperability considerations:">
+<vspace blankLines="1" />
+None
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Published specification:">
+<vspace blankLines="1" />
+RFC XXXX [RFC Editor: please replace by the RFC number of this memo,
+ when published]
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Applications which use this media type:">
+<vspace blankLines="1" />
+Theora encoded video, configuration data.
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Additional information:">
+<vspace blankLines="1" />
+None
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Person &amp; email address to contact for further information:">
+<vspace blankLines="1" />
+Luca Barbato: &lt;lu_zero@gentoo.org&gt;
+<vspace blankLines="0" />
+IETF Audio/Video Transport Working Group
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Intended usage:">
+COMMON
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Restriction on usage:">
+<vspace blankLines="1" />
+This media type does not depend on the transport.
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Author:">
+<vspace blankLines="1" />
+Luca Barbato</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Change controller:">
+<vspace blankLines="1" />
+IETF AVT Working Group</t>
+</list>
+
+</section>
+</section>
+
+</section>
+
+<section anchor="Loss of Configuration Headers" title="Loss of Configuration Headers">
+
+<t>
+Unlike the loss of raw Theora payload data, the loss of a configuration header can lead to a situation where it will not be possible to successfully decode the stream.
+</t>
+
+<t>
+A loss of a Configuration Packet causes the stream decoder to halt and SHOULD be reported to the client as well as a loss report sent via RTCP.
+</t>
+
+</section>
+
+</section>
+
+<section anchor="Comment Headers" title="Comment Headers">
+
+<t>
+When the payload type is set to 2, the packet contains comment metadata such as artist name, track title and so on. These metadata messages are not intended to be fully descriptive but to offer basic title information. Clients MAY choose to completely ignore them. The details on the comments format can be found in the <xref target="theora-spec-ref">Theora documentation</xref>.
+</t>
+
+<figure anchor="Comment Packet Figure" title="Comment Packet">
+<artwork><![CDATA[
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |V=2|P|X| CC |M| PT | xxxx |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | xxxxx |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | synchronization source (SSRC) identifier |
+ +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+ | contributing source (CSRC) identifiers |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Configuration Ident | 0 | 2 | 1|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | length | Comment ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Comment ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Comment |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>The 2 byte length field is necessary since this Theora packet could be fragmented.</t>
+
+</section>
+
+<section anchor="Frame Packetizing" title="Frame Packetizing">
+
+<t>
+Each RTP packet contains either one complete Theora packet, one Theora packet fragment, or an integer number of complete Theora packets (up to a maximum of 15 packets, since the number of packets is defined by a 4 bit value).
+</t>
+
+<t>
+Any Theora data packet that is less than path MTU SHOULD be bundled in the RTP packet with as many Theora packets as will fit, up to a maximum of 15. Path MTU is detailed in <xref target="rfc1063"></xref> and <xref target="rfc1981"></xref>.
+</t>
+
+<t>
+A fragmented packet has a zero in the last four bits of the payload header. The RTP packet containing the first fragment will set the Fragment type to 1. Each RTP packet after the first will set the Fragment type to 2 in the payload header. The RTP packet containing the last fragment of the Theora packet will have the Fragment type set to 3. If the fragmented Theora packet spans only two RTP packets, the first will set the Fragment type field to 1 and the second will set it to 2. To maintain the correct sequence for fragmented packet reception the timestamp field of fragmented packets MUST be the same as the first packet sent, with the sequence number incremented as normal for the subsequent RTP packets.</t>
+
+<section anchor="Example Fragmented Theora Packet" title="Example Fragmented Theora Packet">
+
+<t>
+Here is an example fragmented Theora packet split over three RTP packets. Each packet contains the standard RTP headers as well as the 4 octets Theora headers.
+</t>
+
+<figure anchor="Example Fragmented Packet (Packet 1)" title="Example Fragmented Packet (Packet 1)">
+<artwork><![CDATA[
+ Packet 1:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |V=2|P|X| CC |M| PT | 1000 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | xxxxx |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | synchronization source (SSRC) identifier |
+ +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+ | contributing source (CSRC) identifiers |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Configuration Ident | 1 | 0 | 0|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Payload Length | Theora data ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Theora data ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>
+In this packet the initial sequence number is 1000 and the timestamp is xxxxx. The Fragment type field is set to one, indicating it is the start packet of a serie of fragments. The number of packets field is set to 0, and as the payload is raw Theora data the Theora payload type field is set to 0.
+</t>
+
+<figure anchor="Example Fragmented Packet (Packet 2)" title="Example Fragmented Packet (Packet 2)">
+<artwork><![CDATA[
+ Packet 2:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |V=2|P|X| CC |M| PT | 1001 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | xxxxx |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | synchronization source (SSRC) identifier |
+ +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+ | contributing source (CSRC) identifiers |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Configuration Ident | 2 | 0 | 0|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Payload Length | ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Theora data ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>
+The Fragment type field is set to 2 and the number of packets field is set to 0. For large Theora fragments there can be several of these type of payload packets. The maximum RTP packet size SHOULD be no greater than the path MTU, including all RTP and payload headers. The sequence number has been incremented by one but the timestamp field remains the same as the initial packet.
+</t>
+
+<figure anchor="Example Fragmented Packet (Packet 3)" title="Example Fragmented Packet (Packet 3)">
+<artwork><![CDATA[
+ Packet 3:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |V=2|P|X| CC |M| PT | 1002 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | xxxxx |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | synchronization source (SSRC) identifier |
+ +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+ | contributing source (CSRC) identifiers |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Configuration Ident | 3 | 0 | 0|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Payload Length | ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ .. Theora data ..
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>
+This is the last Theora fragment packet. The Fragment type filed is set to 3 and the packet count remains set to 0. As in the previous packets the timestamp remains set to the first packet in the sequence and the sequence number has been incremented.
+</t>
+
+</section>
+
+<section anchor="Packet Loss" title="Packet Loss">
+
+<t>
+As there is no error correction within the Theora stream, packet loss will result in a loss of signal. Packet loss is more of an issue for fragmented Theora packets as the client will have to cope with the handling of the Fragment type field. If we use the fragmented Theora packet example above and the first packet is lost the client MUST detect that the next packet has the packet count field set to 0 and the Fragment type is set to 2 and MUST drop it. The next packet, which is the final fragmented packet, MUST be dropped in the same manner. Feedback reports on lost and dropped packets MUST be sent back via RTCP.[note: reordering]
+</t>
+
+<t>
+If a particular multicast session has a large number of participants care must be taken to prevent an RTCP feedback implosion, <xref target="rtcp-feedback"></xref>, in the event of packet loss from a large number of participants.
+</t>
+
+<t>
+Loss of any of the Configuration fragment will result in the loss of the full Configuration packet as detailed in the <xref target="Loss of Configuration Headers">Loss of Configuration Headers</xref> section.
+</t>
+
+</section>
+</section>
+
+<section anchor="IANA Considerations" title="IANA Considerations">
+
+<vspace blankLines="1" />
+
+<list style="hanging">
+<t hangText="MIME media type name:"> video </t>
+
+<vspace blankLines="1" />
+
+<t hangText="MIME subtype:"> theora </t>
+
+<vspace blankLines="1" />
+
+<t hangText="Required Parameters:">
+
+<vspace blankLines="1" />
+
+<list style="hanging">
+
+<t hangText="sampling:"> Determines the chroma subsampling format.
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="width:"> Determines the number of pixels per line. This is an integer between 1 and 1048561 and MUST be in multiples of 16.
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="height:">Determines the number of lines per frame encoded. This is an integer between 1 and 1048561 and MUST be in multiples of 16.
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="delivery-method:"> indicates the delivery methods in use, the possible values are: inline, in_band, out_band/specific_name<vspace blankLines="0" />
+Where "specific_name" is the name of the out of band delivery method.
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="configuration:"> the <xref target="rfc3548">base16</xref> (hexadecimal) representation of the <xref target="Packed Headers">Packed Headers</xref>.
+</t>
+</list>
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Optional Parameters:">
+
+<vspace blankLines="1" />
+
+<list style="hanging">
+<t hangText="configuration-uri:"> the URI of the configuration headers in case of out of band transmission. In the form of "protocol://path/to/resource/". Depending on the specific method the single ident packets could be retrived by their number or aggregated in a single stream, aggregates MAY be compressed using <xref target="rfc1952">gzip</xref> or <xref target="BZ2">bzip2</xref> and an <xref target="FIPS180">sha1</xref> checksum MAY be provided in the form of "protocol://path/to/resource/aggregated.bz2!sha1hash"</t>
+</list>
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Encoding considerations:">
+<vspace blankLines="1" />
+This media type is framed and contains binary data.
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Security Considerations:">
+<vspace blankLines="1" />
+See Section 6 of RFC XXXX.</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Interoperability considerations:">
+<vspace blankLines="1" />
+None</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Published specification:">
+
+<vspace blankLines="1" />
+
+<t> RFC XXXX [RFC Editor: please replace by the RFC number of this memo, when published]</t>
+<vspace blankLines="1" />
+<t>Ogg Theora I specification: Codec setup and packet decode. Available from the Xiph website, http://www.xiph.org</t>
+
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Applications which use this media type:">
+<vspace blankLines="1"/>
+Video streaming and conferencing tools </t>
+
+<vspace blankLines="1" />
+
+<t hangText="Additional information:">
+<vspace blankLines="1" />
+None </t>
+
+<vspace blankLines="1" />
+
+<t hangText="Person &amp; email address to contact for further information:">
+
+<vspace blankLines="1" />
+
+<t>Luca Barbato: &lt;lu_zero@gentoo.org&gt;</t>
+<t>IETF Audio/Video Transport Working Group</t>
+
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Intended usage:">
+<vspace blankLines="1" />
+COMMON</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Restriction on usage:">
+<vspace blankLines="1" />
+This media type depends on RTP framing, and hence is only defined for transfer via <xref target="rfc3550">RTP</xref></t>
+
+<vspace blankLines="1" />
+
+<t hangText="Author:">
+<vspace blankLines="1"/>Luca Barbato</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Change controller:"><vspace blankLines="1"/> IETF AVT Working Group</t>
+
+<vspace blankLines="1" />
+
+</list>
+
+<section anchor="Mapping MIME Parameters into SDP" title="Mapping MIME Parameters into SDP">
+
+<t>
+The information carried in the MIME media type specification has a specific mapping to fields in the Session Description Protocol (SDP) <xref target="rfc2327"></xref>, which is commonly used to describe RTP sessions. When SDP is used to specify sessions the mapping are as follows:
+</t>
+
+<vspace blankLines="1" />
+<list style="symbols">
+
+<t>The MIME type ("video") goes in SDP "m=" as the media name.</t>
+<vspace blankLines="1" />
+
+<t>The MIME subtype ("theora") goes in SDP "a=rtpmap" as the encoding name.</t>
+<vspace blankLines="1" />
+
+<t>The clock rate in the "a=rtpmap" line MUST be 90000</t>
+<vspace blankLines="1" />
+
+<t>The mandated parameters "delivery-method" and "configuration" MUST be included in the SDP "a=fmpt" attribute.</t>
+<vspace blankLines="1" />
+
+<t>The optional parameter "configuration-uri", when present, MUST be included in the SDP "a=fmpt" attribute and MUST follow the delivery-method that applies.</t>
+</list>
+
+
+<t>
+If the stream uses multiple decoder setup configurations and all of them are known in advance, the Configuration Packet for each file SHOULD be packaged together and passed to the client using the configuration attribute.
+</t>
+
+<t>
+The URI specified in the configuration-uri attribute MUST point to a location where all of the Configuration Packets needed for the life of the session reside.
+</t>
+
+<section anchor="SDP Example" title="SDP Example">
+<t>The following example shows a basic SDP for a single stream. The first configuration packet is inlined in the sdp, other configurations could be fetched at any time from the first provided uri using or all the known configuration could be downloaded using the second uri. The inline <xref target="rfc3548">base16</xref> configuration string is omitted because of the lenght.</t>
+
+<list style="empty">
+<t>c=IN IP4 192.0.0.1</t>
+<t>m=video RTP/AVP 98</t>
+<t>a=rtpmap:98 theora/90000</t>
+<t>a=fmtp:98 sampling=YCbCr-4:2:2; width=1280; height=720; delivery-method=inline; configuration=base16string1; delivery-method=out_band/rtsp; delivery-method=out_band/rtsp; configuration-uri=rtsp://path/to/resource/; delivery-method=out_band/http; configuration-uri=http://another/path/to/resource/aggregate.bz2!sha1hash;</t>
+</list>
+</section>
+
+</section>
+
+<section anchor="Usage with the SDP Offer/Answer Mode" title="Usage with the SDP Offer/Answer Model">
+
+<t>
+The offer, as described in <xref target="rfc3264">An Offer/Answer Model Session Description Protocol</xref>, may contain a large number of delivery methods per single fmtp attribute, the answerer MUST remove every delivery-method and configuration-uri not supported. All the parameters MUST not be altered on answer otherwise.
+</t>
+
+</section>
+
+</section>
+
+<section anchor="Examples" title="Examples">
+
+<t>
+The following examples are common usage patterns that MAY be applied in such situations, the main scope of this section is to explain better usage of the transmission vectors.
+</t>
+<!--
+
+<section anchor="Peer to Peer Internet Messaging" title="Peer to Peer Internet Messaging">
+
+<t>This scenario implies two peers linked through a best effort network, the bandwidth isn't guaranteed and may have large variance, in order to keep the latency low enough dynamic adaptation tecniques [missing reference] are required.</t>
+
+<t>Each peer will receive 2 streams (voice and video) from the other. To determine the quality of the stream and ensure the latency is bearable [put maximum latency here] a form of handshake is required. SIP or Jingle or TINS could be used in this phase.</t>
+
+<t>Since changes in the bitrates will reflect on the setup header, the simplest way to get dynamic adaptation is to consider each stream as a completely different coded, have a payload number for each of them and use the dynamic coding change tecniques.</t>
+
+<t>Due the latency requirement even if sending the Configuration in-band MAY be possible, usually it SHOULD be avoided. Other out of band methods that send Configuration on demand, since they would affect latency as the in-band method, SHOULD be avoided as well. Agree on a set of Configurations related to different bitrates during the session initiation is the best method.</t>
+
+</section>
+-->
+<section anchor="Stream Video" title="Stream Video">
+
+<t>This is one of the most common situation: one single server streaming content in multicast, the clients may start a session at random time. The content itself could be a mix of live stream, as the wj's voice or studio scenes, and stored streams, as the music she plays.</t>
+
+<t>In this situation we don't know in advance how many codebooks we will use. The clients can join anytime and users expect to start the fruition of the content in a short time.</t>
+
+<t>On join the client will receive the current Configuration necessary to decode the current streams inlined in the SDP so that the decoding will start immediately after.</t>
+
+<t>When the streamed content changes the new Configuration is sent in-band before the actual stream, and the Configuration that has to be sent inline in the SDP updated. Since the inline method is unreliable, an out of band fallback is provided.</t>
+
+<t>The client could choose to fetch the Configuration from the alternate source as soon it discovers a Configuration packet got lost inline or use <xref target="rfc3611">selective retransmission</xref>, if the server supports the feature.</t>
+
+<t>A serverside optimization would be to keep an hash list of the Configurations per session to avoid packing all of them and send the same Configuration with different Ident tags</t>
+
+<t>A clientside optimization would be to keep a tag list of the Configurations per session and don't process configuration packets already known.</t>
+
+</section>
+
+</section>
+
+<section anchor="Security Considerations" title="Security Considerations">
+<t>
+RTP packets using this payload format are subject to the security considerations discussed in the RTP specification <xref target="rfc3550"></xref>. This implies that the confidentiality of the media stream is achieved by using encryption. Because the data compression used with this payload format is applied end-to-end, encryption may be performed on the compressed data. Where the size of a data block is set care MUST be taken to prevent buffer overflows in the client applications.
+</t>
+
+</section>
+
+<section anchor="Acknowledgments" title="Acknowledgments">
+
+<t>This document is a continuation of draft-kerr-avt-theora-rtp-00.txt</t>
+
+<t>
+Thanks to the AVT, Ogg Theora Communities / Xiph.org, Fluendo, Ralph Giles, Mike Smith, Phil Kerr, Timothy Terriberry, Stefan Ehmann, Alessandro Salvatori, Politecnico di Torino (LS)³/IMG Group in particular Federico Ridolfo, Francesco Varano, Giampaolo Mancini, Juan Carlos De Martin.
+</t>
+
+</section>
+
+</middle>
+
+<back>
+
+<references title="Normative References">
+
+<reference anchor="rfc3533">
+<front>
+<title>The Ogg Encapsulation Format Version 0</title>
+<author initials="S." surname="Pfeiffer" fullname="Silvia Pfeiffer"></author>
+</front>
+<seriesInfo name="RFC" value="3533" />
+</reference>
+
+<reference anchor="rfc2119">
+<front>
+<title>Key words for use in RFCs to Indicate Requirement Levels </title>
+<author initials="S." surname="Bradner" fullname="Scott Bradner"></author>
+</front>
+<seriesInfo name="RFC" value="2119" />
+</reference>
+
+<reference anchor="rfc3550">
+<front>
+<title>RTP: A Transport Protocol for real-time applications</title>
+<author initials="H." surname="Schulzrinne" fullname=""></author>
+<author initials="S." surname="Casner" fullname=""></author>
+<author initials="R." surname="Frederick" fullname=""></author>
+<author initials="V." surname="Jacobson" fullname=""></author>
+</front>
+<seriesInfo name="RFC" value="3550" />
+</reference>
+
+<reference anchor="rfc3551">
+<front>
+<title>RTP Profile for video and Video Conferences with Minimal Control.</title>
+<author initials="H." surname="Schulzrinne" fullname=""></author>
+<author initials="S." surname="Casner" fullname=""></author>
+</front>
+<date month="July" year="2003" />
+<seriesInfo name="RFC" value="3551" />
+</reference>
+
+<reference anchor="rfc3264">
+<front>
+<title>An Offer/Answer Model with Session Description Protocol (SDP)</title>
+<author initials="J." surname="Rosenberg" fullname="Jonathan Rosenberg"></author>
+<author initials="H." surname="Schulzrinne" fullname="Henning Schulzrinne"></author>
+</front>
+<seriesInfo name="RFC" value="3264" />
+</reference>
+
+<reference anchor="rfc2327">
+<front>
+<title>SDP: Session Description Protocol</title>
+<author initials="M." surname="Handley" fullname="Mark Handley"></author>
+<author initials="V." surname="Jacobson" fullname="Van Jacobson"></author>
+</front>
+<seriesInfo name="RFC" value="2327" />
+</reference>
+
+<reference anchor="rfc1063">
+<front>
+<title>Path MTU Discovery</title>
+<author initials="J." surname="Mogul et al." fullname="J. Mogul et al."></author>
+</front>
+<seriesInfo name="RFC" value="1063" />
+</reference>
+
+<reference anchor="rfc1981">
+<front>
+<title>Path MTU Discovery for IP version 6</title>
+<author initials="J." surname="McCann et al." fullname="J. McCann et al."></author>
+</front>
+<seriesInfo name="RFC" value="1981" />
+</reference>
+
+<reference anchor="rtcp-feedback">
+<front>
+<title>Extended RTP Profile for RTCP-based Feedback (RTP/AVPF)</title>
+<author initials="J." surname="Ott" fullname="Joerg Ott"></author>
+<author initials="S." surname="Wenger" fullname="Stephan Wenger"></author>
+<author initials="N." surname="Sato" fullname="Noriyuki Sato"></author>
+<author initials="C." surname="Burmeister" fullname="Carsten Burmeister"></author>
+<author initials="J." surname="Rey" fullname="Jose Rey"></author>
+</front>
+<seriesInfo name="Internet Draft" value="(draft-ietf-avt-rtcp-feedback-11: Work in progress)" />
+</reference>
+
+<reference anchor="vorbisrtp">
+<front>
+<title>RTP Payload Format for Vorbis Encoded Audio - draft-ietf-avt-vorbis-rtp-00</title>
+<author initials="L." surname="Barbato" fullname="Luca Barbato"></author>
+</front>
+<seriesInfo name="Internet Draft" value="(Work in progress)" />
+</reference>
+
+<reference anchor="rfc3548">
+<front>
+<title>The Base16, Base32, and Base64 Data Encodings</title>
+<author initials="S." surname="Josefsson" fullname="Simon Josefsson"></author>
+</front>
+<seriesInfo name="RFC" value="3548" />
+</reference>
+
+<reference anchor="rfc1952">
+<front>
+<title>GZIP file format specification version 4.3</title>
+<author initials="P" surname="Deutsch" fullname="L. Peter Deutsch"></author>
+</front>
+<seriesInfo name="RFC" value="1952" />
+</reference>
+
+<reference anchor="FIPS180">
+<front>
+<title>Secure Hash Standard</title>
+<author>
+<organization>National Institute of Standards and Technology</organization>
+</author>
+<date month="May" year="1993"/>
+</front>
+</reference>
+
+<reference anchor="BZ2">
+<front>
+<title>libbz2 and bzip2</title>
+<author initials="J" surname="Seward" fullname="Julian Seward" />
+</front>
+</reference>
+
+</references>
+
+<references title="Informative References">
+<reference anchor="libTheora">
+<front>
+<title>libTheora: Available from the Xiph website, http://www.xiph.org</title>
+</front>
+</reference>
+
+<reference anchor="theora-spec-ref">
+<front>
+<title>Theora I specification: Codec setup and packet decode. http://www.xiph.org/theora/doc/Theora_I_spec.pdf</title>
+</front>
+</reference>
+
+<reference anchor='rfc3611'>
+
+<front>
+<title>RTP Control Protocol Extended Reports (RTCP XR)</title>
+<author initials='T.' surname='Friedman' fullname='T. Friedman'>
+<organization /></author>
+<author initials='R.' surname='Caceres' fullname='R. Caceres'>
+<organization /></author>
+<author initials='A.' surname='Clark' fullname='A. Clark'>
+<organization /></author>
+<date year='2003' month='November' /></front>
+<seriesInfo name='RFC' value='3611' />
+</reference>
+
+
+<reference anchor="ITU-T V42">
+<front>
+<title>
+ITU-T Recommendation V.42, 1994, Rev. 1. Error-correcting Procedures for DCEs Using Asynchronous-to-Synchronous Conversion. International Telecommunications Union. Available from the ITU website, http://www.itu.int
+</title>
+</front>
+</reference>
+
+<reference anchor="ISO 3309">
+<front>
+<title>ISO 3309, October 1984, 3rd Edition. Information Processing Systems--Data Communication High-Level Data Link Control Procedure--Frame Structure. International Organization for Standardization.
+</title>
+</front>
+</reference>
+</references>
+</back>
+</rfc>
diff --git a/doc/libtheora/html/annotated.html b/doc/libtheora/html/annotated.html
new file mode 100644
index 0000000..3804f95
--- /dev/null
+++ b/doc/libtheora/html/annotated.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Structures</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Data Structures</h1>Here are the data structures with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="structth__comment.html">th_comment</a></td><td class="indexvalue">The comment information </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structth__huff__code.html">th_huff_code</a></td><td class="indexvalue">A Huffman code for a Theora DCT token </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structth__img__plane.html">th_img_plane</a></td><td class="indexvalue">A buffer for a single color plane in an uncompressed image </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structth__info.html">th_info</a></td><td class="indexvalue">Theora bitstream information </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structth__quant__info.html">th_quant_info</a></td><td class="indexvalue">A complete set of quantization parameters </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a></td><td class="indexvalue">A set of <em>qi</em> ranges </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structth__stripe__callback.html">th_stripe_callback</a></td><td class="indexvalue">The striped decode callback data to pass to <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a> </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structtheora__comment.html">theora_comment</a></td><td class="indexvalue">Comment header metadata </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structtheora__info.html">theora_info</a></td><td class="indexvalue">Theora bitstream info </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structtheora__state.html">theora_state</a></td><td class="indexvalue">Codec internal state and context </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structyuv__buffer.html">yuv_buffer</a></td><td class="indexvalue">A YUV buffer for passing uncompressed frames to and from the codec </td></tr>
+</table>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/classes.html b/doc/libtheora/html/classes.html
new file mode 100644
index 0000000..cf3768c
--- /dev/null
+++ b/doc/libtheora/html/classes.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Alphabetical List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Data Structure Index</h1><div class="qindex"><a class="qindex" href="#letter_T">T</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_Y">Y</a></div>
+<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
+<tr><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;T&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structth__img__plane.html">th_img_plane</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structtheora__info.html">theora_info</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_Y"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;Y&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a class="el" href="structth__comment.html">th_comment</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structth__info.html">th_info</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structth__stripe__callback.html">th_stripe_callback</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structtheora__state.html">theora_state</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structyuv__buffer.html">yuv_buffer</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structth__huff__code.html">th_huff_code</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structth__quant__info.html">th_quant_info</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structtheora__comment.html">theora_comment</a>&nbsp;&nbsp;&nbsp;</td></tr></table><div class="qindex"><a class="qindex" href="#letter_T">T</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_Y">Y</a></div>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/codec_8h.html b/doc/libtheora/html/codec_8h.html
new file mode 100644
index 0000000..ca85eb4
--- /dev/null
+++ b/doc/libtheora/html/codec_8h.html
@@ -0,0 +1,411 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: codec.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>codec.h File Reference</h1>
+<p>The shared <code>libtheoradec</code> and <code>libtheoraenc</code> C API.
+<a href="#_details">More...</a></p>
+<code>#include &lt;ogg/ogg.h&gt;</code><br/>
+
+<p><a href="codec_8h_source.html">Go to the source code of this file.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html">th_img_plane</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A buffer for a single color plane in an uncompressed image. <a href="structth__img__plane.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html">th_info</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Theora bitstream information. <a href="structth__info.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html">th_comment</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The comment information. <a href="structth__comment.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A set of <em>qi</em> ranges. <a href="structth__quant__ranges.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html">th_quant_info</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A complete set of quantization parameters. <a href="structth__quant__info.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__huff__code.html">th_huff_code</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A Huffman code for a Theora DCT token. <a href="structth__huff__code.html#_details">More...</a><br/></td></tr>
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a15352a6a862d25ab00a8f06ea65ee75b">_O_THEORA_CODEC_H_</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">TH_NHUFFMAN_TABLES</a>&nbsp;&nbsp;&nbsp;(80)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of Huffman tables used by Theora. <a href="#a49bf449eae33c5320f0c308f32c6ae42"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">TH_NDCT_TOKENS</a>&nbsp;&nbsp;&nbsp;(32)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of DCT token values in each table. <a href="#a2a44f48084e76a58cae48fb5d47cd422"></a><br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Return codes</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp800007e5fae550658ee577ca16693452"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">TH_EFAULT</a>&nbsp;&nbsp;&nbsp;(-1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An invalid pointer was provided. <a href="#a4d8d8e34fc5ec39ffa05d61a310a0407"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">TH_EINVAL</a>&nbsp;&nbsp;&nbsp;(-10)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An invalid argument was provided. <a href="#afbbd9f19fbf292aeb62a37792cecb870"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#af00f7ecc5242d12a717202537324a510">TH_EBADHEADER</a>&nbsp;&nbsp;&nbsp;(-20)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The contents of the header were incomplete, invalid, or unexpected. <a href="#af00f7ecc5242d12a717202537324a510"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">TH_ENOTFORMAT</a>&nbsp;&nbsp;&nbsp;(-21)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The header does not belong to a Theora stream. <a href="#a3dc08a00a9aba231be398f3e31726d9c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">TH_EVERSION</a>&nbsp;&nbsp;&nbsp;(-22)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The bitstream version is too high. <a href="#ac3a45ef2b24f75259258edc481e3a122"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">TH_EIMPL</a>&nbsp;&nbsp;&nbsp;(-23)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The specified function is not implemented. <a href="#a921c47accc17841f220af5a6afb79efe"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">TH_EBADPACKET</a>&nbsp;&nbsp;&nbsp;(-24)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">There were errors in the video data packet. <a href="#a6efb84e9c2213a8840003eee2847b27f"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">TH_DUPFRAME</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The decoded packet represented a dropped frame. <a href="#ab10e7b64f17a02707fc9348ea9832d09"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structth__img__plane.html">th_img_plane</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> [3]</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A complete image buffer for an uncompressed frame. <a href="#a343f7cfabad179cc4fe527cf06873f45"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a> [64]</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A single base matrix. <a href="#a6a1426d16beef8a311d7f0e9d2e96326"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a> { <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">TH_CS_UNSPECIFIED</a>,
+<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">TH_CS_ITU_REC_470M</a>,
+<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">TH_CS_ITU_REC_470BG</a>,
+<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">TH_CS_NSPACES</a>
+ }</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>The currently defined color space tags. </p>
+ <a href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a> { <br/>
+&nbsp;&nbsp;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">TH_PF_420</a>,
+<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">TH_PF_RSVD</a>,
+<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">TH_PF_422</a>,
+<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">TH_PF_444</a>,
+<br/>
+&nbsp;&nbsp;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">TH_PF_NFORMATS</a>
+<br/>
+ }</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>The currently defined pixel format tags. </p>
+ <a href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">More...</a><br/></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Basic shared functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb625c22fa07613c734f71c378fe32d7a"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc">th_version_string</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves a human-readable string to identify the library vendor and version. <a href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b">th_version_number</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the library version number. <a href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd">th_granule_frame</a> (void *_encdec, ogg_int64_t _granpos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a granule position to an absolute frame index, starting at <code>0</code>. <a href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432">th_granule_time</a> (void *_encdec, ogg_int64_t _granpos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a granule position to an absolute time in seconds. <a href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1">th_packet_isheader</a> (ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines whether a Theora packet is a header or not. <a href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a">th_packet_iskeyframe</a> (ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines whether a theora packet is a key frame or not. <a href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a"></a><br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Functions for manipulating header data</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp14ef5f819e97c870c128539ed1f334e3"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926">th_info_init</a> (<a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure. <a href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c">th_info_clear</a> (<a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clears a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure. <a href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09">th_comment_init</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. <a href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272">th_comment_add</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_comment)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. <a href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf">th_comment_add_tag</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag, char *_val)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. <a href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa">th_comment_query</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag, int _count)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up a comment value by its tag. <a href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc">th_comment_query_count</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up the number of instances of a tag. <a href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3">th_comment_clear</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clears a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. <a href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The shared <code>libtheoradec</code> and <code>libtheoraenc</code> C API. </p>
+<p>You don't need to include this directly. </p>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="a15352a6a862d25ab00a8f06ea65ee75b"></a><!-- doxytag: member="codec.h::_O_THEORA_CODEC_H_" ref="a15352a6a862d25ab00a8f06ea65ee75b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define _O_THEORA_CODEC_H_&nbsp;&nbsp;&nbsp;(1)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab10e7b64f17a02707fc9348ea9832d09"></a><!-- doxytag: member="codec.h::TH_DUPFRAME" ref="ab10e7b64f17a02707fc9348ea9832d09" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_DUPFRAME&nbsp;&nbsp;&nbsp;(1)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The decoded packet represented a dropped frame. </p>
+<p>The player can continue to display the current frame, as the contents of the decoded frame buffer have not changed. </p>
+
+</div>
+</div>
+<a class="anchor" id="af00f7ecc5242d12a717202537324a510"></a><!-- doxytag: member="codec.h::TH_EBADHEADER" ref="af00f7ecc5242d12a717202537324a510" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_EBADHEADER&nbsp;&nbsp;&nbsp;(-20)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The contents of the header were incomplete, invalid, or unexpected. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6efb84e9c2213a8840003eee2847b27f"></a><!-- doxytag: member="codec.h::TH_EBADPACKET" ref="a6efb84e9c2213a8840003eee2847b27f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_EBADPACKET&nbsp;&nbsp;&nbsp;(-24)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>There were errors in the video data packet. </p>
+
+</div>
+</div>
+<a class="anchor" id="a4d8d8e34fc5ec39ffa05d61a310a0407"></a><!-- doxytag: member="codec.h::TH_EFAULT" ref="a4d8d8e34fc5ec39ffa05d61a310a0407" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_EFAULT&nbsp;&nbsp;&nbsp;(-1)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>An invalid pointer was provided. </p>
+
+</div>
+</div>
+<a class="anchor" id="a921c47accc17841f220af5a6afb79efe"></a><!-- doxytag: member="codec.h::TH_EIMPL" ref="a921c47accc17841f220af5a6afb79efe" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_EIMPL&nbsp;&nbsp;&nbsp;(-23)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The specified function is not implemented. </p>
+
+</div>
+</div>
+<a class="anchor" id="afbbd9f19fbf292aeb62a37792cecb870"></a><!-- doxytag: member="codec.h::TH_EINVAL" ref="afbbd9f19fbf292aeb62a37792cecb870" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_EINVAL&nbsp;&nbsp;&nbsp;(-10)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>An invalid argument was provided. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3dc08a00a9aba231be398f3e31726d9c"></a><!-- doxytag: member="codec.h::TH_ENOTFORMAT" ref="a3dc08a00a9aba231be398f3e31726d9c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENOTFORMAT&nbsp;&nbsp;&nbsp;(-21)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The header does not belong to a Theora stream. </p>
+
+</div>
+</div>
+<a class="anchor" id="ac3a45ef2b24f75259258edc481e3a122"></a><!-- doxytag: member="codec.h::TH_EVERSION" ref="ac3a45ef2b24f75259258edc481e3a122" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_EVERSION&nbsp;&nbsp;&nbsp;(-22)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The bitstream version is too high. </p>
+
+</div>
+</div>
+<a class="anchor" id="a2a44f48084e76a58cae48fb5d47cd422"></a><!-- doxytag: member="codec.h::TH_NDCT_TOKENS" ref="a2a44f48084e76a58cae48fb5d47cd422" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_NDCT_TOKENS&nbsp;&nbsp;&nbsp;(32)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The number of DCT token values in each table. </p>
+
+</div>
+</div>
+<a class="anchor" id="a49bf449eae33c5320f0c308f32c6ae42"></a><!-- doxytag: member="codec.h::TH_NHUFFMAN_TABLES" ref="a49bf449eae33c5320f0c308f32c6ae42" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_NHUFFMAN_TABLES&nbsp;&nbsp;&nbsp;(80)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The number of Huffman tables used by Theora. </p>
+
+</div>
+</div>
+<hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="a6a1426d16beef8a311d7f0e9d2e96326"></a><!-- doxytag: member="codec.h::th_quant_base" ref="a6a1426d16beef8a311d7f0e9d2e96326" args="[64]" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef unsigned char <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a>[64]</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>A single base matrix. </p>
+
+</div>
+</div>
+<a class="anchor" id="a343f7cfabad179cc4fe527cf06873f45"></a><!-- doxytag: member="codec.h::th_ycbcr_buffer" ref="a343f7cfabad179cc4fe527cf06873f45" args="[3]" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef <a class="el" href="structth__img__plane.html">th_img_plane</a> <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a>[3]</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>A complete image buffer for an uncompressed frame. </p>
+<p>The chroma planes may be decimated by a factor of two in either direction, as indicated by <a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e" title="The pixel format.">th_info::pixel_fmt</a>. The width and height of the Y' plane must be multiples of 16. They may need to be cropped for display, using the rectangle specified by <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f" title="The X offset of the displayed picture.">th_info::pic_x</a>, <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14" title="The Y offset of the displayed picture.">th_info::pic_y</a>, <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345" title="The displayed picture width.">th_info::pic_width</a>, and <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">th_info::pic_height</a>. All samples are 8 bits. </p>
+<dl class="note"><dt><b>Note:</b></dt><dd>The term YUV often used to describe a colorspace is ambiguous. The exact parameters of the RGB to YUV conversion process aside, in many contexts the U and V channels actually have opposite meanings. To avoid this confusion, we are explicit: the name of the color channels are Y'CbCr, and they appear in that order, always. The prime symbol denotes that the Y channel is non-linear. Cb and Cr stand for "Chroma blue" and "Chroma red", respectively. </dd></dl>
+
+</div>
+</div>
+<hr/><h2>Enumeration Type Documentation</h2>
+<a class="anchor" id="a4ce7a695ce353b1582d29b6c1ddf31a0"></a><!-- doxytag: member="codec.h::th_colorspace" ref="a4ce7a695ce353b1582d29b6c1ddf31a0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The currently defined color space tags. </p>
+<p>See <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Chapter 4, for exact details on the meaning of each of these color spaces. </p>
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf"></a><!-- doxytag: member="TH_CS_UNSPECIFIED" ref="a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf" args="" -->TH_CS_UNSPECIFIED</em>&nbsp;</td><td>
+<p>The color space was not specified at the encoder. </p>
+<p>It may be conveyed by an external means. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397"></a><!-- doxytag: member="TH_CS_ITU_REC_470M" ref="a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397" args="" -->TH_CS_ITU_REC_470M</em>&nbsp;</td><td>
+<p>A color space designed for NTSC content. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe"></a><!-- doxytag: member="TH_CS_ITU_REC_470BG" ref="a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe" args="" -->TH_CS_ITU_REC_470BG</em>&nbsp;</td><td>
+<p>A color space designed for PAL/SECAM content. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e"></a><!-- doxytag: member="TH_CS_NSPACES" ref="a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e" args="" -->TH_CS_NSPACES</em>&nbsp;</td><td>
+<p>The total number of currently defined color spaces. </p>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bc"></a><!-- doxytag: member="codec.h::th_pixel_fmt" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bc" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The currently defined pixel format tags. </p>
+<p>See <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Section 4.4, for details on the precise sample locations. </p>
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162"></a><!-- doxytag: member="TH_PF_420" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162" args="" -->TH_PF_420</em>&nbsp;</td><td>
+<p>Chroma decimation by 2 in both the X and Y directions (4:2:0). </p>
+<p>The Cb and Cr chroma planes are half the width and half the height of the luma plane. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6"></a><!-- doxytag: member="TH_PF_RSVD" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6" args="" -->TH_PF_RSVD</em>&nbsp;</td><td>
+<p>Currently reserved. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa"></a><!-- doxytag: member="TH_PF_422" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa" args="" -->TH_PF_422</em>&nbsp;</td><td>
+<p>Chroma decimation by 2 in the X direction (4:2:2). </p>
+<p>The Cb and Cr chroma planes are half the width of the luma plane, but full height. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86"></a><!-- doxytag: member="TH_PF_444" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86" args="" -->TH_PF_444</em>&nbsp;</td><td>
+<p>No chroma decimation (4:4:4). </p>
+<p>The Cb and Cr chroma planes are full width and full height. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb"></a><!-- doxytag: member="TH_PF_NFORMATS" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb" args="" -->TH_PF_NFORMATS</em>&nbsp;</td><td>
+<p>The total number of currently defined pixel formats. </p>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+</div>
+</div>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/codec_8h_source.html b/doc/libtheora/html/codec_8h_source.html
new file mode 100644
index 0000000..651c3cf
--- /dev/null
+++ b/doc/libtheora/html/codec_8h_source.html
@@ -0,0 +1,195 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: codec.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+<h1>codec.h</h1><a href="codec_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/********************************************************************</span>
+<a name="l00002"></a>00002 <span class="comment"> * *</span>
+<a name="l00003"></a>00003 <span class="comment"> * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. *</span>
+<a name="l00004"></a>00004 <span class="comment"> * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *</span>
+<a name="l00005"></a>00005 <span class="comment"> * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *</span>
+<a name="l00006"></a>00006 <span class="comment"> * IN &apos;COPYING&apos;. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *</span>
+<a name="l00007"></a>00007 <span class="comment"> * *</span>
+<a name="l00008"></a>00008 <span class="comment"> * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009 *</span>
+<a name="l00009"></a>00009 <span class="comment"> * by the Xiph.Org Foundation http://www.xiph.org/ *</span>
+<a name="l00010"></a>00010 <span class="comment"> * *</span>
+<a name="l00011"></a>00011 <span class="comment"> ********************************************************************</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment"> function:</span>
+<a name="l00014"></a>00014 <span class="comment"> last mod: $Id: theora.h,v 1.8 2004/03/15 22:17:32 derf Exp $</span>
+<a name="l00015"></a>00015 <span class="comment"></span>
+<a name="l00016"></a>00016 <span class="comment"> ********************************************************************/</span>
+<a name="l00017"></a>00017
+<a name="l00062"></a>00062 <span class="preprocessor">#if !defined(_O_THEORA_CODEC_H_)</span>
+<a name="l00063"></a><a class="code" href="codec_8h.html#a15352a6a862d25ab00a8f06ea65ee75b">00063</a> <span class="preprocessor"></span><span class="preprocessor"># define _O_THEORA_CODEC_H_ (1)</span>
+<a name="l00064"></a>00064 <span class="preprocessor"></span><span class="preprocessor"># include &lt;ogg/ogg.h&gt;</span>
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 <span class="preprocessor">#if defined(__cplusplus)</span>
+<a name="l00067"></a>00067 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {
+<a name="l00068"></a>00068 <span class="preprocessor">#endif</span>
+<a name="l00069"></a>00069 <span class="preprocessor"></span>
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071
+<a name="l00075"></a><a class="code" href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">00075</a> <span class="preprocessor">#define TH_EFAULT (-1)</span>
+<a name="l00076"></a>00076 <span class="preprocessor"></span>
+<a name="l00077"></a><a class="code" href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">00077</a> <span class="preprocessor">#define TH_EINVAL (-10)</span>
+<a name="l00078"></a>00078 <span class="preprocessor"></span>
+<a name="l00079"></a><a class="code" href="codec_8h.html#af00f7ecc5242d12a717202537324a510">00079</a> <span class="preprocessor">#define TH_EBADHEADER (-20)</span>
+<a name="l00080"></a>00080 <span class="preprocessor"></span>
+<a name="l00081"></a><a class="code" href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">00081</a> <span class="preprocessor">#define TH_ENOTFORMAT (-21)</span>
+<a name="l00082"></a>00082 <span class="preprocessor"></span>
+<a name="l00083"></a><a class="code" href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">00083</a> <span class="preprocessor">#define TH_EVERSION (-22)</span>
+<a name="l00084"></a>00084 <span class="preprocessor"></span>
+<a name="l00085"></a><a class="code" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">00085</a> <span class="preprocessor">#define TH_EIMPL (-23)</span>
+<a name="l00086"></a>00086 <span class="preprocessor"></span>
+<a name="l00087"></a><a class="code" href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">00087</a> <span class="preprocessor">#define TH_EBADPACKET (-24)</span>
+<a name="l00088"></a>00088 <span class="preprocessor"></span>
+<a name="l00091"></a><a class="code" href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">00091</a> <span class="preprocessor">#define TH_DUPFRAME (1)</span>
+<a name="l00092"></a>00092 <span class="preprocessor"></span>
+<a name="l00098"></a><a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">00098</a> <span class="keyword">typedef</span> <span class="keyword">enum</span>{
+<a name="l00101"></a><a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">00101</a> <a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf" title="The color space was not specified at the encoder.">TH_CS_UNSPECIFIED</a>,
+<a name="l00103"></a><a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">00103</a> <a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397" title="A color space designed for NTSC content.">TH_CS_ITU_REC_470M</a>,
+<a name="l00105"></a><a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">00105</a> <a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe" title="A color space designed for PAL/SECAM content.">TH_CS_ITU_REC_470BG</a>,
+<a name="l00107"></a><a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">00107</a> <a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e" title="The total number of currently defined color spaces.">TH_CS_NSPACES</a>
+<a name="l00108"></a>00108 }<a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0" title="The currently defined color space tags.">th_colorspace</a>;
+<a name="l00109"></a>00109
+<a name="l00114"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">00114</a> <span class="keyword">typedef</span> <span class="keyword">enum</span>{
+<a name="l00118"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">00118</a> <a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162" title="Chroma decimation by 2 in both the X and Y directions (4:2:0).">TH_PF_420</a>,
+<a name="l00120"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">00120</a> <a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6" title="Currently reserved.">TH_PF_RSVD</a>,
+<a name="l00124"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">00124</a> <a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa" title="Chroma decimation by 2 in the X direction (4:2:2).">TH_PF_422</a>,
+<a name="l00127"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">00127</a> <a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86" title="No chroma decimation (4:4:4).">TH_PF_444</a>,
+<a name="l00129"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">00129</a> <a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb" title="The total number of currently defined pixel formats.">TH_PF_NFORMATS</a>
+<a name="l00130"></a>00130 }<a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc" title="The currently defined pixel format tags.">th_pixel_fmt</a>;
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133
+<a name="l00142"></a><a class="code" href="structth__img__plane.html">00142</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
+<a name="l00144"></a><a class="code" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">00144</a> <span class="keywordtype">int</span> width;
+<a name="l00146"></a><a class="code" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">00146</a> <span class="keywordtype">int</span> height;
+<a name="l00148"></a><a class="code" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">00148</a> <span class="keywordtype">int</span> stride;
+<a name="l00150"></a><a class="code" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">00150</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *data;
+<a name="l00151"></a>00151 }<a class="code" href="structth__img__plane.html" title="A buffer for a single color plane in an uncompressed image.">th_img_plane</a>;
+<a name="l00152"></a>00152
+<a name="l00168"></a><a class="code" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">00168</a> <span class="keyword">typedef</span> <a class="code" href="structth__img__plane.html" title="A buffer for a single color plane in an uncompressed image.">th_img_plane</a> <a class="code" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45" title="A complete image buffer for an uncompressed frame.">th_ycbcr_buffer</a>[3];
+<a name="l00169"></a>00169
+<a name="l00204"></a><a class="code" href="structth__info.html">00204</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
+<a name="l00208"></a><a class="code" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">00208</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_major;
+<a name="l00209"></a><a class="code" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">00209</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_minor;
+<a name="l00210"></a><a class="code" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">00210</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_subminor;
+<a name="l00214"></a><a class="code" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">00214</a> ogg_uint32_t frame_width;
+<a name="l00217"></a><a class="code" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">00217</a> ogg_uint32_t frame_height;
+<a name="l00220"></a><a class="code" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">00220</a> ogg_uint32_t pic_width;
+<a name="l00223"></a><a class="code" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">00223</a> ogg_uint32_t pic_height;
+<a name="l00227"></a><a class="code" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">00227</a> ogg_uint32_t pic_x;
+<a name="l00235"></a><a class="code" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">00235</a> ogg_uint32_t pic_y;
+<a name="l00240"></a><a class="code" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">00240</a> ogg_uint32_t fps_numerator;
+<a name="l00241"></a><a class="code" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">00241</a> ogg_uint32_t fps_denominator;
+<a name="l00252"></a><a class="code" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">00252</a> ogg_uint32_t aspect_numerator;
+<a name="l00253"></a><a class="code" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">00253</a> ogg_uint32_t aspect_denominator;
+<a name="l00256"></a><a class="code" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">00256</a> <a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0" title="The currently defined color space tags.">th_colorspace</a> colorspace;
+<a name="l00258"></a><a class="code" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">00258</a> <a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc" title="The currently defined pixel format tags.">th_pixel_fmt</a> pixel_fmt;
+<a name="l00262"></a><a class="code" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">00262</a> <span class="keywordtype">int</span> target_bitrate;
+<a name="l00268"></a>00268 <span class="comment">/*Currently this is set so that a qi of 0 corresponds to distortions of 24</span>
+<a name="l00269"></a>00269 <span class="comment"> times the JND, and each increase by 16 halves that value.</span>
+<a name="l00270"></a>00270 <span class="comment"> This gives us fine discrimination at low qualities, yet effective rate</span>
+<a name="l00271"></a>00271 <span class="comment"> control at high qualities.</span>
+<a name="l00272"></a>00272 <span class="comment"> The qi value 63 is special, however.</span>
+<a name="l00273"></a>00273 <span class="comment"> For this, the highest quality, we use one half of a JND for our threshold.</span>
+<a name="l00274"></a>00274 <span class="comment"> Due to the lower bounds placed on allowable quantizers in Theora, we will</span>
+<a name="l00275"></a>00275 <span class="comment"> not actually be able to achieve quality this good, but this should</span>
+<a name="l00276"></a>00276 <span class="comment"> provide as close to visually lossless quality as Theora is capable of.</span>
+<a name="l00277"></a>00277 <span class="comment"> We could lift the quantizer restrictions without breaking VP3.1</span>
+<a name="l00278"></a>00278 <span class="comment"> compatibility, but this would result in quantized coefficients that are</span>
+<a name="l00279"></a>00279 <span class="comment"> too large for the current bitstream to be able to store.</span>
+<a name="l00280"></a>00280 <span class="comment"> We&apos;d have to redesign the token syntax to store these large coefficients,</span>
+<a name="l00281"></a>00281 <span class="comment"> which would make transcoding complex.*/</span>
+<a name="l00282"></a><a class="code" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">00282</a> <span class="keywordtype">int</span> quality;
+<a name="l00296"></a><a class="code" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">00296</a> <span class="keywordtype">int</span> keyframe_granule_shift;
+<a name="l00297"></a>00297 }<a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a>;
+<a name="l00298"></a>00298
+<a name="l00323"></a><a class="code" href="structth__comment.html">00323</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structth__comment.html" title="The comment information.">th_comment</a>{
+<a name="l00325"></a><a class="code" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">00325</a> <span class="keywordtype">char</span> **<a class="code" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4" title="The array of comment string vectors.">user_comments</a>;
+<a name="l00327"></a><a class="code" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">00327</a> <span class="keywordtype">int</span> *<a class="code" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898" title="An array of the corresponding length of each vector, in bytes.">comment_lengths</a>;
+<a name="l00329"></a><a class="code" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">00329</a> <span class="keywordtype">int</span> <a class="code" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78" title="The total number of comment strings.">comments</a>;
+<a name="l00332"></a><a class="code" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">00332</a> <span class="keywordtype">char</span> *<a class="code" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0" title="The null-terminated vendor string.">vendor</a>;
+<a name="l00333"></a>00333 }<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a>;
+<a name="l00334"></a>00334
+<a name="l00335"></a>00335
+<a name="l00336"></a>00336
+<a name="l00338"></a><a class="code" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">00338</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326" title="A single base matrix.">th_quant_base</a>[64];
+<a name="l00339"></a>00339
+<a name="l00341"></a><a class="code" href="structth__quant__ranges.html">00341</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
+<a name="l00343"></a><a class="code" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">00343</a> <span class="keywordtype">int</span> nranges;
+<a name="l00346"></a><a class="code" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">00346</a> <span class="keyword">const</span> <span class="keywordtype">int</span> *sizes;
+<a name="l00349"></a><a class="code" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">00349</a> <span class="keyword">const</span> th_quant_base *base_matrices;
+<a name="l00350"></a>00350 }<a class="code" href="structth__quant__ranges.html" title="A set of qi ranges.">th_quant_ranges</a>;
+<a name="l00351"></a>00351
+<a name="l00409"></a><a class="code" href="structth__quant__info.html">00409</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
+<a name="l00411"></a><a class="code" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">00411</a> ogg_uint16_t dc_scale[64];
+<a name="l00413"></a><a class="code" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">00413</a> ogg_uint16_t ac_scale[64];
+<a name="l00415"></a><a class="code" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">00415</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> loop_filter_limits[64];
+<a name="l00417"></a><a class="code" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">00417</a> <a class="code" href="structth__quant__ranges.html" title="A set of qi ranges.">th_quant_ranges</a> qi_ranges[2][3];
+<a name="l00418"></a>00418 }<a class="code" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a>;
+<a name="l00419"></a>00419
+<a name="l00420"></a>00420
+<a name="l00421"></a>00421
+<a name="l00423"></a><a class="code" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">00423</a> <span class="preprocessor">#define TH_NHUFFMAN_TABLES (80)</span>
+<a name="l00424"></a>00424 <span class="preprocessor"></span>
+<a name="l00425"></a><a class="code" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">00425</a> <span class="preprocessor">#define TH_NDCT_TOKENS (32)</span>
+<a name="l00426"></a>00426 <span class="preprocessor"></span>
+<a name="l00438"></a><a class="code" href="structth__huff__code.html">00438</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
+<a name="l00441"></a><a class="code" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">00441</a> ogg_uint32_t pattern;
+<a name="l00444"></a><a class="code" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">00444</a> <span class="keywordtype">int</span> nbits;
+<a name="l00445"></a>00445 }<a class="code" href="structth__huff__code.html" title="A Huffman code for a Theora DCT token.">th_huff_code</a>;
+<a name="l00446"></a>00446
+<a name="l00447"></a>00447
+<a name="l00448"></a>00448
+<a name="l00456"></a>00456 <span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc" title="Retrieves a human-readable string to identify the library vendor and version.">th_version_string</a>(<span class="keywordtype">void</span>);
+<a name="l00466"></a>00466 <span class="keyword">extern</span> ogg_uint32_t <a class="code" href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b" title="Retrieves the library version number.">th_version_number</a>(<span class="keywordtype">void</span>);
+<a name="l00476"></a>00476 <span class="keyword">extern</span> ogg_int64_t <a class="code" href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd" title="Converts a granule position to an absolute frame index, starting at 0.">th_granule_frame</a>(<span class="keywordtype">void</span> *_encdec,ogg_int64_t _granpos);
+<a name="l00488"></a>00488 <span class="keyword">extern</span> <span class="keywordtype">double</span> <a class="code" href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432" title="Converts a granule position to an absolute time in seconds.">th_granule_time</a>(<span class="keywordtype">void</span> *_encdec,ogg_int64_t _granpos);
+<a name="l00498"></a>00498 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1" title="Determines whether a Theora packet is a header or not.">th_packet_isheader</a>(ogg_packet *_op);
+<a name="l00509"></a>00509 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a" title="Determines whether a theora packet is a key frame or not.">th_packet_iskeyframe</a>(ogg_packet *_op);
+<a name="l00519"></a>00519 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926" title="Initializes a th_info structure.">th_info_init</a>(<a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a> *_info);
+<a name="l00524"></a>00524 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c" title="Clears a th_info structure.">th_info_clear</a>(<a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a> *_info);
+<a name="l00525"></a>00525
+<a name="l00530"></a>00530 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09" title="Initialize a th_comment structure.">th_comment_init</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc);
+<a name="l00540"></a>00540 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272" title="Add a comment to an initialized th_comment structure.">th_comment_add</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc, <span class="keywordtype">char</span> *_comment);
+<a name="l00551"></a>00551 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf" title="Add a comment to an initialized th_comment structure.">th_comment_add_tag</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc,<span class="keywordtype">char</span> *_tag,<span class="keywordtype">char</span> *_val);
+<a name="l00567"></a>00567 <span class="keyword">extern</span> <span class="keywordtype">char</span> *<a class="code" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa" title="Look up a comment value by its tag.">th_comment_query</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc,<span class="keywordtype">char</span> *_tag,<span class="keywordtype">int</span> _count);
+<a name="l00575"></a>00575 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc" title="Look up the number of instances of a tag.">th_comment_query_count</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc,<span class="keywordtype">char</span> *_tag);
+<a name="l00581"></a>00581 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3" title="Clears a th_comment structure.">th_comment_clear</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc);
+<a name="l00584"></a>00584
+<a name="l00585"></a>00585
+<a name="l00586"></a>00586
+<a name="l00587"></a>00587 <span class="preprocessor">#if defined(__cplusplus)</span>
+<a name="l00588"></a>00588 <span class="preprocessor"></span>}
+<a name="l00589"></a>00589 <span class="preprocessor">#endif</span>
+<a name="l00590"></a>00590 <span class="preprocessor"></span>
+<a name="l00591"></a>00591 <span class="preprocessor">#endif</span>
+</pre></div></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/doxygen.css b/doc/libtheora/html/doxygen.css
new file mode 100644
index 0000000..9ca3caf
--- /dev/null
+++ b/doc/libtheora/html/doxygen.css
@@ -0,0 +1,498 @@
+/* The standard CSS for doxygen */
+
+body, table, div, p, dl {
+ font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
+ font-size: 12px;
+}
+
+/* @group Heading Levels */
+
+h1 {
+ text-align: center;
+ font-size: 150%;
+}
+
+h2 {
+ font-size: 120%;
+}
+
+h3 {
+ font-size: 100%;
+}
+
+dt {
+ font-weight: bold;
+}
+
+div.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
+}
+
+p.startli, p.startdd {
+ margin-top: 2px;
+}
+
+p.endli {
+ margin-bottom: 0px;
+}
+
+p.enddd {
+ margin-bottom: 4px;
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+span.legend {
+ font-size: 70%;
+ text-align: center;
+}
+
+div.qindex, div.navtab{
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+}
+
+div.qindex, div.navpath {
+ width: 100%;
+ line-height: 140%;
+}
+
+div.navtab {
+ margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+ color: #153788;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #1b77c5;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a.qindex {
+ font-weight: bold;
+}
+
+a.qindexHL {
+ font-weight: bold;
+ background-color: #6666cc;
+ color: #ffffff;
+ border: 1px double #9295C2;
+}
+
+.contents a.qindexHL:visited {
+ color: #ffffff;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code {
+}
+
+a.codeRef {
+}
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+.fragment {
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+pre.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+}
+
+div.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background: white;
+ color: black;
+ margin-right: 20px;
+ margin-left: 20px;
+}
+
+td.indexkey {
+ background-color: #e8eef2;
+ font-weight: bold;
+ border: 1px solid #CCCCCC;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+}
+
+td.indexvalue {
+ background-color: #e8eef2;
+ border: 1px solid #CCCCCC;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #f0f0f0;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl {
+ vertical-align: middle;
+}
+
+div.center {
+ text-align: center;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0px;
+}
+
+div.center img {
+ border: 0px;
+}
+
+img.footer {
+ border: 0px;
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+/* @end */
+
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #84b0c7;
+}
+
+th.dirtab {
+ background: #e8eef2;
+ font-weight: bold;
+}
+
+hr {
+ height: 0;
+ border: none;
+ border-top: 1px solid #666;
+}
+
+/* @group Member Descriptions */
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #FAFAFA;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memItemLeft, .memItemRight, .memTemplParams {
+ border-top: 1px solid #ccc;
+}
+
+.memItemLeft, .memTemplItemLeft {
+ white-space: nowrap;
+}
+
+.memTemplParams {
+ color: #606060;
+ white-space: nowrap;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+ font-size: 80%;
+ color: #606060;
+ font-weight: normal;
+ margin-left: 3px;
+}
+
+.memnav {
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.memitem {
+ padding: 0;
+ margin-bottom: 10px;
+}
+
+.memname {
+ white-space: nowrap;
+ font-weight: bold;
+}
+
+.memproto, .memdoc {
+ border: 1px solid #84b0c7;
+}
+
+.memproto {
+ padding: 0;
+ background-color: #d5e1e8;
+ font-weight: bold;
+ -webkit-border-top-left-radius: 8px;
+ -webkit-border-top-right-radius: 8px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -moz-border-radius-topleft: 8px;
+ -moz-border-radius-topright: 8px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+
+}
+
+.memdoc {
+ padding: 2px 5px;
+ background-color: #eef3f5;
+ border-top-width: 0;
+ -webkit-border-bottom-left-radius: 8px;
+ -webkit-border-bottom-right-radius: 8px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -moz-border-radius-bottomleft: 8px;
+ -moz-border-radius-bottomright: 8px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+
+/* @end */
+
+/* @group Directory (tree) */
+
+/* for the tree view */
+
+.ftvtree {
+ font-family: sans-serif;
+ margin: 0.5em;
+}
+
+/* these are for tree view when used as main index */
+
+.directory {
+ font-size: 9pt;
+ font-weight: bold;
+}
+
+.directory h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+
+/*
+The following two styles can be used to replace the root node title
+with an image of your choice. Simply uncomment the next two styles,
+specify the name of your image and be sure to set 'height' to the
+proper pixel height of your image.
+*/
+
+/*
+.directory h3.swap {
+ height: 61px;
+ background-repeat: no-repeat;
+ background-image: url("yourimage.gif");
+}
+.directory h3.swap span {
+ display: none;
+}
+*/
+
+.directory > h3 {
+ margin-top: 0;
+}
+
+.directory p {
+ margin: 0px;
+ white-space: nowrap;
+}
+
+.directory div {
+ display: none;
+ margin: 0px;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+/* these are for tree view when not used as main index */
+
+.directory-alt {
+ font-size: 100%;
+ font-weight: bold;
+}
+
+.directory-alt h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+
+.directory-alt > h3 {
+ margin-top: 0;
+}
+
+.directory-alt p {
+ margin: 0px;
+ white-space: nowrap;
+}
+
+.directory-alt div {
+ display: none;
+ margin: 0px;
+}
+
+.directory-alt img {
+ vertical-align: -30%;
+}
+
+/* @end */
+
+address {
+ font-style: normal;
+ color: #333;
+}
diff --git a/doc/libtheora/html/doxygen.png b/doc/libtheora/html/doxygen.png
new file mode 100644
index 0000000..f0a274b
--- /dev/null
+++ b/doc/libtheora/html/doxygen.png
Binary files differ
diff --git a/doc/libtheora/html/files.html b/doc/libtheora/html/files.html
new file mode 100644
index 0000000..8ea7e77
--- /dev/null
+++ b/doc/libtheora/html/files.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: File Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>File List</h1>Here is a list of all files with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="codec_8h.html">codec.h</a> <a href="codec_8h_source.html">[code]</a></td><td class="indexvalue">The shared <code>libtheoradec</code> and <code>libtheoraenc</code> C API </td></tr>
+ <tr><td class="indexkey"><a class="el" href="theora_8h.html">theora.h</a> <a href="theora_8h_source.html">[code]</a></td><td class="indexvalue">The libtheora pre-1.0 legacy C API </td></tr>
+ <tr><td class="indexkey"><a class="el" href="theoradec_8h.html">theoradec.h</a> <a href="theoradec_8h_source.html">[code]</a></td><td class="indexvalue">The <code>libtheoradec</code> C decoding API </td></tr>
+ <tr><td class="indexkey"><a class="el" href="theoraenc_8h.html">theoraenc.h</a> <a href="theoraenc_8h_source.html">[code]</a></td><td class="indexvalue">The <code>libtheoraenc</code> C encoding API </td></tr>
+</table>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/functions.html b/doc/libtheora/html/functions.html
new file mode 100644
index 0000000..f8a85cb
--- /dev/null
+++ b/doc/libtheora/html/functions.html
@@ -0,0 +1,353 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="#index_a"><span>a</span></a></li>
+ <li><a href="#index_b"><span>b</span></a></li>
+ <li><a href="#index_c"><span>c</span></a></li>
+ <li><a href="#index_d"><span>d</span></a></li>
+ <li><a href="#index_f"><span>f</span></a></li>
+ <li><a href="#index_g"><span>g</span></a></li>
+ <li><a href="#index_h"><span>h</span></a></li>
+ <li><a href="#index_i"><span>i</span></a></li>
+ <li><a href="#index_k"><span>k</span></a></li>
+ <li><a href="#index_l"><span>l</span></a></li>
+ <li><a href="#index_n"><span>n</span></a></li>
+ <li><a href="#index_o"><span>o</span></a></li>
+ <li><a href="#index_p"><span>p</span></a></li>
+ <li><a href="#index_q"><span>q</span></a></li>
+ <li><a href="#index_s"><span>s</span></a></li>
+ <li><a href="#index_t"><span>t</span></a></li>
+ <li><a href="#index_u"><span>u</span></a></li>
+ <li><a href="#index_v"><span>v</span></a></li>
+ <li><a href="#index_w"><span>w</span></a></li>
+ <li><a href="#index_y"><span>y</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all struct and union fields with links to the structures/unions they belong to:
+
+<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
+<li>ac_scale
+: <a class="el" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">th_quant_info</a>
+</li>
+<li>aspect_denominator
+: <a class="el" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">th_info</a>
+, <a class="el" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">theora_info</a>
+</li>
+<li>aspect_numerator
+: <a class="el" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">th_info</a>
+, <a class="el" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_b">- b -</a></h3><ul>
+<li>base_matrices
+: <a class="el" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">th_quant_ranges</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
+<li>codec_setup
+: <a class="el" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">theora_info</a>
+</li>
+<li>colorspace
+: <a class="el" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">th_info</a>
+, <a class="el" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">theora_info</a>
+</li>
+<li>comment_lengths
+: <a class="el" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">th_comment</a>
+, <a class="el" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">theora_comment</a>
+</li>
+<li>comments
+: <a class="el" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">th_comment</a>
+, <a class="el" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">theora_comment</a>
+</li>
+<li>ctx
+: <a class="el" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">th_stripe_callback</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_d">- d -</a></h3><ul>
+<li>data
+: <a class="el" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">th_img_plane</a>
+</li>
+<li>dc_scale
+: <a class="el" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">th_quant_info</a>
+</li>
+<li>dropframes_p
+: <a class="el" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_f">- f -</a></h3><ul>
+<li>fps_denominator
+: <a class="el" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">th_info</a>
+, <a class="el" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">theora_info</a>
+</li>
+<li>fps_numerator
+: <a class="el" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">theora_info</a>
+, <a class="el" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">th_info</a>
+</li>
+<li>frame_height
+: <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">th_info</a>
+, <a class="el" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">theora_info</a>
+</li>
+<li>frame_width
+: <a class="el" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">theora_info</a>
+, <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">th_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_g">- g -</a></h3><ul>
+<li>granulepos
+: <a class="el" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">theora_state</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
+<li>height
+: <a class="el" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">th_img_plane</a>
+, <a class="el" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
+<li>i
+: <a class="el" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">theora_state</a>
+</li>
+<li>internal_decode
+: <a class="el" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">theora_state</a>
+</li>
+<li>internal_encode
+: <a class="el" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">theora_state</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_k">- k -</a></h3><ul>
+<li>keyframe_auto_p
+: <a class="el" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">theora_info</a>
+</li>
+<li>keyframe_auto_threshold
+: <a class="el" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">theora_info</a>
+</li>
+<li>keyframe_data_target_bitrate
+: <a class="el" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">theora_info</a>
+</li>
+<li>keyframe_frequency
+: <a class="el" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">theora_info</a>
+</li>
+<li>keyframe_frequency_force
+: <a class="el" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">theora_info</a>
+</li>
+<li>keyframe_granule_shift
+: <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">th_info</a>
+</li>
+<li>keyframe_mindistance
+: <a class="el" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
+<li>loop_filter_limits
+: <a class="el" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">th_quant_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_n">- n -</a></h3><ul>
+<li>nbits
+: <a class="el" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">th_huff_code</a>
+</li>
+<li>noise_sensitivity
+: <a class="el" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">theora_info</a>
+</li>
+<li>nranges
+: <a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">th_quant_ranges</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
+<li>offset_x
+: <a class="el" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">theora_info</a>
+</li>
+<li>offset_y
+: <a class="el" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
+<li>pattern
+: <a class="el" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">th_huff_code</a>
+</li>
+<li>pic_height
+: <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">th_info</a>
+</li>
+<li>pic_width
+: <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">th_info</a>
+</li>
+<li>pic_x
+: <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">th_info</a>
+</li>
+<li>pic_y
+: <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">th_info</a>
+</li>
+<li>pixel_fmt
+: <a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">th_info</a>
+</li>
+<li>pixelformat
+: <a class="el" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_q">- q -</a></h3><ul>
+<li>qi_ranges
+: <a class="el" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">th_quant_info</a>
+</li>
+<li>quality
+: <a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">th_info</a>
+, <a class="el" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">theora_info</a>
+</li>
+<li>quick_p
+: <a class="el" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_s">- s -</a></h3><ul>
+<li>sharpness
+: <a class="el" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">theora_info</a>
+</li>
+<li>sizes
+: <a class="el" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">th_quant_ranges</a>
+</li>
+<li>stride
+: <a class="el" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">th_img_plane</a>
+</li>
+<li>stripe_decoded
+: <a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">th_stripe_callback</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
+<li>target_bitrate
+: <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">th_info</a>
+, <a class="el" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_u">- u -</a></h3><ul>
+<li>u
+: <a class="el" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">yuv_buffer</a>
+</li>
+<li>user_comments
+: <a class="el" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">th_comment</a>
+, <a class="el" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">theora_comment</a>
+</li>
+<li>uv_height
+: <a class="el" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">yuv_buffer</a>
+</li>
+<li>uv_stride
+: <a class="el" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">yuv_buffer</a>
+</li>
+<li>uv_width
+: <a class="el" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">yuv_buffer</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_v">- v -</a></h3><ul>
+<li>v
+: <a class="el" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">yuv_buffer</a>
+</li>
+<li>vendor
+: <a class="el" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">th_comment</a>
+, <a class="el" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">theora_comment</a>
+</li>
+<li>version_major
+: <a class="el" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">th_info</a>
+, <a class="el" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">theora_info</a>
+</li>
+<li>version_minor
+: <a class="el" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">theora_info</a>
+, <a class="el" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">th_info</a>
+</li>
+<li>version_subminor
+: <a class="el" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">theora_info</a>
+, <a class="el" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">th_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_w">- w -</a></h3><ul>
+<li>width
+: <a class="el" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">th_img_plane</a>
+, <a class="el" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_y">- y -</a></h3><ul>
+<li>y
+: <a class="el" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">yuv_buffer</a>
+</li>
+<li>y_height
+: <a class="el" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">yuv_buffer</a>
+</li>
+<li>y_stride
+: <a class="el" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">yuv_buffer</a>
+</li>
+<li>y_width
+: <a class="el" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">yuv_buffer</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/functions_vars.html b/doc/libtheora/html/functions_vars.html
new file mode 100644
index 0000000..b2103c1
--- /dev/null
+++ b/doc/libtheora/html/functions_vars.html
@@ -0,0 +1,353 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields - Variables</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="#index_a"><span>a</span></a></li>
+ <li><a href="#index_b"><span>b</span></a></li>
+ <li><a href="#index_c"><span>c</span></a></li>
+ <li><a href="#index_d"><span>d</span></a></li>
+ <li><a href="#index_f"><span>f</span></a></li>
+ <li><a href="#index_g"><span>g</span></a></li>
+ <li><a href="#index_h"><span>h</span></a></li>
+ <li><a href="#index_i"><span>i</span></a></li>
+ <li><a href="#index_k"><span>k</span></a></li>
+ <li><a href="#index_l"><span>l</span></a></li>
+ <li><a href="#index_n"><span>n</span></a></li>
+ <li><a href="#index_o"><span>o</span></a></li>
+ <li><a href="#index_p"><span>p</span></a></li>
+ <li><a href="#index_q"><span>q</span></a></li>
+ <li><a href="#index_s"><span>s</span></a></li>
+ <li><a href="#index_t"><span>t</span></a></li>
+ <li><a href="#index_u"><span>u</span></a></li>
+ <li><a href="#index_v"><span>v</span></a></li>
+ <li><a href="#index_w"><span>w</span></a></li>
+ <li><a href="#index_y"><span>y</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+
+<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
+<li>ac_scale
+: <a class="el" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">th_quant_info</a>
+</li>
+<li>aspect_denominator
+: <a class="el" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">th_info</a>
+, <a class="el" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">theora_info</a>
+</li>
+<li>aspect_numerator
+: <a class="el" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">th_info</a>
+, <a class="el" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_b">- b -</a></h3><ul>
+<li>base_matrices
+: <a class="el" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">th_quant_ranges</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
+<li>codec_setup
+: <a class="el" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">theora_info</a>
+</li>
+<li>colorspace
+: <a class="el" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">th_info</a>
+, <a class="el" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">theora_info</a>
+</li>
+<li>comment_lengths
+: <a class="el" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">th_comment</a>
+, <a class="el" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">theora_comment</a>
+</li>
+<li>comments
+: <a class="el" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">th_comment</a>
+, <a class="el" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">theora_comment</a>
+</li>
+<li>ctx
+: <a class="el" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">th_stripe_callback</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_d">- d -</a></h3><ul>
+<li>data
+: <a class="el" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">th_img_plane</a>
+</li>
+<li>dc_scale
+: <a class="el" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">th_quant_info</a>
+</li>
+<li>dropframes_p
+: <a class="el" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_f">- f -</a></h3><ul>
+<li>fps_denominator
+: <a class="el" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">th_info</a>
+, <a class="el" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">theora_info</a>
+</li>
+<li>fps_numerator
+: <a class="el" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">theora_info</a>
+, <a class="el" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">th_info</a>
+</li>
+<li>frame_height
+: <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">th_info</a>
+, <a class="el" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">theora_info</a>
+</li>
+<li>frame_width
+: <a class="el" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">theora_info</a>
+, <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">th_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_g">- g -</a></h3><ul>
+<li>granulepos
+: <a class="el" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">theora_state</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
+<li>height
+: <a class="el" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">th_img_plane</a>
+, <a class="el" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
+<li>i
+: <a class="el" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">theora_state</a>
+</li>
+<li>internal_decode
+: <a class="el" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">theora_state</a>
+</li>
+<li>internal_encode
+: <a class="el" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">theora_state</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_k">- k -</a></h3><ul>
+<li>keyframe_auto_p
+: <a class="el" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">theora_info</a>
+</li>
+<li>keyframe_auto_threshold
+: <a class="el" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">theora_info</a>
+</li>
+<li>keyframe_data_target_bitrate
+: <a class="el" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">theora_info</a>
+</li>
+<li>keyframe_frequency
+: <a class="el" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">theora_info</a>
+</li>
+<li>keyframe_frequency_force
+: <a class="el" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">theora_info</a>
+</li>
+<li>keyframe_granule_shift
+: <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">th_info</a>
+</li>
+<li>keyframe_mindistance
+: <a class="el" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
+<li>loop_filter_limits
+: <a class="el" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">th_quant_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_n">- n -</a></h3><ul>
+<li>nbits
+: <a class="el" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">th_huff_code</a>
+</li>
+<li>noise_sensitivity
+: <a class="el" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">theora_info</a>
+</li>
+<li>nranges
+: <a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">th_quant_ranges</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
+<li>offset_x
+: <a class="el" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">theora_info</a>
+</li>
+<li>offset_y
+: <a class="el" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
+<li>pattern
+: <a class="el" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">th_huff_code</a>
+</li>
+<li>pic_height
+: <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">th_info</a>
+</li>
+<li>pic_width
+: <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">th_info</a>
+</li>
+<li>pic_x
+: <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">th_info</a>
+</li>
+<li>pic_y
+: <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">th_info</a>
+</li>
+<li>pixel_fmt
+: <a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">th_info</a>
+</li>
+<li>pixelformat
+: <a class="el" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_q">- q -</a></h3><ul>
+<li>qi_ranges
+: <a class="el" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">th_quant_info</a>
+</li>
+<li>quality
+: <a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">th_info</a>
+, <a class="el" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">theora_info</a>
+</li>
+<li>quick_p
+: <a class="el" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_s">- s -</a></h3><ul>
+<li>sharpness
+: <a class="el" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">theora_info</a>
+</li>
+<li>sizes
+: <a class="el" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">th_quant_ranges</a>
+</li>
+<li>stride
+: <a class="el" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">th_img_plane</a>
+</li>
+<li>stripe_decoded
+: <a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">th_stripe_callback</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
+<li>target_bitrate
+: <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">th_info</a>
+, <a class="el" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_u">- u -</a></h3><ul>
+<li>u
+: <a class="el" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">yuv_buffer</a>
+</li>
+<li>user_comments
+: <a class="el" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">th_comment</a>
+, <a class="el" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">theora_comment</a>
+</li>
+<li>uv_height
+: <a class="el" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">yuv_buffer</a>
+</li>
+<li>uv_stride
+: <a class="el" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">yuv_buffer</a>
+</li>
+<li>uv_width
+: <a class="el" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">yuv_buffer</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_v">- v -</a></h3><ul>
+<li>v
+: <a class="el" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">yuv_buffer</a>
+</li>
+<li>vendor
+: <a class="el" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">th_comment</a>
+, <a class="el" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">theora_comment</a>
+</li>
+<li>version_major
+: <a class="el" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">th_info</a>
+, <a class="el" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">theora_info</a>
+</li>
+<li>version_minor
+: <a class="el" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">theora_info</a>
+, <a class="el" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">th_info</a>
+</li>
+<li>version_subminor
+: <a class="el" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">theora_info</a>
+, <a class="el" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">th_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_w">- w -</a></h3><ul>
+<li>width
+: <a class="el" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">th_img_plane</a>
+, <a class="el" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_y">- y -</a></h3><ul>
+<li>y
+: <a class="el" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">yuv_buffer</a>
+</li>
+<li>y_height
+: <a class="el" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">yuv_buffer</a>
+</li>
+<li>y_stride
+: <a class="el" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">yuv_buffer</a>
+</li>
+<li>y_width
+: <a class="el" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">yuv_buffer</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/globals.html b/doc/libtheora/html/globals.html
new file mode 100644
index 0000000..42641e0
--- /dev/null
+++ b/doc/libtheora/html/globals.html
@@ -0,0 +1,464 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="#index__"><span>_</span></a></li>
+ <li><a href="#index_o"><span>o</span></a></li>
+ <li><a href="#index_t"><span>t</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+
+<h3><a class="anchor" id="index__">- _ -</a></h3><ul>
+<li>_O_THEORA_CODEC_H_
+: <a class="el" href="codec_8h.html#a15352a6a862d25ab00a8f06ea65ee75b">codec.h</a>
+</li>
+<li>_O_THEORA_THEORADEC_H_
+: <a class="el" href="theoradec_8h.html#a0d78767a326c34dbf84d5b845cba7b4a">theoradec.h</a>
+</li>
+<li>_O_THEORA_THEORAENC_H_
+: <a class="el" href="theoraenc_8h.html#ab915dd90f069a2431454fd62365e9381">theoraenc.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
+<li>OC_BADHEADER
+: <a class="el" href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba">theora.h</a>
+</li>
+<li>OC_BADPACKET
+: <a class="el" href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1">theora.h</a>
+</li>
+<li>OC_CS_ITU_REC_470BG
+: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">theora.h</a>
+</li>
+<li>OC_CS_ITU_REC_470M
+: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">theora.h</a>
+</li>
+<li>OC_CS_NSPACES
+: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">theora.h</a>
+</li>
+<li>OC_CS_UNSPECIFIED
+: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">theora.h</a>
+</li>
+<li>OC_DISABLED
+: <a class="el" href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1">theora.h</a>
+</li>
+<li>OC_DUPFRAME
+: <a class="el" href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb">theora.h</a>
+</li>
+<li>OC_EINVAL
+: <a class="el" href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55">theora.h</a>
+</li>
+<li>OC_FAULT
+: <a class="el" href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e">theora.h</a>
+</li>
+<li>OC_IMPL
+: <a class="el" href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c">theora.h</a>
+</li>
+<li>OC_NEWPACKET
+: <a class="el" href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496">theora.h</a>
+</li>
+<li>OC_NOTFORMAT
+: <a class="el" href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad">theora.h</a>
+</li>
+<li>OC_PF_420
+: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">theora.h</a>
+</li>
+<li>OC_PF_422
+: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">theora.h</a>
+</li>
+<li>OC_PF_444
+: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">theora.h</a>
+</li>
+<li>OC_PF_RSVD
+: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">theora.h</a>
+</li>
+<li>OC_VERSION
+: <a class="el" href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b">theora.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
+<li>th_colorspace
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">codec.h</a>
+</li>
+<li>th_comment_add()
+: <a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272">codec.h</a>
+</li>
+<li>th_comment_add_tag()
+: <a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf">codec.h</a>
+</li>
+<li>th_comment_clear()
+: <a class="el" href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3">codec.h</a>
+</li>
+<li>th_comment_init()
+: <a class="el" href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09">codec.h</a>
+</li>
+<li>th_comment_query()
+: <a class="el" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa">codec.h</a>
+</li>
+<li>th_comment_query_count()
+: <a class="el" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc">codec.h</a>
+</li>
+<li>TH_CS_ITU_REC_470BG
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">codec.h</a>
+</li>
+<li>TH_CS_ITU_REC_470M
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">codec.h</a>
+</li>
+<li>TH_CS_NSPACES
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">codec.h</a>
+</li>
+<li>TH_CS_UNSPECIFIED
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">codec.h</a>
+</li>
+<li>th_dec_ctx
+: <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">theoradec.h</a>
+</li>
+<li>TH_DECCTL_GET_PPLEVEL_MAX
+: <a class="el" href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07">theora.h</a>
+, <a class="el" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_GRANPOS
+: <a class="el" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">theoradec.h</a>
+, <a class="el" href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5">theora.h</a>
+</li>
+<li>TH_DECCTL_SET_PPLEVEL
+: <a class="el" href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d">theora.h</a>
+, <a class="el" href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_STRIPE_CB
+: <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_TELEMETRY_BITS
+: <a class="el" href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_TELEMETRY_MBMODE
+: <a class="el" href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_TELEMETRY_MV
+: <a class="el" href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_TELEMETRY_QI
+: <a class="el" href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">theoradec.h</a>
+</li>
+<li>th_decode_alloc()
+: <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e">theoradec.h</a>
+</li>
+<li>th_decode_ctl()
+: <a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1">theoradec.h</a>
+</li>
+<li>th_decode_free()
+: <a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0">theoradec.h</a>
+</li>
+<li>th_decode_headerin()
+: <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50">theoradec.h</a>
+</li>
+<li>th_decode_packetin()
+: <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb">theoradec.h</a>
+</li>
+<li>th_decode_ycbcr_out()
+: <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb">theoradec.h</a>
+</li>
+<li>TH_DUPFRAME
+: <a class="el" href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">codec.h</a>
+</li>
+<li>TH_EBADHEADER
+: <a class="el" href="codec_8h.html#af00f7ecc5242d12a717202537324a510">codec.h</a>
+</li>
+<li>TH_EBADPACKET
+: <a class="el" href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">codec.h</a>
+</li>
+<li>TH_EFAULT
+: <a class="el" href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">codec.h</a>
+</li>
+<li>TH_EIMPL
+: <a class="el" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">codec.h</a>
+</li>
+<li>TH_EINVAL
+: <a class="el" href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">codec.h</a>
+</li>
+<li>th_enc_ctx
+: <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_2PASS_IN
+: <a class="el" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_2PASS_OUT
+: <a class="el" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_GET_SPLEVEL
+: <a class="el" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_GET_SPLEVEL_MAX
+: <a class="el" href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783">theora.h</a>
+, <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_BITRATE
+: <a class="el" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_DUP_COUNT
+: <a class="el" href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_HUFFMAN_CODES
+: <a class="el" href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE
+: <a class="el" href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49">theora.h</a>
+, <a class="el" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_QUALITY
+: <a class="el" href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_QUANT_PARAMS
+: <a class="el" href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c">theora.h</a>
+, <a class="el" href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_RATE_BUFFER
+: <a class="el" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_RATE_FLAGS
+: <a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_SPLEVEL
+: <a class="el" href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6">theora.h</a>
+, <a class="el" href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_VP3_COMPATIBLE
+: <a class="el" href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8">theora.h</a>
+, <a class="el" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">theoraenc.h</a>
+</li>
+<li>th_encode_alloc()
+: <a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7">theoraenc.h</a>
+</li>
+<li>th_encode_ctl()
+: <a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9">theoraenc.h</a>
+</li>
+<li>th_encode_flushheader()
+: <a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408">theoraenc.h</a>
+</li>
+<li>th_encode_free()
+: <a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680">theoraenc.h</a>
+</li>
+<li>th_encode_packetout()
+: <a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b">theoraenc.h</a>
+</li>
+<li>th_encode_ycbcr_in()
+: <a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750">theoraenc.h</a>
+</li>
+<li>TH_ENOTFORMAT
+: <a class="el" href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">codec.h</a>
+</li>
+<li>TH_EVERSION
+: <a class="el" href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">codec.h</a>
+</li>
+<li>th_granule_frame()
+: <a class="el" href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd">codec.h</a>
+</li>
+<li>th_granule_time()
+: <a class="el" href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432">codec.h</a>
+</li>
+<li>th_info_clear()
+: <a class="el" href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c">codec.h</a>
+</li>
+<li>th_info_init()
+: <a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926">codec.h</a>
+</li>
+<li>TH_NDCT_TOKENS
+: <a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">codec.h</a>
+</li>
+<li>TH_NHUFFMAN_TABLES
+: <a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">codec.h</a>
+</li>
+<li>th_packet_isheader()
+: <a class="el" href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1">codec.h</a>
+</li>
+<li>th_packet_iskeyframe()
+: <a class="el" href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a">codec.h</a>
+</li>
+<li>TH_PF_420
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">codec.h</a>
+</li>
+<li>TH_PF_422
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">codec.h</a>
+</li>
+<li>TH_PF_444
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">codec.h</a>
+</li>
+<li>TH_PF_NFORMATS
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">codec.h</a>
+</li>
+<li>TH_PF_RSVD
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">codec.h</a>
+</li>
+<li>th_pixel_fmt
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">codec.h</a>
+</li>
+<li>th_quant_base
+: <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">codec.h</a>
+</li>
+<li>TH_RATECTL_CAP_OVERFLOW
+: <a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">theoraenc.h</a>
+</li>
+<li>TH_RATECTL_CAP_UNDERFLOW
+: <a class="el" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">theoraenc.h</a>
+</li>
+<li>TH_RATECTL_DROP_FRAMES
+: <a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">theoraenc.h</a>
+</li>
+<li>th_setup_free()
+: <a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27">theoradec.h</a>
+</li>
+<li>th_setup_info
+: <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">theoradec.h</a>
+</li>
+<li>th_stripe_decoded_func
+: <a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">theoradec.h</a>
+</li>
+<li>th_version_number()
+: <a class="el" href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b">codec.h</a>
+</li>
+<li>th_version_string()
+: <a class="el" href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc">codec.h</a>
+</li>
+<li>TH_VP31_HUFF_CODES
+: <a class="el" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">theoraenc.h</a>
+</li>
+<li>TH_VP31_QUANT_INFO
+: <a class="el" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">theoraenc.h</a>
+</li>
+<li>th_ycbcr_buffer
+: <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">codec.h</a>
+</li>
+<li>theora_clear()
+: <a class="el" href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb">theora.h</a>
+</li>
+<li>theora_colorspace
+: <a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora.h</a>
+</li>
+<li>theora_comment_add()
+: <a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4">theora.h</a>
+</li>
+<li>theora_comment_add_tag()
+: <a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92">theora.h</a>
+</li>
+<li>theora_comment_clear()
+: <a class="el" href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f">theora.h</a>
+</li>
+<li>theora_comment_init()
+: <a class="el" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0">theora.h</a>
+</li>
+<li>theora_comment_query()
+: <a class="el" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc">theora.h</a>
+</li>
+<li>theora_comment_query_count()
+: <a class="el" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b">theora.h</a>
+</li>
+<li>theora_control()
+: <a class="el" href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9">theora.h</a>
+</li>
+<li>theora_decode_header()
+: <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82">theora.h</a>
+</li>
+<li>theora_decode_init()
+: <a class="el" href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c">theora.h</a>
+</li>
+<li>theora_decode_packetin()
+: <a class="el" href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975">theora.h</a>
+</li>
+<li>theora_decode_YUVout()
+: <a class="el" href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa">theora.h</a>
+</li>
+<li>theora_encode_comment()
+: <a class="el" href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a">theora.h</a>
+</li>
+<li>theora_encode_header()
+: <a class="el" href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be">theora.h</a>
+</li>
+<li>theora_encode_init()
+: <a class="el" href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a">theora.h</a>
+</li>
+<li>theora_encode_packetout()
+: <a class="el" href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3">theora.h</a>
+</li>
+<li>theora_encode_tables()
+: <a class="el" href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2">theora.h</a>
+</li>
+<li>theora_encode_YUVin()
+: <a class="el" href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078">theora.h</a>
+</li>
+<li>theora_granule_frame()
+: <a class="el" href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269">theora.h</a>
+</li>
+<li>theora_granule_shift()
+: <a class="el" href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02">theora.h</a>
+</li>
+<li>theora_granule_time()
+: <a class="el" href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6">theora.h</a>
+</li>
+<li>theora_info_clear()
+: <a class="el" href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d">theora.h</a>
+</li>
+<li>theora_info_init()
+: <a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90">theora.h</a>
+</li>
+<li>theora_packet_isheader()
+: <a class="el" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b">theora.h</a>
+</li>
+<li>theora_packet_iskeyframe()
+: <a class="el" href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2">theora.h</a>
+</li>
+<li>theora_pixelformat
+: <a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora.h</a>
+</li>
+<li>theora_version_number()
+: <a class="el" href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8">theora.h</a>
+</li>
+<li>theora_version_string()
+: <a class="el" href="group__oldfuncs.html#ga5a3da8fd262a60f055f96536eec06df2">theora.h</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/globals_defs.html b/doc/libtheora/html/globals_defs.html
new file mode 100644
index 0000000..c29f5cd
--- /dev/null
+++ b/doc/libtheora/html/globals_defs.html
@@ -0,0 +1,215 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li class="current"><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="#index__"><span>_</span></a></li>
+ <li><a href="#index_o"><span>o</span></a></li>
+ <li><a href="#index_t"><span>t</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+
+<h3><a class="anchor" id="index__">- _ -</a></h3><ul>
+<li>_O_THEORA_CODEC_H_
+: <a class="el" href="codec_8h.html#a15352a6a862d25ab00a8f06ea65ee75b">codec.h</a>
+</li>
+<li>_O_THEORA_THEORADEC_H_
+: <a class="el" href="theoradec_8h.html#a0d78767a326c34dbf84d5b845cba7b4a">theoradec.h</a>
+</li>
+<li>_O_THEORA_THEORAENC_H_
+: <a class="el" href="theoraenc_8h.html#ab915dd90f069a2431454fd62365e9381">theoraenc.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
+<li>OC_BADHEADER
+: <a class="el" href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba">theora.h</a>
+</li>
+<li>OC_BADPACKET
+: <a class="el" href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1">theora.h</a>
+</li>
+<li>OC_DISABLED
+: <a class="el" href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1">theora.h</a>
+</li>
+<li>OC_DUPFRAME
+: <a class="el" href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb">theora.h</a>
+</li>
+<li>OC_EINVAL
+: <a class="el" href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55">theora.h</a>
+</li>
+<li>OC_FAULT
+: <a class="el" href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e">theora.h</a>
+</li>
+<li>OC_IMPL
+: <a class="el" href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c">theora.h</a>
+</li>
+<li>OC_NEWPACKET
+: <a class="el" href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496">theora.h</a>
+</li>
+<li>OC_NOTFORMAT
+: <a class="el" href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad">theora.h</a>
+</li>
+<li>OC_VERSION
+: <a class="el" href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b">theora.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
+<li>TH_DECCTL_GET_PPLEVEL_MAX
+: <a class="el" href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07">theora.h</a>
+, <a class="el" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_GRANPOS
+: <a class="el" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">theoradec.h</a>
+, <a class="el" href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5">theora.h</a>
+</li>
+<li>TH_DECCTL_SET_PPLEVEL
+: <a class="el" href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d">theora.h</a>
+, <a class="el" href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_STRIPE_CB
+: <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_TELEMETRY_BITS
+: <a class="el" href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_TELEMETRY_MBMODE
+: <a class="el" href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_TELEMETRY_MV
+: <a class="el" href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_TELEMETRY_QI
+: <a class="el" href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">theoradec.h</a>
+</li>
+<li>TH_DUPFRAME
+: <a class="el" href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">codec.h</a>
+</li>
+<li>TH_EBADHEADER
+: <a class="el" href="codec_8h.html#af00f7ecc5242d12a717202537324a510">codec.h</a>
+</li>
+<li>TH_EBADPACKET
+: <a class="el" href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">codec.h</a>
+</li>
+<li>TH_EFAULT
+: <a class="el" href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">codec.h</a>
+</li>
+<li>TH_EIMPL
+: <a class="el" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">codec.h</a>
+</li>
+<li>TH_EINVAL
+: <a class="el" href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">codec.h</a>
+</li>
+<li>TH_ENCCTL_2PASS_IN
+: <a class="el" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_2PASS_OUT
+: <a class="el" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_GET_SPLEVEL
+: <a class="el" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_GET_SPLEVEL_MAX
+: <a class="el" href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783">theora.h</a>
+, <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_BITRATE
+: <a class="el" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_DUP_COUNT
+: <a class="el" href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_HUFFMAN_CODES
+: <a class="el" href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE
+: <a class="el" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">theoraenc.h</a>
+, <a class="el" href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49">theora.h</a>
+</li>
+<li>TH_ENCCTL_SET_QUALITY
+: <a class="el" href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_QUANT_PARAMS
+: <a class="el" href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c">theora.h</a>
+, <a class="el" href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_RATE_BUFFER
+: <a class="el" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_RATE_FLAGS
+: <a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_SPLEVEL
+: <a class="el" href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6">theora.h</a>
+, <a class="el" href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_VP3_COMPATIBLE
+: <a class="el" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">theoraenc.h</a>
+, <a class="el" href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8">theora.h</a>
+</li>
+<li>TH_ENOTFORMAT
+: <a class="el" href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">codec.h</a>
+</li>
+<li>TH_EVERSION
+: <a class="el" href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">codec.h</a>
+</li>
+<li>TH_NDCT_TOKENS
+: <a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">codec.h</a>
+</li>
+<li>TH_NHUFFMAN_TABLES
+: <a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">codec.h</a>
+</li>
+<li>TH_RATECTL_CAP_OVERFLOW
+: <a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">theoraenc.h</a>
+</li>
+<li>TH_RATECTL_CAP_UNDERFLOW
+: <a class="el" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">theoraenc.h</a>
+</li>
+<li>TH_RATECTL_DROP_FRAMES
+: <a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">theoraenc.h</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/globals_enum.html b/doc/libtheora/html/globals_enum.html
new file mode 100644
index 0000000..87193ee
--- /dev/null
+++ b/doc/libtheora/html/globals_enum.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;<ul>
+<li>th_colorspace
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">codec.h</a>
+</li>
+<li>th_pixel_fmt
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">codec.h</a>
+</li>
+<li>theora_colorspace
+: <a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora.h</a>
+</li>
+<li>theora_pixelformat
+: <a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora.h</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/globals_eval.html b/doc/libtheora/html/globals_eval.html
new file mode 100644
index 0000000..b145d87
--- /dev/null
+++ b/doc/libtheora/html/globals_eval.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li class="current"><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;<ul>
+<li>OC_CS_ITU_REC_470BG
+: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">theora.h</a>
+</li>
+<li>OC_CS_ITU_REC_470M
+: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">theora.h</a>
+</li>
+<li>OC_CS_NSPACES
+: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">theora.h</a>
+</li>
+<li>OC_CS_UNSPECIFIED
+: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">theora.h</a>
+</li>
+<li>OC_PF_420
+: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">theora.h</a>
+</li>
+<li>OC_PF_422
+: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">theora.h</a>
+</li>
+<li>OC_PF_444
+: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">theora.h</a>
+</li>
+<li>OC_PF_RSVD
+: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">theora.h</a>
+</li>
+<li>TH_CS_ITU_REC_470BG
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">codec.h</a>
+</li>
+<li>TH_CS_ITU_REC_470M
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">codec.h</a>
+</li>
+<li>TH_CS_NSPACES
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">codec.h</a>
+</li>
+<li>TH_CS_UNSPECIFIED
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">codec.h</a>
+</li>
+<li>TH_PF_420
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">codec.h</a>
+</li>
+<li>TH_PF_422
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">codec.h</a>
+</li>
+<li>TH_PF_444
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">codec.h</a>
+</li>
+<li>TH_PF_NFORMATS
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">codec.h</a>
+</li>
+<li>TH_PF_RSVD
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">codec.h</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/globals_func.html b/doc/libtheora/html/globals_func.html
new file mode 100644
index 0000000..98219c4
--- /dev/null
+++ b/doc/libtheora/html/globals_func.html
@@ -0,0 +1,215 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="#index_t"><span>t</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;
+
+<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
+<li>th_comment_add()
+: <a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272">codec.h</a>
+</li>
+<li>th_comment_add_tag()
+: <a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf">codec.h</a>
+</li>
+<li>th_comment_clear()
+: <a class="el" href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3">codec.h</a>
+</li>
+<li>th_comment_init()
+: <a class="el" href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09">codec.h</a>
+</li>
+<li>th_comment_query()
+: <a class="el" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa">codec.h</a>
+</li>
+<li>th_comment_query_count()
+: <a class="el" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc">codec.h</a>
+</li>
+<li>th_decode_alloc()
+: <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e">theoradec.h</a>
+</li>
+<li>th_decode_ctl()
+: <a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1">theoradec.h</a>
+</li>
+<li>th_decode_free()
+: <a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0">theoradec.h</a>
+</li>
+<li>th_decode_headerin()
+: <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50">theoradec.h</a>
+</li>
+<li>th_decode_packetin()
+: <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb">theoradec.h</a>
+</li>
+<li>th_decode_ycbcr_out()
+: <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb">theoradec.h</a>
+</li>
+<li>th_encode_alloc()
+: <a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7">theoraenc.h</a>
+</li>
+<li>th_encode_ctl()
+: <a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9">theoraenc.h</a>
+</li>
+<li>th_encode_flushheader()
+: <a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408">theoraenc.h</a>
+</li>
+<li>th_encode_free()
+: <a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680">theoraenc.h</a>
+</li>
+<li>th_encode_packetout()
+: <a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b">theoraenc.h</a>
+</li>
+<li>th_encode_ycbcr_in()
+: <a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750">theoraenc.h</a>
+</li>
+<li>th_granule_frame()
+: <a class="el" href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd">codec.h</a>
+</li>
+<li>th_granule_time()
+: <a class="el" href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432">codec.h</a>
+</li>
+<li>th_info_clear()
+: <a class="el" href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c">codec.h</a>
+</li>
+<li>th_info_init()
+: <a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926">codec.h</a>
+</li>
+<li>th_packet_isheader()
+: <a class="el" href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1">codec.h</a>
+</li>
+<li>th_packet_iskeyframe()
+: <a class="el" href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a">codec.h</a>
+</li>
+<li>th_setup_free()
+: <a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27">theoradec.h</a>
+</li>
+<li>th_version_number()
+: <a class="el" href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b">codec.h</a>
+</li>
+<li>th_version_string()
+: <a class="el" href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc">codec.h</a>
+</li>
+<li>theora_clear()
+: <a class="el" href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb">theora.h</a>
+</li>
+<li>theora_comment_add()
+: <a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4">theora.h</a>
+</li>
+<li>theora_comment_add_tag()
+: <a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92">theora.h</a>
+</li>
+<li>theora_comment_clear()
+: <a class="el" href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f">theora.h</a>
+</li>
+<li>theora_comment_init()
+: <a class="el" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0">theora.h</a>
+</li>
+<li>theora_comment_query()
+: <a class="el" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc">theora.h</a>
+</li>
+<li>theora_comment_query_count()
+: <a class="el" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b">theora.h</a>
+</li>
+<li>theora_control()
+: <a class="el" href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9">theora.h</a>
+</li>
+<li>theora_decode_header()
+: <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82">theora.h</a>
+</li>
+<li>theora_decode_init()
+: <a class="el" href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c">theora.h</a>
+</li>
+<li>theora_decode_packetin()
+: <a class="el" href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975">theora.h</a>
+</li>
+<li>theora_decode_YUVout()
+: <a class="el" href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa">theora.h</a>
+</li>
+<li>theora_encode_comment()
+: <a class="el" href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a">theora.h</a>
+</li>
+<li>theora_encode_header()
+: <a class="el" href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be">theora.h</a>
+</li>
+<li>theora_encode_init()
+: <a class="el" href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a">theora.h</a>
+</li>
+<li>theora_encode_packetout()
+: <a class="el" href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3">theora.h</a>
+</li>
+<li>theora_encode_tables()
+: <a class="el" href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2">theora.h</a>
+</li>
+<li>theora_encode_YUVin()
+: <a class="el" href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078">theora.h</a>
+</li>
+<li>theora_granule_frame()
+: <a class="el" href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269">theora.h</a>
+</li>
+<li>theora_granule_shift()
+: <a class="el" href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02">theora.h</a>
+</li>
+<li>theora_granule_time()
+: <a class="el" href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6">theora.h</a>
+</li>
+<li>theora_info_clear()
+: <a class="el" href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d">theora.h</a>
+</li>
+<li>theora_info_init()
+: <a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90">theora.h</a>
+</li>
+<li>theora_packet_isheader()
+: <a class="el" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b">theora.h</a>
+</li>
+<li>theora_packet_iskeyframe()
+: <a class="el" href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2">theora.h</a>
+</li>
+<li>theora_version_number()
+: <a class="el" href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8">theora.h</a>
+</li>
+<li>theora_version_string()
+: <a class="el" href="group__oldfuncs.html#ga5a3da8fd262a60f055f96536eec06df2">theora.h</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/globals_type.html b/doc/libtheora/html/globals_type.html
new file mode 100644
index 0000000..d40bf26
--- /dev/null
+++ b/doc/libtheora/html/globals_type.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;<ul>
+<li>th_dec_ctx
+: <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">theoradec.h</a>
+</li>
+<li>th_enc_ctx
+: <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">theoraenc.h</a>
+</li>
+<li>th_quant_base
+: <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">codec.h</a>
+</li>
+<li>th_setup_info
+: <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">theoradec.h</a>
+</li>
+<li>th_stripe_decoded_func
+: <a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">theoradec.h</a>
+</li>
+<li>th_ycbcr_buffer
+: <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">codec.h</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/globals_vars.html b/doc/libtheora/html/globals_vars.html
new file mode 100644
index 0000000..9fffd53
--- /dev/null
+++ b/doc/libtheora/html/globals_vars.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li class="current"><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+&nbsp;<ul>
+<li>TH_VP31_HUFF_CODES
+: <a class="el" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">theoraenc.h</a>
+</li>
+<li>TH_VP31_QUANT_INFO
+: <a class="el" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">theoraenc.h</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/group__basefuncs.html b/doc/libtheora/html/group__basefuncs.html
new file mode 100644
index 0000000..08d4162
--- /dev/null
+++ b/doc/libtheora/html/group__basefuncs.html
@@ -0,0 +1,542 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Functions Shared by Encode and Decode</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Functions Shared by Encode and Decode</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Basic shared functions</h2></td></tr>
+<tr><td colspan="2"><p><a class="anchor" id="amgrpb625c22fa07613c734f71c378fe32d7a"></a> </p>
+<br/><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc">th_version_string</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves a human-readable string to identify the library vendor and version. <a href="#ga04846066738d9f2024fc9961162b2dbc"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b">th_version_number</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the library version number. <a href="#gab723a75c0f95b3eb817f7f769846016b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd">th_granule_frame</a> (void *_encdec, ogg_int64_t _granpos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a granule position to an absolute frame index, starting at <code>0</code>. <a href="#ga95b10e76fc4c05d0240ea2dfd9fd62bd"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432">th_granule_time</a> (void *_encdec, ogg_int64_t _granpos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a granule position to an absolute time in seconds. <a href="#ga707e1e281de788af0df39ef00f3fb432"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1">th_packet_isheader</a> (ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines whether a Theora packet is a header or not. <a href="#ga02f3f38261a9b39452d8a5e6f8737cc1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a">th_packet_iskeyframe</a> (ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines whether a theora packet is a key frame or not. <a href="#gafe95cfd06f0fef413266c9168a66248a"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Functions for manipulating header data</h2></td></tr>
+<tr><td colspan="2"><p><a class="anchor" id="amgrp14ef5f819e97c870c128539ed1f334e3"></a> </p>
+<br/><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926">th_info_init</a> (<a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure. <a href="#ga430d9c605816a6ca0bdce3a0b965b926"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c">th_info_clear</a> (<a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clears a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure. <a href="#gab3d6441ab4a4969859ef5fd78a9e3c1c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09">th_comment_init</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. <a href="#ga6c8ab25988e7ea9d7b1e31a54cf58f09"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272">th_comment_add</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_comment)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. <a href="#ga19a1f7b8032db957df151a34e5ac9272"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf">th_comment_add_tag</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag, char *_val)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. <a href="#ga6c5edc201ca220a30787ca6c1ddcaeaf"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa">th_comment_query</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag, int _count)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up a comment value by its tag. <a href="#ga33c8b4f57a03217636d704c2ebb211fa"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc">th_comment_query_count</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up the number of instances of a tag. <a href="#ga81d518dc4426f63ceaedcbe2668679fc"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3">th_comment_clear</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clears a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. <a href="#gae736c1afa514947a3feb223143af95e3"></a><br/></td></tr>
+</table>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="ga19a1f7b8032db957df151a34e5ac9272"></a><!-- doxytag: member="codec.h::th_comment_add" ref="ga19a1f7b8032db957df151a34e5ac9272" args="(th_comment *_tc, char *_comment)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void th_comment_add </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
+ <td class="paramname"> <em>_tc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>_comment</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Neither <a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272" title="Add a comment to an initialized th_comment structure.">th_comment_add()</a> nor <a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf" title="Add a comment to an initialized th_comment structure.">th_comment_add_tag()</a> support comments containing null values, although the bitstream format does support them. To add such comments you will need to manipulate the <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure directly. </dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>The <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> struct to add the comment to. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_comment</em>&nbsp;</td><td>Must be a null-terminated UTF-8 string containing the comment in "TAG=the value" form. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga6c5edc201ca220a30787ca6c1ddcaeaf"></a><!-- doxytag: member="codec.h::th_comment_add_tag" ref="ga6c5edc201ca220a30787ca6c1ddcaeaf" args="(th_comment *_tc, char *_tag, char *_val)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void th_comment_add_tag </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
+ <td class="paramname"> <em>_tc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>_tag</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>_val</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Neither <a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272" title="Add a comment to an initialized th_comment structure.">th_comment_add()</a> nor <a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf" title="Add a comment to an initialized th_comment structure.">th_comment_add_tag()</a> support comments containing null values, although the bitstream format does support them. To add such comments you will need to manipulate the <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure directly. </dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>The <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> struct to add the comment to. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_tag</em>&nbsp;</td><td>A null-terminated string containing the tag associated with the comment. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_val</em>&nbsp;</td><td>The corresponding value as a null-terminated string. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gae736c1afa514947a3feb223143af95e3"></a><!-- doxytag: member="codec.h::th_comment_clear" ref="gae736c1afa514947a3feb223143af95e3" args="(th_comment *_tc)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void th_comment_clear </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
+ <td class="paramname"> <em>_tc</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Clears a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
+<p>This should be called on a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure after it is no longer needed. It will free all memory used by the structure members. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>The <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> struct to clear. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga6c8ab25988e7ea9d7b1e31a54cf58f09"></a><!-- doxytag: member="codec.h::th_comment_init" ref="ga6c8ab25988e7ea9d7b1e31a54cf58f09" args="(th_comment *_tc)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void th_comment_init </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
+ <td class="paramname"> <em>_tc</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Initialize a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
+<p>This should be called on a freshly allocated <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure before attempting to use it. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>The <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> struct to initialize. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga33c8b4f57a03217636d704c2ebb211fa"></a><!-- doxytag: member="codec.h::th_comment_query" ref="ga33c8b4f57a03217636d704c2ebb211fa" args="(th_comment *_tc, char *_tag, int _count)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">char* th_comment_query </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
+ <td class="paramname"> <em>_tc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>_tag</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>_count</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Look up a comment value by its tag. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>An initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_tag</em>&nbsp;</td><td>The tag to look up. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_count</em>&nbsp;</td><td>The instance of the tag. The same tag can appear multiple times, each with a distinct value, so an index is required to retrieve them all. The order in which these values appear is significant and should be preserved. Use <a class="el" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc" title="Look up the number of instances of a tag.">th_comment_query_count()</a> to get the legal range for the <em>_count</em> parameter. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A pointer to the queried tag's value. This points directly to data in the <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. It should not be modified or freed by the application, and modifications to the structure may invalidate the pointer. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>If no matching tag is found. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga81d518dc4426f63ceaedcbe2668679fc"></a><!-- doxytag: member="codec.h::th_comment_query_count" ref="ga81d518dc4426f63ceaedcbe2668679fc" args="(th_comment *_tc, char *_tag)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int th_comment_query_count </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
+ <td class="paramname"> <em>_tc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>_tag</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Look up the number of instances of a tag. </p>
+<p>Call this first when querying for a specific tag and then iterate over the number of instances with separate calls to <a class="el" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa" title="Look up a comment value by its tag.">th_comment_query()</a> to retrieve all the values for that tag in order. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>An initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_tag</em>&nbsp;</td><td>The tag to look up. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The number on instances of this particular tag. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga95b10e76fc4c05d0240ea2dfd9fd62bd"></a><!-- doxytag: member="codec.h::th_granule_frame" ref="ga95b10e76fc4c05d0240ea2dfd9fd62bd" args="(void *_encdec, ogg_int64_t _granpos)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_int64_t th_granule_frame </td>
+ <td>(</td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>_encdec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ogg_int64_t&nbsp;</td>
+ <td class="paramname"> <em>_granpos</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Converts a granule position to an absolute frame index, starting at <code>0</code>. </p>
+<p>The granule position is interpreted in the context of a given <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> or <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle (either will suffice). </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_encdec</em>&nbsp;</td><td>A previously allocated <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> or <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_granpos</em>&nbsp;</td><td>The granule position to convert. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The absolute frame index corresponding to <em>_granpos</em>. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The given granule position was invalid (i.e. negative). </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga707e1e281de788af0df39ef00f3fb432"></a><!-- doxytag: member="codec.h::th_granule_time" ref="ga707e1e281de788af0df39ef00f3fb432" args="(void *_encdec, ogg_int64_t _granpos)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double th_granule_time </td>
+ <td>(</td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>_encdec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ogg_int64_t&nbsp;</td>
+ <td class="paramname"> <em>_granpos</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Converts a granule position to an absolute time in seconds. </p>
+<p>The granule position is interpreted in the context of a given <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> or <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle (either will suffice). </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_encdec</em>&nbsp;</td><td>A previously allocated <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> or <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_granpos</em>&nbsp;</td><td>The granule position to convert. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The absolute time in seconds corresponding to <em>_granpos</em>. This is the "end time" for the frame, or the latest time it should be displayed. It is not the presentation time. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The given granule position was invalid (i.e. negative). </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gab3d6441ab4a4969859ef5fd78a9e3c1c"></a><!-- doxytag: member="codec.h::th_info_clear" ref="gab3d6441ab4a4969859ef5fd78a9e3c1c" args="(th_info *_info)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void th_info_clear </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
+ <td class="paramname"> <em>_info</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Clears a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure. </p>
+<p>This should be called on a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure after it is no longer needed. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_info</em>&nbsp;</td><td>The <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct to clear. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga430d9c605816a6ca0bdce3a0b965b926"></a><!-- doxytag: member="codec.h::th_info_init" ref="ga430d9c605816a6ca0bdce3a0b965b926" args="(th_info *_info)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void th_info_init </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
+ <td class="paramname"> <em>_info</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Initializes a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure. </p>
+<p>This should be called on a freshly allocated <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure before attempting to use it. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_info</em>&nbsp;</td><td>The <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct to initialize. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga02f3f38261a9b39452d8a5e6f8737cc1"></a><!-- doxytag: member="codec.h::th_packet_isheader" ref="ga02f3f38261a9b39452d8a5e6f8737cc1" args="(ogg_packet *_op)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int th_packet_isheader </td>
+ <td>(</td>
+ <td class="paramtype">ogg_packet *&nbsp;</td>
+ <td class="paramname"> <em>_op</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Determines whether a Theora packet is a header or not. </p>
+<p>This function does no verification beyond checking the packet type bit, so it should not be used for bitstream identification; use <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> for that. As per the Theora specification, an empty (0-byte) packet is treated as a data packet (a delta frame with no coded blocks). </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> containing encoded Theora data. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>The packet is a header packet </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The packet is a video data packet. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gafe95cfd06f0fef413266c9168a66248a"></a><!-- doxytag: member="codec.h::th_packet_iskeyframe" ref="gafe95cfd06f0fef413266c9168a66248a" args="(ogg_packet *_op)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int th_packet_iskeyframe </td>
+ <td>(</td>
+ <td class="paramtype">ogg_packet *&nbsp;</td>
+ <td class="paramname"> <em>_op</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Determines whether a theora packet is a key frame or not. </p>
+<p>This function does no verification beyond checking the packet type and key frame bits, so it should not be used for bitstream identification; use <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> for that. As per the Theora specification, an empty (0-byte) packet is treated as a delta frame (with no coded blocks). </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> containing encoded Theora data. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>The packet contains a key frame. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The packet contains a delta frame. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The packet is not a video data packet. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gab723a75c0f95b3eb817f7f769846016b"></a><!-- doxytag: member="codec.h::th_version_number" ref="gab723a75c0f95b3eb817f7f769846016b" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t th_version_number </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Retrieves the library version number. </p>
+<p>This is the highest bitstream version that the encoder library will produce, or that the decoder library can decode. This number is composed of a 16-bit major version, 8-bit minor version and 8 bit sub-version, composed as follows: </p>
+<div class="fragment"><pre class="fragment"> (VERSION_MAJOR&lt;&lt;16)+(VERSION_MINOR&lt;&lt;8)+(VERSION_SUBMINOR)
+</pre></div> <dl class="return"><dt><b>Returns:</b></dt><dd>the version number. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga04846066738d9f2024fc9961162b2dbc"></a><!-- doxytag: member="codec.h::th_version_string" ref="ga04846066738d9f2024fc9961162b2dbc" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* th_version_string </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Retrieves a human-readable string to identify the library vendor and version. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>the version string. </dd></dl>
+
+</div>
+</div>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/group__decfuncs.html b/doc/libtheora/html/group__decfuncs.html
new file mode 100644
index 0000000..d9e658e
--- /dev/null
+++ b/doc/libtheora/html/group__decfuncs.html
@@ -0,0 +1,367 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Functions for Decoding</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Functions for Decoding</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Functions for decoding</h2></td></tr>
+<tr><td colspan="2"><p><a class="anchor" id="amgrp9d29c94aa62f20426aa5ff062c7daedd"></a>You must link to <code>libtheoradec</code> if you use any of the functions in this section.</p>
+<p>The functions are listed in the order they are used in a typical decode. The basic steps are:</p>
+<ul>
+<li>Parse the header packets by repeatedly calling <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>.</li>
+<li>Allocate a <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle with <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e" title="Allocates a decoder instance.">th_decode_alloc()</a>.</li>
+<li>Call <a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27" title="Releases all storage used for the decoder setup information.">th_setup_free()</a> to free any memory used for codec setup information.</li>
+<li>Perform any additional decoder configuration with <a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1" title="Decoder control function.">th_decode_ctl()</a>.</li>
+<li>For each video data packet:<ul>
+<li>Submit the packet to the decoder via <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>.</li>
+<li>Retrieve the uncompressed video data via <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a>.</li>
+</ul>
+</li>
+<li>Call <a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0" title="Frees an allocated decoder instance.">th_decode_free()</a> to release all decoder memory. </li>
+</ul>
+<br/><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50">th_decode_headerin</a> (<a class="el" href="structth__info.html">th_info</a> *_info, <a class="el" href="structth__comment.html">th_comment</a> *_tc, <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> **_setup, ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decodes the header packets of a Theora stream. <a href="#ga006d01d36fbe64768c571e6a12b7fc50"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e">th_decode_alloc</a> (const <a class="el" href="structth__info.html">th_info</a> *_info, const <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *_setup)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocates a decoder instance. <a href="#ga0ef07a9a97849054aa606c595a2d807e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27">th_setup_free</a> (<a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *_setup)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Releases all storage used for the decoder setup information. <a href="#gadef55431b68aaa59d0d7b32b2f118f27"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1">th_decode_ctl</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, int _req, void *_buf, size_t _buf_sz)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decoder control function. <a href="#ga1a8051958d75b1012573b6e3c8f670e1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb">th_decode_packetin</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, const ogg_packet *_op, ogg_int64_t *_granpos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submits a packet containing encoded video data to the decoder. <a href="#ga31c814bf09b2232aff69c57ae20f04eb"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb">th_decode_ycbcr_out</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _ycbcr)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Outputs the next available frame of decoded Y'CbCr data. <a href="#gaa9cc8af63fa8540e0fc95572f259cdcb"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0">th_decode_free</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Frees an allocated decoder instance. <a href="#gafb6684ad8ba507b71112bc9de148e7d0"></a><br/></td></tr>
+</table>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="ga0ef07a9a97849054aa606c595a2d807e"></a><!-- doxytag: member="theoradec.h::th_decode_alloc" ref="ga0ef07a9a97849054aa606c595a2d807e" args="(const th_info *_info, const th_setup_info *_setup)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a>* th_decode_alloc </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
+ <td class="paramname"> <em>_info</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *&nbsp;</td>
+ <td class="paramname"> <em>_setup</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Allocates a decoder instance. </p>
+<p><b>Security Warning:</b> The Theora format supports very large frame sizes, potentially even larger than the address space of a 32-bit machine, and creating a decoder context allocates the space for several frames of data. If the allocation fails here, your program will crash, possibly at some future point because the OS kernel returned a valid memory range and will only fail when it tries to map the pages in it the first time they are used. Even if it succeeds, you may experience a denial of service if the frame size is large enough to cause excessive paging. If you are integrating libtheora in a larger application where such things are undesirable, it is highly recommended that you check the frame size in <em>_info</em> before calling this function and refuse to decode streams where it is larger than some reasonable maximum. libtheora will not check this for you, because there may be machines that can handle such streams and applications that wish to. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_info</em>&nbsp;</td><td>A <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct filled via <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_setup</em>&nbsp;</td><td>A <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> handle returned via <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The initialized <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>If the decoding parameters were invalid. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga1a8051958d75b1012573b6e3c8f670e1"></a><!-- doxytag: member="theoradec.h::th_decode_ctl" ref="ga1a8051958d75b1012573b6e3c8f670e1" args="(th_dec_ctx *_dec, int _req, void *_buf, size_t _buf_sz)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int th_decode_ctl </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td>
+ <td class="paramname"> <em>_dec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>_req</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>_buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>_buf_sz</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Decoder control function. </p>
+<p>This is used to provide advanced control of the decoding process. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_dec</em>&nbsp;</td><td>A <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_req</em>&nbsp;</td><td>The control code to process. See <a class="el" href="theoradec_8h.html#decctlcodes">the list of available control codes</a> for details. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_buf</em>&nbsp;</td><td>The parameters for this control code. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_buf_sz</em>&nbsp;</td><td>The size of the parameter buffer. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gafb6684ad8ba507b71112bc9de148e7d0"></a><!-- doxytag: member="theoradec.h::th_decode_free" ref="gafb6684ad8ba507b71112bc9de148e7d0" args="(th_dec_ctx *_dec)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void th_decode_free </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td>
+ <td class="paramname"> <em>_dec</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Frees an allocated decoder instance. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_dec</em>&nbsp;</td><td>A <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga006d01d36fbe64768c571e6a12b7fc50"></a><!-- doxytag: member="theoradec.h::th_decode_headerin" ref="ga006d01d36fbe64768c571e6a12b7fc50" args="(th_info *_info, th_comment *_tc, th_setup_info **_setup, ogg_packet *_op)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int th_decode_headerin </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
+ <td class="paramname"> <em>_info</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
+ <td class="paramname"> <em>_tc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> **&nbsp;</td>
+ <td class="paramname"> <em>_setup</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ogg_packet *&nbsp;</td>
+ <td class="paramname"> <em>_op</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Decodes the header packets of a Theora stream. </p>
+<p>This should be called on the initial packets of the stream, in succession, until it returns <code>0</code>, indicating that all headers have been processed, or an error is encountered. At least three header packets are required, and additional optional header packets may follow. This can be used on the first packet of any logical stream to determine if that stream is a Theora stream. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_info</em>&nbsp;</td><td>A <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure to fill in. This must have been previously initialized with <a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926" title="Initializes a th_info structure.">th_info_init()</a>. The application may immediately begin using the contents of this structure after the first header is decoded, though it must continue to be passed in on all subsequent calls. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>A <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure to fill in. The application may immediately begin using the contents of this structure after the second header is decoded, though it must continue to be passed in on all subsequent calls. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_setup</em>&nbsp;</td><td>Returns a pointer to additional, private setup information needed by the decoder. The contents of this pointer must be initialized to <code>NULL</code> on the first call, and the returned value must continue to be passed in on all subsequent calls. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> structure which contains one of the initial packets of an Ogg logical stream. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A positive value indicates that a Theora header was successfully processed. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The first video data packet was encountered after all required header packets were parsed. The packet just passed in on this call should be saved and fed to <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a> to begin decoding video data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td>One of <em>_info</em>, <em>_tc</em>, or <em>_setup</em> was <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EBADHEADER</em>&nbsp;</td><td><em>_op</em> was <code>NULL</code>, the packet was not the next header packet in the expected sequence, or the format of the header data was invalid. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EVERSION</em>&nbsp;</td><td>The packet data was a Theora info header, but for a bitstream version not decodable with this version of <code>libtheoradec</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_ENOTFORMAT</em>&nbsp;</td><td>The packet was not a Theora header. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga31c814bf09b2232aff69c57ae20f04eb"></a><!-- doxytag: member="theoradec.h::th_decode_packetin" ref="ga31c814bf09b2232aff69c57ae20f04eb" args="(th_dec_ctx *_dec, const ogg_packet *_op, ogg_int64_t *_granpos)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int th_decode_packetin </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td>
+ <td class="paramname"> <em>_dec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const ogg_packet *&nbsp;</td>
+ <td class="paramname"> <em>_op</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ogg_int64_t *&nbsp;</td>
+ <td class="paramname"> <em>_granpos</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Submits a packet containing encoded video data to the decoder. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_dec</em>&nbsp;</td><td>A <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> containing encoded video data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_granpos</em>&nbsp;</td><td>Returns the granule position of the decoded packet. If non-<code>NULL</code>, the granule position for this specific packet is stored in this location. This is computed incrementally from previously decoded packets. After a seek, the correct granule position must be set via <a class="el" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5" title="Sets the granule position.">TH_DECCTL_SET_GRANPOS</a> for this to work properly. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success. A new decoded frame can be retrieved by calling <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_DUPFRAME</em>&nbsp;</td><td>The packet represented a dropped (0-byte) frame. The player can skip the call to <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a>, as the contents of the decoded frame buffer have not changed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec</em> or <em>_op</em> was <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EBADPACKET</em>&nbsp;</td><td><em>_op</em> does not contain encoded video data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>The video data uses bitstream features which this library does not support. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gaa9cc8af63fa8540e0fc95572f259cdcb"></a><!-- doxytag: member="theoradec.h::th_decode_ycbcr_out" ref="gaa9cc8af63fa8540e0fc95572f259cdcb" args="(th_dec_ctx *_dec, th_ycbcr_buffer _ycbcr)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int th_decode_ycbcr_out </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td>
+ <td class="paramname"> <em>_dec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a>&nbsp;</td>
+ <td class="paramname"> <em>_ycbcr</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Outputs the next available frame of decoded Y'CbCr data. </p>
+<p>If a striped decode callback has been set with <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a>, then the application does not need to call this function. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_dec</em>&nbsp;</td><td>A <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_ycbcr</em>&nbsp;</td><td>A video buffer structure to fill in. <code>libtheoradec</code> will fill in all the members of this structure, including the pointers to the uncompressed video data. The memory for this video data is owned by <code>libtheoradec</code>. It may be freed or overwritten without notification when subsequent frames are decoded. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec</em> or <em>_ycbcr</em> was <code>NULL</code>. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gadef55431b68aaa59d0d7b32b2f118f27"></a><!-- doxytag: member="theoradec.h::th_setup_free" ref="gadef55431b68aaa59d0d7b32b2f118f27" args="(th_setup_info *_setup)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void th_setup_free </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *&nbsp;</td>
+ <td class="paramname"> <em>_setup</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Releases all storage used for the decoder setup information. </p>
+<p>This should be called after you no longer want to create any decoders for a stream whose headers you have parsed with <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_setup</em>&nbsp;</td><td>The setup information to free. This can safely be <code>NULL</code>. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/group__encfuncs.html b/doc/libtheora/html/group__encfuncs.html
new file mode 100644
index 0000000..a080c39
--- /dev/null
+++ b/doc/libtheora/html/group__encfuncs.html
@@ -0,0 +1,317 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Functions for Encoding</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Functions for Encoding</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Functions for encoding</h2></td></tr>
+<tr><td colspan="2"><p><a class="anchor" id="amgrpc58fb8743a7ca83eb895d57e29e032c8"></a>You must link to <code>libtheoraenc</code> and <code>libtheoradec</code> if you use any of the functions in this section.</p>
+<p>The functions are listed in the order they are used in a typical encode. The basic steps are:</p>
+<ul>
+<li>Fill in a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure with details on the format of the video you wish to encode.</li>
+<li>Allocate a <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle with <a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7" title="Allocates an encoder instance.">th_encode_alloc()</a>.</li>
+<li>Perform any additional encoder configuration required with <a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9" title="Encoder control function.">th_encode_ctl()</a>.</li>
+<li>Repeatedly call <a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408" title="Outputs the next header packet.">th_encode_flushheader()</a> to retrieve all the header packets.</li>
+<li>For each uncompressed frame:<ul>
+<li>Submit the uncompressed frame via <a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750" title="Submits an uncompressed frame to the encoder.">th_encode_ycbcr_in()</a></li>
+<li>Repeatedly call <a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b" title="Retrieves encoded video data packets.">th_encode_packetout()</a> to retrieve any video data packets that are ready.</li>
+</ul>
+</li>
+<li>Call <a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680" title="Frees an allocated encoder instance.">th_encode_free()</a> to release all encoder memory. </li>
+</ul>
+<br/><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7">th_encode_alloc</a> (const <a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocates an encoder instance. <a href="#gaa91e47bc9dd5f6ee52045bd7b815e5a7"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9">th_encode_ctl</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, int _req, void *_buf, size_t _buf_sz)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Encoder control function. <a href="#ga3a427f6514dfdc01ea72172c469d51d9"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408">th_encode_flushheader</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, <a class="el" href="structth__comment.html">th_comment</a> *_comments, ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Outputs the next header packet. <a href="#ga9439d61b566039d194ff782681fbc408"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750">th_encode_ycbcr_in</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _ycbcr)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submits an uncompressed frame to the encoder. <a href="#gadbe7dd66b411c2d61ab8153c15308750"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b">th_encode_packetout</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, int _last, ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves encoded video data packets. <a href="#ga96d8ac1dda53187455352f99bbb5b04b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680">th_encode_free</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Frees an allocated encoder instance. <a href="#ga36b23d216532231925c4107894204680"></a><br/></td></tr>
+</table>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="gaa91e47bc9dd5f6ee52045bd7b815e5a7"></a><!-- doxytag: member="theoraenc.h::th_encode_alloc" ref="gaa91e47bc9dd5f6ee52045bd7b815e5a7" args="(const th_info *_info)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a>* th_encode_alloc </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
+ <td class="paramname"> <em>_info</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Allocates an encoder instance. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_info</em>&nbsp;</td><td>A <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct filled with the desired encoding parameters. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The initialized <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>If the encoding parameters were invalid. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga3a427f6514dfdc01ea72172c469d51d9"></a><!-- doxytag: member="theoraenc.h::th_encode_ctl" ref="ga3a427f6514dfdc01ea72172c469d51d9" args="(th_enc_ctx *_enc, int _req, void *_buf, size_t _buf_sz)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int th_encode_ctl </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td>
+ <td class="paramname"> <em>_enc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>_req</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>_buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>_buf_sz</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Encoder control function. </p>
+<p>This is used to provide advanced control the encoding process. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_enc</em>&nbsp;</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_req</em>&nbsp;</td><td>The control code to process. See <a class="el" href="theoraenc_8h.html#encctlcodes">the list of available control codes</a> for details. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_buf</em>&nbsp;</td><td>The parameters for this control code. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_buf_sz</em>&nbsp;</td><td>The size of the parameter buffer. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga9439d61b566039d194ff782681fbc408"></a><!-- doxytag: member="theoraenc.h::th_encode_flushheader" ref="ga9439d61b566039d194ff782681fbc408" args="(th_enc_ctx *_enc, th_comment *_comments, ogg_packet *_op)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int th_encode_flushheader </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td>
+ <td class="paramname"> <em>_enc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
+ <td class="paramname"> <em>_comments</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ogg_packet *&nbsp;</td>
+ <td class="paramname"> <em>_op</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Outputs the next header packet. </p>
+<p>This should be called repeatedly after encoder initialization until it returns 0 in order to get all of the header packets, in order, before encoding actual video data. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_enc</em>&nbsp;</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_comments</em>&nbsp;</td><td>The metadata to place in the comment header, when it is encoded. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> structure to fill. All of the elements of this structure will be set, including a pointer to the header data. The memory for the header data is owned by <code>libtheoraenc</code>, and may be invalidated when the next encoder function is called. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A positive value indicates that a header packet was successfully produced. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>No packet was produced, and no more header packets remain. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em>, <em>_comments</em>, or <em>_op</em> was <code>NULL</code>. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga36b23d216532231925c4107894204680"></a><!-- doxytag: member="theoraenc.h::th_encode_free" ref="ga36b23d216532231925c4107894204680" args="(th_enc_ctx *_enc)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void th_encode_free </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td>
+ <td class="paramname"> <em>_enc</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Frees an allocated encoder instance. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_enc</em>&nbsp;</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga96d8ac1dda53187455352f99bbb5b04b"></a><!-- doxytag: member="theoraenc.h::th_encode_packetout" ref="ga96d8ac1dda53187455352f99bbb5b04b" args="(th_enc_ctx *_enc, int _last, ogg_packet *_op)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int th_encode_packetout </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td>
+ <td class="paramname"> <em>_enc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>_last</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ogg_packet *&nbsp;</td>
+ <td class="paramname"> <em>_op</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Retrieves encoded video data packets. </p>
+<p>This should be called repeatedly after each frame is submitted to flush any encoded packets, until it returns 0. The encoder will not buffer these packets as subsequent frames are compressed, so a failure to do so will result in lost video data. </p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Currently the encoder operates in a one-frame-in, one-packet-out manner. However, this may be changed in the future. </dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_enc</em>&nbsp;</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_last</em>&nbsp;</td><td>Set this flag to a non-zero value if no more uncompressed frames will be submitted. This ensures that a proper EOS flag is set on the last packet. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> structure to fill. All of the elements of this structure will be set, including a pointer to the video data. The memory for the video data is owned by <code>libtheoraenc</code>, and may be invalidated when the next encoder function is called. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A positive value indicates that a video data packet was successfully produced. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>No packet was produced, and no more encoded video data remains. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_op</em> was <code>NULL</code>. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gadbe7dd66b411c2d61ab8153c15308750"></a><!-- doxytag: member="theoraenc.h::th_encode_ycbcr_in" ref="gadbe7dd66b411c2d61ab8153c15308750" args="(th_enc_ctx *_enc, th_ycbcr_buffer _ycbcr)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int th_encode_ycbcr_in </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td>
+ <td class="paramname"> <em>_enc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a>&nbsp;</td>
+ <td class="paramname"> <em>_ycbcr</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Submits an uncompressed frame to the encoder. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_enc</em>&nbsp;</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_ycbcr</em>&nbsp;</td><td>A buffer of Y'CbCr data to encode. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_ycbcr</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>The buffer size does not match the frame size the encoder was initialized with, or encoding has already completed. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/group__oldfuncs.html b/doc/libtheora/html/group__oldfuncs.html
new file mode 100644
index 0000000..89cbd91
--- /dev/null
+++ b/doc/libtheora/html/group__oldfuncs.html
@@ -0,0 +1,1606 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Legacy pre-1.0 C API</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Legacy pre-1.0 C API</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html">yuv_buffer</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A YUV buffer for passing uncompressed frames to and from the codec. <a href="structyuv__buffer.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html">theora_info</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Theora bitstream info. <a href="structtheora__info.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html">theora_state</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Codec internal state and context. <a href="structtheora__state.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html">theora_comment</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comment header metadata. <a href="structtheora__comment.html#_details">More...</a><br/></td></tr>
+<tr><td colspan="2"><h2>Files</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html">theora.h</a></td></tr>
+
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>The libtheora pre-1.0 legacy C API. </p>
+<br/></td></tr>
+</p>
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e">OC_FAULT</a>&nbsp;&nbsp;&nbsp;-1</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">General failure. <a href="#gaa4370e13ed3aea6441ccf69dcab2506e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55">OC_EINVAL</a>&nbsp;&nbsp;&nbsp;-10</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Library encountered invalid internal data. <a href="#ga43d15091b1a03a734a124e9a04d3be55"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1">OC_DISABLED</a>&nbsp;&nbsp;&nbsp;-11</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Requested action is disabled. <a href="#ga38b9fa0af856d5930c534db26e2ac2d1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba">OC_BADHEADER</a>&nbsp;&nbsp;&nbsp;-20</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Header packet was corrupt/invalid. <a href="#ga809cbad2eb36be17a235a3cadfb737ba"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad">OC_NOTFORMAT</a>&nbsp;&nbsp;&nbsp;-21</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is not a theora packet. <a href="#ga9558d6d9eacd2273c8da27f945d725ad"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b">OC_VERSION</a>&nbsp;&nbsp;&nbsp;-22</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bitstream version is not handled. <a href="#ga4611cfd61160405721d1e2ab0ec2564b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c">OC_IMPL</a>&nbsp;&nbsp;&nbsp;-23</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Feature or action not implemented. <a href="#ga895dc2597b3bf9c97bf7701c6eff5b0c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1">OC_BADPACKET</a>&nbsp;&nbsp;&nbsp;-24</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is corrupt. <a href="#ga117774c062a63dfad2a5b4d092fa2bb1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496">OC_NEWPACKET</a>&nbsp;&nbsp;&nbsp;-25</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is an (ignorable) unhandled extension. <a href="#ga60be4dc92c933eac3542bce3ce076496"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb">OC_DUPFRAME</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is a dropped frame. <a href="#ga84a8d2f5080ad62b415a4e7551941cbb"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a> { <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">OC_CS_UNSPECIFIED</a>,
+<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">OC_CS_ITU_REC_470M</a>,
+<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">OC_CS_ITU_REC_470BG</a>,
+<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">OC_CS_NSPACES</a>
+ }</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>A Colorspace. </p>
+ <a href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a> { <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">OC_PF_420</a>,
+<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">OC_PF_RSVD</a>,
+<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">OC_PF_422</a>,
+<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">OC_PF_444</a>
+ }</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>A Chroma subsampling. </p>
+ <a href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">More...</a><br/></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5a3da8fd262a60f055f96536eec06df2">theora_version_string</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve a human-readable string to identify the encoder vendor and version. <a href="#ga5a3da8fd262a60f055f96536eec06df2"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8">theora_version_number</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve a 32-bit version number. <a href="#gad181f4b19d455dcc2bef2533530b84c8"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a">theora_encode_init</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structtheora__info.html">theora_info</a> *ti)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize the theora encoder. <a href="#ga0f7ad4d4b2343278cb4ba8fb2bd5109a"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078">theora_encode_YUVin</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, <a class="el" href="structyuv__buffer.html">yuv_buffer</a> *yuv)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submit a YUV buffer to the theora encoder. <a href="#gac0d33d896ca70cedfc94c5986d947078"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3">theora_encode_packetout</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, int last_p, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request the next packet of encoded video. <a href="#ga5f4929677a735bc2198c2309d235f1b3"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be">theora_encode_header</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a packet containing the initial header. <a href="#ga451feb58d6bde726edbae193689887be"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a">theora_encode_comment</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a comment header packet from provided metadata. <a href="#ga45e8db0713eaaca0f1144f3724cb834a"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2">theora_encode_tables</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a packet containing the codebook tables for the stream. <a href="#ga5085baf20855b283fa01fc948505d9d2"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82">theora_decode_header</a> (<a class="el" href="structtheora__info.html">theora_info</a> *ci, <a class="el" href="structtheora__comment.html">theora_comment</a> *cc, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables. <a href="#ga02915e63c1bd733ee291f577a8b75a82"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c">theora_decode_init</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle for decoding. <a href="#ga264907c66003799ff77ecbd09eb33d2c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975">theora_decode_packetin</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Input a packet containing encoded data into the theora decoder. <a href="#gaa65a9e53b46fd54ab344bd599fa96975"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa">theora_decode_YUVout</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structyuv__buffer.html">yuv_buffer</a> *yuv)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Output the next available frame of decoded YUV data. <a href="#ga09d47c80e1e94bff0a46a496816b8daa"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b">theora_packet_isheader</a> (ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> for that. <a href="#gab969f9d0407683f0e5abe73d0839a25b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2">theora_packet_iskeyframe</a> (ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report whether a theora packet is a keyframe or not. <a href="#ga39ccc8f847a748d7074c926b4fdd12b2"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02">theora_granule_shift</a> (<a class="el" href="structtheora__info.html">theora_info</a> *ti)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report the granulepos shift radix. <a href="#gacd9360e6a47139c761002410af457a02"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269">theora_granule_frame</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_int64_t granulepos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a granulepos to an absolute frame index, starting at 0. <a href="#ga7bfa3ceb2fb4b41a282456c56e1dd269"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6">theora_granule_time</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_int64_t granulepos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a granulepos to absolute time in seconds. <a href="#ga4376358b12b9fa23ce6fe21cb5c65ac6"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90">theora_info_init</a> (<a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure. <a href="#ga3091c87d48f1faba018c5956379a6d90"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d">theora_info_clear</a> (<a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure. <a href="#gaba7022d58edbc4825cacad03f68b3e0d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb">theora_clear</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free all internal data associated with a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle. <a href="#gab252d5d81b925136dda72e8f1c09c5eb"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0">theora_comment_init</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. <a href="#ga811b92785df3bdbbebb3de612d9d6ce0"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4">theora_comment_add</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *comment)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. <a href="#ga650642ed23894e41109bbc42ec393ed4"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92">theora_comment_add_tag</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag, char *value)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. <a href="#ga339bd80b5bf4bb168b7052d8ec0b5a92"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc">theora_comment_query</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag, int count)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up a comment value by tag. <a href="#ga4361f6001abb5c83c36a2ddfb648a8dc"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b">theora_comment_query_count</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up the number of instances of a tag. <a href="#ga10f66a3c752442a3e0c0098e0f88df8b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f">theora_comment_clear</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> struct so that it can be freed. <a href="#ga04c07c2eefba3a433e43f9fbde14719f"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9">theora_control</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, int req, void *buf, size_t buf_sz)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Encoder control function. <a href="#ga186773db3bc8cd550047e7df1b2ba2c9"></a><br/></td></tr>
+<tr><td colspan="2"><h2>theora_control() codes</h2></td></tr>
+<tr><td colspan="2"><p><a class="anchor" id="amgrp13fd61986cff4566fe89a40e30b74ad9"></a> </p>
+<br/><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07">TH_DECCTL_GET_PPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the maximum post-processing level. <a href="#gab31f251c9319f2140d247585d30b3d07"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d">TH_DECCTL_SET_PPLEVEL</a>&nbsp;&nbsp;&nbsp;(3)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the post-processing level. <a href="#ga87774c35e1a755a84e2d705b38ebef0d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49">TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</a>&nbsp;&nbsp;&nbsp;(4)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the maximum distance between key frames. <a href="#ga27e755e15b4b5604c54974b304037a49"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5">TH_DECCTL_SET_GRANPOS</a>&nbsp;&nbsp;&nbsp;(5)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the granule position. <a href="#ga1e870c654d35394f0d490045df04e0f5"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c">TH_ENCCTL_SET_QUANT_PARAMS</a>&nbsp;&nbsp;&nbsp;(2)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the quantization parameters to use. <a href="#ga3befcdd66678f8d27034f9c4b16d1b9c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8">TH_ENCCTL_SET_VP3_COMPATIBLE</a>&nbsp;&nbsp;&nbsp;(10)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disables any encoder features that would prevent lossless transcoding back to VP3. <a href="#ga382d685a39a34d8e6ba76b00d804efd8"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783">TH_ENCCTL_GET_SPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(12)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the maximum speed level. <a href="#ga9baf5bdd206e80c78a8fd44687e89783"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6">TH_ENCCTL_SET_SPLEVEL</a>&nbsp;&nbsp;&nbsp;(14)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the speed level. <a href="#gabd9fbcb6a25a77d991d3620164fe59d6"></a><br/></td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ga809cbad2eb36be17a235a3cadfb737ba"></a><!-- doxytag: member="theora.h::OC_BADHEADER" ref="ga809cbad2eb36be17a235a3cadfb737ba" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define OC_BADHEADER&nbsp;&nbsp;&nbsp;-20</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Header packet was corrupt/invalid. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga117774c062a63dfad2a5b4d092fa2bb1"></a><!-- doxytag: member="theora.h::OC_BADPACKET" ref="ga117774c062a63dfad2a5b4d092fa2bb1" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define OC_BADPACKET&nbsp;&nbsp;&nbsp;-24</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Packet is corrupt. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga38b9fa0af856d5930c534db26e2ac2d1"></a><!-- doxytag: member="theora.h::OC_DISABLED" ref="ga38b9fa0af856d5930c534db26e2ac2d1" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define OC_DISABLED&nbsp;&nbsp;&nbsp;-11</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Requested action is disabled. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga84a8d2f5080ad62b415a4e7551941cbb"></a><!-- doxytag: member="theora.h::OC_DUPFRAME" ref="ga84a8d2f5080ad62b415a4e7551941cbb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define OC_DUPFRAME&nbsp;&nbsp;&nbsp;1</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Packet is a dropped frame. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga43d15091b1a03a734a124e9a04d3be55"></a><!-- doxytag: member="theora.h::OC_EINVAL" ref="ga43d15091b1a03a734a124e9a04d3be55" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define OC_EINVAL&nbsp;&nbsp;&nbsp;-10</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Library encountered invalid internal data. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaa4370e13ed3aea6441ccf69dcab2506e"></a><!-- doxytag: member="theora.h::OC_FAULT" ref="gaa4370e13ed3aea6441ccf69dcab2506e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define OC_FAULT&nbsp;&nbsp;&nbsp;-1</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>General failure. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga895dc2597b3bf9c97bf7701c6eff5b0c"></a><!-- doxytag: member="theora.h::OC_IMPL" ref="ga895dc2597b3bf9c97bf7701c6eff5b0c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define OC_IMPL&nbsp;&nbsp;&nbsp;-23</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Feature or action not implemented. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga60be4dc92c933eac3542bce3ce076496"></a><!-- doxytag: member="theora.h::OC_NEWPACKET" ref="ga60be4dc92c933eac3542bce3ce076496" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define OC_NEWPACKET&nbsp;&nbsp;&nbsp;-25</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Packet is an (ignorable) unhandled extension. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga9558d6d9eacd2273c8da27f945d725ad"></a><!-- doxytag: member="theora.h::OC_NOTFORMAT" ref="ga9558d6d9eacd2273c8da27f945d725ad" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define OC_NOTFORMAT&nbsp;&nbsp;&nbsp;-21</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Packet is not a theora packet. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga4611cfd61160405721d1e2ab0ec2564b"></a><!-- doxytag: member="theora.h::OC_VERSION" ref="ga4611cfd61160405721d1e2ab0ec2564b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define OC_VERSION&nbsp;&nbsp;&nbsp;-22</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Bitstream version is not handled. </p>
+
+</div>
+</div>
+<a class="anchor" id="gab31f251c9319f2140d247585d30b3d07"></a><!-- doxytag: member="theora.h::TH_DECCTL_GET_PPLEVEL_MAX" ref="gab31f251c9319f2140d247585d30b3d07" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_DECCTL_GET_PPLEVEL_MAX&nbsp;&nbsp;&nbsp;(1)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Get the maximum post-processing level. </p>
+<p>The decoder supports a post-processing filter that can improve the appearance of the decoded images. This returns the highest level setting for this post-processor, corresponding to maximum improvement and computational expense. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga1e870c654d35394f0d490045df04e0f5"></a><!-- doxytag: member="theora.h::TH_DECCTL_SET_GRANPOS" ref="ga1e870c654d35394f0d490045df04e0f5" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_DECCTL_SET_GRANPOS&nbsp;&nbsp;&nbsp;(5)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Set the granule position. </p>
+<p>Call this after a seek, to update the internal granulepos in the decoder, to insure that subsequent frames are marked properly. If you track timestamps yourself and do not use the granule postion returned by the decoder, then you do not need to use this control. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga87774c35e1a755a84e2d705b38ebef0d"></a><!-- doxytag: member="theora.h::TH_DECCTL_SET_PPLEVEL" ref="ga87774c35e1a755a84e2d705b38ebef0d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_DECCTL_SET_PPLEVEL&nbsp;&nbsp;&nbsp;(3)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Set the post-processing level. </p>
+<p>Sets the level of post-processing to use when decoding the compressed stream. This must be a value between zero (off) and the maximum returned by TH_DECCTL_GET_PPLEVEL_MAX. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga9baf5bdd206e80c78a8fd44687e89783"></a><!-- doxytag: member="theora.h::TH_ENCCTL_GET_SPLEVEL_MAX" ref="ga9baf5bdd206e80c78a8fd44687e89783" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_GET_SPLEVEL_MAX&nbsp;&nbsp;&nbsp;(12)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Gets the maximum speed level. </p>
+<p>Higher speed levels favor quicker encoding over better quality per bit. Depending on the encoding mode, and the internal algorithms used, quality may actually improve, but in this case bitrate will also likely increase. In any case, overall rate/distortion performance will probably decrease. The maximum value, and the meaning of each value, may change depending on the current encoding mode (VBR vs. CQI, etc.).</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td>int: The maximum encoding speed level. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>OC_FAULT</em>&nbsp;</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> or <em>buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td><em>buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>OC_IMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga27e755e15b4b5604c54974b304037a49"></a><!-- doxytag: member="theora.h::TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE" ref="ga27e755e15b4b5604c54974b304037a49" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE&nbsp;&nbsp;&nbsp;(4)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the maximum distance between key frames. </p>
+<p>This can be changed during an encode, but will be bounded by <code>1&lt;&lt;<a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position...">th_info::keyframe_granule_shift</a></code>. If it is set before encoding begins, <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position...">th_info::keyframe_granule_shift</a> will be enlarged appropriately.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td><code>ogg_uint32_t</code>: The maximum distance between key frames. </td></tr>
+ <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td><code>ogg_uint32_t</code>: The actual maximum distance set. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>OC_FAULT</em>&nbsp;</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> or <em>buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td><em>buf_sz</em> is not <code>sizeof(ogg_uint32_t)</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>OC_IMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga3befcdd66678f8d27034f9c4b16d1b9c"></a><!-- doxytag: member="theora.h::TH_ENCCTL_SET_QUANT_PARAMS" ref="ga3befcdd66678f8d27034f9c4b16d1b9c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_SET_QUANT_PARAMS&nbsp;&nbsp;&nbsp;(2)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the quantization parameters to use. </p>
+<p><a class="anchor" id="encctlcodes_old"></a> The parameters are copied, not stored by reference, so they can be freed after this call. <code>NULL</code> may be specified to revert to the default parameters.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td><a class="el" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>OC_FAULT</em>&nbsp;</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td>Encoding has already begun, the quantization parameters are not acceptable to this version of the encoder, <em>buf</em> is <code>NULL</code> and <em>buf_sz</em> is not zero, or <em>buf</em> is non-<code>NULL</code> and <em>buf_sz</em> is not <code>sizeof(<a class="el" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a>)</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>OC_IMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gabd9fbcb6a25a77d991d3620164fe59d6"></a><!-- doxytag: member="theora.h::TH_ENCCTL_SET_SPLEVEL" ref="gabd9fbcb6a25a77d991d3620164fe59d6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_SET_SPLEVEL&nbsp;&nbsp;&nbsp;(14)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the speed level. </p>
+<p>By default a speed value of 1 is used.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td>int: The new encoding speed level. 0 is slowest, larger values use less CPU. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>OC_FAULT</em>&nbsp;</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> or <em>buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td><em>buf_sz</em> is not <code>sizeof(int)</code>, or the encoding speed level is out of bounds. The maximum encoding speed level may be implementation- and encoding mode-specific, and can be obtained via <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783" title="Gets the maximum speed level.">TH_ENCCTL_GET_SPLEVEL_MAX</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>OC_IMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga382d685a39a34d8e6ba76b00d804efd8"></a><!-- doxytag: member="theora.h::TH_ENCCTL_SET_VP3_COMPATIBLE" ref="ga382d685a39a34d8e6ba76b00d804efd8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_SET_VP3_COMPATIBLE&nbsp;&nbsp;&nbsp;(10)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Disables any encoder features that would prevent lossless transcoding back to VP3. </p>
+<p>This primarily means disabling block-level QI values and not using 4MV mode when any of the luma blocks in a macro block are not coded. It also includes using the VP3 quantization tables and Huffman codes; if you set them explicitly after calling this function, the resulting stream will not be VP3-compatible. If you enable VP3-compatibility when encoding 4:2:2 or 4:4:4 source material, or when using a picture region smaller than the full frame (e.g. a non-multiple-of-16 width or height), then non-VP3 bitstream features will still be disabled, but the stream will still not be VP3-compatible, as VP3 was not capable of encoding such formats. If you call this after encoding has already begun, then the quantization tables and codebooks cannot be changed, but the frame-level features will be enabled or disabled as requested.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td><code>int</code>: a non-zero value to enable VP3 compatibility, or 0 to disable it (the default). </td></tr>
+ <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td><code>int</code>: 1 if all bitstream features required for VP3-compatibility could be set, and 0 otherwise. The latter will be returned if the pixel format is not 4:2:0, the picture region is smaller than the full frame, or if encoding has begun, preventing the quantization tables and codebooks from being set. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>OC_FAULT</em>&nbsp;</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> or <em>buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td><em>buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>OC_IMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<hr/><h2>Enumeration Type Documentation</h2>
+<a class="anchor" id="gaa567da4ce591f7373149ce3ef3acdac9"></a><!-- doxytag: member="theora.h::theora_colorspace" ref="gaa567da4ce591f7373149ce3ef3acdac9" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>A Colorspace. </p>
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f"></a><!-- doxytag: member="OC_CS_UNSPECIFIED" ref="ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f" args="" -->OC_CS_UNSPECIFIED</em>&nbsp;</td><td>
+<p>The colorspace is unknown or unspecified. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294"></a><!-- doxytag: member="OC_CS_ITU_REC_470M" ref="ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294" args="" -->OC_CS_ITU_REC_470M</em>&nbsp;</td><td>
+<p>This is the best option for 'NTSC' content. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a"></a><!-- doxytag: member="OC_CS_ITU_REC_470BG" ref="ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a" args="" -->OC_CS_ITU_REC_470BG</em>&nbsp;</td><td>
+<p>This is the best option for 'PAL' content. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186"></a><!-- doxytag: member="OC_CS_NSPACES" ref="ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186" args="" -->OC_CS_NSPACES</em>&nbsp;</td><td>
+<p>This marks the end of the defined colorspaces. </p>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gae169da05bfaaf4e964a6866552d45079"></a><!-- doxytag: member="theora.h::theora_pixelformat" ref="gae169da05bfaaf4e964a6866552d45079" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>A Chroma subsampling. </p>
+<p>These enumerate the available chroma subsampling options supported by the theora format. See Section 4.4 of the specification for exact definitions. </p>
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b"></a><!-- doxytag: member="OC_PF_420" ref="ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b" args="" -->OC_PF_420</em>&nbsp;</td><td>
+<p>Chroma subsampling by 2 in each direction (4:2:0). </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb"></a><!-- doxytag: member="OC_PF_RSVD" ref="ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb" args="" -->OC_PF_RSVD</em>&nbsp;</td><td>
+<p>Reserved value. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b"></a><!-- doxytag: member="OC_PF_422" ref="ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b" args="" -->OC_PF_422</em>&nbsp;</td><td>
+<p>Horizonatal chroma subsampling by 2 (4:2:2). </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044"></a><!-- doxytag: member="OC_PF_444" ref="ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044" args="" -->OC_PF_444</em>&nbsp;</td><td>
+<p>No chroma subsampling at all (4:4:4). </p>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="gab252d5d81b925136dda72e8f1c09c5eb"></a><!-- doxytag: member="theora.h::theora_clear" ref="gab252d5d81b925136dda72e8f1c09c5eb" args="(theora_state *t)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void theora_clear </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+ <td class="paramname"> <em>t</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Free all internal data associated with a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga650642ed23894e41109bbc42ec393ed4"></a><!-- doxytag: member="theora.h::theora_comment_add" ref="ga650642ed23894e41109bbc42ec393ed4" args="(theora_comment *tc, char *comment)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void theora_comment_add </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
+ <td class="paramname"> <em>tc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>comment</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>A previously initialized theora comment structure </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>comment</em>&nbsp;</td><td>A null-terminated string encoding the comment in the form "TAG=the value"</td></tr>
+ </table>
+ </dd>
+</dl>
+<p>Neither <a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4" title="Add a comment to an initialized theora_comment structure.">theora_comment_add()</a> nor <a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92" title="Add a comment to an initialized theora_comment structure.">theora_comment_add_tag()</a> support comments containing null values, although the bitstream format supports this. To add such comments you will need to manipulate the <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure directly. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga339bd80b5bf4bb168b7052d8ec0b5a92"></a><!-- doxytag: member="theora.h::theora_comment_add_tag" ref="ga339bd80b5bf4bb168b7052d8ec0b5a92" args="(theora_comment *tc, char *tag, char *value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void theora_comment_add_tag </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
+ <td class="paramname"> <em>tc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>tag</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>A previously initialized theora comment structure </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tag</em>&nbsp;</td><td>A null-terminated string containing the tag associated with the comment. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>The corresponding value as a null-terminated string</td></tr>
+ </table>
+ </dd>
+</dl>
+<p>Neither <a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4" title="Add a comment to an initialized theora_comment structure.">theora_comment_add()</a> nor <a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92" title="Add a comment to an initialized theora_comment structure.">theora_comment_add_tag()</a> support comments containing null values, although the bitstream format supports this. To add such comments you will need to manipulate the <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure directly. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga04c07c2eefba3a433e43f9fbde14719f"></a><!-- doxytag: member="theora.h::theora_comment_clear" ref="ga04c07c2eefba3a433e43f9fbde14719f" args="(theora_comment *tc)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void theora_comment_clear </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
+ <td class="paramname"> <em>tc</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Clear an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> struct so that it can be freed. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>An allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga811b92785df3bdbbebb3de612d9d6ce0"></a><!-- doxytag: member="theora.h::theora_comment_init" ref="ga811b92785df3bdbbebb3de612d9d6ce0" args="(theora_comment *tc)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void theora_comment_init </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
+ <td class="paramname"> <em>tc</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Initialize an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>An allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga4361f6001abb5c83c36a2ddfb648a8dc"></a><!-- doxytag: member="theora.h::theora_comment_query" ref="ga4361f6001abb5c83c36a2ddfb648a8dc" args="(theora_comment *tc, char *tag, int count)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">char* theora_comment_query </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
+ <td class="paramname"> <em>tc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>tag</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>count</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Look up a comment value by tag. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>Tn initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tag</em>&nbsp;</td><td>The tag to look up </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>The instance of the tag. The same tag can appear multiple times, each with a distinct and ordered value, so an index is required to retrieve them all. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A pointer to the queried tag's value </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>No matching tag is found</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>Use <a class="el" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b" title="Look up the number of instances of a tag.">theora_comment_query_count()</a> to get the legal range for the count parameter. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga10f66a3c752442a3e0c0098e0f88df8b"></a><!-- doxytag: member="theora.h::theora_comment_query_count" ref="ga10f66a3c752442a3e0c0098e0f88df8b" args="(theora_comment *tc, char *tag)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int theora_comment_query_count </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
+ <td class="paramname"> <em>tc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&nbsp;</td>
+ <td class="paramname"> <em>tag</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Look up the number of instances of a tag. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>An initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tag</em>&nbsp;</td><td>The tag to look up </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The number on instances of a particular tag.</dd></dl>
+<p>Call this first when querying for a specific tag and then interate over the number of instances with separate calls to <a class="el" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc" title="Look up a comment value by tag.">theora_comment_query()</a> to retrieve all instances in order. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga186773db3bc8cd550047e7df1b2ba2c9"></a><!-- doxytag: member="theora.h::theora_control" ref="ga186773db3bc8cd550047e7df1b2ba2c9" args="(theora_state *th, int req, void *buf, size_t buf_sz)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int theora_control </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+ <td class="paramname"> <em>th</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>req</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>buf_sz</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Encoder control function. </p>
+<p>This is used to provide advanced control the encoding process. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>req</em>&nbsp;</td><td>The control code to process. See <a class="el" href="group__oldfuncs.html#encctlcodes_old">the list of available </a> control codes for details. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>The parameters for this control code. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>buf_sz</em>&nbsp;</td><td>The size of the parameter buffer. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga02915e63c1bd733ee291f577a8b75a82"></a><!-- doxytag: member="theora.h::theora_decode_header" ref="ga02915e63c1bd733ee291f577a8b75a82" args="(theora_info *ci, theora_comment *cc, ogg_packet *op)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int theora_decode_header </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
+ <td class="paramname"> <em>ci</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
+ <td class="paramname"> <em>cc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ogg_packet *&nbsp;</td>
+ <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ci</em>&nbsp;</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure to fill. This must have been previously initialized with <a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90" title="Initialize a theora_info structure.">theora_info_init()</a>. If <em>op</em> contains an initial header, <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> will fill <em>ci</em> with the parsed header values. If <em>op</em> contains codebook tables, <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> will parse these and attach an internal representation to <em>ci-&gt;codec_setup</em>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cc</em>&nbsp;</td><td>A <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure to fill. If <em>op</em> contains comment data, <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> will fill <em>cc</em> with the parsed comments. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet structure which you expect contains an initial header, comment data or codebook tables.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>OC_BADHEADER</em>&nbsp;</td><td><em>op</em> is NULL; OR the first byte of <em>op-&gt;packet</em> has the signature of an initial packet, but op is not a b_o_s packet; OR this packet has the signature of an initial header packet, but an initial header packet has already been seen; OR this packet has the signature of a comment packet, but the initial header has not yet been seen; OR this packet has the signature of a comment packet, but contains invalid data; OR this packet has the signature of codebook tables, but the initial header or comments have not yet been seen; OR this packet has the signature of codebook tables, but contains invalid data; OR the stream being decoded has a compatible version but this packet does not have the signature of a theora initial header, comments, or codebook packet </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>OC_VERSION</em>&nbsp;</td><td>The packet data of <em>op</em> is an initial header with a version which is incompatible with this version of libtheora. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>OC_NEWPACKET</em>&nbsp;</td><td>the stream being decoded has an incompatible (future) version and contains an unknown signature. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>The normal usage is that <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> be called on the first three packets of a theora logical bitstream in succession. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga264907c66003799ff77ecbd09eb33d2c"></a><!-- doxytag: member="theora.h::theora_decode_init" ref="ga264907c66003799ff77ecbd09eb33d2c" args="(theora_state *th, theora_info *c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int theora_decode_init </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+ <td class="paramname"> <em>th</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
+ <td class="paramname"> <em>c</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Initialize a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle for decoding. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>The <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle to initialize. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct filled with the desired decoding parameters. This is of course usually obtained from a previous call to <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a>. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gaa65a9e53b46fd54ab344bd599fa96975"></a><!-- doxytag: member="theora.h::theora_decode_packetin" ref="gaa65a9e53b46fd54ab344bd599fa96975" args="(theora_state *th, ogg_packet *op)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int theora_decode_packetin </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+ <td class="paramname"> <em>th</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ogg_packet *&nbsp;</td>
+ <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Input a packet containing encoded data into the theora decoder. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for decoding. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet containing encoded theora data. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>OC_BADPACKET</em>&nbsp;</td><td><em>op</em> does not contain encoded video data </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga09d47c80e1e94bff0a46a496816b8daa"></a><!-- doxytag: member="theora.h::theora_decode_YUVout" ref="ga09d47c80e1e94bff0a46a496816b8daa" args="(theora_state *th, yuv_buffer *yuv)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int theora_decode_YUVout </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+ <td class="paramname"> <em>th</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structyuv__buffer.html">yuv_buffer</a> *&nbsp;</td>
+ <td class="paramname"> <em>yuv</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Output the next available frame of decoded YUV data. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for decoding. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>yuv</em>&nbsp;</td><td>A <a class="el" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> in which libtheora should place the decoded data. Note that the buffer struct itself is allocated by the user, but that the luma and chroma pointers will be filled in by the library. Also note that these luma and chroma regions should be considered read-only by the user. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga45e8db0713eaaca0f1144f3724cb834a"></a><!-- doxytag: member="theora.h::theora_encode_comment" ref="ga45e8db0713eaaca0f1144f3724cb834a" args="(theora_comment *tc, ogg_packet *op)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int theora_encode_comment </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
+ <td class="paramname"> <em>tc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ogg_packet *&nbsp;</td>
+ <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Request a comment header packet from provided metadata. </p>
+<p>A pointer to the comment data is placed in a user-provided ogg_packet structure. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>A <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure filled with the desired metadata </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet structure to fill. libtheora will set all elements of this structure, including a pointer to the encoded comment data. The memory for the comment data is owned by libtheora. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga451feb58d6bde726edbae193689887be"></a><!-- doxytag: member="theora.h::theora_encode_header" ref="ga451feb58d6bde726edbae193689887be" args="(theora_state *t, ogg_packet *op)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int theora_encode_header </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+ <td class="paramname"> <em>t</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ogg_packet *&nbsp;</td>
+ <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Request a packet containing the initial header. </p>
+<p>A pointer to the header data is placed in a user-provided ogg_packet structure. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for encoding. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet structure to fill. libtheora will set all elements of this structure, including a pointer to the header data. The memory for the header data is owned by libtheora. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga0f7ad4d4b2343278cb4ba8fb2bd5109a"></a><!-- doxytag: member="theora.h::theora_encode_init" ref="ga0f7ad4d4b2343278cb4ba8fb2bd5109a" args="(theora_state *th, theora_info *ti)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int theora_encode_init </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+ <td class="paramname"> <em>th</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
+ <td class="paramname"> <em>ti</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Initialize the theora encoder. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>The <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle to initialize for encoding. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ti</em>&nbsp;</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct filled with the desired encoding parameters. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga5f4929677a735bc2198c2309d235f1b3"></a><!-- doxytag: member="theora.h::theora_encode_packetout" ref="ga5f4929677a735bc2198c2309d235f1b3" args="(theora_state *t, int last_p, ogg_packet *op)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int theora_encode_packetout </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+ <td class="paramname"> <em>t</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>last_p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ogg_packet *&nbsp;</td>
+ <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Request the next packet of encoded video. </p>
+<p>The encoded data is placed in a user-provided ogg_packet structure. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for encoding. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>last_p</em>&nbsp;</td><td>whether this is the last packet the encoder should produce. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet structure to fill. libtheora will set all elements of this structure, including a pointer to encoded data. The memory for the encoded data is owned by libtheora. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>No internal storage exists OR no packet is ready </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The encoding process has completed </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>Success </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga5085baf20855b283fa01fc948505d9d2"></a><!-- doxytag: member="theora.h::theora_encode_tables" ref="ga5085baf20855b283fa01fc948505d9d2" args="(theora_state *t, ogg_packet *op)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int theora_encode_tables </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+ <td class="paramname"> <em>t</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ogg_packet *&nbsp;</td>
+ <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Request a packet containing the codebook tables for the stream. </p>
+<p>A pointer to the codebook data is placed in a user-provided ogg_packet structure. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for encoding. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet structure to fill. libtheora will set all elements of this structure, including a pointer to the codebook data. The memory for the header data is owned by libtheora. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gac0d33d896ca70cedfc94c5986d947078"></a><!-- doxytag: member="theora.h::theora_encode_YUVin" ref="gac0d33d896ca70cedfc94c5986d947078" args="(theora_state *t, yuv_buffer *yuv)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int theora_encode_YUVin </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+ <td class="paramname"> <em>t</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structyuv__buffer.html">yuv_buffer</a> *&nbsp;</td>
+ <td class="paramname"> <em>yuv</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Submit a YUV buffer to the theora encoder. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for encoding. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>yuv</em>&nbsp;</td><td>A buffer of YUV data to encode. Note that both the <a class="el" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> struct and the luma/chroma buffers within should be allocated by the user. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td>Encoder is not ready, or is finished. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The size of the given frame differs from those previously input </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga7bfa3ceb2fb4b41a282456c56e1dd269"></a><!-- doxytag: member="theora.h::theora_granule_frame" ref="ga7bfa3ceb2fb4b41a282456c56e1dd269" args="(theora_state *th, ogg_int64_t granulepos)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_int64_t theora_granule_frame </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+ <td class="paramname"> <em>th</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ogg_int64_t&nbsp;</td>
+ <td class="paramname"> <em>granulepos</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Convert a granulepos to an absolute frame index, starting at 0. </p>
+<p>The granulepos is interpreted in the context of a given <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle.</p>
+<p>Note that while the granulepos encodes the frame count (i.e. starting from 1) this call returns the frame index, starting from zero. Thus One can calculate the presentation time by multiplying the index by the rate.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>A previously initialized <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle (encode or decode) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>granulepos</em>&nbsp;</td><td>The granulepos to convert. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The frame index corresponding to <em>granulepos</em>. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The given granulepos is undefined (i.e. negative)</td></tr>
+ </table>
+ </dd>
+</dl>
+<p>Thus function was added in the 1.0alpha4 release. </p>
+
+</div>
+</div>
+<a class="anchor" id="gacd9360e6a47139c761002410af457a02"></a><!-- doxytag: member="theora.h::theora_granule_shift" ref="gacd9360e6a47139c761002410af457a02" args="(theora_info *ti)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int theora_granule_shift </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
+ <td class="paramname"> <em>ti</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Report the granulepos shift radix. </p>
+<p>When embedded in Ogg, Theora uses a two-part granulepos, splitting the 64-bit field into two pieces. The more-significant section represents the frame count at the last keyframe, and the less-significant section represents the count of frames since the last keyframe. In this way the overall field is still non-decreasing with time, but usefully encodes a pointer to the last keyframe, which is necessary for correctly restarting decode after a seek.</p>
+<p>This function reports the number of bits used to represent the distance to the last keyframe, and thus how the granulepos field must be shifted or masked to obtain the two parts.</p>
+<p>Since libtheora returns compressed data in an ogg_packet structure, this may be generally useful even if the Theora packets are not being used in an Ogg container.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ti</em>&nbsp;</td><td>A previously initialized <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit shift dividing the two granulepos fields</dd></dl>
+<p>This function was added in the 1.0alpha5 release. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga4376358b12b9fa23ce6fe21cb5c65ac6"></a><!-- doxytag: member="theora.h::theora_granule_time" ref="ga4376358b12b9fa23ce6fe21cb5c65ac6" args="(theora_state *th, ogg_int64_t granulepos)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double theora_granule_time </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+ <td class="paramname"> <em>th</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ogg_int64_t&nbsp;</td>
+ <td class="paramname"> <em>granulepos</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Convert a granulepos to absolute time in seconds. </p>
+<p>The granulepos is interpreted in the context of a given <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle, and gives the end time of a frame's presentation as used in Ogg mux ordering.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>A previously initialized <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle (encode or decode) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>granulepos</em>&nbsp;</td><td>The granulepos to convert. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The absolute time in seconds corresponding to <em>granulepos</em>. This is the "end time" for the frame, or the latest time it should be displayed. It is not the presentation time. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>-1.</em>&nbsp;</td><td>The given granulepos is undefined (i.e. negative), or </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>-1.</em>&nbsp;</td><td>The function has been disabled because floating point support is not available. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gaba7022d58edbc4825cacad03f68b3e0d"></a><!-- doxytag: member="theora.h::theora_info_clear" ref="gaba7022d58edbc4825cacad03f68b3e0d" args="(theora_info *c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void theora_info_clear </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
+ <td class="paramname"> <em>c</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Clear a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure. </p>
+<p>All values within the given <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure are cleared, and associated internal codec setup data is freed. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct to initialize. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga3091c87d48f1faba018c5956379a6d90"></a><!-- doxytag: member="theora.h::theora_info_init" ref="ga3091c87d48f1faba018c5956379a6d90" args="(theora_info *c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void theora_info_init </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
+ <td class="paramname"> <em>c</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Initialize a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure. </p>
+<p>All values within the given <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure are initialized, and space is allocated within libtheora for internal codec setup data. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct to initialize. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gab969f9d0407683f0e5abe73d0839a25b"></a><!-- doxytag: member="theora.h::theora_packet_isheader" ref="gab969f9d0407683f0e5abe73d0839a25b" args="(ogg_packet *op)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int theora_packet_isheader </td>
+ <td>(</td>
+ <td class="paramtype">ogg_packet *&nbsp;</td>
+ <td class="paramname"> <em>op</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> for that. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet containing encoded theora data. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>The packet is a header packet </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The packet is not a header packet (and so contains frame data)</td></tr>
+ </table>
+ </dd>
+</dl>
+<p>Thus function was added in the 1.0alpha4 release. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga39ccc8f847a748d7074c926b4fdd12b2"></a><!-- doxytag: member="theora.h::theora_packet_iskeyframe" ref="ga39ccc8f847a748d7074c926b4fdd12b2" args="(ogg_packet *op)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int theora_packet_iskeyframe </td>
+ <td>(</td>
+ <td class="paramtype">ogg_packet *&nbsp;</td>
+ <td class="paramname"> <em>op</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Report whether a theora packet is a keyframe or not. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet containing encoded theora data. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>The packet contains a keyframe image </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The packet is contains an interframe delta </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The packet is not an image data packet at all</td></tr>
+ </table>
+ </dd>
+</dl>
+<p>Thus function was added in the 1.0alpha4 release. </p>
+
+</div>
+</div>
+<a class="anchor" id="gad181f4b19d455dcc2bef2533530b84c8"></a><!-- doxytag: member="theora.h::theora_version_number" ref="gad181f4b19d455dcc2bef2533530b84c8" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t theora_version_number </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Retrieve a 32-bit version number. </p>
+<p>This number is composed of a 16-bit major version, 8-bit minor version and 8 bit sub-version, composed as follows: </p>
+<pre>
+ (VERSION_MAJOR&lt;&lt;16) + (VERSION_MINOR&lt;&lt;8) + (VERSION_SUB)
+</pre> <dl class="return"><dt><b>Returns:</b></dt><dd>The version number. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga5a3da8fd262a60f055f96536eec06df2"></a><!-- doxytag: member="theora.h::theora_version_string" ref="ga5a3da8fd262a60f055f96536eec06df2" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* theora_version_string </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Retrieve a human-readable string to identify the encoder vendor and version. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A version string. </dd></dl>
+
+</div>
+</div>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/index.html b/doc/libtheora/html/index.html
new file mode 100644
index 0000000..b1c83c1
--- /dev/null
+++ b/doc/libtheora/html/index.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Main Page</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>libtheora Documentation</h1><h3>1.1.0+svn </h3><h2><a class="anchor" id="intro">
+Introduction</a></h2>
+<p>This is the documentation for <code>libtheora</code> C API. The current reference implementation for <a href="http://www.theora.org/">Theora</a>, a free, patent-unencumbered video codec. Theora is derived from On2's VP3 codec with additional features and integration with Ogg multimedia formats by <a href="http://www.xiph.org/">the Xiph.Org Foundation</a>. Complete documentation of the format itself is available in <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a>.</p>
+<h3><a class="anchor" id="Organization">
+Organization</a></h3>
+<p>The functions documented here are actually subdivided into three separate libraries:</p>
+<ul>
+<li><code>libtheoraenc</code> contains the encoder interface, described in <a class="el" href="group__encfuncs.html">Functions for Encoding</a>.</li>
+<li><code>libtheoradec</code> contains the decoder interface and routines shared with the encoder. You must also link to this if you link to <code>libtheoraenc</code>. The routines in this library are described in <a class="el" href="group__decfuncs.html">Functions for Decoding</a> and <a class="el" href="group__basefuncs.html">Functions Shared by Encode and Decode</a>.</li>
+<li><code>libtheora</code> contains the <a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a>.</li>
+</ul>
+<p>New code should link to <code>libtheoradec</code> and, if using encoder features, <code>libtheoraenc</code>. Together these two export both the standard and the legacy API, so this is all that is needed by any code. The older <code>libtheora</code> library is provided just for compatibility with older build configurations.</p>
+<p>In general the recommended 1.x API symbols can be distinguished by their <code>th_</code> or <code>TH_</code> namespace prefix. The older, legacy API uses <code>theora_</code> or <code>OC_</code> prefixes instead. </p>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/modules.html b/doc/libtheora/html/modules.html
new file mode 100644
index 0000000..ad58739
--- /dev/null
+++ b/doc/libtheora/html/modules.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Module Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>Modules</h1>Here is a list of all modules:<ul>
+<li><a class="el" href="group__basefuncs.html">Functions Shared by Encode and Decode</a></li>
+<li><a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a></li>
+<li><a class="el" href="group__decfuncs.html">Functions for Decoding</a></li>
+<li><a class="el" href="group__encfuncs.html">Functions for Encoding</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structth__comment.html b/doc/libtheora/html/structth__comment.html
new file mode 100644
index 0000000..7c6428a
--- /dev/null
+++ b/doc/libtheora/html/structth__comment.html
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: th_comment Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>th_comment Struct Reference</h1><!-- doxytag: class="th_comment" -->
+<p>The comment information.
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char **&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">user_comments</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The array of comment string vectors. <a href="#ad72830e183e707bb0df423eb73b00de4"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">comment_lengths</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An array of the corresponding length of each vector, in bytes. <a href="#a723dc6fdf75757e70e28eea864b10898"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">comments</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The total number of comment strings. <a href="#a5990c34932376f070ad0fc314daaeb78"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">vendor</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The null-terminated vendor string. <a href="#a93fbe894d23603f56843be15b0cbdba0"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The comment information. </p>
+<p>This structure holds the in-stream metadata corresponding to the 'comment' header packet. The comment header is meant to be used much like someone jotting a quick note on the label of a video. It should be a short, to the point text note that can be more than a couple words, but not more than a short paragraph.</p>
+<p>The metadata is stored as a series of (tag, value) pairs, in length-encoded string vectors. The first occurrence of the '=' character delimits the tag and value. A particular tag may occur more than once, and order is significant. The character set encoding for the strings is always UTF-8, but the tag names are limited to ASCII, and treated as case-insensitive. See <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Section 6.3.3 for details.</p>
+<p>In filling in this structure, <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> will null-terminate the user_comment strings for safety. However, the bitstream format itself treats them as 8-bit clean vectors, possibly containing null characters, and so the length array should be treated as their authoritative length. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a723dc6fdf75757e70e28eea864b10898"></a><!-- doxytag: member="th_comment::comment_lengths" ref="a723dc6fdf75757e70e28eea864b10898" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* <a class="el" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">th_comment::comment_lengths</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>An array of the corresponding length of each vector, in bytes. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5990c34932376f070ad0fc314daaeb78"></a><!-- doxytag: member="th_comment::comments" ref="a5990c34932376f070ad0fc314daaeb78" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">th_comment::comments</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The total number of comment strings. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad72830e183e707bb0df423eb73b00de4"></a><!-- doxytag: member="th_comment::user_comments" ref="ad72830e183e707bb0df423eb73b00de4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">char** <a class="el" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">th_comment::user_comments</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The array of comment string vectors. </p>
+
+</div>
+</div>
+<a class="anchor" id="a93fbe894d23603f56843be15b0cbdba0"></a><!-- doxytag: member="th_comment::vendor" ref="a93fbe894d23603f56843be15b0cbdba0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">char* <a class="el" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">th_comment::vendor</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The null-terminated vendor string. </p>
+<p>This identifies the software used to encode the stream. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="codec_8h_source.html">codec.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structth__huff__code.html b/doc/libtheora/html/structth__huff__code.html
new file mode 100644
index 0000000..866e725
--- /dev/null
+++ b/doc/libtheora/html/structth__huff__code.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: th_huff_code Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>th_huff_code Struct Reference</h1><!-- doxytag: class="th_huff_code" -->
+<p>A Huffman code for a Theora DCT token.
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">pattern</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The bit pattern for the code, with the LSbit of the pattern aligned in the LSbit of the word. <a href="#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">nbits</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of bits in the code. <a href="#aaf97b8f2f90042f7bc136a7b2bc35e35"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>A Huffman code for a Theora DCT token. </p>
+<p>Each set of Huffman codes in a given table must form a complete, prefix-free code. There is no requirement that all the tokens in a table have a valid code, but the current encoder is not optimized to take advantage of this. If each of the five grouops of 16 tables does not contain at least one table with a code for every token, then the encoder may fail to encode certain frames. The complete table in the first group of 16 does not have to be in the same place as the complete table in the other groups, but the complete tables in the remaining four groups must all be in the same place. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="aaf97b8f2f90042f7bc136a7b2bc35e35"></a><!-- doxytag: member="th_huff_code::nbits" ref="aaf97b8f2f90042f7bc136a7b2bc35e35" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">th_huff_code::nbits</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The number of bits in the code. </p>
+<p>This must be between 0 and 32, inclusive. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6dd29e3aa5a0c5a2dd5ce1f45b1162b4"></a><!-- doxytag: member="th_huff_code::pattern" ref="a6dd29e3aa5a0c5a2dd5ce1f45b1162b4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">th_huff_code::pattern</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The bit pattern for the code, with the LSbit of the pattern aligned in the LSbit of the word. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="codec_8h_source.html">codec.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structth__img__plane.html b/doc/libtheora/html/structth__img__plane.html
new file mode 100644
index 0000000..00d8c39
--- /dev/null
+++ b/doc/libtheora/html/structth__img__plane.html
@@ -0,0 +1,116 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: th_img_plane Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>th_img_plane Struct Reference</h1><!-- doxytag: class="th_img_plane" -->
+<p>A buffer for a single color plane in an uncompressed image.
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">width</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The width of this plane. <a href="#a58cc297a99cd4594c3d30e56f2ed6b74"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">height</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The height of this plane. <a href="#a21aea1367894468de489d529d7eaf44d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">stride</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The offset in bytes between successive rows. <a href="#ab1100f071ffee3b37e07e3222f819bad"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">data</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A pointer to the beginning of the first row. <a href="#af8133681516ce88b5a201c1b4b7e6ba2"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>A buffer for a single color plane in an uncompressed image. </p>
+<p>This contains the image data in a left-to-right, top-down format. Each row of pixels is stored contiguously in memory, but successive rows need not be. Use <em>stride</em> to compute the offset of the next row. The encoder accepts both positive <em>stride</em> values (top-down in memory) and negative (bottom-up in memory). The decoder currently always generates images with positive strides. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="af8133681516ce88b5a201c1b4b7e6ba2"></a><!-- doxytag: member="th_img_plane::data" ref="af8133681516ce88b5a201c1b4b7e6ba2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned char* <a class="el" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">th_img_plane::data</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>A pointer to the beginning of the first row. </p>
+
+</div>
+</div>
+<a class="anchor" id="a21aea1367894468de489d529d7eaf44d"></a><!-- doxytag: member="th_img_plane::height" ref="a21aea1367894468de489d529d7eaf44d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">th_img_plane::height</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The height of this plane. </p>
+
+</div>
+</div>
+<a class="anchor" id="ab1100f071ffee3b37e07e3222f819bad"></a><!-- doxytag: member="th_img_plane::stride" ref="ab1100f071ffee3b37e07e3222f819bad" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">th_img_plane::stride</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The offset in bytes between successive rows. </p>
+
+</div>
+</div>
+<a class="anchor" id="a58cc297a99cd4594c3d30e56f2ed6b74"></a><!-- doxytag: member="th_img_plane::width" ref="a58cc297a99cd4594c3d30e56f2ed6b74" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">th_img_plane::width</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The width of this plane. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="codec_8h_source.html">codec.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structth__info.html b/doc/libtheora/html/structth__info.html
new file mode 100644
index 0000000..52f4b9b
--- /dev/null
+++ b/doc/libtheora/html/structth__info.html
@@ -0,0 +1,358 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: th_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>th_info Struct Reference</h1><!-- doxytag: class="th_info" -->
+<p>Theora bitstream information.
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">frame_width</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The encoded frame width. <a href="#a6b8087a4d831da53011a43b8d74087a0"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">frame_height</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The encoded frame height. <a href="#a6b1adc3a16a8336a72692b0a5937214c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">pic_width</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The displayed picture width. <a href="#a5048edf77b141dd3e9a92ca85e317345"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">pic_height</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The displayed picture height. <a href="#a775178474283c5990ba73f9ba7f6b88b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">pic_x</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The X offset of the displayed picture. <a href="#a5b3f834bcf141564e7bb14f49101870f"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">pic_y</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The Y offset of the displayed picture. <a href="#a8aacc575cab2dfe3735001c2ad32aa14"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">colorspace</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The color space. <a href="#a8c7828cd0e023e9d21108160d53659a6"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">pixel_fmt</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The pixel format. <a href="#a2301388ef3755c41ab12fd144c1fc54e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">target_bitrate</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The target bit-rate in bits per second. <a href="#a1d9c8d768a4ae623269f5bd8f6f7a015"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">quality</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The target quality level. <a href="#aa4cdcf96cb46b256821993e9a830ee02"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">keyframe_granule_shift</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The amount to shift to extract the last keyframe number from the granule position. <a href="#a693ca4ab11fbc0c3f32594b4bb8766ed"></a><br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Theora version</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpf735645ddddaaf44dc0647da0e883f6c"></a>Bitstream version information.</p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">version_major</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">version_minor</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">version_subminor</a></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Frame rate</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp801309c4a0e25a4db3fe5739b322b0a7"></a>The frame rate, as a fraction.</p>
+<p>If either is 0, the frame rate is undefined. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">fps_numerator</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">fps_denominator</a></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Aspect ratio</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdeca19914b5126815a2220f15d067c9b"></a>The aspect ratio of the pixels.</p>
+<p>If either value is zero, the aspect ratio is undefined. If not specified by any external means, 1:1 should be assumed. The aspect ratio of the full picture can be computed as </p>
+<div class="fragment"><pre class="fragment"> <a class="code" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">aspect_numerator</a>*<a class="code" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345" title="The displayed picture width.">pic_width</a>/(<a class="code" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">aspect_denominator</a>*<a class="code" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">pic_height</a>).
+</pre></div> <br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">aspect_numerator</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">aspect_denominator</a></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Theora bitstream information. </p>
+<p>This contains the basic playback parameters for a stream, and corresponds to the initial 'info' header packet. To initialize an encoder, the application fills in this structure and passes it to <a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7" title="Allocates an encoder instance.">th_encode_alloc()</a>. A default encoding mode is chosen based on the values of the <a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02" title="The target quality level.">quality</a> and <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015" title="The target bit-rate in bits per second.">target_bitrate</a> fields. On decode, it is filled in by <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>, and then passed to <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e" title="Allocates a decoder instance.">th_decode_alloc()</a>.</p>
+<p>Encoded Theora frames must be a multiple of 16 in size; this is what the <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0" title="The encoded frame width.">frame_width</a> and <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c" title="The encoded frame height.">frame_height</a> members represent. To handle arbitrary picture sizes, a crop rectangle is specified in the <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f" title="The X offset of the displayed picture.">pic_x</a>, <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14" title="The Y offset of the displayed picture.">pic_y</a>, <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345" title="The displayed picture width.">pic_width</a> and <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">pic_height</a> members.</p>
+<p>All frame buffers contain pointers to the full, padded frame. However, the current encoder <em>will not</em> reference pixels outside of the cropped picture region, and the application does not need to fill them in. The decoder <em>will</em> allocate storage for a full frame, but the application <em>should not</em> rely on the padding containing sensible data.</p>
+<p>It is also generally recommended that the offsets and sizes should still be multiples of 2 to avoid chroma sampling shifts when chroma is sub-sampled. See <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Section 4.4, for more details.</p>
+<p>Frame rate, in frames per second, is stored as a rational fraction, as is the pixel aspect ratio. Note that this refers to the aspect ratio of the individual pixels, not of the overall frame itself. The frame aspect ratio can be computed from pixel aspect ratio using the image dimensions. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a04c0bd477222d747a76085d8720322e2"></a><!-- doxytag: member="th_info::aspect_denominator" ref="a04c0bd477222d747a76085d8720322e2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">th_info::aspect_denominator</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a5be65dac9f75e37864cf73dd543570cd"></a><!-- doxytag: member="th_info::aspect_numerator" ref="a5be65dac9f75e37864cf73dd543570cd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">th_info::aspect_numerator</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a8c7828cd0e023e9d21108160d53659a6"></a><!-- doxytag: member="th_info::colorspace" ref="a8c7828cd0e023e9d21108160d53659a6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a> <a class="el" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">th_info::colorspace</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The color space. </p>
+
+</div>
+</div>
+<a class="anchor" id="aa619408f70c03935529f1d3eda7a3ec2"></a><!-- doxytag: member="th_info::fps_denominator" ref="aa619408f70c03935529f1d3eda7a3ec2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">th_info::fps_denominator</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a20606e61676f585a7e59cfc96de190a5"></a><!-- doxytag: member="th_info::fps_numerator" ref="a20606e61676f585a7e59cfc96de190a5" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">th_info::fps_numerator</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a6b1adc3a16a8336a72692b0a5937214c"></a><!-- doxytag: member="th_info::frame_height" ref="a6b1adc3a16a8336a72692b0a5937214c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">th_info::frame_height</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The encoded frame height. </p>
+<p>This must be a multiple of 16, and less than 1048576. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6b8087a4d831da53011a43b8d74087a0"></a><!-- doxytag: member="th_info::frame_width" ref="a6b8087a4d831da53011a43b8d74087a0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">th_info::frame_width</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The encoded frame width. </p>
+<p>This must be a multiple of 16, and less than 1048576. </p>
+
+</div>
+</div>
+<a class="anchor" id="a693ca4ab11fbc0c3f32594b4bb8766ed"></a><!-- doxytag: member="th_info::keyframe_granule_shift" ref="a693ca4ab11fbc0c3f32594b4bb8766ed" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">th_info::keyframe_granule_shift</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The amount to shift to extract the last keyframe number from the granule position. </p>
+<p>This can be at most 31. <a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926" title="Initializes a th_info structure.">th_info_init()</a> will set this to a default value (currently <code>6</code>, which is good for streaming applications), but you can set it to 0 to make every frame a keyframe. The maximum distance between key frames is <code>1&lt;&lt;<a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position...">keyframe_granule_shift</a></code>. The keyframe frequency can be more finely controlled with <a class="el" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49" title="Sets the maximum distance between key frames.">TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</a>, which can also be adjusted during encoding (for example, to force the next frame to be a keyframe), but it cannot be set larger than the amount permitted by this field after the headers have been output. </p>
+
+</div>
+</div>
+<a class="anchor" id="a775178474283c5990ba73f9ba7f6b88b"></a><!-- doxytag: member="th_info::pic_height" ref="a775178474283c5990ba73f9ba7f6b88b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">th_info::pic_height</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The displayed picture height. </p>
+<p>This must be no larger than height. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5048edf77b141dd3e9a92ca85e317345"></a><!-- doxytag: member="th_info::pic_width" ref="a5048edf77b141dd3e9a92ca85e317345" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">th_info::pic_width</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The displayed picture width. </p>
+<p>This must be no larger than width. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5b3f834bcf141564e7bb14f49101870f"></a><!-- doxytag: member="th_info::pic_x" ref="a5b3f834bcf141564e7bb14f49101870f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">th_info::pic_x</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The X offset of the displayed picture. </p>
+<p>This must be no larger than <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0" title="The encoded frame width.">frame_width</a>-<a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345" title="The displayed picture width.">pic_width</a> or 255, whichever is smaller. </p>
+
+</div>
+</div>
+<a class="anchor" id="a8aacc575cab2dfe3735001c2ad32aa14"></a><!-- doxytag: member="th_info::pic_y" ref="a8aacc575cab2dfe3735001c2ad32aa14" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">th_info::pic_y</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The Y offset of the displayed picture. </p>
+<p>This must be no larger than <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c" title="The encoded frame height.">frame_height</a>-<a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">pic_height</a>, and <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c" title="The encoded frame height.">frame_height</a>-<a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">pic_height</a>-<a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14" title="The Y offset of the displayed picture.">pic_y</a> must be no larger than 255. This slightly funny restriction is due to the fact that the offset is specified from the top of the image for consistency with the standard graphics left-handed coordinate system used throughout this API, while it is stored in the encoded stream as an offset from the bottom. </p>
+
+</div>
+</div>
+<a class="anchor" id="a2301388ef3755c41ab12fd144c1fc54e"></a><!-- doxytag: member="th_info::pixel_fmt" ref="a2301388ef3755c41ab12fd144c1fc54e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a> <a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">th_info::pixel_fmt</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The pixel format. </p>
+
+</div>
+</div>
+<a class="anchor" id="aa4cdcf96cb46b256821993e9a830ee02"></a><!-- doxytag: member="th_info::quality" ref="aa4cdcf96cb46b256821993e9a830ee02" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">th_info::quality</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The target quality level. </p>
+<p>Valid values range from 0 to 63, inclusive, with higher values giving higher quality. If initializing an encoder with this struct, and <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015" title="The target bit-rate in bits per second.">target_bitrate</a> is set to zero, VBR encoding at this quality will be activated by default. </p>
+
+</div>
+</div>
+<a class="anchor" id="a1d9c8d768a4ae623269f5bd8f6f7a015"></a><!-- doxytag: member="th_info::target_bitrate" ref="a1d9c8d768a4ae623269f5bd8f6f7a015" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">th_info::target_bitrate</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The target bit-rate in bits per second. </p>
+<p>If initializing an encoder with this struct, set this field to a non-zero value to activate CBR encoding by default. </p>
+
+</div>
+</div>
+<a class="anchor" id="a60b3e2cac006fee0e105a918d6a5a9f9"></a><!-- doxytag: member="th_info::version_major" ref="a60b3e2cac006fee0e105a918d6a5a9f9" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned char <a class="el" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">th_info::version_major</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="abb1d4887a8079c6c5aaa6d7229f243d7"></a><!-- doxytag: member="th_info::version_minor" ref="abb1d4887a8079c6c5aaa6d7229f243d7" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned char <a class="el" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">th_info::version_minor</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="abfacc79b7cabae12b6ac2484f76602d3"></a><!-- doxytag: member="th_info::version_subminor" ref="abfacc79b7cabae12b6ac2484f76602d3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned char <a class="el" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">th_info::version_subminor</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="codec_8h_source.html">codec.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structth__quant__info.html b/doc/libtheora/html/structth__quant__info.html
new file mode 100644
index 0000000..90a64d3
--- /dev/null
+++ b/doc/libtheora/html/structth__quant__info.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: th_quant_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>th_quant_info Struct Reference</h1><!-- doxytag: class="th_quant_info" -->
+<p>A complete set of quantization parameters.
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint16_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">dc_scale</a> [64]</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The DC scaling factors. <a href="#ad5c1c0d1aa4127fcf864ae747d732ed9"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint16_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">ac_scale</a> [64]</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The AC scaling factors. <a href="#a102f079c8f4a135dc0895c10768aeb06"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">loop_filter_limits</a> [64]</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The loop filter limit values. <a href="#a4ac56bf0a45b5743b36daf85d5cd9e33"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">qi_ranges</a> [2][3]</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The <em>qi</em> ranges for each <em>ci</em> and <em>pli</em>. <a href="#a6feacf4b365e305a7df7b93d87ee7bb8"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>A complete set of quantization parameters. </p>
+<p>The quantizer for each coefficient is calculated as: </p>
+<div class="fragment"><pre class="fragment"> Q=MAX(MIN(qmin[qti][ci!=0],scale[ci!=0][qi]*base[qti][pli][qi][ci]/100),
+ 1024).
+</pre></div><p><em>qti</em> is the quantization type index: 0 for intra, 1 for inter. <code>ci!=0</code> is 0 for the DC coefficient and 1 for AC coefficients. <em>qi</em> is the quality index, ranging between 0 (low quality) and 63 (high quality). <em>pli</em> is the color plane index: 0 for Y', 1 for Cb, 2 for Cr. <em>ci</em> is the DCT coefficient index. Coefficient indices correspond to the normal 2D DCT block ordering--row-major with low frequencies first--<em>not</em> zig-zag order.</p>
+<p>Minimum quantizers are constant, and are given by: </p>
+<div class="fragment"><pre class="fragment"> qmin[2][2]={{4,2},{8,4}}.
+</pre></div><p>Parameters that can be stored in the bitstream are as follows:</p>
+<ul>
+<li>The two scale matrices ac_scale and dc_scale. <div class="fragment"><pre class="fragment"> scale[2][64]={<a class="code" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9" title="The DC scaling factors.">dc_scale</a>,<a class="code" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06" title="The AC scaling factors.">ac_scale</a>}.
+</pre></div></li>
+<li>The base matrices for each <em>qi</em>, <em>qti</em> and <em>pli</em> (up to 384 in all). In order to avoid storing a full 384 base matrices, only a sparse set of matrices are stored, and the rest are linearly interpolated. This is done as follows. For each <em>qti</em> and <em>pli</em>, a series of <em>n</em> <em>qi</em> ranges is defined. The size of each <em>qi</em> range can vary arbitrarily, but they must sum to 63. Then, <code>n+1</code> matrices are specified, one for each endpoint of the ranges. For interpolation purposes, each range's endpoints are the first <em>qi</em> value it contains and one past the last <em>qi</em> value it contains. Fractional values are rounded to the nearest integer, with ties rounded away from zero.</li>
+</ul>
+<p>Base matrices are stored by reference, so if the same matrices are used multiple times, they will only appear once in the bitstream. The bitstream is also capable of omitting an entire set of ranges and its associated matrices if they are the same as either the previous set (indexed in row-major order) or if the inter set is the same as the intra set.</p>
+<ul>
+<li>Loop filter limit values. The same limits are used for the loop filter in all color planes, despite potentially differing levels of quantization in each.</li>
+</ul>
+<p>For the current encoder, <code>scale[ci!=0][qi]</code> must be no greater than <code>scale[ci!=0][qi-1]</code> and <code>base[qti][pli][qi][ci]</code> must be no greater than <code>base[qti][pli][qi-1][ci]</code>. These two conditions ensure that the actual quantizer for a given <em>qti</em>, <em>pli</em>, and <em>ci</em> does not increase as <em>qi</em> increases. This is not required by the decoder. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a102f079c8f4a135dc0895c10768aeb06"></a><!-- doxytag: member="th_quant_info::ac_scale" ref="a102f079c8f4a135dc0895c10768aeb06" args="[64]" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint16_t <a class="el" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">th_quant_info::ac_scale</a>[64]</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The AC scaling factors. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad5c1c0d1aa4127fcf864ae747d732ed9"></a><!-- doxytag: member="th_quant_info::dc_scale" ref="ad5c1c0d1aa4127fcf864ae747d732ed9" args="[64]" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint16_t <a class="el" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">th_quant_info::dc_scale</a>[64]</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The DC scaling factors. </p>
+
+</div>
+</div>
+<a class="anchor" id="a4ac56bf0a45b5743b36daf85d5cd9e33"></a><!-- doxytag: member="th_quant_info::loop_filter_limits" ref="a4ac56bf0a45b5743b36daf85d5cd9e33" args="[64]" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned char <a class="el" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">th_quant_info::loop_filter_limits</a>[64]</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The loop filter limit values. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6feacf4b365e305a7df7b93d87ee7bb8"></a><!-- doxytag: member="th_quant_info::qi_ranges" ref="a6feacf4b365e305a7df7b93d87ee7bb8" args="[2][3]" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a> <a class="el" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">th_quant_info::qi_ranges</a>[2][3]</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The <em>qi</em> ranges for each <em>ci</em> and <em>pli</em>. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="codec_8h_source.html">codec.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structth__quant__ranges.html b/doc/libtheora/html/structth__quant__ranges.html
new file mode 100644
index 0000000..aa2620e
--- /dev/null
+++ b/doc/libtheora/html/structth__quant__ranges.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: th_quant_ranges Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>th_quant_ranges Struct Reference</h1><!-- doxytag: class="th_quant_ranges" -->
+<p>A set of <em>qi</em> ranges.
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">nranges</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of ranges in the set. <a href="#a53e5a3d7f7a112100b4b670929b3ebab"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">sizes</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The size of each of the <a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab" title="The number of ranges in the set.">nranges</a> ranges. <a href="#af3188a373bc0b8ffaa330d0ab4c1a194"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">base_matrices</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab" title="The number of ranges in the set.">nranges</a> <code>+1</code> base matrices. <a href="#a52cb432f034737087492ea448de20bdb"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>A set of <em>qi</em> ranges. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a52cb432f034737087492ea448de20bdb"></a><!-- doxytag: member="th_quant_ranges::base_matrices" ref="a52cb432f034737087492ea448de20bdb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a>* <a class="el" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">th_quant_ranges::base_matrices</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab" title="The number of ranges in the set.">nranges</a> <code>+1</code> base matrices. </p>
+<p>Matrices <em>i</em> and <code>i+1</code> form the endpoints of range <em>i</em>. </p>
+
+</div>
+</div>
+<a class="anchor" id="a53e5a3d7f7a112100b4b670929b3ebab"></a><!-- doxytag: member="th_quant_ranges::nranges" ref="a53e5a3d7f7a112100b4b670929b3ebab" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">th_quant_ranges::nranges</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The number of ranges in the set. </p>
+
+</div>
+</div>
+<a class="anchor" id="af3188a373bc0b8ffaa330d0ab4c1a194"></a><!-- doxytag: member="th_quant_ranges::sizes" ref="af3188a373bc0b8ffaa330d0ab4c1a194" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int* <a class="el" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">th_quant_ranges::sizes</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The size of each of the <a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab" title="The number of ranges in the set.">nranges</a> ranges. </p>
+<p>These must sum to 63. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="codec_8h_source.html">codec.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structth__stripe__callback.html b/doc/libtheora/html/structth__stripe__callback.html
new file mode 100644
index 0000000..b801242
--- /dev/null
+++ b/doc/libtheora/html/structth__stripe__callback.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: th_stripe_callback Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>th_stripe_callback Struct Reference</h1><!-- doxytag: class="th_stripe_callback" -->
+<p>The striped decode callback data to pass to <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a>.
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="theoradec_8h_source.html">theoradec.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">ctx</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An application-provided context pointer. <a href="#ab895162ce29a411fa98e0ba9661f47d4"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">th_stripe_decoded_func</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">stripe_decoded</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The callback function pointer. <a href="#a977c725680a37e3446e459f063b1f4a5"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The striped decode callback data to pass to <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a>. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="ab895162ce29a411fa98e0ba9661f47d4"></a><!-- doxytag: member="th_stripe_callback::ctx" ref="ab895162ce29a411fa98e0ba9661f47d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void* <a class="el" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">th_stripe_callback::ctx</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>An application-provided context pointer. </p>
+<p>This will be passed back verbatim to the application. </p>
+
+</div>
+</div>
+<a class="anchor" id="a977c725680a37e3446e459f063b1f4a5"></a><!-- doxytag: member="th_stripe_callback::stripe_decoded" ref="a977c725680a37e3446e459f063b1f4a5" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">th_stripe_decoded_func</a> <a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">th_stripe_callback::stripe_decoded</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The callback function pointer. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="theoradec_8h_source.html">theoradec.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structtheora__comment.html b/doc/libtheora/html/structtheora__comment.html
new file mode 100644
index 0000000..1be4297
--- /dev/null
+++ b/doc/libtheora/html/structtheora__comment.html
@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theora_comment Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>theora_comment Struct Reference<br/>
+<small>
+[<a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a>]</small>
+</h1><!-- doxytag: class="theora_comment" -->
+<p>Comment header metadata.
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="theora_8h_source.html">theora.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char **&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">user_comments</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An array of comment string vectors. <a href="#a1e236fd180dfce19be89081399444cf5"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">comment_lengths</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An array of corresponding string vector lengths in bytes. <a href="#a5ab4a376d3c217282a684577c9c9f49a"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">comments</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The total number of comment string vectors. <a href="#a122393035c8352ff9be42d69e73aee00"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">vendor</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The vendor string identifying the encoder, null terminated. <a href="#adb371baf8f0daed42af8b875cf8430ef"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Comment header metadata. </p>
+<p>This structure holds the in-stream metadata corresponding to the 'comment' header packet.</p>
+<p>Meta data is stored as a series of (tag, value) pairs, in length-encoded string vectors. The first occurence of the '=' character delimits the tag and value. A particular tag may occur more than once. The character set encoding for the strings is always UTF-8, but the tag names are limited to case-insensitive ASCII. See the spec for details.</p>
+<p>In filling in this structure, <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> will null-terminate the user_comment strings for safety. However, the bitstream format itself treats them as 8-bit clean, and so the length array should be treated as authoritative for their length. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a5ab4a376d3c217282a684577c9c9f49a"></a><!-- doxytag: member="theora_comment::comment_lengths" ref="a5ab4a376d3c217282a684577c9c9f49a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* <a class="el" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">theora_comment::comment_lengths</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>An array of corresponding string vector lengths in bytes. </p>
+
+</div>
+</div>
+<a class="anchor" id="a122393035c8352ff9be42d69e73aee00"></a><!-- doxytag: member="theora_comment::comments" ref="a122393035c8352ff9be42d69e73aee00" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">theora_comment::comments</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The total number of comment string vectors. </p>
+
+</div>
+</div>
+<a class="anchor" id="a1e236fd180dfce19be89081399444cf5"></a><!-- doxytag: member="theora_comment::user_comments" ref="a1e236fd180dfce19be89081399444cf5" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">char** <a class="el" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">theora_comment::user_comments</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>An array of comment string vectors. </p>
+
+</div>
+</div>
+<a class="anchor" id="adb371baf8f0daed42af8b875cf8430ef"></a><!-- doxytag: member="theora_comment::vendor" ref="adb371baf8f0daed42af8b875cf8430ef" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">char* <a class="el" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">theora_comment::vendor</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The vendor string identifying the encoder, null terminated. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="theora_8h_source.html">theora.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structtheora__info.html b/doc/libtheora/html/structtheora__info.html
new file mode 100644
index 0000000..756ba65
--- /dev/null
+++ b/doc/libtheora/html/structtheora__info.html
@@ -0,0 +1,491 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theora_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>theora_info Struct Reference<br/>
+<small>
+[<a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a>]</small>
+</h1><!-- doxytag: class="theora_info" -->
+<p>Theora bitstream info.
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="theora_8h_source.html">theora.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">width</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encoded frame width <a href="#a17c2fc651bb3329f1ea6b13ff1d3957b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">height</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encoded frame height <a href="#ae6f0274fc4a7f285c422d91abb35f9c6"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">frame_width</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">display frame width <a href="#a8f28f4018a25634d40e4ae861fbbccfa"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">frame_height</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">display frame height <a href="#a287e4c194f1d2e6deb39d59f1748ea48"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">offset_x</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">horizontal offset of the displayed frame <a href="#af5949a02bef29512f2705e6f6c944e3b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">offset_y</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">vertical offset of the displayed frame <a href="#a91c3922097ba32a85acd584a01dc2c93"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">fps_numerator</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">frame rate numerator <a href="#a3478199aa5ab213816c1819f70085ad7"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">fps_denominator</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">frame rate denominator <a href="#a9aa7e826e0323a4ae8cd8646a6cfbfea"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">aspect_numerator</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">pixel aspect ratio numerator <a href="#a5a3ed8c79815fba1aa06c3f7d8e48b35"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">aspect_denominator</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">pixel aspect ratio denominator <a href="#afebc4d0cbfb34b68c833a8c79e83ae12"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">colorspace</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">colorspace <a href="#a5eaba99c96706d47b426ab7b7602dc5d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">target_bitrate</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">nominal bitrate in bits per second <a href="#a0cfba041767ae2416dd190a406afe713"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">quality</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Nominal quality setting, 0-63. <a href="#a71a4748a5f31bd58d0e403b7806c980d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">quick_p</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Quick encode/decode. <a href="#a2dfae4fd175dbd19254eaf0697778ff5"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">version_major</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">version_minor</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">version_subminor</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">codec_setup</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">dropframes_p</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">keyframe_auto_p</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">keyframe_frequency</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">keyframe_frequency_force</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">keyframe_data_target_bitrate</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_int32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">keyframe_auto_threshold</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">keyframe_mindistance</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_int32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">noise_sensitivity</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_int32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">sharpness</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">pixelformat</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">chroma subsampling mode to expect <a href="#a65ab4376ab5242ee82e06c78fb7008ab"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Theora bitstream info. </p>
+<p>Contains the basic playback parameters for a stream, corresponding to the initial 'info' header packet.</p>
+<p>Encoded theora frames must be a multiple of 16 in width and height. To handle other frame sizes, a crop rectangle is specified in frame_height and frame_width, offset_x and * offset_y. The offset and size should still be a multiple of 2 to avoid chroma sampling shifts. Offset values in this structure are measured from the upper left of the image.</p>
+<p>Frame rate, in frames per second, is stored as a rational fraction. Aspect ratio is also stored as a rational fraction, and refers to the aspect ratio of the frame pixels, not of the overall frame itself.</p>
+<p>See <a href="http://svn.xiph.org/trunk/theora/examples/encoder_example.c">examples/encoder_example.c</a> for usage examples of the other paramters and good default settings for the encoder parameters. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="afebc4d0cbfb34b68c833a8c79e83ae12"></a><!-- doxytag: member="theora_info::aspect_denominator" ref="afebc4d0cbfb34b68c833a8c79e83ae12" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">theora_info::aspect_denominator</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>pixel aspect ratio denominator </p>
+
+</div>
+</div>
+<a class="anchor" id="a5a3ed8c79815fba1aa06c3f7d8e48b35"></a><!-- doxytag: member="theora_info::aspect_numerator" ref="a5a3ed8c79815fba1aa06c3f7d8e48b35" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">theora_info::aspect_numerator</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>pixel aspect ratio numerator </p>
+
+</div>
+</div>
+<a class="anchor" id="a719a1d77a4a3bfeab79aa5747dbbb04c"></a><!-- doxytag: member="theora_info::codec_setup" ref="a719a1d77a4a3bfeab79aa5747dbbb04c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void* <a class="el" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">theora_info::codec_setup</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a5eaba99c96706d47b426ab7b7602dc5d"></a><!-- doxytag: member="theora_info::colorspace" ref="a5eaba99c96706d47b426ab7b7602dc5d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a> <a class="el" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">theora_info::colorspace</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>colorspace </p>
+
+</div>
+</div>
+<a class="anchor" id="af294db65a8363a0bcf43f4727763b291"></a><!-- doxytag: member="theora_info::dropframes_p" ref="af294db65a8363a0bcf43f4727763b291" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">theora_info::dropframes_p</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a9aa7e826e0323a4ae8cd8646a6cfbfea"></a><!-- doxytag: member="theora_info::fps_denominator" ref="a9aa7e826e0323a4ae8cd8646a6cfbfea" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">theora_info::fps_denominator</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>frame rate denominator </p>
+
+</div>
+</div>
+<a class="anchor" id="a3478199aa5ab213816c1819f70085ad7"></a><!-- doxytag: member="theora_info::fps_numerator" ref="a3478199aa5ab213816c1819f70085ad7" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">theora_info::fps_numerator</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>frame rate numerator </p>
+
+</div>
+</div>
+<a class="anchor" id="a287e4c194f1d2e6deb39d59f1748ea48"></a><!-- doxytag: member="theora_info::frame_height" ref="a287e4c194f1d2e6deb39d59f1748ea48" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">theora_info::frame_height</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>display frame height </p>
+
+</div>
+</div>
+<a class="anchor" id="a8f28f4018a25634d40e4ae861fbbccfa"></a><!-- doxytag: member="theora_info::frame_width" ref="a8f28f4018a25634d40e4ae861fbbccfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">theora_info::frame_width</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>display frame width </p>
+
+</div>
+</div>
+<a class="anchor" id="ae6f0274fc4a7f285c422d91abb35f9c6"></a><!-- doxytag: member="theora_info::height" ref="ae6f0274fc4a7f285c422d91abb35f9c6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">theora_info::height</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>encoded frame height </p>
+
+</div>
+</div>
+<a class="anchor" id="a23648173369174f687085c0ce85ef30e"></a><!-- doxytag: member="theora_info::keyframe_auto_p" ref="a23648173369174f687085c0ce85ef30e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">theora_info::keyframe_auto_p</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a95cb8958e29ad3d24047ee8f9e7fd99b"></a><!-- doxytag: member="theora_info::keyframe_auto_threshold" ref="a95cb8958e29ad3d24047ee8f9e7fd99b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_int32_t <a class="el" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">theora_info::keyframe_auto_threshold</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a588942d1ee90a26a7effdf6a0e98b9ce"></a><!-- doxytag: member="theora_info::keyframe_data_target_bitrate" ref="a588942d1ee90a26a7effdf6a0e98b9ce" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">theora_info::keyframe_data_target_bitrate</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a03e1b3e337af5f9dabaaaeb9050f145a"></a><!-- doxytag: member="theora_info::keyframe_frequency" ref="a03e1b3e337af5f9dabaaaeb9050f145a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">theora_info::keyframe_frequency</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ad9d2e22c44a53473010e6d1042dfe0d8"></a><!-- doxytag: member="theora_info::keyframe_frequency_force" ref="ad9d2e22c44a53473010e6d1042dfe0d8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">theora_info::keyframe_frequency_force</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aa79ca8c0e77a884d4487fd627fae32e9"></a><!-- doxytag: member="theora_info::keyframe_mindistance" ref="aa79ca8c0e77a884d4487fd627fae32e9" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">theora_info::keyframe_mindistance</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ac4789034f547b57d1075e035050eeed9"></a><!-- doxytag: member="theora_info::noise_sensitivity" ref="ac4789034f547b57d1075e035050eeed9" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_int32_t <a class="el" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">theora_info::noise_sensitivity</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="af5949a02bef29512f2705e6f6c944e3b"></a><!-- doxytag: member="theora_info::offset_x" ref="af5949a02bef29512f2705e6f6c944e3b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">theora_info::offset_x</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>horizontal offset of the displayed frame </p>
+
+</div>
+</div>
+<a class="anchor" id="a91c3922097ba32a85acd584a01dc2c93"></a><!-- doxytag: member="theora_info::offset_y" ref="a91c3922097ba32a85acd584a01dc2c93" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">theora_info::offset_y</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>vertical offset of the displayed frame </p>
+
+</div>
+</div>
+<a class="anchor" id="a65ab4376ab5242ee82e06c78fb7008ab"></a><!-- doxytag: member="theora_info::pixelformat" ref="a65ab4376ab5242ee82e06c78fb7008ab" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a> <a class="el" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">theora_info::pixelformat</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>chroma subsampling mode to expect </p>
+
+</div>
+</div>
+<a class="anchor" id="a71a4748a5f31bd58d0e403b7806c980d"></a><!-- doxytag: member="theora_info::quality" ref="a71a4748a5f31bd58d0e403b7806c980d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">theora_info::quality</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Nominal quality setting, 0-63. </p>
+
+</div>
+</div>
+<a class="anchor" id="a2dfae4fd175dbd19254eaf0697778ff5"></a><!-- doxytag: member="theora_info::quick_p" ref="a2dfae4fd175dbd19254eaf0697778ff5" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">theora_info::quick_p</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Quick encode/decode. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3fb695de2b2f56dd0203b9e2eb0df1cc"></a><!-- doxytag: member="theora_info::sharpness" ref="a3fb695de2b2f56dd0203b9e2eb0df1cc" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_int32_t <a class="el" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">theora_info::sharpness</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a0cfba041767ae2416dd190a406afe713"></a><!-- doxytag: member="theora_info::target_bitrate" ref="a0cfba041767ae2416dd190a406afe713" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">theora_info::target_bitrate</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>nominal bitrate in bits per second </p>
+
+</div>
+</div>
+<a class="anchor" id="a7c5ebb9e6700aaef87f29f7c6074e474"></a><!-- doxytag: member="theora_info::version_major" ref="a7c5ebb9e6700aaef87f29f7c6074e474" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned char <a class="el" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">theora_info::version_major</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a75eda4f30270d833c7b9dba43932a06a"></a><!-- doxytag: member="theora_info::version_minor" ref="a75eda4f30270d833c7b9dba43932a06a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned char <a class="el" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">theora_info::version_minor</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aa07967ecd6e20bd2928ead42b6397b3d"></a><!-- doxytag: member="theora_info::version_subminor" ref="aa07967ecd6e20bd2928ead42b6397b3d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned char <a class="el" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">theora_info::version_subminor</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a17c2fc651bb3329f1ea6b13ff1d3957b"></a><!-- doxytag: member="theora_info::width" ref="a17c2fc651bb3329f1ea6b13ff1d3957b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">theora_info::width</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>encoded frame width </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="theora_8h_source.html">theora.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structtheora__state.html b/doc/libtheora/html/structtheora__state.html
new file mode 100644
index 0000000..0e94be0
--- /dev/null
+++ b/doc/libtheora/html/structtheora__state.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theora_state Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>theora_state Struct Reference<br/>
+<small>
+[<a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a>]</small>
+</h1><!-- doxytag: class="theora_state" -->
+<p>Codec internal state and context.
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="theora_8h_source.html">theora.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">i</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">granulepos</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">internal_encode</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">internal_decode</a></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Codec internal state and context. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a5dd344a3f79ea7501b18c756772fab7b"></a><!-- doxytag: member="theora_state::granulepos" ref="a5dd344a3f79ea7501b18c756772fab7b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ogg_int64_t <a class="el" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">theora_state::granulepos</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a0efc7ac581ef260b0ca17f518ace0731"></a><!-- doxytag: member="theora_state::i" ref="a0efc7ac581ef260b0ca17f518ace0731" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structtheora__info.html">theora_info</a>* <a class="el" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">theora_state::i</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ad20c4eebbc5ed9764cf03ba8b90e796e"></a><!-- doxytag: member="theora_state::internal_decode" ref="ad20c4eebbc5ed9764cf03ba8b90e796e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void* <a class="el" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">theora_state::internal_decode</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a1fbfd82fb7210cbcc4233cb680ec2af6"></a><!-- doxytag: member="theora_state::internal_encode" ref="a1fbfd82fb7210cbcc4233cb680ec2af6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void* <a class="el" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">theora_state::internal_encode</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="theora_8h_source.html">theora.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structyuv__buffer.html b/doc/libtheora/html/structyuv__buffer.html
new file mode 100644
index 0000000..98d2e03
--- /dev/null
+++ b/doc/libtheora/html/structyuv__buffer.html
@@ -0,0 +1,207 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: yuv_buffer Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>yuv_buffer Struct Reference<br/>
+<small>
+[<a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a>]</small>
+</h1><!-- doxytag: class="yuv_buffer" -->
+<p>A YUV buffer for passing uncompressed frames to and from the codec.
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="theora_8h_source.html">theora.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">y_width</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Width of the Y' luminance plane. <a href="#aaa6c06c071da933231647238418d5fc0"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">y_height</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Height of the luminance plane. <a href="#a5a8b60e012247e2caffcbbaca99414e0"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">y_stride</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Offset in bytes between successive rows. <a href="#a9cdf61834c11b2351640a4a243ad0549"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">uv_width</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Width of the Cb and Cr chroma planes. <a href="#a8c59a57c35af0be519ee47f15e49fe2b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">uv_height</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Height of the chroma planes. <a href="#a640f1a0b456d3807f9f0538b22f10097"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">uv_stride</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Offset between successive chroma rows. <a href="#ab265cc24ffb5650bf52daf223b0debb9"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">y</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to start of luminance data. <a href="#a725727c70eeced6b8c90866973399ac1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">u</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to start of Cb data. <a href="#a8b1857afe3ffac28f259499a57a559e1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">v</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to start of Cr data. <a href="#aa429491dd112adb0254672c59ef55075"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>A YUV buffer for passing uncompressed frames to and from the codec. </p>
+<p>This holds a Y'CbCr frame in planar format. The CbCr planes can be subsampled and have their own separate dimensions and row stride offsets. Note that the strides may be negative in some configurations. For theora the width and height of the largest plane must be a multiple of 16. The actual meaningful picture size and offset are stored in the <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure; frames returned by the decoder may need to be cropped for display.</p>
+<p>All samples are 8 bits. Within each plane samples are ordered by row from the top of the frame to the bottom. Within each row samples are ordered from left to right.</p>
+<p>During decode, the <a class="el" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> struct is allocated by the user, but all fields (including luma and chroma pointers) are filled by the library. These pointers address library-internal memory and their contents should not be modified.</p>
+<p>Conversely, during encode the user allocates the struct and fills out all fields. The user also manages the data addressed by the luma and chroma pointers. See the encoder_example.c and dump_video.c example files in theora/examples/ for more information. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a8b1857afe3ffac28f259499a57a559e1"></a><!-- doxytag: member="yuv_buffer::u" ref="a8b1857afe3ffac28f259499a57a559e1" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned char* <a class="el" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">yuv_buffer::u</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Pointer to start of Cb data. </p>
+
+</div>
+</div>
+<a class="anchor" id="a640f1a0b456d3807f9f0538b22f10097"></a><!-- doxytag: member="yuv_buffer::uv_height" ref="a640f1a0b456d3807f9f0538b22f10097" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">yuv_buffer::uv_height</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Height of the chroma planes. </p>
+
+</div>
+</div>
+<a class="anchor" id="ab265cc24ffb5650bf52daf223b0debb9"></a><!-- doxytag: member="yuv_buffer::uv_stride" ref="ab265cc24ffb5650bf52daf223b0debb9" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">yuv_buffer::uv_stride</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Offset between successive chroma rows. </p>
+
+</div>
+</div>
+<a class="anchor" id="a8c59a57c35af0be519ee47f15e49fe2b"></a><!-- doxytag: member="yuv_buffer::uv_width" ref="a8c59a57c35af0be519ee47f15e49fe2b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">yuv_buffer::uv_width</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Width of the Cb and Cr chroma planes. </p>
+
+</div>
+</div>
+<a class="anchor" id="aa429491dd112adb0254672c59ef55075"></a><!-- doxytag: member="yuv_buffer::v" ref="aa429491dd112adb0254672c59ef55075" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned char* <a class="el" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">yuv_buffer::v</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Pointer to start of Cr data. </p>
+
+</div>
+</div>
+<a class="anchor" id="a725727c70eeced6b8c90866973399ac1"></a><!-- doxytag: member="yuv_buffer::y" ref="a725727c70eeced6b8c90866973399ac1" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned char* <a class="el" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">yuv_buffer::y</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Pointer to start of luminance data. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5a8b60e012247e2caffcbbaca99414e0"></a><!-- doxytag: member="yuv_buffer::y_height" ref="a5a8b60e012247e2caffcbbaca99414e0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">yuv_buffer::y_height</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Height of the luminance plane. </p>
+
+</div>
+</div>
+<a class="anchor" id="a9cdf61834c11b2351640a4a243ad0549"></a><!-- doxytag: member="yuv_buffer::y_stride" ref="a9cdf61834c11b2351640a4a243ad0549" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">yuv_buffer::y_stride</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Offset in bytes between successive rows. </p>
+
+</div>
+</div>
+<a class="anchor" id="aaa6c06c071da933231647238418d5fc0"></a><!-- doxytag: member="yuv_buffer::y_width" ref="aaa6c06c071da933231647238418d5fc0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">yuv_buffer::y_width</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Width of the Y' luminance plane. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="theora_8h_source.html">theora.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/tab_b.gif b/doc/libtheora/html/tab_b.gif
new file mode 100644
index 0000000..0d62348
--- /dev/null
+++ b/doc/libtheora/html/tab_b.gif
Binary files differ
diff --git a/doc/libtheora/html/tab_l.gif b/doc/libtheora/html/tab_l.gif
new file mode 100644
index 0000000..9b1e633
--- /dev/null
+++ b/doc/libtheora/html/tab_l.gif
Binary files differ
diff --git a/doc/libtheora/html/tab_r.gif b/doc/libtheora/html/tab_r.gif
new file mode 100644
index 0000000..ce9dd9f
--- /dev/null
+++ b/doc/libtheora/html/tab_r.gif
Binary files differ
diff --git a/doc/libtheora/html/tabs.css b/doc/libtheora/html/tabs.css
new file mode 100644
index 0000000..a444163
--- /dev/null
+++ b/doc/libtheora/html/tabs.css
@@ -0,0 +1,105 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+ float : left;
+ width : 100%;
+ background : url("tab_b.gif") repeat-x bottom;
+ margin-bottom : 4px;
+}
+
+DIV.tabs UL
+{
+ margin : 0px;
+ padding-left : 10px;
+ list-style : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+ display : inline;
+ margin : 0px;
+ padding : 0px;
+}
+
+DIV.tabs FORM
+{
+ float : right;
+}
+
+DIV.tabs A
+{
+ float : left;
+ background : url("tab_r.gif") no-repeat right top;
+ border-bottom : 1px solid #84B0C7;
+ font-size : 80%;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+DIV.tabs A:hover
+{
+ background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+ color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+ float : left;
+ display : block;
+ background : url("tab_l.gif") no-repeat left top;
+ padding : 5px 9px;
+ white-space : nowrap;
+}
+
+DIV.tabs #MSearchBox
+{
+ float : right;
+ display : inline;
+ font-size : 1em;
+}
+
+DIV.tabs TD
+{
+ font-size : 80%;
+ font-weight : bold;
+ text-decoration : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+ background-position: 0% -150px;
+}
+
+DIV.tabs LI.current A
+{
+ background-position: 100% -150px;
+ border-width : 0px;
+}
+
+DIV.tabs LI.current SPAN
+{
+ background-position: 0% -150px;
+ padding-bottom : 6px;
+}
+
+DIV.navpath
+{
+ background : none;
+ border : none;
+ border-bottom : 1px solid #84B0C7;
+ text-align : center;
+ margin : 2px;
+ padding : 2px;
+}
diff --git a/doc/libtheora/html/theora_8h.html b/doc/libtheora/html/theora_8h.html
new file mode 100644
index 0000000..2adc3b1
--- /dev/null
+++ b/doc/libtheora/html/theora_8h.html
@@ -0,0 +1,212 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theora.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>theora.h File Reference</h1>
+<p>The libtheora pre-1.0 legacy C API.
+<a href="#_details">More...</a></p>
+<code>#include &lt;stddef.h&gt;</code><br/>
+<code>#include &lt;ogg/ogg.h&gt;</code><br/>
+
+<p><a href="theora_8h_source.html">Go to the source code of this file.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html">yuv_buffer</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A YUV buffer for passing uncompressed frames to and from the codec. <a href="structyuv__buffer.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html">theora_info</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Theora bitstream info. <a href="structtheora__info.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html">theora_state</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Codec internal state and context. <a href="structtheora__state.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html">theora_comment</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comment header metadata. <a href="structtheora__comment.html#_details">More...</a><br/></td></tr>
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e">OC_FAULT</a>&nbsp;&nbsp;&nbsp;-1</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">General failure. <a href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55">OC_EINVAL</a>&nbsp;&nbsp;&nbsp;-10</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Library encountered invalid internal data. <a href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1">OC_DISABLED</a>&nbsp;&nbsp;&nbsp;-11</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Requested action is disabled. <a href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba">OC_BADHEADER</a>&nbsp;&nbsp;&nbsp;-20</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Header packet was corrupt/invalid. <a href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad">OC_NOTFORMAT</a>&nbsp;&nbsp;&nbsp;-21</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is not a theora packet. <a href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b">OC_VERSION</a>&nbsp;&nbsp;&nbsp;-22</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bitstream version is not handled. <a href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c">OC_IMPL</a>&nbsp;&nbsp;&nbsp;-23</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Feature or action not implemented. <a href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1">OC_BADPACKET</a>&nbsp;&nbsp;&nbsp;-24</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is corrupt. <a href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496">OC_NEWPACKET</a>&nbsp;&nbsp;&nbsp;-25</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is an (ignorable) unhandled extension. <a href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb">OC_DUPFRAME</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is a dropped frame. <a href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb"></a><br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">theora_control() codes</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp13fd61986cff4566fe89a40e30b74ad9"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07">TH_DECCTL_GET_PPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the maximum post-processing level. <a href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d">TH_DECCTL_SET_PPLEVEL</a>&nbsp;&nbsp;&nbsp;(3)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the post-processing level. <a href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49">TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</a>&nbsp;&nbsp;&nbsp;(4)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the maximum distance between key frames. <a href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5">TH_DECCTL_SET_GRANPOS</a>&nbsp;&nbsp;&nbsp;(5)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the granule position. <a href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c">TH_ENCCTL_SET_QUANT_PARAMS</a>&nbsp;&nbsp;&nbsp;(2)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the quantization parameters to use. <a href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8">TH_ENCCTL_SET_VP3_COMPATIBLE</a>&nbsp;&nbsp;&nbsp;(10)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disables any encoder features that would prevent lossless transcoding back to VP3. <a href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783">TH_ENCCTL_GET_SPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(12)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the maximum speed level. <a href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6">TH_ENCCTL_SET_SPLEVEL</a>&nbsp;&nbsp;&nbsp;(14)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the speed level. <a href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a> { <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">OC_CS_UNSPECIFIED</a>,
+<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">OC_CS_ITU_REC_470M</a>,
+<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">OC_CS_ITU_REC_470BG</a>,
+<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">OC_CS_NSPACES</a>
+ }</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>A Colorspace. </p>
+ <a href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a> { <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">OC_PF_420</a>,
+<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">OC_PF_RSVD</a>,
+<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">OC_PF_422</a>,
+<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">OC_PF_444</a>
+ }</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>A Chroma subsampling. </p>
+ <a href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">More...</a><br/></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5a3da8fd262a60f055f96536eec06df2">theora_version_string</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve a human-readable string to identify the encoder vendor and version. <a href="group__oldfuncs.html#ga5a3da8fd262a60f055f96536eec06df2"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8">theora_version_number</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve a 32-bit version number. <a href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a">theora_encode_init</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structtheora__info.html">theora_info</a> *ti)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize the theora encoder. <a href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078">theora_encode_YUVin</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, <a class="el" href="structyuv__buffer.html">yuv_buffer</a> *yuv)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submit a YUV buffer to the theora encoder. <a href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3">theora_encode_packetout</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, int last_p, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request the next packet of encoded video. <a href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be">theora_encode_header</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a packet containing the initial header. <a href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a">theora_encode_comment</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a comment header packet from provided metadata. <a href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2">theora_encode_tables</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a packet containing the codebook tables for the stream. <a href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82">theora_decode_header</a> (<a class="el" href="structtheora__info.html">theora_info</a> *ci, <a class="el" href="structtheora__comment.html">theora_comment</a> *cc, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables. <a href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c">theora_decode_init</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle for decoding. <a href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975">theora_decode_packetin</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Input a packet containing encoded data into the theora decoder. <a href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa">theora_decode_YUVout</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structyuv__buffer.html">yuv_buffer</a> *yuv)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Output the next available frame of decoded YUV data. <a href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b">theora_packet_isheader</a> (ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> for that. <a href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2">theora_packet_iskeyframe</a> (ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report whether a theora packet is a keyframe or not. <a href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02">theora_granule_shift</a> (<a class="el" href="structtheora__info.html">theora_info</a> *ti)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report the granulepos shift radix. <a href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269">theora_granule_frame</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_int64_t granulepos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a granulepos to an absolute frame index, starting at 0. <a href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6">theora_granule_time</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_int64_t granulepos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a granulepos to absolute time in seconds. <a href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90">theora_info_init</a> (<a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure. <a href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d">theora_info_clear</a> (<a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure. <a href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb">theora_clear</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free all internal data associated with a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle. <a href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0">theora_comment_init</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. <a href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4">theora_comment_add</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *comment)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. <a href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92">theora_comment_add_tag</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag, char *value)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. <a href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc">theora_comment_query</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag, int count)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up a comment value by tag. <a href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b">theora_comment_query_count</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up the number of instances of a tag. <a href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f">theora_comment_clear</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> struct so that it can be freed. <a href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9">theora_control</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, int req, void *buf, size_t buf_sz)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Encoder control function. <a href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The libtheora pre-1.0 legacy C API. </p>
+<h2><a class="anchor" id="intro">
+Introduction</a></h2>
+<p>This is the documentation for the libtheora legacy C API, declared in the <a class="el" href="theora_8h.html" title="The libtheora pre-1.0 legacy C API.">theora.h</a> header, which describes the old interface used before the 1.0 release. This API was widely deployed for several years and remains supported, but for new code we recommend the cleaner API declared in <a class="el" href="theoradec_8h.html" title="The libtheoradec C decoding API.">theoradec.h</a> and <a class="el" href="theoraenc_8h.html" title="The libtheoraenc C encoding API.">theoraenc.h</a>.</p>
+<p>libtheora is the reference implementation for <a href="http://www.theora.org/">Theora</a>, a free video codec. Theora is derived from On2's VP3 codec with improved integration with Ogg multimedia formats by <a href="http://www.xiph.org/">Xiph.Org</a>.</p>
+<h2><a class="anchor" id="overview">
+Overview</a></h2>
+<p>This library will both decode and encode theora packets to/from raw YUV frames. In either case, the packets will most likely either come from or need to be embedded in an Ogg stream. Use <a href="http://xiph.org/ogg/">libogg</a> or <a href="http://www.annodex.net/software/liboggz/index.html">liboggz</a> to extract/package these packets.</p>
+<h2><a class="anchor" id="decoding">
+Decoding Process</a></h2>
+<p>Decoding can be separated into the following steps:</p>
+<ol type="1">
+<li>initialise <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> and <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structures using <a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90" title="Initialize a theora_info structure.">theora_info_init()</a> and <a class="el" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0" title="Initialize an allocated theora_comment structure.">theora_comment_init()</a>: <div class="fragment"><pre class="fragment">
+ theora_info info;
+ theora_comment comment;
+
+ theora_info_init(&amp;info);
+ theora_comment_init(&amp;comment);
+ </pre></div></li>
+<li>retrieve header packets from Ogg stream (there should be 3) and decode into <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> and <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structures using <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a>. See <a class="el" href="theora_8h.html#identification">Identifying Theora Packets</a> for more information on identifying which packets are theora packets. <div class="fragment"><pre class="fragment">
+ int i;
+ for (i = 0; i &lt; 3; i++)
+ {
+ (get a theora packet "op" from the Ogg stream)
+ theora_decode_header(&amp;info, &amp;comment, op);
+ }
+ </pre></div></li>
+<li>initialise the decoder based on the information retrieved into the <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct by <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a>. You will need a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> struct. <div class="fragment"><pre class="fragment">
+ theora_state state;
+
+ theora_decode_init(&amp;state, &amp;info);
+ </pre></div></li>
+<li>pass in packets and retrieve decoded frames! See the <a class="el" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> documentation for information on how to retrieve raw YUV data. <div class="fragment"><pre class="fragment">
+ yuf_buffer buffer;
+ while (last packet was not e_o_s) {
+ (get a theora packet "op" from the Ogg stream)
+ theora_decode_packetin(&amp;state, op);
+ theora_decode_YUVout(&amp;state, &amp;buffer);
+ }
+ </pre></div></li>
+</ol>
+<h3><a class="anchor" id="identification">
+Identifying Theora Packets</a></h3>
+<p>All streams inside an Ogg file have a unique serial_no attached to the stream. Typically, you will want to</p>
+<ul>
+<li>retrieve the serial_no for each b_o_s (beginning of stream) page encountered within the Ogg file;</li>
+<li>test the first (only) packet on that page to determine if it is a theora packet;</li>
+<li>once you have found a theora b_o_s page then use the retrieved serial_no to identify future packets belonging to the same theora stream.</li>
+</ul>
+<p>Note that you <em>cannot</em> use <a class="el" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b" title="Report whether a theora packet is a header or not This function does no verification...">theora_packet_isheader()</a> to determine if a packet is a theora packet or not, as this function does not perform any checking beyond whether a header bit is present. Instead, use the <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> function and check the return value; or examine the header bytes at the beginning of the Ogg page. </p>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/theora_8h_source.html b/doc/libtheora/html/theora_8h_source.html
new file mode 100644
index 0000000..c9549bf
--- /dev/null
+++ b/doc/libtheora/html/theora_8h_source.html
@@ -0,0 +1,245 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theora.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+<h1>theora.h</h1><a href="theora_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/********************************************************************</span>
+<a name="l00002"></a>00002 <span class="comment"> * *</span>
+<a name="l00003"></a>00003 <span class="comment"> * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. *</span>
+<a name="l00004"></a>00004 <span class="comment"> * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *</span>
+<a name="l00005"></a>00005 <span class="comment"> * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *</span>
+<a name="l00006"></a>00006 <span class="comment"> * IN &apos;COPYING&apos;. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *</span>
+<a name="l00007"></a>00007 <span class="comment"> * *</span>
+<a name="l00008"></a>00008 <span class="comment"> * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009 *</span>
+<a name="l00009"></a>00009 <span class="comment"> * by the Xiph.Org Foundation http://www.xiph.org/ *</span>
+<a name="l00010"></a>00010 <span class="comment"> * *</span>
+<a name="l00011"></a>00011 <span class="comment"> ********************************************************************</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment"> function:</span>
+<a name="l00014"></a>00014 <span class="comment"> last mod: $Id: theora.h,v 1.17 2003/12/06 18:06:19 arc Exp $</span>
+<a name="l00015"></a>00015 <span class="comment"></span>
+<a name="l00016"></a>00016 <span class="comment"> ********************************************************************/</span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018 <span class="preprocessor">#ifndef _O_THEORA_H_</span>
+<a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#define _O_THEORA_H_</span>
+<a name="l00020"></a>00020 <span class="preprocessor"></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span>
+<a name="l00023"></a>00023 {
+<a name="l00024"></a>00024 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;stddef.h&gt;</span> <span class="comment">/* for size_t */</span>
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;ogg/ogg.h&gt;</span>
+<a name="l00029"></a>00029
+<a name="l00121"></a>00121 <span class="comment">/* @{ */</span>
+<a name="l00122"></a>00122
+<a name="l00147"></a><a class="code" href="structyuv__buffer.html">00147</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
+<a name="l00148"></a><a class="code" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">00148</a> <span class="keywordtype">int</span> y_width;
+<a name="l00149"></a><a class="code" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">00149</a> <span class="keywordtype">int</span> y_height;
+<a name="l00150"></a><a class="code" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">00150</a> <span class="keywordtype">int</span> y_stride;
+<a name="l00152"></a><a class="code" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">00152</a> <span class="keywordtype">int</span> uv_width;
+<a name="l00153"></a><a class="code" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">00153</a> <span class="keywordtype">int</span> uv_height;
+<a name="l00154"></a><a class="code" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">00154</a> <span class="keywordtype">int</span> uv_stride;
+<a name="l00155"></a><a class="code" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">00155</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *y;
+<a name="l00156"></a><a class="code" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">00156</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *u;
+<a name="l00157"></a><a class="code" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">00157</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *v;
+<a name="l00159"></a>00159 } <a class="code" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a>;
+<a name="l00160"></a>00160
+<a name="l00164"></a><a class="code" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">00164</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00165"></a><a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">00165</a> <a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f" title="The colorspace is unknown or unspecified.">OC_CS_UNSPECIFIED</a>,
+<a name="l00166"></a><a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">00166</a> <a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294" title="This is the best option for &amp;#39;NTSC&amp;#39; content.">OC_CS_ITU_REC_470M</a>,
+<a name="l00167"></a><a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">00167</a> <a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a" title="This is the best option for &amp;#39;PAL&amp;#39; content.">OC_CS_ITU_REC_470BG</a>,
+<a name="l00168"></a><a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">00168</a> <a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186" title="This marks the end of the defined colorspaces.">OC_CS_NSPACES</a>
+<a name="l00169"></a>00169 } <a class="code" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9" title="A Colorspace.">theora_colorspace</a>;
+<a name="l00170"></a>00170
+<a name="l00178"></a><a class="code" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">00178</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00179"></a><a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">00179</a> <a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b" title="Chroma subsampling by 2 in each direction (4:2:0).">OC_PF_420</a>,
+<a name="l00180"></a><a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">00180</a> <a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb" title="Reserved value.">OC_PF_RSVD</a>,
+<a name="l00181"></a><a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">00181</a> <a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b" title="Horizonatal chroma subsampling by 2 (4:2:2).">OC_PF_422</a>,
+<a name="l00182"></a><a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">00182</a> <a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044" title="No chroma subsampling at all (4:4:4).">OC_PF_444</a>,
+<a name="l00183"></a>00183 } <a class="code" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079" title="A Chroma subsampling.">theora_pixelformat</a>;
+<a name="l00184"></a>00184
+<a name="l00206"></a><a class="code" href="structtheora__info.html">00206</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
+<a name="l00207"></a><a class="code" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">00207</a> ogg_uint32_t width;
+<a name="l00208"></a><a class="code" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">00208</a> ogg_uint32_t height;
+<a name="l00209"></a><a class="code" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">00209</a> ogg_uint32_t frame_width;
+<a name="l00210"></a><a class="code" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">00210</a> ogg_uint32_t frame_height;
+<a name="l00211"></a><a class="code" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">00211</a> ogg_uint32_t offset_x;
+<a name="l00212"></a><a class="code" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">00212</a> ogg_uint32_t offset_y;
+<a name="l00213"></a><a class="code" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">00213</a> ogg_uint32_t fps_numerator;
+<a name="l00214"></a><a class="code" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">00214</a> ogg_uint32_t fps_denominator;
+<a name="l00215"></a><a class="code" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">00215</a> ogg_uint32_t aspect_numerator;
+<a name="l00216"></a><a class="code" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">00216</a> ogg_uint32_t aspect_denominator;
+<a name="l00217"></a><a class="code" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">00217</a> <a class="code" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9" title="A Colorspace.">theora_colorspace</a> colorspace;
+<a name="l00218"></a><a class="code" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">00218</a> <span class="keywordtype">int</span> target_bitrate;
+<a name="l00219"></a><a class="code" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">00219</a> <span class="keywordtype">int</span> quality;
+<a name="l00220"></a><a class="code" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">00220</a> <span class="keywordtype">int</span> quick_p;
+<a name="l00222"></a>00222 <span class="comment">/* decode only */</span>
+<a name="l00223"></a><a class="code" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">00223</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_major;
+<a name="l00224"></a><a class="code" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">00224</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_minor;
+<a name="l00225"></a><a class="code" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">00225</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_subminor;
+<a name="l00226"></a>00226
+<a name="l00227"></a><a class="code" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">00227</a> <span class="keywordtype">void</span> *codec_setup;
+<a name="l00228"></a>00228
+<a name="l00229"></a>00229 <span class="comment">/* encode only */</span>
+<a name="l00230"></a><a class="code" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">00230</a> <span class="keywordtype">int</span> dropframes_p;
+<a name="l00231"></a><a class="code" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">00231</a> <span class="keywordtype">int</span> keyframe_auto_p;
+<a name="l00232"></a><a class="code" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">00232</a> ogg_uint32_t keyframe_frequency;
+<a name="l00233"></a><a class="code" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">00233</a> ogg_uint32_t keyframe_frequency_force; <span class="comment">/* also used for decode init to</span>
+<a name="l00234"></a>00234 <span class="comment"> get granpos shift correct */</span>
+<a name="l00235"></a><a class="code" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">00235</a> ogg_uint32_t keyframe_data_target_bitrate;
+<a name="l00236"></a><a class="code" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">00236</a> ogg_int32_t keyframe_auto_threshold;
+<a name="l00237"></a><a class="code" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">00237</a> ogg_uint32_t keyframe_mindistance;
+<a name="l00238"></a><a class="code" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">00238</a> ogg_int32_t noise_sensitivity;
+<a name="l00239"></a><a class="code" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">00239</a> ogg_int32_t sharpness;
+<a name="l00240"></a>00240
+<a name="l00241"></a><a class="code" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">00241</a> <a class="code" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079" title="A Chroma subsampling.">theora_pixelformat</a> pixelformat;
+<a name="l00243"></a>00243 } <a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a>;
+<a name="l00244"></a>00244
+<a name="l00247"></a><a class="code" href="structtheora__state.html">00247</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
+<a name="l00248"></a><a class="code" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">00248</a> <a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *i;
+<a name="l00249"></a><a class="code" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">00249</a> ogg_int64_t granulepos;
+<a name="l00250"></a>00250
+<a name="l00251"></a><a class="code" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">00251</a> <span class="keywordtype">void</span> *internal_encode;
+<a name="l00252"></a><a class="code" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">00252</a> <span class="keywordtype">void</span> *internal_decode;
+<a name="l00253"></a>00253
+<a name="l00254"></a>00254 } <a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a>;
+<a name="l00255"></a>00255
+<a name="l00275"></a><a class="code" href="structtheora__comment.html">00275</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a>{
+<a name="l00276"></a><a class="code" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">00276</a> <span class="keywordtype">char</span> **<a class="code" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5" title="An array of comment string vectors.">user_comments</a>;
+<a name="l00277"></a><a class="code" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">00277</a> <span class="keywordtype">int</span> *<a class="code" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a" title="An array of corresponding string vector lengths in bytes.">comment_lengths</a>;
+<a name="l00278"></a><a class="code" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">00278</a> <span class="keywordtype">int</span> <a class="code" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00" title="The total number of comment string vectors.">comments</a>;
+<a name="l00279"></a><a class="code" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">00279</a> <span class="keywordtype">char</span> *<a class="code" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef" title="The vendor string identifying the encoder, null terminated.">vendor</a>;
+<a name="l00281"></a>00281 } <a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a>;
+<a name="l00282"></a>00282
+<a name="l00283"></a>00283
+<a name="l00285"></a>00285 <span class="comment">/* \anchor decctlcodes_old</span>
+<a name="l00286"></a>00286 <span class="comment"> * These are the available request codes for theora_control()</span>
+<a name="l00287"></a>00287 <span class="comment"> * when called with a decoder instance.</span>
+<a name="l00288"></a>00288 <span class="comment"> * By convention decoder control codes are odd, to distinguish </span>
+<a name="l00289"></a>00289 <span class="comment"> * them from \ref encctlcodes_old &quot;encoder control codes&quot; which</span>
+<a name="l00290"></a>00290 <span class="comment"> * are even.</span>
+<a name="l00291"></a>00291 <span class="comment"> *</span>
+<a name="l00292"></a>00292 <span class="comment"> * Note that since the 1.0 release, both the legacy and the final</span>
+<a name="l00293"></a>00293 <span class="comment"> * implementation accept all the same control codes, but only the</span>
+<a name="l00294"></a>00294 <span class="comment"> * final API declares the newer codes.</span>
+<a name="l00295"></a>00295 <span class="comment"> *</span>
+<a name="l00296"></a>00296 <span class="comment"> * Keep any experimental or vendor-specific values above \c 0x8000.*/</span>
+<a name="l00297"></a>00297
+<a name="l00306"></a><a class="code" href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07">00306</a> <span class="preprocessor">#define TH_DECCTL_GET_PPLEVEL_MAX (1)</span>
+<a name="l00307"></a>00307 <span class="preprocessor"></span>
+<a name="l00313"></a><a class="code" href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d">00313</a> <span class="preprocessor">#define TH_DECCTL_SET_PPLEVEL (3)</span>
+<a name="l00314"></a>00314 <span class="preprocessor"></span>
+<a name="l00327"></a><a class="code" href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49">00327</a> <span class="preprocessor">#define TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE (4)</span>
+<a name="l00328"></a>00328 <span class="preprocessor"></span>
+<a name="l00336"></a><a class="code" href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5">00336</a> <span class="preprocessor">#define TH_DECCTL_SET_GRANPOS (5)</span>
+<a name="l00337"></a>00337 <span class="preprocessor"></span>
+<a name="l00353"></a><a class="code" href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c">00353</a> <span class="preprocessor">#define TH_ENCCTL_SET_QUANT_PARAMS (2)</span>
+<a name="l00354"></a>00354 <span class="preprocessor"></span>
+<a name="l00382"></a><a class="code" href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8">00382</a> <span class="preprocessor">#define TH_ENCCTL_SET_VP3_COMPATIBLE (10)</span>
+<a name="l00383"></a>00383 <span class="preprocessor"></span>
+<a name="l00397"></a><a class="code" href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783">00397</a> <span class="preprocessor">#define TH_ENCCTL_GET_SPLEVEL_MAX (12)</span>
+<a name="l00398"></a>00398 <span class="preprocessor"></span>
+<a name="l00412"></a><a class="code" href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6">00412</a> <span class="preprocessor">#define TH_ENCCTL_SET_SPLEVEL (14)</span>
+<a name="l00413"></a>00413 <span class="preprocessor"></span>
+<a name="l00416"></a><a class="code" href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e">00416</a> <span class="preprocessor">#define OC_FAULT -1 </span>
+<a name="l00417"></a><a class="code" href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55">00417</a> <span class="preprocessor">#define OC_EINVAL -10 </span>
+<a name="l00418"></a><a class="code" href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1">00418</a> <span class="preprocessor">#define OC_DISABLED -11 </span>
+<a name="l00419"></a><a class="code" href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba">00419</a> <span class="preprocessor">#define OC_BADHEADER -20 </span>
+<a name="l00420"></a><a class="code" href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad">00420</a> <span class="preprocessor">#define OC_NOTFORMAT -21 </span>
+<a name="l00421"></a><a class="code" href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b">00421</a> <span class="preprocessor">#define OC_VERSION -22 </span>
+<a name="l00422"></a><a class="code" href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c">00422</a> <span class="preprocessor">#define OC_IMPL -23 </span>
+<a name="l00423"></a><a class="code" href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1">00423</a> <span class="preprocessor">#define OC_BADPACKET -24 </span>
+<a name="l00424"></a><a class="code" href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496">00424</a> <span class="preprocessor">#define OC_NEWPACKET -25 </span>
+<a name="l00425"></a><a class="code" href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb">00425</a> <span class="preprocessor">#define OC_DUPFRAME 1 </span>
+<a name="l00431"></a>00431 <span class="preprocessor">extern const char *theora_version_string(void);</span>
+<a name="l00432"></a>00432 <span class="preprocessor"></span>
+<a name="l00442"></a>00442 <span class="keyword">extern</span> ogg_uint32_t <a class="code" href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8" title="Retrieve a 32-bit version number.">theora_version_number</a>(<span class="keywordtype">void</span>);
+<a name="l00443"></a>00443
+<a name="l00450"></a>00450 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a" title="Initialize the theora encoder.">theora_encode_init</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th, <a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *ti);
+<a name="l00451"></a>00451
+<a name="l00462"></a>00462 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078" title="Submit a YUV buffer to the theora encoder.">theora_encode_YUVin</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *t, <a class="code" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> *yuv);
+<a name="l00463"></a>00463
+<a name="l00476"></a>00476 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3" title="Request the next packet of encoded video.">theora_encode_packetout</a>( <a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *t, <span class="keywordtype">int</span> last_p,
+<a name="l00477"></a>00477 ogg_packet *op);
+<a name="l00478"></a>00478
+<a name="l00489"></a>00489 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be" title="Request a packet containing the initial header.">theora_encode_header</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *t, ogg_packet *op);
+<a name="l00490"></a>00490
+<a name="l00502"></a>00502 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a" title="Request a comment header packet from provided metadata.">theora_encode_comment</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc, ogg_packet *op);
+<a name="l00503"></a>00503
+<a name="l00514"></a>00514 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2" title="Request a packet containing the codebook tables for the stream.">theora_encode_tables</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *t, ogg_packet *op);
+<a name="l00515"></a>00515
+<a name="l00557"></a>00557 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header</a>(<a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *ci, <a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *cc,
+<a name="l00558"></a>00558 ogg_packet *op);
+<a name="l00559"></a>00559
+<a name="l00568"></a>00568 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c" title="Initialize a theora_state handle for decoding.">theora_decode_init</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th, <a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *c);
+<a name="l00569"></a>00569
+<a name="l00577"></a>00577 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975" title="Input a packet containing encoded data into the theora decoder.">theora_decode_packetin</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th,ogg_packet *op);
+<a name="l00578"></a>00578
+<a name="l00589"></a>00589 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa" title="Output the next available frame of decoded YUV data.">theora_decode_YUVout</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th,<a class="code" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> *yuv);
+<a name="l00590"></a>00590
+<a name="l00603"></a>00603 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b" title="Report whether a theora packet is a header or not This function does no verification...">theora_packet_isheader</a>(ogg_packet *op);
+<a name="l00604"></a>00604
+<a name="l00615"></a>00615 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2" title="Report whether a theora packet is a keyframe or not.">theora_packet_iskeyframe</a>(ogg_packet *op);
+<a name="l00616"></a>00616
+<a name="l00642"></a>00642 <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02" title="Report the granulepos shift radix.">theora_granule_shift</a>(<a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *ti);
+<a name="l00643"></a>00643
+<a name="l00660"></a>00660 <span class="keyword">extern</span> ogg_int64_t <a class="code" href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269" title="Convert a granulepos to an absolute frame index, starting at 0.">theora_granule_frame</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th,ogg_int64_t granulepos);
+<a name="l00661"></a>00661
+<a name="l00677"></a>00677 <span class="keyword">extern</span> <span class="keywordtype">double</span> <a class="code" href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6" title="Convert a granulepos to absolute time in seconds.">theora_granule_time</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th,ogg_int64_t granulepos);
+<a name="l00678"></a>00678
+<a name="l00685"></a>00685 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90" title="Initialize a theora_info structure.">theora_info_init</a>(<a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *c);
+<a name="l00686"></a>00686
+<a name="l00692"></a>00692 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d" title="Clear a theora_info structure.">theora_info_clear</a>(<a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *c);
+<a name="l00693"></a>00693
+<a name="l00698"></a>00698 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb" title="Free all internal data associated with a theora_state handle.">theora_clear</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *t);
+<a name="l00699"></a>00699
+<a name="l00704"></a>00704 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0" title="Initialize an allocated theora_comment structure.">theora_comment_init</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc);
+<a name="l00705"></a>00705
+<a name="l00718"></a>00718 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4" title="Add a comment to an initialized theora_comment structure.">theora_comment_add</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc, <span class="keywordtype">char</span> *comment);
+<a name="l00719"></a>00719
+<a name="l00732"></a>00732 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92" title="Add a comment to an initialized theora_comment structure.">theora_comment_add_tag</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc,
+<a name="l00733"></a>00733 <span class="keywordtype">char</span> *tag, <span class="keywordtype">char</span> *value);
+<a name="l00734"></a>00734
+<a name="l00749"></a>00749 <span class="keyword">extern</span> <span class="keywordtype">char</span> *<a class="code" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc" title="Look up a comment value by tag.">theora_comment_query</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc, <span class="keywordtype">char</span> *tag, <span class="keywordtype">int</span> count);
+<a name="l00750"></a>00750
+<a name="l00760"></a>00760 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b" title="Look up the number of instances of a tag.">theora_comment_query_count</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc, <span class="keywordtype">char</span> *tag);
+<a name="l00761"></a>00761
+<a name="l00766"></a>00766 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f" title="Clear an allocated theora_comment struct so that it can be freed.">theora_comment_clear</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc);
+<a name="l00767"></a>00767
+<a name="l00776"></a>00776 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9" title="Encoder control function.">theora_control</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th,<span class="keywordtype">int</span> req,<span class="keywordtype">void</span> *buf,<span class="keywordtype">size_t</span> buf_sz);
+<a name="l00777"></a>00777
+<a name="l00778"></a>00778 <span class="comment">/* @} */</span> <span class="comment">/* end oldfuncs doxygen group */</span>
+<a name="l00779"></a>00779
+<a name="l00780"></a>00780 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00781"></a>00781 <span class="preprocessor"></span>}
+<a name="l00782"></a>00782 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
+<a name="l00783"></a>00783
+<a name="l00784"></a>00784 <span class="preprocessor">#endif </span><span class="comment">/* _O_THEORA_H_ */</span>
+</pre></div></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/theoradec_8h.html b/doc/libtheora/html/theoradec_8h.html
new file mode 100644
index 0000000..1f5432a
--- /dev/null
+++ b/doc/libtheora/html/theoradec_8h.html
@@ -0,0 +1,361 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theoradec.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>theoradec.h File Reference</h1>
+<p>The <code>libtheoradec</code> C decoding API.
+<a href="#_details">More...</a></p>
+<code>#include &lt;stddef.h&gt;</code><br/>
+<code>#include &lt;ogg/ogg.h&gt;</code><br/>
+<code>#include &quot;<a class="el" href="codec_8h_source.html">codec.h</a>&quot;</code><br/>
+
+<p><a href="theoradec_8h_source.html">Go to the source code of this file.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__stripe__callback.html">th_stripe_callback</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The striped decode callback data to pass to <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a>. <a href="structth__stripe__callback.html#_details">More...</a><br/></td></tr>
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a0d78767a326c34dbf84d5b845cba7b4a">_O_THEORA_THEORADEC_H_</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">th_decode_ctl() codes</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp638dfd34390d0a936dbf76caf938d78d"></a><a class="anchor" id="decctlcodes"></a> These are the available request codes for <a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1" title="Decoder control function.">th_decode_ctl()</a>. By convention, these are odd, to distinguish them from the <a class="el" href="theoraenc_8h.html#encctlcodes">encoder control codes</a>. Keep any experimental or vendor-specific values above <code>0x8000</code>. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">TH_DECCTL_GET_PPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the maximum post-processing level. <a href="#ab31f251c9319f2140d247585d30b3d07"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">TH_DECCTL_SET_PPLEVEL</a>&nbsp;&nbsp;&nbsp;(3)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the post-processing level. <a href="#a87774c35e1a755a84e2d705b38ebef0d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">TH_DECCTL_SET_GRANPOS</a>&nbsp;&nbsp;&nbsp;(5)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the granule position. <a href="#a1e870c654d35394f0d490045df04e0f5"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">TH_DECCTL_SET_STRIPE_CB</a>&nbsp;&nbsp;&nbsp;(7)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the striped decode callback function. <a href="#ac95cc9e109474b0fa4bb920ab2cfdf1e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">TH_DECCTL_SET_TELEMETRY_MBMODE</a>&nbsp;&nbsp;&nbsp;(9)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enables telemetry and sets the macroblock display mode. <a href="#a8d5e0b9b4c8898f93f241acbeb7e7ffb"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">TH_DECCTL_SET_TELEMETRY_MV</a>&nbsp;&nbsp;&nbsp;(11)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enables telemetry and sets the motion vector display mode. <a href="#a829285a03d24832c583f33c6357df8aa"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">TH_DECCTL_SET_TELEMETRY_QI</a>&nbsp;&nbsp;&nbsp;(13)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enables telemetry and sets the adaptive quantization display mode. <a href="#ae3e2f7674ad92fe67b63915d48c9df5b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">TH_DECCTL_SET_TELEMETRY_BITS</a>&nbsp;&nbsp;&nbsp;(15)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enables telemetry and sets the bitstream breakdown visualization mode. <a href="#a7f43fec07486f8a5f00e92aab7d44a25"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">th_stripe_decoded_func</a> )(void *_ctx, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _buf, int _yfrag0, int _yfrag_end)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A callback function for striped decode. <a href="#a25dfc8713157545abd81eda476ca4b54"></a><br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Decoder state</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp20ad7456b6a1ebc1cb57f3e51d4d7bc3"></a>The following data structures are opaque, and their contents are not publicly defined by this API.</p>
+<p>Referring to their internals directly is unsupported, and may break without warning. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The decoder context. <a href="#a843d70bb02563885a8d54b9c1a781729"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Setup information. <a href="#ab71cd2657455cc27d6c0127c66a89f28"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Functions for decoding</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9d29c94aa62f20426aa5ff062c7daedd"></a>You must link to <code>libtheoradec</code> if you use any of the functions in this section.</p>
+<p>The functions are listed in the order they are used in a typical decode. The basic steps are:</p>
+<ul>
+<li>Parse the header packets by repeatedly calling <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>.</li>
+<li>Allocate a <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle with <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e" title="Allocates a decoder instance.">th_decode_alloc()</a>.</li>
+<li>Call <a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27" title="Releases all storage used for the decoder setup information.">th_setup_free()</a> to free any memory used for codec setup information.</li>
+<li>Perform any additional decoder configuration with <a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1" title="Decoder control function.">th_decode_ctl()</a>.</li>
+<li>For each video data packet:<ul>
+<li>Submit the packet to the decoder via <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>.</li>
+<li>Retrieve the uncompressed video data via <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a>.</li>
+</ul>
+</li>
+<li>Call <a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0" title="Frees an allocated decoder instance.">th_decode_free()</a> to release all decoder memory. </li>
+</ul>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50">th_decode_headerin</a> (<a class="el" href="structth__info.html">th_info</a> *_info, <a class="el" href="structth__comment.html">th_comment</a> *_tc, <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> **_setup, ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decodes the header packets of a Theora stream. <a href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e">th_decode_alloc</a> (const <a class="el" href="structth__info.html">th_info</a> *_info, const <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *_setup)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocates a decoder instance. <a href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27">th_setup_free</a> (<a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *_setup)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Releases all storage used for the decoder setup information. <a href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1">th_decode_ctl</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, int _req, void *_buf, size_t _buf_sz)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decoder control function. <a href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb">th_decode_packetin</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, const ogg_packet *_op, ogg_int64_t *_granpos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submits a packet containing encoded video data to the decoder. <a href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb">th_decode_ycbcr_out</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _ycbcr)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Outputs the next available frame of decoded Y'CbCr data. <a href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0">th_decode_free</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Frees an allocated decoder instance. <a href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The <code>libtheoradec</code> C decoding API. </p>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="a0d78767a326c34dbf84d5b845cba7b4a"></a><!-- doxytag: member="theoradec.h::_O_THEORA_THEORADEC_H_" ref="a0d78767a326c34dbf84d5b845cba7b4a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define _O_THEORA_THEORADEC_H_&nbsp;&nbsp;&nbsp;(1)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab31f251c9319f2140d247585d30b3d07"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_GET_PPLEVEL_MAX" ref="ab31f251c9319f2140d247585d30b3d07" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_DECCTL_GET_PPLEVEL_MAX&nbsp;&nbsp;&nbsp;(1)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Gets the maximum post-processing level. </p>
+<p>The decoder supports a post-processing filter that can improve the appearance of the decoded images. This returns the highest level setting for this post-processor, corresponding to maximum improvement and computational expense.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td>int: The maximum post-processing level. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a1e870c654d35394f0d490045df04e0f5"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_GRANPOS" ref="a1e870c654d35394f0d490045df04e0f5" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_DECCTL_SET_GRANPOS&nbsp;&nbsp;&nbsp;(5)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the granule position. </p>
+<p>Call this after a seek, before decoding the first frame, to ensure that the proper granule position is returned for all subsequent frames. If you track timestamps yourself and do not use the granule position returned by the decoder, then you need not call this function.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>ogg_int64_t</code>: The granule position of the next frame. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(ogg_int64_t)</code>, or the granule position is negative. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a87774c35e1a755a84e2d705b38ebef0d"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_PPLEVEL" ref="a87774c35e1a755a84e2d705b38ebef0d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_DECCTL_SET_PPLEVEL&nbsp;&nbsp;&nbsp;(3)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the post-processing level. </p>
+<p>By default, post-processing is disabled.</p>
+<p>Sets the level of post-processing to use when decoding the compressed stream. This must be a value between zero (off) and the maximum returned by TH_DECCTL_GET_PPLEVEL_MAX.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td>int: The new post-processing level. 0 to disable; larger values use more CPU. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>, or the post-processing level is out of bounds. The maximum post-processing level may be implementation-specific, and can be obtained via <a class="el" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07" title="Gets the maximum post-processing level.">TH_DECCTL_GET_PPLEVEL_MAX</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac95cc9e109474b0fa4bb920ab2cfdf1e"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_STRIPE_CB" ref="ac95cc9e109474b0fa4bb920ab2cfdf1e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_DECCTL_SET_STRIPE_CB&nbsp;&nbsp;&nbsp;(7)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the striped decode callback function. </p>
+<p>If set, this function will be called as each piece of a frame is fully decoded in <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>. You can pass in a <a class="el" href="structth__stripe__callback.html" title="The striped decode callback data to pass to TH_DECCTL_SET_STRIPE_CB.">th_stripe_callback</a> with <a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5" title="The callback function pointer.">th_stripe_callback::stripe_decoded</a> set to <code>NULL</code> to disable the callbacks at any point. Enabling striped decode does not prevent you from calling <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a> after the frame is fully decoded.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><a class="el" href="structth__stripe__callback.html" title="The striped decode callback data to pass to TH_DECCTL_SET_STRIPE_CB.">th_stripe_callback</a>: The callback parameters. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(th_stripe_callback)</code>. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7f43fec07486f8a5f00e92aab7d44a25"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_TELEMETRY_BITS" ref="a7f43fec07486f8a5f00e92aab7d44a25" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_DECCTL_SET_TELEMETRY_BITS&nbsp;&nbsp;&nbsp;(15)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Enables telemetry and sets the bitstream breakdown visualization mode. </p>
+
+</div>
+</div>
+<a class="anchor" id="a8d5e0b9b4c8898f93f241acbeb7e7ffb"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_TELEMETRY_MBMODE" ref="a8d5e0b9b4c8898f93f241acbeb7e7ffb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_DECCTL_SET_TELEMETRY_MBMODE&nbsp;&nbsp;&nbsp;(9)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Enables telemetry and sets the macroblock display mode. </p>
+
+</div>
+</div>
+<a class="anchor" id="a829285a03d24832c583f33c6357df8aa"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_TELEMETRY_MV" ref="a829285a03d24832c583f33c6357df8aa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_DECCTL_SET_TELEMETRY_MV&nbsp;&nbsp;&nbsp;(11)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Enables telemetry and sets the motion vector display mode. </p>
+
+</div>
+</div>
+<a class="anchor" id="ae3e2f7674ad92fe67b63915d48c9df5b"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_TELEMETRY_QI" ref="ae3e2f7674ad92fe67b63915d48c9df5b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_DECCTL_SET_TELEMETRY_QI&nbsp;&nbsp;&nbsp;(13)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Enables telemetry and sets the adaptive quantization display mode. </p>
+
+</div>
+</div>
+<hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="a843d70bb02563885a8d54b9c1a781729"></a><!-- doxytag: member="theoradec.h::th_dec_ctx" ref="a843d70bb02563885a8d54b9c1a781729" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The decoder context. </p>
+
+</div>
+</div>
+<a class="anchor" id="ab71cd2657455cc27d6c0127c66a89f28"></a><!-- doxytag: member="theoradec.h::th_setup_info" ref="ab71cd2657455cc27d6c0127c66a89f28" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Setup information. </p>
+<p>This contains auxiliary information (Huffman tables and quantization parameters) decoded from the setup header by <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> to be passed to <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e" title="Allocates a decoder instance.">th_decode_alloc()</a>. It can be re-used to initialize any number of decoders, and can be freed via <a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27" title="Releases all storage used for the decoder setup information.">th_setup_free()</a> at any time. </p>
+
+</div>
+</div>
+<a class="anchor" id="a25dfc8713157545abd81eda476ca4b54"></a><!-- doxytag: member="theoradec.h::th_stripe_decoded_func" ref="a25dfc8713157545abd81eda476ca4b54" args=")(void *_ctx, th_ycbcr_buffer _buf, int _yfrag0, int _yfrag_end)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* <a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">th_stripe_decoded_func</a>)(void *_ctx, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _buf, int _yfrag0, int _yfrag_end)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>A callback function for striped decode. </p>
+<p>This is a function pointer to an application-provided function that will be called each time a section of the image is fully decoded in <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>. This allows the application to process the section immediately, while it is still in cache. Note that the frame is decoded bottom to top, so <em>_yfrag0</em> will steadily decrease with each call until it reaches 0, at which point the full frame is decoded. The number of fragment rows made available in each call depends on the pixel format and the number of post-processing filters enabled, and may not even be constant for the entire frame. If a non-<code>NULL</code> <em>_granpos</em> pointer is passed to <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>, the granule position for the frame will be stored in it before the first callback is made. If an entire frame is dropped (a 0-byte packet), then no callbacks will be made at all for that frame. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>_ctx</em>&nbsp;</td><td>An application-provided context pointer. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_buf</em>&nbsp;</td><td>The image buffer for the decoded frame. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_yfrag0</em>&nbsp;</td><td>The Y coordinate of the first row of 8x8 fragments decoded. Multiply this by 8 to obtain the pixel row number in the luma plane. If the chroma planes are subsampled in the Y direction, this will always be divisible by two. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>_yfrag_end</em>&nbsp;</td><td>The Y coordinate of the first row of 8x8 fragments past the newly decoded section. If the chroma planes are subsampled in the Y direction, this will always be divisible by two. I.e., this section contains fragment rows <code><em>_yfrag0</em> ...<em>_yfrag_end</em> -1</code>. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/theoradec_8h_source.html b/doc/libtheora/html/theoradec_8h_source.html
new file mode 100644
index 0000000..4ea5a7e
--- /dev/null
+++ b/doc/libtheora/html/theoradec_8h_source.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theoradec.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+<h1>theoradec.h</h1><a href="theoradec_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/********************************************************************</span>
+<a name="l00002"></a>00002 <span class="comment"> * *</span>
+<a name="l00003"></a>00003 <span class="comment"> * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. *</span>
+<a name="l00004"></a>00004 <span class="comment"> * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *</span>
+<a name="l00005"></a>00005 <span class="comment"> * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *</span>
+<a name="l00006"></a>00006 <span class="comment"> * IN &apos;COPYING&apos;. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *</span>
+<a name="l00007"></a>00007 <span class="comment"> * *</span>
+<a name="l00008"></a>00008 <span class="comment"> * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009 *</span>
+<a name="l00009"></a>00009 <span class="comment"> * by the Xiph.Org Foundation http://www.xiph.org/ *</span>
+<a name="l00010"></a>00010 <span class="comment"> * *</span>
+<a name="l00011"></a>00011 <span class="comment"> ********************************************************************</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment"> function:</span>
+<a name="l00014"></a>00014 <span class="comment"> last mod: $Id: theora.h,v 1.8 2004/03/15 22:17:32 derf Exp $</span>
+<a name="l00015"></a>00015 <span class="comment"></span>
+<a name="l00016"></a>00016 <span class="comment"> ********************************************************************/</span>
+<a name="l00017"></a>00017
+<a name="l00021"></a>00021 <span class="preprocessor">#if !defined(_O_THEORA_THEORADEC_H_)</span>
+<a name="l00022"></a><a class="code" href="theoradec_8h.html#a0d78767a326c34dbf84d5b845cba7b4a">00022</a> <span class="preprocessor"></span><span class="preprocessor"># define _O_THEORA_THEORADEC_H_ (1)</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"># include &lt;stddef.h&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor"># include &lt;ogg/ogg.h&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor"># include &quot;<a class="code" href="codec_8h.html" title="The shared libtheoradec and libtheoraenc C API.">codec.h</a>&quot;</span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="preprocessor">#if defined(__cplusplus)</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {
+<a name="l00029"></a>00029 <span class="preprocessor">#endif</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span>
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032
+<a name="l00050"></a><a class="code" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">00050</a> <span class="preprocessor">#define TH_DECCTL_GET_PPLEVEL_MAX (1)</span>
+<a name="l00051"></a>00051 <span class="preprocessor"></span>
+<a name="l00067"></a><a class="code" href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">00067</a> <span class="preprocessor">#define TH_DECCTL_SET_PPLEVEL (3)</span>
+<a name="l00068"></a>00068 <span class="preprocessor"></span>
+<a name="l00079"></a><a class="code" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">00079</a> <span class="preprocessor">#define TH_DECCTL_SET_GRANPOS (5)</span>
+<a name="l00080"></a>00080 <span class="preprocessor"></span>
+<a name="l00093"></a><a class="code" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">00093</a> <span class="preprocessor">#define TH_DECCTL_SET_STRIPE_CB (7)</span>
+<a name="l00094"></a>00094 <span class="preprocessor"></span>
+<a name="l00096"></a><a class="code" href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">00096</a> <span class="preprocessor">#define TH_DECCTL_SET_TELEMETRY_MBMODE (9)</span>
+<a name="l00097"></a>00097 <span class="preprocessor"></span>
+<a name="l00098"></a><a class="code" href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">00098</a> <span class="preprocessor">#define TH_DECCTL_SET_TELEMETRY_MV (11)</span>
+<a name="l00099"></a>00099 <span class="preprocessor"></span>
+<a name="l00100"></a><a class="code" href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">00100</a> <span class="preprocessor">#define TH_DECCTL_SET_TELEMETRY_QI (13)</span>
+<a name="l00101"></a>00101 <span class="preprocessor"></span>
+<a name="l00102"></a><a class="code" href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">00102</a> <span class="preprocessor">#define TH_DECCTL_SET_TELEMETRY_BITS (15)</span>
+<a name="l00103"></a>00103 <span class="preprocessor"></span>
+<a name="l00138"></a><a class="code" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">00138</a> <span class="keyword">typedef</span> void (*<a class="code" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54" title="A callback function for striped decode.">th_stripe_decoded_func</a>)(<span class="keywordtype">void</span> *_ctx,<a class="code" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45" title="A complete image buffer for an uncompressed frame.">th_ycbcr_buffer</a> _buf,
+<a name="l00139"></a>00139 <span class="keywordtype">int</span> _yfrag0,<span class="keywordtype">int</span> _yfrag_end);
+<a name="l00140"></a>00140
+<a name="l00142"></a><a class="code" href="structth__stripe__callback.html">00142</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
+<a name="l00145"></a><a class="code" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">00145</a> <span class="keywordtype">void</span> *ctx;
+<a name="l00147"></a><a class="code" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">00147</a> <a class="code" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54" title="A callback function for striped decode.">th_stripe_decoded_func</a> stripe_decoded;
+<a name="l00148"></a>00148 }<a class="code" href="structth__stripe__callback.html" title="The striped decode callback data to pass to TH_DECCTL_SET_STRIPE_CB.">th_stripe_callback</a>;
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151
+<a name="l00159"></a><a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">00159</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> <a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a>;
+<a name="l00166"></a><a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">00166</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> <a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a>;
+<a name="l00231"></a>00231 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin</a>(<a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a> *_info,<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc,
+<a name="l00232"></a>00232 <a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> **_setup,ogg_packet *_op);
+<a name="l00255"></a>00255 <span class="keyword">extern</span> <a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> *<a class="code" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e" title="Allocates a decoder instance.">th_decode_alloc</a>(<span class="keyword">const</span> <a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a> *_info,
+<a name="l00256"></a>00256 <span class="keyword">const</span> <a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> *_setup);
+<a name="l00262"></a>00262 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27" title="Releases all storage used for the decoder setup information.">th_setup_free</a>(<a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> *_setup);
+<a name="l00271"></a>00271 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1" title="Decoder control function.">th_decode_ctl</a>(<a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> *_dec,<span class="keywordtype">int</span> _req,<span class="keywordtype">void</span> *_buf,
+<a name="l00272"></a>00272 <span class="keywordtype">size_t</span> _buf_sz);
+<a name="l00294"></a>00294 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin</a>(<a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> *_dec,<span class="keyword">const</span> ogg_packet *_op,
+<a name="l00295"></a>00295 ogg_int64_t *_granpos);
+<a name="l00311"></a>00311 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&amp;#39;CbCr data.">th_decode_ycbcr_out</a>(<a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> *_dec,
+<a name="l00312"></a>00312 <a class="code" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45" title="A complete image buffer for an uncompressed frame.">th_ycbcr_buffer</a> _ycbcr);
+<a name="l00315"></a>00315 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0" title="Frees an allocated decoder instance.">th_decode_free</a>(<a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> *_dec);
+<a name="l00318"></a>00318
+<a name="l00319"></a>00319
+<a name="l00320"></a>00320
+<a name="l00321"></a>00321 <span class="preprocessor">#if defined(__cplusplus)</span>
+<a name="l00322"></a>00322 <span class="preprocessor"></span>}
+<a name="l00323"></a>00323 <span class="preprocessor">#endif</span>
+<a name="l00324"></a>00324 <span class="preprocessor"></span>
+<a name="l00325"></a>00325 <span class="preprocessor">#endif</span>
+</pre></div></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/theoraenc_8h.html b/doc/libtheora/html/theoraenc_8h.html
new file mode 100644
index 0000000..ab896db
--- /dev/null
+++ b/doc/libtheora/html/theoraenc_8h.html
@@ -0,0 +1,674 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theoraenc.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>theoraenc.h File Reference</h1>
+<p>The <code>libtheoraenc</code> C encoding API.
+<a href="#_details">More...</a></p>
+<code>#include &lt;stddef.h&gt;</code><br/>
+<code>#include &lt;ogg/ogg.h&gt;</code><br/>
+<code>#include &quot;<a class="el" href="codec_8h_source.html">codec.h</a>&quot;</code><br/>
+
+<p><a href="theoraenc_8h_source.html">Go to the source code of this file.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#ab915dd90f069a2431454fd62365e9381">_O_THEORA_THEORAENC_H_</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">th_encode_ctl() codes</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp652c8d6bf1cea216ce117704a398b5f8"></a><a class="anchor" id="encctlcodes"></a> These are the available request codes for <a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9" title="Encoder control function.">th_encode_ctl()</a>. By convention, these are even, to distinguish them from the <a class="el" href="theoradec_8h.html#decctlcodes">decoder control codes</a>. Keep any experimental or vendor-specific values above <code>0x8000</code>. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">TH_ENCCTL_SET_HUFFMAN_CODES</a>&nbsp;&nbsp;&nbsp;(0)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the Huffman tables to use. <a href="#a0165348788e560a19b7c61ae8f0c2283"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">TH_ENCCTL_SET_QUANT_PARAMS</a>&nbsp;&nbsp;&nbsp;(2)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the quantization parameters to use. <a href="#a3befcdd66678f8d27034f9c4b16d1b9c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</a>&nbsp;&nbsp;&nbsp;(4)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the maximum distance between key frames. <a href="#a27e755e15b4b5604c54974b304037a49"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">TH_ENCCTL_SET_VP3_COMPATIBLE</a>&nbsp;&nbsp;&nbsp;(10)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disables any encoder features that would prevent lossless transcoding back to VP3. <a href="#a382d685a39a34d8e6ba76b00d804efd8"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">TH_ENCCTL_GET_SPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(12)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the maximum speed level. <a href="#a9baf5bdd206e80c78a8fd44687e89783"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">TH_ENCCTL_SET_SPLEVEL</a>&nbsp;&nbsp;&nbsp;(14)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the speed level. <a href="#abd9fbcb6a25a77d991d3620164fe59d6"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">TH_ENCCTL_GET_SPLEVEL</a>&nbsp;&nbsp;&nbsp;(16)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the current speed level. <a href="#a114b7c552f50b7b8d881a39489af1f61"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">TH_ENCCTL_SET_DUP_COUNT</a>&nbsp;&nbsp;&nbsp;(18)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the number of duplicates of the next frame to produce. <a href="#a8bb9b05471c42a09f8684a2583b8a1df"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">TH_ENCCTL_SET_RATE_FLAGS</a>&nbsp;&nbsp;&nbsp;(20)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Modifies the default bitrate management behavior. <a href="#a026502e08fbe1af0a1063f39bd18129c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">TH_ENCCTL_SET_RATE_BUFFER</a>&nbsp;&nbsp;&nbsp;(22)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the size of the bitrate management bit reservoir as a function of number of frames. <a href="#aaefb515876b2a180ad5c3120fc584a52"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">TH_ENCCTL_2PASS_OUT</a>&nbsp;&nbsp;&nbsp;(24)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enable pass 1 of two-pass encoding mode and retrieve the first pass metrics. <a href="#ac3751b9c3838888ec2e3f0b0d2823282"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">TH_ENCCTL_2PASS_IN</a>&nbsp;&nbsp;&nbsp;(26)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submits two-pass encoding metric data collected the first encoding pass to the second pass. <a href="#a4a84f982cdd9a3e3c803a29bbde9df0b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">TH_ENCCTL_SET_QUALITY</a>&nbsp;&nbsp;&nbsp;(28)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the current encoding quality. <a href="#aac087983fa951b9148c9db6bc2e81ef4"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">TH_ENCCTL_SET_BITRATE</a>&nbsp;&nbsp;&nbsp;(30)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the current encoding bitrate. <a href="#a9b969df55ecad1acd1ae207fad42592e"></a><br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">TH_ENCCTL_SET_RATE_FLAGS flags</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp6d70796e675cce22589d15a73cb3a16b"></a><a class="anchor" id="ratectlflags"></a> These are the flags available for use with <a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c" title="Modifies the default bitrate management behavior.">TH_ENCCTL_SET_RATE_FLAGS</a>. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">TH_RATECTL_DROP_FRAMES</a>&nbsp;&nbsp;&nbsp;(0x1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Drop frames to keep within bitrate buffer constraints. <a href="#a3e7fab53b902b54135522ba286f45e33"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">TH_RATECTL_CAP_OVERFLOW</a>&nbsp;&nbsp;&nbsp;(0x2)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ignore bitrate buffer overflows. <a href="#a32f9983b344a431334493cefb0b9337c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">TH_RATECTL_CAP_UNDERFLOW</a>&nbsp;&nbsp;&nbsp;(0x4)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ignore bitrate buffer underflows. <a href="#ad0d62d9dce542caf5296b03b97e020a6"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Encoder state</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp4ebc85bd8522a8b6128225c02b31c8b7"></a>The following data structure is opaque, and its contents are not publicly defined by this API.</p>
+<p>Referring to its internals directly is unsupported, and may break without warning. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The encoder context. <a href="#af5cc40472b925456d42526a035d66edd"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Functions for encoding</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpc58fb8743a7ca83eb895d57e29e032c8"></a>You must link to <code>libtheoraenc</code> and <code>libtheoradec</code> if you use any of the functions in this section.</p>
+<p>The functions are listed in the order they are used in a typical encode. The basic steps are:</p>
+<ul>
+<li>Fill in a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure with details on the format of the video you wish to encode.</li>
+<li>Allocate a <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle with <a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7" title="Allocates an encoder instance.">th_encode_alloc()</a>.</li>
+<li>Perform any additional encoder configuration required with <a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9" title="Encoder control function.">th_encode_ctl()</a>.</li>
+<li>Repeatedly call <a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408" title="Outputs the next header packet.">th_encode_flushheader()</a> to retrieve all the header packets.</li>
+<li>For each uncompressed frame:<ul>
+<li>Submit the uncompressed frame via <a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750" title="Submits an uncompressed frame to the encoder.">th_encode_ycbcr_in()</a></li>
+<li>Repeatedly call <a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b" title="Retrieves encoded video data packets.">th_encode_packetout()</a> to retrieve any video data packets that are ready.</li>
+</ul>
+</li>
+<li>Call <a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680" title="Frees an allocated encoder instance.">th_encode_free()</a> to release all encoder memory. </li>
+</ul>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7">th_encode_alloc</a> (const <a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocates an encoder instance. <a href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9">th_encode_ctl</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, int _req, void *_buf, size_t _buf_sz)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Encoder control function. <a href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408">th_encode_flushheader</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, <a class="el" href="structth__comment.html">th_comment</a> *_comments, ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Outputs the next header packet. <a href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750">th_encode_ycbcr_in</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _ycbcr)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submits an uncompressed frame to the encoder. <a href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b">th_encode_packetout</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, int _last, ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves encoded video data packets. <a href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680">th_encode_free</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Frees an allocated encoder instance. <a href="group__encfuncs.html#ga36b23d216532231925c4107894204680"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structth__quant__info.html">th_quant_info</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">TH_VP31_QUANT_INFO</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The quantization parameters used by VP3. <a href="#a3b1b462989f4e7a5a98e6e697f1a7f7d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structth__huff__code.html">th_huff_code</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">TH_VP31_HUFF_CODES</a> [TH_NHUFFMAN_TABLES][TH_NDCT_TOKENS]</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The Huffman tables used by VP3. <a href="#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The <code>libtheoraenc</code> C encoding API. </p>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ab915dd90f069a2431454fd62365e9381"></a><!-- doxytag: member="theoraenc.h::_O_THEORA_THEORAENC_H_" ref="ab915dd90f069a2431454fd62365e9381" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define _O_THEORA_THEORAENC_H_&nbsp;&nbsp;&nbsp;(1)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a4a84f982cdd9a3e3c803a29bbde9df0b"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_2PASS_IN" ref="a4a84f982cdd9a3e3c803a29bbde9df0b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_2PASS_IN&nbsp;&nbsp;&nbsp;(26)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Submits two-pass encoding metric data collected the first encoding pass to the second pass. </p>
+<p>The first call must be made before the first frame is encoded, and a target bitrate must have already been specified to the encoder. It sets the encoder to pass 2 mode implicitly; this cannot be disabled. The encoder may require reading data from some or all of the frames in advance, depending on, e.g., the reservoir size used in the second pass. You must call this function repeatedly before each frame to provide data until either a) it fails to consume all of the data presented or b) all of the pass 1 data has been consumed. In the first case, you must save the remaining data to be presented after the next frame. You can call this function with a NULL argument to get an upper bound on the number of bytes that will be required before the next frame.</p>
+<p>When pass 2 is first enabled, the default bit reservoir is set to the entire file; this gives maximum flexibility but can lead to very high peak rates. You can subsequently set it to another value with <a class="el" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52" title="Sets the size of the bitrate management bit reservoir as a function of number of...">TH_ENCCTL_SET_RATE_BUFFER</a> (e.g., to set it to the keyframe interval for non-live streaming), however, you may then need to provide more data before the next frame.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>char[]</code>: A buffer containing the data returned by <a class="el" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282" title="Enable pass 1 of two-pass encoding mode and retrieve the first pass metrics.">TH_ENCCTL_2PASS_OUT</a> in pass 1. You may pass <code>NULL</code> for <em>_buf</em> to return an upper bound on the number of additional bytes needed before the next frame. The summary data returned at the end of pass 1 must be at the head of the buffer on the first call with a non-<code>NULL</code> <em>_buf</em>, and the placeholder data returned at the start of pass 1 should be omitted. After each call you should advance this buffer by the number of bytes consumed. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>&gt;0</em>&nbsp;</td><td>The number of bytes of metric data required/consumed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>No more data is required before the next frame. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>No target bitrate has been set, or the first call was made after the first frame was submitted for encoding. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_ENOTFORMAT</em>&nbsp;</td><td>The data did not appear to be pass 1 from a compatible implementation of this library. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EBADHEADER</em>&nbsp;</td><td>The data was invalid; this may be returned when attempting to read an aborted pass 1 file that still has the placeholder data in place of the summary data. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac3751b9c3838888ec2e3f0b0d2823282"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_2PASS_OUT" ref="ac3751b9c3838888ec2e3f0b0d2823282" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_2PASS_OUT&nbsp;&nbsp;&nbsp;(24)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Enable pass 1 of two-pass encoding mode and retrieve the first pass metrics. </p>
+<p>Pass 1 mode must be enabled before the first frame is encoded, and a target bitrate must have already been specified to the encoder. Although this does not have to be the exact rate that will be used in the second pass, closer values may produce better results. The first call returns the size of the two-pass header data, along with some placeholder content, and sets the encoder into pass 1 mode implicitly. This call sets the encoder to pass 1 mode implicitly. Then, a subsequent call must be made after each call to <a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750" title="Submits an uncompressed frame to the encoder.">th_encode_ycbcr_in()</a> to retrieve the metrics for that frame. An additional, final call must be made to retrieve the summary data, containing such information as the total number of frames, etc. This must be stored in place of the placeholder data that was returned in the first call, before the frame metrics data. All of this data must be presented back to the encoder during pass 2 using <a class="el" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b" title="Submits two-pass encoding metric data collected the first encoding pass to the second...">TH_ENCCTL_2PASS_IN</a>.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>&lt;tt&gt;char</em>&nbsp;</td><td>*_buf: Returns a pointer to internal storage containing the two pass metrics data. This storage is only valid until the next call, or until the encoder context is freed, and must be copied by the application. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>&gt;=0</em>&nbsp;</td><td>The number of bytes of metric data available in the returned buffer. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(char *)</code>, no target bitrate has been set, or the first call was made after the first frame was submitted for encoding. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a114b7c552f50b7b8d881a39489af1f61"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_GET_SPLEVEL" ref="a114b7c552f50b7b8d881a39489af1f61" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_GET_SPLEVEL&nbsp;&nbsp;&nbsp;(16)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Gets the current speed level. </p>
+<p>The default speed level may vary according to encoder implementation, but if this control code is not supported (it returns <a class="el" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe" title="The specified function is not implemented.">TH_EIMPL</a>), the default may be assumed to be the slowest available speed (0). The maximum encoding speed level may be implementation- and encoding mode-specific, and can be obtained via <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783" title="Gets the maximum speed level.">TH_ENCCTL_GET_SPLEVEL_MAX</a>.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The current encoding speed level. 0 is slowest, larger values use less CPU. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a9baf5bdd206e80c78a8fd44687e89783"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_GET_SPLEVEL_MAX" ref="a9baf5bdd206e80c78a8fd44687e89783" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_GET_SPLEVEL_MAX&nbsp;&nbsp;&nbsp;(12)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Gets the maximum speed level. </p>
+<p>Higher speed levels favor quicker encoding over better quality per bit. Depending on the encoding mode, and the internal algorithms used, quality may actually improve, but in this case bitrate will also likely increase. In any case, overall rate/distortion performance will probably decrease. The maximum value, and the meaning of each value, may change depending on the current encoding mode (VBR vs. constant quality, etc.).</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The maximum encoding speed level. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a9b969df55ecad1acd1ae207fad42592e"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_BITRATE" ref="a9b969df55ecad1acd1ae207fad42592e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_SET_BITRATE&nbsp;&nbsp;&nbsp;(30)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the current encoding bitrate. </p>
+<p>Once a bitrate is set, the encoder must use a rate-controlled mode for all future frames (this restriction may be relaxed in a future version). If it is set before the headers are emitted, the target bitrate encoded in them will be updated. Due to the buffer delay, the exact bitrate of each section of the encode is not guaranteed. The encoder may have already used more bits than allowed for the frames it has encoded, expecting to make them up in future frames, or it may have used fewer, holding the excess in reserve. The exact transition between the two bitrates is not well-defined by this API, but may be affected by flags set with <a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c" title="Modifies the default bitrate management behavior.">TH_ENCCTL_SET_RATE_FLAGS</a>. After a number of frames equal to the buffer delay, one may expect further output to average at the target bitrate.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>long</code>: The new target bitrate, in bits per second. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>The target bitrate was not positive. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a8bb9b05471c42a09f8684a2583b8a1df"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_DUP_COUNT" ref="a8bb9b05471c42a09f8684a2583b8a1df" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_SET_DUP_COUNT&nbsp;&nbsp;&nbsp;(18)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the number of duplicates of the next frame to produce. </p>
+<p>Although libtheora can encode duplicate frames very cheaply, it costs some amount of CPU to detect them, and a run of duplicates cannot span a keyframe boundary. This control code tells the encoder to produce the specified number of extra duplicates of the next frame. This allows the encoder to make smarter keyframe placement decisions and rate control decisions, and reduces CPU usage as well, when compared to just submitting the same frame for encoding multiple times. This setting only applies to the next frame submitted for encoding. You MUST call <a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b" title="Retrieves encoded video data packets.">th_encode_packetout()</a> repeatedly until it returns 0, or the extra duplicate frames will be lost.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The number of duplicates to produce. If this is negative or zero, no duplicates will be produced. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>, or the number of duplicates is greater than or equal to the maximum keyframe interval. In the latter case, NO duplicate frames will be produced. You must ensure that the maximum keyframe interval is set larger than the maximum number of duplicates you will ever wish to insert prior to encoding. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0165348788e560a19b7c61ae8f0c2283"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_HUFFMAN_CODES" ref="a0165348788e560a19b7c61ae8f0c2283" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_SET_HUFFMAN_CODES&nbsp;&nbsp;&nbsp;(0)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the Huffman tables to use. </p>
+<p>The tables are copied, not stored by reference, so they can be freed after this call. <code>NULL</code> may be specified to revert to the default tables.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code><a class="el" href="structth__huff__code.html" title="A Huffman code for a Theora DCT token.">th_huff_code</a>[<a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42" title="The number of Huffman tables used by Theora.">TH_NHUFFMAN_TABLES</a>][<a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422" title="The number of DCT token values in each table.">TH_NDCT_TOKENS</a>]</code> </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>Encoding has already begun or one or more of the given tables is not full or prefix-free, <em>_buf</em> is <code>NULL</code> and <em>_buf_sz</em> is not zero, or <em>_buf</em> is non-<code>NULL</code> and <em>_buf_sz</em> is not <code>sizeof(<a class="el" href="structth__huff__code.html" title="A Huffman code for a Theora DCT token.">th_huff_code</a>)*<a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42" title="The number of Huffman tables used by Theora.">TH_NHUFFMAN_TABLES</a>*<a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422" title="The number of DCT token values in each table.">TH_NDCT_TOKENS</a></code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a27e755e15b4b5604c54974b304037a49"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE" ref="a27e755e15b4b5604c54974b304037a49" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE&nbsp;&nbsp;&nbsp;(4)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the maximum distance between key frames. </p>
+<p>This can be changed during an encode, but will be bounded by <code>1&lt;&lt;<a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position...">th_info::keyframe_granule_shift</a></code>. If it is set before encoding begins, <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position...">th_info::keyframe_granule_shift</a> will be enlarged appropriately.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>ogg_uint32_t</code>: The maximum distance between key frames. </td></tr>
+ <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>ogg_uint32_t</code>: The actual maximum distance set. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(ogg_uint32_t)</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aac087983fa951b9148c9db6bc2e81ef4"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_QUALITY" ref="aac087983fa951b9148c9db6bc2e81ef4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_SET_QUALITY&nbsp;&nbsp;&nbsp;(28)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the current encoding quality. </p>
+<p>This is only valid so long as no bitrate has been specified, either through the <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct used to initialize the encoder or through <a class="el" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e" title="Sets the current encoding bitrate.">TH_ENCCTL_SET_BITRATE</a> (this restriction may be relaxed in a future version). If it is set before the headers are emitted, the target quality encoded in them will be updated.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The new target quality, in the range 0...63, inclusive. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>A target bitrate has already been specified, or the quality index was not in the range 0...63. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a3befcdd66678f8d27034f9c4b16d1b9c"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_QUANT_PARAMS" ref="a3befcdd66678f8d27034f9c4b16d1b9c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_SET_QUANT_PARAMS&nbsp;&nbsp;&nbsp;(2)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the quantization parameters to use. </p>
+<p>The parameters are copied, not stored by reference, so they can be freed after this call. <code>NULL</code> may be specified to revert to the default parameters.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><a class="el" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>Encoding has already begun, <em>_buf</em> is <code>NULL</code> and <em>_buf_sz</em> is not zero, or <em>_buf</em> is non-<code>NULL</code> and <em>_buf_sz</em> is not <code>sizeof(<a class="el" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a>)</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aaefb515876b2a180ad5c3120fc584a52"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_RATE_BUFFER" ref="aaefb515876b2a180ad5c3120fc584a52" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_SET_RATE_BUFFER&nbsp;&nbsp;&nbsp;(22)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the size of the bitrate management bit reservoir as a function of number of frames. </p>
+<p>The reservoir size affects how quickly bitrate management reacts to instantaneous changes in the video complexity. Larger reservoirs react more slowly, and provide better overall quality, but require more buffering by a client, adding more latency to live streams. By default, libtheora sets the reservoir to the maximum distance between keyframes, subject to a minimum and maximum limit. This call may be used to increase or decrease the reservoir, increasing or decreasing the allowed temporary variance in bitrate. An implementation may impose some limits on the size of a reservoir it can handle, in which case the actual reservoir size may not be exactly what was requested. The actual value set will be returned.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: Requested size of the reservoir measured in frames. </td></tr>
+ <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The actual size of the reservoir set. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>, or rate control is not enabled. The buffer has an implementation defined minimum and maximum size and the value in _buf will be adjusted to match the actual value set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a026502e08fbe1af0a1063f39bd18129c"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_RATE_FLAGS" ref="a026502e08fbe1af0a1063f39bd18129c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_SET_RATE_FLAGS&nbsp;&nbsp;&nbsp;(20)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Modifies the default bitrate management behavior. </p>
+<p>Use to allow or disallow frame dropping, and to enable or disable capping bit reservoir overflows and underflows. See <a class="el" href="theoraenc_8h.html#encctlcodes">the list of available flags</a>. The flags are set by default to <code><a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33" title="Drop frames to keep within bitrate buffer constraints.">TH_RATECTL_DROP_FRAMES</a>|<a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c" title="Ignore bitrate buffer overflows.">TH_RATECTL_CAP_OVERFLOW</a></code>.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: Any combination of <a class="el" href="theoraenc_8h.html#ratectlflags">the available flags</a>:</p>
+<ul>
+<li><a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33" title="Drop frames to keep within bitrate buffer constraints.">TH_RATECTL_DROP_FRAMES</a>: Enable frame dropping.</li>
+<li><a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c" title="Ignore bitrate buffer overflows.">TH_RATECTL_CAP_OVERFLOW</a>: Don't bank excess bits for later use.</li>
+<li><a class="el" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6" title="Ignore bitrate buffer underflows.">TH_RATECTL_CAP_UNDERFLOW</a>: Don't try to make up shortfalls later. </li>
+</ul>
+</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code> or rate control is not enabled. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="abd9fbcb6a25a77d991d3620164fe59d6"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_SPLEVEL" ref="abd9fbcb6a25a77d991d3620164fe59d6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_SET_SPLEVEL&nbsp;&nbsp;&nbsp;(14)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the speed level. </p>
+<p>The current speed level may be retrieved using <a class="el" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61" title="Gets the current speed level.">TH_ENCCTL_GET_SPLEVEL</a>.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The new encoding speed level. 0 is slowest, larger values use less CPU. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>, or the encoding speed level is out of bounds. The maximum encoding speed level may be implementation- and encoding mode-specific, and can be obtained via <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783" title="Gets the maximum speed level.">TH_ENCCTL_GET_SPLEVEL_MAX</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a382d685a39a34d8e6ba76b00d804efd8"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_VP3_COMPATIBLE" ref="a382d685a39a34d8e6ba76b00d804efd8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_ENCCTL_SET_VP3_COMPATIBLE&nbsp;&nbsp;&nbsp;(10)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Disables any encoder features that would prevent lossless transcoding back to VP3. </p>
+<p>This primarily means disabling block-adaptive quantization and always coding all four luma blocks in a macro block when 4MV is used. It also includes using the VP3 quantization tables and Huffman codes; if you set them explicitly after calling this function, the resulting stream will not be VP3-compatible. If you enable VP3-compatibility when encoding 4:2:2 or 4:4:4 source material, or when using a picture region smaller than the full frame (e.g. a non-multiple-of-16 width or height), then non-VP3 bitstream features will still be disabled, but the stream will still not be VP3-compatible, as VP3 was not capable of encoding such formats. If you call this after encoding has already begun, then the quantization tables and codebooks cannot be changed, but the frame-level features will be enabled or disabled as requested.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: a non-zero value to enable VP3 compatibility, or 0 to disable it (the default). </td></tr>
+ <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: 1 if all bitstream features required for VP3-compatibility could be set, and 0 otherwise. The latter will be returned if the pixel format is not 4:2:0, the picture region is smaller than the full frame, or if encoding has begun, preventing the quantization tables and codebooks from being set. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a32f9983b344a431334493cefb0b9337c"></a><!-- doxytag: member="theoraenc.h::TH_RATECTL_CAP_OVERFLOW" ref="a32f9983b344a431334493cefb0b9337c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_RATECTL_CAP_OVERFLOW&nbsp;&nbsp;&nbsp;(0x2)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Ignore bitrate buffer overflows. </p>
+<p>If the encoder uses so few bits that the reservoir of available bits overflows, ignore the excess. The encoder will not try to use these extra bits in future frames. At high rates this may cause the result to be undersized, but allows a client to play the stream using a finite buffer; it should normally be enabled. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad0d62d9dce542caf5296b03b97e020a6"></a><!-- doxytag: member="theoraenc.h::TH_RATECTL_CAP_UNDERFLOW" ref="ad0d62d9dce542caf5296b03b97e020a6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_RATECTL_CAP_UNDERFLOW&nbsp;&nbsp;&nbsp;(0x4)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Ignore bitrate buffer underflows. </p>
+<p>If the encoder uses so many bits that the reservoir of available bits underflows, ignore the deficit. The encoder will not try to make up these extra bits in future frames. At low rates this may cause the result to be oversized; it should normally be disabled. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3e7fab53b902b54135522ba286f45e33"></a><!-- doxytag: member="theoraenc.h::TH_RATECTL_DROP_FRAMES" ref="a3e7fab53b902b54135522ba286f45e33" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define TH_RATECTL_DROP_FRAMES&nbsp;&nbsp;&nbsp;(0x1)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Drop frames to keep within bitrate buffer constraints. </p>
+<p>This can have a severe impact on quality, but is the only way to ensure that bitrate targets are met at low rates during sudden bursts of activity. </p>
+
+</div>
+</div>
+<hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="af5cc40472b925456d42526a035d66edd"></a><!-- doxytag: member="theoraenc.h::th_enc_ctx" ref="af5cc40472b925456d42526a035d66edd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The encoder context. </p>
+
+</div>
+</div>
+<hr/><h2>Variable Documentation</h2>
+<a class="anchor" id="aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e"></a><!-- doxytag: member="theoraenc.h::TH_VP31_HUFF_CODES" ref="aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e" args="[TH_NHUFFMAN_TABLES][TH_NDCT_TOKENS]" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="structth__huff__code.html">th_huff_code</a> <a class="el" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">TH_VP31_HUFF_CODES</a>[TH_NHUFFMAN_TABLES][TH_NDCT_TOKENS]</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The Huffman tables used by VP3. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3b1b462989f4e7a5a98e6e697f1a7f7d"></a><!-- doxytag: member="theoraenc.h::TH_VP31_QUANT_INFO" ref="a3b1b462989f4e7a5a98e6e697f1a7f7d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="structth__quant__info.html">th_quant_info</a> <a class="el" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">TH_VP31_QUANT_INFO</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The quantization parameters used by VP3. </p>
+
+</div>
+</div>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/theoraenc_8h_source.html b/doc/libtheora/html/theoraenc_8h_source.html
new file mode 100644
index 0000000..2ead1cf
--- /dev/null
+++ b/doc/libtheora/html/theoraenc_8h_source.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theoraenc.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+<h1>theoraenc.h</h1><a href="theoraenc_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/********************************************************************</span>
+<a name="l00002"></a>00002 <span class="comment"> * *</span>
+<a name="l00003"></a>00003 <span class="comment"> * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. *</span>
+<a name="l00004"></a>00004 <span class="comment"> * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *</span>
+<a name="l00005"></a>00005 <span class="comment"> * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *</span>
+<a name="l00006"></a>00006 <span class="comment"> * IN &apos;COPYING&apos;. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *</span>
+<a name="l00007"></a>00007 <span class="comment"> * *</span>
+<a name="l00008"></a>00008 <span class="comment"> * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009 *</span>
+<a name="l00009"></a>00009 <span class="comment"> * by the Xiph.Org Foundation http://www.xiph.org/ *</span>
+<a name="l00010"></a>00010 <span class="comment"> * *</span>
+<a name="l00011"></a>00011 <span class="comment"> ********************************************************************</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment"> function:</span>
+<a name="l00014"></a>00014 <span class="comment"> last mod: $Id: theora.h,v 1.8 2004/03/15 22:17:32 derf Exp $</span>
+<a name="l00015"></a>00015 <span class="comment"></span>
+<a name="l00016"></a>00016 <span class="comment"> ********************************************************************/</span>
+<a name="l00017"></a>00017
+<a name="l00021"></a>00021 <span class="preprocessor">#if !defined(_O_THEORA_THEORAENC_H_)</span>
+<a name="l00022"></a><a class="code" href="theoraenc_8h.html#ab915dd90f069a2431454fd62365e9381">00022</a> <span class="preprocessor"></span><span class="preprocessor"># define _O_THEORA_THEORAENC_H_ (1)</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"># include &lt;stddef.h&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor"># include &lt;ogg/ogg.h&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor"># include &quot;<a class="code" href="codec_8h.html" title="The shared libtheoradec and libtheoraenc C API.">codec.h</a>&quot;</span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="preprocessor">#if defined(__cplusplus)</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {
+<a name="l00029"></a>00029 <span class="preprocessor">#endif</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span>
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032
+<a name="l00053"></a><a class="code" href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">00053</a> <span class="preprocessor">#define TH_ENCCTL_SET_HUFFMAN_CODES (0)</span>
+<a name="l00054"></a>00054 <span class="preprocessor"></span>
+<a name="l00066"></a><a class="code" href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">00066</a> <span class="preprocessor">#define TH_ENCCTL_SET_QUANT_PARAMS (2)</span>
+<a name="l00067"></a>00067 <span class="preprocessor"></span>
+<a name="l00079"></a><a class="code" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">00079</a> <span class="preprocessor">#define TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE (4)</span>
+<a name="l00080"></a>00080 <span class="preprocessor"></span>
+<a name="l00107"></a><a class="code" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">00107</a> <span class="preprocessor">#define TH_ENCCTL_SET_VP3_COMPATIBLE (10)</span>
+<a name="l00108"></a>00108 <span class="preprocessor"></span>
+<a name="l00121"></a><a class="code" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">00121</a> <span class="preprocessor">#define TH_ENCCTL_GET_SPLEVEL_MAX (12)</span>
+<a name="l00122"></a>00122 <span class="preprocessor"></span>
+<a name="l00135"></a><a class="code" href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">00135</a> <span class="preprocessor">#define TH_ENCCTL_SET_SPLEVEL (14)</span>
+<a name="l00136"></a>00136 <span class="preprocessor"></span>
+<a name="l00149"></a><a class="code" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">00149</a> <span class="preprocessor">#define TH_ENCCTL_GET_SPLEVEL (16)</span>
+<a name="l00150"></a>00150 <span class="preprocessor"></span>
+<a name="l00175"></a><a class="code" href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">00175</a> <span class="preprocessor">#define TH_ENCCTL_SET_DUP_COUNT (18)</span>
+<a name="l00176"></a>00176 <span class="preprocessor"></span>
+<a name="l00195"></a><a class="code" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">00195</a> <span class="preprocessor">#define TH_ENCCTL_SET_RATE_FLAGS (20)</span>
+<a name="l00196"></a>00196 <span class="preprocessor"></span>
+<a name="l00221"></a><a class="code" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">00221</a> <span class="preprocessor">#define TH_ENCCTL_SET_RATE_BUFFER (22)</span>
+<a name="l00222"></a>00222 <span class="preprocessor"></span>
+<a name="l00251"></a><a class="code" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">00251</a> <span class="preprocessor">#define TH_ENCCTL_2PASS_OUT (24)</span>
+<a name="l00252"></a>00252 <span class="preprocessor"></span>
+<a name="l00297"></a><a class="code" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">00297</a> <span class="preprocessor">#define TH_ENCCTL_2PASS_IN (26)</span>
+<a name="l00298"></a>00298 <span class="preprocessor"></span>
+<a name="l00313"></a><a class="code" href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">00313</a> <span class="preprocessor">#define TH_ENCCTL_SET_QUALITY (28)</span>
+<a name="l00314"></a>00314 <span class="preprocessor"></span>
+<a name="l00334"></a><a class="code" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">00334</a> <span class="preprocessor">#define TH_ENCCTL_SET_BITRATE (30)</span>
+<a name="l00335"></a>00335 <span class="preprocessor"></span>
+<a name="l00346"></a><a class="code" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">00346</a> <span class="preprocessor">#define TH_RATECTL_DROP_FRAMES (0x1)</span>
+<a name="l00347"></a>00347 <span class="preprocessor"></span>
+<a name="l00354"></a><a class="code" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">00354</a> <span class="preprocessor">#define TH_RATECTL_CAP_OVERFLOW (0x2)</span>
+<a name="l00355"></a>00355 <span class="preprocessor"></span>
+<a name="l00361"></a><a class="code" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">00361</a> <span class="preprocessor">#define TH_RATECTL_CAP_UNDERFLOW (0x4)</span>
+<a name="l00362"></a>00362 <span class="preprocessor"></span>
+<a name="l00367"></a>00367 <span class="keyword">extern</span> <span class="keyword">const</span> <a class="code" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a> <a class="code" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d" title="The quantization parameters used by VP3.">TH_VP31_QUANT_INFO</a>;
+<a name="l00368"></a>00368
+<a name="l00370"></a>00370 <span class="keyword">extern</span> <span class="keyword">const</span> <a class="code" href="structth__huff__code.html" title="A Huffman code for a Theora DCT token.">th_huff_code</a>
+<a name="l00371"></a>00371 <a class="code" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e" title="The Huffman tables used by VP3.">TH_VP31_HUFF_CODES</a>[<a class="code" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42" title="The number of Huffman tables used by Theora.">TH_NHUFFMAN_TABLES</a>][<a class="code" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422" title="The number of DCT token values in each table.">TH_NDCT_TOKENS</a>];
+<a name="l00372"></a>00372
+<a name="l00373"></a>00373
+<a name="l00374"></a>00374
+<a name="l00382"></a><a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">00382</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> <a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a>;
+<a name="l00412"></a>00412 <span class="keyword">extern</span> <a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *<a class="code" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7" title="Allocates an encoder instance.">th_encode_alloc</a>(<span class="keyword">const</span> <a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a> *_info);
+<a name="l00421"></a>00421 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9" title="Encoder control function.">th_encode_ctl</a>(<a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *_enc,<span class="keywordtype">int</span> _req,<span class="keywordtype">void</span> *_buf,<span class="keywordtype">size_t</span> _buf_sz);
+<a name="l00439"></a>00439 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408" title="Outputs the next header packet.">th_encode_flushheader</a>(<a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *_enc,
+<a name="l00440"></a>00440 <a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_comments,ogg_packet *_op);
+<a name="l00449"></a>00449 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750" title="Submits an uncompressed frame to the encoder.">th_encode_ycbcr_in</a>(<a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *_enc,<a class="code" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45" title="A complete image buffer for an uncompressed frame.">th_ycbcr_buffer</a> _ycbcr);
+<a name="l00473"></a>00473 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b" title="Retrieves encoded video data packets.">th_encode_packetout</a>(<a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *_enc,<span class="keywordtype">int</span> _last,ogg_packet *_op);
+<a name="l00476"></a>00476 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__encfuncs.html#ga36b23d216532231925c4107894204680" title="Frees an allocated encoder instance.">th_encode_free</a>(<a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *_enc);
+<a name="l00479"></a>00479
+<a name="l00480"></a>00480
+<a name="l00481"></a>00481
+<a name="l00482"></a>00482 <span class="preprocessor">#if defined(__cplusplus)</span>
+<a name="l00483"></a>00483 <span class="preprocessor"></span>}
+<a name="l00484"></a>00484 <span class="preprocessor">#endif</span>
+<a name="l00485"></a>00485 <span class="preprocessor"></span>
+<a name="l00486"></a>00486 <span class="preprocessor">#endif</span>
+</pre></div></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/latex/Makefile b/doc/libtheora/latex/Makefile
new file mode 100644
index 0000000..776fcf9
--- /dev/null
+++ b/doc/libtheora/latex/Makefile
@@ -0,0 +1,39 @@
+all: clean refman.dvi
+
+ps: refman.ps
+
+pdf: refman.pdf
+
+ps_2on1: refman_2on1.ps
+
+pdf_2on1: refman_2on1.pdf
+
+refman.ps: refman.dvi
+ dvips -o refman.ps refman.dvi
+
+refman.pdf: refman.ps
+ ps2pdf refman.ps refman.pdf
+
+refman.dvi: refman.tex doxygen.sty
+ echo "Running latex..."
+ latex refman.tex
+ echo "Running makeindex..."
+ makeindex refman.idx
+ echo "Rerunning latex...."
+ latex refman.tex
+ latex_count=5 ; \
+ while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
+ do \
+ echo "Rerunning latex...." ;\
+ latex refman.tex ;\
+ latex_count=`expr $$latex_count - 1` ;\
+ done
+
+refman_2on1.ps: refman.ps
+ psnup -2 refman.ps >refman_2on1.ps
+
+refman_2on1.pdf: refman_2on1.ps
+ ps2pdf refman_2on1.ps refman_2on1.pdf
+
+clean:
+ rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf
diff --git a/doc/libtheora/latex/annotated.tex b/doc/libtheora/latex/annotated.tex
new file mode 100644
index 0000000..b1a0ed0
--- /dev/null
+++ b/doc/libtheora/latex/annotated.tex
@@ -0,0 +1,14 @@
+\section{Data Structures}
+Here are the data structures with brief descriptions:\begin{DoxyCompactList}
+\item\contentsline{section}{{\bf th\_\-comment} (The comment information )}{\pageref{structth__comment}}{}
+\item\contentsline{section}{{\bf th\_\-huff\_\-code} (A Huffman code for a Theora DCT token )}{\pageref{structth__huff__code}}{}
+\item\contentsline{section}{{\bf th\_\-img\_\-plane} (A buffer for a single color plane in an uncompressed image )}{\pageref{structth__img__plane}}{}
+\item\contentsline{section}{{\bf th\_\-info} (Theora bitstream information )}{\pageref{structth__info}}{}
+\item\contentsline{section}{{\bf th\_\-quant\_\-info} (A complete set of quantization parameters )}{\pageref{structth__quant__info}}{}
+\item\contentsline{section}{{\bf th\_\-quant\_\-ranges} (A set of {\itshape qi\/} ranges )}{\pageref{structth__quant__ranges}}{}
+\item\contentsline{section}{{\bf th\_\-stripe\_\-callback} (The striped decode callback data to pass to \doxyref{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}{p.}{theoradec_8h_ac95cc9e109474b0fa4bb920ab2cfdf1e} )}{\pageref{structth__stripe__callback}}{}
+\item\contentsline{section}{{\bf theora\_\-comment} (Comment header metadata )}{\pageref{structtheora__comment}}{}
+\item\contentsline{section}{{\bf theora\_\-info} (Theora bitstream info )}{\pageref{structtheora__info}}{}
+\item\contentsline{section}{{\bf theora\_\-state} (Codec internal state and context )}{\pageref{structtheora__state}}{}
+\item\contentsline{section}{{\bf yuv\_\-buffer} (A YUV buffer for passing uncompressed frames to and from the codec )}{\pageref{structyuv__buffer}}{}
+\end{DoxyCompactList}
diff --git a/doc/libtheora/latex/codec_8h.tex b/doc/libtheora/latex/codec_8h.tex
new file mode 100644
index 0000000..a84076c
--- /dev/null
+++ b/doc/libtheora/latex/codec_8h.tex
@@ -0,0 +1,233 @@
+\section{codec.h File Reference}
+\label{codec_8h}\index{codec.h@{codec.h}}
+
+
+The shared {\ttfamily libtheoradec} and {\ttfamily libtheoraenc} C API.
+{\ttfamily \#include $<$ogg/ogg.h$>$}\par
+\subsection*{Data Structures}
+\begin{DoxyCompactItemize}
+\item
+struct {\bf th\_\-img\_\-plane}
+\begin{DoxyCompactList}\small\item\em A buffer for a single color plane in an uncompressed image. \item\end{DoxyCompactList}\item
+struct {\bf th\_\-info}
+\begin{DoxyCompactList}\small\item\em Theora bitstream information. \item\end{DoxyCompactList}\item
+struct {\bf th\_\-comment}
+\begin{DoxyCompactList}\small\item\em The comment information. \item\end{DoxyCompactList}\item
+struct {\bf th\_\-quant\_\-ranges}
+\begin{DoxyCompactList}\small\item\em A set of {\itshape qi\/} ranges. \item\end{DoxyCompactList}\item
+struct {\bf th\_\-quant\_\-info}
+\begin{DoxyCompactList}\small\item\em A complete set of quantization parameters. \item\end{DoxyCompactList}\item
+struct {\bf th\_\-huff\_\-code}
+\begin{DoxyCompactList}\small\item\em A Huffman code for a Theora DCT token. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Defines}
+\begin{DoxyCompactItemize}
+\item
+\#define {\bf \_\-O\_\-THEORA\_\-CODEC\_\-H\_\-}~(1)
+\item
+\#define {\bf TH\_\-NHUFFMAN\_\-TABLES}~(80)
+\begin{DoxyCompactList}\small\item\em The number of Huffman tables used by Theora. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-NDCT\_\-TOKENS}~(32)
+\begin{DoxyCompactList}\small\item\em The number of DCT token values in each table. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\begin{Indent}{\bf Return codes}\par
+{\em \label{_amgrp800007e5fae550658ee577ca16693452}
+ }\begin{DoxyCompactItemize}
+\item
+\#define {\bf TH\_\-EFAULT}~(-\/1)
+\begin{DoxyCompactList}\small\item\em An invalid pointer was provided. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-EINVAL}~(-\/10)
+\begin{DoxyCompactList}\small\item\em An invalid argument was provided. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-EBADHEADER}~(-\/20)
+\begin{DoxyCompactList}\small\item\em The contents of the header were incomplete, invalid, or unexpected. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENOTFORMAT}~(-\/21)
+\begin{DoxyCompactList}\small\item\em The header does not belong to a Theora stream. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-EVERSION}~(-\/22)
+\begin{DoxyCompactList}\small\item\em The bitstream version is too high. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-EIMPL}~(-\/23)
+\begin{DoxyCompactList}\small\item\em The specified function is not implemented. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-EBADPACKET}~(-\/24)
+\begin{DoxyCompactList}\small\item\em There were errors in the video data packet. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-DUPFRAME}~(1)
+\begin{DoxyCompactList}\small\item\em The decoded packet represented a dropped frame. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\subsection*{Typedefs}
+\begin{DoxyCompactItemize}
+\item
+typedef {\bf th\_\-img\_\-plane} {\bf th\_\-ycbcr\_\-buffer} [3]
+\begin{DoxyCompactList}\small\item\em A complete image buffer for an uncompressed frame. \item\end{DoxyCompactList}\item
+typedef unsigned char {\bf th\_\-quant\_\-base} [64]
+\begin{DoxyCompactList}\small\item\em A single base matrix. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Enumerations}
+\begin{DoxyCompactItemize}
+\item
+enum {\bf th\_\-colorspace} \{ {\bf TH\_\-CS\_\-UNSPECIFIED},
+{\bf TH\_\-CS\_\-ITU\_\-REC\_\-470M},
+{\bf TH\_\-CS\_\-ITU\_\-REC\_\-470BG},
+{\bf TH\_\-CS\_\-NSPACES}
+ \}
+\begin{DoxyCompactList}\small\item\em The currently defined color space tags. \item\end{DoxyCompactList}\item
+enum {\bf th\_\-pixel\_\-fmt} \{ \par
+{\bf TH\_\-PF\_\-420},
+{\bf TH\_\-PF\_\-RSVD},
+{\bf TH\_\-PF\_\-422},
+{\bf TH\_\-PF\_\-444},
+\par
+{\bf TH\_\-PF\_\-NFORMATS}
+ \}
+\begin{DoxyCompactList}\small\item\em The currently defined pixel format tags. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Functions}
+\begin{Indent}{\bf Basic shared functions}\par
+{\em \label{_amgrpb625c22fa07613c734f71c378fe32d7a}
+ }\begin{DoxyCompactItemize}
+\item
+const char $\ast$ {\bf th\_\-version\_\-string} (void)
+\begin{DoxyCompactList}\small\item\em Retrieves a human-\/readable string to identify the library vendor and version. \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf th\_\-version\_\-number} (void)
+\begin{DoxyCompactList}\small\item\em Retrieves the library version number. \item\end{DoxyCompactList}\item
+ogg\_\-int64\_\-t {\bf th\_\-granule\_\-frame} (void $\ast$\_\-encdec, ogg\_\-int64\_\-t \_\-granpos)
+\begin{DoxyCompactList}\small\item\em Converts a granule position to an absolute frame index, starting at {\ttfamily 0}. \item\end{DoxyCompactList}\item
+double {\bf th\_\-granule\_\-time} (void $\ast$\_\-encdec, ogg\_\-int64\_\-t \_\-granpos)
+\begin{DoxyCompactList}\small\item\em Converts a granule position to an absolute time in seconds. \item\end{DoxyCompactList}\item
+int {\bf th\_\-packet\_\-isheader} (ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Determines whether a Theora packet is a header or not. \item\end{DoxyCompactList}\item
+int {\bf th\_\-packet\_\-iskeyframe} (ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Determines whether a theora packet is a key frame or not. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\begin{Indent}{\bf Functions for manipulating header data}\par
+{\em \label{_amgrp14ef5f819e97c870c128539ed1f334e3}
+ }\begin{DoxyCompactItemize}
+\item
+void {\bf th\_\-info\_\-init} ({\bf th\_\-info} $\ast$\_\-info)
+\begin{DoxyCompactList}\small\item\em Initializes a \doxyref{th\_\-info}{p.}{structth__info} structure. \item\end{DoxyCompactList}\item
+void {\bf th\_\-info\_\-clear} ({\bf th\_\-info} $\ast$\_\-info)
+\begin{DoxyCompactList}\small\item\em Clears a \doxyref{th\_\-info}{p.}{structth__info} structure. \item\end{DoxyCompactList}\item
+void {\bf th\_\-comment\_\-init} ({\bf th\_\-comment} $\ast$\_\-tc)
+\begin{DoxyCompactList}\small\item\em Initialize a \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item\end{DoxyCompactList}\item
+void {\bf th\_\-comment\_\-add} ({\bf th\_\-comment} $\ast$\_\-tc, char $\ast$\_\-comment)
+\begin{DoxyCompactList}\small\item\em Add a comment to an initialized \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item\end{DoxyCompactList}\item
+void {\bf th\_\-comment\_\-add\_\-tag} ({\bf th\_\-comment} $\ast$\_\-tc, char $\ast$\_\-tag, char $\ast$\_\-val)
+\begin{DoxyCompactList}\small\item\em Add a comment to an initialized \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item\end{DoxyCompactList}\item
+char $\ast$ {\bf th\_\-comment\_\-query} ({\bf th\_\-comment} $\ast$\_\-tc, char $\ast$\_\-tag, int \_\-count)
+\begin{DoxyCompactList}\small\item\em Look up a comment value by its tag. \item\end{DoxyCompactList}\item
+int {\bf th\_\-comment\_\-query\_\-count} ({\bf th\_\-comment} $\ast$\_\-tc, char $\ast$\_\-tag)
+\begin{DoxyCompactList}\small\item\em Look up the number of instances of a tag. \item\end{DoxyCompactList}\item
+void {\bf th\_\-comment\_\-clear} ({\bf th\_\-comment} $\ast$\_\-tc)
+\begin{DoxyCompactList}\small\item\em Clears a \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+
+
+\subsection{Detailed Description}
+The shared {\ttfamily libtheoradec} and {\ttfamily libtheoraenc} C API. You don't need to include this directly.
+
+\subsection{Define Documentation}
+\index{codec.h@{codec.h}!\_\-O\_\-THEORA\_\-CODEC\_\-H\_\-@{\_\-O\_\-THEORA\_\-CODEC\_\-H\_\-}}
+\index{\_\-O\_\-THEORA\_\-CODEC\_\-H\_\-@{\_\-O\_\-THEORA\_\-CODEC\_\-H\_\-}!codec.h@{codec.h}}
+\subsubsection[{\_\-O\_\-THEORA\_\-CODEC\_\-H\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-O\_\-THEORA\_\-CODEC\_\-H\_\-~(1)}\label{codec_8h_a15352a6a862d25ab00a8f06ea65ee75b}
+\index{codec.h@{codec.h}!TH\_\-DUPFRAME@{TH\_\-DUPFRAME}}
+\index{TH\_\-DUPFRAME@{TH\_\-DUPFRAME}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-DUPFRAME}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DUPFRAME~(1)}\label{codec_8h_ab10e7b64f17a02707fc9348ea9832d09}
+
+
+The decoded packet represented a dropped frame. The player can continue to display the current frame, as the contents of the decoded frame buffer have not changed. \index{codec.h@{codec.h}!TH\_\-EBADHEADER@{TH\_\-EBADHEADER}}
+\index{TH\_\-EBADHEADER@{TH\_\-EBADHEADER}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-EBADHEADER}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-EBADHEADER~(-\/20)}\label{codec_8h_af00f7ecc5242d12a717202537324a510}
+
+
+The contents of the header were incomplete, invalid, or unexpected. \index{codec.h@{codec.h}!TH\_\-EBADPACKET@{TH\_\-EBADPACKET}}
+\index{TH\_\-EBADPACKET@{TH\_\-EBADPACKET}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-EBADPACKET}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-EBADPACKET~(-\/24)}\label{codec_8h_a6efb84e9c2213a8840003eee2847b27f}
+
+
+There were errors in the video data packet. \index{codec.h@{codec.h}!TH\_\-EFAULT@{TH\_\-EFAULT}}
+\index{TH\_\-EFAULT@{TH\_\-EFAULT}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-EFAULT}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-EFAULT~(-\/1)}\label{codec_8h_a4d8d8e34fc5ec39ffa05d61a310a0407}
+
+
+An invalid pointer was provided. \index{codec.h@{codec.h}!TH\_\-EIMPL@{TH\_\-EIMPL}}
+\index{TH\_\-EIMPL@{TH\_\-EIMPL}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-EIMPL}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-EIMPL~(-\/23)}\label{codec_8h_a921c47accc17841f220af5a6afb79efe}
+
+
+The specified function is not implemented. \index{codec.h@{codec.h}!TH\_\-EINVAL@{TH\_\-EINVAL}}
+\index{TH\_\-EINVAL@{TH\_\-EINVAL}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-EINVAL}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-EINVAL~(-\/10)}\label{codec_8h_afbbd9f19fbf292aeb62a37792cecb870}
+
+
+An invalid argument was provided. \index{codec.h@{codec.h}!TH\_\-ENOTFORMAT@{TH\_\-ENOTFORMAT}}
+\index{TH\_\-ENOTFORMAT@{TH\_\-ENOTFORMAT}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-ENOTFORMAT}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENOTFORMAT~(-\/21)}\label{codec_8h_a3dc08a00a9aba231be398f3e31726d9c}
+
+
+The header does not belong to a Theora stream. \index{codec.h@{codec.h}!TH\_\-EVERSION@{TH\_\-EVERSION}}
+\index{TH\_\-EVERSION@{TH\_\-EVERSION}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-EVERSION}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-EVERSION~(-\/22)}\label{codec_8h_ac3a45ef2b24f75259258edc481e3a122}
+
+
+The bitstream version is too high. \index{codec.h@{codec.h}!TH\_\-NDCT\_\-TOKENS@{TH\_\-NDCT\_\-TOKENS}}
+\index{TH\_\-NDCT\_\-TOKENS@{TH\_\-NDCT\_\-TOKENS}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-NDCT\_\-TOKENS}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-NDCT\_\-TOKENS~(32)}\label{codec_8h_a2a44f48084e76a58cae48fb5d47cd422}
+
+
+The number of DCT token values in each table. \index{codec.h@{codec.h}!TH\_\-NHUFFMAN\_\-TABLES@{TH\_\-NHUFFMAN\_\-TABLES}}
+\index{TH\_\-NHUFFMAN\_\-TABLES@{TH\_\-NHUFFMAN\_\-TABLES}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-NHUFFMAN\_\-TABLES}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-NHUFFMAN\_\-TABLES~(80)}\label{codec_8h_a49bf449eae33c5320f0c308f32c6ae42}
+
+
+The number of Huffman tables used by Theora.
+
+\subsection{Typedef Documentation}
+\index{codec.h@{codec.h}!th\_\-quant\_\-base@{th\_\-quant\_\-base}}
+\index{th\_\-quant\_\-base@{th\_\-quant\_\-base}!codec.h@{codec.h}}
+\subsubsection[{th\_\-quant\_\-base}]{\setlength{\rightskip}{0pt plus 5cm}typedef unsigned char {\bf th\_\-quant\_\-base}[64]}\label{codec_8h_a6a1426d16beef8a311d7f0e9d2e96326}
+
+
+A single base matrix. \index{codec.h@{codec.h}!th\_\-ycbcr\_\-buffer@{th\_\-ycbcr\_\-buffer}}
+\index{th\_\-ycbcr\_\-buffer@{th\_\-ycbcr\_\-buffer}!codec.h@{codec.h}}
+\subsubsection[{th\_\-ycbcr\_\-buffer}]{\setlength{\rightskip}{0pt plus 5cm}typedef {\bf th\_\-img\_\-plane} {\bf th\_\-ycbcr\_\-buffer}[3]}\label{codec_8h_a343f7cfabad179cc4fe527cf06873f45}
+
+
+A complete image buffer for an uncompressed frame. The chroma planes may be decimated by a factor of two in either direction, as indicated by \doxyref{th\_\-info::pixel\_\-fmt}{p.}{structth__info_a2301388ef3755c41ab12fd144c1fc54e}. The width and height of the Y' plane must be multiples of 16. They may need to be cropped for display, using the rectangle specified by \doxyref{th\_\-info::pic\_\-x}{p.}{structth__info_a5b3f834bcf141564e7bb14f49101870f}, \doxyref{th\_\-info::pic\_\-y}{p.}{structth__info_a8aacc575cab2dfe3735001c2ad32aa14}, \doxyref{th\_\-info::pic\_\-width}{p.}{structth__info_a5048edf77b141dd3e9a92ca85e317345}, and \doxyref{th\_\-info::pic\_\-height}{p.}{structth__info_a775178474283c5990ba73f9ba7f6b88b}. All samples are 8 bits. \begin{DoxyNote}{Note}
+The term YUV often used to describe a colorspace is ambiguous. The exact parameters of the RGB to YUV conversion process aside, in many contexts the U and V channels actually have opposite meanings. To avoid this confusion, we are explicit: the name of the color channels are Y'CbCr, and they appear in that order, always. The prime symbol denotes that the Y channel is non-\/linear. Cb and Cr stand for \char`\"{}Chroma blue\char`\"{} and \char`\"{}Chroma red\char`\"{}, respectively.
+\end{DoxyNote}
+
+
+\subsection{Enumeration Type Documentation}
+\index{codec.h@{codec.h}!th\_\-colorspace@{th\_\-colorspace}}
+\index{th\_\-colorspace@{th\_\-colorspace}!codec.h@{codec.h}}
+\subsubsection[{th\_\-colorspace}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf th\_\-colorspace}}\label{codec_8h_a4ce7a695ce353b1582d29b6c1ddf31a0}
+
+
+The currently defined color space tags. See {\tt the Theora specification}, Chapter 4, for exact details on the meaning of each of these color spaces. \begin{Desc}
+\item[Enumerator: ]\par
+\begin{description}
+\index{TH\_\-CS\_\-UNSPECIFIED@{TH\_\-CS\_\-UNSPECIFIED}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-CS\_\-UNSPECIFIED@{TH\_\-CS\_\-UNSPECIFIED}}\item[{\em
+TH\_\-CS\_\-UNSPECIFIED\label{codec_8h_a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf}
+}]The color space was not specified at the encoder. It may be conveyed by an external means. \index{TH\_\-CS\_\-ITU\_\-REC\_\-470M@{TH\_\-CS\_\-ITU\_\-REC\_\-470M}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-CS\_\-ITU\_\-REC\_\-470M@{TH\_\-CS\_\-ITU\_\-REC\_\-470M}}\item[{\em
+TH\_\-CS\_\-ITU\_\-REC\_\-470M\label{codec_8h_a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397}
+}]A color space designed for NTSC content. \index{TH\_\-CS\_\-ITU\_\-REC\_\-470BG@{TH\_\-CS\_\-ITU\_\-REC\_\-470BG}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-CS\_\-ITU\_\-REC\_\-470BG@{TH\_\-CS\_\-ITU\_\-REC\_\-470BG}}\item[{\em
+TH\_\-CS\_\-ITU\_\-REC\_\-470BG\label{codec_8h_a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe}
+}]A color space designed for PAL/SECAM content. \index{TH\_\-CS\_\-NSPACES@{TH\_\-CS\_\-NSPACES}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-CS\_\-NSPACES@{TH\_\-CS\_\-NSPACES}}\item[{\em
+TH\_\-CS\_\-NSPACES\label{codec_8h_a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e}
+}]The total number of currently defined color spaces. \end{description}
+\end{Desc}
+
+\index{codec.h@{codec.h}!th\_\-pixel\_\-fmt@{th\_\-pixel\_\-fmt}}
+\index{th\_\-pixel\_\-fmt@{th\_\-pixel\_\-fmt}!codec.h@{codec.h}}
+\subsubsection[{th\_\-pixel\_\-fmt}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf th\_\-pixel\_\-fmt}}\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bc}
+
+
+The currently defined pixel format tags. See {\tt the Theora specification}, Section 4.4, for details on the precise sample locations. \begin{Desc}
+\item[Enumerator: ]\par
+\begin{description}
+\index{TH\_\-PF\_\-420@{TH\_\-PF\_\-420}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-PF\_\-420@{TH\_\-PF\_\-420}}\item[{\em
+TH\_\-PF\_\-420\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162}
+}]Chroma decimation by 2 in both the X and Y directions (4:2:0). The Cb and Cr chroma planes are half the width and half the height of the luma plane. \index{TH\_\-PF\_\-RSVD@{TH\_\-PF\_\-RSVD}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-PF\_\-RSVD@{TH\_\-PF\_\-RSVD}}\item[{\em
+TH\_\-PF\_\-RSVD\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6}
+}]Currently reserved. \index{TH\_\-PF\_\-422@{TH\_\-PF\_\-422}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-PF\_\-422@{TH\_\-PF\_\-422}}\item[{\em
+TH\_\-PF\_\-422\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa}
+}]Chroma decimation by 2 in the X direction (4:2:2). The Cb and Cr chroma planes are half the width of the luma plane, but full height. \index{TH\_\-PF\_\-444@{TH\_\-PF\_\-444}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-PF\_\-444@{TH\_\-PF\_\-444}}\item[{\em
+TH\_\-PF\_\-444\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86}
+}]No chroma decimation (4:4:4). The Cb and Cr chroma planes are full width and full height. \index{TH\_\-PF\_\-NFORMATS@{TH\_\-PF\_\-NFORMATS}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-PF\_\-NFORMATS@{TH\_\-PF\_\-NFORMATS}}\item[{\em
+TH\_\-PF\_\-NFORMATS\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb}
+}]The total number of currently defined pixel formats. \end{description}
+\end{Desc}
+
diff --git a/doc/libtheora/latex/doxygen.sty b/doc/libtheora/latex/doxygen.sty
new file mode 100644
index 0000000..ad07649
--- /dev/null
+++ b/doc/libtheora/latex/doxygen.sty
@@ -0,0 +1,351 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{doxygen}
+
+% Packages used by this style file
+\RequirePackage{alltt}
+\RequirePackage{array}
+\RequirePackage{calc}
+\RequirePackage{color}
+\RequirePackage{fancyhdr}
+\RequirePackage{verbatim}
+
+% Setup fancy headings
+\pagestyle{fancyplain}
+\newcommand{\clearemptydoublepage}{%
+ \newpage{\pagestyle{empty}\cleardoublepage}%
+}
+\renewcommand{\chaptermark}[1]{%
+ \markboth{#1}{}%
+}
+\renewcommand{\sectionmark}[1]{%
+ \markright{\thesection\ #1}%
+}
+\lhead[\fancyplain{}{\bfseries\thepage}]{%
+ \fancyplain{}{\bfseries\rightmark}%
+}
+\rhead[\fancyplain{}{\bfseries\leftmark}]{%
+ \fancyplain{}{\bfseries\thepage}%
+}
+\rfoot[\fancyplain{}{\bfseries\scriptsize%
+ Generated on Mon Sep 28 11:02:24 2009 for libtheora by Doxygen }]{}
+\lfoot[]{\fancyplain{}{\bfseries\scriptsize%
+ Generated on Mon Sep 28 11:02:24 2009 for libtheora by Doxygen }}
+\cfoot{}
+
+%---------- Internal commands used in this style file ----------------
+
+% Generic environment used by all paragraph-based environments defined
+% below. Note that the command \title{...} needs to be defined inside
+% those environments!
+\newenvironment{DoxyDesc}[1]{%
+ \begin{list}{}%
+ {%
+ \settowidth{\labelwidth}{40pt}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \setlength{\parsep}{0pt}%
+ \setlength{\itemsep}{-4pt}%
+ \renewcommand{\makelabel}{\entrylabel}%
+ }%
+ \item[#1:]%
+}{%
+ \end{list}%
+}
+
+%---------- Commands used by doxygen LaTeX output generator ----------
+
+% Used by <pre> ... </pre>
+\newenvironment{DoxyPre}{%
+ \small%
+ \begin{alltt}%
+}{%
+ \end{alltt}%
+ \normalsize%
+}
+
+% Used by @code ... @endcode
+\newenvironment{DoxyCode}{%
+ \footnotesize%
+ \verbatim%
+}{%
+ \endverbatim%
+ \normalsize%
+}
+
+% Used by @example, @include, @includelineno and @dontinclude
+\newenvironment{DoxyCodeInclude}{%
+ \DoxyCode%
+}{%
+ \endDoxyCode%
+}
+
+% Used by @verbatim ... @endverbatim
+\newenvironment{DoxyVerb}{%
+ \footnotesize%
+ \verbatim%
+}{%
+ \endverbatim%
+ \normalsize%
+}
+
+% Used by @verbinclude
+\newenvironment{DoxyVerbInclude}{%
+ \DoxyVerb%
+}{%
+ \endDoxyVerb%
+}
+
+% Used by numbered lists (using '-#' or <ol> ... </ol>)
+\newenvironment{DoxyEnumerate}{%
+ \enumerate%
+}{%
+ \endenumerate%
+}
+
+% Used by bullet lists (using '-', @li, @arg, or <ul> ... </ul>)
+\newenvironment{DoxyItemize}{%
+ \itemize%
+}{%
+ \enditemize%
+}
+
+% Used by description lists (using <dl> ... </dl>)
+\newenvironment{DoxyDescription}{%
+ \description%
+}{%
+ \enddescription%
+}
+
+% Used by @image, @dotfile, and @dot ... @enddot
+% (only if caption is specified)
+\newenvironment{DoxyImage}{%
+ \begin{figure}[H]%
+ \begin{center}%
+}{%
+ \end{center}%
+ \end{figure}%
+}
+
+% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
+% (only if no caption is specified)
+\newenvironment{DoxyImageNoCaption}{%
+}{%
+}
+
+% Used by @attention
+\newenvironment{DoxyAttention}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @author and @authors
+\newenvironment{DoxyAuthor}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @date
+\newenvironment{DoxyDate}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @invariant
+\newenvironment{DoxyInvariant}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @note
+\newenvironment{DoxyNote}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @post
+\newenvironment{DoxyPostcond}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @pre
+\newenvironment{DoxyPrecond}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @remark
+\newenvironment{DoxyRemark}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @return
+\newenvironment{DoxyReturn}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @since
+\newenvironment{DoxySince}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @see
+\newenvironment{DoxySeeAlso}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @version
+\newenvironment{DoxyVersion}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @warning
+\newenvironment{DoxyWarning}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @internal
+\newenvironment{DoxyInternal}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @par and @paragraph
+\newenvironment{DoxyParagraph}[1]{%
+ \begin{list}{}%
+ {%
+ \settowidth{\labelwidth}{40pt}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \setlength{\parsep}{0pt}%
+ \setlength{\itemsep}{-4pt}%
+ \renewcommand{\makelabel}{\entrylabel}%
+ }%
+ \item[#1]%
+}{%
+ \end{list}%
+}
+
+% Used by parameter lists
+\newenvironment{DoxyParams}[1]{%
+ \begin{DoxyDesc}{#1}%
+ \begin{description}%
+}{%
+ \end{description}%
+ \end{DoxyDesc}%
+}
+
+% Used by return value lists
+\newenvironment{DoxyRetVals}[1]{%
+ \begin{DoxyDesc}{#1}%
+ \begin{description}%
+}{%
+ \end{description}%
+ \end{DoxyDesc}%
+}
+
+% Used by exception lists
+\newenvironment{DoxyExceptions}[1]{%
+ \begin{DoxyDesc}{#1}%
+ \begin{description}%
+}{%
+ \end{description}%
+ \end{DoxyDesc}%
+}
+
+% Used by template parameter lists
+\newenvironment{DoxyTemplParams}[1]{%
+ \begin{DoxyDesc}{#1}%
+ \begin{description}%
+}{%
+ \end{description}%
+ \end{DoxyDesc}%
+}
+
+\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})}
+\newenvironment{DoxyCompactList}
+{\begin{list}{}{
+ \setlength{\leftmargin}{0.5cm}
+ \setlength{\itemsep}{0pt}
+ \setlength{\parsep}{0pt}
+ \setlength{\topsep}{0pt}
+ \renewcommand{\makelabel}{\hfill}}}
+{\end{list}}
+\newenvironment{DoxyCompactItemize}
+{
+ \begin{itemize}
+ \setlength{\itemsep}{-3pt}
+ \setlength{\parsep}{0pt}
+ \setlength{\topsep}{0pt}
+ \setlength{\partopsep}{0pt}
+}
+{\end{itemize}}
+\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}
+\newlength{\tmplength}
+\newenvironment{TabularC}[1]
+{
+\setlength{\tmplength}
+ {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}
+ \par\begin{tabular*}{\linewidth}
+ {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}
+}
+{\end{tabular*}\par}
+\newcommand{\entrylabel}[1]{
+ {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}}
+\newenvironment{Desc}
+{\begin{list}{}
+ {
+ \settowidth{\labelwidth}{40pt}
+ \setlength{\leftmargin}{\labelwidth}
+ \setlength{\parsep}{0pt}
+ \setlength{\itemsep}{-4pt}
+ \renewcommand{\makelabel}{\entrylabel}
+ }
+}
+{\end{list}}
+\newenvironment{Indent}
+ {\begin{list}{}{\setlength{\leftmargin}{0.5cm}}
+ \item[]\ignorespaces}
+ {\unskip\end{list}}
+\setlength{\parindent}{0cm}
+\setlength{\parskip}{0.2cm}
+\addtocounter{secnumdepth}{1}
+\sloppy
+\usepackage[T1]{fontenc}
+\makeatletter
+\renewcommand{\paragraph}{\@startsection{paragraph}{4}{0ex}%
+ {-3.25ex plus -1ex minus -0.2ex}%
+ {1.5ex plus 0.2ex}%
+ {\normalfont\normalsize\bfseries}}
+\makeatother
+\stepcounter{secnumdepth}
+\stepcounter{tocdepth}
+\definecolor{comment}{rgb}{0.5,0.0,0.0}
+\definecolor{keyword}{rgb}{0.0,0.5,0.0}
+\definecolor{keywordtype}{rgb}{0.38,0.25,0.125}
+\definecolor{keywordflow}{rgb}{0.88,0.5,0.0}
+\definecolor{preprocessor}{rgb}{0.5,0.38,0.125}
+\definecolor{stringliteral}{rgb}{0.0,0.125,0.25}
+\definecolor{charliteral}{rgb}{0.0,0.5,0.5}
+\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0}
+\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}
+\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}
+\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}
diff --git a/doc/libtheora/latex/files.tex b/doc/libtheora/latex/files.tex
new file mode 100644
index 0000000..8340639
--- /dev/null
+++ b/doc/libtheora/latex/files.tex
@@ -0,0 +1,7 @@
+\section{File List}
+Here is a list of all files with brief descriptions:\begin{DoxyCompactList}
+\item\contentsline{section}{{\bf codec.h} (The shared {\ttfamily libtheoradec} and {\ttfamily libtheoraenc} C API )}{\pageref{codec_8h}}{}
+\item\contentsline{section}{{\bf theora.h} (The libtheora pre-\/1.0 legacy C API )}{\pageref{theora_8h}}{}
+\item\contentsline{section}{{\bf theoradec.h} (The {\ttfamily libtheoradec} C decoding API )}{\pageref{theoradec_8h}}{}
+\item\contentsline{section}{{\bf theoraenc.h} (The {\ttfamily libtheoraenc} C encoding API )}{\pageref{theoraenc_8h}}{}
+\end{DoxyCompactList}
diff --git a/doc/libtheora/latex/group__basefuncs.tex b/doc/libtheora/latex/group__basefuncs.tex
new file mode 100644
index 0000000..f7d9f20
--- /dev/null
+++ b/doc/libtheora/latex/group__basefuncs.tex
@@ -0,0 +1,190 @@
+\section{Functions Shared by Encode and Decode}
+\label{group__basefuncs}\index{Functions Shared by Encode and Decode@{Functions Shared by Encode and Decode}}
+\subsection*{Basic shared functions}
+\label{_amgrpb625c22fa07613c734f71c378fe32d7a}
+ \begin{DoxyCompactItemize}
+\item
+const char $\ast$ {\bf th\_\-version\_\-string} (void)
+\begin{DoxyCompactList}\small\item\em Retrieves a human-\/readable string to identify the library vendor and version. \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf th\_\-version\_\-number} (void)
+\begin{DoxyCompactList}\small\item\em Retrieves the library version number. \item\end{DoxyCompactList}\item
+ogg\_\-int64\_\-t {\bf th\_\-granule\_\-frame} (void $\ast$\_\-encdec, ogg\_\-int64\_\-t \_\-granpos)
+\begin{DoxyCompactList}\small\item\em Converts a granule position to an absolute frame index, starting at {\ttfamily 0}. \item\end{DoxyCompactList}\item
+double {\bf th\_\-granule\_\-time} (void $\ast$\_\-encdec, ogg\_\-int64\_\-t \_\-granpos)
+\begin{DoxyCompactList}\small\item\em Converts a granule position to an absolute time in seconds. \item\end{DoxyCompactList}\item
+int {\bf th\_\-packet\_\-isheader} (ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Determines whether a Theora packet is a header or not. \item\end{DoxyCompactList}\item
+int {\bf th\_\-packet\_\-iskeyframe} (ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Determines whether a theora packet is a key frame or not. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Functions for manipulating header data}
+\label{_amgrp14ef5f819e97c870c128539ed1f334e3}
+ \begin{DoxyCompactItemize}
+\item
+void {\bf th\_\-info\_\-init} ({\bf th\_\-info} $\ast$\_\-info)
+\begin{DoxyCompactList}\small\item\em Initializes a \doxyref{th\_\-info}{p.}{structth__info} structure. \item\end{DoxyCompactList}\item
+void {\bf th\_\-info\_\-clear} ({\bf th\_\-info} $\ast$\_\-info)
+\begin{DoxyCompactList}\small\item\em Clears a \doxyref{th\_\-info}{p.}{structth__info} structure. \item\end{DoxyCompactList}\item
+void {\bf th\_\-comment\_\-init} ({\bf th\_\-comment} $\ast$\_\-tc)
+\begin{DoxyCompactList}\small\item\em Initialize a \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item\end{DoxyCompactList}\item
+void {\bf th\_\-comment\_\-add} ({\bf th\_\-comment} $\ast$\_\-tc, char $\ast$\_\-comment)
+\begin{DoxyCompactList}\small\item\em Add a comment to an initialized \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item\end{DoxyCompactList}\item
+void {\bf th\_\-comment\_\-add\_\-tag} ({\bf th\_\-comment} $\ast$\_\-tc, char $\ast$\_\-tag, char $\ast$\_\-val)
+\begin{DoxyCompactList}\small\item\em Add a comment to an initialized \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item\end{DoxyCompactList}\item
+char $\ast$ {\bf th\_\-comment\_\-query} ({\bf th\_\-comment} $\ast$\_\-tc, char $\ast$\_\-tag, int \_\-count)
+\begin{DoxyCompactList}\small\item\em Look up a comment value by its tag. \item\end{DoxyCompactList}\item
+int {\bf th\_\-comment\_\-query\_\-count} ({\bf th\_\-comment} $\ast$\_\-tc, char $\ast$\_\-tag)
+\begin{DoxyCompactList}\small\item\em Look up the number of instances of a tag. \item\end{DoxyCompactList}\item
+void {\bf th\_\-comment\_\-clear} ({\bf th\_\-comment} $\ast$\_\-tc)
+\begin{DoxyCompactList}\small\item\em Clears a \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Function Documentation}
+\index{basefuncs@{basefuncs}!th\_\-comment\_\-add@{th\_\-comment\_\-add}}
+\index{th\_\-comment\_\-add@{th\_\-comment\_\-add}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-comment\_\-add}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-comment\_\-add ({\bf th\_\-comment} $\ast$ {\em \_\-tc}, \/ char $\ast$ {\em \_\-comment})}\label{group__basefuncs_ga19a1f7b8032db957df151a34e5ac9272}
+
+
+Add a comment to an initialized \doxyref{th\_\-comment}{p.}{structth__comment} structure. \begin{DoxyNote}{Note}
+Neither \doxyref{th\_\-comment\_\-add()}{p.}{group__basefuncs_ga19a1f7b8032db957df151a34e5ac9272} nor \doxyref{th\_\-comment\_\-add\_\-tag()}{p.}{group__basefuncs_ga6c5edc201ca220a30787ca6c1ddcaeaf} support comments containing null values, although the bitstream format does support them. To add such comments you will need to manipulate the \doxyref{th\_\-comment}{p.}{structth__comment} structure directly.
+\end{DoxyNote}
+
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-tc}]The \doxyref{th\_\-comment}{p.}{structth__comment} struct to add the comment to. \item[{\em \_\-comment}]Must be a null-\/terminated UTF-\/8 string containing the comment in \char`\"{}TAG=the value\char`\"{} form. \end{DoxyParams}
+\index{basefuncs@{basefuncs}!th\_\-comment\_\-add\_\-tag@{th\_\-comment\_\-add\_\-tag}}
+\index{th\_\-comment\_\-add\_\-tag@{th\_\-comment\_\-add\_\-tag}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-comment\_\-add\_\-tag}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-comment\_\-add\_\-tag ({\bf th\_\-comment} $\ast$ {\em \_\-tc}, \/ char $\ast$ {\em \_\-tag}, \/ char $\ast$ {\em \_\-val})}\label{group__basefuncs_ga6c5edc201ca220a30787ca6c1ddcaeaf}
+
+
+Add a comment to an initialized \doxyref{th\_\-comment}{p.}{structth__comment} structure. \begin{DoxyNote}{Note}
+Neither \doxyref{th\_\-comment\_\-add()}{p.}{group__basefuncs_ga19a1f7b8032db957df151a34e5ac9272} nor \doxyref{th\_\-comment\_\-add\_\-tag()}{p.}{group__basefuncs_ga6c5edc201ca220a30787ca6c1ddcaeaf} support comments containing null values, although the bitstream format does support them. To add such comments you will need to manipulate the \doxyref{th\_\-comment}{p.}{structth__comment} structure directly.
+\end{DoxyNote}
+
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-tc}]The \doxyref{th\_\-comment}{p.}{structth__comment} struct to add the comment to. \item[{\em \_\-tag}]A null-\/terminated string containing the tag associated with the comment. \item[{\em \_\-val}]The corresponding value as a null-\/terminated string. \end{DoxyParams}
+\index{basefuncs@{basefuncs}!th\_\-comment\_\-clear@{th\_\-comment\_\-clear}}
+\index{th\_\-comment\_\-clear@{th\_\-comment\_\-clear}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-comment\_\-clear}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-comment\_\-clear ({\bf th\_\-comment} $\ast$ {\em \_\-tc})}\label{group__basefuncs_gae736c1afa514947a3feb223143af95e3}
+
+
+Clears a \doxyref{th\_\-comment}{p.}{structth__comment} structure. This should be called on a \doxyref{th\_\-comment}{p.}{structth__comment} structure after it is no longer needed. It will free all memory used by the structure members.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-tc}]The \doxyref{th\_\-comment}{p.}{structth__comment} struct to clear. \end{DoxyParams}
+\index{basefuncs@{basefuncs}!th\_\-comment\_\-init@{th\_\-comment\_\-init}}
+\index{th\_\-comment\_\-init@{th\_\-comment\_\-init}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-comment\_\-init}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-comment\_\-init ({\bf th\_\-comment} $\ast$ {\em \_\-tc})}\label{group__basefuncs_ga6c8ab25988e7ea9d7b1e31a54cf58f09}
+
+
+Initialize a \doxyref{th\_\-comment}{p.}{structth__comment} structure. This should be called on a freshly allocated \doxyref{th\_\-comment}{p.}{structth__comment} structure before attempting to use it.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-tc}]The \doxyref{th\_\-comment}{p.}{structth__comment} struct to initialize. \end{DoxyParams}
+\index{basefuncs@{basefuncs}!th\_\-comment\_\-query@{th\_\-comment\_\-query}}
+\index{th\_\-comment\_\-query@{th\_\-comment\_\-query}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-comment\_\-query}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ th\_\-comment\_\-query ({\bf th\_\-comment} $\ast$ {\em \_\-tc}, \/ char $\ast$ {\em \_\-tag}, \/ int {\em \_\-count})}\label{group__basefuncs_ga33c8b4f57a03217636d704c2ebb211fa}
+
+
+Look up a comment value by its tag.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-tc}]An initialized \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item[{\em \_\-tag}]The tag to look up. \item[{\em \_\-count}]The instance of the tag. The same tag can appear multiple times, each with a distinct value, so an index is required to retrieve them all. The order in which these values appear is significant and should be preserved. Use \doxyref{th\_\-comment\_\-query\_\-count()}{p.}{group__basefuncs_ga81d518dc4426f63ceaedcbe2668679fc} to get the legal range for the {\itshape \_\-count\/} parameter. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+A pointer to the queried tag's value. This points directly to data in the \doxyref{th\_\-comment}{p.}{structth__comment} structure. It should not be modified or freed by the application, and modifications to the structure may invalidate the pointer.
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em NULL}]If no matching tag is found. \end{DoxyRetVals}
+\index{basefuncs@{basefuncs}!th\_\-comment\_\-query\_\-count@{th\_\-comment\_\-query\_\-count}}
+\index{th\_\-comment\_\-query\_\-count@{th\_\-comment\_\-query\_\-count}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-comment\_\-query\_\-count}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-comment\_\-query\_\-count ({\bf th\_\-comment} $\ast$ {\em \_\-tc}, \/ char $\ast$ {\em \_\-tag})}\label{group__basefuncs_ga81d518dc4426f63ceaedcbe2668679fc}
+
+
+Look up the number of instances of a tag. Call this first when querying for a specific tag and then iterate over the number of instances with separate calls to \doxyref{th\_\-comment\_\-query()}{p.}{group__basefuncs_ga33c8b4f57a03217636d704c2ebb211fa} to retrieve all the values for that tag in order.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-tc}]An initialized \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item[{\em \_\-tag}]The tag to look up. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The number on instances of this particular tag.
+\end{DoxyReturn}
+\index{basefuncs@{basefuncs}!th\_\-granule\_\-frame@{th\_\-granule\_\-frame}}
+\index{th\_\-granule\_\-frame@{th\_\-granule\_\-frame}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-granule\_\-frame}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-int64\_\-t th\_\-granule\_\-frame (void $\ast$ {\em \_\-encdec}, \/ ogg\_\-int64\_\-t {\em \_\-granpos})}\label{group__basefuncs_ga95b10e76fc4c05d0240ea2dfd9fd62bd}
+
+
+Converts a granule position to an absolute frame index, starting at {\ttfamily 0}. The granule position is interpreted in the context of a given \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} or \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle (either will suffice).
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-encdec}]A previously allocated \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} or \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle. \item[{\em \_\-granpos}]The granule position to convert. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The absolute frame index corresponding to {\itshape \_\-granpos\/}.
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em -\/1}]The given granule position was invalid (i.e. negative). \end{DoxyRetVals}
+\index{basefuncs@{basefuncs}!th\_\-granule\_\-time@{th\_\-granule\_\-time}}
+\index{th\_\-granule\_\-time@{th\_\-granule\_\-time}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-granule\_\-time}]{\setlength{\rightskip}{0pt plus 5cm}double th\_\-granule\_\-time (void $\ast$ {\em \_\-encdec}, \/ ogg\_\-int64\_\-t {\em \_\-granpos})}\label{group__basefuncs_ga707e1e281de788af0df39ef00f3fb432}
+
+
+Converts a granule position to an absolute time in seconds. The granule position is interpreted in the context of a given \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} or \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle (either will suffice).
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-encdec}]A previously allocated \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} or \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle. \item[{\em \_\-granpos}]The granule position to convert. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The absolute time in seconds corresponding to {\itshape \_\-granpos\/}. This is the \char`\"{}end time\char`\"{} for the frame, or the latest time it should be displayed. It is not the presentation time.
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em -\/1}]The given granule position was invalid (i.e. negative). \end{DoxyRetVals}
+\index{basefuncs@{basefuncs}!th\_\-info\_\-clear@{th\_\-info\_\-clear}}
+\index{th\_\-info\_\-clear@{th\_\-info\_\-clear}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-info\_\-clear}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-info\_\-clear ({\bf th\_\-info} $\ast$ {\em \_\-info})}\label{group__basefuncs_gab3d6441ab4a4969859ef5fd78a9e3c1c}
+
+
+Clears a \doxyref{th\_\-info}{p.}{structth__info} structure. This should be called on a \doxyref{th\_\-info}{p.}{structth__info} structure after it is no longer needed.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-info}]The \doxyref{th\_\-info}{p.}{structth__info} struct to clear. \end{DoxyParams}
+\index{basefuncs@{basefuncs}!th\_\-info\_\-init@{th\_\-info\_\-init}}
+\index{th\_\-info\_\-init@{th\_\-info\_\-init}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-info\_\-init}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-info\_\-init ({\bf th\_\-info} $\ast$ {\em \_\-info})}\label{group__basefuncs_ga430d9c605816a6ca0bdce3a0b965b926}
+
+
+Initializes a \doxyref{th\_\-info}{p.}{structth__info} structure. This should be called on a freshly allocated \doxyref{th\_\-info}{p.}{structth__info} structure before attempting to use it.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-info}]The \doxyref{th\_\-info}{p.}{structth__info} struct to initialize. \end{DoxyParams}
+\index{basefuncs@{basefuncs}!th\_\-packet\_\-isheader@{th\_\-packet\_\-isheader}}
+\index{th\_\-packet\_\-isheader@{th\_\-packet\_\-isheader}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-packet\_\-isheader}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-packet\_\-isheader (ogg\_\-packet $\ast$ {\em \_\-op})}\label{group__basefuncs_ga02f3f38261a9b39452d8a5e6f8737cc1}
+
+
+Determines whether a Theora packet is a header or not. This function does no verification beyond checking the packet type bit, so it should not be used for bitstream identification; use \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50} for that. As per the Theora specification, an empty (0-\/byte) packet is treated as a data packet (a delta frame with no coded blocks).
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-op}]An {\ttfamily ogg\_\-packet} containing encoded Theora data. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 1}]The packet is a header packet \item[{\em 0}]The packet is a video data packet. \end{DoxyRetVals}
+\index{basefuncs@{basefuncs}!th\_\-packet\_\-iskeyframe@{th\_\-packet\_\-iskeyframe}}
+\index{th\_\-packet\_\-iskeyframe@{th\_\-packet\_\-iskeyframe}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-packet\_\-iskeyframe}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-packet\_\-iskeyframe (ogg\_\-packet $\ast$ {\em \_\-op})}\label{group__basefuncs_gafe95cfd06f0fef413266c9168a66248a}
+
+
+Determines whether a theora packet is a key frame or not. This function does no verification beyond checking the packet type and key frame bits, so it should not be used for bitstream identification; use \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50} for that. As per the Theora specification, an empty (0-\/byte) packet is treated as a delta frame (with no coded blocks).
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-op}]An {\ttfamily ogg\_\-packet} containing encoded Theora data. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 1}]The packet contains a key frame. \item[{\em 0}]The packet contains a delta frame. \item[{\em -\/1}]The packet is not a video data packet. \end{DoxyRetVals}
+\index{basefuncs@{basefuncs}!th\_\-version\_\-number@{th\_\-version\_\-number}}
+\index{th\_\-version\_\-number@{th\_\-version\_\-number}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-version\_\-number}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t th\_\-version\_\-number (void)}\label{group__basefuncs_gab723a75c0f95b3eb817f7f769846016b}
+
+
+Retrieves the library version number. This is the highest bitstream version that the encoder library will produce, or that the decoder library can decode. This number is composed of a 16-\/bit major version, 8-\/bit minor version and 8 bit sub-\/version, composed as follows:
+\begin{DoxyCode}
+ (VERSION_MAJOR<<16)+(VERSION_MINOR<<8)+(VERSION_SUBMINOR)
+\end{DoxyCode}
+ \begin{DoxyReturn}{Returns}
+the version number.
+\end{DoxyReturn}
+\index{basefuncs@{basefuncs}!th\_\-version\_\-string@{th\_\-version\_\-string}}
+\index{th\_\-version\_\-string@{th\_\-version\_\-string}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-version\_\-string}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ th\_\-version\_\-string (void)}\label{group__basefuncs_ga04846066738d9f2024fc9961162b2dbc}
+
+
+Retrieves a human-\/readable string to identify the library vendor and version. \begin{DoxyReturn}{Returns}
+the version string.
+\end{DoxyReturn}
diff --git a/doc/libtheora/latex/group__decfuncs.tex b/doc/libtheora/latex/group__decfuncs.tex
new file mode 100644
index 0000000..fbbda58
--- /dev/null
+++ b/doc/libtheora/latex/group__decfuncs.tex
@@ -0,0 +1,111 @@
+\section{Functions for Decoding}
+\label{group__decfuncs}\index{Functions for Decoding@{Functions for Decoding}}
+\subsection*{Functions for decoding}
+\label{_amgrp9d29c94aa62f20426aa5ff062c7daedd}
+You must link to {\ttfamily libtheoradec} if you use any of the functions in this section.
+
+The functions are listed in the order they are used in a typical decode. The basic steps are:
+\begin{DoxyItemize}
+\item Parse the header packets by repeatedly calling \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50}.
+\item Allocate a \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle with \doxyref{th\_\-decode\_\-alloc()}{p.}{group__decfuncs_ga0ef07a9a97849054aa606c595a2d807e}.
+\item Call \doxyref{th\_\-setup\_\-free()}{p.}{group__decfuncs_gadef55431b68aaa59d0d7b32b2f118f27} to free any memory used for codec setup information.
+\item Perform any additional decoder configuration with \doxyref{th\_\-decode\_\-ctl()}{p.}{group__decfuncs_ga1a8051958d75b1012573b6e3c8f670e1}.
+\item For each video data packet:
+\begin{DoxyItemize}
+\item Submit the packet to the decoder via \doxyref{th\_\-decode\_\-packetin()}{p.}{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb}.
+\item Retrieve the uncompressed video data via \doxyref{th\_\-decode\_\-ycbcr\_\-out()}{p.}{group__decfuncs_gaa9cc8af63fa8540e0fc95572f259cdcb}.
+\end{DoxyItemize}
+\item Call \doxyref{th\_\-decode\_\-free()}{p.}{group__decfuncs_gafb6684ad8ba507b71112bc9de148e7d0} to release all decoder memory.
+\end{DoxyItemize}\begin{DoxyCompactItemize}
+\item
+int {\bf th\_\-decode\_\-headerin} ({\bf th\_\-info} $\ast$\_\-info, {\bf th\_\-comment} $\ast$\_\-tc, {\bf th\_\-setup\_\-info} $\ast$$\ast$\_\-setup, ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Decodes the header packets of a Theora stream. \item\end{DoxyCompactList}\item
+{\bf th\_\-dec\_\-ctx} $\ast$ {\bf th\_\-decode\_\-alloc} (const {\bf th\_\-info} $\ast$\_\-info, const {\bf th\_\-setup\_\-info} $\ast$\_\-setup)
+\begin{DoxyCompactList}\small\item\em Allocates a decoder instance. \item\end{DoxyCompactList}\item
+void {\bf th\_\-setup\_\-free} ({\bf th\_\-setup\_\-info} $\ast$\_\-setup)
+\begin{DoxyCompactList}\small\item\em Releases all storage used for the decoder setup information. \item\end{DoxyCompactList}\item
+int {\bf th\_\-decode\_\-ctl} ({\bf th\_\-dec\_\-ctx} $\ast$\_\-dec, int \_\-req, void $\ast$\_\-buf, size\_\-t \_\-buf\_\-sz)
+\begin{DoxyCompactList}\small\item\em Decoder control function. \item\end{DoxyCompactList}\item
+int {\bf th\_\-decode\_\-packetin} ({\bf th\_\-dec\_\-ctx} $\ast$\_\-dec, const ogg\_\-packet $\ast$\_\-op, ogg\_\-int64\_\-t $\ast$\_\-granpos)
+\begin{DoxyCompactList}\small\item\em Submits a packet containing encoded video data to the decoder. \item\end{DoxyCompactList}\item
+int {\bf th\_\-decode\_\-ycbcr\_\-out} ({\bf th\_\-dec\_\-ctx} $\ast$\_\-dec, {\bf th\_\-ycbcr\_\-buffer} \_\-ycbcr)
+\begin{DoxyCompactList}\small\item\em Outputs the next available frame of decoded Y'CbCr data. \item\end{DoxyCompactList}\item
+void {\bf th\_\-decode\_\-free} ({\bf th\_\-dec\_\-ctx} $\ast$\_\-dec)
+\begin{DoxyCompactList}\small\item\em Frees an allocated decoder instance. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Function Documentation}
+\index{decfuncs@{decfuncs}!th\_\-decode\_\-alloc@{th\_\-decode\_\-alloc}}
+\index{th\_\-decode\_\-alloc@{th\_\-decode\_\-alloc}!decfuncs@{decfuncs}}
+\subsubsection[{th\_\-decode\_\-alloc}]{\setlength{\rightskip}{0pt plus 5cm}{\bf th\_\-dec\_\-ctx}$\ast$ th\_\-decode\_\-alloc (const {\bf th\_\-info} $\ast$ {\em \_\-info}, \/ const {\bf th\_\-setup\_\-info} $\ast$ {\em \_\-setup})}\label{group__decfuncs_ga0ef07a9a97849054aa606c595a2d807e}
+
+
+Allocates a decoder instance. {\bfseries Security Warning:} The Theora format supports very large frame sizes, potentially even larger than the address space of a 32-\/bit machine, and creating a decoder context allocates the space for several frames of data. If the allocation fails here, your program will crash, possibly at some future point because the OS kernel returned a valid memory range and will only fail when it tries to map the pages in it the first time they are used. Even if it succeeds, you may experience a denial of service if the frame size is large enough to cause excessive paging. If you are integrating libtheora in a larger application where such things are undesirable, it is highly recommended that you check the frame size in {\itshape \_\-info\/} before calling this function and refuse to decode streams where it is larger than some reasonable maximum. libtheora will not check this for you, because there may be machines that can handle such streams and applications that wish to.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-info}]A \doxyref{th\_\-info}{p.}{structth__info} struct filled via \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50}. \item[{\em \_\-setup}]A \doxyref{th\_\-setup\_\-info}{p.}{theoradec_8h_ab71cd2657455cc27d6c0127c66a89f28} handle returned via \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50}. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The initialized \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle.
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em NULL}]If the decoding parameters were invalid. \end{DoxyRetVals}
+\index{decfuncs@{decfuncs}!th\_\-decode\_\-ctl@{th\_\-decode\_\-ctl}}
+\index{th\_\-decode\_\-ctl@{th\_\-decode\_\-ctl}!decfuncs@{decfuncs}}
+\subsubsection[{th\_\-decode\_\-ctl}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-decode\_\-ctl ({\bf th\_\-dec\_\-ctx} $\ast$ {\em \_\-dec}, \/ int {\em \_\-req}, \/ void $\ast$ {\em \_\-buf}, \/ size\_\-t {\em \_\-buf\_\-sz})}\label{group__decfuncs_ga1a8051958d75b1012573b6e3c8f670e1}
+
+
+Decoder control function. This is used to provide advanced control of the decoding process.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-dec}]A \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle. \item[{\em \_\-req}]The control code to process. See \doxyref{the list of available control codes}{p.}{theoradec_8h_decctlcodes} for details. \item[{\em \_\-buf}]The parameters for this control code. \item[{\em \_\-buf\_\-sz}]The size of the parameter buffer. \end{DoxyParams}
+\index{decfuncs@{decfuncs}!th\_\-decode\_\-free@{th\_\-decode\_\-free}}
+\index{th\_\-decode\_\-free@{th\_\-decode\_\-free}!decfuncs@{decfuncs}}
+\subsubsection[{th\_\-decode\_\-free}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-decode\_\-free ({\bf th\_\-dec\_\-ctx} $\ast$ {\em \_\-dec})}\label{group__decfuncs_gafb6684ad8ba507b71112bc9de148e7d0}
+
+
+Frees an allocated decoder instance.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-dec}]A \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle. \end{DoxyParams}
+\index{decfuncs@{decfuncs}!th\_\-decode\_\-headerin@{th\_\-decode\_\-headerin}}
+\index{th\_\-decode\_\-headerin@{th\_\-decode\_\-headerin}!decfuncs@{decfuncs}}
+\subsubsection[{th\_\-decode\_\-headerin}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-decode\_\-headerin ({\bf th\_\-info} $\ast$ {\em \_\-info}, \/ {\bf th\_\-comment} $\ast$ {\em \_\-tc}, \/ {\bf th\_\-setup\_\-info} $\ast$$\ast$ {\em \_\-setup}, \/ ogg\_\-packet $\ast$ {\em \_\-op})}\label{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50}
+
+
+Decodes the header packets of a Theora stream. This should be called on the initial packets of the stream, in succession, until it returns {\ttfamily 0}, indicating that all headers have been processed, or an error is encountered. At least three header packets are required, and additional optional header packets may follow. This can be used on the first packet of any logical stream to determine if that stream is a Theora stream.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-info}]A \doxyref{th\_\-info}{p.}{structth__info} structure to fill in. This must have been previously initialized with \doxyref{th\_\-info\_\-init()}{p.}{group__basefuncs_ga430d9c605816a6ca0bdce3a0b965b926}. The application may immediately begin using the contents of this structure after the first header is decoded, though it must continue to be passed in on all subsequent calls. \item[{\em \_\-tc}]A \doxyref{th\_\-comment}{p.}{structth__comment} structure to fill in. The application may immediately begin using the contents of this structure after the second header is decoded, though it must continue to be passed in on all subsequent calls. \item[{\em \_\-setup}]Returns a pointer to additional, private setup information needed by the decoder. The contents of this pointer must be initialized to {\ttfamily NULL} on the first call, and the returned value must continue to be passed in on all subsequent calls. \item[{\em \_\-op}]An {\ttfamily ogg\_\-packet} structure which contains one of the initial packets of an Ogg logical stream. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+A positive value indicates that a Theora header was successfully processed.
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]The first video data packet was encountered after all required header packets were parsed. The packet just passed in on this call should be saved and fed to \doxyref{th\_\-decode\_\-packetin()}{p.}{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb} to begin decoding video data. \item[{\em TH\_\-EFAULT}]One of {\itshape \_\-info\/}, {\itshape \_\-tc\/}, or {\itshape \_\-setup\/} was {\ttfamily NULL}. \item[{\em TH\_\-EBADHEADER}]{\itshape \_\-op\/} was {\ttfamily NULL}, the packet was not the next header packet in the expected sequence, or the format of the header data was invalid. \item[{\em TH\_\-EVERSION}]The packet data was a Theora info header, but for a bitstream version not decodable with this version of {\ttfamily libtheoradec}. \item[{\em TH\_\-ENOTFORMAT}]The packet was not a Theora header. \end{DoxyRetVals}
+\index{decfuncs@{decfuncs}!th\_\-decode\_\-packetin@{th\_\-decode\_\-packetin}}
+\index{th\_\-decode\_\-packetin@{th\_\-decode\_\-packetin}!decfuncs@{decfuncs}}
+\subsubsection[{th\_\-decode\_\-packetin}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-decode\_\-packetin ({\bf th\_\-dec\_\-ctx} $\ast$ {\em \_\-dec}, \/ const ogg\_\-packet $\ast$ {\em \_\-op}, \/ ogg\_\-int64\_\-t $\ast$ {\em \_\-granpos})}\label{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb}
+
+
+Submits a packet containing encoded video data to the decoder.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-dec}]A \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle. \item[{\em \_\-op}]An {\ttfamily ogg\_\-packet} containing encoded video data. \item[{\em \_\-granpos}]Returns the granule position of the decoded packet. If non-\/{\ttfamily NULL}, the granule position for this specific packet is stored in this location. This is computed incrementally from previously decoded packets. After a seek, the correct granule position must be set via \doxyref{TH\_\-DECCTL\_\-SET\_\-GRANPOS}{p.}{theoradec_8h_a1e870c654d35394f0d490045df04e0f5} for this to work properly. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success. A new decoded frame can be retrieved by calling \doxyref{th\_\-decode\_\-ycbcr\_\-out()}{p.}{group__decfuncs_gaa9cc8af63fa8540e0fc95572f259cdcb}. \item[{\em TH\_\-DUPFRAME}]The packet represented a dropped (0-\/byte) frame. The player can skip the call to \doxyref{th\_\-decode\_\-ycbcr\_\-out()}{p.}{group__decfuncs_gaa9cc8af63fa8540e0fc95572f259cdcb}, as the contents of the decoded frame buffer have not changed. \item[{\em TH\_\-EFAULT}]{\itshape \_\-dec\/} or {\itshape \_\-op\/} was {\ttfamily NULL}. \item[{\em TH\_\-EBADPACKET}]{\itshape \_\-op\/} does not contain encoded video data. \item[{\em TH\_\-EIMPL}]The video data uses bitstream features which this library does not support. \end{DoxyRetVals}
+\index{decfuncs@{decfuncs}!th\_\-decode\_\-ycbcr\_\-out@{th\_\-decode\_\-ycbcr\_\-out}}
+\index{th\_\-decode\_\-ycbcr\_\-out@{th\_\-decode\_\-ycbcr\_\-out}!decfuncs@{decfuncs}}
+\subsubsection[{th\_\-decode\_\-ycbcr\_\-out}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-decode\_\-ycbcr\_\-out ({\bf th\_\-dec\_\-ctx} $\ast$ {\em \_\-dec}, \/ {\bf th\_\-ycbcr\_\-buffer} {\em \_\-ycbcr})}\label{group__decfuncs_gaa9cc8af63fa8540e0fc95572f259cdcb}
+
+
+Outputs the next available frame of decoded Y'CbCr data. If a striped decode callback has been set with \doxyref{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}{p.}{theoradec_8h_ac95cc9e109474b0fa4bb920ab2cfdf1e}, then the application does not need to call this function.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-dec}]A \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle. \item[{\em \_\-ycbcr}]A video buffer structure to fill in. {\ttfamily libtheoradec} will fill in all the members of this structure, including the pointers to the uncompressed video data. The memory for this video data is owned by {\ttfamily libtheoradec}. It may be freed or overwritten without notification when subsequent frames are decoded. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success \item[{\em TH\_\-EFAULT}]{\itshape \_\-dec\/} or {\itshape \_\-ycbcr\/} was {\ttfamily NULL}. \end{DoxyRetVals}
+\index{decfuncs@{decfuncs}!th\_\-setup\_\-free@{th\_\-setup\_\-free}}
+\index{th\_\-setup\_\-free@{th\_\-setup\_\-free}!decfuncs@{decfuncs}}
+\subsubsection[{th\_\-setup\_\-free}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-setup\_\-free ({\bf th\_\-setup\_\-info} $\ast$ {\em \_\-setup})}\label{group__decfuncs_gadef55431b68aaa59d0d7b32b2f118f27}
+
+
+Releases all storage used for the decoder setup information. This should be called after you no longer want to create any decoders for a stream whose headers you have parsed with \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50}.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-setup}]The setup information to free. This can safely be {\ttfamily NULL}. \end{DoxyParams}
diff --git a/doc/libtheora/latex/group__encfuncs.tex b/doc/libtheora/latex/group__encfuncs.tex
new file mode 100644
index 0000000..c2ab2e1
--- /dev/null
+++ b/doc/libtheora/latex/group__encfuncs.tex
@@ -0,0 +1,107 @@
+\section{Functions for Encoding}
+\label{group__encfuncs}\index{Functions for Encoding@{Functions for Encoding}}
+\subsection*{Functions for encoding}
+\label{_amgrpc58fb8743a7ca83eb895d57e29e032c8}
+You must link to {\ttfamily libtheoraenc} and {\ttfamily libtheoradec} if you use any of the functions in this section.
+
+The functions are listed in the order they are used in a typical encode. The basic steps are:
+\begin{DoxyItemize}
+\item Fill in a \doxyref{th\_\-info}{p.}{structth__info} structure with details on the format of the video you wish to encode.
+\item Allocate a \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} handle with \doxyref{th\_\-encode\_\-alloc()}{p.}{group__encfuncs_gaa91e47bc9dd5f6ee52045bd7b815e5a7}.
+\item Perform any additional encoder configuration required with \doxyref{th\_\-encode\_\-ctl()}{p.}{group__encfuncs_ga3a427f6514dfdc01ea72172c469d51d9}.
+\item Repeatedly call \doxyref{th\_\-encode\_\-flushheader()}{p.}{group__encfuncs_ga9439d61b566039d194ff782681fbc408} to retrieve all the header packets.
+\item For each uncompressed frame:
+\begin{DoxyItemize}
+\item Submit the uncompressed frame via \doxyref{th\_\-encode\_\-ycbcr\_\-in()}{p.}{group__encfuncs_gadbe7dd66b411c2d61ab8153c15308750}
+\item Repeatedly call \doxyref{th\_\-encode\_\-packetout()}{p.}{group__encfuncs_ga96d8ac1dda53187455352f99bbb5b04b} to retrieve any video data packets that are ready.
+\end{DoxyItemize}
+\item Call \doxyref{th\_\-encode\_\-free()}{p.}{group__encfuncs_ga36b23d216532231925c4107894204680} to release all encoder memory.
+\end{DoxyItemize}\begin{DoxyCompactItemize}
+\item
+{\bf th\_\-enc\_\-ctx} $\ast$ {\bf th\_\-encode\_\-alloc} (const {\bf th\_\-info} $\ast$\_\-info)
+\begin{DoxyCompactList}\small\item\em Allocates an encoder instance. \item\end{DoxyCompactList}\item
+int {\bf th\_\-encode\_\-ctl} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc, int \_\-req, void $\ast$\_\-buf, size\_\-t \_\-buf\_\-sz)
+\begin{DoxyCompactList}\small\item\em Encoder control function. \item\end{DoxyCompactList}\item
+int {\bf th\_\-encode\_\-flushheader} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc, {\bf th\_\-comment} $\ast$\_\-comments, ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Outputs the next header packet. \item\end{DoxyCompactList}\item
+int {\bf th\_\-encode\_\-ycbcr\_\-in} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc, {\bf th\_\-ycbcr\_\-buffer} \_\-ycbcr)
+\begin{DoxyCompactList}\small\item\em Submits an uncompressed frame to the encoder. \item\end{DoxyCompactList}\item
+int {\bf th\_\-encode\_\-packetout} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc, int \_\-last, ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Retrieves encoded video data packets. \item\end{DoxyCompactList}\item
+void {\bf th\_\-encode\_\-free} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc)
+\begin{DoxyCompactList}\small\item\em Frees an allocated encoder instance. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Function Documentation}
+\index{encfuncs@{encfuncs}!th\_\-encode\_\-alloc@{th\_\-encode\_\-alloc}}
+\index{th\_\-encode\_\-alloc@{th\_\-encode\_\-alloc}!encfuncs@{encfuncs}}
+\subsubsection[{th\_\-encode\_\-alloc}]{\setlength{\rightskip}{0pt plus 5cm}{\bf th\_\-enc\_\-ctx}$\ast$ th\_\-encode\_\-alloc (const {\bf th\_\-info} $\ast$ {\em \_\-info})}\label{group__encfuncs_gaa91e47bc9dd5f6ee52045bd7b815e5a7}
+
+
+Allocates an encoder instance.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-info}]A \doxyref{th\_\-info}{p.}{structth__info} struct filled with the desired encoding parameters. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The initialized \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} handle.
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em NULL}]If the encoding parameters were invalid. \end{DoxyRetVals}
+\index{encfuncs@{encfuncs}!th\_\-encode\_\-ctl@{th\_\-encode\_\-ctl}}
+\index{th\_\-encode\_\-ctl@{th\_\-encode\_\-ctl}!encfuncs@{encfuncs}}
+\subsubsection[{th\_\-encode\_\-ctl}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-encode\_\-ctl ({\bf th\_\-enc\_\-ctx} $\ast$ {\em \_\-enc}, \/ int {\em \_\-req}, \/ void $\ast$ {\em \_\-buf}, \/ size\_\-t {\em \_\-buf\_\-sz})}\label{group__encfuncs_ga3a427f6514dfdc01ea72172c469d51d9}
+
+
+Encoder control function. This is used to provide advanced control the encoding process.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-enc}]A \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} handle. \item[{\em \_\-req}]The control code to process. See \doxyref{the list of available control codes}{p.}{theoraenc_8h_encctlcodes} for details. \item[{\em \_\-buf}]The parameters for this control code. \item[{\em \_\-buf\_\-sz}]The size of the parameter buffer. \end{DoxyParams}
+\index{encfuncs@{encfuncs}!th\_\-encode\_\-flushheader@{th\_\-encode\_\-flushheader}}
+\index{th\_\-encode\_\-flushheader@{th\_\-encode\_\-flushheader}!encfuncs@{encfuncs}}
+\subsubsection[{th\_\-encode\_\-flushheader}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-encode\_\-flushheader ({\bf th\_\-enc\_\-ctx} $\ast$ {\em \_\-enc}, \/ {\bf th\_\-comment} $\ast$ {\em \_\-comments}, \/ ogg\_\-packet $\ast$ {\em \_\-op})}\label{group__encfuncs_ga9439d61b566039d194ff782681fbc408}
+
+
+Outputs the next header packet. This should be called repeatedly after encoder initialization until it returns 0 in order to get all of the header packets, in order, before encoding actual video data.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-enc}]A \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} handle. \item[{\em \_\-comments}]The metadata to place in the comment header, when it is encoded. \item[{\em \_\-op}]An {\ttfamily ogg\_\-packet} structure to fill. All of the elements of this structure will be set, including a pointer to the header data. The memory for the header data is owned by {\ttfamily libtheoraenc}, and may be invalidated when the next encoder function is called. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+A positive value indicates that a header packet was successfully produced.
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]No packet was produced, and no more header packets remain. \item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\/}, {\itshape \_\-comments\/}, or {\itshape \_\-op\/} was {\ttfamily NULL}. \end{DoxyRetVals}
+\index{encfuncs@{encfuncs}!th\_\-encode\_\-free@{th\_\-encode\_\-free}}
+\index{th\_\-encode\_\-free@{th\_\-encode\_\-free}!encfuncs@{encfuncs}}
+\subsubsection[{th\_\-encode\_\-free}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-encode\_\-free ({\bf th\_\-enc\_\-ctx} $\ast$ {\em \_\-enc})}\label{group__encfuncs_ga36b23d216532231925c4107894204680}
+
+
+Frees an allocated encoder instance.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-enc}]A \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} handle. \end{DoxyParams}
+\index{encfuncs@{encfuncs}!th\_\-encode\_\-packetout@{th\_\-encode\_\-packetout}}
+\index{th\_\-encode\_\-packetout@{th\_\-encode\_\-packetout}!encfuncs@{encfuncs}}
+\subsubsection[{th\_\-encode\_\-packetout}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-encode\_\-packetout ({\bf th\_\-enc\_\-ctx} $\ast$ {\em \_\-enc}, \/ int {\em \_\-last}, \/ ogg\_\-packet $\ast$ {\em \_\-op})}\label{group__encfuncs_ga96d8ac1dda53187455352f99bbb5b04b}
+
+
+Retrieves encoded video data packets. This should be called repeatedly after each frame is submitted to flush any encoded packets, until it returns 0. The encoder will not buffer these packets as subsequent frames are compressed, so a failure to do so will result in lost video data. \begin{DoxyNote}{Note}
+Currently the encoder operates in a one-\/frame-\/in, one-\/packet-\/out manner. However, this may be changed in the future.
+\end{DoxyNote}
+
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-enc}]A \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} handle. \item[{\em \_\-last}]Set this flag to a non-\/zero value if no more uncompressed frames will be submitted. This ensures that a proper EOS flag is set on the last packet. \item[{\em \_\-op}]An {\ttfamily ogg\_\-packet} structure to fill. All of the elements of this structure will be set, including a pointer to the video data. The memory for the video data is owned by {\ttfamily libtheoraenc}, and may be invalidated when the next encoder function is called. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+A positive value indicates that a video data packet was successfully produced.
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]No packet was produced, and no more encoded video data remains. \item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\/} or {\itshape \_\-op\/} was {\ttfamily NULL}. \end{DoxyRetVals}
+\index{encfuncs@{encfuncs}!th\_\-encode\_\-ycbcr\_\-in@{th\_\-encode\_\-ycbcr\_\-in}}
+\index{th\_\-encode\_\-ycbcr\_\-in@{th\_\-encode\_\-ycbcr\_\-in}!encfuncs@{encfuncs}}
+\subsubsection[{th\_\-encode\_\-ycbcr\_\-in}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-encode\_\-ycbcr\_\-in ({\bf th\_\-enc\_\-ctx} $\ast$ {\em \_\-enc}, \/ {\bf th\_\-ycbcr\_\-buffer} {\em \_\-ycbcr})}\label{group__encfuncs_gadbe7dd66b411c2d61ab8153c15308750}
+
+
+Submits an uncompressed frame to the encoder.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-enc}]A \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} handle. \item[{\em \_\-ycbcr}]A buffer of Y'CbCr data to encode. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success. \item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\/} or {\itshape \_\-ycbcr\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]The buffer size does not match the frame size the encoder was initialized with, or encoding has already completed. \end{DoxyRetVals}
diff --git a/doc/libtheora/latex/group__oldfuncs.tex b/doc/libtheora/latex/group__oldfuncs.tex
new file mode 100644
index 0000000..5f4bb6f
--- /dev/null
+++ b/doc/libtheora/latex/group__oldfuncs.tex
@@ -0,0 +1,611 @@
+\section{Legacy pre-\/1.0 C API}
+\label{group__oldfuncs}\index{Legacy pre-\/1.0 C API@{Legacy pre-\/1.0 C API}}
+\subsection*{Data Structures}
+\begin{DoxyCompactItemize}
+\item
+struct {\bf yuv\_\-buffer}
+\begin{DoxyCompactList}\small\item\em A YUV buffer for passing uncompressed frames to and from the codec. \item\end{DoxyCompactList}\item
+struct {\bf theora\_\-info}
+\begin{DoxyCompactList}\small\item\em Theora bitstream info. \item\end{DoxyCompactList}\item
+struct {\bf theora\_\-state}
+\begin{DoxyCompactList}\small\item\em Codec internal state and context. \item\end{DoxyCompactList}\item
+struct {\bf theora\_\-comment}
+\begin{DoxyCompactList}\small\item\em Comment header metadata. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Files}
+\begin{DoxyCompactItemize}
+\item
+file {\bf theora.h}
+
+
+\begin{DoxyCompactList}\small\item\em The libtheora pre-\/1.0 legacy C API. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Defines}
+\begin{DoxyCompactItemize}
+\item
+\#define {\bf OC\_\-FAULT}~-\/1
+\begin{DoxyCompactList}\small\item\em General failure. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-EINVAL}~-\/10
+\begin{DoxyCompactList}\small\item\em Library encountered invalid internal data. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-DISABLED}~-\/11
+\begin{DoxyCompactList}\small\item\em Requested action is disabled. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-BADHEADER}~-\/20
+\begin{DoxyCompactList}\small\item\em Header packet was corrupt/invalid. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-NOTFORMAT}~-\/21
+\begin{DoxyCompactList}\small\item\em Packet is not a theora packet. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-VERSION}~-\/22
+\begin{DoxyCompactList}\small\item\em Bitstream version is not handled. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-IMPL}~-\/23
+\begin{DoxyCompactList}\small\item\em Feature or action not implemented. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-BADPACKET}~-\/24
+\begin{DoxyCompactList}\small\item\em Packet is corrupt. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-NEWPACKET}~-\/25
+\begin{DoxyCompactList}\small\item\em Packet is an (ignorable) unhandled extension. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-DUPFRAME}~1
+\begin{DoxyCompactList}\small\item\em Packet is a dropped frame. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Enumerations}
+\begin{DoxyCompactItemize}
+\item
+enum {\bf theora\_\-colorspace} \{ {\bf OC\_\-CS\_\-UNSPECIFIED},
+{\bf OC\_\-CS\_\-ITU\_\-REC\_\-470M},
+{\bf OC\_\-CS\_\-ITU\_\-REC\_\-470BG},
+{\bf OC\_\-CS\_\-NSPACES}
+ \}
+\begin{DoxyCompactList}\small\item\em A Colorspace. \item\end{DoxyCompactList}\item
+enum {\bf theora\_\-pixelformat} \{ {\bf OC\_\-PF\_\-420},
+{\bf OC\_\-PF\_\-RSVD},
+{\bf OC\_\-PF\_\-422},
+{\bf OC\_\-PF\_\-444}
+ \}
+\begin{DoxyCompactList}\small\item\em A Chroma subsampling. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+const char $\ast$ {\bf theora\_\-version\_\-string} (void)
+\begin{DoxyCompactList}\small\item\em Retrieve a human-\/readable string to identify the encoder vendor and version. \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf theora\_\-version\_\-number} (void)
+\begin{DoxyCompactList}\small\item\em Retrieve a 32-\/bit version number. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-encode\_\-init} ({\bf theora\_\-state} $\ast$th, {\bf theora\_\-info} $\ast$ti)
+\begin{DoxyCompactList}\small\item\em Initialize the theora encoder. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-encode\_\-YUVin} ({\bf theora\_\-state} $\ast$t, {\bf yuv\_\-buffer} $\ast$yuv)
+\begin{DoxyCompactList}\small\item\em Submit a YUV buffer to the theora encoder. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-encode\_\-packetout} ({\bf theora\_\-state} $\ast$t, int last\_\-p, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Request the next packet of encoded video. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-encode\_\-header} ({\bf theora\_\-state} $\ast$t, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Request a packet containing the initial header. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-encode\_\-comment} ({\bf theora\_\-comment} $\ast$tc, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Request a comment header packet from provided metadata. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-encode\_\-tables} ({\bf theora\_\-state} $\ast$t, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Request a packet containing the codebook tables for the stream. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-decode\_\-header} ({\bf theora\_\-info} $\ast$ci, {\bf theora\_\-comment} $\ast$cc, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-decode\_\-init} ({\bf theora\_\-state} $\ast$th, {\bf theora\_\-info} $\ast$c)
+\begin{DoxyCompactList}\small\item\em Initialize a \doxyref{theora\_\-state}{p.}{structtheora__state} handle for decoding. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-decode\_\-packetin} ({\bf theora\_\-state} $\ast$th, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Input a packet containing encoded data into the theora decoder. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-decode\_\-YUVout} ({\bf theora\_\-state} $\ast$th, {\bf yuv\_\-buffer} $\ast$yuv)
+\begin{DoxyCompactList}\small\item\em Output the next available frame of decoded YUV data. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-packet\_\-isheader} (ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} for that. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-packet\_\-iskeyframe} (ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Report whether a theora packet is a keyframe or not. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-granule\_\-shift} ({\bf theora\_\-info} $\ast$ti)
+\begin{DoxyCompactList}\small\item\em Report the granulepos shift radix. \item\end{DoxyCompactList}\item
+ogg\_\-int64\_\-t {\bf theora\_\-granule\_\-frame} ({\bf theora\_\-state} $\ast$th, ogg\_\-int64\_\-t granulepos)
+\begin{DoxyCompactList}\small\item\em Convert a granulepos to an absolute frame index, starting at 0. \item\end{DoxyCompactList}\item
+double {\bf theora\_\-granule\_\-time} ({\bf theora\_\-state} $\ast$th, ogg\_\-int64\_\-t granulepos)
+\begin{DoxyCompactList}\small\item\em Convert a granulepos to absolute time in seconds. \item\end{DoxyCompactList}\item
+void {\bf theora\_\-info\_\-init} ({\bf theora\_\-info} $\ast$c)
+\begin{DoxyCompactList}\small\item\em Initialize a \doxyref{theora\_\-info}{p.}{structtheora__info} structure. \item\end{DoxyCompactList}\item
+void {\bf theora\_\-info\_\-clear} ({\bf theora\_\-info} $\ast$c)
+\begin{DoxyCompactList}\small\item\em Clear a \doxyref{theora\_\-info}{p.}{structtheora__info} structure. \item\end{DoxyCompactList}\item
+void {\bf theora\_\-clear} ({\bf theora\_\-state} $\ast$t)
+\begin{DoxyCompactList}\small\item\em Free all internal data associated with a \doxyref{theora\_\-state}{p.}{structtheora__state} handle. \item\end{DoxyCompactList}\item
+void {\bf theora\_\-comment\_\-init} ({\bf theora\_\-comment} $\ast$tc)
+\begin{DoxyCompactList}\small\item\em Initialize an allocated \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. \item\end{DoxyCompactList}\item
+void {\bf theora\_\-comment\_\-add} ({\bf theora\_\-comment} $\ast$tc, char $\ast$comment)
+\begin{DoxyCompactList}\small\item\em Add a comment to an initialized \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. \item\end{DoxyCompactList}\item
+void {\bf theora\_\-comment\_\-add\_\-tag} ({\bf theora\_\-comment} $\ast$tc, char $\ast$tag, char $\ast$value)
+\begin{DoxyCompactList}\small\item\em Add a comment to an initialized \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. \item\end{DoxyCompactList}\item
+char $\ast$ {\bf theora\_\-comment\_\-query} ({\bf theora\_\-comment} $\ast$tc, char $\ast$tag, int count)
+\begin{DoxyCompactList}\small\item\em Look up a comment value by tag. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-comment\_\-query\_\-count} ({\bf theora\_\-comment} $\ast$tc, char $\ast$tag)
+\begin{DoxyCompactList}\small\item\em Look up the number of instances of a tag. \item\end{DoxyCompactList}\item
+void {\bf theora\_\-comment\_\-clear} ({\bf theora\_\-comment} $\ast$tc)
+\begin{DoxyCompactList}\small\item\em Clear an allocated \doxyref{theora\_\-comment}{p.}{structtheora__comment} struct so that it can be freed. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-control} ({\bf theora\_\-state} $\ast$th, int req, void $\ast$buf, size\_\-t buf\_\-sz)
+\begin{DoxyCompactList}\small\item\em Encoder control function. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{theora\_\-control() codes}
+\label{_amgrp13fd61986cff4566fe89a40e30b74ad9}
+ \begin{DoxyCompactItemize}
+\item
+\#define {\bf TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}~(1)
+\begin{DoxyCompactList}\small\item\em Get the maximum post-\/processing level. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-PPLEVEL}~(3)
+\begin{DoxyCompactList}\small\item\em Set the post-\/processing level. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}~(4)
+\begin{DoxyCompactList}\small\item\em Sets the maximum distance between key frames. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-GRANPOS}~(5)
+\begin{DoxyCompactList}\small\item\em Set the granule position. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}~(2)
+\begin{DoxyCompactList}\small\item\em Sets the quantization parameters to use. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}~(10)
+\begin{DoxyCompactList}\small\item\em Disables any encoder features that would prevent lossless transcoding back to VP3. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}~(12)
+\begin{DoxyCompactList}\small\item\em Gets the maximum speed level. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}~(14)
+\begin{DoxyCompactList}\small\item\em Sets the speed level. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Define Documentation}
+\index{oldfuncs@{oldfuncs}!OC\_\-BADHEADER@{OC\_\-BADHEADER}}
+\index{OC\_\-BADHEADER@{OC\_\-BADHEADER}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-BADHEADER}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-BADHEADER~-\/20}\label{group__oldfuncs_ga809cbad2eb36be17a235a3cadfb737ba}
+
+
+Header packet was corrupt/invalid. \index{oldfuncs@{oldfuncs}!OC\_\-BADPACKET@{OC\_\-BADPACKET}}
+\index{OC\_\-BADPACKET@{OC\_\-BADPACKET}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-BADPACKET}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-BADPACKET~-\/24}\label{group__oldfuncs_ga117774c062a63dfad2a5b4d092fa2bb1}
+
+
+Packet is corrupt. \index{oldfuncs@{oldfuncs}!OC\_\-DISABLED@{OC\_\-DISABLED}}
+\index{OC\_\-DISABLED@{OC\_\-DISABLED}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-DISABLED}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-DISABLED~-\/11}\label{group__oldfuncs_ga38b9fa0af856d5930c534db26e2ac2d1}
+
+
+Requested action is disabled. \index{oldfuncs@{oldfuncs}!OC\_\-DUPFRAME@{OC\_\-DUPFRAME}}
+\index{OC\_\-DUPFRAME@{OC\_\-DUPFRAME}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-DUPFRAME}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-DUPFRAME~1}\label{group__oldfuncs_ga84a8d2f5080ad62b415a4e7551941cbb}
+
+
+Packet is a dropped frame. \index{oldfuncs@{oldfuncs}!OC\_\-EINVAL@{OC\_\-EINVAL}}
+\index{OC\_\-EINVAL@{OC\_\-EINVAL}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-EINVAL}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-EINVAL~-\/10}\label{group__oldfuncs_ga43d15091b1a03a734a124e9a04d3be55}
+
+
+Library encountered invalid internal data. \index{oldfuncs@{oldfuncs}!OC\_\-FAULT@{OC\_\-FAULT}}
+\index{OC\_\-FAULT@{OC\_\-FAULT}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-FAULT}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-FAULT~-\/1}\label{group__oldfuncs_gaa4370e13ed3aea6441ccf69dcab2506e}
+
+
+General failure. \index{oldfuncs@{oldfuncs}!OC\_\-IMPL@{OC\_\-IMPL}}
+\index{OC\_\-IMPL@{OC\_\-IMPL}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-IMPL}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-IMPL~-\/23}\label{group__oldfuncs_ga895dc2597b3bf9c97bf7701c6eff5b0c}
+
+
+Feature or action not implemented. \index{oldfuncs@{oldfuncs}!OC\_\-NEWPACKET@{OC\_\-NEWPACKET}}
+\index{OC\_\-NEWPACKET@{OC\_\-NEWPACKET}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-NEWPACKET}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-NEWPACKET~-\/25}\label{group__oldfuncs_ga60be4dc92c933eac3542bce3ce076496}
+
+
+Packet is an (ignorable) unhandled extension. \index{oldfuncs@{oldfuncs}!OC\_\-NOTFORMAT@{OC\_\-NOTFORMAT}}
+\index{OC\_\-NOTFORMAT@{OC\_\-NOTFORMAT}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-NOTFORMAT}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-NOTFORMAT~-\/21}\label{group__oldfuncs_ga9558d6d9eacd2273c8da27f945d725ad}
+
+
+Packet is not a theora packet. \index{oldfuncs@{oldfuncs}!OC\_\-VERSION@{OC\_\-VERSION}}
+\index{OC\_\-VERSION@{OC\_\-VERSION}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-VERSION}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-VERSION~-\/22}\label{group__oldfuncs_ga4611cfd61160405721d1e2ab0ec2564b}
+
+
+Bitstream version is not handled. \index{oldfuncs@{oldfuncs}!TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX@{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}}
+\index{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX@{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}!oldfuncs@{oldfuncs}}
+\subsubsection[{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX~(1)}\label{group__oldfuncs_gab31f251c9319f2140d247585d30b3d07}
+
+
+Get the maximum post-\/processing level. The decoder supports a post-\/processing filter that can improve the appearance of the decoded images. This returns the highest level setting for this post-\/processor, corresponding to maximum improvement and computational expense. \index{oldfuncs@{oldfuncs}!TH\_\-DECCTL\_\-SET\_\-GRANPOS@{TH\_\-DECCTL\_\-SET\_\-GRANPOS}}
+\index{TH\_\-DECCTL\_\-SET\_\-GRANPOS@{TH\_\-DECCTL\_\-SET\_\-GRANPOS}!oldfuncs@{oldfuncs}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-GRANPOS}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-GRANPOS~(5)}\label{group__oldfuncs_ga1e870c654d35394f0d490045df04e0f5}
+
+
+Set the granule position. Call this after a seek, to update the internal granulepos in the decoder, to insure that subsequent frames are marked properly. If you track timestamps yourself and do not use the granule postion returned by the decoder, then you do not need to use this control. \index{oldfuncs@{oldfuncs}!TH\_\-DECCTL\_\-SET\_\-PPLEVEL@{TH\_\-DECCTL\_\-SET\_\-PPLEVEL}}
+\index{TH\_\-DECCTL\_\-SET\_\-PPLEVEL@{TH\_\-DECCTL\_\-SET\_\-PPLEVEL}!oldfuncs@{oldfuncs}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-PPLEVEL}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-PPLEVEL~(3)}\label{group__oldfuncs_ga87774c35e1a755a84e2d705b38ebef0d}
+
+
+Set the post-\/processing level. Sets the level of post-\/processing to use when decoding the compressed stream. This must be a value between zero (off) and the maximum returned by TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX. \index{oldfuncs@{oldfuncs}!TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX@{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}}
+\index{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX@{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}!oldfuncs@{oldfuncs}}
+\subsubsection[{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX~(12)}\label{group__oldfuncs_ga9baf5bdd206e80c78a8fd44687e89783}
+
+
+Gets the maximum speed level. Higher speed levels favor quicker encoding over better quality per bit. Depending on the encoding mode, and the internal algorithms used, quality may actually improve, but in this case bitrate will also likely increase. In any case, overall rate/distortion performance will probably decrease. The maximum value, and the meaning of each value, may change depending on the current encoding mode (VBR vs. CQI, etc.).
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\rightarrow$} {\em buf}]int: The maximum encoding speed level. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em OC\_\-FAULT}]{\itshape \doxyref{theora\_\-state}{p.}{structtheora__state}\/} or {\itshape buf\/} is {\ttfamily NULL}. \item[{\em OC\_\-EINVAL}]{\itshape buf\_\-sz\/} is not {\ttfamily sizeof(int)}. \item[{\em OC\_\-IMPL}]Not supported by this implementation in the current encoding mode. \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE@{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}}
+\index{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE@{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}!oldfuncs@{oldfuncs}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE~(4)}\label{group__oldfuncs_ga27e755e15b4b5604c54974b304037a49}
+
+
+Sets the maximum distance between key frames. This can be changed during an encode, but will be bounded by {\ttfamily 1$<$$<$\doxyref{th\_\-info::keyframe\_\-granule\_\-shift}{p.}{structth__info_a693ca4ab11fbc0c3f32594b4bb8766ed}}. If it is set before encoding begins, \doxyref{th\_\-info::keyframe\_\-granule\_\-shift}{p.}{structth__info_a693ca4ab11fbc0c3f32594b4bb8766ed} will be enlarged appropriately.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em buf}]{\ttfamily ogg\_\-uint32\_\-t}: The maximum distance between key frames. \item[\mbox{$\rightarrow$} {\em buf}]{\ttfamily ogg\_\-uint32\_\-t}: The actual maximum distance set. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em OC\_\-FAULT}]{\itshape \doxyref{theora\_\-state}{p.}{structtheora__state}\/} or {\itshape buf\/} is {\ttfamily NULL}. \item[{\em OC\_\-EINVAL}]{\itshape buf\_\-sz\/} is not {\ttfamily sizeof(ogg\_\-uint32\_\-t)}. \item[{\em OC\_\-IMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS@{TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}}
+\index{TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS@{TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}!oldfuncs@{oldfuncs}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS~(2)}\label{group__oldfuncs_ga3befcdd66678f8d27034f9c4b16d1b9c}
+
+
+Sets the quantization parameters to use. \label{group__oldfuncs_encctlcodes_old}
+ The parameters are copied, not stored by reference, so they can be freed after this call. {\ttfamily NULL} may be specified to revert to the default parameters.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em buf}]\doxyref{th\_\-quant\_\-info}{p.}{structth__quant__info} \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em OC\_\-FAULT}]{\itshape \doxyref{theora\_\-state}{p.}{structtheora__state}\/} is {\ttfamily NULL}. \item[{\em OC\_\-EINVAL}]Encoding has already begun, the quantization parameters are not acceptable to this version of the encoder, {\itshape buf\/} is {\ttfamily NULL} and {\itshape buf\_\-sz\/} is not zero, or {\itshape buf\/} is non-\/{\ttfamily NULL} and {\itshape buf\_\-sz\/} is not {\ttfamily sizeof(\doxyref{th\_\-quant\_\-info}{p.}{structth__quant__info})}. \item[{\em OC\_\-IMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!TH\_\-ENCCTL\_\-SET\_\-SPLEVEL@{TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}}
+\index{TH\_\-ENCCTL\_\-SET\_\-SPLEVEL@{TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}!oldfuncs@{oldfuncs}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-SPLEVEL~(14)}\label{group__oldfuncs_gabd9fbcb6a25a77d991d3620164fe59d6}
+
+
+Sets the speed level. By default a speed value of 1 is used.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em buf}]int: The new encoding speed level. 0 is slowest, larger values use less CPU. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em OC\_\-FAULT}]{\itshape \doxyref{theora\_\-state}{p.}{structtheora__state}\/} or {\itshape buf\/} is {\ttfamily NULL}. \item[{\em OC\_\-EINVAL}]{\itshape buf\_\-sz\/} is not {\ttfamily sizeof(int)}, or the encoding speed level is out of bounds. The maximum encoding speed level may be implementation-\/ and encoding mode-\/specific, and can be obtained via \doxyref{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}{p.}{theoraenc_8h_a9baf5bdd206e80c78a8fd44687e89783}. \item[{\em OC\_\-IMPL}]Not supported by this implementation in the current encoding mode. \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE@{TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}}
+\index{TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE@{TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}!oldfuncs@{oldfuncs}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE~(10)}\label{group__oldfuncs_ga382d685a39a34d8e6ba76b00d804efd8}
+
+
+Disables any encoder features that would prevent lossless transcoding back to VP3. This primarily means disabling block-\/level QI values and not using 4MV mode when any of the luma blocks in a macro block are not coded. It also includes using the VP3 quantization tables and Huffman codes; if you set them explicitly after calling this function, the resulting stream will not be VP3-\/compatible. If you enable VP3-\/compatibility when encoding 4:2:2 or 4:4:4 source material, or when using a picture region smaller than the full frame (e.g. a non-\/multiple-\/of-\/16 width or height), then non-\/VP3 bitstream features will still be disabled, but the stream will still not be VP3-\/compatible, as VP3 was not capable of encoding such formats. If you call this after encoding has already begun, then the quantization tables and codebooks cannot be changed, but the frame-\/level features will be enabled or disabled as requested.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em buf}]{\ttfamily int}: a non-\/zero value to enable VP3 compatibility, or 0 to disable it (the default). \item[\mbox{$\rightarrow$} {\em buf}]{\ttfamily int}: 1 if all bitstream features required for VP3-\/compatibility could be set, and 0 otherwise. The latter will be returned if the pixel format is not 4:2:0, the picture region is smaller than the full frame, or if encoding has begun, preventing the quantization tables and codebooks from being set. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em OC\_\-FAULT}]{\itshape \doxyref{theora\_\-state}{p.}{structtheora__state}\/} or {\itshape buf\/} is {\ttfamily NULL}. \item[{\em OC\_\-EINVAL}]{\itshape buf\_\-sz\/} is not {\ttfamily sizeof(int)}. \item[{\em OC\_\-IMPL}]Not supported by this implementation. \end{DoxyRetVals}
+
+
+\subsection{Enumeration Type Documentation}
+\index{oldfuncs@{oldfuncs}!theora\_\-colorspace@{theora\_\-colorspace}}
+\index{theora\_\-colorspace@{theora\_\-colorspace}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-colorspace}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf theora\_\-colorspace}}\label{group__oldfuncs_gaa567da4ce591f7373149ce3ef3acdac9}
+
+
+A Colorspace. \begin{Desc}
+\item[Enumerator: ]\par
+\begin{description}
+\index{OC\_\-CS\_\-UNSPECIFIED@{OC\_\-CS\_\-UNSPECIFIED}!oldfuncs@{oldfuncs}}\index{oldfuncs@{oldfuncs}!OC\_\-CS\_\-UNSPECIFIED@{OC\_\-CS\_\-UNSPECIFIED}}\item[{\em
+OC\_\-CS\_\-UNSPECIFIED\label{group__oldfuncs_ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f}
+}]The colorspace is unknown or unspecified. \index{OC\_\-CS\_\-ITU\_\-REC\_\-470M@{OC\_\-CS\_\-ITU\_\-REC\_\-470M}!oldfuncs@{oldfuncs}}\index{oldfuncs@{oldfuncs}!OC\_\-CS\_\-ITU\_\-REC\_\-470M@{OC\_\-CS\_\-ITU\_\-REC\_\-470M}}\item[{\em
+OC\_\-CS\_\-ITU\_\-REC\_\-470M\label{group__oldfuncs_ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294}
+}]This is the best option for 'NTSC' content. \index{OC\_\-CS\_\-ITU\_\-REC\_\-470BG@{OC\_\-CS\_\-ITU\_\-REC\_\-470BG}!oldfuncs@{oldfuncs}}\index{oldfuncs@{oldfuncs}!OC\_\-CS\_\-ITU\_\-REC\_\-470BG@{OC\_\-CS\_\-ITU\_\-REC\_\-470BG}}\item[{\em
+OC\_\-CS\_\-ITU\_\-REC\_\-470BG\label{group__oldfuncs_ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a}
+}]This is the best option for 'PAL' content. \index{OC\_\-CS\_\-NSPACES@{OC\_\-CS\_\-NSPACES}!oldfuncs@{oldfuncs}}\index{oldfuncs@{oldfuncs}!OC\_\-CS\_\-NSPACES@{OC\_\-CS\_\-NSPACES}}\item[{\em
+OC\_\-CS\_\-NSPACES\label{group__oldfuncs_ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186}
+}]This marks the end of the defined colorspaces. \end{description}
+\end{Desc}
+
+\index{oldfuncs@{oldfuncs}!theora\_\-pixelformat@{theora\_\-pixelformat}}
+\index{theora\_\-pixelformat@{theora\_\-pixelformat}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-pixelformat}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf theora\_\-pixelformat}}\label{group__oldfuncs_gae169da05bfaaf4e964a6866552d45079}
+
+
+A Chroma subsampling. These enumerate the available chroma subsampling options supported by the theora format. See Section 4.4 of the specification for exact definitions. \begin{Desc}
+\item[Enumerator: ]\par
+\begin{description}
+\index{OC\_\-PF\_\-420@{OC\_\-PF\_\-420}!oldfuncs@{oldfuncs}}\index{oldfuncs@{oldfuncs}!OC\_\-PF\_\-420@{OC\_\-PF\_\-420}}\item[{\em
+OC\_\-PF\_\-420\label{group__oldfuncs_ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b}
+}]Chroma subsampling by 2 in each direction (4:2:0). \index{OC\_\-PF\_\-RSVD@{OC\_\-PF\_\-RSVD}!oldfuncs@{oldfuncs}}\index{oldfuncs@{oldfuncs}!OC\_\-PF\_\-RSVD@{OC\_\-PF\_\-RSVD}}\item[{\em
+OC\_\-PF\_\-RSVD\label{group__oldfuncs_ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb}
+}]Reserved value. \index{OC\_\-PF\_\-422@{OC\_\-PF\_\-422}!oldfuncs@{oldfuncs}}\index{oldfuncs@{oldfuncs}!OC\_\-PF\_\-422@{OC\_\-PF\_\-422}}\item[{\em
+OC\_\-PF\_\-422\label{group__oldfuncs_ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b}
+}]Horizonatal chroma subsampling by 2 (4:2:2). \index{OC\_\-PF\_\-444@{OC\_\-PF\_\-444}!oldfuncs@{oldfuncs}}\index{oldfuncs@{oldfuncs}!OC\_\-PF\_\-444@{OC\_\-PF\_\-444}}\item[{\em
+OC\_\-PF\_\-444\label{group__oldfuncs_ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044}
+}]No chroma subsampling at all (4:4:4). \end{description}
+\end{Desc}
+
+
+
+\subsection{Function Documentation}
+\index{oldfuncs@{oldfuncs}!theora\_\-clear@{theora\_\-clear}}
+\index{theora\_\-clear@{theora\_\-clear}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-clear}]{\setlength{\rightskip}{0pt plus 5cm}void theora\_\-clear ({\bf theora\_\-state} $\ast$ {\em t})}\label{group__oldfuncs_gab252d5d81b925136dda72e8f1c09c5eb}
+
+
+Free all internal data associated with a \doxyref{theora\_\-state}{p.}{structtheora__state} handle.
+\begin{DoxyParams}{Parameters}
+\item[{\em t}]A \doxyref{theora\_\-state}{p.}{structtheora__state} handle. \end{DoxyParams}
+\index{oldfuncs@{oldfuncs}!theora\_\-comment\_\-add@{theora\_\-comment\_\-add}}
+\index{theora\_\-comment\_\-add@{theora\_\-comment\_\-add}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-comment\_\-add}]{\setlength{\rightskip}{0pt plus 5cm}void theora\_\-comment\_\-add ({\bf theora\_\-comment} $\ast$ {\em tc}, \/ char $\ast$ {\em comment})}\label{group__oldfuncs_ga650642ed23894e41109bbc42ec393ed4}
+
+
+Add a comment to an initialized \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure.
+\begin{DoxyParams}{Parameters}
+\item[{\em tc}]A previously initialized theora comment structure \item[{\em comment}]A null-\/terminated string encoding the comment in the form \char`\"{}TAG=the value\char`\"{}\end{DoxyParams}
+Neither \doxyref{theora\_\-comment\_\-add()}{p.}{group__oldfuncs_ga650642ed23894e41109bbc42ec393ed4} nor \doxyref{theora\_\-comment\_\-add\_\-tag()}{p.}{group__oldfuncs_ga339bd80b5bf4bb168b7052d8ec0b5a92} support comments containing null values, although the bitstream format supports this. To add such comments you will need to manipulate the \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure directly. \index{oldfuncs@{oldfuncs}!theora\_\-comment\_\-add\_\-tag@{theora\_\-comment\_\-add\_\-tag}}
+\index{theora\_\-comment\_\-add\_\-tag@{theora\_\-comment\_\-add\_\-tag}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-comment\_\-add\_\-tag}]{\setlength{\rightskip}{0pt plus 5cm}void theora\_\-comment\_\-add\_\-tag ({\bf theora\_\-comment} $\ast$ {\em tc}, \/ char $\ast$ {\em tag}, \/ char $\ast$ {\em value})}\label{group__oldfuncs_ga339bd80b5bf4bb168b7052d8ec0b5a92}
+
+
+Add a comment to an initialized \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure.
+\begin{DoxyParams}{Parameters}
+\item[{\em tc}]A previously initialized theora comment structure \item[{\em tag}]A null-\/terminated string containing the tag associated with the comment. \item[{\em value}]The corresponding value as a null-\/terminated string\end{DoxyParams}
+Neither \doxyref{theora\_\-comment\_\-add()}{p.}{group__oldfuncs_ga650642ed23894e41109bbc42ec393ed4} nor \doxyref{theora\_\-comment\_\-add\_\-tag()}{p.}{group__oldfuncs_ga339bd80b5bf4bb168b7052d8ec0b5a92} support comments containing null values, although the bitstream format supports this. To add such comments you will need to manipulate the \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure directly. \index{oldfuncs@{oldfuncs}!theora\_\-comment\_\-clear@{theora\_\-comment\_\-clear}}
+\index{theora\_\-comment\_\-clear@{theora\_\-comment\_\-clear}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-comment\_\-clear}]{\setlength{\rightskip}{0pt plus 5cm}void theora\_\-comment\_\-clear ({\bf theora\_\-comment} $\ast$ {\em tc})}\label{group__oldfuncs_ga04c07c2eefba3a433e43f9fbde14719f}
+
+
+Clear an allocated \doxyref{theora\_\-comment}{p.}{structtheora__comment} struct so that it can be freed.
+\begin{DoxyParams}{Parameters}
+\item[{\em tc}]An allocated \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. \end{DoxyParams}
+\index{oldfuncs@{oldfuncs}!theora\_\-comment\_\-init@{theora\_\-comment\_\-init}}
+\index{theora\_\-comment\_\-init@{theora\_\-comment\_\-init}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-comment\_\-init}]{\setlength{\rightskip}{0pt plus 5cm}void theora\_\-comment\_\-init ({\bf theora\_\-comment} $\ast$ {\em tc})}\label{group__oldfuncs_ga811b92785df3bdbbebb3de612d9d6ce0}
+
+
+Initialize an allocated \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure.
+\begin{DoxyParams}{Parameters}
+\item[{\em tc}]An allocated \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure \end{DoxyParams}
+\index{oldfuncs@{oldfuncs}!theora\_\-comment\_\-query@{theora\_\-comment\_\-query}}
+\index{theora\_\-comment\_\-query@{theora\_\-comment\_\-query}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-comment\_\-query}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ theora\_\-comment\_\-query ({\bf theora\_\-comment} $\ast$ {\em tc}, \/ char $\ast$ {\em tag}, \/ int {\em count})}\label{group__oldfuncs_ga4361f6001abb5c83c36a2ddfb648a8dc}
+
+
+Look up a comment value by tag.
+\begin{DoxyParams}{Parameters}
+\item[{\em tc}]Tn initialized \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure \item[{\em tag}]The tag to look up \item[{\em count}]The instance of the tag. The same tag can appear multiple times, each with a distinct and ordered value, so an index is required to retrieve them all. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+A pointer to the queried tag's value
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em NULL}]No matching tag is found\end{DoxyRetVals}
+\begin{DoxyNote}{Note}
+Use \doxyref{theora\_\-comment\_\-query\_\-count()}{p.}{group__oldfuncs_ga10f66a3c752442a3e0c0098e0f88df8b} to get the legal range for the count parameter.
+\end{DoxyNote}
+\index{oldfuncs@{oldfuncs}!theora\_\-comment\_\-query\_\-count@{theora\_\-comment\_\-query\_\-count}}
+\index{theora\_\-comment\_\-query\_\-count@{theora\_\-comment\_\-query\_\-count}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-comment\_\-query\_\-count}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-comment\_\-query\_\-count ({\bf theora\_\-comment} $\ast$ {\em tc}, \/ char $\ast$ {\em tag})}\label{group__oldfuncs_ga10f66a3c752442a3e0c0098e0f88df8b}
+
+
+Look up the number of instances of a tag.
+\begin{DoxyParams}{Parameters}
+\item[{\em tc}]An initialized \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure \item[{\em tag}]The tag to look up \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The number on instances of a particular tag.
+\end{DoxyReturn}
+Call this first when querying for a specific tag and then interate over the number of instances with separate calls to \doxyref{theora\_\-comment\_\-query()}{p.}{group__oldfuncs_ga4361f6001abb5c83c36a2ddfb648a8dc} to retrieve all instances in order. \index{oldfuncs@{oldfuncs}!theora\_\-control@{theora\_\-control}}
+\index{theora\_\-control@{theora\_\-control}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-control}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-control ({\bf theora\_\-state} $\ast$ {\em th}, \/ int {\em req}, \/ void $\ast$ {\em buf}, \/ size\_\-t {\em buf\_\-sz})}\label{group__oldfuncs_ga186773db3bc8cd550047e7df1b2ba2c9}
+
+
+Encoder control function. This is used to provide advanced control the encoding process.
+\begin{DoxyParams}{Parameters}
+\item[{\em th}]A \doxyref{theora\_\-state}{p.}{structtheora__state} handle. \item[{\em req}]The control code to process. See \doxyref{the list of available }{p.}{group__oldfuncs_encctlcodes_old} control codes for details. \item[{\em buf}]The parameters for this control code. \item[{\em buf\_\-sz}]The size of the parameter buffer. \end{DoxyParams}
+\index{oldfuncs@{oldfuncs}!theora\_\-decode\_\-header@{theora\_\-decode\_\-header}}
+\index{theora\_\-decode\_\-header@{theora\_\-decode\_\-header}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-decode\_\-header}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-decode\_\-header ({\bf theora\_\-info} $\ast$ {\em ci}, \/ {\bf theora\_\-comment} $\ast$ {\em cc}, \/ ogg\_\-packet $\ast$ {\em op})}\label{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82}
+
+
+Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.
+\begin{DoxyParams}{Parameters}
+\item[{\em ci}]A \doxyref{theora\_\-info}{p.}{structtheora__info} structure to fill. This must have been previously initialized with \doxyref{theora\_\-info\_\-init()}{p.}{group__oldfuncs_ga3091c87d48f1faba018c5956379a6d90}. If {\itshape op\/} contains an initial header, \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} will fill {\itshape ci\/} with the parsed header values. If {\itshape op\/} contains codebook tables, \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} will parse these and attach an internal representation to {\itshape ci-\/$>$codec\_\-setup\/}. \item[{\em cc}]A \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure to fill. If {\itshape op\/} contains comment data, \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} will fill {\itshape cc\/} with the parsed comments. \item[{\em op}]An ogg\_\-packet structure which you expect contains an initial header, comment data or codebook tables.\end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em OC\_\-BADHEADER}]{\itshape op\/} is NULL; OR the first byte of {\itshape op-\/$>$packet\/} has the signature of an initial packet, but op is not a b\_\-o\_\-s packet; OR this packet has the signature of an initial header packet, but an initial header packet has already been seen; OR this packet has the signature of a comment packet, but the initial header has not yet been seen; OR this packet has the signature of a comment packet, but contains invalid data; OR this packet has the signature of codebook tables, but the initial header or comments have not yet been seen; OR this packet has the signature of codebook tables, but contains invalid data; OR the stream being decoded has a compatible version but this packet does not have the signature of a theora initial header, comments, or codebook packet \item[{\em OC\_\-VERSION}]The packet data of {\itshape op\/} is an initial header with a version which is incompatible with this version of libtheora. \item[{\em OC\_\-NEWPACKET}]the stream being decoded has an incompatible (future) version and contains an unknown signature. \item[{\em 0}]Success\end{DoxyRetVals}
+\begin{DoxyNote}{Note}
+The normal usage is that \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} be called on the first three packets of a theora logical bitstream in succession.
+\end{DoxyNote}
+\index{oldfuncs@{oldfuncs}!theora\_\-decode\_\-init@{theora\_\-decode\_\-init}}
+\index{theora\_\-decode\_\-init@{theora\_\-decode\_\-init}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-decode\_\-init}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-decode\_\-init ({\bf theora\_\-state} $\ast$ {\em th}, \/ {\bf theora\_\-info} $\ast$ {\em c})}\label{group__oldfuncs_ga264907c66003799ff77ecbd09eb33d2c}
+
+
+Initialize a \doxyref{theora\_\-state}{p.}{structtheora__state} handle for decoding.
+\begin{DoxyParams}{Parameters}
+\item[{\em th}]The \doxyref{theora\_\-state}{p.}{structtheora__state} handle to initialize. \item[{\em c}]A \doxyref{theora\_\-info}{p.}{structtheora__info} struct filled with the desired decoding parameters. This is of course usually obtained from a previous call to \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82}. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-decode\_\-packetin@{theora\_\-decode\_\-packetin}}
+\index{theora\_\-decode\_\-packetin@{theora\_\-decode\_\-packetin}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-decode\_\-packetin}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-decode\_\-packetin ({\bf theora\_\-state} $\ast$ {\em th}, \/ ogg\_\-packet $\ast$ {\em op})}\label{group__oldfuncs_gaa65a9e53b46fd54ab344bd599fa96975}
+
+
+Input a packet containing encoded data into the theora decoder.
+\begin{DoxyParams}{Parameters}
+\item[{\em th}]A \doxyref{theora\_\-state}{p.}{structtheora__state} handle previously initialized for decoding. \item[{\em op}]An ogg\_\-packet containing encoded theora data. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success \item[{\em OC\_\-BADPACKET}]{\itshape op\/} does not contain encoded video data \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-decode\_\-YUVout@{theora\_\-decode\_\-YUVout}}
+\index{theora\_\-decode\_\-YUVout@{theora\_\-decode\_\-YUVout}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-decode\_\-YUVout}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-decode\_\-YUVout ({\bf theora\_\-state} $\ast$ {\em th}, \/ {\bf yuv\_\-buffer} $\ast$ {\em yuv})}\label{group__oldfuncs_ga09d47c80e1e94bff0a46a496816b8daa}
+
+
+Output the next available frame of decoded YUV data.
+\begin{DoxyParams}{Parameters}
+\item[{\em th}]A \doxyref{theora\_\-state}{p.}{structtheora__state} handle previously initialized for decoding. \item[{\em yuv}]A \doxyref{yuv\_\-buffer}{p.}{structyuv__buffer} in which libtheora should place the decoded data. Note that the buffer struct itself is allocated by the user, but that the luma and chroma pointers will be filled in by the library. Also note that these luma and chroma regions should be considered read-\/only by the user. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-encode\_\-comment@{theora\_\-encode\_\-comment}}
+\index{theora\_\-encode\_\-comment@{theora\_\-encode\_\-comment}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-encode\_\-comment}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-encode\_\-comment ({\bf theora\_\-comment} $\ast$ {\em tc}, \/ ogg\_\-packet $\ast$ {\em op})}\label{group__oldfuncs_ga45e8db0713eaaca0f1144f3724cb834a}
+
+
+Request a comment header packet from provided metadata. A pointer to the comment data is placed in a user-\/provided ogg\_\-packet structure.
+\begin{DoxyParams}{Parameters}
+\item[{\em tc}]A \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure filled with the desired metadata \item[{\em op}]An ogg\_\-packet structure to fill. libtheora will set all elements of this structure, including a pointer to the encoded comment data. The memory for the comment data is owned by libtheora. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-encode\_\-header@{theora\_\-encode\_\-header}}
+\index{theora\_\-encode\_\-header@{theora\_\-encode\_\-header}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-encode\_\-header}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-encode\_\-header ({\bf theora\_\-state} $\ast$ {\em t}, \/ ogg\_\-packet $\ast$ {\em op})}\label{group__oldfuncs_ga451feb58d6bde726edbae193689887be}
+
+
+Request a packet containing the initial header. A pointer to the header data is placed in a user-\/provided ogg\_\-packet structure.
+\begin{DoxyParams}{Parameters}
+\item[{\em t}]A \doxyref{theora\_\-state}{p.}{structtheora__state} handle previously initialized for encoding. \item[{\em op}]An ogg\_\-packet structure to fill. libtheora will set all elements of this structure, including a pointer to the header data. The memory for the header data is owned by libtheora. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-encode\_\-init@{theora\_\-encode\_\-init}}
+\index{theora\_\-encode\_\-init@{theora\_\-encode\_\-init}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-encode\_\-init}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-encode\_\-init ({\bf theora\_\-state} $\ast$ {\em th}, \/ {\bf theora\_\-info} $\ast$ {\em ti})}\label{group__oldfuncs_ga0f7ad4d4b2343278cb4ba8fb2bd5109a}
+
+
+Initialize the theora encoder.
+\begin{DoxyParams}{Parameters}
+\item[{\em th}]The \doxyref{theora\_\-state}{p.}{structtheora__state} handle to initialize for encoding. \item[{\em ti}]A \doxyref{theora\_\-info}{p.}{structtheora__info} struct filled with the desired encoding parameters. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-encode\_\-packetout@{theora\_\-encode\_\-packetout}}
+\index{theora\_\-encode\_\-packetout@{theora\_\-encode\_\-packetout}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-encode\_\-packetout}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-encode\_\-packetout ({\bf theora\_\-state} $\ast$ {\em t}, \/ int {\em last\_\-p}, \/ ogg\_\-packet $\ast$ {\em op})}\label{group__oldfuncs_ga5f4929677a735bc2198c2309d235f1b3}
+
+
+Request the next packet of encoded video. The encoded data is placed in a user-\/provided ogg\_\-packet structure.
+\begin{DoxyParams}{Parameters}
+\item[{\em t}]A \doxyref{theora\_\-state}{p.}{structtheora__state} handle previously initialized for encoding. \item[{\em last\_\-p}]whether this is the last packet the encoder should produce. \item[{\em op}]An ogg\_\-packet structure to fill. libtheora will set all elements of this structure, including a pointer to encoded data. The memory for the encoded data is owned by libtheora. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]No internal storage exists OR no packet is ready \item[{\em -\/1}]The encoding process has completed \item[{\em 1}]Success \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-encode\_\-tables@{theora\_\-encode\_\-tables}}
+\index{theora\_\-encode\_\-tables@{theora\_\-encode\_\-tables}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-encode\_\-tables}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-encode\_\-tables ({\bf theora\_\-state} $\ast$ {\em t}, \/ ogg\_\-packet $\ast$ {\em op})}\label{group__oldfuncs_ga5085baf20855b283fa01fc948505d9d2}
+
+
+Request a packet containing the codebook tables for the stream. A pointer to the codebook data is placed in a user-\/provided ogg\_\-packet structure.
+\begin{DoxyParams}{Parameters}
+\item[{\em t}]A \doxyref{theora\_\-state}{p.}{structtheora__state} handle previously initialized for encoding. \item[{\em op}]An ogg\_\-packet structure to fill. libtheora will set all elements of this structure, including a pointer to the codebook data. The memory for the header data is owned by libtheora. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-encode\_\-YUVin@{theora\_\-encode\_\-YUVin}}
+\index{theora\_\-encode\_\-YUVin@{theora\_\-encode\_\-YUVin}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-encode\_\-YUVin}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-encode\_\-YUVin ({\bf theora\_\-state} $\ast$ {\em t}, \/ {\bf yuv\_\-buffer} $\ast$ {\em yuv})}\label{group__oldfuncs_gac0d33d896ca70cedfc94c5986d947078}
+
+
+Submit a YUV buffer to the theora encoder.
+\begin{DoxyParams}{Parameters}
+\item[{\em t}]A \doxyref{theora\_\-state}{p.}{structtheora__state} handle previously initialized for encoding. \item[{\em yuv}]A buffer of YUV data to encode. Note that both the \doxyref{yuv\_\-buffer}{p.}{structyuv__buffer} struct and the luma/chroma buffers within should be allocated by the user. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em OC\_\-EINVAL}]Encoder is not ready, or is finished. \item[{\em -\/1}]The size of the given frame differs from those previously input \item[{\em 0}]Success \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-granule\_\-frame@{theora\_\-granule\_\-frame}}
+\index{theora\_\-granule\_\-frame@{theora\_\-granule\_\-frame}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-granule\_\-frame}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-int64\_\-t theora\_\-granule\_\-frame ({\bf theora\_\-state} $\ast$ {\em th}, \/ ogg\_\-int64\_\-t {\em granulepos})}\label{group__oldfuncs_ga7bfa3ceb2fb4b41a282456c56e1dd269}
+
+
+Convert a granulepos to an absolute frame index, starting at 0. The granulepos is interpreted in the context of a given \doxyref{theora\_\-state}{p.}{structtheora__state} handle.
+
+Note that while the granulepos encodes the frame count (i.e. starting from 1) this call returns the frame index, starting from zero. Thus One can calculate the presentation time by multiplying the index by the rate.
+
+
+\begin{DoxyParams}{Parameters}
+\item[{\em th}]A previously initialized \doxyref{theora\_\-state}{p.}{structtheora__state} handle (encode or decode) \item[{\em granulepos}]The granulepos to convert. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The frame index corresponding to {\itshape granulepos\/}.
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em -\/1}]The given granulepos is undefined (i.e. negative)\end{DoxyRetVals}
+Thus function was added in the 1.0alpha4 release. \index{oldfuncs@{oldfuncs}!theora\_\-granule\_\-shift@{theora\_\-granule\_\-shift}}
+\index{theora\_\-granule\_\-shift@{theora\_\-granule\_\-shift}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-granule\_\-shift}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-granule\_\-shift ({\bf theora\_\-info} $\ast$ {\em ti})}\label{group__oldfuncs_gacd9360e6a47139c761002410af457a02}
+
+
+Report the granulepos shift radix. When embedded in Ogg, Theora uses a two-\/part granulepos, splitting the 64-\/bit field into two pieces. The more-\/significant section represents the frame count at the last keyframe, and the less-\/significant section represents the count of frames since the last keyframe. In this way the overall field is still non-\/decreasing with time, but usefully encodes a pointer to the last keyframe, which is necessary for correctly restarting decode after a seek.
+
+This function reports the number of bits used to represent the distance to the last keyframe, and thus how the granulepos field must be shifted or masked to obtain the two parts.
+
+Since libtheora returns compressed data in an ogg\_\-packet structure, this may be generally useful even if the Theora packets are not being used in an Ogg container.
+
+
+\begin{DoxyParams}{Parameters}
+\item[{\em ti}]A previously initialized \doxyref{theora\_\-info}{p.}{structtheora__info} struct \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The bit shift dividing the two granulepos fields
+\end{DoxyReturn}
+This function was added in the 1.0alpha5 release. \index{oldfuncs@{oldfuncs}!theora\_\-granule\_\-time@{theora\_\-granule\_\-time}}
+\index{theora\_\-granule\_\-time@{theora\_\-granule\_\-time}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-granule\_\-time}]{\setlength{\rightskip}{0pt plus 5cm}double theora\_\-granule\_\-time ({\bf theora\_\-state} $\ast$ {\em th}, \/ ogg\_\-int64\_\-t {\em granulepos})}\label{group__oldfuncs_ga4376358b12b9fa23ce6fe21cb5c65ac6}
+
+
+Convert a granulepos to absolute time in seconds. The granulepos is interpreted in the context of a given \doxyref{theora\_\-state}{p.}{structtheora__state} handle, and gives the end time of a frame's presentation as used in Ogg mux ordering.
+
+
+\begin{DoxyParams}{Parameters}
+\item[{\em th}]A previously initialized \doxyref{theora\_\-state}{p.}{structtheora__state} handle (encode or decode) \item[{\em granulepos}]The granulepos to convert. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The absolute time in seconds corresponding to {\itshape granulepos\/}. This is the \char`\"{}end time\char`\"{} for the frame, or the latest time it should be displayed. It is not the presentation time.
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em -\/1.}]The given granulepos is undefined (i.e. negative), or \item[{\em -\/1.}]The function has been disabled because floating point support is not available. \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-info\_\-clear@{theora\_\-info\_\-clear}}
+\index{theora\_\-info\_\-clear@{theora\_\-info\_\-clear}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-info\_\-clear}]{\setlength{\rightskip}{0pt plus 5cm}void theora\_\-info\_\-clear ({\bf theora\_\-info} $\ast$ {\em c})}\label{group__oldfuncs_gaba7022d58edbc4825cacad03f68b3e0d}
+
+
+Clear a \doxyref{theora\_\-info}{p.}{structtheora__info} structure. All values within the given \doxyref{theora\_\-info}{p.}{structtheora__info} structure are cleared, and associated internal codec setup data is freed.
+\begin{DoxyParams}{Parameters}
+\item[{\em c}]A \doxyref{theora\_\-info}{p.}{structtheora__info} struct to initialize. \end{DoxyParams}
+\index{oldfuncs@{oldfuncs}!theora\_\-info\_\-init@{theora\_\-info\_\-init}}
+\index{theora\_\-info\_\-init@{theora\_\-info\_\-init}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-info\_\-init}]{\setlength{\rightskip}{0pt plus 5cm}void theora\_\-info\_\-init ({\bf theora\_\-info} $\ast$ {\em c})}\label{group__oldfuncs_ga3091c87d48f1faba018c5956379a6d90}
+
+
+Initialize a \doxyref{theora\_\-info}{p.}{structtheora__info} structure. All values within the given \doxyref{theora\_\-info}{p.}{structtheora__info} structure are initialized, and space is allocated within libtheora for internal codec setup data.
+\begin{DoxyParams}{Parameters}
+\item[{\em c}]A \doxyref{theora\_\-info}{p.}{structtheora__info} struct to initialize. \end{DoxyParams}
+\index{oldfuncs@{oldfuncs}!theora\_\-packet\_\-isheader@{theora\_\-packet\_\-isheader}}
+\index{theora\_\-packet\_\-isheader@{theora\_\-packet\_\-isheader}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-packet\_\-isheader}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-packet\_\-isheader (ogg\_\-packet $\ast$ {\em op})}\label{group__oldfuncs_gab969f9d0407683f0e5abe73d0839a25b}
+
+
+Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} for that.
+\begin{DoxyParams}{Parameters}
+\item[{\em op}]An ogg\_\-packet containing encoded theora data. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 1}]The packet is a header packet \item[{\em 0}]The packet is not a header packet (and so contains frame data)\end{DoxyRetVals}
+Thus function was added in the 1.0alpha4 release. \index{oldfuncs@{oldfuncs}!theora\_\-packet\_\-iskeyframe@{theora\_\-packet\_\-iskeyframe}}
+\index{theora\_\-packet\_\-iskeyframe@{theora\_\-packet\_\-iskeyframe}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-packet\_\-iskeyframe}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-packet\_\-iskeyframe (ogg\_\-packet $\ast$ {\em op})}\label{group__oldfuncs_ga39ccc8f847a748d7074c926b4fdd12b2}
+
+
+Report whether a theora packet is a keyframe or not.
+\begin{DoxyParams}{Parameters}
+\item[{\em op}]An ogg\_\-packet containing encoded theora data. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 1}]The packet contains a keyframe image \item[{\em 0}]The packet is contains an interframe delta \item[{\em -\/1}]The packet is not an image data packet at all\end{DoxyRetVals}
+Thus function was added in the 1.0alpha4 release. \index{oldfuncs@{oldfuncs}!theora\_\-version\_\-number@{theora\_\-version\_\-number}}
+\index{theora\_\-version\_\-number@{theora\_\-version\_\-number}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-version\_\-number}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t theora\_\-version\_\-number (void)}\label{group__oldfuncs_gad181f4b19d455dcc2bef2533530b84c8}
+
+
+Retrieve a 32-\/bit version number. This number is composed of a 16-\/bit major version, 8-\/bit minor version and 8 bit sub-\/version, composed as follows:
+\begin{DoxyPre}
+ (VERSION\_MAJOR<<16) + (VERSION\_MINOR<<8) + (VERSION\_SUB)
+\end{DoxyPre}
+ \begin{DoxyReturn}{Returns}
+The version number.
+\end{DoxyReturn}
+\index{oldfuncs@{oldfuncs}!theora\_\-version\_\-string@{theora\_\-version\_\-string}}
+\index{theora\_\-version\_\-string@{theora\_\-version\_\-string}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-version\_\-string}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ theora\_\-version\_\-string (void)}\label{group__oldfuncs_ga5a3da8fd262a60f055f96536eec06df2}
+
+
+Retrieve a human-\/readable string to identify the encoder vendor and version. \begin{DoxyReturn}{Returns}
+A version string.
+\end{DoxyReturn}
diff --git a/doc/libtheora/latex/index.tex b/doc/libtheora/latex/index.tex
new file mode 100644
index 0000000..6a36a67
--- /dev/null
+++ b/doc/libtheora/latex/index.tex
@@ -0,0 +1,12 @@
+\section{Introduction}\label{index_intro}
+This is the documentation for {\ttfamily libtheora} C API. The current reference implementation for {\tt Theora}, a free, patent-\/unencumbered video codec. Theora is derived from On2's VP3 codec with additional features and integration with Ogg multimedia formats by {\tt the Xiph.Org Foundation}. Complete documentation of the format itself is available in {\tt the Theora specification}.\subsection{Organization}\label{index_Organization}
+The functions documented here are actually subdivided into three separate libraries:
+\begin{DoxyItemize}
+\item {\ttfamily libtheoraenc} contains the encoder interface, described in \doxyref{Functions for Encoding}{p.}{group__encfuncs}.
+\item {\ttfamily libtheoradec} contains the decoder interface and routines shared with the encoder. You must also link to this if you link to {\ttfamily libtheoraenc}. The routines in this library are described in \doxyref{Functions for Decoding}{p.}{group__decfuncs} and \doxyref{Functions Shared by Encode and Decode}{p.}{group__basefuncs}.
+\item {\ttfamily libtheora} contains the \doxyref{Legacy pre-\/1.0 C API}{p.}{group__oldfuncs}.
+\end{DoxyItemize}
+
+New code should link to {\ttfamily libtheoradec} and, if using encoder features, {\ttfamily libtheoraenc}. Together these two export both the standard and the legacy API, so this is all that is needed by any code. The older {\ttfamily libtheora} library is provided just for compatibility with older build configurations.
+
+In general the recommended 1.x API symbols can be distinguished by their {\ttfamily th\_\-} or {\ttfamily TH\_\-} namespace prefix. The older, legacy API uses {\ttfamily theora\_\-} or {\ttfamily OC\_\-} prefixes instead. \ No newline at end of file
diff --git a/doc/libtheora/latex/modules.tex b/doc/libtheora/latex/modules.tex
new file mode 100644
index 0000000..7e83e09
--- /dev/null
+++ b/doc/libtheora/latex/modules.tex
@@ -0,0 +1,7 @@
+\section{Modules}
+Here is a list of all modules:\begin{DoxyCompactList}
+\item \contentsline{section}{Functions Shared by Encode and Decode}{\pageref{group__basefuncs}}{}
+\item \contentsline{section}{Legacy pre-\/1.0 C API}{\pageref{group__oldfuncs}}{}
+\item \contentsline{section}{Functions for Decoding}{\pageref{group__decfuncs}}{}
+\item \contentsline{section}{Functions for Encoding}{\pageref{group__encfuncs}}{}
+\end{DoxyCompactList}
diff --git a/doc/libtheora/latex/refman.tex b/doc/libtheora/latex/refman.tex
new file mode 100644
index 0000000..4bbc465
--- /dev/null
+++ b/doc/libtheora/latex/refman.tex
@@ -0,0 +1,64 @@
+\documentclass[a4paper]{book}
+\usepackage{a4wide}
+\usepackage{makeidx}
+\usepackage{graphicx}
+\usepackage{multicol}
+\usepackage{float}
+\usepackage{listings}
+\usepackage{color}
+\usepackage{textcomp}
+\usepackage{alltt}
+\usepackage[utf8]{inputenc}
+\usepackage{doxygen}
+\lstset{language=C++,inputencoding=utf8,basicstyle=\footnotesize,breaklines=true,breakatwhitespace=true,tabsize=8,numbers=left }
+\makeindex
+\setcounter{tocdepth}{3}
+\renewcommand{\footrulewidth}{0.4pt}
+\begin{document}
+\begin{titlepage}
+\vspace*{7cm}
+\begin{center}
+{\Large libtheora \\[1ex]\large 1.1.0+svn }\\
+\vspace*{1cm}
+{\large Generated by Doxygen 1.6.1}\\
+\vspace*{0.5cm}
+{\small Mon Sep 28 11:02:24 2009}\\
+\end{center}
+\end{titlepage}
+\clearemptydoublepage
+\pagenumbering{roman}
+\tableofcontents
+\clearemptydoublepage
+\pagenumbering{arabic}
+\chapter{Main Page}
+\label{index}\input{index}
+\chapter{Module Index}
+\input{modules}
+\chapter{Data Structure Index}
+\input{annotated}
+\chapter{File Index}
+\input{files}
+\chapter{Module Documentation}
+\input{group__basefuncs}
+\include{group__oldfuncs}
+\include{group__decfuncs}
+\include{group__encfuncs}
+\chapter{Data Structure Documentation}
+\input{structth__comment}
+\include{structth__huff__code}
+\include{structth__img__plane}
+\include{structth__info}
+\include{structth__quant__info}
+\include{structth__quant__ranges}
+\include{structth__stripe__callback}
+\include{structtheora__comment}
+\include{structtheora__info}
+\include{structtheora__state}
+\include{structyuv__buffer}
+\chapter{File Documentation}
+\input{codec_8h}
+\include{theora_8h}
+\include{theoradec_8h}
+\include{theoraenc_8h}
+\printindex
+\end{document}
diff --git a/doc/libtheora/latex/structth__comment.tex b/doc/libtheora/latex/structth__comment.tex
new file mode 100644
index 0000000..9ce92b6
--- /dev/null
+++ b/doc/libtheora/latex/structth__comment.tex
@@ -0,0 +1,53 @@
+\section{th\_\-comment Struct Reference}
+\label{structth__comment}\index{th\_\-comment@{th\_\-comment}}
+
+
+The comment information.
+
+
+{\ttfamily \#include $<$codec.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item
+char $\ast$$\ast$ {\bf user\_\-comments}
+\begin{DoxyCompactList}\small\item\em The array of comment string vectors. \item\end{DoxyCompactList}\item
+int $\ast$ {\bf comment\_\-lengths}
+\begin{DoxyCompactList}\small\item\em An array of the corresponding length of each vector, in bytes. \item\end{DoxyCompactList}\item
+int {\bf comments}
+\begin{DoxyCompactList}\small\item\em The total number of comment strings. \item\end{DoxyCompactList}\item
+char $\ast$ {\bf vendor}
+\begin{DoxyCompactList}\small\item\em The null-\/terminated vendor string. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+The comment information. This structure holds the in-\/stream metadata corresponding to the 'comment' header packet. The comment header is meant to be used much like someone jotting a quick note on the label of a video. It should be a short, to the point text note that can be more than a couple words, but not more than a short paragraph.
+
+The metadata is stored as a series of (tag, value) pairs, in length-\/encoded string vectors. The first occurrence of the '=' character delimits the tag and value. A particular tag may occur more than once, and order is significant. The character set encoding for the strings is always UTF-\/8, but the tag names are limited to ASCII, and treated as case-\/insensitive. See {\tt the Theora specification}, Section 6.3.3 for details.
+
+In filling in this structure, \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50} will null-\/terminate the user\_\-comment strings for safety. However, the bitstream format itself treats them as 8-\/bit clean vectors, possibly containing null characters, and so the length array should be treated as their authoritative length.
+
+\subsection{Field Documentation}
+\index{th\_\-comment@{th\_\-comment}!comment\_\-lengths@{comment\_\-lengths}}
+\index{comment\_\-lengths@{comment\_\-lengths}!th_comment@{th\_\-comment}}
+\subsubsection[{comment\_\-lengths}]{\setlength{\rightskip}{0pt plus 5cm}int$\ast$ {\bf th\_\-comment::comment\_\-lengths}}\label{structth__comment_a723dc6fdf75757e70e28eea864b10898}
+
+
+An array of the corresponding length of each vector, in bytes. \index{th\_\-comment@{th\_\-comment}!comments@{comments}}
+\index{comments@{comments}!th_comment@{th\_\-comment}}
+\subsubsection[{comments}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-comment::comments}}\label{structth__comment_a5990c34932376f070ad0fc314daaeb78}
+
+
+The total number of comment strings. \index{th\_\-comment@{th\_\-comment}!user\_\-comments@{user\_\-comments}}
+\index{user\_\-comments@{user\_\-comments}!th_comment@{th\_\-comment}}
+\subsubsection[{user\_\-comments}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$$\ast$ {\bf th\_\-comment::user\_\-comments}}\label{structth__comment_ad72830e183e707bb0df423eb73b00de4}
+
+
+The array of comment string vectors. \index{th\_\-comment@{th\_\-comment}!vendor@{vendor}}
+\index{vendor@{vendor}!th_comment@{th\_\-comment}}
+\subsubsection[{vendor}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ {\bf th\_\-comment::vendor}}\label{structth__comment_a93fbe894d23603f56843be15b0cbdba0}
+
+
+The null-\/terminated vendor string. This identifies the software used to encode the stream.
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item
+{\bf codec.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structth__huff__code.tex b/doc/libtheora/latex/structth__huff__code.tex
new file mode 100644
index 0000000..6c761bb
--- /dev/null
+++ b/doc/libtheora/latex/structth__huff__code.tex
@@ -0,0 +1,35 @@
+\section{th\_\-huff\_\-code Struct Reference}
+\label{structth__huff__code}\index{th\_\-huff\_\-code@{th\_\-huff\_\-code}}
+
+
+A Huffman code for a Theora DCT token.
+
+
+{\ttfamily \#include $<$codec.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item
+ogg\_\-uint32\_\-t {\bf pattern}
+\begin{DoxyCompactList}\small\item\em The bit pattern for the code, with the LSbit of the pattern aligned in the LSbit of the word. \item\end{DoxyCompactList}\item
+int {\bf nbits}
+\begin{DoxyCompactList}\small\item\em The number of bits in the code. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+A Huffman code for a Theora DCT token. Each set of Huffman codes in a given table must form a complete, prefix-\/free code. There is no requirement that all the tokens in a table have a valid code, but the current encoder is not optimized to take advantage of this. If each of the five grouops of 16 tables does not contain at least one table with a code for every token, then the encoder may fail to encode certain frames. The complete table in the first group of 16 does not have to be in the same place as the complete table in the other groups, but the complete tables in the remaining four groups must all be in the same place.
+
+\subsection{Field Documentation}
+\index{th\_\-huff\_\-code@{th\_\-huff\_\-code}!nbits@{nbits}}
+\index{nbits@{nbits}!th_huff_code@{th\_\-huff\_\-code}}
+\subsubsection[{nbits}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-huff\_\-code::nbits}}\label{structth__huff__code_aaf97b8f2f90042f7bc136a7b2bc35e35}
+
+
+The number of bits in the code. This must be between 0 and 32, inclusive. \index{th\_\-huff\_\-code@{th\_\-huff\_\-code}!pattern@{pattern}}
+\index{pattern@{pattern}!th_huff_code@{th\_\-huff\_\-code}}
+\subsubsection[{pattern}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-huff\_\-code::pattern}}\label{structth__huff__code_a6dd29e3aa5a0c5a2dd5ce1f45b1162b4}
+
+
+The bit pattern for the code, with the LSbit of the pattern aligned in the LSbit of the word.
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item
+{\bf codec.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structth__img__plane.tex b/doc/libtheora/latex/structth__img__plane.tex
new file mode 100644
index 0000000..2566858
--- /dev/null
+++ b/doc/libtheora/latex/structth__img__plane.tex
@@ -0,0 +1,49 @@
+\section{th\_\-img\_\-plane Struct Reference}
+\label{structth__img__plane}\index{th\_\-img\_\-plane@{th\_\-img\_\-plane}}
+
+
+A buffer for a single color plane in an uncompressed image.
+
+
+{\ttfamily \#include $<$codec.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item
+int {\bf width}
+\begin{DoxyCompactList}\small\item\em The width of this plane. \item\end{DoxyCompactList}\item
+int {\bf height}
+\begin{DoxyCompactList}\small\item\em The height of this plane. \item\end{DoxyCompactList}\item
+int {\bf stride}
+\begin{DoxyCompactList}\small\item\em The offset in bytes between successive rows. \item\end{DoxyCompactList}\item
+unsigned char $\ast$ {\bf data}
+\begin{DoxyCompactList}\small\item\em A pointer to the beginning of the first row. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+A buffer for a single color plane in an uncompressed image. This contains the image data in a left-\/to-\/right, top-\/down format. Each row of pixels is stored contiguously in memory, but successive rows need not be. Use {\itshape stride\/} to compute the offset of the next row. The encoder accepts both positive {\itshape stride\/} values (top-\/down in memory) and negative (bottom-\/up in memory). The decoder currently always generates images with positive strides.
+
+\subsection{Field Documentation}
+\index{th\_\-img\_\-plane@{th\_\-img\_\-plane}!data@{data}}
+\index{data@{data}!th_img_plane@{th\_\-img\_\-plane}}
+\subsubsection[{data}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char$\ast$ {\bf th\_\-img\_\-plane::data}}\label{structth__img__plane_af8133681516ce88b5a201c1b4b7e6ba2}
+
+
+A pointer to the beginning of the first row. \index{th\_\-img\_\-plane@{th\_\-img\_\-plane}!height@{height}}
+\index{height@{height}!th_img_plane@{th\_\-img\_\-plane}}
+\subsubsection[{height}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-img\_\-plane::height}}\label{structth__img__plane_a21aea1367894468de489d529d7eaf44d}
+
+
+The height of this plane. \index{th\_\-img\_\-plane@{th\_\-img\_\-plane}!stride@{stride}}
+\index{stride@{stride}!th_img_plane@{th\_\-img\_\-plane}}
+\subsubsection[{stride}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-img\_\-plane::stride}}\label{structth__img__plane_ab1100f071ffee3b37e07e3222f819bad}
+
+
+The offset in bytes between successive rows. \index{th\_\-img\_\-plane@{th\_\-img\_\-plane}!width@{width}}
+\index{width@{width}!th_img_plane@{th\_\-img\_\-plane}}
+\subsubsection[{width}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-img\_\-plane::width}}\label{structth__img__plane_a58cc297a99cd4594c3d30e56f2ed6b74}
+
+
+The width of this plane.
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item
+{\bf codec.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structth__info.tex b/doc/libtheora/latex/structth__info.tex
new file mode 100644
index 0000000..998cd47
--- /dev/null
+++ b/doc/libtheora/latex/structth__info.tex
@@ -0,0 +1,164 @@
+\section{th\_\-info Struct Reference}
+\label{structth__info}\index{th\_\-info@{th\_\-info}}
+
+
+Theora bitstream information.
+
+
+{\ttfamily \#include $<$codec.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item
+ogg\_\-uint32\_\-t {\bf frame\_\-width}
+\begin{DoxyCompactList}\small\item\em The encoded frame width. \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf frame\_\-height}
+\begin{DoxyCompactList}\small\item\em The encoded frame height. \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf pic\_\-width}
+\begin{DoxyCompactList}\small\item\em The displayed picture width. \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf pic\_\-height}
+\begin{DoxyCompactList}\small\item\em The displayed picture height. \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf pic\_\-x}
+\begin{DoxyCompactList}\small\item\em The X offset of the displayed picture. \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf pic\_\-y}
+\begin{DoxyCompactList}\small\item\em The Y offset of the displayed picture. \item\end{DoxyCompactList}\item
+{\bf th\_\-colorspace} {\bf colorspace}
+\begin{DoxyCompactList}\small\item\em The color space. \item\end{DoxyCompactList}\item
+{\bf th\_\-pixel\_\-fmt} {\bf pixel\_\-fmt}
+\begin{DoxyCompactList}\small\item\em The pixel format. \item\end{DoxyCompactList}\item
+int {\bf target\_\-bitrate}
+\begin{DoxyCompactList}\small\item\em The target bit-\/rate in bits per second. \item\end{DoxyCompactList}\item
+int {\bf quality}
+\begin{DoxyCompactList}\small\item\em The target quality level. \item\end{DoxyCompactList}\item
+int {\bf keyframe\_\-granule\_\-shift}
+\begin{DoxyCompactList}\small\item\em The amount to shift to extract the last keyframe number from the granule position. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\begin{Indent}{\bf Theora version}\par
+{\em \label{_amgrpf735645ddddaaf44dc0647da0e883f6c}
+Bitstream version information.}\begin{DoxyCompactItemize}
+\item
+unsigned char {\bf version\_\-major}
+\item
+unsigned char {\bf version\_\-minor}
+\item
+unsigned char {\bf version\_\-subminor}
+\end{DoxyCompactItemize}
+\end{Indent}
+\begin{Indent}{\bf Frame rate}\par
+{\em \label{_amgrp801309c4a0e25a4db3fe5739b322b0a7}
+The frame rate, as a fraction.
+
+If either is 0, the frame rate is undefined. }\begin{DoxyCompactItemize}
+\item
+ogg\_\-uint32\_\-t {\bf fps\_\-numerator}
+\item
+ogg\_\-uint32\_\-t {\bf fps\_\-denominator}
+\end{DoxyCompactItemize}
+\end{Indent}
+\begin{Indent}{\bf Aspect ratio}\par
+{\em \label{_amgrpdeca19914b5126815a2220f15d067c9b}
+The aspect ratio of the pixels.
+
+If either value is zero, the aspect ratio is undefined. If not specified by any external means, 1:1 should be assumed. The aspect ratio of the full picture can be computed as
+\begin{DoxyCode}
+ aspect_numerator*pic_width/(aspect_denominator*pic_height).
+\end{DoxyCode}
+ }\begin{DoxyCompactItemize}
+\item
+ogg\_\-uint32\_\-t {\bf aspect\_\-numerator}
+\item
+ogg\_\-uint32\_\-t {\bf aspect\_\-denominator}
+\end{DoxyCompactItemize}
+\end{Indent}
+
+
+\subsection{Detailed Description}
+Theora bitstream information. This contains the basic playback parameters for a stream, and corresponds to the initial 'info' header packet. To initialize an encoder, the application fills in this structure and passes it to \doxyref{th\_\-encode\_\-alloc()}{p.}{group__encfuncs_gaa91e47bc9dd5f6ee52045bd7b815e5a7}. A default encoding mode is chosen based on the values of the \doxyref{quality}{p.}{structth__info_aa4cdcf96cb46b256821993e9a830ee02} and \doxyref{target\_\-bitrate}{p.}{structth__info_a1d9c8d768a4ae623269f5bd8f6f7a015} fields. On decode, it is filled in by \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50}, and then passed to \doxyref{th\_\-decode\_\-alloc()}{p.}{group__decfuncs_ga0ef07a9a97849054aa606c595a2d807e}.
+
+Encoded Theora frames must be a multiple of 16 in size; this is what the \doxyref{frame\_\-width}{p.}{structth__info_a6b8087a4d831da53011a43b8d74087a0} and \doxyref{frame\_\-height}{p.}{structth__info_a6b1adc3a16a8336a72692b0a5937214c} members represent. To handle arbitrary picture sizes, a crop rectangle is specified in the \doxyref{pic\_\-x}{p.}{structth__info_a5b3f834bcf141564e7bb14f49101870f}, \doxyref{pic\_\-y}{p.}{structth__info_a8aacc575cab2dfe3735001c2ad32aa14}, \doxyref{pic\_\-width}{p.}{structth__info_a5048edf77b141dd3e9a92ca85e317345} and \doxyref{pic\_\-height}{p.}{structth__info_a775178474283c5990ba73f9ba7f6b88b} members.
+
+All frame buffers contain pointers to the full, padded frame. However, the current encoder {\itshape will not\/} reference pixels outside of the cropped picture region, and the application does not need to fill them in. The decoder {\itshape will\/} allocate storage for a full frame, but the application {\itshape should not\/} rely on the padding containing sensible data.
+
+It is also generally recommended that the offsets and sizes should still be multiples of 2 to avoid chroma sampling shifts when chroma is sub-\/sampled. See {\tt the Theora specification}, Section 4.4, for more details.
+
+Frame rate, in frames per second, is stored as a rational fraction, as is the pixel aspect ratio. Note that this refers to the aspect ratio of the individual pixels, not of the overall frame itself. The frame aspect ratio can be computed from pixel aspect ratio using the image dimensions.
+
+\subsection{Field Documentation}
+\index{th\_\-info@{th\_\-info}!aspect\_\-denominator@{aspect\_\-denominator}}
+\index{aspect\_\-denominator@{aspect\_\-denominator}!th_info@{th\_\-info}}
+\subsubsection[{aspect\_\-denominator}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::aspect\_\-denominator}}\label{structth__info_a04c0bd477222d747a76085d8720322e2}
+\index{th\_\-info@{th\_\-info}!aspect\_\-numerator@{aspect\_\-numerator}}
+\index{aspect\_\-numerator@{aspect\_\-numerator}!th_info@{th\_\-info}}
+\subsubsection[{aspect\_\-numerator}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::aspect\_\-numerator}}\label{structth__info_a5be65dac9f75e37864cf73dd543570cd}
+\index{th\_\-info@{th\_\-info}!colorspace@{colorspace}}
+\index{colorspace@{colorspace}!th_info@{th\_\-info}}
+\subsubsection[{colorspace}]{\setlength{\rightskip}{0pt plus 5cm}{\bf th\_\-colorspace} {\bf th\_\-info::colorspace}}\label{structth__info_a8c7828cd0e023e9d21108160d53659a6}
+
+
+The color space. \index{th\_\-info@{th\_\-info}!fps\_\-denominator@{fps\_\-denominator}}
+\index{fps\_\-denominator@{fps\_\-denominator}!th_info@{th\_\-info}}
+\subsubsection[{fps\_\-denominator}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::fps\_\-denominator}}\label{structth__info_aa619408f70c03935529f1d3eda7a3ec2}
+\index{th\_\-info@{th\_\-info}!fps\_\-numerator@{fps\_\-numerator}}
+\index{fps\_\-numerator@{fps\_\-numerator}!th_info@{th\_\-info}}
+\subsubsection[{fps\_\-numerator}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::fps\_\-numerator}}\label{structth__info_a20606e61676f585a7e59cfc96de190a5}
+\index{th\_\-info@{th\_\-info}!frame\_\-height@{frame\_\-height}}
+\index{frame\_\-height@{frame\_\-height}!th_info@{th\_\-info}}
+\subsubsection[{frame\_\-height}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::frame\_\-height}}\label{structth__info_a6b1adc3a16a8336a72692b0a5937214c}
+
+
+The encoded frame height. This must be a multiple of 16, and less than 1048576. \index{th\_\-info@{th\_\-info}!frame\_\-width@{frame\_\-width}}
+\index{frame\_\-width@{frame\_\-width}!th_info@{th\_\-info}}
+\subsubsection[{frame\_\-width}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::frame\_\-width}}\label{structth__info_a6b8087a4d831da53011a43b8d74087a0}
+
+
+The encoded frame width. This must be a multiple of 16, and less than 1048576. \index{th\_\-info@{th\_\-info}!keyframe\_\-granule\_\-shift@{keyframe\_\-granule\_\-shift}}
+\index{keyframe\_\-granule\_\-shift@{keyframe\_\-granule\_\-shift}!th_info@{th\_\-info}}
+\subsubsection[{keyframe\_\-granule\_\-shift}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-info::keyframe\_\-granule\_\-shift}}\label{structth__info_a693ca4ab11fbc0c3f32594b4bb8766ed}
+
+
+The amount to shift to extract the last keyframe number from the granule position. This can be at most 31. \doxyref{th\_\-info\_\-init()}{p.}{group__basefuncs_ga430d9c605816a6ca0bdce3a0b965b926} will set this to a default value (currently {\ttfamily 6}, which is good for streaming applications), but you can set it to 0 to make every frame a keyframe. The maximum distance between key frames is {\ttfamily 1$<$$<$\doxyref{keyframe\_\-granule\_\-shift}{p.}{structth__info_a693ca4ab11fbc0c3f32594b4bb8766ed}}. The keyframe frequency can be more finely controlled with \doxyref{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}{p.}{theoraenc_8h_a27e755e15b4b5604c54974b304037a49}, which can also be adjusted during encoding (for example, to force the next frame to be a keyframe), but it cannot be set larger than the amount permitted by this field after the headers have been output. \index{th\_\-info@{th\_\-info}!pic\_\-height@{pic\_\-height}}
+\index{pic\_\-height@{pic\_\-height}!th_info@{th\_\-info}}
+\subsubsection[{pic\_\-height}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::pic\_\-height}}\label{structth__info_a775178474283c5990ba73f9ba7f6b88b}
+
+
+The displayed picture height. This must be no larger than height. \index{th\_\-info@{th\_\-info}!pic\_\-width@{pic\_\-width}}
+\index{pic\_\-width@{pic\_\-width}!th_info@{th\_\-info}}
+\subsubsection[{pic\_\-width}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::pic\_\-width}}\label{structth__info_a5048edf77b141dd3e9a92ca85e317345}
+
+
+The displayed picture width. This must be no larger than width. \index{th\_\-info@{th\_\-info}!pic\_\-x@{pic\_\-x}}
+\index{pic\_\-x@{pic\_\-x}!th_info@{th\_\-info}}
+\subsubsection[{pic\_\-x}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::pic\_\-x}}\label{structth__info_a5b3f834bcf141564e7bb14f49101870f}
+
+
+The X offset of the displayed picture. This must be no larger than \doxyref{frame\_\-width}{p.}{structth__info_a6b8087a4d831da53011a43b8d74087a0}-\/\doxyref{pic\_\-width}{p.}{structth__info_a5048edf77b141dd3e9a92ca85e317345} or 255, whichever is smaller. \index{th\_\-info@{th\_\-info}!pic\_\-y@{pic\_\-y}}
+\index{pic\_\-y@{pic\_\-y}!th_info@{th\_\-info}}
+\subsubsection[{pic\_\-y}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::pic\_\-y}}\label{structth__info_a8aacc575cab2dfe3735001c2ad32aa14}
+
+
+The Y offset of the displayed picture. This must be no larger than \doxyref{frame\_\-height}{p.}{structth__info_a6b1adc3a16a8336a72692b0a5937214c}-\/\doxyref{pic\_\-height}{p.}{structth__info_a775178474283c5990ba73f9ba7f6b88b}, and \doxyref{frame\_\-height}{p.}{structth__info_a6b1adc3a16a8336a72692b0a5937214c}-\/\doxyref{pic\_\-height}{p.}{structth__info_a775178474283c5990ba73f9ba7f6b88b}-\/\doxyref{pic\_\-y}{p.}{structth__info_a8aacc575cab2dfe3735001c2ad32aa14} must be no larger than 255. This slightly funny restriction is due to the fact that the offset is specified from the top of the image for consistency with the standard graphics left-\/handed coordinate system used throughout this API, while it is stored in the encoded stream as an offset from the bottom. \index{th\_\-info@{th\_\-info}!pixel\_\-fmt@{pixel\_\-fmt}}
+\index{pixel\_\-fmt@{pixel\_\-fmt}!th_info@{th\_\-info}}
+\subsubsection[{pixel\_\-fmt}]{\setlength{\rightskip}{0pt plus 5cm}{\bf th\_\-pixel\_\-fmt} {\bf th\_\-info::pixel\_\-fmt}}\label{structth__info_a2301388ef3755c41ab12fd144c1fc54e}
+
+
+The pixel format. \index{th\_\-info@{th\_\-info}!quality@{quality}}
+\index{quality@{quality}!th_info@{th\_\-info}}
+\subsubsection[{quality}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-info::quality}}\label{structth__info_aa4cdcf96cb46b256821993e9a830ee02}
+
+
+The target quality level. Valid values range from 0 to 63, inclusive, with higher values giving higher quality. If initializing an encoder with this struct, and \doxyref{target\_\-bitrate}{p.}{structth__info_a1d9c8d768a4ae623269f5bd8f6f7a015} is set to zero, VBR encoding at this quality will be activated by default. \index{th\_\-info@{th\_\-info}!target\_\-bitrate@{target\_\-bitrate}}
+\index{target\_\-bitrate@{target\_\-bitrate}!th_info@{th\_\-info}}
+\subsubsection[{target\_\-bitrate}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-info::target\_\-bitrate}}\label{structth__info_a1d9c8d768a4ae623269f5bd8f6f7a015}
+
+
+The target bit-\/rate in bits per second. If initializing an encoder with this struct, set this field to a non-\/zero value to activate CBR encoding by default. \index{th\_\-info@{th\_\-info}!version\_\-major@{version\_\-major}}
+\index{version\_\-major@{version\_\-major}!th_info@{th\_\-info}}
+\subsubsection[{version\_\-major}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char {\bf th\_\-info::version\_\-major}}\label{structth__info_a60b3e2cac006fee0e105a918d6a5a9f9}
+\index{th\_\-info@{th\_\-info}!version\_\-minor@{version\_\-minor}}
+\index{version\_\-minor@{version\_\-minor}!th_info@{th\_\-info}}
+\subsubsection[{version\_\-minor}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char {\bf th\_\-info::version\_\-minor}}\label{structth__info_abb1d4887a8079c6c5aaa6d7229f243d7}
+\index{th\_\-info@{th\_\-info}!version\_\-subminor@{version\_\-subminor}}
+\index{version\_\-subminor@{version\_\-subminor}!th_info@{th\_\-info}}
+\subsubsection[{version\_\-subminor}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char {\bf th\_\-info::version\_\-subminor}}\label{structth__info_abfacc79b7cabae12b6ac2484f76602d3}
+
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item
+{\bf codec.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structth__quant__info.tex b/doc/libtheora/latex/structth__quant__info.tex
new file mode 100644
index 0000000..8bb5020
--- /dev/null
+++ b/doc/libtheora/latex/structth__quant__info.tex
@@ -0,0 +1,81 @@
+\section{th\_\-quant\_\-info Struct Reference}
+\label{structth__quant__info}\index{th\_\-quant\_\-info@{th\_\-quant\_\-info}}
+
+
+A complete set of quantization parameters.
+
+
+{\ttfamily \#include $<$codec.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item
+ogg\_\-uint16\_\-t {\bf dc\_\-scale} [64]
+\begin{DoxyCompactList}\small\item\em The DC scaling factors. \item\end{DoxyCompactList}\item
+ogg\_\-uint16\_\-t {\bf ac\_\-scale} [64]
+\begin{DoxyCompactList}\small\item\em The AC scaling factors. \item\end{DoxyCompactList}\item
+unsigned char {\bf loop\_\-filter\_\-limits} [64]
+\begin{DoxyCompactList}\small\item\em The loop filter limit values. \item\end{DoxyCompactList}\item
+{\bf th\_\-quant\_\-ranges} {\bf qi\_\-ranges} [2][3]
+\begin{DoxyCompactList}\small\item\em The {\itshape qi\/} ranges for each {\itshape ci\/} and {\itshape pli\/}. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+A complete set of quantization parameters. The quantizer for each coefficient is calculated as:
+\begin{DoxyCode}
+ Q=MAX(MIN(qmin[qti][ci!=0],scale[ci!=0][qi]*base[qti][pli][qi][ci]/100),
+ 1024).
+\end{DoxyCode}
+
+
+{\itshape qti\/} is the quantization type index: 0 for intra, 1 for inter. {\ttfamily ci!=0} is 0 for the DC coefficient and 1 for AC coefficients. {\itshape qi\/} is the quality index, ranging between 0 (low quality) and 63 (high quality). {\itshape pli\/} is the color plane index: 0 for Y', 1 for Cb, 2 for Cr. {\itshape ci\/} is the DCT coefficient index. Coefficient indices correspond to the normal 2D DCT block ordering-\/-\/row-\/major with low frequencies first-\/-\/{\itshape not\/} zig-\/zag order.
+
+Minimum quantizers are constant, and are given by:
+\begin{DoxyCode}
+ qmin[2][2]={{4,2},{8,4}}.
+\end{DoxyCode}
+
+
+Parameters that can be stored in the bitstream are as follows:
+\begin{DoxyItemize}
+\item The two scale matrices ac\_\-scale and dc\_\-scale.
+\begin{DoxyCode}
+ scale[2][64]={dc_scale,ac_scale}.
+\end{DoxyCode}
+
+\item The base matrices for each {\itshape qi\/}, {\itshape qti\/} and {\itshape pli\/} (up to 384 in all). In order to avoid storing a full 384 base matrices, only a sparse set of matrices are stored, and the rest are linearly interpolated. This is done as follows. For each {\itshape qti\/} and {\itshape pli\/}, a series of {\itshape n\/} {\itshape qi\/} ranges is defined. The size of each {\itshape qi\/} range can vary arbitrarily, but they must sum to 63. Then, {\ttfamily n+1} matrices are specified, one for each endpoint of the ranges. For interpolation purposes, each range's endpoints are the first {\itshape qi\/} value it contains and one past the last {\itshape qi\/} value it contains. Fractional values are rounded to the nearest integer, with ties rounded away from zero.
+\end{DoxyItemize}
+
+Base matrices are stored by reference, so if the same matrices are used multiple times, they will only appear once in the bitstream. The bitstream is also capable of omitting an entire set of ranges and its associated matrices if they are the same as either the previous set (indexed in row-\/major order) or if the inter set is the same as the intra set.
+
+
+\begin{DoxyItemize}
+\item Loop filter limit values. The same limits are used for the loop filter in all color planes, despite potentially differing levels of quantization in each.
+\end{DoxyItemize}
+
+For the current encoder, {\ttfamily scale[ci!=0][qi]} must be no greater than {\ttfamily scale[ci!=0][qi-\/1]} and {\ttfamily base[qti][pli][qi][ci]} must be no greater than {\ttfamily base[qti][pli][qi-\/1][ci]}. These two conditions ensure that the actual quantizer for a given {\itshape qti\/}, {\itshape pli\/}, and {\itshape ci\/} does not increase as {\itshape qi\/} increases. This is not required by the decoder.
+
+\subsection{Field Documentation}
+\index{th\_\-quant\_\-info@{th\_\-quant\_\-info}!ac\_\-scale@{ac\_\-scale}}
+\index{ac\_\-scale@{ac\_\-scale}!th_quant_info@{th\_\-quant\_\-info}}
+\subsubsection[{ac\_\-scale}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint16\_\-t {\bf th\_\-quant\_\-info::ac\_\-scale}[64]}\label{structth__quant__info_a102f079c8f4a135dc0895c10768aeb06}
+
+
+The AC scaling factors. \index{th\_\-quant\_\-info@{th\_\-quant\_\-info}!dc\_\-scale@{dc\_\-scale}}
+\index{dc\_\-scale@{dc\_\-scale}!th_quant_info@{th\_\-quant\_\-info}}
+\subsubsection[{dc\_\-scale}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint16\_\-t {\bf th\_\-quant\_\-info::dc\_\-scale}[64]}\label{structth__quant__info_ad5c1c0d1aa4127fcf864ae747d732ed9}
+
+
+The DC scaling factors. \index{th\_\-quant\_\-info@{th\_\-quant\_\-info}!loop\_\-filter\_\-limits@{loop\_\-filter\_\-limits}}
+\index{loop\_\-filter\_\-limits@{loop\_\-filter\_\-limits}!th_quant_info@{th\_\-quant\_\-info}}
+\subsubsection[{loop\_\-filter\_\-limits}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char {\bf th\_\-quant\_\-info::loop\_\-filter\_\-limits}[64]}\label{structth__quant__info_a4ac56bf0a45b5743b36daf85d5cd9e33}
+
+
+The loop filter limit values. \index{th\_\-quant\_\-info@{th\_\-quant\_\-info}!qi\_\-ranges@{qi\_\-ranges}}
+\index{qi\_\-ranges@{qi\_\-ranges}!th_quant_info@{th\_\-quant\_\-info}}
+\subsubsection[{qi\_\-ranges}]{\setlength{\rightskip}{0pt plus 5cm}{\bf th\_\-quant\_\-ranges} {\bf th\_\-quant\_\-info::qi\_\-ranges}[2][3]}\label{structth__quant__info_a6feacf4b365e305a7df7b93d87ee7bb8}
+
+
+The {\itshape qi\/} ranges for each {\itshape ci\/} and {\itshape pli\/}.
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item
+{\bf codec.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structth__quant__ranges.tex b/doc/libtheora/latex/structth__quant__ranges.tex
new file mode 100644
index 0000000..d1c6ce0
--- /dev/null
+++ b/doc/libtheora/latex/structth__quant__ranges.tex
@@ -0,0 +1,42 @@
+\section{th\_\-quant\_\-ranges Struct Reference}
+\label{structth__quant__ranges}\index{th\_\-quant\_\-ranges@{th\_\-quant\_\-ranges}}
+
+
+A set of {\itshape qi\/} ranges.
+
+
+{\ttfamily \#include $<$codec.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item
+int {\bf nranges}
+\begin{DoxyCompactList}\small\item\em The number of ranges in the set. \item\end{DoxyCompactList}\item
+const int $\ast$ {\bf sizes}
+\begin{DoxyCompactList}\small\item\em The size of each of the \doxyref{nranges}{p.}{structth__quant__ranges_a53e5a3d7f7a112100b4b670929b3ebab} ranges. \item\end{DoxyCompactList}\item
+const {\bf th\_\-quant\_\-base} $\ast$ {\bf base\_\-matrices}
+\begin{DoxyCompactList}\small\item\em \doxyref{nranges}{p.}{structth__quant__ranges_a53e5a3d7f7a112100b4b670929b3ebab} {\ttfamily +1} base matrices. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+A set of {\itshape qi\/} ranges.
+
+\subsection{Field Documentation}
+\index{th\_\-quant\_\-ranges@{th\_\-quant\_\-ranges}!base\_\-matrices@{base\_\-matrices}}
+\index{base\_\-matrices@{base\_\-matrices}!th_quant_ranges@{th\_\-quant\_\-ranges}}
+\subsubsection[{base\_\-matrices}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf th\_\-quant\_\-base}$\ast$ {\bf th\_\-quant\_\-ranges::base\_\-matrices}}\label{structth__quant__ranges_a52cb432f034737087492ea448de20bdb}
+
+
+\doxyref{nranges}{p.}{structth__quant__ranges_a53e5a3d7f7a112100b4b670929b3ebab} {\ttfamily +1} base matrices. Matrices {\itshape i\/} and {\ttfamily i+1} form the endpoints of range {\itshape i\/}. \index{th\_\-quant\_\-ranges@{th\_\-quant\_\-ranges}!nranges@{nranges}}
+\index{nranges@{nranges}!th_quant_ranges@{th\_\-quant\_\-ranges}}
+\subsubsection[{nranges}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-quant\_\-ranges::nranges}}\label{structth__quant__ranges_a53e5a3d7f7a112100b4b670929b3ebab}
+
+
+The number of ranges in the set. \index{th\_\-quant\_\-ranges@{th\_\-quant\_\-ranges}!sizes@{sizes}}
+\index{sizes@{sizes}!th_quant_ranges@{th\_\-quant\_\-ranges}}
+\subsubsection[{sizes}]{\setlength{\rightskip}{0pt plus 5cm}const int$\ast$ {\bf th\_\-quant\_\-ranges::sizes}}\label{structth__quant__ranges_af3188a373bc0b8ffaa330d0ab4c1a194}
+
+
+The size of each of the \doxyref{nranges}{p.}{structth__quant__ranges_a53e5a3d7f7a112100b4b670929b3ebab} ranges. These must sum to 63.
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item
+{\bf codec.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structth__stripe__callback.tex b/doc/libtheora/latex/structth__stripe__callback.tex
new file mode 100644
index 0000000..2cf1261
--- /dev/null
+++ b/doc/libtheora/latex/structth__stripe__callback.tex
@@ -0,0 +1,35 @@
+\section{th\_\-stripe\_\-callback Struct Reference}
+\label{structth__stripe__callback}\index{th\_\-stripe\_\-callback@{th\_\-stripe\_\-callback}}
+
+
+The striped decode callback data to pass to \doxyref{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}{p.}{theoradec_8h_ac95cc9e109474b0fa4bb920ab2cfdf1e}.
+
+
+{\ttfamily \#include $<$theoradec.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item
+void $\ast$ {\bf ctx}
+\begin{DoxyCompactList}\small\item\em An application-\/provided context pointer. \item\end{DoxyCompactList}\item
+{\bf th\_\-stripe\_\-decoded\_\-func} {\bf stripe\_\-decoded}
+\begin{DoxyCompactList}\small\item\em The callback function pointer. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+The striped decode callback data to pass to \doxyref{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}{p.}{theoradec_8h_ac95cc9e109474b0fa4bb920ab2cfdf1e}.
+
+\subsection{Field Documentation}
+\index{th\_\-stripe\_\-callback@{th\_\-stripe\_\-callback}!ctx@{ctx}}
+\index{ctx@{ctx}!th_stripe_callback@{th\_\-stripe\_\-callback}}
+\subsubsection[{ctx}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ {\bf th\_\-stripe\_\-callback::ctx}}\label{structth__stripe__callback_ab895162ce29a411fa98e0ba9661f47d4}
+
+
+An application-\/provided context pointer. This will be passed back verbatim to the application. \index{th\_\-stripe\_\-callback@{th\_\-stripe\_\-callback}!stripe\_\-decoded@{stripe\_\-decoded}}
+\index{stripe\_\-decoded@{stripe\_\-decoded}!th_stripe_callback@{th\_\-stripe\_\-callback}}
+\subsubsection[{stripe\_\-decoded}]{\setlength{\rightskip}{0pt plus 5cm}{\bf th\_\-stripe\_\-decoded\_\-func} {\bf th\_\-stripe\_\-callback::stripe\_\-decoded}}\label{structth__stripe__callback_a977c725680a37e3446e459f063b1f4a5}
+
+
+The callback function pointer.
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item
+{\bf theoradec.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structtheora__comment.tex b/doc/libtheora/latex/structtheora__comment.tex
new file mode 100644
index 0000000..7ff6338
--- /dev/null
+++ b/doc/libtheora/latex/structtheora__comment.tex
@@ -0,0 +1,53 @@
+\section{theora\_\-comment Struct Reference}
+\label{structtheora__comment}\index{theora\_\-comment@{theora\_\-comment}}
+
+
+Comment header metadata.
+
+
+{\ttfamily \#include $<$theora.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item
+char $\ast$$\ast$ {\bf user\_\-comments}
+\begin{DoxyCompactList}\small\item\em An array of comment string vectors. \item\end{DoxyCompactList}\item
+int $\ast$ {\bf comment\_\-lengths}
+\begin{DoxyCompactList}\small\item\em An array of corresponding string vector lengths in bytes. \item\end{DoxyCompactList}\item
+int {\bf comments}
+\begin{DoxyCompactList}\small\item\em The total number of comment string vectors. \item\end{DoxyCompactList}\item
+char $\ast$ {\bf vendor}
+\begin{DoxyCompactList}\small\item\em The vendor string identifying the encoder, null terminated. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+Comment header metadata. This structure holds the in-\/stream metadata corresponding to the 'comment' header packet.
+
+Meta data is stored as a series of (tag, value) pairs, in length-\/encoded string vectors. The first occurence of the '=' character delimits the tag and value. A particular tag may occur more than once. The character set encoding for the strings is always UTF-\/8, but the tag names are limited to case-\/insensitive ASCII. See the spec for details.
+
+In filling in this structure, \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} will null-\/terminate the user\_\-comment strings for safety. However, the bitstream format itself treats them as 8-\/bit clean, and so the length array should be treated as authoritative for their length.
+
+\subsection{Field Documentation}
+\index{theora\_\-comment@{theora\_\-comment}!comment\_\-lengths@{comment\_\-lengths}}
+\index{comment\_\-lengths@{comment\_\-lengths}!theora_comment@{theora\_\-comment}}
+\subsubsection[{comment\_\-lengths}]{\setlength{\rightskip}{0pt plus 5cm}int$\ast$ {\bf theora\_\-comment::comment\_\-lengths}}\label{structtheora__comment_a5ab4a376d3c217282a684577c9c9f49a}
+
+
+An array of corresponding string vector lengths in bytes. \index{theora\_\-comment@{theora\_\-comment}!comments@{comments}}
+\index{comments@{comments}!theora_comment@{theora\_\-comment}}
+\subsubsection[{comments}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf theora\_\-comment::comments}}\label{structtheora__comment_a122393035c8352ff9be42d69e73aee00}
+
+
+The total number of comment string vectors. \index{theora\_\-comment@{theora\_\-comment}!user\_\-comments@{user\_\-comments}}
+\index{user\_\-comments@{user\_\-comments}!theora_comment@{theora\_\-comment}}
+\subsubsection[{user\_\-comments}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$$\ast$ {\bf theora\_\-comment::user\_\-comments}}\label{structtheora__comment_a1e236fd180dfce19be89081399444cf5}
+
+
+An array of comment string vectors. \index{theora\_\-comment@{theora\_\-comment}!vendor@{vendor}}
+\index{vendor@{vendor}!theora_comment@{theora\_\-comment}}
+\subsubsection[{vendor}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ {\bf theora\_\-comment::vendor}}\label{structtheora__comment_adb371baf8f0daed42af8b875cf8430ef}
+
+
+The vendor string identifying the encoder, null terminated.
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item
+{\bf theora.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structtheora__info.tex b/doc/libtheora/latex/structtheora__info.tex
new file mode 100644
index 0000000..8d6866e
--- /dev/null
+++ b/doc/libtheora/latex/structtheora__info.tex
@@ -0,0 +1,197 @@
+\section{theora\_\-info Struct Reference}
+\label{structtheora__info}\index{theora\_\-info@{theora\_\-info}}
+
+
+Theora bitstream info.
+
+
+{\ttfamily \#include $<$theora.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item
+ogg\_\-uint32\_\-t {\bf width}
+\begin{DoxyCompactList}\small\item\em encoded frame width \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf height}
+\begin{DoxyCompactList}\small\item\em encoded frame height \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf frame\_\-width}
+\begin{DoxyCompactList}\small\item\em display frame width \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf frame\_\-height}
+\begin{DoxyCompactList}\small\item\em display frame height \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf offset\_\-x}
+\begin{DoxyCompactList}\small\item\em horizontal offset of the displayed frame \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf offset\_\-y}
+\begin{DoxyCompactList}\small\item\em vertical offset of the displayed frame \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf fps\_\-numerator}
+\begin{DoxyCompactList}\small\item\em frame rate numerator \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf fps\_\-denominator}
+\begin{DoxyCompactList}\small\item\em frame rate denominator \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf aspect\_\-numerator}
+\begin{DoxyCompactList}\small\item\em pixel aspect ratio numerator \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf aspect\_\-denominator}
+\begin{DoxyCompactList}\small\item\em pixel aspect ratio denominator \item\end{DoxyCompactList}\item
+{\bf theora\_\-colorspace} {\bf colorspace}
+\begin{DoxyCompactList}\small\item\em colorspace \item\end{DoxyCompactList}\item
+int {\bf target\_\-bitrate}
+\begin{DoxyCompactList}\small\item\em nominal bitrate in bits per second \item\end{DoxyCompactList}\item
+int {\bf quality}
+\begin{DoxyCompactList}\small\item\em Nominal quality setting, 0-\/63. \item\end{DoxyCompactList}\item
+int {\bf quick\_\-p}
+\begin{DoxyCompactList}\small\item\em Quick encode/decode. \item\end{DoxyCompactList}\item
+unsigned char {\bf version\_\-major}
+\item
+unsigned char {\bf version\_\-minor}
+\item
+unsigned char {\bf version\_\-subminor}
+\item
+void $\ast$ {\bf codec\_\-setup}
+\item
+int {\bf dropframes\_\-p}
+\item
+int {\bf keyframe\_\-auto\_\-p}
+\item
+ogg\_\-uint32\_\-t {\bf keyframe\_\-frequency}
+\item
+ogg\_\-uint32\_\-t {\bf keyframe\_\-frequency\_\-force}
+\item
+ogg\_\-uint32\_\-t {\bf keyframe\_\-data\_\-target\_\-bitrate}
+\item
+ogg\_\-int32\_\-t {\bf keyframe\_\-auto\_\-threshold}
+\item
+ogg\_\-uint32\_\-t {\bf keyframe\_\-mindistance}
+\item
+ogg\_\-int32\_\-t {\bf noise\_\-sensitivity}
+\item
+ogg\_\-int32\_\-t {\bf sharpness}
+\item
+{\bf theora\_\-pixelformat} {\bf pixelformat}
+\begin{DoxyCompactList}\small\item\em chroma subsampling mode to expect \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+Theora bitstream info. Contains the basic playback parameters for a stream, corresponding to the initial 'info' header packet.
+
+Encoded theora frames must be a multiple of 16 in width and height. To handle other frame sizes, a crop rectangle is specified in frame\_\-height and frame\_\-width, offset\_\-x and $\ast$ offset\_\-y. The offset and size should still be a multiple of 2 to avoid chroma sampling shifts. Offset values in this structure are measured from the upper left of the image.
+
+Frame rate, in frames per second, is stored as a rational fraction. Aspect ratio is also stored as a rational fraction, and refers to the aspect ratio of the frame pixels, not of the overall frame itself.
+
+See {\tt examples/encoder\_\-example.c} for usage examples of the other paramters and good default settings for the encoder parameters.
+
+\subsection{Field Documentation}
+\index{theora\_\-info@{theora\_\-info}!aspect\_\-denominator@{aspect\_\-denominator}}
+\index{aspect\_\-denominator@{aspect\_\-denominator}!theora_info@{theora\_\-info}}
+\subsubsection[{aspect\_\-denominator}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::aspect\_\-denominator}}\label{structtheora__info_afebc4d0cbfb34b68c833a8c79e83ae12}
+
+
+pixel aspect ratio denominator \index{theora\_\-info@{theora\_\-info}!aspect\_\-numerator@{aspect\_\-numerator}}
+\index{aspect\_\-numerator@{aspect\_\-numerator}!theora_info@{theora\_\-info}}
+\subsubsection[{aspect\_\-numerator}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::aspect\_\-numerator}}\label{structtheora__info_a5a3ed8c79815fba1aa06c3f7d8e48b35}
+
+
+pixel aspect ratio numerator \index{theora\_\-info@{theora\_\-info}!codec\_\-setup@{codec\_\-setup}}
+\index{codec\_\-setup@{codec\_\-setup}!theora_info@{theora\_\-info}}
+\subsubsection[{codec\_\-setup}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ {\bf theora\_\-info::codec\_\-setup}}\label{structtheora__info_a719a1d77a4a3bfeab79aa5747dbbb04c}
+\index{theora\_\-info@{theora\_\-info}!colorspace@{colorspace}}
+\index{colorspace@{colorspace}!theora_info@{theora\_\-info}}
+\subsubsection[{colorspace}]{\setlength{\rightskip}{0pt plus 5cm}{\bf theora\_\-colorspace} {\bf theora\_\-info::colorspace}}\label{structtheora__info_a5eaba99c96706d47b426ab7b7602dc5d}
+
+
+colorspace \index{theora\_\-info@{theora\_\-info}!dropframes\_\-p@{dropframes\_\-p}}
+\index{dropframes\_\-p@{dropframes\_\-p}!theora_info@{theora\_\-info}}
+\subsubsection[{dropframes\_\-p}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf theora\_\-info::dropframes\_\-p}}\label{structtheora__info_af294db65a8363a0bcf43f4727763b291}
+\index{theora\_\-info@{theora\_\-info}!fps\_\-denominator@{fps\_\-denominator}}
+\index{fps\_\-denominator@{fps\_\-denominator}!theora_info@{theora\_\-info}}
+\subsubsection[{fps\_\-denominator}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::fps\_\-denominator}}\label{structtheora__info_a9aa7e826e0323a4ae8cd8646a6cfbfea}
+
+
+frame rate denominator \index{theora\_\-info@{theora\_\-info}!fps\_\-numerator@{fps\_\-numerator}}
+\index{fps\_\-numerator@{fps\_\-numerator}!theora_info@{theora\_\-info}}
+\subsubsection[{fps\_\-numerator}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::fps\_\-numerator}}\label{structtheora__info_a3478199aa5ab213816c1819f70085ad7}
+
+
+frame rate numerator \index{theora\_\-info@{theora\_\-info}!frame\_\-height@{frame\_\-height}}
+\index{frame\_\-height@{frame\_\-height}!theora_info@{theora\_\-info}}
+\subsubsection[{frame\_\-height}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::frame\_\-height}}\label{structtheora__info_a287e4c194f1d2e6deb39d59f1748ea48}
+
+
+display frame height \index{theora\_\-info@{theora\_\-info}!frame\_\-width@{frame\_\-width}}
+\index{frame\_\-width@{frame\_\-width}!theora_info@{theora\_\-info}}
+\subsubsection[{frame\_\-width}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::frame\_\-width}}\label{structtheora__info_a8f28f4018a25634d40e4ae861fbbccfa}
+
+
+display frame width \index{theora\_\-info@{theora\_\-info}!height@{height}}
+\index{height@{height}!theora_info@{theora\_\-info}}
+\subsubsection[{height}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::height}}\label{structtheora__info_ae6f0274fc4a7f285c422d91abb35f9c6}
+
+
+encoded frame height \index{theora\_\-info@{theora\_\-info}!keyframe\_\-auto\_\-p@{keyframe\_\-auto\_\-p}}
+\index{keyframe\_\-auto\_\-p@{keyframe\_\-auto\_\-p}!theora_info@{theora\_\-info}}
+\subsubsection[{keyframe\_\-auto\_\-p}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf theora\_\-info::keyframe\_\-auto\_\-p}}\label{structtheora__info_a23648173369174f687085c0ce85ef30e}
+\index{theora\_\-info@{theora\_\-info}!keyframe\_\-auto\_\-threshold@{keyframe\_\-auto\_\-threshold}}
+\index{keyframe\_\-auto\_\-threshold@{keyframe\_\-auto\_\-threshold}!theora_info@{theora\_\-info}}
+\subsubsection[{keyframe\_\-auto\_\-threshold}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-int32\_\-t {\bf theora\_\-info::keyframe\_\-auto\_\-threshold}}\label{structtheora__info_a95cb8958e29ad3d24047ee8f9e7fd99b}
+\index{theora\_\-info@{theora\_\-info}!keyframe\_\-data\_\-target\_\-bitrate@{keyframe\_\-data\_\-target\_\-bitrate}}
+\index{keyframe\_\-data\_\-target\_\-bitrate@{keyframe\_\-data\_\-target\_\-bitrate}!theora_info@{theora\_\-info}}
+\subsubsection[{keyframe\_\-data\_\-target\_\-bitrate}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::keyframe\_\-data\_\-target\_\-bitrate}}\label{structtheora__info_a588942d1ee90a26a7effdf6a0e98b9ce}
+\index{theora\_\-info@{theora\_\-info}!keyframe\_\-frequency@{keyframe\_\-frequency}}
+\index{keyframe\_\-frequency@{keyframe\_\-frequency}!theora_info@{theora\_\-info}}
+\subsubsection[{keyframe\_\-frequency}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::keyframe\_\-frequency}}\label{structtheora__info_a03e1b3e337af5f9dabaaaeb9050f145a}
+\index{theora\_\-info@{theora\_\-info}!keyframe\_\-frequency\_\-force@{keyframe\_\-frequency\_\-force}}
+\index{keyframe\_\-frequency\_\-force@{keyframe\_\-frequency\_\-force}!theora_info@{theora\_\-info}}
+\subsubsection[{keyframe\_\-frequency\_\-force}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::keyframe\_\-frequency\_\-force}}\label{structtheora__info_ad9d2e22c44a53473010e6d1042dfe0d8}
+\index{theora\_\-info@{theora\_\-info}!keyframe\_\-mindistance@{keyframe\_\-mindistance}}
+\index{keyframe\_\-mindistance@{keyframe\_\-mindistance}!theora_info@{theora\_\-info}}
+\subsubsection[{keyframe\_\-mindistance}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::keyframe\_\-mindistance}}\label{structtheora__info_aa79ca8c0e77a884d4487fd627fae32e9}
+\index{theora\_\-info@{theora\_\-info}!noise\_\-sensitivity@{noise\_\-sensitivity}}
+\index{noise\_\-sensitivity@{noise\_\-sensitivity}!theora_info@{theora\_\-info}}
+\subsubsection[{noise\_\-sensitivity}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-int32\_\-t {\bf theora\_\-info::noise\_\-sensitivity}}\label{structtheora__info_ac4789034f547b57d1075e035050eeed9}
+\index{theora\_\-info@{theora\_\-info}!offset\_\-x@{offset\_\-x}}
+\index{offset\_\-x@{offset\_\-x}!theora_info@{theora\_\-info}}
+\subsubsection[{offset\_\-x}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::offset\_\-x}}\label{structtheora__info_af5949a02bef29512f2705e6f6c944e3b}
+
+
+horizontal offset of the displayed frame \index{theora\_\-info@{theora\_\-info}!offset\_\-y@{offset\_\-y}}
+\index{offset\_\-y@{offset\_\-y}!theora_info@{theora\_\-info}}
+\subsubsection[{offset\_\-y}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::offset\_\-y}}\label{structtheora__info_a91c3922097ba32a85acd584a01dc2c93}
+
+
+vertical offset of the displayed frame \index{theora\_\-info@{theora\_\-info}!pixelformat@{pixelformat}}
+\index{pixelformat@{pixelformat}!theora_info@{theora\_\-info}}
+\subsubsection[{pixelformat}]{\setlength{\rightskip}{0pt plus 5cm}{\bf theora\_\-pixelformat} {\bf theora\_\-info::pixelformat}}\label{structtheora__info_a65ab4376ab5242ee82e06c78fb7008ab}
+
+
+chroma subsampling mode to expect \index{theora\_\-info@{theora\_\-info}!quality@{quality}}
+\index{quality@{quality}!theora_info@{theora\_\-info}}
+\subsubsection[{quality}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf theora\_\-info::quality}}\label{structtheora__info_a71a4748a5f31bd58d0e403b7806c980d}
+
+
+Nominal quality setting, 0-\/63. \index{theora\_\-info@{theora\_\-info}!quick\_\-p@{quick\_\-p}}
+\index{quick\_\-p@{quick\_\-p}!theora_info@{theora\_\-info}}
+\subsubsection[{quick\_\-p}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf theora\_\-info::quick\_\-p}}\label{structtheora__info_a2dfae4fd175dbd19254eaf0697778ff5}
+
+
+Quick encode/decode. \index{theora\_\-info@{theora\_\-info}!sharpness@{sharpness}}
+\index{sharpness@{sharpness}!theora_info@{theora\_\-info}}
+\subsubsection[{sharpness}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-int32\_\-t {\bf theora\_\-info::sharpness}}\label{structtheora__info_a3fb695de2b2f56dd0203b9e2eb0df1cc}
+\index{theora\_\-info@{theora\_\-info}!target\_\-bitrate@{target\_\-bitrate}}
+\index{target\_\-bitrate@{target\_\-bitrate}!theora_info@{theora\_\-info}}
+\subsubsection[{target\_\-bitrate}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf theora\_\-info::target\_\-bitrate}}\label{structtheora__info_a0cfba041767ae2416dd190a406afe713}
+
+
+nominal bitrate in bits per second \index{theora\_\-info@{theora\_\-info}!version\_\-major@{version\_\-major}}
+\index{version\_\-major@{version\_\-major}!theora_info@{theora\_\-info}}
+\subsubsection[{version\_\-major}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char {\bf theora\_\-info::version\_\-major}}\label{structtheora__info_a7c5ebb9e6700aaef87f29f7c6074e474}
+\index{theora\_\-info@{theora\_\-info}!version\_\-minor@{version\_\-minor}}
+\index{version\_\-minor@{version\_\-minor}!theora_info@{theora\_\-info}}
+\subsubsection[{version\_\-minor}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char {\bf theora\_\-info::version\_\-minor}}\label{structtheora__info_a75eda4f30270d833c7b9dba43932a06a}
+\index{theora\_\-info@{theora\_\-info}!version\_\-subminor@{version\_\-subminor}}
+\index{version\_\-subminor@{version\_\-subminor}!theora_info@{theora\_\-info}}
+\subsubsection[{version\_\-subminor}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char {\bf theora\_\-info::version\_\-subminor}}\label{structtheora__info_aa07967ecd6e20bd2928ead42b6397b3d}
+\index{theora\_\-info@{theora\_\-info}!width@{width}}
+\index{width@{width}!theora_info@{theora\_\-info}}
+\subsubsection[{width}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::width}}\label{structtheora__info_a17c2fc651bb3329f1ea6b13ff1d3957b}
+
+
+encoded frame width
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item
+{\bf theora.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structtheora__state.tex b/doc/libtheora/latex/structtheora__state.tex
new file mode 100644
index 0000000..ef57a04
--- /dev/null
+++ b/doc/libtheora/latex/structtheora__state.tex
@@ -0,0 +1,41 @@
+\section{theora\_\-state Struct Reference}
+\label{structtheora__state}\index{theora\_\-state@{theora\_\-state}}
+
+
+Codec internal state and context.
+
+
+{\ttfamily \#include $<$theora.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item
+{\bf theora\_\-info} $\ast$ {\bf i}
+\item
+ogg\_\-int64\_\-t {\bf granulepos}
+\item
+void $\ast$ {\bf internal\_\-encode}
+\item
+void $\ast$ {\bf internal\_\-decode}
+\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+Codec internal state and context.
+
+\subsection{Field Documentation}
+\index{theora\_\-state@{theora\_\-state}!granulepos@{granulepos}}
+\index{granulepos@{granulepos}!theora_state@{theora\_\-state}}
+\subsubsection[{granulepos}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-int64\_\-t {\bf theora\_\-state::granulepos}}\label{structtheora__state_a5dd344a3f79ea7501b18c756772fab7b}
+\index{theora\_\-state@{theora\_\-state}!i@{i}}
+\index{i@{i}!theora_state@{theora\_\-state}}
+\subsubsection[{i}]{\setlength{\rightskip}{0pt plus 5cm}{\bf theora\_\-info}$\ast$ {\bf theora\_\-state::i}}\label{structtheora__state_a0efc7ac581ef260b0ca17f518ace0731}
+\index{theora\_\-state@{theora\_\-state}!internal\_\-decode@{internal\_\-decode}}
+\index{internal\_\-decode@{internal\_\-decode}!theora_state@{theora\_\-state}}
+\subsubsection[{internal\_\-decode}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ {\bf theora\_\-state::internal\_\-decode}}\label{structtheora__state_ad20c4eebbc5ed9764cf03ba8b90e796e}
+\index{theora\_\-state@{theora\_\-state}!internal\_\-encode@{internal\_\-encode}}
+\index{internal\_\-encode@{internal\_\-encode}!theora_state@{theora\_\-state}}
+\subsubsection[{internal\_\-encode}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ {\bf theora\_\-state::internal\_\-encode}}\label{structtheora__state_a1fbfd82fb7210cbcc4233cb680ec2af6}
+
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item
+{\bf theora.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structyuv__buffer.tex b/doc/libtheora/latex/structyuv__buffer.tex
new file mode 100644
index 0000000..08d9d28
--- /dev/null
+++ b/doc/libtheora/latex/structyuv__buffer.tex
@@ -0,0 +1,90 @@
+\section{yuv\_\-buffer Struct Reference}
+\label{structyuv__buffer}\index{yuv\_\-buffer@{yuv\_\-buffer}}
+
+
+A YUV buffer for passing uncompressed frames to and from the codec.
+
+
+{\ttfamily \#include $<$theora.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item
+int {\bf y\_\-width}
+\begin{DoxyCompactList}\small\item\em Width of the Y' luminance plane. \item\end{DoxyCompactList}\item
+int {\bf y\_\-height}
+\begin{DoxyCompactList}\small\item\em Height of the luminance plane. \item\end{DoxyCompactList}\item
+int {\bf y\_\-stride}
+\begin{DoxyCompactList}\small\item\em Offset in bytes between successive rows. \item\end{DoxyCompactList}\item
+int {\bf uv\_\-width}
+\begin{DoxyCompactList}\small\item\em Width of the Cb and Cr chroma planes. \item\end{DoxyCompactList}\item
+int {\bf uv\_\-height}
+\begin{DoxyCompactList}\small\item\em Height of the chroma planes. \item\end{DoxyCompactList}\item
+int {\bf uv\_\-stride}
+\begin{DoxyCompactList}\small\item\em Offset between successive chroma rows. \item\end{DoxyCompactList}\item
+unsigned char $\ast$ {\bf y}
+\begin{DoxyCompactList}\small\item\em Pointer to start of luminance data. \item\end{DoxyCompactList}\item
+unsigned char $\ast$ {\bf u}
+\begin{DoxyCompactList}\small\item\em Pointer to start of Cb data. \item\end{DoxyCompactList}\item
+unsigned char $\ast$ {\bf v}
+\begin{DoxyCompactList}\small\item\em Pointer to start of Cr data. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+A YUV buffer for passing uncompressed frames to and from the codec. This holds a Y'CbCr frame in planar format. The CbCr planes can be subsampled and have their own separate dimensions and row stride offsets. Note that the strides may be negative in some configurations. For theora the width and height of the largest plane must be a multiple of 16. The actual meaningful picture size and offset are stored in the \doxyref{theora\_\-info}{p.}{structtheora__info} structure; frames returned by the decoder may need to be cropped for display.
+
+All samples are 8 bits. Within each plane samples are ordered by row from the top of the frame to the bottom. Within each row samples are ordered from left to right.
+
+During decode, the \doxyref{yuv\_\-buffer}{p.}{structyuv__buffer} struct is allocated by the user, but all fields (including luma and chroma pointers) are filled by the library. These pointers address library-\/internal memory and their contents should not be modified.
+
+Conversely, during encode the user allocates the struct and fills out all fields. The user also manages the data addressed by the luma and chroma pointers. See the encoder\_\-example.c and dump\_\-video.c example files in theora/examples/ for more information.
+
+\subsection{Field Documentation}
+\index{yuv\_\-buffer@{yuv\_\-buffer}!u@{u}}
+\index{u@{u}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{u}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char$\ast$ {\bf yuv\_\-buffer::u}}\label{structyuv__buffer_a8b1857afe3ffac28f259499a57a559e1}
+
+
+Pointer to start of Cb data. \index{yuv\_\-buffer@{yuv\_\-buffer}!uv\_\-height@{uv\_\-height}}
+\index{uv\_\-height@{uv\_\-height}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{uv\_\-height}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf yuv\_\-buffer::uv\_\-height}}\label{structyuv__buffer_a640f1a0b456d3807f9f0538b22f10097}
+
+
+Height of the chroma planes. \index{yuv\_\-buffer@{yuv\_\-buffer}!uv\_\-stride@{uv\_\-stride}}
+\index{uv\_\-stride@{uv\_\-stride}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{uv\_\-stride}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf yuv\_\-buffer::uv\_\-stride}}\label{structyuv__buffer_ab265cc24ffb5650bf52daf223b0debb9}
+
+
+Offset between successive chroma rows. \index{yuv\_\-buffer@{yuv\_\-buffer}!uv\_\-width@{uv\_\-width}}
+\index{uv\_\-width@{uv\_\-width}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{uv\_\-width}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf yuv\_\-buffer::uv\_\-width}}\label{structyuv__buffer_a8c59a57c35af0be519ee47f15e49fe2b}
+
+
+Width of the Cb and Cr chroma planes. \index{yuv\_\-buffer@{yuv\_\-buffer}!v@{v}}
+\index{v@{v}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{v}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char$\ast$ {\bf yuv\_\-buffer::v}}\label{structyuv__buffer_aa429491dd112adb0254672c59ef55075}
+
+
+Pointer to start of Cr data. \index{yuv\_\-buffer@{yuv\_\-buffer}!y@{y}}
+\index{y@{y}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{y}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char$\ast$ {\bf yuv\_\-buffer::y}}\label{structyuv__buffer_a725727c70eeced6b8c90866973399ac1}
+
+
+Pointer to start of luminance data. \index{yuv\_\-buffer@{yuv\_\-buffer}!y\_\-height@{y\_\-height}}
+\index{y\_\-height@{y\_\-height}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{y\_\-height}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf yuv\_\-buffer::y\_\-height}}\label{structyuv__buffer_a5a8b60e012247e2caffcbbaca99414e0}
+
+
+Height of the luminance plane. \index{yuv\_\-buffer@{yuv\_\-buffer}!y\_\-stride@{y\_\-stride}}
+\index{y\_\-stride@{y\_\-stride}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{y\_\-stride}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf yuv\_\-buffer::y\_\-stride}}\label{structyuv__buffer_a9cdf61834c11b2351640a4a243ad0549}
+
+
+Offset in bytes between successive rows. \index{yuv\_\-buffer@{yuv\_\-buffer}!y\_\-width@{y\_\-width}}
+\index{y\_\-width@{y\_\-width}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{y\_\-width}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf yuv\_\-buffer::y\_\-width}}\label{structyuv__buffer_aaa6c06c071da933231647238418d5fc0}
+
+
+Width of the Y' luminance plane.
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item
+{\bf theora.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/theora_8h.tex b/doc/libtheora/latex/theora_8h.tex
new file mode 100644
index 0000000..3bb3b17
--- /dev/null
+++ b/doc/libtheora/latex/theora_8h.tex
@@ -0,0 +1,185 @@
+\section{theora.h File Reference}
+\label{theora_8h}\index{theora.h@{theora.h}}
+
+
+The libtheora pre-\/1.0 legacy C API.
+{\ttfamily \#include $<$stddef.h$>$}\par
+{\ttfamily \#include $<$ogg/ogg.h$>$}\par
+\subsection*{Data Structures}
+\begin{DoxyCompactItemize}
+\item
+struct {\bf yuv\_\-buffer}
+\begin{DoxyCompactList}\small\item\em A YUV buffer for passing uncompressed frames to and from the codec. \item\end{DoxyCompactList}\item
+struct {\bf theora\_\-info}
+\begin{DoxyCompactList}\small\item\em Theora bitstream info. \item\end{DoxyCompactList}\item
+struct {\bf theora\_\-state}
+\begin{DoxyCompactList}\small\item\em Codec internal state and context. \item\end{DoxyCompactList}\item
+struct {\bf theora\_\-comment}
+\begin{DoxyCompactList}\small\item\em Comment header metadata. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Defines}
+\begin{DoxyCompactItemize}
+\item
+\#define {\bf OC\_\-FAULT}~-\/1
+\begin{DoxyCompactList}\small\item\em General failure. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-EINVAL}~-\/10
+\begin{DoxyCompactList}\small\item\em Library encountered invalid internal data. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-DISABLED}~-\/11
+\begin{DoxyCompactList}\small\item\em Requested action is disabled. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-BADHEADER}~-\/20
+\begin{DoxyCompactList}\small\item\em Header packet was corrupt/invalid. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-NOTFORMAT}~-\/21
+\begin{DoxyCompactList}\small\item\em Packet is not a theora packet. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-VERSION}~-\/22
+\begin{DoxyCompactList}\small\item\em Bitstream version is not handled. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-IMPL}~-\/23
+\begin{DoxyCompactList}\small\item\em Feature or action not implemented. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-BADPACKET}~-\/24
+\begin{DoxyCompactList}\small\item\em Packet is corrupt. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-NEWPACKET}~-\/25
+\begin{DoxyCompactList}\small\item\em Packet is an (ignorable) unhandled extension. \item\end{DoxyCompactList}\item
+\#define {\bf OC\_\-DUPFRAME}~1
+\begin{DoxyCompactList}\small\item\em Packet is a dropped frame. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\begin{Indent}{\bf theora\_\-control() codes}\par
+{\em \label{_amgrp13fd61986cff4566fe89a40e30b74ad9}
+ }\begin{DoxyCompactItemize}
+\item
+\#define {\bf TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}~(1)
+\begin{DoxyCompactList}\small\item\em Get the maximum post-\/processing level. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-PPLEVEL}~(3)
+\begin{DoxyCompactList}\small\item\em Set the post-\/processing level. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}~(4)
+\begin{DoxyCompactList}\small\item\em Sets the maximum distance between key frames. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-GRANPOS}~(5)
+\begin{DoxyCompactList}\small\item\em Set the granule position. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}~(2)
+\begin{DoxyCompactList}\small\item\em Sets the quantization parameters to use. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}~(10)
+\begin{DoxyCompactList}\small\item\em Disables any encoder features that would prevent lossless transcoding back to VP3. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}~(12)
+\begin{DoxyCompactList}\small\item\em Gets the maximum speed level. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}~(14)
+\begin{DoxyCompactList}\small\item\em Sets the speed level. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\subsection*{Enumerations}
+\begin{DoxyCompactItemize}
+\item
+enum {\bf theora\_\-colorspace} \{ {\bf OC\_\-CS\_\-UNSPECIFIED},
+{\bf OC\_\-CS\_\-ITU\_\-REC\_\-470M},
+{\bf OC\_\-CS\_\-ITU\_\-REC\_\-470BG},
+{\bf OC\_\-CS\_\-NSPACES}
+ \}
+\begin{DoxyCompactList}\small\item\em A Colorspace. \item\end{DoxyCompactList}\item
+enum {\bf theora\_\-pixelformat} \{ {\bf OC\_\-PF\_\-420},
+{\bf OC\_\-PF\_\-RSVD},
+{\bf OC\_\-PF\_\-422},
+{\bf OC\_\-PF\_\-444}
+ \}
+\begin{DoxyCompactList}\small\item\em A Chroma subsampling. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+const char $\ast$ {\bf theora\_\-version\_\-string} (void)
+\begin{DoxyCompactList}\small\item\em Retrieve a human-\/readable string to identify the encoder vendor and version. \item\end{DoxyCompactList}\item
+ogg\_\-uint32\_\-t {\bf theora\_\-version\_\-number} (void)
+\begin{DoxyCompactList}\small\item\em Retrieve a 32-\/bit version number. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-encode\_\-init} ({\bf theora\_\-state} $\ast$th, {\bf theora\_\-info} $\ast$ti)
+\begin{DoxyCompactList}\small\item\em Initialize the theora encoder. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-encode\_\-YUVin} ({\bf theora\_\-state} $\ast$t, {\bf yuv\_\-buffer} $\ast$yuv)
+\begin{DoxyCompactList}\small\item\em Submit a YUV buffer to the theora encoder. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-encode\_\-packetout} ({\bf theora\_\-state} $\ast$t, int last\_\-p, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Request the next packet of encoded video. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-encode\_\-header} ({\bf theora\_\-state} $\ast$t, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Request a packet containing the initial header. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-encode\_\-comment} ({\bf theora\_\-comment} $\ast$tc, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Request a comment header packet from provided metadata. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-encode\_\-tables} ({\bf theora\_\-state} $\ast$t, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Request a packet containing the codebook tables for the stream. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-decode\_\-header} ({\bf theora\_\-info} $\ast$ci, {\bf theora\_\-comment} $\ast$cc, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-decode\_\-init} ({\bf theora\_\-state} $\ast$th, {\bf theora\_\-info} $\ast$c)
+\begin{DoxyCompactList}\small\item\em Initialize a \doxyref{theora\_\-state}{p.}{structtheora__state} handle for decoding. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-decode\_\-packetin} ({\bf theora\_\-state} $\ast$th, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Input a packet containing encoded data into the theora decoder. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-decode\_\-YUVout} ({\bf theora\_\-state} $\ast$th, {\bf yuv\_\-buffer} $\ast$yuv)
+\begin{DoxyCompactList}\small\item\em Output the next available frame of decoded YUV data. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-packet\_\-isheader} (ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} for that. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-packet\_\-iskeyframe} (ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Report whether a theora packet is a keyframe or not. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-granule\_\-shift} ({\bf theora\_\-info} $\ast$ti)
+\begin{DoxyCompactList}\small\item\em Report the granulepos shift radix. \item\end{DoxyCompactList}\item
+ogg\_\-int64\_\-t {\bf theora\_\-granule\_\-frame} ({\bf theora\_\-state} $\ast$th, ogg\_\-int64\_\-t granulepos)
+\begin{DoxyCompactList}\small\item\em Convert a granulepos to an absolute frame index, starting at 0. \item\end{DoxyCompactList}\item
+double {\bf theora\_\-granule\_\-time} ({\bf theora\_\-state} $\ast$th, ogg\_\-int64\_\-t granulepos)
+\begin{DoxyCompactList}\small\item\em Convert a granulepos to absolute time in seconds. \item\end{DoxyCompactList}\item
+void {\bf theora\_\-info\_\-init} ({\bf theora\_\-info} $\ast$c)
+\begin{DoxyCompactList}\small\item\em Initialize a \doxyref{theora\_\-info}{p.}{structtheora__info} structure. \item\end{DoxyCompactList}\item
+void {\bf theora\_\-info\_\-clear} ({\bf theora\_\-info} $\ast$c)
+\begin{DoxyCompactList}\small\item\em Clear a \doxyref{theora\_\-info}{p.}{structtheora__info} structure. \item\end{DoxyCompactList}\item
+void {\bf theora\_\-clear} ({\bf theora\_\-state} $\ast$t)
+\begin{DoxyCompactList}\small\item\em Free all internal data associated with a \doxyref{theora\_\-state}{p.}{structtheora__state} handle. \item\end{DoxyCompactList}\item
+void {\bf theora\_\-comment\_\-init} ({\bf theora\_\-comment} $\ast$tc)
+\begin{DoxyCompactList}\small\item\em Initialize an allocated \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. \item\end{DoxyCompactList}\item
+void {\bf theora\_\-comment\_\-add} ({\bf theora\_\-comment} $\ast$tc, char $\ast$comment)
+\begin{DoxyCompactList}\small\item\em Add a comment to an initialized \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. \item\end{DoxyCompactList}\item
+void {\bf theora\_\-comment\_\-add\_\-tag} ({\bf theora\_\-comment} $\ast$tc, char $\ast$tag, char $\ast$value)
+\begin{DoxyCompactList}\small\item\em Add a comment to an initialized \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. \item\end{DoxyCompactList}\item
+char $\ast$ {\bf theora\_\-comment\_\-query} ({\bf theora\_\-comment} $\ast$tc, char $\ast$tag, int count)
+\begin{DoxyCompactList}\small\item\em Look up a comment value by tag. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-comment\_\-query\_\-count} ({\bf theora\_\-comment} $\ast$tc, char $\ast$tag)
+\begin{DoxyCompactList}\small\item\em Look up the number of instances of a tag. \item\end{DoxyCompactList}\item
+void {\bf theora\_\-comment\_\-clear} ({\bf theora\_\-comment} $\ast$tc)
+\begin{DoxyCompactList}\small\item\em Clear an allocated \doxyref{theora\_\-comment}{p.}{structtheora__comment} struct so that it can be freed. \item\end{DoxyCompactList}\item
+int {\bf theora\_\-control} ({\bf theora\_\-state} $\ast$th, int req, void $\ast$buf, size\_\-t buf\_\-sz)
+\begin{DoxyCompactList}\small\item\em Encoder control function. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+The libtheora pre-\/1.0 legacy C API. \subsection{Introduction}\label{index_intro}
+This is the documentation for the libtheora legacy C API, declared in the \doxyref{theora.h}{p.}{theora_8h} header, which describes the old interface used before the 1.0 release. This API was widely deployed for several years and remains supported, but for new code we recommend the cleaner API declared in \doxyref{theoradec.h}{p.}{theoradec_8h} and \doxyref{theoraenc.h}{p.}{theoraenc_8h}.
+
+libtheora is the reference implementation for {\tt Theora}, a free video codec. Theora is derived from On2's VP3 codec with improved integration with Ogg multimedia formats by {\tt Xiph.Org}.\subsection{Overview}\label{theora_8h_overview}
+This library will both decode and encode theora packets to/from raw YUV frames. In either case, the packets will most likely either come from or need to be embedded in an Ogg stream. Use {\tt libogg} or {\tt liboggz} to extract/package these packets.\subsection{Decoding Process}\label{theora_8h_decoding}
+Decoding can be separated into the following steps:
+\begin{DoxyEnumerate}
+\item initialise \doxyref{theora\_\-info}{p.}{structtheora__info} and \doxyref{theora\_\-comment}{p.}{structtheora__comment} structures using \doxyref{theora\_\-info\_\-init()}{p.}{group__oldfuncs_ga3091c87d48f1faba018c5956379a6d90} and \doxyref{theora\_\-comment\_\-init()}{p.}{group__oldfuncs_ga811b92785df3bdbbebb3de612d9d6ce0}: \begin{DoxyVerb}
+ theora_info info;
+ theora_comment comment;
+
+ theora_info_init(&info);
+ theora_comment_init(&comment);
+ \end{DoxyVerb}
+
+\item retrieve header packets from Ogg stream (there should be 3) and decode into \doxyref{theora\_\-info}{p.}{structtheora__info} and \doxyref{theora\_\-comment}{p.}{structtheora__comment} structures using \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82}. See \doxyref{Identifying Theora Packets}{p.}{theora_8h_identification} for more information on identifying which packets are theora packets. \begin{DoxyVerb}
+ int i;
+ for (i = 0; i < 3; i++)
+ {
+ (get a theora packet "op" from the Ogg stream)
+ theora_decode_header(&info, &comment, op);
+ }
+ \end{DoxyVerb}
+
+\item initialise the decoder based on the information retrieved into the \doxyref{theora\_\-info}{p.}{structtheora__info} struct by \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82}. You will need a \doxyref{theora\_\-state}{p.}{structtheora__state} struct. \begin{DoxyVerb}
+ theora_state state;
+
+ theora_decode_init(&state, &info);
+ \end{DoxyVerb}
+
+\item pass in packets and retrieve decoded frames! See the \doxyref{yuv\_\-buffer}{p.}{structyuv__buffer} documentation for information on how to retrieve raw YUV data. \begin{DoxyVerb}
+ yuf_buffer buffer;
+ while (last packet was not e_o_s) {
+ (get a theora packet "op" from the Ogg stream)
+ theora_decode_packetin(&state, op);
+ theora_decode_YUVout(&state, &buffer);
+ }
+ \end{DoxyVerb}
+
+\end{DoxyEnumerate}\subsubsection{Identifying Theora Packets}\label{theora_8h_identification}
+All streams inside an Ogg file have a unique serial\_\-no attached to the stream. Typically, you will want to
+\begin{DoxyItemize}
+\item retrieve the serial\_\-no for each b\_\-o\_\-s (beginning of stream) page encountered within the Ogg file;
+\item test the first (only) packet on that page to determine if it is a theora packet;
+\item once you have found a theora b\_\-o\_\-s page then use the retrieved serial\_\-no to identify future packets belonging to the same theora stream.
+\end{DoxyItemize}
+
+Note that you {\itshape cannot\/} use \doxyref{theora\_\-packet\_\-isheader()}{p.}{group__oldfuncs_gab969f9d0407683f0e5abe73d0839a25b} to determine if a packet is a theora packet or not, as this function does not perform any checking beyond whether a header bit is present. Instead, use the \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} function and check the return value; or examine the header bytes at the beginning of the Ogg page. \ No newline at end of file
diff --git a/doc/libtheora/latex/theoradec_8h.tex b/doc/libtheora/latex/theoradec_8h.tex
new file mode 100644
index 0000000..f19d902
--- /dev/null
+++ b/doc/libtheora/latex/theoradec_8h.tex
@@ -0,0 +1,194 @@
+\section{theoradec.h File Reference}
+\label{theoradec_8h}\index{theoradec.h@{theoradec.h}}
+
+
+The {\ttfamily libtheoradec} C decoding API.
+{\ttfamily \#include $<$stddef.h$>$}\par
+{\ttfamily \#include $<$ogg/ogg.h$>$}\par
+{\ttfamily \#include \char`\"{}codec.h\char`\"{}}\par
+\subsection*{Data Structures}
+\begin{DoxyCompactItemize}
+\item
+struct {\bf th\_\-stripe\_\-callback}
+\begin{DoxyCompactList}\small\item\em The striped decode callback data to pass to \doxyref{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}{p.}{theoradec_8h_ac95cc9e109474b0fa4bb920ab2cfdf1e}. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Defines}
+\begin{DoxyCompactItemize}
+\item
+\#define {\bf \_\-O\_\-THEORA\_\-THEORADEC\_\-H\_\-}~(1)
+\end{DoxyCompactItemize}
+\begin{Indent}{\bf th\_\-decode\_\-ctl() codes}\par
+{\em \label{_amgrp638dfd34390d0a936dbf76caf938d78d}
+\label{theoradec_8h_decctlcodes}
+ These are the available request codes for \doxyref{th\_\-decode\_\-ctl()}{p.}{group__decfuncs_ga1a8051958d75b1012573b6e3c8f670e1}. By convention, these are odd, to distinguish them from the \doxyref{encoder control codes}{p.}{theoraenc_8h_encctlcodes}. Keep any experimental or vendor-\/specific values above {\ttfamily 0x8000}. }\begin{DoxyCompactItemize}
+\item
+\#define {\bf TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}~(1)
+\begin{DoxyCompactList}\small\item\em Gets the maximum post-\/processing level. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-PPLEVEL}~(3)
+\begin{DoxyCompactList}\small\item\em Sets the post-\/processing level. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-GRANPOS}~(5)
+\begin{DoxyCompactList}\small\item\em Sets the granule position. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}~(7)
+\begin{DoxyCompactList}\small\item\em Sets the striped decode callback function. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MBMODE}~(9)
+\begin{DoxyCompactList}\small\item\em Enables telemetry and sets the macroblock display mode. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MV}~(11)
+\begin{DoxyCompactList}\small\item\em Enables telemetry and sets the motion vector display mode. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-QI}~(13)
+\begin{DoxyCompactList}\small\item\em Enables telemetry and sets the adaptive quantization display mode. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-BITS}~(15)
+\begin{DoxyCompactList}\small\item\em Enables telemetry and sets the bitstream breakdown visualization mode. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\subsection*{Typedefs}
+\begin{DoxyCompactItemize}
+\item
+typedef void($\ast$ {\bf th\_\-stripe\_\-decoded\_\-func} )(void $\ast$\_\-ctx, {\bf th\_\-ycbcr\_\-buffer} \_\-buf, int \_\-yfrag0, int \_\-yfrag\_\-end)
+\begin{DoxyCompactList}\small\item\em A callback function for striped decode. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\begin{Indent}{\bf Decoder state}\par
+{\em \label{_amgrp20ad7456b6a1ebc1cb57f3e51d4d7bc3}
+The following data structures are opaque, and their contents are not publicly defined by this API.
+
+Referring to their internals directly is unsupported, and may break without warning. }\begin{DoxyCompactItemize}
+\item
+typedef struct {\bf th\_\-dec\_\-ctx} {\bf th\_\-dec\_\-ctx}
+\begin{DoxyCompactList}\small\item\em The decoder context. \item\end{DoxyCompactList}\item
+typedef struct {\bf th\_\-setup\_\-info} {\bf th\_\-setup\_\-info}
+\begin{DoxyCompactList}\small\item\em Setup information. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\subsection*{Functions}
+\begin{Indent}{\bf Functions for decoding}\par
+{\em \label{_amgrp9d29c94aa62f20426aa5ff062c7daedd}
+You must link to {\ttfamily libtheoradec} if you use any of the functions in this section.
+
+The functions are listed in the order they are used in a typical decode. The basic steps are:
+\begin{DoxyItemize}
+\item Parse the header packets by repeatedly calling \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50}.
+\item Allocate a \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle with \doxyref{th\_\-decode\_\-alloc()}{p.}{group__decfuncs_ga0ef07a9a97849054aa606c595a2d807e}.
+\item Call \doxyref{th\_\-setup\_\-free()}{p.}{group__decfuncs_gadef55431b68aaa59d0d7b32b2f118f27} to free any memory used for codec setup information.
+\item Perform any additional decoder configuration with \doxyref{th\_\-decode\_\-ctl()}{p.}{group__decfuncs_ga1a8051958d75b1012573b6e3c8f670e1}.
+\item For each video data packet:
+\begin{DoxyItemize}
+\item Submit the packet to the decoder via \doxyref{th\_\-decode\_\-packetin()}{p.}{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb}.
+\item Retrieve the uncompressed video data via \doxyref{th\_\-decode\_\-ycbcr\_\-out()}{p.}{group__decfuncs_gaa9cc8af63fa8540e0fc95572f259cdcb}.
+\end{DoxyItemize}
+\item Call \doxyref{th\_\-decode\_\-free()}{p.}{group__decfuncs_gafb6684ad8ba507b71112bc9de148e7d0} to release all decoder memory.
+\end{DoxyItemize}}\begin{DoxyCompactItemize}
+\item
+int {\bf th\_\-decode\_\-headerin} ({\bf th\_\-info} $\ast$\_\-info, {\bf th\_\-comment} $\ast$\_\-tc, {\bf th\_\-setup\_\-info} $\ast$$\ast$\_\-setup, ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Decodes the header packets of a Theora stream. \item\end{DoxyCompactList}\item
+{\bf th\_\-dec\_\-ctx} $\ast$ {\bf th\_\-decode\_\-alloc} (const {\bf th\_\-info} $\ast$\_\-info, const {\bf th\_\-setup\_\-info} $\ast$\_\-setup)
+\begin{DoxyCompactList}\small\item\em Allocates a decoder instance. \item\end{DoxyCompactList}\item
+void {\bf th\_\-setup\_\-free} ({\bf th\_\-setup\_\-info} $\ast$\_\-setup)
+\begin{DoxyCompactList}\small\item\em Releases all storage used for the decoder setup information. \item\end{DoxyCompactList}\item
+int {\bf th\_\-decode\_\-ctl} ({\bf th\_\-dec\_\-ctx} $\ast$\_\-dec, int \_\-req, void $\ast$\_\-buf, size\_\-t \_\-buf\_\-sz)
+\begin{DoxyCompactList}\small\item\em Decoder control function. \item\end{DoxyCompactList}\item
+int {\bf th\_\-decode\_\-packetin} ({\bf th\_\-dec\_\-ctx} $\ast$\_\-dec, const ogg\_\-packet $\ast$\_\-op, ogg\_\-int64\_\-t $\ast$\_\-granpos)
+\begin{DoxyCompactList}\small\item\em Submits a packet containing encoded video data to the decoder. \item\end{DoxyCompactList}\item
+int {\bf th\_\-decode\_\-ycbcr\_\-out} ({\bf th\_\-dec\_\-ctx} $\ast$\_\-dec, {\bf th\_\-ycbcr\_\-buffer} \_\-ycbcr)
+\begin{DoxyCompactList}\small\item\em Outputs the next available frame of decoded Y'CbCr data. \item\end{DoxyCompactList}\item
+void {\bf th\_\-decode\_\-free} ({\bf th\_\-dec\_\-ctx} $\ast$\_\-dec)
+\begin{DoxyCompactList}\small\item\em Frees an allocated decoder instance. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+
+
+\subsection{Detailed Description}
+The {\ttfamily libtheoradec} C decoding API.
+
+\subsection{Define Documentation}
+\index{theoradec.h@{theoradec.h}!\_\-O\_\-THEORA\_\-THEORADEC\_\-H\_\-@{\_\-O\_\-THEORA\_\-THEORADEC\_\-H\_\-}}
+\index{\_\-O\_\-THEORA\_\-THEORADEC\_\-H\_\-@{\_\-O\_\-THEORA\_\-THEORADEC\_\-H\_\-}!theoradec.h@{theoradec.h}}
+\subsubsection[{\_\-O\_\-THEORA\_\-THEORADEC\_\-H\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-O\_\-THEORA\_\-THEORADEC\_\-H\_\-~(1)}\label{theoradec_8h_a0d78767a326c34dbf84d5b845cba7b4a}
+\index{theoradec.h@{theoradec.h}!TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX@{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}}
+\index{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX@{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}!theoradec.h@{theoradec.h}}
+\subsubsection[{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX~(1)}\label{theoradec_8h_ab31f251c9319f2140d247585d30b3d07}
+
+
+Gets the maximum post-\/processing level. The decoder supports a post-\/processing filter that can improve the appearance of the decoded images. This returns the highest level setting for this post-\/processor, corresponding to maximum improvement and computational expense.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\rightarrow$} {\em \_\-buf}]int: The maximum post-\/processing level. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-dec\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoradec.h@{theoradec.h}!TH\_\-DECCTL\_\-SET\_\-GRANPOS@{TH\_\-DECCTL\_\-SET\_\-GRANPOS}}
+\index{TH\_\-DECCTL\_\-SET\_\-GRANPOS@{TH\_\-DECCTL\_\-SET\_\-GRANPOS}!theoradec.h@{theoradec.h}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-GRANPOS}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-GRANPOS~(5)}\label{theoradec_8h_a1e870c654d35394f0d490045df04e0f5}
+
+
+Sets the granule position. Call this after a seek, before decoding the first frame, to ensure that the proper granule position is returned for all subsequent frames. If you track timestamps yourself and do not use the granule position returned by the decoder, then you need not call this function.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily ogg\_\-int64\_\-t}: The granule position of the next frame. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-dec\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(ogg\_\-int64\_\-t)}, or the granule position is negative. \end{DoxyRetVals}
+\index{theoradec.h@{theoradec.h}!TH\_\-DECCTL\_\-SET\_\-PPLEVEL@{TH\_\-DECCTL\_\-SET\_\-PPLEVEL}}
+\index{TH\_\-DECCTL\_\-SET\_\-PPLEVEL@{TH\_\-DECCTL\_\-SET\_\-PPLEVEL}!theoradec.h@{theoradec.h}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-PPLEVEL}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-PPLEVEL~(3)}\label{theoradec_8h_a87774c35e1a755a84e2d705b38ebef0d}
+
+
+Sets the post-\/processing level. By default, post-\/processing is disabled.
+
+Sets the level of post-\/processing to use when decoding the compressed stream. This must be a value between zero (off) and the maximum returned by TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]int: The new post-\/processing level. 0 to disable; larger values use more CPU. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-dec\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)}, or the post-\/processing level is out of bounds. The maximum post-\/processing level may be implementation-\/specific, and can be obtained via \doxyref{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}{p.}{theoradec_8h_ab31f251c9319f2140d247585d30b3d07}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoradec.h@{theoradec.h}!TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB@{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}}
+\index{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB@{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}!theoradec.h@{theoradec.h}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB~(7)}\label{theoradec_8h_ac95cc9e109474b0fa4bb920ab2cfdf1e}
+
+
+Sets the striped decode callback function. If set, this function will be called as each piece of a frame is fully decoded in \doxyref{th\_\-decode\_\-packetin()}{p.}{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb}. You can pass in a \doxyref{th\_\-stripe\_\-callback}{p.}{structth__stripe__callback} with \doxyref{th\_\-stripe\_\-callback::stripe\_\-decoded}{p.}{structth__stripe__callback_a977c725680a37e3446e459f063b1f4a5} set to {\ttfamily NULL} to disable the callbacks at any point. Enabling striped decode does not prevent you from calling \doxyref{th\_\-decode\_\-ycbcr\_\-out()}{p.}{group__decfuncs_gaa9cc8af63fa8540e0fc95572f259cdcb} after the frame is fully decoded.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]\doxyref{th\_\-stripe\_\-callback}{p.}{structth__stripe__callback}: The callback parameters. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-dec\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(th\_\-stripe\_\-callback)}. \end{DoxyRetVals}
+\index{theoradec.h@{theoradec.h}!TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-BITS@{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-BITS}}
+\index{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-BITS@{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-BITS}!theoradec.h@{theoradec.h}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-BITS}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-BITS~(15)}\label{theoradec_8h_a7f43fec07486f8a5f00e92aab7d44a25}
+
+
+Enables telemetry and sets the bitstream breakdown visualization mode. \index{theoradec.h@{theoradec.h}!TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MBMODE@{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MBMODE}}
+\index{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MBMODE@{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MBMODE}!theoradec.h@{theoradec.h}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MBMODE}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MBMODE~(9)}\label{theoradec_8h_a8d5e0b9b4c8898f93f241acbeb7e7ffb}
+
+
+Enables telemetry and sets the macroblock display mode. \index{theoradec.h@{theoradec.h}!TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MV@{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MV}}
+\index{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MV@{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MV}!theoradec.h@{theoradec.h}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MV}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MV~(11)}\label{theoradec_8h_a829285a03d24832c583f33c6357df8aa}
+
+
+Enables telemetry and sets the motion vector display mode. \index{theoradec.h@{theoradec.h}!TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-QI@{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-QI}}
+\index{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-QI@{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-QI}!theoradec.h@{theoradec.h}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-QI}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-QI~(13)}\label{theoradec_8h_ae3e2f7674ad92fe67b63915d48c9df5b}
+
+
+Enables telemetry and sets the adaptive quantization display mode.
+
+\subsection{Typedef Documentation}
+\index{theoradec.h@{theoradec.h}!th\_\-dec\_\-ctx@{th\_\-dec\_\-ctx}}
+\index{th\_\-dec\_\-ctx@{th\_\-dec\_\-ctx}!theoradec.h@{theoradec.h}}
+\subsubsection[{th\_\-dec\_\-ctx}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf th\_\-dec\_\-ctx} {\bf th\_\-dec\_\-ctx}}\label{theoradec_8h_a843d70bb02563885a8d54b9c1a781729}
+
+
+The decoder context. \index{theoradec.h@{theoradec.h}!th\_\-setup\_\-info@{th\_\-setup\_\-info}}
+\index{th\_\-setup\_\-info@{th\_\-setup\_\-info}!theoradec.h@{theoradec.h}}
+\subsubsection[{th\_\-setup\_\-info}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf th\_\-setup\_\-info} {\bf th\_\-setup\_\-info}}\label{theoradec_8h_ab71cd2657455cc27d6c0127c66a89f28}
+
+
+Setup information. This contains auxiliary information (Huffman tables and quantization parameters) decoded from the setup header by \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50} to be passed to \doxyref{th\_\-decode\_\-alloc()}{p.}{group__decfuncs_ga0ef07a9a97849054aa606c595a2d807e}. It can be re-\/used to initialize any number of decoders, and can be freed via \doxyref{th\_\-setup\_\-free()}{p.}{group__decfuncs_gadef55431b68aaa59d0d7b32b2f118f27} at any time. \index{theoradec.h@{theoradec.h}!th\_\-stripe\_\-decoded\_\-func@{th\_\-stripe\_\-decoded\_\-func}}
+\index{th\_\-stripe\_\-decoded\_\-func@{th\_\-stripe\_\-decoded\_\-func}!theoradec.h@{theoradec.h}}
+\subsubsection[{th\_\-stripe\_\-decoded\_\-func}]{\setlength{\rightskip}{0pt plus 5cm}typedef void($\ast$ {\bf th\_\-stripe\_\-decoded\_\-func})(void $\ast$\_\-ctx, {\bf th\_\-ycbcr\_\-buffer} \_\-buf, int \_\-yfrag0, int \_\-yfrag\_\-end)}\label{theoradec_8h_a25dfc8713157545abd81eda476ca4b54}
+
+
+A callback function for striped decode. This is a function pointer to an application-\/provided function that will be called each time a section of the image is fully decoded in \doxyref{th\_\-decode\_\-packetin()}{p.}{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb}. This allows the application to process the section immediately, while it is still in cache. Note that the frame is decoded bottom to top, so {\itshape \_\-yfrag0\/} will steadily decrease with each call until it reaches 0, at which point the full frame is decoded. The number of fragment rows made available in each call depends on the pixel format and the number of post-\/processing filters enabled, and may not even be constant for the entire frame. If a non-\/{\ttfamily NULL} {\itshape \_\-granpos\/} pointer is passed to \doxyref{th\_\-decode\_\-packetin()}{p.}{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb}, the granule position for the frame will be stored in it before the first callback is made. If an entire frame is dropped (a 0-\/byte packet), then no callbacks will be made at all for that frame.
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-ctx}]An application-\/provided context pointer. \item[{\em \_\-buf}]The image buffer for the decoded frame. \item[{\em \_\-yfrag0}]The Y coordinate of the first row of 8x8 fragments decoded. Multiply this by 8 to obtain the pixel row number in the luma plane. If the chroma planes are subsampled in the Y direction, this will always be divisible by two. \item[{\em \_\-yfrag\_\-end}]The Y coordinate of the first row of 8x8 fragments past the newly decoded section. If the chroma planes are subsampled in the Y direction, this will always be divisible by two. I.e., this section contains fragment rows {\ttfamily {\itshape \_\-yfrag0\/} ...{\itshape \_\-yfrag\_\-end\/} -\/1}. \end{DoxyParams}
diff --git a/doc/libtheora/latex/theoraenc_8h.tex b/doc/libtheora/latex/theoraenc_8h.tex
new file mode 100644
index 0000000..d4c0b3c
--- /dev/null
+++ b/doc/libtheora/latex/theoraenc_8h.tex
@@ -0,0 +1,343 @@
+\section{theoraenc.h File Reference}
+\label{theoraenc_8h}\index{theoraenc.h@{theoraenc.h}}
+
+
+The {\ttfamily libtheoraenc} C encoding API.
+{\ttfamily \#include $<$stddef.h$>$}\par
+{\ttfamily \#include $<$ogg/ogg.h$>$}\par
+{\ttfamily \#include \char`\"{}codec.h\char`\"{}}\par
+\subsection*{Defines}
+\begin{DoxyCompactItemize}
+\item
+\#define {\bf \_\-O\_\-THEORA\_\-THEORAENC\_\-H\_\-}~(1)
+\end{DoxyCompactItemize}
+\begin{Indent}{\bf th\_\-encode\_\-ctl() codes}\par
+{\em \label{_amgrp652c8d6bf1cea216ce117704a398b5f8}
+\label{theoraenc_8h_encctlcodes}
+ These are the available request codes for \doxyref{th\_\-encode\_\-ctl()}{p.}{group__encfuncs_ga3a427f6514dfdc01ea72172c469d51d9}. By convention, these are even, to distinguish them from the \doxyref{decoder control codes}{p.}{theoradec_8h_decctlcodes}. Keep any experimental or vendor-\/specific values above {\ttfamily 0x8000}. }\begin{DoxyCompactItemize}
+\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-HUFFMAN\_\-CODES}~(0)
+\begin{DoxyCompactList}\small\item\em Sets the Huffman tables to use. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}~(2)
+\begin{DoxyCompactList}\small\item\em Sets the quantization parameters to use. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}~(4)
+\begin{DoxyCompactList}\small\item\em Sets the maximum distance between key frames. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}~(10)
+\begin{DoxyCompactList}\small\item\em Disables any encoder features that would prevent lossless transcoding back to VP3. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}~(12)
+\begin{DoxyCompactList}\small\item\em Gets the maximum speed level. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}~(14)
+\begin{DoxyCompactList}\small\item\em Sets the speed level. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-GET\_\-SPLEVEL}~(16)
+\begin{DoxyCompactList}\small\item\em Gets the current speed level. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-DUP\_\-COUNT}~(18)
+\begin{DoxyCompactList}\small\item\em Sets the number of duplicates of the next frame to produce. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS}~(20)
+\begin{DoxyCompactList}\small\item\em Modifies the default bitrate management behavior. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-RATE\_\-BUFFER}~(22)
+\begin{DoxyCompactList}\small\item\em Sets the size of the bitrate management bit reservoir as a function of number of frames. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-2PASS\_\-OUT}~(24)
+\begin{DoxyCompactList}\small\item\em Enable pass 1 of two-\/pass encoding mode and retrieve the first pass metrics. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-2PASS\_\-IN}~(26)
+\begin{DoxyCompactList}\small\item\em Submits two-\/pass encoding metric data collected the first encoding pass to the second pass. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-QUALITY}~(28)
+\begin{DoxyCompactList}\small\item\em Sets the current encoding quality. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-BITRATE}~(30)
+\begin{DoxyCompactList}\small\item\em Sets the current encoding bitrate. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\begin{Indent}{\bf TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS flags}\par
+{\em \label{_amgrp6d70796e675cce22589d15a73cb3a16b}
+\label{theoraenc_8h_ratectlflags}
+ These are the flags available for use with \doxyref{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS}{p.}{theoraenc_8h_a026502e08fbe1af0a1063f39bd18129c}. }\begin{DoxyCompactItemize}
+\item
+\#define {\bf TH\_\-RATECTL\_\-DROP\_\-FRAMES}~(0x1)
+\begin{DoxyCompactList}\small\item\em Drop frames to keep within bitrate buffer constraints. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-RATECTL\_\-CAP\_\-OVERFLOW}~(0x2)
+\begin{DoxyCompactList}\small\item\em Ignore bitrate buffer overflows. \item\end{DoxyCompactList}\item
+\#define {\bf TH\_\-RATECTL\_\-CAP\_\-UNDERFLOW}~(0x4)
+\begin{DoxyCompactList}\small\item\em Ignore bitrate buffer underflows. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\subsection*{Typedefs}
+\begin{Indent}{\bf Encoder state}\par
+{\em \label{_amgrp4ebc85bd8522a8b6128225c02b31c8b7}
+The following data structure is opaque, and its contents are not publicly defined by this API.
+
+Referring to its internals directly is unsupported, and may break without warning. }\begin{DoxyCompactItemize}
+\item
+typedef struct {\bf th\_\-enc\_\-ctx} {\bf th\_\-enc\_\-ctx}
+\begin{DoxyCompactList}\small\item\em The encoder context. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\subsection*{Functions}
+\begin{Indent}{\bf Functions for encoding}\par
+{\em \label{_amgrpc58fb8743a7ca83eb895d57e29e032c8}
+You must link to {\ttfamily libtheoraenc} and {\ttfamily libtheoradec} if you use any of the functions in this section.
+
+The functions are listed in the order they are used in a typical encode. The basic steps are:
+\begin{DoxyItemize}
+\item Fill in a \doxyref{th\_\-info}{p.}{structth__info} structure with details on the format of the video you wish to encode.
+\item Allocate a \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} handle with \doxyref{th\_\-encode\_\-alloc()}{p.}{group__encfuncs_gaa91e47bc9dd5f6ee52045bd7b815e5a7}.
+\item Perform any additional encoder configuration required with \doxyref{th\_\-encode\_\-ctl()}{p.}{group__encfuncs_ga3a427f6514dfdc01ea72172c469d51d9}.
+\item Repeatedly call \doxyref{th\_\-encode\_\-flushheader()}{p.}{group__encfuncs_ga9439d61b566039d194ff782681fbc408} to retrieve all the header packets.
+\item For each uncompressed frame:
+\begin{DoxyItemize}
+\item Submit the uncompressed frame via \doxyref{th\_\-encode\_\-ycbcr\_\-in()}{p.}{group__encfuncs_gadbe7dd66b411c2d61ab8153c15308750}
+\item Repeatedly call \doxyref{th\_\-encode\_\-packetout()}{p.}{group__encfuncs_ga96d8ac1dda53187455352f99bbb5b04b} to retrieve any video data packets that are ready.
+\end{DoxyItemize}
+\item Call \doxyref{th\_\-encode\_\-free()}{p.}{group__encfuncs_ga36b23d216532231925c4107894204680} to release all encoder memory.
+\end{DoxyItemize}}\begin{DoxyCompactItemize}
+\item
+{\bf th\_\-enc\_\-ctx} $\ast$ {\bf th\_\-encode\_\-alloc} (const {\bf th\_\-info} $\ast$\_\-info)
+\begin{DoxyCompactList}\small\item\em Allocates an encoder instance. \item\end{DoxyCompactList}\item
+int {\bf th\_\-encode\_\-ctl} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc, int \_\-req, void $\ast$\_\-buf, size\_\-t \_\-buf\_\-sz)
+\begin{DoxyCompactList}\small\item\em Encoder control function. \item\end{DoxyCompactList}\item
+int {\bf th\_\-encode\_\-flushheader} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc, {\bf th\_\-comment} $\ast$\_\-comments, ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Outputs the next header packet. \item\end{DoxyCompactList}\item
+int {\bf th\_\-encode\_\-ycbcr\_\-in} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc, {\bf th\_\-ycbcr\_\-buffer} \_\-ycbcr)
+\begin{DoxyCompactList}\small\item\em Submits an uncompressed frame to the encoder. \item\end{DoxyCompactList}\item
+int {\bf th\_\-encode\_\-packetout} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc, int \_\-last, ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Retrieves encoded video data packets. \item\end{DoxyCompactList}\item
+void {\bf th\_\-encode\_\-free} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc)
+\begin{DoxyCompactList}\small\item\em Frees an allocated encoder instance. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\subsection*{Variables}
+\begin{DoxyCompactItemize}
+\item
+const {\bf th\_\-quant\_\-info} {\bf TH\_\-VP31\_\-QUANT\_\-INFO}
+\begin{DoxyCompactList}\small\item\em The quantization parameters used by VP3. \item\end{DoxyCompactList}\item
+const {\bf th\_\-huff\_\-code} {\bf TH\_\-VP31\_\-HUFF\_\-CODES} [TH\_\-NHUFFMAN\_\-TABLES][TH\_\-NDCT\_\-TOKENS]
+\begin{DoxyCompactList}\small\item\em The Huffman tables used by VP3. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+The {\ttfamily libtheoraenc} C encoding API.
+
+\subsection{Define Documentation}
+\index{theoraenc.h@{theoraenc.h}!\_\-O\_\-THEORA\_\-THEORAENC\_\-H\_\-@{\_\-O\_\-THEORA\_\-THEORAENC\_\-H\_\-}}
+\index{\_\-O\_\-THEORA\_\-THEORAENC\_\-H\_\-@{\_\-O\_\-THEORA\_\-THEORAENC\_\-H\_\-}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{\_\-O\_\-THEORA\_\-THEORAENC\_\-H\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-O\_\-THEORA\_\-THEORAENC\_\-H\_\-~(1)}\label{theoraenc_8h_ab915dd90f069a2431454fd62365e9381}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-2PASS\_\-IN@{TH\_\-ENCCTL\_\-2PASS\_\-IN}}
+\index{TH\_\-ENCCTL\_\-2PASS\_\-IN@{TH\_\-ENCCTL\_\-2PASS\_\-IN}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-2PASS\_\-IN}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-2PASS\_\-IN~(26)}\label{theoraenc_8h_a4a84f982cdd9a3e3c803a29bbde9df0b}
+
+
+Submits two-\/pass encoding metric data collected the first encoding pass to the second pass. The first call must be made before the first frame is encoded, and a target bitrate must have already been specified to the encoder. It sets the encoder to pass 2 mode implicitly; this cannot be disabled. The encoder may require reading data from some or all of the frames in advance, depending on, e.g., the reservoir size used in the second pass. You must call this function repeatedly before each frame to provide data until either a) it fails to consume all of the data presented or b) all of the pass 1 data has been consumed. In the first case, you must save the remaining data to be presented after the next frame. You can call this function with a NULL argument to get an upper bound on the number of bytes that will be required before the next frame.
+
+When pass 2 is first enabled, the default bit reservoir is set to the entire file; this gives maximum flexibility but can lead to very high peak rates. You can subsequently set it to another value with \doxyref{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-BUFFER}{p.}{theoraenc_8h_aaefb515876b2a180ad5c3120fc584a52} (e.g., to set it to the keyframe interval for non-\/live streaming), however, you may then need to provide more data before the next frame.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily char[]}: A buffer containing the data returned by \doxyref{TH\_\-ENCCTL\_\-2PASS\_\-OUT}{p.}{theoraenc_8h_ac3751b9c3838888ec2e3f0b0d2823282} in pass 1. You may pass {\ttfamily NULL} for {\itshape \_\-buf\/} to return an upper bound on the number of additional bytes needed before the next frame. The summary data returned at the end of pass 1 must be at the head of the buffer on the first call with a non-\/{\ttfamily NULL} {\itshape \_\-buf\/}, and the placeholder data returned at the start of pass 1 should be omitted. After each call you should advance this buffer by the number of bytes consumed. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em $>$0}]The number of bytes of metric data required/consumed. \item[{\em 0}]No more data is required before the next frame. \item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]No target bitrate has been set, or the first call was made after the first frame was submitted for encoding. \item[{\em TH\_\-ENOTFORMAT}]The data did not appear to be pass 1 from a compatible implementation of this library. \item[{\em TH\_\-EBADHEADER}]The data was invalid; this may be returned when attempting to read an aborted pass 1 file that still has the placeholder data in place of the summary data. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-2PASS\_\-OUT@{TH\_\-ENCCTL\_\-2PASS\_\-OUT}}
+\index{TH\_\-ENCCTL\_\-2PASS\_\-OUT@{TH\_\-ENCCTL\_\-2PASS\_\-OUT}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-2PASS\_\-OUT}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-2PASS\_\-OUT~(24)}\label{theoraenc_8h_ac3751b9c3838888ec2e3f0b0d2823282}
+
+
+Enable pass 1 of two-\/pass encoding mode and retrieve the first pass metrics. Pass 1 mode must be enabled before the first frame is encoded, and a target bitrate must have already been specified to the encoder. Although this does not have to be the exact rate that will be used in the second pass, closer values may produce better results. The first call returns the size of the two-\/pass header data, along with some placeholder content, and sets the encoder into pass 1 mode implicitly. This call sets the encoder to pass 1 mode implicitly. Then, a subsequent call must be made after each call to \doxyref{th\_\-encode\_\-ycbcr\_\-in()}{p.}{group__encfuncs_gadbe7dd66b411c2d61ab8153c15308750} to retrieve the metrics for that frame. An additional, final call must be made to retrieve the summary data, containing such information as the total number of frames, etc. This must be stored in place of the placeholder data that was returned in the first call, before the frame metrics data. All of this data must be presented back to the encoder during pass 2 using \doxyref{TH\_\-ENCCTL\_\-2PASS\_\-IN}{p.}{theoraenc_8h_a4a84f982cdd9a3e3c803a29bbde9df0b}.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\rightarrow$} {\em $<$tt$>$char}]$\ast$\_\-buf: Returns a pointer to internal storage containing the two pass metrics data. This storage is only valid until the next call, or until the encoder context is freed, and must be copied by the application. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em $>$=0}]The number of bytes of metric data available in the returned buffer. \item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(char $\ast$)}, no target bitrate has been set, or the first call was made after the first frame was submitted for encoding. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-GET\_\-SPLEVEL@{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL}}
+\index{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL@{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-GET\_\-SPLEVEL~(16)}\label{theoraenc_8h_a114b7c552f50b7b8d881a39489af1f61}
+
+
+Gets the current speed level. The default speed level may vary according to encoder implementation, but if this control code is not supported (it returns \doxyref{TH\_\-EIMPL}{p.}{codec_8h_a921c47accc17841f220af5a6afb79efe}), the default may be assumed to be the slowest available speed (0). The maximum encoding speed level may be implementation-\/ and encoding mode-\/specific, and can be obtained via \doxyref{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}{p.}{theoraenc_8h_a9baf5bdd206e80c78a8fd44687e89783}.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\rightarrow$} {\em \_\-buf}]{\ttfamily int}: The current encoding speed level. 0 is slowest, larger values use less CPU. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation in the current encoding mode. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX@{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}}
+\index{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX@{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX~(12)}\label{theoraenc_8h_a9baf5bdd206e80c78a8fd44687e89783}
+
+
+Gets the maximum speed level. Higher speed levels favor quicker encoding over better quality per bit. Depending on the encoding mode, and the internal algorithms used, quality may actually improve, but in this case bitrate will also likely increase. In any case, overall rate/distortion performance will probably decrease. The maximum value, and the meaning of each value, may change depending on the current encoding mode (VBR vs. constant quality, etc.).
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\rightarrow$} {\em \_\-buf}]{\ttfamily int}: The maximum encoding speed level. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation in the current encoding mode. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-BITRATE@{TH\_\-ENCCTL\_\-SET\_\-BITRATE}}
+\index{TH\_\-ENCCTL\_\-SET\_\-BITRATE@{TH\_\-ENCCTL\_\-SET\_\-BITRATE}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-BITRATE}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-BITRATE~(30)}\label{theoraenc_8h_a9b969df55ecad1acd1ae207fad42592e}
+
+
+Sets the current encoding bitrate. Once a bitrate is set, the encoder must use a rate-\/controlled mode for all future frames (this restriction may be relaxed in a future version). If it is set before the headers are emitted, the target bitrate encoded in them will be updated. Due to the buffer delay, the exact bitrate of each section of the encode is not guaranteed. The encoder may have already used more bits than allowed for the frames it has encoded, expecting to make them up in future frames, or it may have used fewer, holding the excess in reserve. The exact transition between the two bitrates is not well-\/defined by this API, but may be affected by flags set with \doxyref{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS}{p.}{theoraenc_8h_a026502e08fbe1af0a1063f39bd18129c}. After a number of frames equal to the buffer delay, one may expect further output to average at the target bitrate.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily long}: The new target bitrate, in bits per second. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success. \item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]The target bitrate was not positive. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-DUP\_\-COUNT@{TH\_\-ENCCTL\_\-SET\_\-DUP\_\-COUNT}}
+\index{TH\_\-ENCCTL\_\-SET\_\-DUP\_\-COUNT@{TH\_\-ENCCTL\_\-SET\_\-DUP\_\-COUNT}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-DUP\_\-COUNT}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-DUP\_\-COUNT~(18)}\label{theoraenc_8h_a8bb9b05471c42a09f8684a2583b8a1df}
+
+
+Sets the number of duplicates of the next frame to produce. Although libtheora can encode duplicate frames very cheaply, it costs some amount of CPU to detect them, and a run of duplicates cannot span a keyframe boundary. This control code tells the encoder to produce the specified number of extra duplicates of the next frame. This allows the encoder to make smarter keyframe placement decisions and rate control decisions, and reduces CPU usage as well, when compared to just submitting the same frame for encoding multiple times. This setting only applies to the next frame submitted for encoding. You MUST call \doxyref{th\_\-encode\_\-packetout()}{p.}{group__encfuncs_ga96d8ac1dda53187455352f99bbb5b04b} repeatedly until it returns 0, or the extra duplicate frames will be lost.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily int}: The number of duplicates to produce. If this is negative or zero, no duplicates will be produced. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)}, or the number of duplicates is greater than or equal to the maximum keyframe interval. In the latter case, NO duplicate frames will be produced. You must ensure that the maximum keyframe interval is set larger than the maximum number of duplicates you will ever wish to insert prior to encoding. \item[{\em TH\_\-EIMPL}]Not supported by this implementation in the current encoding mode. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-HUFFMAN\_\-CODES@{TH\_\-ENCCTL\_\-SET\_\-HUFFMAN\_\-CODES}}
+\index{TH\_\-ENCCTL\_\-SET\_\-HUFFMAN\_\-CODES@{TH\_\-ENCCTL\_\-SET\_\-HUFFMAN\_\-CODES}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-HUFFMAN\_\-CODES}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-HUFFMAN\_\-CODES~(0)}\label{theoraenc_8h_a0165348788e560a19b7c61ae8f0c2283}
+
+
+Sets the Huffman tables to use. The tables are copied, not stored by reference, so they can be freed after this call. {\ttfamily NULL} may be specified to revert to the default tables.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily \doxyref{th\_\-huff\_\-code}{p.}{structth__huff__code}[\doxyref{TH\_\-NHUFFMAN\_\-TABLES}{p.}{codec_8h_a49bf449eae33c5320f0c308f32c6ae42}][\doxyref{TH\_\-NDCT\_\-TOKENS}{p.}{codec_8h_a2a44f48084e76a58cae48fb5d47cd422}]} \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]Encoding has already begun or one or more of the given tables is not full or prefix-\/free, {\itshape \_\-buf\/} is {\ttfamily NULL} and {\itshape \_\-buf\_\-sz\/} is not zero, or {\itshape \_\-buf\/} is non-\/{\ttfamily NULL} and {\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(\doxyref{th\_\-huff\_\-code}{p.}{structth__huff__code})$\ast$\doxyref{TH\_\-NHUFFMAN\_\-TABLES}{p.}{codec_8h_a49bf449eae33c5320f0c308f32c6ae42}$\ast$\doxyref{TH\_\-NDCT\_\-TOKENS}{p.}{codec_8h_a2a44f48084e76a58cae48fb5d47cd422}}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE@{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}}
+\index{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE@{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE~(4)}\label{theoraenc_8h_a27e755e15b4b5604c54974b304037a49}
+
+
+Sets the maximum distance between key frames. This can be changed during an encode, but will be bounded by {\ttfamily 1$<$$<$\doxyref{th\_\-info::keyframe\_\-granule\_\-shift}{p.}{structth__info_a693ca4ab11fbc0c3f32594b4bb8766ed}}. If it is set before encoding begins, \doxyref{th\_\-info::keyframe\_\-granule\_\-shift}{p.}{structth__info_a693ca4ab11fbc0c3f32594b4bb8766ed} will be enlarged appropriately.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily ogg\_\-uint32\_\-t}: The maximum distance between key frames. \item[\mbox{$\rightarrow$} {\em \_\-buf}]{\ttfamily ogg\_\-uint32\_\-t}: The actual maximum distance set. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(ogg\_\-uint32\_\-t)}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-QUALITY@{TH\_\-ENCCTL\_\-SET\_\-QUALITY}}
+\index{TH\_\-ENCCTL\_\-SET\_\-QUALITY@{TH\_\-ENCCTL\_\-SET\_\-QUALITY}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-QUALITY}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-QUALITY~(28)}\label{theoraenc_8h_aac087983fa951b9148c9db6bc2e81ef4}
+
+
+Sets the current encoding quality. This is only valid so long as no bitrate has been specified, either through the \doxyref{th\_\-info}{p.}{structth__info} struct used to initialize the encoder or through \doxyref{TH\_\-ENCCTL\_\-SET\_\-BITRATE}{p.}{theoraenc_8h_a9b969df55ecad1acd1ae207fad42592e} (this restriction may be relaxed in a future version). If it is set before the headers are emitted, the target quality encoded in them will be updated.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily int}: The new target quality, in the range 0...63, inclusive. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success. \item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]A target bitrate has already been specified, or the quality index was not in the range 0...63. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS@{TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}}
+\index{TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS@{TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS~(2)}\label{theoraenc_8h_a3befcdd66678f8d27034f9c4b16d1b9c}
+
+
+Sets the quantization parameters to use. The parameters are copied, not stored by reference, so they can be freed after this call. {\ttfamily NULL} may be specified to revert to the default parameters.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]\doxyref{th\_\-quant\_\-info}{p.}{structth__quant__info} \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]Encoding has already begun, {\itshape \_\-buf\/} is {\ttfamily NULL} and {\itshape \_\-buf\_\-sz\/} is not zero, or {\itshape \_\-buf\/} is non-\/{\ttfamily NULL} and {\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(\doxyref{th\_\-quant\_\-info}{p.}{structth__quant__info})}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-RATE\_\-BUFFER@{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-BUFFER}}
+\index{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-BUFFER@{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-BUFFER}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-BUFFER}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-RATE\_\-BUFFER~(22)}\label{theoraenc_8h_aaefb515876b2a180ad5c3120fc584a52}
+
+
+Sets the size of the bitrate management bit reservoir as a function of number of frames. The reservoir size affects how quickly bitrate management reacts to instantaneous changes in the video complexity. Larger reservoirs react more slowly, and provide better overall quality, but require more buffering by a client, adding more latency to live streams. By default, libtheora sets the reservoir to the maximum distance between keyframes, subject to a minimum and maximum limit. This call may be used to increase or decrease the reservoir, increasing or decreasing the allowed temporary variance in bitrate. An implementation may impose some limits on the size of a reservoir it can handle, in which case the actual reservoir size may not be exactly what was requested. The actual value set will be returned.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily int}: Requested size of the reservoir measured in frames. \item[\mbox{$\rightarrow$} {\em \_\-buf}]{\ttfamily int}: The actual size of the reservoir set. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)}, or rate control is not enabled. The buffer has an implementation defined minimum and maximum size and the value in \_\-buf will be adjusted to match the actual value set. \item[{\em TH\_\-EIMPL}]Not supported by this implementation in the current encoding mode. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS@{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS}}
+\index{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS@{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS~(20)}\label{theoraenc_8h_a026502e08fbe1af0a1063f39bd18129c}
+
+
+Modifies the default bitrate management behavior. Use to allow or disallow frame dropping, and to enable or disable capping bit reservoir overflows and underflows. See \doxyref{the list of available flags}{p.}{theoraenc_8h_encctlcodes}. The flags are set by default to {\ttfamily \doxyref{TH\_\-RATECTL\_\-DROP\_\-FRAMES}{p.}{theoraenc_8h_a3e7fab53b902b54135522ba286f45e33}$|$\doxyref{TH\_\-RATECTL\_\-CAP\_\-OVERFLOW}{p.}{theoraenc_8h_a32f9983b344a431334493cefb0b9337c}}.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily int}: Any combination of \doxyref{the available flags}{p.}{theoraenc_8h_ratectlflags}:
+\begin{DoxyItemize}
+\item \doxyref{TH\_\-RATECTL\_\-DROP\_\-FRAMES}{p.}{theoraenc_8h_a3e7fab53b902b54135522ba286f45e33}: Enable frame dropping.
+\item \doxyref{TH\_\-RATECTL\_\-CAP\_\-OVERFLOW}{p.}{theoraenc_8h_a32f9983b344a431334493cefb0b9337c}: Don't bank excess bits for later use.
+\item \doxyref{TH\_\-RATECTL\_\-CAP\_\-UNDERFLOW}{p.}{theoraenc_8h_ad0d62d9dce542caf5296b03b97e020a6}: Don't try to make up shortfalls later.
+\end{DoxyItemize}\end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)} or rate control is not enabled. \item[{\em TH\_\-EIMPL}]Not supported by this implementation in the current encoding mode. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-SPLEVEL@{TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}}
+\index{TH\_\-ENCCTL\_\-SET\_\-SPLEVEL@{TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-SPLEVEL~(14)}\label{theoraenc_8h_abd9fbcb6a25a77d991d3620164fe59d6}
+
+
+Sets the speed level. The current speed level may be retrieved using \doxyref{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL}{p.}{theoraenc_8h_a114b7c552f50b7b8d881a39489af1f61}.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily int}: The new encoding speed level. 0 is slowest, larger values use less CPU. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)}, or the encoding speed level is out of bounds. The maximum encoding speed level may be implementation-\/ and encoding mode-\/specific, and can be obtained via \doxyref{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}{p.}{theoraenc_8h_a9baf5bdd206e80c78a8fd44687e89783}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation in the current encoding mode. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE@{TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}}
+\index{TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE@{TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE~(10)}\label{theoraenc_8h_a382d685a39a34d8e6ba76b00d804efd8}
+
+
+Disables any encoder features that would prevent lossless transcoding back to VP3. This primarily means disabling block-\/adaptive quantization and always coding all four luma blocks in a macro block when 4MV is used. It also includes using the VP3 quantization tables and Huffman codes; if you set them explicitly after calling this function, the resulting stream will not be VP3-\/compatible. If you enable VP3-\/compatibility when encoding 4:2:2 or 4:4:4 source material, or when using a picture region smaller than the full frame (e.g. a non-\/multiple-\/of-\/16 width or height), then non-\/VP3 bitstream features will still be disabled, but the stream will still not be VP3-\/compatible, as VP3 was not capable of encoding such formats. If you call this after encoding has already begun, then the quantization tables and codebooks cannot be changed, but the frame-\/level features will be enabled or disabled as requested.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily int}: a non-\/zero value to enable VP3 compatibility, or 0 to disable it (the default). \item[\mbox{$\rightarrow$} {\em \_\-buf}]{\ttfamily int}: 1 if all bitstream features required for VP3-\/compatibility could be set, and 0 otherwise. The latter will be returned if the pixel format is not 4:2:0, the picture region is smaller than the full frame, or if encoding has begun, preventing the quantization tables and codebooks from being set. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-RATECTL\_\-CAP\_\-OVERFLOW@{TH\_\-RATECTL\_\-CAP\_\-OVERFLOW}}
+\index{TH\_\-RATECTL\_\-CAP\_\-OVERFLOW@{TH\_\-RATECTL\_\-CAP\_\-OVERFLOW}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-RATECTL\_\-CAP\_\-OVERFLOW}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-RATECTL\_\-CAP\_\-OVERFLOW~(0x2)}\label{theoraenc_8h_a32f9983b344a431334493cefb0b9337c}
+
+
+Ignore bitrate buffer overflows. If the encoder uses so few bits that the reservoir of available bits overflows, ignore the excess. The encoder will not try to use these extra bits in future frames. At high rates this may cause the result to be undersized, but allows a client to play the stream using a finite buffer; it should normally be enabled. \index{theoraenc.h@{theoraenc.h}!TH\_\-RATECTL\_\-CAP\_\-UNDERFLOW@{TH\_\-RATECTL\_\-CAP\_\-UNDERFLOW}}
+\index{TH\_\-RATECTL\_\-CAP\_\-UNDERFLOW@{TH\_\-RATECTL\_\-CAP\_\-UNDERFLOW}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-RATECTL\_\-CAP\_\-UNDERFLOW}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-RATECTL\_\-CAP\_\-UNDERFLOW~(0x4)}\label{theoraenc_8h_ad0d62d9dce542caf5296b03b97e020a6}
+
+
+Ignore bitrate buffer underflows. If the encoder uses so many bits that the reservoir of available bits underflows, ignore the deficit. The encoder will not try to make up these extra bits in future frames. At low rates this may cause the result to be oversized; it should normally be disabled. \index{theoraenc.h@{theoraenc.h}!TH\_\-RATECTL\_\-DROP\_\-FRAMES@{TH\_\-RATECTL\_\-DROP\_\-FRAMES}}
+\index{TH\_\-RATECTL\_\-DROP\_\-FRAMES@{TH\_\-RATECTL\_\-DROP\_\-FRAMES}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-RATECTL\_\-DROP\_\-FRAMES}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-RATECTL\_\-DROP\_\-FRAMES~(0x1)}\label{theoraenc_8h_a3e7fab53b902b54135522ba286f45e33}
+
+
+Drop frames to keep within bitrate buffer constraints. This can have a severe impact on quality, but is the only way to ensure that bitrate targets are met at low rates during sudden bursts of activity.
+
+\subsection{Typedef Documentation}
+\index{theoraenc.h@{theoraenc.h}!th\_\-enc\_\-ctx@{th\_\-enc\_\-ctx}}
+\index{th\_\-enc\_\-ctx@{th\_\-enc\_\-ctx}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{th\_\-enc\_\-ctx}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf th\_\-enc\_\-ctx} {\bf th\_\-enc\_\-ctx}}\label{theoraenc_8h_af5cc40472b925456d42526a035d66edd}
+
+
+The encoder context.
+
+\subsection{Variable Documentation}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-VP31\_\-HUFF\_\-CODES@{TH\_\-VP31\_\-HUFF\_\-CODES}}
+\index{TH\_\-VP31\_\-HUFF\_\-CODES@{TH\_\-VP31\_\-HUFF\_\-CODES}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-VP31\_\-HUFF\_\-CODES}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf th\_\-huff\_\-code} {\bf TH\_\-VP31\_\-HUFF\_\-CODES}[TH\_\-NHUFFMAN\_\-TABLES][TH\_\-NDCT\_\-TOKENS]}\label{theoraenc_8h_aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e}
+
+
+The Huffman tables used by VP3. \index{theoraenc.h@{theoraenc.h}!TH\_\-VP31\_\-QUANT\_\-INFO@{TH\_\-VP31\_\-QUANT\_\-INFO}}
+\index{TH\_\-VP31\_\-QUANT\_\-INFO@{TH\_\-VP31\_\-QUANT\_\-INFO}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-VP31\_\-QUANT\_\-INFO}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf th\_\-quant\_\-info} {\bf TH\_\-VP31\_\-QUANT\_\-INFO}}\label{theoraenc_8h_a3b1b462989f4e7a5a98e6e697f1a7f7d}
+
+
+The quantization parameters used by VP3. \ No newline at end of file
diff --git a/doc/spec/Makefile.am b/doc/spec/Makefile.am
new file mode 100644
index 0000000..3a181a2
--- /dev/null
+++ b/doc/spec/Makefile.am
@@ -0,0 +1,83 @@
+## Process this file with automake to produce Makefile.in
+
+# makefile to generate the spec document from sources
+# requires transfig and pdflatex
+
+docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)
+
+built_docs = Theora.pdf
+
+if BUILD_SPEC
+doc_DATA = $(built_docs)
+endif
+
+SPEC_SRCS = spec.tex spec.bib
+
+FIG_SRCS = pic-frame.fig hilbert-mb.fig hilbert-block.fig xifish.fig \
+ superblock.fig macroblock.fig raster-block.fig reference-frames.fig \
+ pixel444.fig pixel422.fig pixel420.fig idct.fig fdct.fig \
+ pic_even.fig pic_even_odd.fig pic_odd.fig pic_odd_even.fig \
+ lflim.fig
+
+FIG_TEXS = $(FIG_SRCS:.fig=.tex)
+FIG_AUXS = $(FIG_SRCS:.fig=.aux)
+FIG_PDFS = $(FIG_SRCS:.fig=.pdf)
+
+# add any native-pdf figures here
+FIG_OBJS = $(FIG_PDFS)
+
+EXTRA_DIST = $(built_docs) $(SPEC_SRCS) $(FIG_SRCS) ltablex.sty
+
+if BUILD_SPEC
+# latex three times is the charm with references
+# long tables require the .aux file to start from scratch
+Theora.pdf : $(SPEC_SRCS) $(FIG_OBJS) vp3huff.tex spec.bib
+ -$(RM) spec.aux
+ pdflatex -interaction nonstopmode spec.tex
+ bibtex spec.aux
+ pdflatex -interaction nonstopmode spec.tex
+ pdflatex -interaction nonstopmode spec.tex
+ mv spec.pdf $@
+else
+Theora.pdf :
+ echo "*** Warning: Missing tools; $@ will not be built."
+endif
+
+vp3huff.tex : vp3huff
+ ./vp3huff > $@
+
+noinst_PROGRAMS = vp3huff
+vp3huff_SOURCES = vp3huff.c
+
+figures : $(FIG_OBJS)
+
+# rules to generate latex and pdf versions of the xfig figures
+.fig.tex:
+ fig2dev -L latex $< $@
+
+.fig.pdf:
+ fig2dev -L pdf -p 0 $< $@
+
+SUFFIXES = .fig .tex .pdf
+
+# clean targets
+clean-local:
+ -$(RM) $(FIG_TEXS)
+ -$(RM) $(FIG_AUXS)
+ -$(RM) $(FIG_PDFS)
+ -$(RM) vp3huff
+ -$(RM) vp3huff.tex
+ -$(RM) vp3huff.aux
+ -$(RM) spec.aux
+ -$(RM) spec.log
+ -$(RM) spec.lof
+ -$(RM) spec.lot
+ -$(RM) spec.out
+ -$(RM) spec.bbl
+ -$(RM) spec.blg
+ -$(RM) spec.toc
+
+maintainer-clean-local:
+ -$(RM) $(built_docs)
+
+maintainerclean: maintainer-clean
diff --git a/doc/spec/Makefile.in b/doc/spec/Makefile.in
new file mode 100644
index 0000000..6bde8fc
--- /dev/null
+++ b/doc/spec/Makefile.in
@@ -0,0 +1,498 @@
+# Makefile.in generated by automake 1.6.3 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# makefile to generate the spec document from sources
+# requires transfig and pdflatex
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+bindir = @bindir@
+sbindir = @sbindir@
+libexecdir = @libexecdir@
+datadir = @datadir@
+sysconfdir = @sysconfdir@
+sharedstatedir = @sharedstatedir@
+localstatedir = @localstatedir@
+libdir = @libdir@
+infodir = @infodir@
+mandir = @mandir@
+includedir = @includedir@
+oldincludedir = /usr/include
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = @program_transform_name@
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_alias = @host_alias@
+host_triplet = @host@
+
+EXEEXT = @EXEEXT@
+OBJEXT = @OBJEXT@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMTAR = @AMTAR@
+AR = @AR@
+ARGZ_H = @ARGZ_H@
+AS = @AS@
+AWK = @AWK@
+BUILDABLE_EXAMPLES = @BUILDABLE_EXAMPLES@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CC = @CC@
+CPP = @CPP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+DEBUG = @DEBUG@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+F77 = @F77@
+GCJ = @GCJ@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_OBJS = @GETOPT_OBJS@
+GREP = @GREP@
+HAVE_BIBTEX = @HAVE_BIBTEX@
+HAVE_DOXYGEN = @HAVE_DOXYGEN@
+HAVE_PDFLATEX = @HAVE_PDFLATEX@
+HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
+HAVE_TRANSFIG = @HAVE_TRANSFIG@
+HAVE_VALGRIND = @HAVE_VALGRIND@
+INCLTDL = @INCLTDL@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LIBADD_DL = @LIBADD_DL@
+LIBADD_DLD_LINK = @LIBADD_DLD_LINK@
+LIBADD_DLOPEN = @LIBADD_DLOPEN@
+LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@
+LIBLTDL = @LIBLTDL@
+LIBM = @LIBM@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTDLDEPS = @LTDLDEPS@
+LTDLINCL = @LTDLINCL@
+LTDLOPEN = @LTDLOPEN@
+LT_CONFIG_H = @LT_CONFIG_H@
+LT_DLLOADERS = @LT_DLLOADERS@
+LT_DLPREOPEN = @LT_DLPREOPEN@
+MAINT = @MAINT@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+OSS_LIBS = @OSS_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PKG_CONFIG = @PKG_CONFIG@
+PNG_CFLAGS = @PNG_CFLAGS@
+PNG_LIBS = @PNG_LIBS@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+RC = @RC@
+SDL_CFLAGS = @SDL_CFLAGS@
+SDL_CONFIG = @SDL_CONFIG@
+SDL_LIBS = @SDL_LIBS@
+SED = @SED@
+STRIP = @STRIP@
+THDEC_LIB_AGE = @THDEC_LIB_AGE@
+THDEC_LIB_CURRENT = @THDEC_LIB_CURRENT@
+THDEC_LIB_REVISION = @THDEC_LIB_REVISION@
+THENC_LIB_AGE = @THENC_LIB_AGE@
+THENC_LIB_CURRENT = @THENC_LIB_CURRENT@
+THENC_LIB_REVISION = @THENC_LIB_REVISION@
+THEORADEC_LDFLAGS = @THEORADEC_LDFLAGS@
+THEORAENC_LDFLAGS = @THEORAENC_LDFLAGS@
+THEORA_LDFLAGS = @THEORA_LDFLAGS@
+TH_LIB_AGE = @TH_LIB_AGE@
+TH_LIB_CURRENT = @TH_LIB_CURRENT@
+TH_LIB_REVISION = @TH_LIB_REVISION@
+VALGRIND_ENVIRONMENT = @VALGRIND_ENVIRONMENT@
+VERSION = @VERSION@
+VORBISENC_LIBS = @VORBISENC_LIBS@
+VORBISFILE_LIBS = @VORBISFILE_LIBS@
+VORBIS_CFLAGS = @VORBIS_CFLAGS@
+VORBIS_LIBS = @VORBIS_LIBS@
+am__include = @am__include@
+am__quote = @am__quote@
+install_sh = @install_sh@
+lt_ECHO = @lt_ECHO@
+ltdl_LIBOBJS = @ltdl_LIBOBJS@
+ltdl_LTLIBOBJS = @ltdl_LTLIBOBJS@
+sys_symbol_underscore = @sys_symbol_underscore@
+
+docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)
+
+built_docs = Theora.pdf
+
+@BUILD_SPEC_TRUE@doc_DATA = $(built_docs)
+
+SPEC_SRCS = spec.tex spec.bib
+
+FIG_SRCS = pic-frame.fig hilbert-mb.fig hilbert-block.fig xifish.fig \
+ superblock.fig macroblock.fig raster-block.fig reference-frames.fig \
+ pixel444.fig pixel422.fig pixel420.fig idct.fig fdct.fig \
+ pic_even.fig pic_even_odd.fig pic_odd.fig pic_odd_even.fig \
+ lflim.fig
+
+
+FIG_TEXS = $(FIG_SRCS:.fig=.tex)
+FIG_AUXS = $(FIG_SRCS:.fig=.aux)
+FIG_PDFS = $(FIG_SRCS:.fig=.pdf)
+
+# add any native-pdf figures here
+FIG_OBJS = $(FIG_PDFS)
+
+EXTRA_DIST = $(built_docs) $(SPEC_SRCS) $(FIG_SRCS) ltablex.sty
+
+noinst_PROGRAMS = vp3huff
+vp3huff_SOURCES = vp3huff.c
+
+SUFFIXES = .fig .tex .pdf
+subdir = doc/spec
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+noinst_PROGRAMS = vp3huff$(EXEEXT)
+PROGRAMS = $(noinst_PROGRAMS)
+
+am_vp3huff_OBJECTS = vp3huff.$(OBJEXT)
+vp3huff_OBJECTS = $(am_vp3huff_OBJECTS)
+vp3huff_LDADD = $(LDADD)
+vp3huff_DEPENDENCIES =
+vp3huff_LDFLAGS =
+
+DEFS = @DEFS@
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+CPPFLAGS = @CPPFLAGS@
+LDFLAGS = @LDFLAGS@
+LIBS = @LIBS@
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/vp3huff.Po
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+ $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+CFLAGS = @CFLAGS@
+DIST_SOURCES = $(vp3huff_SOURCES)
+DATA = $(doc_DATA)
+
+DIST_COMMON = Makefile.am Makefile.in
+SOURCES = $(vp3huff_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .fig .tex .pdf .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/spec/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-noinstPROGRAMS:
+ @list='$(noinst_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+vp3huff$(EXEEXT): $(vp3huff_OBJECTS) $(vp3huff_DEPENDENCIES)
+ @rm -f vp3huff$(EXEEXT)
+ $(LINK) $(vp3huff_LDFLAGS) $(vp3huff_OBJECTS) $(vp3huff_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vp3huff.Po@am__quote@
+
+distclean-depend:
+ -rm -rf ./$(DEPDIR)
+
+.c.o:
+@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(COMPILE) -c `cygpath -w $<`
+
+.c.lo:
+@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+CCDEPMODE = @CCDEPMODE@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+docDATA_INSTALL = $(INSTALL_DATA)
+install-docDATA: $(doc_DATA)
+ @$(NORMAL_INSTALL)
+ $(mkinstalldirs) $(DESTDIR)$(docdir)
+ @list='$(doc_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f="`echo $$p | sed -e 's|^.*/||'`"; \
+ echo " $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f"; \
+ $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f; \
+ done
+
+uninstall-docDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(doc_DATA)'; for p in $$list; do \
+ f="`echo $$p | sed -e 's|^.*/||'`"; \
+ echo " rm -f $(DESTDIR)$(docdir)/$$f"; \
+ rm -f $(DESTDIR)$(docdir)/$$f; \
+ done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+ @list='$(DISTFILES)'; for file in $$list; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS) $(DATA)
+
+installdirs:
+ $(mkinstalldirs) $(DESTDIR)$(docdir)
+
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local clean-noinstPROGRAMS \
+ mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-compile distclean-depend \
+ distclean-generic distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-docDATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+uninstall-am: uninstall-docDATA uninstall-info-am
+
+.PHONY: GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-local clean-noinstPROGRAMS distclean \
+ distclean-compile distclean-depend distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am info \
+ info-am install install-am install-data install-data-am \
+ install-docDATA install-exec install-exec-am install-info \
+ install-info-am install-man install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic maintainer-clean-local mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ tags uninstall uninstall-am uninstall-docDATA uninstall-info-am
+
+
+# latex three times is the charm with references
+# long tables require the .aux file to start from scratch
+@BUILD_SPEC_TRUE@Theora.pdf : $(SPEC_SRCS) $(FIG_OBJS) vp3huff.tex spec.bib
+@BUILD_SPEC_TRUE@ -$(RM) spec.aux
+@BUILD_SPEC_TRUE@ pdflatex -interaction nonstopmode spec.tex
+@BUILD_SPEC_TRUE@ bibtex spec.aux
+@BUILD_SPEC_TRUE@ pdflatex -interaction nonstopmode spec.tex
+@BUILD_SPEC_TRUE@ pdflatex -interaction nonstopmode spec.tex
+@BUILD_SPEC_TRUE@ mv spec.pdf $@
+@BUILD_SPEC_FALSE@Theora.pdf :
+@BUILD_SPEC_FALSE@ echo "*** Warning: Missing tools; $@ will not be built."
+
+vp3huff.tex : vp3huff
+ ./vp3huff > $@
+
+figures : $(FIG_OBJS)
+
+# rules to generate latex and pdf versions of the xfig figures
+.fig.tex:
+ fig2dev -L latex $< $@
+
+.fig.pdf:
+ fig2dev -L pdf -p 0 $< $@
+
+# clean targets
+clean-local:
+ -$(RM) $(FIG_TEXS)
+ -$(RM) $(FIG_AUXS)
+ -$(RM) $(FIG_PDFS)
+ -$(RM) vp3huff
+ -$(RM) vp3huff.tex
+ -$(RM) vp3huff.aux
+ -$(RM) spec.aux
+ -$(RM) spec.log
+ -$(RM) spec.lof
+ -$(RM) spec.lot
+ -$(RM) spec.out
+ -$(RM) spec.bbl
+ -$(RM) spec.blg
+ -$(RM) spec.toc
+
+maintainer-clean-local:
+ -$(RM) $(built_docs)
+
+maintainerclean: maintainer-clean
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/spec/Theora.pdf b/doc/spec/Theora.pdf
new file mode 100644
index 0000000..9e1e3be
--- /dev/null
+++ b/doc/spec/Theora.pdf
@@ -0,0 +1,20770 @@
+%PDF-1.4
+%ÐÔÅØ
+5 0 obj
+<< /S /GoTo /D (chapter.1) >>
+endobj
+8 0 obj
+(Introduction)
+endobj
+9 0 obj
+<< /S /GoTo /D (section.1.1) >>
+endobj
+12 0 obj
+(VP3 and Theora)
+endobj
+13 0 obj
+<< /S /GoTo /D (section.1.2) >>
+endobj
+16 0 obj
+(Video Formats)
+endobj
+17 0 obj
+<< /S /GoTo /D (section.1.3) >>
+endobj
+20 0 obj
+(Classification)
+endobj
+21 0 obj
+<< /S /GoTo /D (section.1.4) >>
+endobj
+24 0 obj
+(Assumptions)
+endobj
+25 0 obj
+<< /S /GoTo /D (section.1.5) >>
+endobj
+28 0 obj
+(Codec Setup and Probability Model)
+endobj
+29 0 obj
+<< /S /GoTo /D (section.1.6) >>
+endobj
+32 0 obj
+(Format Conformance)
+endobj
+33 0 obj
+<< /S /GoTo /D (chapter.2) >>
+endobj
+36 0 obj
+(Coded Video Structure)
+endobj
+37 0 obj
+<< /S /GoTo /D (section.2.1) >>
+endobj
+40 0 obj
+(Frame Layout)
+endobj
+41 0 obj
+<< /S /GoTo /D (section.2.2) >>
+endobj
+44 0 obj
+(Picture Region)
+endobj
+45 0 obj
+<< /S /GoTo /D (section.2.3) >>
+endobj
+48 0 obj
+(Blocks and Super Blocks)
+endobj
+49 0 obj
+<< /S /GoTo /D (section.2.4) >>
+endobj
+52 0 obj
+(Macro Blocks)
+endobj
+53 0 obj
+<< /S /GoTo /D (section.2.5) >>
+endobj
+56 0 obj
+(Coding Modes and Prediction)
+endobj
+57 0 obj
+<< /S /GoTo /D (section.2.6) >>
+endobj
+60 0 obj
+(DCT Coefficients)
+endobj
+61 0 obj
+<< /S /GoTo /D (chapter.3) >>
+endobj
+64 0 obj
+(Decoding Overview)
+endobj
+65 0 obj
+<< /S /GoTo /D (section.3.1) >>
+endobj
+68 0 obj
+(Decoder Configuration)
+endobj
+69 0 obj
+<< /S /GoTo /D (subsection.3.1.1) >>
+endobj
+72 0 obj
+(Global Configuration)
+endobj
+73 0 obj
+<< /S /GoTo /D (subsection.3.1.2) >>
+endobj
+76 0 obj
+(Quantization Matrices)
+endobj
+77 0 obj
+<< /S /GoTo /D (subsection.3.1.3) >>
+endobj
+80 0 obj
+(Huffman Codebooks)
+endobj
+81 0 obj
+<< /S /GoTo /D (section.3.2) >>
+endobj
+84 0 obj
+(High-Level Decode Process)
+endobj
+85 0 obj
+<< /S /GoTo /D (subsection.3.2.1) >>
+endobj
+88 0 obj
+(Decoder Setup)
+endobj
+89 0 obj
+<< /S /GoTo /D (subsection.3.2.2) >>
+endobj
+92 0 obj
+(Decode Procedure)
+endobj
+93 0 obj
+<< /S /GoTo /D (chapter.4) >>
+endobj
+96 0 obj
+(Video Formats)
+endobj
+97 0 obj
+<< /S /GoTo /D (section.4.1) >>
+endobj
+100 0 obj
+(Color Space Conventions)
+endobj
+101 0 obj
+<< /S /GoTo /D (section.4.2) >>
+endobj
+104 0 obj
+(Color Space Conversions and Parameters)
+endobj
+105 0 obj
+<< /S /GoTo /D (section.4.3) >>
+endobj
+108 0 obj
+(Available Color Spaces)
+endobj
+109 0 obj
+<< /S /GoTo /D (subsection.4.3.1) >>
+endobj
+112 0 obj
+(Rec. 470M \(Rec. ITU-R BT.470-6 System M/NTSC with Rec. ITU-R BT.601-5\))
+endobj
+113 0 obj
+<< /S /GoTo /D (subsection.4.3.2) >>
+endobj
+116 0 obj
+(Rec. 470BG \(Rec. ITU-R BT.470-6 Systems B and G with Rec. ITU-R BT.601-5\))
+endobj
+117 0 obj
+<< /S /GoTo /D (section.4.4) >>
+endobj
+120 0 obj
+(Pixel Formats)
+endobj
+121 0 obj
+<< /S /GoTo /D (subsection.4.4.1) >>
+endobj
+124 0 obj
+(4:4:4 Subsampling)
+endobj
+125 0 obj
+<< /S /GoTo /D (subsection.4.4.2) >>
+endobj
+128 0 obj
+(4:2:2 Subsampling)
+endobj
+129 0 obj
+<< /S /GoTo /D (subsection.4.4.3) >>
+endobj
+132 0 obj
+(4:2:0 Subsampling)
+endobj
+133 0 obj
+<< /S /GoTo /D (subsection.4.4.4) >>
+endobj
+136 0 obj
+(Subsampling and the Picture Region)
+endobj
+137 0 obj
+<< /S /GoTo /D (chapter.5) >>
+endobj
+140 0 obj
+(Bitpacking Convention)
+endobj
+141 0 obj
+<< /S /GoTo /D (section.5.1) >>
+endobj
+144 0 obj
+(Overview)
+endobj
+145 0 obj
+<< /S /GoTo /D (subsection.5.1.1) >>
+endobj
+148 0 obj
+(Octets and Bytes)
+endobj
+149 0 obj
+<< /S /GoTo /D (subsection.5.1.2) >>
+endobj
+152 0 obj
+(Words and Byte Order)
+endobj
+153 0 obj
+<< /S /GoTo /D (subsection.5.1.3) >>
+endobj
+156 0 obj
+(Bit Order)
+endobj
+157 0 obj
+<< /S /GoTo /D (section.5.2) >>
+endobj
+160 0 obj
+(Coding Bits into Bytes)
+endobj
+161 0 obj
+<< /S /GoTo /D (subsection.5.2.1) >>
+endobj
+164 0 obj
+(Signedness)
+endobj
+165 0 obj
+<< /S /GoTo /D (subsection.5.2.2) >>
+endobj
+168 0 obj
+(Encoding Example)
+endobj
+169 0 obj
+<< /S /GoTo /D (subsection.5.2.3) >>
+endobj
+172 0 obj
+(Decoding Example)
+endobj
+173 0 obj
+<< /S /GoTo /D (subsection.5.2.4) >>
+endobj
+176 0 obj
+(End-of-Packet Alignment)
+endobj
+177 0 obj
+<< /S /GoTo /D (subsection.5.2.5) >>
+endobj
+180 0 obj
+(Reading Zero Bit Integers)
+endobj
+181 0 obj
+<< /S /GoTo /D (chapter.6) >>
+endobj
+184 0 obj
+(Bitstream Headers)
+endobj
+185 0 obj
+<< /S /GoTo /D (section.6.1) >>
+endobj
+188 0 obj
+(Common Header Decode)
+endobj
+189 0 obj
+<< /S /GoTo /D (section.6.2) >>
+endobj
+192 0 obj
+(Identification Header Decode)
+endobj
+193 0 obj
+<< /S /GoTo /D (section.6.3) >>
+endobj
+196 0 obj
+(Comment Header)
+endobj
+197 0 obj
+<< /S /GoTo /D (subsection.6.3.1) >>
+endobj
+200 0 obj
+(Comment Length Decode)
+endobj
+201 0 obj
+<< /S /GoTo /D (subsection.6.3.2) >>
+endobj
+204 0 obj
+(Comment Header Decode)
+endobj
+205 0 obj
+<< /S /GoTo /D (subsection.6.3.3) >>
+endobj
+208 0 obj
+(User Comment Format)
+endobj
+209 0 obj
+<< /S /GoTo /D (section.6.4) >>
+endobj
+212 0 obj
+(Setup Header)
+endobj
+213 0 obj
+<< /S /GoTo /D (subsection.6.4.1) >>
+endobj
+216 0 obj
+(Loop Filter Limit Table Decode)
+endobj
+217 0 obj
+<< /S /GoTo /D (subsection.6.4.2) >>
+endobj
+220 0 obj
+(Quantization Parameters Decode)
+endobj
+221 0 obj
+<< /S /GoTo /D (subsection.6.4.3) >>
+endobj
+224 0 obj
+(Computing a Quantization Matrix)
+endobj
+225 0 obj
+<< /S /GoTo /D (subsection.6.4.4) >>
+endobj
+228 0 obj
+(DCT Token Huffman Tables)
+endobj
+229 0 obj
+<< /S /GoTo /D (subsection.6.4.5) >>
+endobj
+232 0 obj
+(Setup Header Decode)
+endobj
+233 0 obj
+<< /S /GoTo /D (chapter.7) >>
+endobj
+236 0 obj
+(Frame Decode)
+endobj
+237 0 obj
+<< /S /GoTo /D (section.7.1) >>
+endobj
+240 0 obj
+(Frame Header Decode)
+endobj
+241 0 obj
+<< /S /GoTo /D (section.7.2) >>
+endobj
+244 0 obj
+(Run-Length Encoded Bit Strings)
+endobj
+245 0 obj
+<< /S /GoTo /D (subsection.7.2.1) >>
+endobj
+248 0 obj
+(Long-Run Bit String Decode)
+endobj
+249 0 obj
+<< /S /GoTo /D (subsection.7.2.2) >>
+endobj
+252 0 obj
+(Short-Run Bit String Decode)
+endobj
+253 0 obj
+<< /S /GoTo /D (section.7.3) >>
+endobj
+256 0 obj
+(Coded Block Flags Decode)
+endobj
+257 0 obj
+<< /S /GoTo /D (section.7.4) >>
+endobj
+260 0 obj
+(Macro Block Coding Modes)
+endobj
+261 0 obj
+<< /S /GoTo /D (section.7.5) >>
+endobj
+264 0 obj
+(Motion Vectors)
+endobj
+265 0 obj
+<< /S /GoTo /D (subsection.7.5.1) >>
+endobj
+268 0 obj
+(Motion Vector Decode)
+endobj
+269 0 obj
+<< /S /GoTo /D (subsection.7.5.2) >>
+endobj
+272 0 obj
+(Macro Block Motion Vector Decode)
+endobj
+273 0 obj
+<< /S /GoTo /D (section.7.6) >>
+endobj
+276 0 obj
+(Block-Level qi Decode)
+endobj
+277 0 obj
+<< /S /GoTo /D (section.7.7) >>
+endobj
+280 0 obj
+(DCT Coefficients)
+endobj
+281 0 obj
+<< /S /GoTo /D (subsection.7.7.1) >>
+endobj
+284 0 obj
+(EOB Token Decode)
+endobj
+285 0 obj
+<< /S /GoTo /D (subsection.7.7.2) >>
+endobj
+288 0 obj
+(Coefficient Token Decode)
+endobj
+289 0 obj
+<< /S /GoTo /D (subsection.7.7.3) >>
+endobj
+292 0 obj
+(DCT Coefficient Decode)
+endobj
+293 0 obj
+<< /S /GoTo /D (section.7.8) >>
+endobj
+296 0 obj
+(Undoing DC Prediction)
+endobj
+297 0 obj
+<< /S /GoTo /D (subsection.7.8.1) >>
+endobj
+300 0 obj
+(Computing the DC Predictor)
+endobj
+301 0 obj
+<< /S /GoTo /D (subsection.7.8.2) >>
+endobj
+304 0 obj
+(Inverting the DC Prediction Process)
+endobj
+305 0 obj
+<< /S /GoTo /D (section.7.9) >>
+endobj
+308 0 obj
+(Reconstruction)
+endobj
+309 0 obj
+<< /S /GoTo /D (subsection.7.9.1) >>
+endobj
+312 0 obj
+(Predictors)
+endobj
+313 0 obj
+<< /S /GoTo /D (subsection.7.9.2) >>
+endobj
+316 0 obj
+(Dequantization)
+endobj
+317 0 obj
+<< /S /GoTo /D (subsection.7.9.3) >>
+endobj
+320 0 obj
+(The Inverse DCT)
+endobj
+321 0 obj
+<< /S /GoTo /D (subsection.7.9.4) >>
+endobj
+324 0 obj
+(The Complete Reconstruction Algorithm)
+endobj
+325 0 obj
+<< /S /GoTo /D (section.7.10) >>
+endobj
+328 0 obj
+(Loop Filtering)
+endobj
+329 0 obj
+<< /S /GoTo /D (subsection.7.10.1) >>
+endobj
+332 0 obj
+(Horizontal Filter)
+endobj
+333 0 obj
+<< /S /GoTo /D (subsection.7.10.2) >>
+endobj
+336 0 obj
+(Vertical Filter)
+endobj
+337 0 obj
+<< /S /GoTo /D (subsection.7.10.3) >>
+endobj
+340 0 obj
+(Complete Loop Filter)
+endobj
+341 0 obj
+<< /S /GoTo /D (section.7.11) >>
+endobj
+344 0 obj
+(Complete Frame Decode)
+endobj
+345 0 obj
+<< /S /GoTo /D (appendix.A) >>
+endobj
+348 0 obj
+(Ogg Bitstream Encapsulation)
+endobj
+349 0 obj
+<< /S /GoTo /D (section.A.1) >>
+endobj
+352 0 obj
+(Overview)
+endobj
+353 0 obj
+<< /S /GoTo /D (subsection.A.1.1) >>
+endobj
+356 0 obj
+(MIME type)
+endobj
+357 0 obj
+<< /S /GoTo /D (section.A.2) >>
+endobj
+360 0 obj
+(Embedding in a logical bitstream)
+endobj
+361 0 obj
+<< /S /GoTo /D (subsection.A.2.1) >>
+endobj
+364 0 obj
+(Headers)
+endobj
+365 0 obj
+<< /S /GoTo /D (subsection.A.2.2) >>
+endobj
+368 0 obj
+(Frame data)
+endobj
+369 0 obj
+<< /S /GoTo /D (subsection.A.2.3) >>
+endobj
+372 0 obj
+(Granule position)
+endobj
+373 0 obj
+<< /S /GoTo /D (section.A.3) >>
+endobj
+376 0 obj
+(Multiplexed stream mapping)
+endobj
+377 0 obj
+<< /S /GoTo /D (subsection.A.3.1) >>
+endobj
+380 0 obj
+(Chained streams)
+endobj
+381 0 obj
+<< /S /GoTo /D (subsection.A.3.2) >>
+endobj
+384 0 obj
+(Grouped streams)
+endobj
+385 0 obj
+<< /S /GoTo /D (appendix.B) >>
+endobj
+388 0 obj
+(VP3)
+endobj
+389 0 obj
+<< /S /GoTo /D (section.B.1) >>
+endobj
+392 0 obj
+(VP3 Compatibility)
+endobj
+393 0 obj
+<< /S /GoTo /D (section.B.2) >>
+endobj
+396 0 obj
+(Loop Filter Limit Values)
+endobj
+397 0 obj
+<< /S /GoTo /D (section.B.3) >>
+endobj
+400 0 obj
+(Quantization Parameters)
+endobj
+401 0 obj
+<< /S /GoTo /D (section.B.4) >>
+endobj
+404 0 obj
+(Huffman Tables)
+endobj
+405 0 obj
+<< /S /GoTo /D (appendix.C) >>
+endobj
+408 0 obj
+(Colophon)
+endobj
+409 0 obj
+<< /S /GoTo /D [410 0 R /FitH ] >>
+endobj
+412 0 obj <<
+/Length 183
+/Filter /FlateDecode
+>>
+stream
+xÚuÏ1Â0 @ѽ§ð˜H4ØNÒ$+ ±’  Ú¶ªàþ¤tDLöòŸe„ l ü3W±XnÈ9Åd Ä;0z…ÀX«kˆ78ŠØ¤~¼ÈR#‹ý K®DªÛ’©/¯¶ïä9î2T‘
+ÖòeSg§4Zy]ÍΡÕ,eb#=‰þÝÝ&C’ø2 UJöÊž³}^é)Ù‰k¾íDg€ÍbZœà\#†©ÿùq‹eÂ=Š
+endstream
+endobj
+410 0 obj <<
+/Type /Page
+/Contents 412 0 R
+/Resources 411 0 R
+/MediaBox [0 0 612 792]
+/Parent 417 0 R
+>> endobj
+413 0 obj <<
+/D [410 0 R /FitH 686.127]
+>> endobj
+414 0 obj <<
+/D [410 0 R /FitH 668.127]
+>> endobj
+411 0 obj <<
+/Font << /F15 415 0 R /F16 416 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+420 0 obj <<
+/Length 19
+/Filter /FlateDecode
+>>
+stream
+xÚ3PHW0Ppç2ÀA
+endstream
+endobj
+419 0 obj <<
+/Type /Page
+/Contents 420 0 R
+/Resources 418 0 R
+/MediaBox [0 0 612 792]
+/Parent 417 0 R
+>> endobj
+421 0 obj <<
+/D [419 0 R /FitH 686.127]
+>> endobj
+418 0 obj <<
+/ProcSet [ /PDF ]
+>> endobj
+454 0 obj <<
+/Length 1207
+/Filter /FlateDecode
+>>
+stream
+xÚå™Mw›8†÷ù,ŪO–3u;§™ÉÄÌlÚY[u8ƒCàtÚ_?Š ´6iNC2+>„%xîÕ}fÞÚƒÞüÚãiròê å¦aÌcä%Ÿ<£GÂc11^²ò>€Yqãji•ÿwòë RS@¯\{æär®çžE„#=ô‚‡(ŽÍ$Èfàšƒº,ü@WÛe©Ùõ„í[yAÎÔ/¾µßYÑPPê‡"»V¨VCcð×Q 
+Ò•9O®eQ¦ÝEcAAè §8P!~àçOAŒS‹¯½ÛǨ ¤¡µÈp‹,[É€zã«yŠr“Z›ï,!žÓÔ  m–§U•}„ˆ.Ó!Žcüô¸ó5|$µûýI-·×UµÝÜjb}‹Ðó£s´£á‘ŽÆZGS[s°’K½E XÈz{Û†¸•¹wQWéU–gµ¯ýbnž·?Ìû[™ýL`ã@‘å¡B1!Ê|¦ÒªOúòf)»+QHž<æü&r
+S¿ü`‘x1uÇQôŽ‘vb¤ýL.­¸wS;ÿ÷;]uËò.ÓTåçž²cH @d´´Û…°›µÏ.]B¦Ë¢õ¶,ŒÅÏ!B ÚìP:æ)ãÔI‚«†¢Ìs•¨ç­ï—ahâ êqH`Çoš|F³øc›ÞhI©³¯€‰“i]fKÙßÿ1{v½‚Xo·Êˆ*av‚¢ÞPWMp4WÅ€òr1±ºf =D&ØÝ5-6ë}›­¯ƒ÷òN«‚Ô±,7~²w\ lÒ7Yõ; ljYÉ )6&¼8P.¸œÉFB¤ÚpLm¿ [(PúKâã(õvv1§ƒ¨ÍÀl‚+W50gÑ4ÛÁéf$9ãûY5Y…kU½ ö¶0¦T :~x랺TbVäEë´·>ic+é²
+L°ºá7–D@wúûõASÉÿŽ6צ.J®¬šÖk§¨‡RÝž©ÕýWCâ'ú0Û¤®à}ç«š)Íòô*woɨ‚ÿ6H,(Å“Žß#EÇ †‚åãÒDCµ Оë³|„ ª1{ÿ]ògpiN“P=Df`ñ¥ªIÞ˜ëóW¿%‹™yòsV_ë—ó
+9Gê P(3ï`çV&içÖm†$Œ
+˜Zõ+a>ÕÖþqv†}¿uÂto
+LcmŠÓ¹>å;¶ÐW–—>½·…¾jl±©ì94Û[ŸÌͬÿ/›LT%Æ‚íoêš­ÿÊüࢣcdzé}5÷û®n12¬“vïÌÙÞ³¿$'ÿ±¹º
+endstream
+endobj
+453 0 obj <<
+/Type /Page
+/Contents 454 0 R
+/Resources 452 0 R
+/MediaBox [0 0 612 792]
+/Parent 417 0 R
+/Annots [ 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 434 0 R 435 0 R 436 0 R 437 0 R 438 0 R 439 0 R 440 0 R 441 0 R 442 0 R 443 0 R 444 0 R 445 0 R 446 0 R 447 0 R 448 0 R 459 0 R 449 0 R 460 0 R 450 0 R ]
+>> endobj
+422 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [105.873 515.086 185.975 523.997]
+/Subtype /Link
+/A << /S /GoTo /D (chapter.1) >>
+>> endobj
+423 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 502.885 218.672 511.796]
+/Subtype /Link
+/A << /S /GoTo /D (section.1.1) >>
+>> endobj
+424 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 490.685 209.872 499.596]
+/Subtype /Link
+/A << /S /GoTo /D (section.1.2) >>
+>> endobj
+425 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 478.484 203.396 487.395]
+/Subtype /Link
+/A << /S /GoTo /D (section.1.3) >>
+>> endobj
+426 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 464.347 201.515 475.084]
+/Subtype /Link
+/A << /S /GoTo /D (section.1.4) >>
+>> endobj
+427 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 452.146 302.802 462.995]
+/Subtype /Link
+/A << /S /GoTo /D (section.1.5) >>
+>> endobj
+428 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 441.883 238.072 450.794]
+/Subtype /Link
+/A << /S /GoTo /D (section.1.6) >>
+>> endobj
+429 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [105.873 419.557 239.725 428.468]
+/Subtype /Link
+/A << /S /GoTo /D (chapter.2) >>
+>> endobj
+430 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 405.419 206.634 416.156]
+/Subtype /Link
+/A << /S /GoTo /D (section.2.1) >>
+>> endobj
+431 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 393.219 210.785 403.956]
+/Subtype /Link
+/A << /S /GoTo /D (section.2.2) >>
+>> endobj
+432 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 381.018 253.791 391.866]
+/Subtype /Link
+/A << /S /GoTo /D (section.2.3) >>
+>> endobj
+433 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 370.755 204.891 379.666]
+/Subtype /Link
+/A << /S /GoTo /D (section.2.4) >>
+>> endobj
+434 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 356.617 276.29 367.466]
+/Subtype /Link
+/A << /S /GoTo /D (section.2.5) >>
+>> endobj
+435 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 346.354 220.914 355.265]
+/Subtype /Link
+/A << /S /GoTo /D (section.2.6) >>
+>> endobj
+436 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [105.873 322.09 220.505 332.939]
+/Subtype /Link
+/A << /S /GoTo /D (chapter.3) >>
+>> endobj
+437 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 309.89 244.437 320.738]
+/Subtype /Link
+/A << /S /GoTo /D (section.3.1) >>
+>> endobj
+438 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 297.69 269.579 308.538]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.1.1) >>
+>> endobj
+439 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 285.489 275.1 296.227]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.1.2) >>
+>> endobj
+440 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 275.226 266.216 284.137]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.1.3) >>
+>> endobj
+441 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 261.088 263.615 271.937]
+/Subtype /Link
+/A << /S /GoTo /D (section.3.2) >>
+>> endobj
+442 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 248.888 241.42 259.736]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.2.1) >>
+>> endobj
+443 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 238.625 256.807 247.536]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.3.2.2) >>
+>> endobj
+444 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [105.873 216.298 196.61 225.209]
+/Subtype /Link
+/A << /S /GoTo /D (chapter.4) >>
+>> endobj
+445 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 202.161 254.289 213.009]
+/Subtype /Link
+/A << /S /GoTo /D (section.4.1) >>
+>> endobj
+446 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 189.96 324.913 200.809]
+/Subtype /Link
+/A << /S /GoTo /D (section.4.2) >>
+>> endobj
+447 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 177.76 245.433 188.608]
+/Subtype /Link
+/A << /S /GoTo /D (section.4.3) >>
+>> endobj
+448 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 165.006 451.577 176.961]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.4.3.1) >>
+>> endobj
+459 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [105.873 153.051 276.262 165.006]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.4.3.1) >>
+>> endobj
+449 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 140.85 451.577 152.806]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.4.3.2) >>
+>> endobj
+460 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [105.873 128.895 276.262 140.85]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.4.3.2) >>
+>> endobj
+450 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 119.186 206.69 128.097]
+/Subtype /Link
+/A << /S /GoTo /D (section.4.4) >>
+>> endobj
+456 0 obj <<
+/D [453 0 R /FitH 538.408]
+>> endobj
+452 0 obj <<
+/Font << /F48 455 0 R /F49 457 0 R /F8 458 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+506 0 obj <<
+/Length 1409
+/Filter /FlateDecode
+>>
+stream
+xÚíš]s›F†ïý+¸„ û½›»Z‘“tì8µÔv¦i/ˆ´‘Kà"ä¤ýõ]Ø! F¢²:ÌÈXÑ°Þ‡sÞóž³ò­…å[oÏΧg¯.¸%<A!µ¦_,@}RfQN=
+LúX*…­´T98um±Ïá]Êh‘Þv†#kc0=<€JïÔJbÏÄb Ke0ëA¢pL?¯õ–q™V% Ýþ®‚†-€|Ðv ó^mÍ-S¦0™nîwÔ¶Ñè‚¡L=ž‚Ÿè§4ÛÄK<ñ½‰¤p™av®
+¿5Í,ø¼”9y–òÕ†ßQÍO›À”ñ¿3¹QeÜvQɵ%O‚•L3»Õ`üü¹Dü»G[™½ß¤Û ¹Þb…Iik}¤Iø­!¶@<çfQÍ}Ö›ÑToS…5¶ã»Ì H³¹wåâÐ*ˆjßôØ„d‚ChE§ÕЮà ¹¤þoº-¢ 1Ým]8‚ÚYÖë³ Á6ÙÃTa¡ wÇÅÊŽ+/æfѯSš(mjÚÆ6çßû¡pû‡0+Û¯›Män1¶Ç
+M9o“Å9@QÈ&Jº¢E#™)˜S¤½N‹Xe*{G WÁiÐÝ“rúâ1‰²šOnã$í¿}ÊÈK[;JzYcVi¾«9€ìó¥~c–Uô;Íåb,ºí ð>¥LÑF\3=cijÍü5gÓ8º*P5§Ÿ‚ÞòƒQ‘U¼u‚¿d¥JÎÒ¸9‚¤ˆûD¬8úé2)uyËgü°æ·O}'H ù ‘^ÃI©× Øt{T1ôÂÃPO©¦&§v¥YÙ™‡¼%Yš¯úïȨǙ(¾aø§ù⎻ž`¸øÄcEŽ€a¬íA¼³ÓWÏ^ÙzT'Î ñ²é`“ªëËž†= Íd­©ìTœ‚jíÍ÷´˜¬”²ñõùwûèÇHt
+ßGâ‡ÛOV™Zç{Ï£JGTy’Ob}°ÛÍŠ1,•ç¤T¼4ù”³ìG``*b7Tê?ÇÓ³
+endstream
+endobj
+505 0 obj <<
+/Type /Page
+/Contents 506 0 R
+/Resources 504 0 R
+/MediaBox [0 0 612 792]
+/Parent 417 0 R
+/Annots [ 451 0 R 461 0 R 462 0 R 463 0 R 464 0 R 465 0 R 466 0 R 467 0 R 468 0 R 469 0 R 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R 475 0 R 476 0 R 477 0 R 478 0 R 479 0 R 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R ]
+>> endobj
+451 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 655.231 310.606 666.079]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.4.4.1) >>
+>> endobj
+461 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 643.14 310.606 653.988]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.4.4.2) >>
+>> endobj
+462 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 631.049 310.606 641.897]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.4.4.3) >>
+>> endobj
+463 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 618.958 391.718 629.806]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.4.4.4) >>
+>> endobj
+464 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [159.671 596.814 291.053 607.662]
+/Subtype /Link
+/A << /S /GoTo /D (chapter.5) >>
+>> endobj
+465 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [174.615 586.66 240.23 595.46]
+/Subtype /Link
+/A << /S /GoTo /D (section.5.1) >>
+>> endobj
+466 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 572.632 306.925 583.48]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.1.1) >>
+>> endobj
+467 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 560.541 331.306 571.389]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.1.2) >>
+>> endobj
+468 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 550.387 273.937 559.298]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.1.3) >>
+>> endobj
+469 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [174.615 536.359 299.813 547.207]
+/Subtype /Link
+/A << /S /GoTo /D (section.5.2) >>
+>> endobj
+470 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 524.268 278.005 535.116]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.2.1) >>
+>> endobj
+471 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 512.176 313.594 523.025]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.2.2) >>
+>> endobj
+472 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 500.085 313.318 510.934]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.2.3) >>
+>> endobj
+473 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 487.994 341.545 498.843]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.2.4) >>
+>> endobj
+474 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 475.903 344.423 486.752]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.5.2.5) >>
+>> endobj
+475 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [159.671 455.696 270.916 464.607]
+/Subtype /Link
+/A << /S /GoTo /D (chapter.6) >>
+>> endobj
+476 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [174.615 443.605 307.893 452.516]
+/Subtype /Link
+/A << /S /GoTo /D (section.6.1) >>
+>> endobj
+477 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [174.615 431.514 326.158 440.425]
+/Subtype /Link
+/A << /S /GoTo /D (section.6.2) >>
+>> endobj
+478 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [174.615 419.423 275.93 428.334]
+/Subtype /Link
+/A << /S /GoTo /D (section.6.3) >>
+>> endobj
+479 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 405.395 342.652 416.243]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.3.1) >>
+>> endobj
+480 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 395.241 342.818 404.152]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.3.2) >>
+>> endobj
+481 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 383.15 331.831 391.951]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.3.3) >>
+>> endobj
+482 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [174.615 369.122 258.495 379.97]
+/Subtype /Link
+/A << /S /GoTo /D (section.6.4) >>
+>> endobj
+483 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 357.031 370.63 367.879]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.1) >>
+>> endobj
+484 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 344.94 375.695 355.788]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.2) >>
+>> endobj
+485 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 332.849 381.7 343.586]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.3) >>
+>> endobj
+486 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 322.695 355.299 331.606]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.4) >>
+>> endobj
+487 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 308.667 325.383 319.515]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.5) >>
+>> endobj
+488 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [159.671 288.46 248.56 297.371]
+/Subtype /Link
+/A << /S /GoTo /D (chapter.7) >>
+>> endobj
+489 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [174.615 276.369 295.883 285.28]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.1) >>
+>> endobj
+490 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [174.615 262.341 343.51 273.189]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.2) >>
+>> endobj
+491 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 250.25 356.793 261.098]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.2.1) >>
+>> endobj
+492 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 238.159 358.897 249.007]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.2.2) >>
+>> endobj
+493 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [174.615 226.068 316.777 236.916]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.3) >>
+>> endobj
+494 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [174.615 213.977 320.956 224.825]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.4) >>
+>> endobj
+495 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [174.615 203.823 266.299 212.623]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.5) >>
+>> endobj
+496 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 191.732 329.258 200.643]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.5.1) >>
+>> endobj
+497 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 179.641 387.816 188.552]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.5.2) >>
+>> endobj
+498 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [174.615 165.612 297.147 176.461]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.6) >>
+>> endobj
+499 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [174.615 155.459 274.712 164.37]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.7) >>
+>> endobj
+500 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 143.368 317.607 152.279]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.7.1) >>
+>> endobj
+501 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 131.277 341.96 140.188]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.7.2) >>
+>> endobj
+502 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [197.529 119.186 337.671 128.097]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.7.3) >>
+>> endobj
+504 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+539 0 obj <<
+/Length 1090
+/Filter /FlateDecode
+>>
+stream
+xÚÝ™Aw›8Çïùá
+ÿ´(žÊRx”V8·>ÚãÛwáä]ø›óGøËùTî]à{œ(¬¼0I}ͩƧøI¬|a™“Wg– Œx\ø–ËÌO:.%ŒÙ¿¯æY²Z8.
+Hæ¸ø§Y¼Ù¼
+ Œk\ô¯™‘—(݇٪c„–ðj>Ç[Dà š;µ[›™Ù÷Á
+R %;©¨¾EFí‹.·§šG˺<¡—ŒæqËþüä,²8çS®öÚT—rOqDÇ•ÝFPûv¡»u”X¥âhi¾NV³h½Ù¦&ˆ
+ïÃ,Z×üû]r=ûþÂ]hM fßVNâsÿÝ*…ìä ɳ
+ŠÛ‚XŸu0òžœÏ=Ȩés!ð¤/ŸúÜú\Éì»÷ÐÚ®P„û8 ôv±£2J±%Õ£— ¡Û´Ì÷IšÖz°ÚÞPËáÈ
+˨"j[ݧíøáTœìï©¥ÿ#»õ»nTKìÇYš­Ú®Œ ®I>Ýê“ðì_.~Q§
+endstream
+endobj
+538 0 obj <<
+/Type /Page
+/Contents 539 0 R
+/Resources 537 0 R
+/MediaBox [0 0 612 792]
+/Parent 417 0 R
+/Annots [ 503 0 R 509 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R 527 0 R 528 0 R 529 0 R 530 0 R 531 0 R 532 0 R 533 0 R 534 0 R 535 0 R 536 0 R ]
+>> endobj
+503 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 655.231 248.976 666.079]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.8) >>
+>> endobj
+509 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 643.276 305.514 654.124]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.8.1) >>
+>> endobj
+510 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 631.321 336.508 642.169]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.8.2) >>
+>> endobj
+511 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 621.303 211.256 630.103]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.9) >>
+>> endobj
+512 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 609.347 222.132 618.258]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.9.1) >>
+>> endobj
+513 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 595.455 243.883 606.193]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.9.2) >>
+>> endobj
+514 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 585.437 253.929 594.348]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.9.3) >>
+>> endobj
+515 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 571.545 356.351 582.393]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.9.4) >>
+>> endobj
+516 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 559.59 208.571 570.438]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.10) >>
+>> endobj
+517 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 549.572 250.581 558.483]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.10.1) >>
+>> endobj
+518 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 537.616 238.957 546.527]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.10.2) >>
+>> endobj
+519 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 523.724 272 534.572]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.10.3) >>
+>> endobj
+520 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 511.769 252.85 522.617]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.11) >>
+>> endobj
+521 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [105.873 489.851 270.646 500.699]
+/Subtype /Link
+/A << /S /GoTo /D (appendix.A) >>
+>> endobj
+522 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 479.833 186.432 488.633]
+/Subtype /Link
+/A << /S /GoTo /D (section.A.1) >>
+>> endobj
+523 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 465.941 228.663 476.678]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.A.1.1) >>
+>> endobj
+524 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 453.986 290.957 464.834]
+/Subtype /Link
+/A << /S /GoTo /D (section.A.2) >>
+>> endobj
+525 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 443.968 212.28 452.879]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.A.2.1) >>
+>> endobj
+526 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 432.012 227.583 440.923]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.A.2.2) >>
+>> endobj
+527 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 418.12 250.262 428.968]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.A.2.3) >>
+>> endobj
+528 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 406.165 271.447 417.013]
+/Subtype /Link
+/A << /S /GoTo /D (section.A.3) >>
+>> endobj
+529 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 396.147 250.248 405.058]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.A.3.1) >>
+>> endobj
+530 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [143.731 382.255 252.282 393.103]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.A.3.2) >>
+>> endobj
+531 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [105.873 362.274 145.032 371.102]
+/Subtype /Link
+/A << /S /GoTo /D (appendix.B) >>
+>> endobj
+532 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 348.382 228.607 359.23]
+/Subtype /Link
+/A << /S /GoTo /D (section.B.1) >>
+>> endobj
+533 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 336.426 254.151 347.275]
+/Subtype /Link
+/A << /S /GoTo /D (section.B.2) >>
+>> endobj
+534 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 324.471 255.008 335.209]
+/Subtype /Link
+/A << /S /GoTo /D (section.B.3) >>
+>> endobj
+535 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 314.453 214.687 323.364]
+/Subtype /Link
+/A << /S /GoTo /D (section.B.4) >>
+>> endobj
+536 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [105.873 290.598 170.547 301.446]
+/Subtype /Link
+/A << /S /GoTo /D (appendix.C) >>
+>> endobj
+540 0 obj <<
+/D [538 0 R /FitH 686.127]
+>> endobj
+537 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+543 0 obj <<
+/Length 96
+/Filter /FlateDecode
+>>
+stream
+xÚ3PHW0Ppçr
+áÒw³P°Ô³432SIS043Ð333W0³0Ó342WIQˆÖÈ,ÓŒ ñÒw37FRida®ghh4¬ÆÙß/ÄÕ/$¤’Ë
+endstream
+endobj
+542 0 obj <<
+/Type /Page
+/Contents 543 0 R
+/Resources 541 0 R
+/MediaBox [0 0 612 792]
+/Parent 417 0 R
+>> endobj
+544 0 obj <<
+/D [542 0 R /FitH 686.127]
+>> endobj
+541 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+570 0 obj <<
+/Length 1117
+/Filter /FlateDecode
+>>
+stream
+xÚÝXI“›:¾Ï¯àˆIIäø’x’WsH%>e90;ÔÃà<Y~}ZÆÀŒÍlñK¹
+„ÜH꯿Þ@ÎÚAÎå2÷/æT8„ú\pì,VFÌ,rB.|Êg‘8ŸÝ«¬nf^ÀC·\éû<[華ž}]ü{a-äTkG>\¢‰üˆ¦–¤~D©ã1ìs&ôŠÄÇ3#BÜ«ræá.ã&+ X<ô&uWU¼IõT\$z°Í– 쬪vaˆÝµ|»ú<V;ç³…Èõg^ˆžøÖÛ‡‚ºì`v\=Œý( -$Ä@òqw­0I²›¬î¡P ÀÉŠH7¥þã:—ˆrw9ƒËu¿z·Uk§•~ÖÒBJ )ÝÓ$Àø±ðà“ñ âºÑç¥nY%i•ëXôÅã.ßPè"€õÔ:…¡áãˆZ/‘‘eÔÈÊl´À­‰ÀQŒÀ1ÁÏAÄÞFÑÝFÇŒâá ôÆ6ÌÚ†Û¼ÍòkC¨FÛd¹«n$é-¥ýž5ß²¢Ãòctí«DÅÃiM¦iø(n»‰—UyšOÂ^ÏJ°`4ö0Š´€ÜÒl¡†-ܵÁâð½¾^¡GqOÕ¹QýÍx³Í­šF±*]¥UZ, #Œ¬ÊÊÆëŽX…4{z‡"|ü ¦Ç“FñOÙÚû¯;öíïÀù‰ˆóŒÓ¡#'@G
+"ÚDï³inø
+QaQ
+ˆB“¹” g³ƒ‘ÅVÙih ãY‰}WZC7¬£éæF ŠâÉÎ®5“a(F÷=äoÜ¥œ ÝG-þLjõmýöêf|ÖfüWåfSšmߦqb›÷ò<±iut|QóW±œú)/å®´Œž§çNí¬X›âß…UœåèþSÑQ¸úÐÐèÌÞP”LÊæö«´XkËíu³ï²ò;9Ä>_„—²‰ÙœµÙ\úš$w3uÔ:%bgÚ£Œ’ˆO&Qû#md­Á‘É.NìwVƒi§ãé`kýïzµMŒÜ¼Ü³uç”y^êòO=]VñÖd"ÓÔS<³M'øµþó
+l7*^UµIP¯_-IÅÓ&TÿÔôÌ÷_­ŒÅ|¾]Vª€Ž«äV,"ÁŸ>€ߌNæËS¹Õ2oå3&š|µ+–2­ OÄÉÙ¸‹B‡„ãe¡'D†ù"äš›á7‹‹ßJù³
+endstream
+endobj
+569 0 obj <<
+/Type /Page
+/Contents 570 0 R
+/Resources 568 0 R
+/MediaBox [0 0 612 792]
+/Parent 576 0 R
+/Annots [ 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 575 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R ]
+>> endobj
+545 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 513.761 310.107 524.61]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.1) >>
+>> endobj
+546 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 501.806 370.714 512.654]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.2) >>
+>> endobj
+547 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 489.851 285.316 500.699]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.3) >>
+>> endobj
+548 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 477.896 376.774 488.744]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.4) >>
+>> endobj
+549 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 467.878 324.111 476.789]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.5) >>
+>> endobj
+550 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 453.986 406.69 464.834]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.6) >>
+>> endobj
+551 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 442.03 349.488 452.879]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.7) >>
+>> endobj
+552 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 430.075 203.341 440.923]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.8) >>
+>> endobj
+553 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 410.095 233.921 419.006]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.1) >>
+>> endobj
+554 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 398.139 233.921 407.051]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.2) >>
+>> endobj
+555 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 386.184 233.921 395.095]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.3) >>
+>> endobj
+556 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 372.292 451.577 383.14]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.4) >>
+>> endobj
+575 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [105.873 360.337 252.684 371.185]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.4) >>
+>> endobj
+557 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 348.382 434.502 359.23]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.5) >>
+>> endobj
+558 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 336.426 431.458 347.275]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.6) >>
+>> endobj
+559 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 324.471 434.502 335.32]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.7) >>
+>> endobj
+560 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 302.553 284.952 313.402]
+/Subtype /Link
+/A << /S /GoTo /D (figure.6.1) >>
+>> endobj
+561 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 292.535 269.593 301.447]
+/Subtype /Link
+/A << /S /GoTo /D (figure.6.2) >>
+>> endobj
+562 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 278.643 273.246 289.491]
+/Subtype /Link
+/A << /S /GoTo /D (figure.6.3) >>
+>> endobj
+563 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 266.688 255.756 277.536]
+/Subtype /Link
+/A << /S /GoTo /D (figure.6.4) >>
+>> endobj
+564 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 254.733 247.426 265.581]
+/Subtype /Link
+/A << /S /GoTo /D (figure.6.5) >>
+>> endobj
+565 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 232.815 335.36 243.663]
+/Subtype /Link
+/A << /S /GoTo /D (figure.7.1) >>
+>> endobj
+566 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 220.86 340.729 231.708]
+/Subtype /Link
+/A << /S /GoTo /D (figure.7.2) >>
+>> endobj
+567 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 208.905 290.625 219.753]
+/Subtype /Link
+/A << /S /GoTo /D (figure.7.3) >>
+>> endobj
+571 0 obj <<
+/D [569 0 R /FitH 686.127]
+>> endobj
+572 0 obj <<
+/D [569 0 R /FitH 533.793]
+>> endobj
+568 0 obj <<
+/Font << /F48 455 0 R /F8 458 0 R /F11 573 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+602 0 obj <<
+/Length 110
+/Filter /FlateDecode
+>>
+stream
+xÚ3PHW0Ppçr
+áÒw³P°Ô³432SIS043Ð333W0³0Ó342WIQˆÖ(ËÔŒ ñÒw37FRidjªgdd4¬ÆÇ38DS×ØØXÃß D›h¸yº‡¹ƒ´r@íC§]C¸
+endstream
+endobj
+601 0 obj <<
+/Type /Page
+/Contents 602 0 R
+/Resources 600 0 R
+/MediaBox [0 0 612 792]
+/Parent 576 0 R
+>> endobj
+603 0 obj <<
+/D [601 0 R /FitH 686.127]
+>> endobj
+600 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+630 0 obj <<
+/Length 1137
+/Filter /FlateDecode
+>>
+stream
+xÚÕ™ÏWÛ8Çïü>Ú‡¨ú-ùX(ÐÝ»,ÉÛº{0‰HôˆmžãðJÿúJ–ì&¶Yb6”pÁ¶¬Èžg¾3#`0`p~ýñxrôáŒÊ
+Ãÿ:Žº•
+Ÿjÿ‰[è„GGžBÇy|`èz)‰Á¹ŠâÞHªÈØM6wy^䦅èKFP¼×-‹˜ v)ʬku«
+•MÕFoikƶìœnô?Õɧ8ê„ÜÊUûý°$¿^†c9œ‡p<¾T’ªç /Ÿ•ñIæûòOúA¯òb»ÁòpDÝ`U«wÿø1&zY{! ?øZã‰EÕËÎÌ™¶RÞÝe”OÇŠÝÿDpxÖáÌ™‹øèF{ ùxoã¤kcÊ7VmÓjÛ’±ÎjÏðLlÒYU£m™¡â•u¢²½ ¸g½®µL¼qä§qcýýéP0þp&àæ½$@`ižY=«0BDÝ´Ö>>b¤ždŸÕ³R ˆ@õœû¥Þ2³µž˜ÕS÷PeS¤<Cy„  â6lÙÀžo*‹õ´ÙäÚp ˆ%ß‘Å{õ 6"‚žÇ†!€µs™ôõó=+-úÜÈÓfpQ^&~óÔªIâ÷z678+¹¾%$ÚÍèmñmn#†
+endstream
+endobj
+629 0 obj <<
+/Type /Page
+/Contents 630 0 R
+/Resources 628 0 R
+/MediaBox [0 0 612 792]
+/Parent 576 0 R
+/Annots [ 604 0 R 605 0 R 606 0 R 607 0 R 608 0 R 609 0 R 610 0 R 611 0 R 612 0 R 613 0 R 614 0 R 615 0 R 616 0 R 617 0 R 618 0 R 619 0 R 620 0 R 621 0 R 622 0 R 623 0 R 624 0 R 625 0 R 626 0 R 627 0 R ]
+>> endobj
+604 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 515.699 230.904 524.61]
+/Subtype /Link
+/A << /S /GoTo /D (table.2.1) >>
+>> endobj
+605 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 491.844 261.733 502.692]
+/Subtype /Link
+/A << /S /GoTo /D (table.3.1) >>
+>> endobj
+606 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 471.863 244.631 480.663]
+/Subtype /Link
+/A << /S /GoTo /D (table.4.1) >>
+>> endobj
+607 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 459.908 250.373 468.708]
+/Subtype /Link
+/A << /S /GoTo /D (table.4.2) >>
+>> endobj
+608 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 436.053 289.518 446.901]
+/Subtype /Link
+/A << /S /GoTo /D (table.6.3) >>
+>> endobj
+609 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 426.035 294.499 434.946]
+/Subtype /Link
+/A << /S /GoTo /D (table.6.4) >>
+>> endobj
+610 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 412.143 350.539 422.991]
+/Subtype /Link
+/A << /S /GoTo /D (table.6.5) >>
+>> endobj
+611 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 402.125 322.007 411.036]
+/Subtype /Link
+/A << /S /GoTo /D (table.6.6) >>
+>> endobj
+612 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 388.232 279.445 399.08]
+/Subtype /Link
+/A << /S /GoTo /D (table.6.18) >>
+>> endobj
+613 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 366.314 230.351 377.163]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.3) >>
+>> endobj
+614 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 354.359 312.875 365.207]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.7) >>
+>> endobj
+615 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 342.404 314.978 353.252]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.11) >>
+>> endobj
+616 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 330.449 267.157 341.297]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.18) >>
+>> endobj
+617 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 320.431 268.264 329.342]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.19) >>
+>> endobj
+618 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 306.539 352.061 317.387]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.23) >>
+>> endobj
+619 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 294.583 242.057 305.432]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.33) >>
+>> endobj
+620 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 282.628 266.41 293.476]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.38) >>
+>> endobj
+621 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 270.673 245.779 281.521]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.42) >>
+>> endobj
+622 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 258.718 324.498 269.566]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.46) >>
+>> endobj
+623 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 246.763 416.431 257.611]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.47) >>
+>> endobj
+624 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 234.808 336.37 245.656]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.65) >>
+>> endobj
+625 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 222.852 351.77 233.701]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.75) >>
+>> endobj
+626 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 210.897 338.503 221.745]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.85) >>
+>> endobj
+627 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [120.817 198.942 404.476 209.79]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.89) >>
+>> endobj
+631 0 obj <<
+/D [629 0 R /FitH 686.127]
+>> endobj
+632 0 obj <<
+/D [629 0 R /FitH 538.613]
+>> endobj
+628 0 obj <<
+/Font << /F48 455 0 R /F8 458 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+659 0 obj <<
+/Length 114
+/Filter /FlateDecode
+>>
+stream
+xÚ3PHW0Ppçr
+áÒw³P°Ô³432SIS043Ð333W0³0Ó342WIQˆÖ(ËÌÌÔŒ ñÒw37FRkTkad4¬ÊÇ38DS×ØØXÃß D›h„hZ˜h8:ù¸ƒts@-E§]C¸
+endstream
+endobj
+658 0 obj <<
+/Type /Page
+/Contents 659 0 R
+/Resources 657 0 R
+/MediaBox [0 0 612 792]
+/Parent 576 0 R
+>> endobj
+660 0 obj <<
+/D [658 0 R /FitH 686.127]
+>> endobj
+657 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+663 0 obj <<
+/Length 1819
+/Filter /FlateDecode
+>>
+stream
+xÚÍXKoÜ6¾ûW訲 )’•¶‡¶Hú
+»>Õ–±ŒOʪ¦¬
+;¸žä·vG^Uß´uÝ¢Û=N¸v¿ÑilëCØQ‡[ú½öK$ø\&#œ´=´á@ÕØî‘ÜNs¦¸ j2Ò‹8ìñoÝ!œ*¾âšCÌ®‰Ž0N`Vx'¿G±Vç<¨“&èzý`÷wµ{uŠ`õ@e
+_RØdrº$$¶êÂÜ:ì¸RXä3?p¶Búî]0®¤‡Þ_a\o›ú‘FMÛ‘ò…34Ñ¢Zˆ[g·k&ûŽ
+îË7b^ §TžHx…„jôžª¡ór]°«¡ MKÒtÜðþHçQ¿¬ÌI¹¶×}[·Z==e$Ý)ê7ˆZÔ×`.\±X(è]òc›Í9“ÙŠO[l$v|Æ¿ÑžE'û<tŽMÑrjH¾ æÎp¦EŠ$á
+endstream
+endobj
+662 0 obj <<
+/Type /Page
+/Contents 663 0 R
+/Resources 661 0 R
+/MediaBox [0 0 612 792]
+/Parent 576 0 R
+>> endobj
+664 0 obj <<
+/D [662 0 R /FitH 686.127]
+>> endobj
+665 0 obj <<
+/D [662 0 R /FitH 538.126]
+>> endobj
+661 0 obj <<
+/Font << /F48 455 0 R /F8 458 0 R /F49 457 0 R /F74 666 0 R /F14 574 0 R /F11 573 0 R /F1 667 0 R /F10 668 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+671 0 obj <<
+/Length 2207
+/Filter /FlateDecode
+>>
+stream
+xÚÍYMsÛȽëWà’
+X Æóý‘µ}Hjʶjݬ=Ð"$c#^²wÿ}Þ|
+ëðŒ6bÔfÁ+š©…ÒEiPZäe|p7 Cr
+Ÿá°\ÊÀÛ}‡ý‹ñ›ÇÏh¢(Ûú[ü2òµÿ«„ÿFÓ¹Üäh=œZp‡!ÚîhÒ&Ž*E
+Q†.´Ru§ÙbFèØ$» íf„*{Z8@-㬕ßÂVÔ”ðBBäStC J…ÑŠ©Tœl:Ú¡hû=倜‚¾ãÄ»Ô@:ˆa…ÜJ ûïl÷è˜ ¡œð—æ­8‚§9Þà
+uŽÀÀŽ-ß‚ÅèVF^t+33RiøÈ€ªJå”΅ÞˆÆŸC!·Bú{Rý±@ÝÖö’P$DÝ^ŠXD2ÞF…“.æ!ÉBÄ'·^{ô§  vµöÅXwO»v?¹×’aÙáú*|®ãƒû$SÒÓ.M KºŒ<è/Z¾R£`jwÙaÌkò §HÈ”J¶oúm¸1 co‡‹
+µÅ%P}ÿÛÚCh?ïoŒ™^$kæÙ[#R1¼áŒ.þ#åô³¹—§ü’ê4NòC 8µýJÂ=™øVÙ¼pût¶¶9³v´ô:k³£µÙÿlm~´6Ï&ï
+endstream
+endobj
+670 0 obj <<
+/Type /Page
+/Contents 671 0 R
+/Resources 669 0 R
+/MediaBox [0 0 612 792]
+/Parent 576 0 R
+>> endobj
+672 0 obj <<
+/D [670 0 R /FitH 686.127]
+>> endobj
+669 0 obj <<
+/Font << /F8 458 0 R /F78 673 0 R /F11 573 0 R /F1 667 0 R /F10 668 0 R /F14 574 0 R /F70 508 0 R /F7 674 0 R /F49 457 0 R /F77 675 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+678 0 obj <<
+/Length 372
+/Filter /FlateDecode
+>>
+stream
+xÚ½’=OÃ0†÷ü
+ö«¿â!Eb`ÊÖ2¤J["‘D¢-ôçsΗš6¤"Ÿ}öÝóúµ9ÙN£»4šÍ­#¼‘†¤"¸g<1΀–¤9YÐçzÏŒ¥3†î‹ºb±²¸Ä(hÞ.îëêc]…Í{IŸfóÓ¦J%€ Ù´;áHÄ;}D%ö¤(–&©=N,&U[»”‚ªÇ¤fÖsŠ·z‹5]ò„+Ã^ŽÞ†`©<ë3¦·b¡Àk{%[_°Õ¯ÙîJ¶ýMbÇAù`³
+ïäèú}7!Uh ÒèAë¥F‰4fU>Õă²ƒµ÷D†¾6œy‹¯Ö¼aŒm¼L:s³ãwæJÐÂü½¹Ù±3·l×;k@rùÎ&ÓÎöñ!¾
+endstream
+endobj
+677 0 obj <<
+/Type /Page
+/Contents 678 0 R
+/Resources 676 0 R
+/MediaBox [0 0 612 792]
+/Parent 680 0 R
+>> endobj
+679 0 obj <<
+/D [677 0 R /FitH 686.127]
+>> endobj
+676 0 obj <<
+/Font << /F78 673 0 R /F8 458 0 R /F77 675 0 R /F11 573 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+683 0 obj <<
+/Length 124
+/Filter /FlateDecode
+>>
+stream
+xÚ3PHW0Ppçr
+áÒw³P°Ô³432SIS043Ð333W0³0Ó342WIQˆÖ¨ÈÌÔŒ ñÒw3GVjd`®gll
+4¬È/¿DÓÌ\#QÓÌL£$3?OS×ØÈÍK1,4œóóÊRó@Å ³¸  .@§]C¸
+endstream
+endobj
+682 0 obj <<
+/Type /Page
+/Contents 683 0 R
+/Resources 681 0 R
+/MediaBox [0 0 612 792]
+/Parent 680 0 R
+>> endobj
+684 0 obj <<
+/D [682 0 R /FitH 686.127]
+>> endobj
+681 0 obj <<
+/Font << /F8 458 0 R /F78 673 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+688 0 obj <<
+/Length 1392
+/Filter /FlateDecode
+>>
+stream
+xÚuVKsÛF ¾ûWhr)5c)|?Žvl§iýhme:$‡5¹4w,rÕ]Ò‰óë,@IL™‹`,ø
+ì øŠÔ°Z(•]©ŽÕÐÑ>K*}#z:©Ø¨Ó=µÞn5&ëë¤!qàž‘ÿ Êì¶ëå*Íﬣc±ÛmUéžñ‚ÃÏÇØ/JÒTlá2<ËÊžÁ<æíUD®ÓÝjKP§Z›VuO𼘼yÅÿîÅHTÐpSà}öƒèÎ%-ñ6$Ô7lgwôŒR¡>½ðCŠ¼Ç]
+—“Wbàn«;ñ¸•sᶲo¨ ]…Bü7ÐÜ[÷
+ä 9-Q<ˆ9‚Cà VVP…8ò½óW…4ÿsì]~·SBÁQ±ìô–™ˆ+eKa°¹ãœ‹ã1¡¹)‚ÚˆýÇY)è…+óœE>Zè¡ß ŽF0àÁ`Ù—0ìÉ$¢ïe»cC@þ<œsXƒKRN}]àL“’á@ÀúPü °¼'Ò·º•¤UÉZ Ûž˜—%Ld±¤%¾ÆÀ y†ÒÝI=°ÂÐ'ÄÁÔ±sDtˆž 01t~ ‘<®!q–ŠuÜ¥HÍœ¦•4ö”GGÕ&ÁRÈY–ÝáHÁÿJ–ŒQù‹©
+C_`«±_cÈŸðp¢_oEÂVœbÇ¥®ãˆý.F\Ç\”í¡ ´ƒ.üC—F‡ûF?Šêýù+›² Øعyˆë}ôï>À©;Û¿®B}TP5z‹íHòšºˆ¡wIEzÒ¿¡WKglñUõ SW!²ÜþÁt¤NçÁLÛº–ä í SAWµ;@,+xrdÞáñPõP’A­Ç5—ä¼OpÓ³tí#–¨Oq‚Êñ3“}/ZãL&i~·øËûñæ>U>„ïögºÃ†DêÑ5ãиãKýÔ©ï²ux   ÷Léþžiï¦ãç_š>ßSïÏ-‹¦wîÝÌŸ|±i²ö³t±
+ýx„9½ð›Rj¢w¹9ù¤Ï
+endstream
+endobj
+687 0 obj <<
+/Type /Page
+/Contents 688 0 R
+/Resources 686 0 R
+/MediaBox [0 0 612 792]
+/Parent 680 0 R
+/Annots [ 685 0 R ]
+>> endobj
+685 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [131.887 489.796 159.782 498.596]
+/Subtype /Link
+/A << /S /GoTo /D (cite.rfc2119) >>
+>> endobj
+689 0 obj <<
+/D [687 0 R /FitH 686.127]
+>> endobj
+690 0 obj <<
+/D [687 0 R /FitH 533.793]
+>> endobj
+686 0 obj <<
+/Font << /F48 455 0 R /F8 458 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+694 0 obj <<
+/Length 112
+/Filter /FlateDecode
+>>
+stream
+xÚ3PHW0Ppçr
+áÒw³P°Ô³432SIS043Ð333W0³0Ó342WIQˆÖ¨È,ÓŒ ñÒw3GVjdaTj
+4¬È;µRS×ØÜB£\ÓÈH#_ÓP£(ES×P£¤•Ë
+endstream
+endobj
+693 0 obj <<
+/Type /Page
+/Contents 694 0 R
+/Resources 692 0 R
+/MediaBox [0 0 612 792]
+/Parent 680 0 R
+>> endobj
+695 0 obj <<
+/D [693 0 R /FitH 686.127]
+>> endobj
+692 0 obj <<
+/Font << /F8 458 0 R /F78 673 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+703 0 obj <<
+/Length 1940
+/Filter /FlateDecode
+>>
+stream
+xÚXKÛȾûWèH‡l¾ç¶vbà 61ÖƒE‚Ý=pȉ0E
+Ý”Çþ÷ùêAJšá&Á`Äêbuu½«šÑf¿‰6ßDú|÷ðæîCZnLæ¹É6O›8ÊÃ2¯6Y™„IYlÚÍoÁûC}š¬Ûî’" âí“miX”ELÛ¢Í.­Â™þÓ°Mâ`r#vÄA{n¦nd[¹©Â*7¹nÊbœ–È®‡ƒ]-Ut^ž¼Lƒ½¬«{ÁÎî´Ý™"½}»Ý¥QôÛ«í.ü!úÖµv°ÁÓ”Ak›p»ËM|šny¬½m„˜üœV€_?'"âKgŒ¤
+IÇa•å"ýåˆàDÚCHhOÌ õ¸ÅÏÿ9¶e`ÀÃ0öã¾³^ÞüewÅ8-Ú|ÝÌÐßá·"½2e\$a”æxŦétw÷üüŽƒ ›ñx§œÄñ·~¨ª0)Šy/Ža¨â"$”‡z‚¤7”2ajU?“]l°vúõ3Ì”™B
+ÄéÀü­·7¬ÊZŸ4¡jç%ùÙxþ4¿Úî;×/™gPÞàòƤïÂøeû¯5#ž‹†™‹†N€¨¶ ØÊþÏKFñb
+-LÐœÑáÅÞœ@¡Xˆ
+(°^P˜ôö°„_ú!çù FåGv¤gí»ÉÁµS¶mÇz©ØL1és}Ôü´L &C¹úHÉþëêÉ
+’3 DŠ ¤  ài;sR~î>Äñõ(™!ê§NƒÿVŠd“‡U‘”DQ„UUn’0U h… ‹*ƒo.Tï•*ºa(bn¢ÇViEfsEôqr¯] 꼸fÔ`àvjJŒùD3¯Ýôá Ö;9tK¯Vn-åÐÐ-}sWˆÂÒ¬šd ›‚ÂF¨™çקº±^àZ)çì1š=&øb—‹ÔŸå ¯ó)›@@‰¨¥¶ŸXwé#$ßAÐÕëYæÇÝê¨V£Jtô$Ÿ«——‰\§‰mï·¸èA´{s½•”$Ø0œÓ ‰R6¦÷øƒÀÚ›ž‹éi!S“ˆ^‘ÐÖ¢ ]?+É:xR«¡.B/C° èœà®tÄ‹~ðu¦â]NyÉܦ#§rbè{ Äi˜®V:ªrUšB5Â[Ky¢«¹Œ6€çÙ—®<­ôAU°ä>E4ר÷%mÅ®¯åŠ
+*°Á Ïm7CÈD„Ì2tW‰øY¼+ËSõñÔÊâ(@Ûµö4¼Ü ûÚíù#BE3O#À–ò
+endstream
+endobj
+702 0 obj <<
+/Type /Page
+/Contents 703 0 R
+/Resources 701 0 R
+/MediaBox [0 0 612 792]
+/Parent 680 0 R
+/Annots [ 696 0 R 697 0 R 698 0 R 699 0 R 700 0 R ]
+>> endobj
+696 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [278.919 466.211 380.288 478.167]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.on2.com/)>>
+>> endobj
+697 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [291.942 408.926 320.225 417.837]
+/Subtype /Link
+/A << /S /GoTo /D (cite.Mel04) >>
+>> endobj
+698 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [200.048 280.08 216.846 290.928]
+/Subtype /Link
+/A << /S /GoTo /D (section.B.1) >>
+>> endobj
+699 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [308.085 200.992 322.808 211.84]
+/Subtype /Link
+/A << /S /GoTo /D (section.4.3) >>
+>> endobj
+700 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [434.087 177.082 448.809 187.93]
+/Subtype /Link
+/A << /S /GoTo /D (section.4.4) >>
+>> endobj
+704 0 obj <<
+/D [702 0 R /FitH 686.127]
+>> endobj
+6 0 obj <<
+/D [702 0 R /FitH 668.127]
+>> endobj
+10 0 obj <<
+/D [702 0 R /FitH 380.77]
+>> endobj
+14 0 obj <<
+/D [702 0 R /FitH 265.816]
+>> endobj
+701 0 obj <<
+/Font << /F48 455 0 R /F8 458 0 R /F74 666 0 R /F11 573 0 R /F13 705 0 R /F10 668 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+711 0 obj <<
+/Length 2339
+/Filter /FlateDecode
+>>
+stream
+xÚÙn9òÝ_¡·iV§ïcÞçò“m0@2ÀRÝ´DLZ²åc0¿uQG,/òÄb‘,ë.F³õ,š}¼x»¼xó¡šÕa]$Åly?‹‹(,ŠrVTE'ålÙξÉüÏå¿Þ|(Óãu¦Q
+ThËõ§«Ûåû»ù"MÓ 狲¬‚›ÏË»yR_Þýûzyóå3’¹ˆäêÇ7²úˆþ".ª0­‹Ù")™ò5ŸÇIÿÊÜs&a]îy¹î­þïNx÷Ô=SU48Û¨am†5bâàÞª^ó¢U“vÿ(dzÇÍ<`%Þù=Š³®çE5´Œ|0­‘àµ
+£¤†1ë<g.±Ðh ™ÅY ¬f ÙM LãZOmÿiÔÀ˜ÕÈ>·Ûna^£tË8#á_Ök¡: â%:åbRfЖÕr?Ú^MãU@ù™ñ"3°d`ÕéÄi«:Þ²ÜèÑ*†
+f²ZõŽþ!! #­Ã*AoÀF]3¿=fÏ fh€–Ã'cF6´z;mä¿Wµ­™Ì80[øêÎ/¹­"YIÇËÃ(´¶݆l9Y5‹³0ÍŠm–agÌi¦ð¾8ɃëN9gPõÂK_šMÒ0Ž*>ê…”%5±€£LWÝHÏ'QÿµXñ{q¥{fp²jp¨$ž6|¤Õ,oPyí&Ó™¿µ¿bà±bá!“ÜüJ<ã{%/ŸGa^W~OÅÔ–d ¬4½¸¡ñFÅa’•§†öÎ8Ðã„þ”'ÁõèÀîÛ™WYpx¢€å8hfÑ”(šò $Ò$v‚›±^GÚ€“G1Èœ” ;@Çh
+å;r¸Éýž3Îií­@$‚`b`ˆßéöh*ÏäœpÁº²’+)ýÈ!#”|ÅŠI¬È/=Pïi±xaÞ¾è}æPlp’$ì[ „:å¼óWO@lj÷ Öpœ6G8k XÇD‡ÇEO¸ÀbÇxU‡xŸpáw|£ÕzÁUb!ãÖ¨Uw6‚Ré™ÅÜ 0„ïëÛ;w„ßC&BA¤ÒàÖ4ÊÈ )àaîËú„Â3Žài¦ÇÅ]ÏJ…è‚„Ô®—'ër'8àö±R}Òíý$•R3qQÒÙ3Ñ£<(£#™¼8)Ì@A;È‘iK†Z¼‡´'
+Ú728Ù9¿üh€
+;ŽŠ @QÀ†:D–{ýÈsý¤0Ê.*.ˆ’L+…ïÙ¾2;['æØ,ãt<dÐÞ›‹ç,&A¢p{Yá Wö /`éB5ù£ØvKFOËJFÖ
+
+endstream
+endobj
+710 0 obj <<
+/Type /Page
+/Contents 711 0 R
+/Resources 709 0 R
+/MediaBox [0 0 612 792]
+/Parent 680 0 R
+/Annots [ 707 0 R 708 0 R ]
+>> endobj
+707 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [242.97 212.835 252.435 223.684]
+/Subtype /Link
+/A << /S /GoTo /D (appendix.A) >>
+>> endobj
+708 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [393.624 141.159 421.354 151.896]
+/Subtype /Link
+/A << /S /GoTo /D (cite.vorbis) >>
+>> endobj
+712 0 obj <<
+/D [710 0 R /FitH 686.127]
+>> endobj
+18 0 obj <<
+/D [710 0 R /FitH 592.328]
+>> endobj
+22 0 obj <<
+/D [710 0 R /FitH 460.322]
+>> endobj
+26 0 obj <<
+/D [710 0 R /FitH 195.842]
+>> endobj
+709 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F48 455 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+716 0 obj <<
+/Length 1965
+/Filter /FlateDecode
+>>
+stream
+xÚuXKsÛ6¾çWèVj&’Å·Ôœ7îc&I§UÓδ=À$$bL‚
+HÆu~}÷J”鋸ØÀ>¾]h³8.6‹_½Û¿º¹ËãÅn½Ë¢l±?,ÂM¶Þf»E¶ÍÖa”/öåâï \gëå*Ï·ÁÝ2ÚŸ~ûðv¹ƒýrÇqpûéãÈþxû~ùïþ—›»í…Î8Þ®a“ +‹q«œ`±é*ÊaAÌsJ]´Ëè,µƒoQÐWªg¦rš‰“Óa`ñ "5–¿Ÿñ¬­»7\" “`_™ŽEEkÿÙ„Éqpª7­eý¥ê•hi¶íY¤Pý×ešÊÔê¾Öx¸Ç* ×»4åÃã¾h—ϿƯ‘J‚Çʸ²bÁÐéŽÕ/QŽ—-™Í;ÔO‹Ac×kU®i·0Yï’dºå¾Ò­Sx»(hÔîEæè˜ÕWš‰N5BÁÍ—Qô®å+á
+×U³¸Ô9ZO¦#ë$a,ÖG>Ø5a»²¤Q¥(ï[:éjî¨Æõ€Áï|0$4;Î8Ÿ\{¯îMmzä?1³ñfªy|hÝ•šn÷LEó@ƒw34Dad‡ŽåÊ–BÔõ•Ž/à“AÙÕœk{óM%Éâà¤س»á8!Ç#ŸÍ Œ{Ów½Óªa~>„É…Û8•(D¾‘õí¡×¢¢ÓârH†‘ÃÁ–bdæ`ź.Qw¾ÍƒŸÑEÉ–5'x9¸E„Óh5ЄæD6m»Î`8óì¿ùe²@YñJŽƒ µX¿fÙxk`>š¾j‡~rêŒO]q>{ä8‡4þjÚ¡«Ÿ8ºç¼áĈ½“ï_8!=´<E<ãÙeŠ ŠFG\"‘ÿÞÜ%» ðŠ †79Àœ;<üØöúûœœLFœ“œ¤Yùf‡ë 4Ê´b™†hØgÚÂ|§~–±¦7ªG¸KwSÇDÙ& @²ò…¬ìrO<4’ëju@ߣg(PvRdbÆ öÒ*Ë×øhâ+t#![
+øsÞq¸A° ƒ–éº%ŸâÜŽ¿ìº0œúÆ•ŸqÏ)«e¾rm¾‘ó'˜MJŠøìádâaðÝ¥·Þ=”QB4Ö2AÐ8übÄ\c{ωÒWÌwúË` „ EÀž¸%˜L(Û¡Žf‰•ŠÕS¸’¾ …³âÿEü¬•;b–‚ á’8›À Ç\Wå˜õK® =¶ˆsûJÔðuYÚ¹™kdþ@9/—
+"!#ÃW.Sô‹P’ør-…
+øàFkwP…¬(5!,Æûщýl² ~je)@‡´ ˆjQ"¼—;VUŒ=*£ [È’sÆ· Ô#q
+îjD„~¹ôj¿ëh‘™~ã9£W-'u}ÌãèKC€‰ÒˆLg‘—ø@`kÉ«²ð| J›ønOm¥
+KS!!>^û&Œ¶µ+K@)}¥ßƒ|%'™¦)l~’'.<Þ¨'òofy!Mþhúd'ÇËéxã߯Oyò—ô8Ýa(všWv
+endstream
+endobj
+715 0 obj <<
+/Type /Page
+/Contents 716 0 R
+/Resources 714 0 R
+/MediaBox [0 0 612 792]
+/Parent 718 0 R
+>> endobj
+717 0 obj <<
+/D [715 0 R /FitH 686.127]
+>> endobj
+30 0 obj <<
+/D [715 0 R /FitH 406.096]
+>> endobj
+714 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F70 508 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+721 0 obj <<
+/Length 120
+/Filter /FlateDecode
+>>
+stream
+xÚ]»Â0
+endstream
+endobj
+720 0 obj <<
+/Type /Page
+/Contents 721 0 R
+/Resources 719 0 R
+/MediaBox [0 0 612 792]
+/Parent 718 0 R
+>> endobj
+722 0 obj <<
+/D [720 0 R /FitH 686.127]
+>> endobj
+719 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+727 0 obj <<
+/Length 1600
+/Filter /FlateDecode
+>>
+stream
+xÚ­WKÛ6¾ï¯Ð­2³$EJTom)zH›E€"ÍAkk×Bdk+ÉÙl}¿áŒ¼ÖÚÛ$H/âCœ÷7áNn¼ºÐ2þryñãK«Už[Ÿ\^'Fç*äeâö‚K.×Éûôù¦ºë~±Ì
+ŸÚŇË_™Ì©"†Èt²ôVù"‚gMº®×Ló®Y×Oߎý~5îûšÙ„¤Tenó‰‰S>Ï™Éå¦îúê‡tÚ¤õn6¤ëfwÃ[ÕnÍ“u}òﶧ"]-– „I#ãU5ÔBÛíx ¬qG
+ÙÌ)r(úKk{ªu©2;¾euV |>ŠÌîZ4k>×í K—9Ø•À2YZ—©\çÉÒUzÏü†z56ÝŽ89ÌV}sY×»sÓ-`å/*>÷iòvž^÷Õ¶æi³0©0j«fͳn?>Ã,€yCd²ÝìHóQ˜°9äK|>BÀÞÇoR!@2CÏõ7Ý@â³ìŒO`~ÕËß®¿©vÍ?õZÐeœÊ\n®P¾d¦VÕXŸ¾\”.,ôéoÕ »§ì:‹/›C¹‚ùüLú¸É[4oÑÀ˜ eoàQ–#› ŸtËu³­wBUµLWõ Â¯{^Rð‰æ!ø eÞp§…mó‘ø‰øwo²gçºbàscíË´on61VË ㇟’]˜#'ª±æýá~ë-0ÏÓ»fÜð6F“Ê‘ÉxbÇø¿æVÐFŠö˶¾yÕõ;Ô‡c…%‰#ê +,0‰>†<øFôÇ] íHÂØWý=ï0mº­"&ïyu€8vý¶…Ïݦ‰
+U–!A‘|©Oµµª(=´y8ôìœ,UfÙ$ê¹Ð3QÆÂåJáru*Ê)Ü&ÉÑò ±¬žŠ´^c¾$ÓÌ„ö§BQDqúè̪Û2BÆÄpêí8‰¸Š·V,\gt4™Ž€ýÎÀ»ÖÎb±ÅZ4¢^ÕÏVUÛJ6£º[¢fwÐ94›B…"Lº¶ûmE5Ù‰¬Óhe‹ìÆt6Þ€þótÈ_¾'Ai—‡ì €h¥KûMÂúsÂœŸ “´†•9_Öd.;Ÿ¶Äùs'Ìýlr(æUcÓǺ1s÷™²@–æ`Ž’"á´TÄ£ æÅC‘Ȉ߂úšW-(ªÕ047»x9fñú¦Í÷ý¶î›]Ú´õiáɺ}ýl¢cŠAZœY™Go° ‹þªv_PvꤿIxòÇ«‹ä}<Fý
+˜ºîÉ ÃÆãñÅåÅßÂÎ$ÖU
+ì¾×¸ ?£²Z£kåœt~3¥ÁÊxª”ùcm’û«µAz¸¬ÀhTVΪÁعʭýº¢’?YT€°r<)†™/JûBuO&-|¨
+¤íÒÀ)¹È³ÿ“¼þ?â‚Ì(ŠòP2{
+Îâc¬r`iB¦¼?!û'ä±sÐqøàjVœÞ' O–%½:Q´‹Ó^Sfô\]ìé1›ÚL¥Ñ‹÷d1]L?(6},)‘BJÍù}A ÷WCµ½ÅŠÖWS/I‡„}µ£ FÚ2ŒS‹û‘KС';º`b9(´t54!.y™òK­‹-#¶×M/Ï9j½›Ú_œÜÖ?ò¨×®Æi&üîš5wê%³ÆÖ¦žú~yýˆæÈ+g݃tÆzò…Qå">°ØTTM¯y!z€²ShÒ±‚b:½71´ÆTêT¥ã;ÃÄÇ(
+endstream
+endobj
+726 0 obj <<
+/Type /Page
+/Contents 727 0 R
+/Resources 725 0 R
+/MediaBox [0 0 612 792]
+/Parent 718 0 R
+/Annots [ 723 0 R ]
+>> endobj
+723 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [370.603 285.708 385.325 296.556]
+/Subtype /Link
+/A << /S /GoTo /D (table.2.1) >>
+>> endobj
+728 0 obj <<
+/D [726 0 R /FitH 686.127]
+>> endobj
+34 0 obj <<
+/D [726 0 R /FitH 668.127]
+>> endobj
+38 0 obj <<
+/D [726 0 R /FitH 420.801]
+>> endobj
+633 0 obj <<
+/D [726 0 R /FitH 195.496]
+>> endobj
+725 0 obj <<
+/Font << /F48 455 0 R /F8 458 0 R /F14 574 0 R /F70 508 0 R /F11 573 0 R /F13 705 0 R /F10 668 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+733 0 obj <<
+/Length 1133
+/Filter /FlateDecode
+>>
+stream
+xÚ}VKÛ6¾ûWèHµV|èÕ[ºd‹I·N/i\™¶ˆH¢CÉ»É¿ï ‡²µ­Q,`Îp†Ãy|üVYrH²äýê—íêæ¡Jê´.D‘l÷ /²´(ʤ¨Š”‹2Ùî’/¬Xÿ½ýõæ¡”KG©ÒB*ˆ\n?¼û´½Zo¤”L¤ëMYVìöãÝýmýùxwÿEÅþØ>­EÅ>ßn??ÝcäU³¹yPUÂU*U!ðŽÍ|ÉF”p±¤«D*ÖÎEÎ>Ùf:yaËœ=™ƒueº¬(KÀœªšÓéwÃz#„dfhHÛ™îöbwÆ‘qïuoH´ÑÛç5yÚ‘ö¼ùv²žÎK6ÅíÆò^ð'Æд¼ÚÝÔR=ÄC­±‡]§¤ÕQÒPƒùsžÖyNù÷è|ê&{ì ¦QTÌíií÷ɘá',+c½þj‡Yô@+ƒW™ƒ×î” 6Jv
+AŸC;Œ'Ãô¹£65èòu$£yÁcf íµ51þÔ‚wë]¯ßÔPP ÇN˜¼¬©Ì Œ§çQ÷PÕÐS@>8 òúH÷y(Me%”1¬âyZâÄ;c¯»ª!èf Dˆ‚ÆóºÇ€¢uÎq\Š eø¹Ž¨B¦e%æã}÷PçFŠ<Uª|;²ØXH«’
+•yÒô«og#þ^Û¸yìyrçV¿ÃßsvÙÌ7‹ÿùô>¶røþ𵤨¸Hññ«ŽÿŒœ•³ßbõ'OÌy®”Db ©–p‘q®ãÿöbÑ“
+endstream
+endobj
+732 0 obj <<
+/Type /Page
+/Contents 733 0 R
+/Resources 731 0 R
+/MediaBox [0 0 612 792]
+/Parent 718 0 R
+/Annots [ 724 0 R ]
+>> endobj
+729 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./pic-frame.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 735 0 R
+/BBox [0 0 350 285]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ExtGState <<
+/R7 736 0 R
+>>/Font << /R8 737 0 R>>
+>>
+/Length 738 0 R
+/Filter /FlateDecode
+>>
+stream
+xœ­XKoä6 ¾ûWè˜]tTQõ¸èãÖfw€Ý{)²“LŠ™ɦèß/%[myMcäàÉgò#MR¥'¡$•þ¦çÝyøþƒ߆ŒŠ?O?ž†§ÆßÓãî,~Ø“xN:0Åþ~i@è(•EOÄÑ  ûópóYüzÿíðònÿç %¨h‚R9¢Øn~{¼{ùûù^'Ž]"#îè¤Gë3“ÛeïÅ.dŠß™‰÷Ãí`¥×V£øgÐÖÈ„ö¥çú¿‹ä«§áã`Œ²äw“©
+Qfó(Š95$€ŒR´®!ˆÒà•tj&S™[½VÆ©"U¯j]C¦ºhö—¶–u\$YD«nªä_/Ûè=«VY¿•*•ÌJ
+/‡¾OXe'·¶¢:¾¦ª@jžÙ4€ZÎW‘j³j]CÀi ó}i+Ùw´Œ¼g™@tÒ¬’G *•Ë@Z2iûk¦fjí-K-}>•£…Eñõn^4ѹÅ+ožÜ>Wòv1Þ}–xÙmE•Ýš¢W»c 'ëŽ
+'jBhò¡¹íÔÙÊö'=§Tys-’¾2Èôz¤h­"“} Z¢ÓÌÇ&3-ˆ*Zã^g!½]s¶7Ò;Ò™¥úÛŠ*ÕßJûØ÷ù鲑ÜÚˆ*/ “¦ ÇJÞXZb 9q)çœÔžKMÈ«&d:4HãI—¦`ãò€Xj:^ç ÙÓ;½ŠŒZëH°Ò%¯°NÚs[£ýQ/M¥Þç¯)L–Ž¹^‡­u¤ØÚù¸×Mf*ç*Ú_•[HoWíôŽ,ͦvºÕX7}ûØ÷ùYf#»µ Õk†‹Ú­ ¦õÒ*¦m„¯âUÖ€Òu(åxS,"­—¶$´¥ZJ­-Õ%Ò’°‚”&P“¹´ÕõÒV|Ëî:ï¥ÌÙÞHïHg–õÒ·Rñ^Ú²×G¾KÎ2¬‘¾‰‡ŸÎ¦på ¥üa:÷>Øñ¬DX£÷’ˆc'ÍBÿïÖœ—JidŒì²ËñéñëËqvµbèè‰z<Èù0^­üôüÇù ~9<>óJe¦óù¼êéØŠL¶ç›îlhî¢c™·zæÅ
+sšÜCš`0‡¼2ç["#u
+ò g`—×D;°iŠCдõ'ÇHàËúN}yWï€n‡¶dÇ
+endstream
+endobj
+735 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115427-07'00')
+/ModDate (D:20090924115427-07'00')
+/Title (pic-frame.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+736 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+737 0 obj
+<<
+/BaseFont /AHFVLI#2BTimes-Roman
+/FontDescriptor 739 0 R
+/Type /Font
+/FirstChar 32
+/LastChar 117
+/Widths [ 250 0 0 0 0 0 0 0 333 333 0 0 250 0 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556 0 722 0 0 0 0 0 0 722 556 0 0 0 0 0 0 944 722 722 0 0 0 0 0 0 0 444 0 444 500 444 333 500 500 278 0 0 0 778 0 0 0 0 333 389 278 500]
+/Encoding /WinAnsiEncoding
+/Subtype /Type1
+>>
+endobj
+738 0 obj
+1099
+endobj
+739 0 obj
+<<
+/Type /FontDescriptor
+/FontName /AHFVLI#2BTimes-Roman
+/FontBBox [ 0 -218 932 683]
+/Flags 32
+/Ascent 683
+/CapHeight 676
+/Descent -218
+/ItalicAngle 0
+/StemV 139
+/MissingWidth 500
+/XHeight 460
+/CharSet (/F/H/O/P/W/X/Y/a/c/comma/d/e/f/g/h/i/m/parenleft/parenright/r/s/space/t/u/zero)
+/FontFile3 740 0 R
+>>
+endobj
+740 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 2964
+>>
+stream
+xœmV{TSg¶?1’s´HoÉdHªMÒ§:U­ÞBíÔiQÛ)ÊE
+(D $@ $Èæ™@€á‘ðˆ¼T©,N[ÇjkuÚ©x{×¹µw:Ìíšï0Ÿ÷®{°wÖýãÎZguÎÙß·÷þýö޿󱈵k‹š$+”¨¶'(
+³å«ïÛè,zÓú6`ùߢVö…<CĺÙ ” ¡k{6…‡£[O!ï“ÈôO›ÅÒØúcJm±,OªoINHÝúòËÛþïËÎèèhñ íß-âý•,O.~‰y(•(”…¹z¯8†Y]P ;)Î+Ð*¥*qvNŽ$gu[Jv$_|PV S*¥â-1[Å»"#wngn{âd…'JTâÇ™‹ãÑâXq‚$¯¤ »øÿ[‚¤->¨R¿S’}2Gr8÷HžTV˜*Þ²u[$AD¯‰Äf"‰H&¶)Ä[Ä~â
+p¸w5äçæN=  !ÊP¹ÏÂÀ zÈ7šõ]p›Brô"ù¸t¯Qa´Àè«òÒ;¼•¾ðË×Qô§Ümè·è¯m
+1pêë«MV¦3 -×e/)i.ÚøzBZLâÈÉ¥tÑ©Ñ2—
+
+™ùŠ4YA§O#,í¯î­œ§*pd'ÇÖÞÜÈ°Ãmƒ®ú^3ãÀð׺7ÞýháÓYUðð˜)ºuýàœÌÌÉvõ
+ÃаqŽ ïDüîýî²Ó)<îÍ—Åi·6™…¦jsµÉ(IÊJ¯¨¥¸K“Ùdyêê›ê)îÍ÷ñΫCY×.MôÍ…•ŽÒârc ruþ߈Ð$É]ú3çqë KÓhÜÃúë2ººÌF„yL­á¶Ãq×Æ4Ç°†¼kr æ1‘¯«~±Jä°‡üeke'ܢРt§þ# }äyÁ)d]g\HðÒ¯¹ô]á·î£ƒ 6­šåY8ÇŒ=Ä»Hn°œ¼^×a„£®"AaÑë Ê’‚ªB ròOŸq]èwø%=y±®Kn!_¿˜öÙød·ß/œš
+‰"¹±Íõ³Þ1Çå.¦Žçh~_øկі¯"¸çé¸Oxåú*‹(µ©kZ„s–A]_ÉX–çPÛß<«ö–õöõx}ÍÖ«MTßfµƒòøÎ\òË“…q$ÞñnyM–¤¤L/ƒS7-v:sqúlÏÜ¢Û™Úâ.=»ñ4ôtŒN0&üó¯yP`©.­RéÕ¥@I§§DÍ$\;;†6LS«Þ¦CYýwÙôs(’—~ O•
+Ç2zRá(×JdÇO(÷C4……·÷ òÛ;×qNˆï¡m<ǽÓã‹°}ŠÎÝÓ¾ú1ú¿ÇX§‡~qØè¿V¢x8oÂ/àŒí#‘WâE ±ÿšó Pè(Ú„Ä(ãOò¥¤E±7_{™Á¾vf´cùWŽ oü©<X–Z]\^¬VK¥ïiS ÞsK‡SgNý–ß»@MN]ò}
+¸yeXax½ÎŒ&~’™ÌÏðDO—Qîvu]@õzܽc™‡ßMQf‰Š2kò¬{©èüßãxËPSËèd§“Œn28à…n 0òGýóA³ãŒþ}¿Œ*+‚[€ÞCÓ¼z—u
+¥“?d_yíH¶êp†Í“–&YUqMb…@YRA674A PSöš,Ñ£|˜«ãk˜ýN2¾ÕØÁìgô›‰ú„sÔ‹6,‡ß[þgFæ~@1tÿ<)DÇŒYGcgCúÿ5u$Ä W»Áè$ÕRÓ¾ú›B$—NC¥<¥Z­PøÔÁ^ß`@Ý+…­xïÏ̱ÜG±«ÛC?Çël²78€h«HáV’õºD+ã±ØI¦4ê0I¡Qíí6[ï”k¨iŸ”! „Dƒ!a5¸ÚI&4è\pB-äÐTÐ=Ô¼[%Ây$$ÔÔÄ›˜E
+'YÔXØXé†I:A¢õ9¾ŸVŸ,ÔÎËüÉ
+}T,u‡45¦id†$ ìoû Þ• ^s6eN(Ç4œË·”Pj.2*ðSø|ÌGÿ^ßRí³6 ª{Ìp@_oû•ÕŠWCÎ[Û«Oï FóÅx¿@‡šÜµ2¾.Ûå&fI½†¼lqjÇ·£äG§ùNÚAïE»í qr–PW{
++óÒ)^”äå ­_zbȺäÝ@ÿnÄ÷u
+endstream
+endobj
+724 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [275.371 569.919 290.093 580.767]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.1) >>
+>> endobj
+734 0 obj <<
+/D [732 0 R /FitH 686.127]
+>> endobj
+42 0 obj <<
+/D [732 0 R /FitH 668.127]
+>> endobj
+577 0 obj <<
+/D [732 0 R /FitH 154.45]
+>> endobj
+731 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F48 455 0 R /F70 508 0 R >>
+/XObject << /Im1 729 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+747 0 obj <<
+/Length 1406
+/Filter /FlateDecode
+>>
+stream
+xÚ…WKsÜ6 ¾ûWèÈñÒ|‹jOucgÒvúˆÝé!éA–d¯­´•´vüï ”ö™d<c‘ ˆç€+’§D$o/®ï/®nSd<sÊ%÷‰Ž{—%Î;.UšÜ—ɦ¸æ‹ešzvýÛ?ÿz·Xj­ÙO¿¿¡ÅÝß޼ǥ™Îÿ½ÿåêÖï‰ÕÚsÐ#H^Š "quk|" ×Æ)ä]Fæ¥JᾞMX,¥T–]7è’¬XÀ¿Ï¬SËò¶¤ÅÝvN«žöÇÜ'– У¹±†ôÜäÅBy¶ÂÛž]ÓAÛ,$kò¶¢]=ð}X,¿„Óú¹.«2ž·(eìH_*ö#l3.´Ÿbñ
+â gÎî‘tzb”f_hÆ•·çG!Ô©4)¸rrâñ$lS©š²kÁê,°;„àst1ï+Z<õŽÀK“)×B%žYK‚g×!š™3Æ*˭Ͼm,xnӉŬ¼ïs”ý:оț†L9
+±3<UÓ匶B}3Þ€àÜt1j†U‡Z_ZÚÖñ{[?m!4ˆd ªHú§„ïß^$€GjÕÔA*„Ú
+.…Gȉˆ»j÷¢òò#³~
+”0\ø£Hõ4Û–Ø
+Àµ×1)4Û/ãuÛMµ Z°¢ýº PÅ/,Ûª|Š´©-D&3ŠÄj,þ3ú÷Zï¡ß˜ ž*Eblüyð;ø"æ§\Xïðá?Üt&Ô€úJ .33ÝÇ1™dïZÒXéÖÌJÓÓ^† 4ðáf
+endstream
+endobj
+746 0 obj <<
+/Type /Page
+/Contents 747 0 R
+/Resources 745 0 R
+/MediaBox [0 0 612 792]
+/Parent 718 0 R
+/Annots [ 730 0 R 742 0 R ]
+>> endobj
+741 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./superblock.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 749 0 R
+/BBox [0 0 356 296]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ExtGState <<
+/R7 750 0 R
+>>/Font << /R8 751 0 R>>
+>>
+/Length 752 0 R
+/Filter /FlateDecode
+>>
+stream
+xœ}”ÁnÛ0 †ïz
+S`aEŠ¥kmçµ¾-; iZ`kÐ5ð>þhÙŠ­.( „ ø‰üù›Ê x$ðã3ÇýÑ]ß*<þv‚ÊÂþºš‡ÛÏ.3j*ˆ¦” …Ä"ÛÏ §ƒ»sœ)KÏôˆHÄXV£—Ð3‰SP>aà|N¶žjz¨ º
+u¦™ù8¸/öü@§ø?
+endstream
+endobj
+749 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115427-07'00')
+/ModDate (D:20090924115427-07'00')
+/Title (superblock.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+750 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+751 0 obj
+<<
+/BaseFont /IBUFPP#2BTimes-Roman
+/FontDescriptor 753 0 R
+/Type /Font
+/FirstChar 32
+/LastChar 120
+/Widths [ 250 0 0 0 0 0 0 0 333 333 0 0 250 0 250 0 500 0 0 0 500 0 0 0 500 0 0 0 0 0 0 0 0 0 667 0 0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 444 0 444 0 444 0 0 0 0 0 500 278 778 0 500 500 0 333 0 0 500 0 0 500]
+/Encoding /WinAnsiEncoding
+/Subtype /Type1
+>>
+endobj
+752 0 obj
+459
+endobj
+753 0 obj
+<<
+/Type /FontDescriptor
+/FontName /IBUFPP#2BTimes-Roman
+/FontBBox [ 0 -217 775 683]
+/Flags 32
+/Ascent 683
+/CapHeight 676
+/Descent -217
+/ItalicAngle 0
+/StemV 116
+/MissingWidth 500
+/XHeight 460
+/CharSet (/B/F/S/a/c/comma/e/eight/four/k/l/m/o/p/parenleft/parenright/period/r/space/u/x/zero)
+/FontFile3 754 0 R
+>>
+endobj
+754 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 2473
+>>
+stream
+xœeUyTSW1wu¶¼Fˆh’.îZ‘êNÕ"êhê°/¢²H ,l‚ÙÑö-„@@ö5 ¬¢ÒQQè>XméØéb§­ÎÜǹþ1Ïé™?æœwîy÷~ßïw¾å~¿Ë"œ–,Ë%T*gl VÊãKû­´'‹^³Œ^ˆX¾X¿¸Çy-!j`¯„.lèâÔ´fÅ674ó
+²½„
+^&Ø,VNE«¿2U.M’d
+7†GlÚ²eëÿNvøúú
+ãÕ¿[„ûÅÒ$…p=ó“%–)SåbE¦ŸÐŸñ–ɤ§„I2uª$C— NX‚…ÇÉÄ)ÂR™45U™%Üè¿Ièíåµc³ì:*•Ç«2„/"Uú
+EÂ`q’J—þÿ‚ V½§LM? ŠË9%I‘Éw
+}6nÚú–A¼AAD±'Þ#¢ˆýÄb'!"Þ'Ž\‚EðˆåÄ
+b%ññ
+áÎÔŒp":‰ßXY¬;Ëü— ±ÃÙ|œj}œ?ã¸p.sh& äX1¸I›\·ÃÆœúñ@N£r~†ŒÏv#ÒJ¶-næRÖrÞXk€ûÀó@îÓé|L€JÎA_“÷álÓ@Ÿ£Ç>'à¨ú¢¬SÞžZ{¸~ÒÒTÝÒ(Yk³u`h5ròžÂûø¾ø ÷G8nthøŒöS¢Õ0,+áTfŠ:>ÿÏÓVõÐR“MUVþ(‡’!r:ÚûOá1Û®´)¯ƒöî`u~ƒê¾a£:–‹WymÁ|ìùÝzä†Üžþñ‘ûöð«’;s ^‹OÜ›Ør1K œ<ý78 ~¸43Ëg¸°Ü–Û Fò¼Úõ–ÛÝy¤Zp§ŒUôZn•¹VAÐW‘w\ð\Bƒ!°Pës‘‘¤N6{ͺø!@;Èþä–¼aЊo‘Z‡^x²9$&=,F0G‡eIt¡¹<´y/·ëºcüÎå=`ö±½þǃ]|W´
+z5·®¤Ê\ AkÕé.!aTAÁ=Р+y°$×
+o
+W‹¥ÇãS÷C_€ù·w!ò‡»71ÌÇ÷ÑVnÍý¾i8 [”– ýZ‡ÊNã!©Ýmviq§ÖÐ!‹>Ü,NQ¦Á ó`nin% zë+S<caLn²B"SÇÁè7‚œo‹'ã[ÅUº²,˜ExÏ[t ¹Fñ39]XâÜÌ¡DæÚ:«g ´50LšÁ‹ù=ùäÁ¯C?Ƴ‚קâFá_ÁµáÁ™±áœ¤~~wJ]Z} 3(K¶Ò>VÖCf‚Ù\‹¹Ê\ Aoµ.Zð<‹‘ “Éi‚uV2Û|ªXSûyHD"!þKIQ±©ØTbâUæ•B#8s¦PÏÏÑ …•S"kŒ»Š·¡pÎöÙOfÆ;+yÖÒºb•V«å\8WSÄ\—ü3Z­žÑ7WÚ‡,*ëùA§yò|gWÔ ­¬γ™˜Ê95æZs%=ÕZFÌÒH¦Õ‰ŒLT+)*ÕWÃk€þžÁGäŠóäò\™œÖN²æ‘héc7Ò¯s-%•æÚªNG pù‡&äÑn%Ë55ð@ý$,®¬®¨h=?bë‡`´Y Àr† ÁEŒk¦• 6klp 2²k¤·a‚ ©>œDÂàüü ÆIi%ÓŠåźx‡âI´"áÖ»A‘iAa|õ i{ŒJ­Ü% Š#s¤†P ïÅ”¡ 1Bê†Æî¿;çN}GË[GÅpð§Ïƒœ >ìGR¿Ì!¿g|è#..à ô”)T ×v,ºv¸]¿p)?½çNÍ¡šäþôAÿ0ü <ô¿µ³vò:ܨøm;Ÿz‚ _•ìàêÍ"gä2÷ɯ|jÎI/ã•ß
+GlŽþ©kƒ@´ 8/ôvç›Ò¸ócØ‹±8F¸kWÌP’Œ!ö‚À5ÛN‡ÛQ¨Óµâñº*]\7¸¬$ˆÿϳƒ
+endstream
+endobj
+730 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [341.506 619.822 356.229 630.67]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.2) >>
+>> endobj
+742 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [308.795 177.902 323.517 188.75]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.3) >>
+>> endobj
+748 0 obj <<
+/D [746 0 R /FitH 686.127]
+>> endobj
+46 0 obj <<
+/D [746 0 R /FitH 668.127]
+>> endobj
+578 0 obj <<
+/D [746 0 R /FitH 230.411]
+>> endobj
+745 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F48 455 0 R /F70 508 0 R /F14 574 0 R >>
+/XObject << /Im2 741 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+758 0 obj <<
+/Length 1659
+/Filter /FlateDecode
+>>
+stream
+xÚ­XKsÛ6¾ûWðHÍD^$ÈÜÚØiÒKZGi¦“æ@K”ʼnDº$UÇýõÝÅiRª_㱸
+%›ÍI·Ï/ΩëçQÔá§ÅåL&áç·‹Ï—hùŒ;4Çž‹3à,’*Ð*|I°ÜýÝ âïTÇë;œWg¿ÃŸ·éUæÞâ¼gr© ã:
+47Lj–wÅõ¾Î½ËêÍl®u^fM›×Ô[Õ«¼.Êk×ZS…ÄQ±DIÇÒ©èžJÂDÚú/Îå„+y) x•ŒÇ©W¸ÚV³9p°D"¾7“$s©9Ó*
+æŠ3#œÓµw/æä‰ëÊ ÷LC&D2
+¿í¦(I#Ïì؆ZÍþÆêç“ï¿ÂNn*lÝâOþý­ÝÈ}O¬Ì²‚Âr™CŸ›|…N‚cs!XE䌅”È0£Çûb{åÀ´Ô³Ü×45o²œ/qîT‡Åv»oÚ:kÁ¸öæ\b`T)Íêk—Œ—ׯVG2=; ÁX¥"ü°€ZV[[œ~›•ÉŠÜFï°YVíÀ¿˜ü[V%¢o3‹Ìpk3N¡w³ÍÛœ:‰COÁ˜šð;½Q•ôl7ºq#5=ëâzƒ/´ÔlŠUÞ` `è^j²]îßêVôÍ;M ¦¥³_ÑöÑ€ýŽºo!­Hʬ£w¤2N
+\}û1Qƒêº&HÐGÔWûr•ÕÎ~µÛÀøŠYxB³Të!ÆÅ,5çE—.D›¢!É{kãá/J}à‰}1k»ÀØ',EnŠùÖuÞ’;h¢\‘ íV ' v¯ª4Ü
+8af£²¡‘á´}+°þ6@MN²ã FýÖ6§HÓ×¥Ÿ 9§ŽÛGÖÕvKAí³¢\ns}3y~À¡}8ˆ%œ­ðÈÎO8láŒýú+f™J“àÖªî_|ð`|‚{hD£Áa–œ2ê|²1>ÏÁD,bx&,ö ©ÀÉ9H²“¢N¢ {à—Ò é§Bá*R€I 1ÁG…€cÎ>bé!#˜¶o=;(Ê%æ^PLê`’ñôZB ¹yÂô¼Â§êExU13žUÞ1(:)î$s‚Õ§šfõ€èáœ>? §½€˜ÎycN0úèÉ'–»’,…oÙç-w ŸŸQú¬´ˆ8‹RðIj¦´ÛÔ`aKŒB잘çiQá'2âiX¦3¢æá9ñüht9Ñ „ñY!N­óGO?A(OXÂõ‹
+uJ¹ ‘Æ=O¨8AèÓ°LÚópBŸŽÐ>
+b¿Ã:íÊ]¨`u…CK¬“ÜeLAzÕ¾Ák ]×ÕÎÍX:[îÖEWºY Õ‘R†%ËüG‹W¯<B‡î¨oŠì`Õ’PçMîÄÖý›×NÊüˆ·Ù´Yíúl8$ïբزðì¬:üP6mžáMÖ²+)ïÁíÂÔÑä.‚t
+á_ÖyÖØk-v÷WÃá… %7ËýkÕ”Ûç.<ÿt**ˆYjT‚*†¥ÿ¸/D~w]›ÆLš`ÞÓñu4N\y
+endstream
+endobj
+757 0 obj <<
+/Type /Page
+/Contents 758 0 R
+/Resources 756 0 R
+/MediaBox [0 0 612 792]
+/Parent 718 0 R
+/Annots [ 744 0 R ]
+>> endobj
+743 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./raster-block.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 760 0 R
+/BBox [0 0 342 229]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ExtGState <<
+/R7 761 0 R
+>>/Font << /R8 762 0 R>>
+>>
+/Length 763 0 R
+/Filter /FlateDecode
+>>
+stream
+xœ­WËŽÔJ Ýç+²œ©ízo‘; %ÀŠ{™š XðûœJº’ê<JjÑêEZ.—Ïɉírý왤çü;?¿ºWBÿø»ûÙq¯š¸?uyá¹3V«?ÃÒs÷ÔyÃdÕ÷’‚!IpêÈY3Yž'‹²0¥l)»Z–ÀžXrä¤ÄµÏù©ûôпt–‚ZuýŸ+÷ÞvÖ(y¦Ýà%ˆ—lïc÷·Þa{Íxfóýa‹É­¢?o ëŒh/#yÛ;ï)Iyüú..X2Þ´\D¬†¦K^’Ør™¸ähÁ4¹ì»L\.…˾Ká’#”mpi¸.-—3—†Ká(±G*4¸4\
+—–Ë™KÃE5¸œaÏ8¹ì«[\/]\Z\¢mŠ2¬· òz‹å°¾ÿ¢×v4 JÖ»ª£ËÜÑ ÊU]¬êµe)u¯Iȸ‹ºŸ"—Žvn_Åun_óæܾ6È©Í°h]·
+õt…Ö¼E 
+S¢K¨*^±Ì˜eWÓM¢X˵Ě´–œ%ÖWZK´)çÍ¥Ö[d÷@ÖÔ.´¾U¨«´ÆQBÆÖ˜ŠóÇÖñŠ¥Â<ïjZr€djî ¬Ië”
+§ÎkÑh–Bo0ÝCXóºúF¡®º”DôÂÅHT,sIŒ'‹¹Z–R1zò*Ÿ9ò¢׹̛ëR‘ÝYS›a«ò¯¡®ÑùŠÚ•êûV!W7ëb™¿oÙÕ²f­’d 4 N­2Ú°`¬‹‹¤Þbº‰°&u‘Ñ7‰sÄ&Šè¿Áa·Í€¨XJ˜;<Ž|ä0
+endstream
+endobj
+760 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115427-07'00')
+/ModDate (D:20090924115427-07'00')
+/Title (raster-block.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+761 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+762 0 obj
+<<
+/BaseFont /SHCMPM#2BTimes-Roman
+/FontDescriptor 764 0 R
+/Type /Font
+/FirstChar 40
+/LastChar 110
+/Widths [ 333 333 500 0 0 564 250 0 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 778 500]
+/Encoding 765 0 R
+/Subtype /Type1
+>>
+endobj
+763 0 obj
+933
+endobj
+764 0 obj
+<<
+/Type /FontDescriptor
+/FontName /SHCMPM#2BTimes-Roman
+/FontBBox [ 0 -177 775 676]
+/Flags 131104
+/Ascent 676
+/CapHeight 676
+/Descent -177
+/ItalicAngle 0
+/StemV 116
+/MissingWidth 500
+/XHeight 460
+/CharSet (/asterisk/m/minus/n/one/parenleft/parenright/period/two/zero)
+/FontFile3 766 0 R
+>>
+endobj
+765 0 obj
+<<
+/Type /Encoding
+/BaseEncoding /WinAnsiEncoding
+/Differences [ 45/minus]
+>>
+endobj
+766 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 1221
+>>
+stream
+xœeSmLSW¾— Þ "N\3ꤽÎMeŠA7#L÷a@§YÃBE ’b -½¥_”ÒööcP´ñPi liiò%+à?V¢Ža6—¸,.ê6³ Û²lQC–,;—\ìÖmÙ%''çœ÷=Ïó¼ïsŠ¤¦ (ŠfV(T2}¾X­’4%÷;˜Qfc
+“‹öàJp¥0-…°5 ™©‘©O²alô¬…Îç E[}#ÅjI§h7“Û*ÅÇò¶oßñßÉ®¢¢"²Îôo„,‘é MänÑ"£Ô•¬©yYÌeS”âÙ@™4r=)‘JeÒäµ£J¦$)(…F£n!·ç‘»
+våsÓžR…ªÎ 'Ÿ)'KÕE¤ˆË ”D÷ÿ‚ Mªmùy¯î,صAÞGJ‘tdÉ@V#k‘uH6²YÍõIEZÐ-¨¥ÑOSb)7°M…Í3®,Æ̆yôÁ",YÄ‚ÌK<ï¹ÞN? ÆzèB¶b‡µê ACy
+ ?k%Ì1æ^G—¡(9°0GÚ®;Ië±T Y/*­tùYOÀºi?¸HÀ8Üݽ>ßÈÐ¥8 .Gå…¬
+å‡8IÝÀÅô
+yªUÚúš’×å[›Øõ3y?½òquÌp]ÙÌÙ÷¥:®¹§ÿÊq,ƒ?ú½5vkbú››DóÔÜF™I¨áÝ~ÚyÿV/a³ìAÞÝÄDlæêãË
+?±Fš6Ú»LÞAo£‡†Ë"­ÁÆiã°½ÛˆVÚbÔZmÂçÄa›ß™S§³tÔ´l7ÛŽ0œ·Eƒ=žð€`|Êãéöõöø<ñ(‘Ï9¸×-óT:-Õ4¢ŸŒŒOjc*!W¾5¶’C‡ÁþGôqöT
+YÂ5ÌåÙ<õb[ÛIÀgÛWÁý°äç_/Þßñ—ßøvsÅ1ézRA+Í%‘Ó9=™¾ð5 Ä{߬ٹw·=Ä–¥Ù™ x–q9:+WMd<\=Ñ™ù0”¹Aþ—e>¥
+endstream
+endobj
+744 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [373.5 361.641 388.222 372.489]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.4) >>
+>> endobj
+759 0 obj <<
+/D [757 0 R /FitH 686.127]
+>> endobj
+579 0 obj <<
+/D [757 0 R /FitH 419.202]
+>> endobj
+756 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F11 573 0 R /F14 574 0 R /F13 705 0 R /F10 668 0 R >>
+/XObject << /Im3 743 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+773 0 obj <<
+/Length 1581
+/Filter /FlateDecode
+>>
+stream
+xÚ…WKsÜ6 ¾ûWè¨é2"EêÑ[œ6mÚf2MÝSÚ½+{5‘Ä-%Õq}ñ eÙ«´³3+AP–Ü'YòÃÕõÍÕ«·ežÔ¢.T‘ÜÜ%2+DUÔIQBª2¹9&ŸR%´Øí˲Jß¿Þ©*}óÿ?ìöy®Óë_>¼ùù·ÝŸ7?½z[­4åy%@uÆ*j¸Ê¹_{~s%È™ÈB ¥L¢ó ©’Cõײˆÿ[ŒWïz|ç®~…_ÔEöQã~¥’°¶Zæ¥0²JtV
+¥Ãý߶÷³oðº9úâÛÝ^k“þØv·»½*ÓÆOìŠÃìÿFÏQço‡{^tw̽íìªÒJ~™ùÐN§v`Ú²ü8ŸYûn/S¿µwÓ¥É>ÏD¡kxæB—’opîìÐ@ M®Ò›ÚWäiÛŸ»ö`§Ö Ö*NvbÎeùäO.Ùj»ó®çeÛuLÐAaÙú°yòšc«ü:í„ã÷RŠÚ¶ø8G×E+À'ïLj[7¿}pH3Ž‹ø85çQR©E­5hVÒ—5¿î¦“›ïOŬ¾ ‡–[Ž«£ë›©í)#³ìÃÛ $ ¹Þ©žy÷o€´<ïŽUÀË19÷̀Dzö‹±è†‚ W‡Ø Çæ {ÁŽc ˜Õ׆,ZåÐE¾Ðn2Õj™­ÓÞ`±Ö±Zm÷`Çš–ÂT2JµÓxa[Lâ|Œ¦‘OkÔÆ%×…B{Yg"W¯¥È¥Zî&•IßÛÆ8/Mz·É%Üþ>o˜)¤r‘›<·i5”/²˜—Žc`ÛadŽeaÅH½öè¯ë2zà,S—fÈ  £Š2*(õÞâ9¬œÐ
+Y,1Ž¦ÕÂä:Špr‘öœ‚¹ÿÕæy)F9ÑTe.­F&Z­ªb±i8LX–ax€ÚPµ!$@æxr‡a­ÇDÔEc ÷÷é?Ì}"%Ì3k^ (‡GÏáˆ[¶o`ÏÁ¢ E™úæì›1)°*p+EñáÔ F £ Rcû…‰É±ð„²ÔºØpý… èJB±œ‰Û GÂ2”tÁtªbõ§ ‡ò˜Ý»q‹¡Y11"fÌ¡ÛÑöHŸîàŽ@¡÷À”›S6.ÏŸ±\ðSÐeIóÌ÷ü~yÉ\ÃN-' ¹¡{d5«:|v™
+Œ£0px•}˜úpk
+º©…(nÙŒc™–y* œßwé[
+endstream
+endobj
+772 0 obj <<
+/Type /Page
+/Contents 773 0 R
+/Resources 771 0 R
+/MediaBox [0 0 612 792]
+/Parent 775 0 R
+/Annots [ 767 0 R 769 0 R ]
+>> endobj
+755 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./hilbert-block.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 776 0 R
+/BBox [0 0 229 229]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ExtGState <<
+/R7 777 0 R
+>>/Font << /R8 778 0 R>>
+>>
+/Length 779 0 R
+/Filter /FlateDecode
+>>
+stream
+xœ­XËŽÜ6¼ë+tËìËðý¸0 ¹Ø ‡ENN¼‹`&€íƒ?ÝÙ¤HŠˆÖ‚K[ÓÝU*QÝ¢¾Ìœ‰™ã¿xütŸ~þèæ—oÓ‚ÎßÇ“¯/Ó—I¬çñðé>ÿr…p? Á”òr¾~žÖ2b––Icí, Sx¼Þ§ç xÒ†ó‹xøóúëd,³AÌñpýkºÈ‡ë?ÓSø)„x¤käùbb][Ö}*#\Œð}æçK€
+Dkx @„²>{ x‚ѹ‰I•£ÏØvŠ"|™‰6÷”î3´º'ø|V©CFk­à¹Í½Š
+žTéØ0\?n(Ý Á}¶Õ¢˜-’²úÈ:dðau1drL5Ó—Œ<¡ÒÇŽ4[±-I+¤¦]fâ9¥Þ2ó‡+‚ôQ*!ùÃUÊ"qÌä`5W3óç»´Ê·Ÿïzb÷HZi›Owg•B¯a~µl#¹ÇÇK<|ýBŒÓà …¡>O£ü Þ?!¤«ÁÊiÙ!-ƒ¤e?$iABÛÁ–AHÒ2
+‰Z!I‹c[¸ƒ-ƒ¤eµ B>LÿÖ¾ä
+endstream
+endobj
+776 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115427-07'00')
+/ModDate (D:20090924115427-07'00')
+/Title (hilbert-block.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+777 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+778 0 obj
+<<
+/BaseFont /ZVTVKO#2BTimes-Roman
+/FontDescriptor 780 0 R
+/Type /Font
+/FirstChar 48
+/LastChar 57
+/Widths [ 500 500 500 500 500 500 500 500 500 500]
+/Encoding /WinAnsiEncoding
+/Subtype /Type1
+>>
+endobj
+779 0 obj
+1222
+endobj
+780 0 obj
+<<
+/Type /FontDescriptor
+/FontName /ZVTVKO#2BTimes-Roman
+/FontBBox [ 0 -14 476 688]
+/Flags 65569
+/Ascent 688
+/CapHeight 688
+/Descent -14
+/ItalicAngle 0
+/StemV 71
+/AvgWidth 500
+/MaxWidth 500
+/MissingWidth 500
+/CharSet (/eight/five/four/nine/one/seven/six/three/two/zero)
+/FontFile3 781 0 R
+>>
+endobj
+781 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 1244
+>>
+stream
+xœeRiPSg}—å)K•øÊ¢&¯›Z¥ˆ{Ñ"¥q¡’ ò) ‰„°,ôÓâĵ,YÄ]QŒ!U‘¸W°¨DªUµ´vo§÷e>~”8Óéþ¹s÷sÎK/‚$IŸdµ–3Ì‘ë´ÊlOÂO&ù)^üT
+•ðzw¬p*‘Ð@ù"
+ù§°?´L„š× |A‘d¥%F§/ÌQ«2sÙëäf†„Ìþ/ͦþ[ac9ƒZ•ÍNsò8N¯å²s²1cÝz«Òê3 ¬2=K÷Œ­Wj¸,6N­Qëõº<vFÌL6",,|Θ‰LTkÓŒöq6QÍ&°rNeÔ(sþ_!büÜy‘ïEÍ ˆIC¼NDLL$ü á=vB@l'®‘ËÉvò‘WšWFSwøj?¾ºäÿâª? q’~˜ß1WPÓÖfóuã9Š££äñïëó-ÍRmC‘¥ѹ¦’¼L›ñŽk¨µÃ!st´:ÑmÔUìÈ>š°`Ÿâ
+Œð(fÞá“"|{4I¸Nà…bÉo.Xø»¯ºÉà
+TÀK¡GÃi¾wˆ÷
+>à¿e`£¨ÕìøÂÒþ,Ðl1å•Uæ¡ Ì‰0‰Ë¶mEÛÐÖ Êšê]ÇÎV”vHAœÑý!šA‡$.[œ_d9¨•f5åîÉCtvÉ–Îa¸ÿxàP×EY§½± ¢‚Δ‹Šóò&<¾Ñú¤t’'F æ9ÅËÝË,*K*X¾KÖ`ÂÁhÞ¡¹¶”vÅ%ÃuDÄáA
+“–?ÄbE^— ;!
+•Jža"Ú¨Y<kh%ÁÇõõR‰ ¹Ô°ïsºðmæî†fZKǧ¦Æ/Ýè|zóà9§CzÁÅD8Uè2í´wÜè³)âäºT9'­¬F¨ªÚCÊl¼ <ò=uÅÈ€`Ͼ ^ƒ &Ó
+ã0ƒ½#¦áÉØo`=çê:º¥i8
+S,ž½™†+àfP~•ùs³ÎQªBôÒOîƒwoÝÕÆVY½µeïaD?µGâE2âV·+Ùüö¿¤ÀâžÏ$#eQFfÒZ‹‡0ys¬=­è28Q²ÕŸ:éìi/ Ê0xH«73íXˆ9Ì)ØÈHÅß™v †=
+ÎàUaÂñ¾{kjv4Xêkö ºq·)K6š"FŸ•ç›Mæ’jå6Ú‡kÅ‹¶ïA_ÑüObϪA¾é /†)^S™ÒòRsêØ›–‹`Ä>93ˆýºÀõVò㦠i–Ú”UÛXxöçSÇúý¸WµøÓw£"d8' ·ðÁb¿|+¿Þ
+ÉVÑ‘ñO¼ìòñyÒàãKÿ
+endstream
+endobj
+767 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [348.723 261.533 363.445 272.382]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.5) >>
+>> endobj
+769 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [434.087 177.024 448.809 187.872]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.6) >>
+>> endobj
+774 0 obj <<
+/D [772 0 R /FitH 686.127]
+>> endobj
+580 0 obj <<
+/D [772 0 R /FitH 419.202]
+>> endobj
+50 0 obj <<
+/D [772 0 R /FitH 316.593]
+>> endobj
+771 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F70 508 0 R /F48 455 0 R /F14 574 0 R >>
+/XObject << /Im4 755 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+784 0 obj <<
+/Length 344
+/Filter /FlateDecode
+>>
+stream
+xÚ’Ír‚0…÷<Å]‚Hþ±»V°ÚM[ÝtºPD›©@ž~Á€£#vœÌ$wrNÎÜûMXC
+„‰µ„wÞ‡zê %=uR†eUÌÁ3Ý¿¨xâù”R— Ï—2tÏQÙ«·q?×%s§jâ‘Ð Ôl×ÉNдs팕ƒ«"
+endstream
+endobj
+783 0 obj <<
+/Type /Page
+/Contents 784 0 R
+/Resources 782 0 R
+/MediaBox [0 0 612 792]
+/Parent 775 0 R
+>> endobj
+768 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./macroblock.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 786 0 R
+/BBox [0 0 367 267]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ExtGState <<
+/R7 787 0 R
+>>/Font << /R8 788 0 R>>
+>>
+/Length 789 0 R
+/Filter /FlateDecode
+>>
+stream
+xœ}RMoÔ@ ½Ï¯ð­Äº¶çËÓc%àB”Ü(‡%ݶj7, BåçãI²i"EŽ<ÏÏÏÏó „ TÏÛÎ_g¸ÿé¾@L˜
+ÃWKߺ‚!h„7 áúƒã¤Èv_jð
+’Äcô ”™¡ß»ÏÆ2–̤Ösö(~®bŸÑsšãPå‰1“8]•§XFȬ‡•1°¾ÊˆŠöä‚üˆþ«ý‚ÚÏ-ʪûRá©ý¬ð_î0‰bò%#¥4™֦Ģ&<³Aó“ÃÚ8¦À¨é•°Ž—d=^ªLKÆ…)O’ÇÅõ÷îÙH‡ÿ)´\6¶v…“MÍŸƒ1
+K± ÉŒk:·¹ÙÐ[º9;k]!ÔjJí¨Z ¹u›÷ý®Û_@ûлü8ì¾ï+tkÎsÅn…)¦|µkûã·Ã±}06e©Š·^lÒsyºæhu!Cóñ”|ã͵³åô·Z&Ôm ÏGÐSþ¯&oÛÊæÔVìå²~-¡ï÷ÉÎ?w°Ì
+endstream
+endobj
+786 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115427-07'00')
+/ModDate (D:20090924115427-07'00')
+/Title (macroblock.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+787 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+788 0 obj
+<<
+/BaseFont /MXWNJK#2BTimes-Roman
+/FontDescriptor 790 0 R
+/Type /Font
+/FirstChar 32
+/LastChar 120
+/Widths [ 250 0 0 0 0 0 0 0 333 333 0 0 250 0 0 0 500 0 0 0 0 0 0 0 500 0 278 0 0 0 0 0 0 0 667 0 0 0 556 0 0 0 0 0 0 889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444 500 444 0 444 0 0 500 0 0 500 278 778 500 500 500 0 333 0 0 500 0 0 500]
+/Encoding /WinAnsiEncoding
+/Subtype /Type1
+>>
+endobj
+789 0 obj
+388
+endobj
+790 0 obj
+<<
+/Type /FontDescriptor
+/FontName /MXWNJK#2BTimes-Roman
+/FontBBox [ 0 -217 863 683]
+/Flags 32
+/Ascent 683
+/CapHeight 662
+/Descent -217
+/ItalicAngle 0
+/StemV 129
+/MissingWidth 500
+/XHeight 460
+/CharSet (/B/F/M/a/b/c/colon/comma/e/eight/h/k/l/m/n/o/p/parenleft/parenright/r/space/u/x/zero)
+/FontFile3 791 0 R
+>>
+endobj
+791 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 2673
+>>
+stream
+xœeViTSg¾1$ߧEÚ’¦—$­ûVÑÖÐZDZM©€,‚Ê"D²°C ‰Ñ/a B€d—%ˆ¬âÒª(:mµXµŠv™ÖÚiǶ3ße.?æÒvÎüè9÷Üsï÷.÷}ßç=Ïs„Û,‚Á`¸ï•ÊÅékB”ò8ÅÌûjr>ƒ\0‹\ÈD”|ê—©-¬…„¨Ž9¹3‘»[ý‚–xâ/cÇ‹¸è%‚É`äXšü•)ª4i’$C¸<,$bŪU«ÿ²ÎÏÏO¯úŸE¸Cœ.MR—ÒYb™2E.VdlúÓÞ2™ô0I¦J‘¤ ãÄ 3aáq2q²p§T&MIQf —û¯®÷ñY·†¾m’Êã3Ó…¿U. Rú EÂqR¦,.íÏ‚ ¼Û•)i;3ãrâ½/–$ËäBßËW¬ö!ˆˆEÄ"˜%–áÄvbáOì Þ vï"â}"ˆ`<b>1›˜CÌ%^&xôä7"‹1‘ÈønVà¬~æRæ˜[ˆ[7‹ÍJg³ßeO‚àcpî…Ç৳9³Cg÷‘FÒˆì伋Œ“xÇ$³†|[V\aªD°ÕªŽP&€Bò5‘G¡Kì ²D]…\w‘¡†ªNÏ6ÊÞPb€DÚÜ}3N vUª«Bg!V§1—¶åîäßEæ(•4oÏcj-räô{rž˜õžoÄÀ‹s¸vj%—cÏ“†ª|´ Nïh›Vëk„œÃ9øKp×÷t¹:œCh ªNËÚä-)U»j.Øê+ë!GÖÔ`ï雇ÝÖRÛø~Ô×ÜаÁ¥¦Ã/§·ÍCaY ‡2’Uñ…ï!¥±vpŸ]e½Åjç²92 Æ¢×oY# §RÐJ®oe´}ƒ«¿aâb2–K½ê³ŠâSó¿[Š=±ç³a>öZû=õŠ@«äN^YE-¤X·&$6žÎ(/ä}†Æá÷g®óé\”¼6·N…å¤ÇUÏ;“8ó‰Ç`%r­& ²"Øe)Ø/˜–
+Á&k^Œ€*h_QÑn]‘çÚÑeˆ3AÇÀ¹–2«¡ ’_£©ÔÛl´×¶vf9¥qŠŒQ‚oÁž™¤Ý“Ãó ?D<Ö‡­§hD|îÅ‘é8‹Õ@·I¥Þ„ µ§±[KËZøx³Pƒºvlbñ"Öt+›3‘nëm
+=Ò .3MfÐëTÚlÓ[Ù¯êB6Tm³´› :¤¶‚vT£=¹ÿ)µØ›bS~òø‚¢ÃFž/±¥®ÔVf±Ûœ‚ûøÅ¿S½Yô<¤*:zøØoàt/\gÜœÄÙ_1ñš©Í\ƒ9NR¸_ËS²ò@™©Y<m='˜®²Ç‡`ïçx^„_ÜòtYPpRT6?Ü­÷Œë½s›)Š½Û/âà‰&þ ·HV£i‚I¾Ž}¸ÑIé!úì~€ÁÏÇ¿pÙò+e™åÊ:U=â578N\
+8óרÈì¤xÁ¾e zR¯Þ3‡Nלtñ[éÑ\ÿ™‹Snf ’uÏ™S!?ãNï£÷P§}û=Ü^Jïá8$iJ·Ùn—A ¨Ôi3•GšYTTû¡Á¦CÛáôJ€kr|õtœnfsO BrÀ%ÓgXÕì™&nbE.¹ûr£·Ä*v£Û¦¸¬:UÔyl â1váÇmir×ú´íW‰¥ûãSv ?HñomÀàû;W0ÑϧîáÕÜÊ{]=ch 5*moÁßÙ|þGŒÏ'qÐ$¯ÃϸýÃíµ½žkJ
+PQ
+endstream
+endobj
+770 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./hilbert-mb.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 792 0 R
+/BBox [0 0 115 115]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ExtGState <<
+/R7 793 0 R
+>>/Font << /R8 794 0 R>>
+>>
+/Length 795 0 R
+/Filter /FlateDecode
+>>
+stream
+xœ­TMk1¼çW¼£
+¾æûãZ(…Þ´ =”žlUŠ[Ðú÷;Y7k1[iA'óÞL†÷$Y‘ÌŸ~]µâfhó):”–÷ýæ°{¡Žû~YµtÛ€I)6&jjÖâØF‘ö¬÷¤]>
+Ô´b"§Í;Ú9Ï>)j^ÅóDMçÖI9ÑÓ—æAô'ócbrÍ]#G_å$µ¥è~ ›îk'¶ÂÈÄQ&òF¢‹½ f¢Ò`é YbW#¥jI’a+HÜ-fà\*Ë?ÍèCXÚjG_¥ÆÍIz˜)M”gã Jq7I›ß•^m©v°žýP¿RÏ-Lþ5þ\eµ§h+(µ"‡ì¬Ý žSŒ@†ª Hö,öv•Ô)~¤íM(LX@Ú2ÙSi}Äé¯
+µ­A_©ÓbŽ&rÒšœŠì‚½ V¶.€•µ‚J#H©E\`¼ek1±±Τ†˜{fåv(í‡ýóˆÓJ¡6Qi"æ+uÊ1b0õ@ºIÁ_U~ýrx%åk] ”.Î;©ËÊB|榻
+endstream
+endobj
+792 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115427-07'00')
+/ModDate (D:20090924115427-07'00')
+/Title (hilbert-mb.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+793 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+794 0 obj
+<<
+/BaseFont /GNMPFG#2BTimes-Roman
+/FontDescriptor 796 0 R
+/Type /Font
+/FirstChar 48
+/LastChar 51
+/Widths [ 500 500 500 500]
+/Encoding /WinAnsiEncoding
+/Subtype /Type1
+>>
+endobj
+795 0 obj
+416
+endobj
+796 0 obj
+<<
+/Type /FontDescriptor
+/FontName /GNMPFG#2BTimes-Roman
+/FontBBox [ 0 -14 476 676]
+/Flags 65569
+/Ascent 676
+/CapHeight 676
+/Descent -14
+/ItalicAngle 0
+/StemV 71
+/AvgWidth 500
+/MaxWidth 500
+/MissingWidth 500
+/CharSet (/one/three/two/zero)
+/FontFile3 797 0 R
+>>
+endobj
+797 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 672
+>>
+stream
+xœcd`ab`ddä ÉÌM-Ö ÊÏMÌñµ~H3þaú!ËÜ]û£à§«,ƒÏ\fÞnæn–?u…¾OüÞÁÿ½I€™‘±bÒçü‚Ê¢ÌôŒРpMmm„ˆ¡¥¥¥BR%LFÁ%µ83=OA È(KÍÉ/ÈMÍ+±VpªÎÉÉLVHÏ©,È(VHLIIMi KÌIÍVpËÌÉ,(È/SÐpÖT0200Ô¦~™¹I¥Å
+`w+øå[*ø(¥¦—æ$aÊ000°10ˆ0213°ýÎÀÂÐÃð–Ñ‚±ïGߎÚõ?žú~ùVêeqá ßu¿ß=Ö½¨sqÓÉÒMAÝnæA^Žå“§ÉåέšTÕÍQRS[–±­ôâ[K·ì’ßµeéÑîsÝûªwå­*_X1=~‡ðƒ »–l8(uÇû°~d|Uvº\nAMa©ÿ¬v‰-Wv¬9ÕÍqfG¼OzMzQ‘|nn~{1ÈK
+-e\üúûŒ×Ìß'ý´ éN¬JË NýÍÞý›³û7ãšßœ»‚7Äï+>Ú½¯{ÛœõëŽÚø£û;/Ç÷DƒïŠ¿Åå:
+EïïøÍú;õwj¼‚©iü·ï)ß3v|g~(´ {Ö3/Ígüžùùûv ¿= XkÙ§O˜Ößß;wÒœþ©Ý ¦ÔdËÿ‰dïÎj.©nªiªíHìâ¨ù¾b»MOõÔîÝ?Þ°ƒŒºþcÑUÆïÏ2ÿÈÿ.+Z7!-¨®)®[òw3Ûw›ï.O^lºÞ}Sò½Õ åðÒä4¹ìÌšì*—m›ß®_}¡›ãþ‘ sÛX=s#ùßn¿YëH±ó•Ïÿ6ÿ{È|¶•\¸WNæáy0—‡—
+endstream
+endobj
+785 0 obj <<
+/D [783 0 R /FitH 686.127]
+>> endobj
+581 0 obj <<
+/D [783 0 R /FitH 357.87]
+>> endobj
+582 0 obj <<
+/D [783 0 R /FitH 156.41]
+>> endobj
+782 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R >>
+/XObject << /Im5 768 0 R /Im6 770 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+803 0 obj <<
+/Length 2028
+/Filter /FlateDecode
+>>
+stream
+xÚ­YM“Û6½Ï¯à‘ªZÁÄ7™›×3vÍVyœØÚ\œh‰ša…"Rò$ùõÛDP¢µå™¹ˆM°ÑÝè~
+âÿøÜÓpÀT7“fe7yHT ­¶=[—t¬*/Ò- Í5cØç ·F;Xn˜æCÕT2R®×]OÕsquþùà^ÓàGo¨ KJf˜%lî1@ΑsË”<)b8ÙEÐ¥óÛCÓüàœP~ÃDUý€Ó&B³ h‹èLEnÚ7þ¯Ê„®3Eg,lEøõÃ~îÀTÒ™RÃ4®›ò ž8$q.¼rp¹À Ƽ‚C< «  ?·hwß—¡?„ õQÎ03 |ï™Y[¹)Ž³ð¾k6L ç`І  È¾£:I•Ÿr)/ƒuG+—:&ÂŒ‰@•(¨ro}‰mȽT)h"$s™>>TxR÷ýöôt³£ôFÊv®8Qe>:±ëéY¶ôDM ó¿4…Io±j[j§XAˆb~Dåpný‡¦Yézp7éÀ ž¿¸Ø»›1•ðHHöç|V?é®Lp©â"ýTù¶·õý¡wÅ÷›aŸðñÝUòÙÌNoi>“3Ì~/[²U7ÍæKév+÷…n/äÙå‚_åb,È1z¼t9 n.Kï—<9Mžg¯Äjà¬ÚÓˆÖ2(Ó¶Û{áFÃßµáZ#2«BMÜ e³WÑ•Ç‘GÀB,€ƒˆB2I<b$ø;×ðêvg“ë¸Ä/G›Ae,.#“ç$YsXÿ‚;!§äúʺ±A‚J(ÞŒ×`~U”Ó9)UT‡ïg¿êãìÏ¥CJ”ÃÓ
+,»îhѺï}µ$ª‚q¨Þ¤Šà¶Ëƒ;Ýá$‚ÎĤ
+ä‹~Ð@
+ª*<(¹ÛAvœ4KÿÉÃ@p‹:´ÿy(ýBøOèâçþX&?hTwû®BÎfû½Ëýÿ>’69
+endstream
+endobj
+802 0 obj <<
+/Type /Page
+/Contents 803 0 R
+/Resources 801 0 R
+/MediaBox [0 0 612 792]
+/Parent 775 0 R
+/Annots [ 798 0 R ]
+>> endobj
+799 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./reference-frames.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 805 0 R
+/BBox [0 0 263 100]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ColorSpace <<
+/R9 806 0 R
+>>/ExtGState <<
+/R7 807 0 R
+>>/Pattern <<
+/R8 808 0 R
+>>/Font << /R10 809 0 R>>
+>>
+/Length 810 0 R
+/Filter /FlateDecode
+>>
+stream
+xœ•UKoÚ@¾ï¯˜#‰ÄdŸžÙk¥ªjoK=D9DÆPU˜
+“ª¿³‹ F°Äz¿y}óíÃ[Ðh@§g›N=ÍV;õŽ¢‡W*¢÷àŸÊÞ0û¦È0Zí P…:‚e‡>¸a$è[5WFFN}èÔÇjb)tÕlj‹×óh¤
+Û1RÈ1F‚1È\ò<«uèàz”e@Ne¹DvTdDä1ÒA;£È? Eë•PðöR´>F(bå¨äyVë(ƇëQŒ9cLv\dDd>Ü¢r–·rGæ÷ah:øRË镩ܯ j¹ö`=a¨,AbSAÝ© ">Ô¿‡ƒÎ±M!S묒Ü„Z“‡z¡^&ß7ïýÛÃÔÈcLÓ¶ÏÓ´™‹é]ÖbúZÿBnwJNà\yÒüíûvóž˜NCÄ`KGÉÒ·ËVLM›lûLó‹|2ëeÿÖµR*Š"Ú ÓTjjd+:YŒÂ}²ú³^´›”Í";ïX²y4d)›÷ÑbýZËú=«ÿ¶s×
+endstream
+endobj
+805 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115427-07'00')
+/ModDate (D:20090924115427-07'00')
+/Title (reference-frames.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+806 0 obj
+[/Pattern/DeviceRGB]
+endobj
+807 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+808 0 obj
+<<
+/Filter /FlateDecode
+/Type /Pattern
+/PatternType 1
+/PaintType 2
+/TilingType 2
+/BBox [ -2 -4 10 5]
+/Matrix [ 1 0 0 -1 -52.9 114.3]
+/XStep 8
+/YStep 4
+/Resources <<
+/ProcSet [/PDF]
+>>
+/Length 64
+>>
+stream
+xœ3Ð3T0
+¹\†
+¦
+9\Á\\
+endstream
+endobj
+809 0 obj
+<<
+/BaseFont /LQDLZE#2BTimes-Roman
+/FontDescriptor 811 0 R
+/Type /Font
+/FirstChar 46
+/LastChar 117
+/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444 0 444 500 444 333 500 0 0 0 0 278 778 500 500 0 0 333 0 278 500]
+/Encoding /WinAnsiEncoding
+/Subtype /Type1
+>>
+endobj
+810 0 obj
+562
+endobj
+811 0 obj
+<<
+/Type /FontDescriptor
+/FontName /LQDLZE#2BTimes-Roman
+/FontBBox [ 0 -218 775 683]
+/Flags 34
+/Ascent 683
+/CapHeight 662
+/Descent -218
+/ItalicAngle 0
+/StemV 111
+/MissingWidth 500
+/XHeight 460
+/CharSet (/I/a/c/d/e/f/g/l/m/n/o/period/r/t/u)
+/FontFile3 812 0 R
+>>
+endobj
+812 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 1844
+>>
+stream
+xœeTkP“Wþ>œ3.bKš*Zó¥þ°Z/¥¶eëÖZQ·C¼!7Q–‹„ÌK I$Dà…pO @Â5Ꭰ‚(­" »mÇZ×VíüÑÝVwgw;Ó9ŸóõÇ~éÎÎþØ™3gÎ9ï{Þ÷=Ïûœ‡¦BVQ4M‡'(T²ÂñU¦:¸ßÁn¤ÙWV±›À©Ÿ·?ߺ‰’v
+Ö@¸
+¹Z²…_Ë”­J¦.zWr÷V*ç$r¥A›[(ÉÌΖe¯%e*eç%‡J…V«)–l=¸M²;:úÍüôÎ1…*KW(ù¥rÉ1MŒD*‰—ÉuÊÌ‚ÿ·PµV­)(Ò}˜y.[–#WªvQÔqêuŠJ¤’¨×©¨Xêu˜:Bý–:J£ÖR/ððP!T1u‹~•¶Ó?­Š^uOðº`0‡ÈB÷…¶…Ų•l%xØ ·èÇË$vYÐÎn58[j\€ͦT†«Ao5§\Ä&’ëA)u&7Œc2Šn^ëv
+kBiŸÑ`wèïHÛwâd3DÜËÑÛ91·ñû-$’D>û‰ˆÉº7žr/1eÑòÂvnú»#ïgçô^.f4s¥_À=üôÆÒ=qyÂWÿýÕ² ‘Ý js6׸÷5—¦3œÁi»=ÎÂWe÷ #N£æ1Ñ¡á©YC³Ãæ·›]­€{=‘bŸ"S]›Êü9j“tò²%QdÈ6džG¶wtyp…4±I"áÝ-‡µT;+Äö ì6YBƙҋX¸bµWØ ²¦ÊY……w?æ> Û3˜±03Ñ;7".sm:ˆÊ1ùÿÀI$\ùgX;ñ>ö×æ¶È{Ëä0Ÿ¥ƒ-œ9ÂÒ¬®ë yÆíFÂ#ZªtÛà4æ,4³ÙªÕ)-*ÀÙçG¯2ÂòˆÛbF7+ÛL†¹z´ïfÊýK“í~¿xj*t/Jëªf}ã®Ú¢‚yŸ‡xi‚þ% ˆÐ"x¿Ì²§—Y/Šq–¶Á}Ìž@p¿­u¹{¹Ù´âp[á
+]î± ÞĽñ­”Ž Å–B³æB1à\ÍèS‡`áÊ8Y3ýK…_²¡tß×v3‰9$/Œ÷˜ oÝûf¼ÕšÓÂ4èš4†.ˆêïööÜ>tcOjŠ^žÅœN×}˜{ùÑ."¸v¹}h\ìïõúp°KsÐήÐþ'D¿, ³‰Èks¡íÈP]•€åå|³Ø?òÜ9c̵Å£JQSM4¾ÔlËb¸h$ÖºÎæÐ..”Û̽ôàm²êö„ïÆ(Çw!ìv‹ÍjÐØÔ€÷&<&kIèÌŸ¾úxæl|Ö]¢&hœfw½¢3û3ÔqêyÄ}¤j“Å°òOmêñ´®d8 g 2ÅÙ,m,Ä`Nüå;=}°@¨«bî!Ù!r=½´‹Ð«i}ÿç½6L2ôüÛ–xŽskyŠßñMtµÙÔâö|·­p·³g<½ÿøÑ$mZ>“Ÿ^.¯~Çœÿ3÷y|`µ *@«‡g‘Õ0ùœD :N=OÞò‘u}$o²>@¾ ¥_û6]/š|éÁäÔ7êšÖk[´õù€w8-õË>ËcJ c…#O]¦=»-Wô±ÉÚ<ÈÁIÓŸ>xØuN<1Ô1 °töê''jXŸT[Ð íàó75W7V;Á[ÕZÝ
+†úû†òûUL„ÞÇ&ùH‚/lpõʯ›ÂÃW:Ã×PÔ¿uK{Å
+endstream
+endobj
+798 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [323.815 414.524 338.537 425.372]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.7) >>
+>> endobj
+804 0 obj <<
+/D [802 0 R /FitH 686.127]
+>> endobj
+54 0 obj <<
+/D [802 0 R /FitH 534.204]
+>> endobj
+583 0 obj <<
+/D [802 0 R /FitH 273.426]
+>> endobj
+58 0 obj <<
+/D [802 0 R /FitH 170.234]
+>> endobj
+801 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F14 574 0 R /F48 455 0 R /F70 508 0 R >>
+/XObject << /Im7 799 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+815 0 obj <<
+/Length 2097
+/Filter /FlateDecode
+>>
+stream
+xÚ½YY“ÛÄ~Ÿ_¡[…\5½w‹û”;3a©b †ªPlÙW–Œ$“L~=çô¢±ÇŠŒÃ‹{U÷9ßYºû3MÖ M>¿úßüêÓg6ÉI®¹Næ«„iJ´6‰¶š0n’ù2y‘2>ûeþէό8œ)$ÑBÂ2nÎõO¿›ß>ŸeBˆ”“YfŒM¯¿½¹½ñ]?}ysû-VeúÃüùŒÛôÇëùÏoqå+Ä9–%‹[dÜ@§ðU ~<”ë²›eÜÚ´ØíºûÞTÛb¨ÚÆw·+,MZøæ€3^ãO›-«mÙô0³¨ýàûïvØHKßõ%ÆýBã¦ê]9„¡ë¶¯š2~ieÚM¿j»-Ae@‘Œ1’+ååop*€qs=÷•¡ø?îWö¾Y4¾´d& °9¡÷¿¤4Xâ&K¬ÊãÖìºÂéä› (wÕ›²öÕ?fJ§E½¥eÕìöClé+ÝŒ!,,öPëš¿ 8§šHÍ#9b™ &‡• Eu„Vé¢õ{I™^T¥w ?t¯¸¢¹3ƒwbzèÄ°¼&ÊÐþ›)–¢c«ÓÖµ–eW5ëSù$Ü’K5lʾ<ÐÀ*"éeíý4ì Õ%ΕM¹ kµ¾|å×ñ˜0kˆ=FÄÀël ÞŠÿrg‚‚á;ýÉ aLWh»vëjøÀøx(ûÁ÷¹Í ÜÀÄj½AÏ`OjÒUWþ¾/›ÅÝÌŠ •B#¤wþ‹¢+C¥î[ÿA»À ®³j–åÐh"8 ˜§ŒB4þmµÎÞkXJÙ{{œC)Â¥_=ñY½SN¿ñ
+å³j½ïªW ¾¤I·N|åùçWÉ ÷)'ö(GÁâä¨ãa ‘ÀŽ´É›gœ®™oq*f(¡að¡`EiÊBÉC)B)C©B©Ciœ„·ó«ßƒb,áÃM'Êp"$OÛ«¿Ðd ƒ`"r›¼vS·p0h+¨×ÉWߟž\"ó<QZfx”urO­ Ì£DY}nOš½ßµ¥1Dp5±åƒÌ’™1ïüçgƉTcвÀ‰;ææ}KŽŠØs¶’ÿd­ÜpQ*´'E{›©µÀ¡¬}ÏZ#Üž±‹bpʳ¿k—ci¬$&ǵ ¤ÖoJ‚ü‡òýíÓx
+÷IkÂÉÿM;”ŸŠSÓQöY.IóÈDø†c$µ©#?Ú飭§?\wÕ,«ò îËr…”V‡vŠЂè|Üq娀3‘Fi³ß¾rï*.€Â9>…kÇwÓ° V‘3ƒ
+’&È7-ˈĒ Ä’½§HÜwŽáÙo‘f ìM×ûÇ–Èc²@ž$›bI1 Þ6ª‘vÑ40NÔƒ•m¹m»8Ø­‹¦zÑÉéN5GqÙèÞ8îÙÈ8=ç•ÇÑ;L¤¯»jbcå&¨ í.V|é?k‡!ÎؔΦ¬ÚºŽþƒíEÛÜ‹âu¬-Ž6í1ZátœÊH
+÷»
+‰[a¢â†¥]µÞ¸Õ² x#Û`8Љ=USÄo v×åÖ·¦¶+ü2û|w •£ß,¾ƒÕßQV¥_ ªvç§TÛ]]nƒž~žp†³,ÈŽJv#Á5:”wB’_«&ÛÕÅ¢ü½|l¾)Я x[)¤ýœá¥þkü°Û;'IÖÞUa²~èè‹í¤£cž¾ÚÃRC[ƒÈ×J_©šj¨œ‘¡!„ê!emÏ^vá+ÏV¶#W½ô6ªÄZ³ôf?)ºÏ…ß+§¾½¾x÷Àþ>¸ÖÁÂlç
+Ë0¿`…ªJ`×µSOúlrzJiC¬—¸¹Æ”*áüƒ#©uçRw8Ý]Ã1/Æ«ñ‡ÄÓºö{ûø€Áž.z&1pfñàÁíCvlÇÑVA“Sàeqð¯ÌÓ×éµ'ߧ”è'´Pðâ÷ZLÝCàöù'!$‰G
+endstream
+endobj
+814 0 obj <<
+/Type /Page
+/Contents 815 0 R
+/Resources 813 0 R
+/MediaBox [0 0 612 792]
+/Parent 775 0 R
+/Annots [ 800 0 R ]
+>> endobj
+800 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [318.143 607.41 332.866 618.258]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.8) >>
+>> endobj
+816 0 obj <<
+/D [814 0 R /FitH 686.127]
+>> endobj
+584 0 obj <<
+/D [814 0 R /FitH 394.763]
+>> endobj
+813 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F14 574 0 R /F70 508 0 R /F11 573 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+821 0 obj <<
+/Length 1780
+/Filter /FlateDecode
+>>
+stream
+xÚ•XYÛ6~ß_á·ÈÀZ~l7M‚E¯E")®LÛldÉ¡äÝl~}g8C[‚•&}1©á\~œ:[ìÙâõMÆã÷7ß½ÒÕBfiQÈ|q¿]ˆ¬H«b½È+•j ¤Íâmr·7ÇÁúåJ•y¢–ßÿDb:-«R X¶XéuZ M/mÝ·H6®Ý‘Ø/Kø¶þÑÙ'ÒP-ÖéºËç"­26x¿wýr%õ:ém=¸®Å*9ún)«äÑm,/Zػݞ}DÛÐ0ÖÞ£ŠuÒmiaØ["ÜïmçY :-Q¨~Áúë®íZŠ¤^®D28˜u8ka’â>Ðu!ÒuήÛÍTòà†Õzò¼‚)ÒtÒAi™Øڽ˄® y…+æÈKÆ÷Dy ïk[
+!ètÌýǬ߰Ÿ-ünA“ß_ß,Þæ<,Ç“ÇÒåJ+û%m¡#EÇHaO ¦_M6VÐÆúÓ!„LRÐUújo™œÚõý`Z:x$QÄeŒ¸E\b¨c̉€GŒßµíû[˜Yò„ñÞC¼]½„˜ì‰‘
+=®€—eÞeyF<BŒ˜TZ•g½1ƒsëRUÁµt UD¥…à
+¶‹·}
+ë´¨ª/C»‚O38€gM)¿†ƒó†>ºk°ã|Š$8¥k­§@~Ú»XFäoÚ]”*ÙB¦ðÝ>>[ßËÀc¡Â]Á´U7§ž$åœr•·Ägâ$<gð]ãÃ¥MýHe¸ñKê
+ô›Û¹Œn¸ßë÷2>qrIþëFèk¿ü$6ÌëW2´o‘+,œ;Ö™4LZo¹‰eÚ¹„t0ãw—á66«PÐ!¥?ÇNø50vë\­¨ØvP$ô\Í9bšñŠS:$ó#Táü^ ïÈ™[B5.Q­™
+–Q°…·1ÍýšÑ#=ÿgìU#±B;×ßtg¼<pë„ÞI¡/¸ ³‚6Äs@zO£ñðÌ÷`K$±‹@yzý ß0å'Ðw}ï
+ÞN‘/Š"T9¸‹©Ìø±,Ô„éÇû›ßÔG
+endstream
+endobj
+820 0 obj <<
+/Type /Page
+/Contents 821 0 R
+/Resources 819 0 R
+/MediaBox [0 0 612 792]
+/Parent 775 0 R
+/Annots [ 817 0 R 818 0 R ]
+>> endobj
+817 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [345.229 466.937 352.203 477.785]
+/Subtype /Link
+/A << /S /GoTo /D (chapter.5) >>
+>> endobj
+818 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [187.345 167.006 202.068 175.917]
+/Subtype /Link
+/A << /S /GoTo /D (table.3.1) >>
+>> endobj
+822 0 obj <<
+/D [820 0 R /FitH 686.127]
+>> endobj
+62 0 obj <<
+/D [820 0 R /FitH 668.127]
+>> endobj
+66 0 obj <<
+/D [820 0 R /FitH 431.238]
+>> endobj
+70 0 obj <<
+/D [820 0 R /FitH 351.986]
+>> endobj
+74 0 obj <<
+/D [820 0 R /FitH 246.223]
+>> endobj
+819 0 obj <<
+/Font << /F48 455 0 R /F8 458 0 R /F70 508 0 R /F11 573 0 R /F13 705 0 R /F10 668 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+829 0 obj <<
+/Length 2852
+/Filter /FlateDecode
+>>
+stream
+xÚYIsÛF¾ëWà6`•ˆ W4ææEIœCœ8œ¤¦ì ’0"  ­È¿~Þ AÇÎ…è½ßò½­™F÷QýpõrqõÝ÷!Ê“Ük-î"åÓÄû,òÁ'JgÑb½•ý¹øé»ï33\éòÄfŽ¡5¯~|ñËâæÝlnŒ‰M2›gYˆ_ß¼zûúÍÏ?ðèÛ™ÎâßaR:þýÍÍxêU*¤\úÞ,®>^)h¦‘Š´ÖIšùHL2GËÍÕû?Óh“?Ei’åYôDK7°4MBn¡½Ž~»úõœU­C’:y—%Úzfã×C±éï«Ïžª·Lù)ÞÍæð)gs¥Ó4þO ¸¸/‰‹i*J<pB¥ÍÃ7Pé=±åmšè˜Êt6wiÈã7?/Þ½˜oj ,Ä«’‰½]s‰|<¶H?W*É…Êþ—'KiELÛ˜ñ̃õþ¡l¸Ù_—|søz£¿E?é%Hj ]¹Ü&6‹Y0qq».;À©ÏæÖZQ`v®ÀÀ
+ ±ly³]U˲Ä`4ÏÓD…<šàÇæ|ç¦lÀ1n@987å®)Ûr8µª>¤Ê”Í`ÐÇËuѶˆž¸åúŽ¿m}h–%ïÜû²©Šõ5bMÇuÃKz]àÑ7M±½/7ÝEC] ¢÷Åž9nÕ¾eÝ <Vn—:›
+Ü庹×ÈU*8&34YJ86€ãb·[W¨XDgE_b
+fé28W#Ï#hÒø–õÕJ jÁŒEsçA†c×Ó–Ëš´–åÍ¡ÜÒŒéMý%¥ £¼Wè‹™öñ+vbœÀÔ¦D•A3Š
+²Ž¡¨ú«3œÑI+e×Nãëõ‘6éâ 4Er™Hv
+ƒÀ‚=¤ÊŽ@¡Þdzt G÷ã|÷p±1Ðô–õš`ŸÅ¶Dý™<~ªörÁadz«OàK >CmÛŠRFF‚2ã¤ð=Ê5¨èÀs ;zŠÏMcA–†/Ú†‚`Â4 U]áQNèæxï¾s½˜!+(*F¬CÞÓØ`PA?ϸ-ªmË#G¶ ”lè0\o×ÏÜ*x¦t«‚¡öp‹øà…w<Ï $Žˆ'üDŠn¾( 8ãΤÑvžÌÍ2Êqº·u£õµÎƱ±ïVBr r sÃ.qÛ.D 'þ˜v]ðoÁ™s²ùXöãäH6»Ãž‚ŒV’kQs]mË¢e¦*qéIÞU±òÊFd¼&c¼Ïb®$­%c²rhµ`¦¦”é,÷g*ЪÉDX&¸ª–Ý«ÿ(÷î<³ê ‡1ЕãÀñBRÒÔ¸õ/Äô†0žçøxkINë}µ±>ÞÖÛ¹ˆf¡Øêân+H¶#Žz@†¬3püSÕÀÍN8ˆö¹Ý—›1ËgÕÛ˜e û3ÓÝ‹¸lšºÖIv;¯¶ …g¬Y±ö
+&w²¥^¬YaÀ´[*- [m»3*YðP
+¢¼ pHbŽ÷làìkSíżd㈿Ku”@Îöú¸gìšqC'¾&YR©IRóÏ“%,Ë|ÚeKaè¡ÀÙ5PÐuuÕ¸Ä[vx…vݲȟ¸ÃÉî`–5…­j ¬mt«²>XÉ);¹‚Æe@Ub8Û|9¯AùBa‘¨“̆}%»_ @Â&ú4GJX6DL¡F%€›Ð!±Á0½&Q‰CRÚÅ?Ð=°oÉ\ü
+½†BE¬ÅÜ«'Є®'Püê”V7cs¬»ÉQBñR¸r~傱[p#Í3¯RAËE r ù²Üœ>NáÄkÝ­}D”ÛÉ·B~±XÕü•7£Œ^q€3åÔOgÊàçÞëÁc.¥|2—‚H ßòˆËÊ-w‡Áû…4
+Þ?tÖÙô X[n:oµDzzÉã༠:µŽ±ER„™£3’"&„°ŸŸ.°ÍSã:+ÏãÏeSóTsØÂà„Ä!üá ¨mDµ„m²JcŽAxðr=ëíaÂãÈuïPn¶«ùÛ»ùKv™ËGØê0™oÀ:Ëf·y–¤Çýâ‡4øÚ³ª Â0Š3=†e÷ü„ VÕ§Š}Œbƒ’åÔ<Šðÿ4ã†ýû¦>ìZ^ɯ:VžÞ@´8u¬°G›:Zš¦œ_öIm÷²âøšË/| þPê‹ M€S¿3c®fäQ ‡ûG%ì•|R# ‘ÒŽ éRþÄÐÀ¹
+¤K~*]òR(´—*ÉÑKÈ Ü'O=¾üJ¦Èá‡e>öîšbSÊKFg|1L‘ç‘înËσÉóü}äÉêø'Á©Ìå%UKm/o°‹î÷¨_è ²¸\C¬jùµuð¥‡ÆrËé­PÒöÑôå„w ø žêžýI™Hó¿jêa¤3‘ÜuE ;VBJ ‡ê,U#ø¯¬0‘‡„Å\‘%9„7–ëþ©:s'žþ¹›M+)aï|‘¤’,?þ )+ÒI
+ßb¡È¶ÝãóI@¶ñÑ`MïIG—)h÷w—©ÑmÍÔ+¾¤r°ærØÔ¹øÔÜ_S¡M€?ì§OÊÅ#Ê #¢,„Kx—Å„² Ê`€P6T\HRÛ|Âh‚ ¤"?2Á¶±‰MûäB)É”‹:/0 ñÌÂTç–ˆ6ú{L9W×\å:±öä¹àŸÃVaÙð5°å?O!'<–ÍÈ…ëÝW"×}¹PßDƒ5‘k²o»¬™º,3£Ë.wê?Õ›ÅÕÿE'2V
+endstream
+endobj
+828 0 obj <<
+/Type /Page
+/Contents 829 0 R
+/Resources 827 0 R
+/MediaBox [0 0 612 792]
+/Parent 775 0 R
+/Annots [ 823 0 R 824 0 R 825 0 R ]
+>> endobj
+823 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [371.441 439.082 386.163 451.037]
+/Subtype /Link
+/A << /S /GoTo /D (section.2.6) >>
+>> endobj
+824 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [206.164 297.886 228.635 306.797]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.1) >>
+>> endobj
+825 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [284.204 297.886 306.676 306.797]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.2) >>
+>> endobj
+830 0 obj <<
+/D [828 0 R /FitH 686.127]
+>> endobj
+634 0 obj <<
+/D [828 0 R /FitH 606.349]
+>> endobj
+78 0 obj <<
+/D [828 0 R /FitH 284.459]
+>> endobj
+827 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F14 574 0 R /F70 508 0 R /F48 455 0 R /F11 573 0 R /F13 705 0 R /F10 668 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+836 0 obj <<
+/Length 1887
+/Filter /FlateDecode
+>>
+stream
+xÚ½XKsÛ6¾ûWèVhÆ¢ù€ø˜žÛ‰ÝI'™ØÍ%éLa
+–8‘H…$ÎäÇw_ HYrrH{Åb±Øýöù“åÄŸ¼<y~{rö"‰&™—Åa<¹½Ÿ~ì¥q6‰ÓØ Âdr»˜¼W‘zÓY’¤êêúåÕìÕå»ËWÓYEêâòüõÅ%ß¼†‰z}~y3 ÔÍôïÛ?Î^¤ÑÀã%:ƒƒIh0G–_T™Ì¢ õR>™… 쉘ëveYú¶¶yÑȤÙNgaª€òÁtnÚ¢*y¥ºç漢Þ´,D«¼‚}‰ZØ;Ú_ñïdžÙL-â6祅]ÈÒVN4µ0ràÍgx‘É,Ð^¦5|/›ÏY}R ¯À%ýI½œðà-\ø=í=íé±%Þ+­§Ó t¢ý|0Q䥺÷ÉŽ
+çêªX®f¯ìçi(»­’¹º 
+9XdÝR% CDA(Íà ‘]Õ†—»Æ6NdmeksHÏ­ÉÝñǶ Zé÷éLk­Ì
+ ÔöÞÖ–L„S:»áñŠnÏJ2Ŭ9‹œhgÔ Ú¥!`0¥œ‘ó-Vvñý–"h]•K €q‰ß
+/$‚6ˆðDB(}­ur
+’|ü¸:x\ ô™>PØ=,(gij$-‡ê¾gËm¾.Ø=gëâ®6õƒãÀ‰,X®¨0t97;ƒíƒ<NMÆ!äÁ¡”¥q‚_IIaoÀT Ç.7†ŠºõUÇ WMãd9é`â…ì,÷Îy7M1ß 'õZĵ)~#p´_á²i¬ú™c%²L})Ú¯5khŒå8߸t
+endstream
+endobj
+835 0 obj <<
+/Type /Page
+/Contents 836 0 R
+/Resources 834 0 R
+/MediaBox [0 0 612 792]
+/Parent 841 0 R
+/Annots [ 826 0 R 831 0 R 832 0 R 833 0 R ]
+>> endobj
+826 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [126.352 645.213 148.823 653.859]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.4) >>
+>> endobj
+831 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [189.255 408.14 203.977 418.878]
+/Subtype /Link
+/A << /S /GoTo /D (section.6.2) >>
+>> endobj
+832 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [189.255 321.574 203.977 332.422]
+/Subtype /Link
+/A << /S /GoTo /D (section.6.3) >>
+>> endobj
+833 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [221.384 258.918 236.107 269.767]
+/Subtype /Link
+/A << /S /GoTo /D (section.6.4) >>
+>> endobj
+837 0 obj <<
+/D [835 0 R /FitH 686.127]
+>> endobj
+82 0 obj <<
+/D [835 0 R /FitH 630.47]
+>> endobj
+86 0 obj <<
+/D [835 0 R /FitH 599.569]
+>> endobj
+838 0 obj <<
+/D [835 0 R /FitH 457.126]
+>> endobj
+839 0 obj <<
+/D [835 0 R /FitH 394.47]
+>> endobj
+840 0 obj <<
+/D [835 0 R /FitH 307.904]
+>> endobj
+90 0 obj <<
+/D [835 0 R /FitH 245.248]
+>> endobj
+834 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F48 455 0 R /F49 457 0 R /F77 675 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+844 0 obj <<
+/Length 1949
+/Filter /FlateDecode
+>>
+stream
+xÚ½ÉrÔFôcOZZ99¶!¤*@Á„B²ÔžQY# ÝÄùú¼¥µ9B¸Lw¿÷¦ß¾´¼Í~ãmžý¸;{ü4Ýdnñfw³ñcÏãd§±ëÉfWn~~¼ýc÷óã§I8§Œ2W&\C4?¿Ú]½Þ:aŠÐÝ:I’ŠË«‹——Ï_<cèËmˆ·@ãûxûüê7¼õ̳¢ +°Ifl_J7‚½$
+ù¦cΑùÅB@Ö®R“JòžJ)«4Úê$­J‰ µo¿oäµë92ÿ•Àu­Í›¹V÷Zåä«äÛøÊ÷Òì ÄSœðÃò=ã"õ¿´âZ`¬˜°Fk• ¿"6^QÍÑX.˜ýåç ÅI«²*>_\þ£Å_ƒÅÓé¾è¾0ØÌÿ*ÏE{B#Ü1ó˜7TØî'6çõÊ|_Nñ|(kè|X‚›½û@‡–ÙŒ……nfÌäEÛ©'ŸvPº2LIŠ¡…AœË(ZåZçÍ^1| ·7¼vÅÓ©“á-4i‹«,䤭)•h ëhLå dÐÌ`vÉ$¬Ð #kÉëZÁØy8Çf…"oxUæÇS­á)!Æ„Å%GulõÃþmÀlw†]^5äj¼‚²âC¥Ûæh3„®©E2yVšÈZˆ˜‡p~K–²'´N_wÈÃSn O'ØB·ýþ0,ÅåÅŽ7«‰:üµåÌÉINüi«rM°ëþB„4ûÑ9GÜÅ"¯ë¥oØ6Û4`ÙÔ÷Ĉ)G‡b¼icݪ€UdÏ=žëy­ˆ2dtÎó\¥1¸N…OT(DaˆÐZZp…"©½ãE%ãA b‘ˆX2ĨS®óNñi¯º5mä%Z[J‘kôŒDo(B
+B&mô#
+ë`5ÌÜ…º“¶QÊpéf^²,j5^xca2|´~‰Ð/˜›;Þ‘D°ZÞCü èkš%+ÉBXF©¾ ˆª
+ㆶ>âÚÁ‹YÆw\Ê¥¡ÈØÔògò¤a(õ/ÁBOi
+yÃû‰˜
+ éžðø˯o,b
+b‰!RCÚÃùãë«­¦½¢2˜©\ñã$„ˆA_R!ð€ÓeŒZ„²\^6s0PÇÊ€ÍÆ‚4P7 Q]´Ç#¾ÈÝç
+Êòª„+r€MbAR uòŽQ8GPÖáüŽ€œ—šç
+ØÑx´§Ž¡Ôö>7' ™‚zJaÙNœ¦âM?<b‘·e
+å‹}±Û†¾¸Ã©9 Ù @üîƒs©Ö¾ºn
+Ó¼w¯‚÷{žß|L´^óî”Û
+‰m£cXGmÇƼ¨ñ"ÆŽ“‘´R«7q…´Â,̲¼˜Ž¹¾Åœ}uÁYÃhÈ‘!ÂÕp¾ää%Í>HZ*SèÊjÉtùð‚®.§Än`€¦éL=©”Šõ±k¡ Nr©B³^F] 0‹K5<Ì
+°é`¾íøUP‹­n,ò îx÷‘Âuø?ÄR1ÿ0 GNý{þd£¦]û’fî+p¹Ýí¨ }5´ùGÖÖfaóëÙ©®
+®bçâõWóÕîìoÝ]ê¨
+endstream
+endobj
+843 0 obj <<
+/Type /Page
+/Contents 844 0 R
+/Resources 842 0 R
+/MediaBox [0 0 612 792]
+/Parent 841 0 R
+>> endobj
+845 0 obj <<
+/D [843 0 R /FitH 686.127]
+>> endobj
+846 0 obj <<
+/D [843 0 R /FitH 190.636]
+>> endobj
+842 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F77 675 0 R /F70 508 0 R /F11 573 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+849 0 obj <<
+/Length 2780
+/Filter /FlateDecode
+>>
+stream
+xÚ¥MsÛ¶òî_¡#5c1$Aä¼Sâ8;IÝ—xri{ )ÈâX&’ŠëüúîHP¢ÒÌô"‹Å»Øo‹‡E°øåâÍÝÅ«wZ-r?O£tq·Y„Aêgi¾H³Ô#½¸[/þð”ùË•Ö™÷þæ—÷«×_®?,WJ)ïíõÕíÛkÿþiiïöêúó2ô>/ÿºûõÕ»Ì! 8¾Žs8˜ˆ†Q.¹Ê«w°4"¯,ö*Ò
+×fÍÖl <Hixj¯zpÅ4RÞ ŽGv]—È%îíप×F #Þ W˜¹êÑ…À¢ž«~Ë£u[Åžéúâ~Wu[‹âÞY)«¡×ùtDûy£búA”;ÚÃ9µù»çѾ2%î’…fÃ_W¿ÀßÞ’°êåƒ^w„Wî­Ù°yêÀ±Ï(Ëý$ˆ¬}~­æLØÏ„oË$õŠÝÁð›¯T¨}•ÛÝn× ¸Ÿñ‡å•JÉÍp`u0Nr”LC/ ˆÃîÎâ‘"Á¨© £ô¥Õ¡¶F[Rf0ëV5²šý «A¤fxœjµŒå¡Ÿ¨p*€CG\Ç)s ß‚}eWÕ;à âÿǹg
+ëpµ
+Eõ]ô¡ SmUšîrb)_›äG‘·!÷º—&¿³S’=ö~
+àê9ŒVVØ­.‘xEûÂÔÄ
+%r²(gNåÒ¢Ž'ƒ,˜¥D¼“ÓâcÉâtØp¨Ç- ZI‚lgô!M| ¢\&¡×àäÍø ÄtJÌÀ¬DÙiÍáûDh)úšÁšQb|ñºëÛCÙÛ›»ñ¦HKÂv9~¢’“° ˆ¡ÈL…j*Š0:2£Ž‘(ÄÁâ1rÓBVB¦–Aù)
+¸à$®¸Ÿ39´ù0%
+Àq1÷’ÐÂäG6$•-¯À4ž˜ ¬Î›àÊ’ž°NòÊ´5Å%>,<[d–Z%ʤeTG´Yzú {,…àr¯I
+øºÌàœ«æˆäQ;°ðï
+ùpùtñÇ_Áb ‹À‘¯òlñL¨O Hð2 è»Åç‹ÿsOÏõq˜ù˜GJPå²~»ýøÅÖΡŸ÷¬¬ŒDkÔ¨5?_.Ë’0÷¾`ÇêŦ)C2pÛñxÞ8¤3%ÐÚ‚¬A › &¸¢Uk0MF êTÀ¤‹0àÔdðµPè8a_É•fš_jŒ˜  i”H´ò>s³p'p:•ª˜(¢sœ/C`¥…ú¦j….· p ”IL JlÖ=É‹`ÿ€Éò‹pû¢á…±mÀ£æàZš tžšt
+Ôh*›)q w€j°“ž [vJŽº]nk¦šmå‘ð/GʇŒ:‹
+*Òb¿o›}[½aÀȲö8›C–yÎ>O»9ÈAOx˼‰¹«ì4Â)-7ç®ìLÄ£NÄsÞ–dï´’Y}
+}«éy¨±G0v¿.¹¦ég; Iä§Ùë+$hÖ€:úèÓÄ(}JNtV ‹Àæb5%Ķ]œ š£ëyr û€ \èã¨à•³…½eèç™NO™†òa[,©¹am?ö°€H|,†1é˜ÿ„æ¾½ºCתmq>Võ0ég¢A®!“뇪ÝzYB΀¾²Ž˜yæ6
+Oú^<0€
+SÆ‘VJÊÍ=ôg£ìTß­Ú­Ù·àY%ȬeƒdæTèðgWŸôOF?çX¹i‹ïÌ5dM ”N(‹tá<å†$™}ñ¸”5Æ®)/slB€U{ãœØ7¶†ÝtlÿÁî,u‰ho¶lèÌ“Õ5¢£)j)p•…”#Ð
+LJ8%q00ƒŠÓÝ¢éé¼P¦¡¹.<–|{ vk"Nâ}7\g$gu
+×P*•ì,¸3K÷amÆé4J]r.,erÒ÷``Ò>w. ä¨h¬y<¹Ûù|zÆä ÒlNþ„¨UQüþ’€qÝÔ+ÎÎöšÉ-„˜ÌTܱöã±ëy]¯W·›Õ›±¤†ôârû&xꈔŸŒÿ¿\JšòWšk9ò‡qÁzNêw R¼}Ãc<3:2/ð§×¸„èÎ’üÝŒŒB(ºmóÂûû- \åf"žšŽÿ/¶ã©“õ#ßáþÝn¿Psüïÿ,¼
+endstream
+endobj
+848 0 obj <<
+/Type /Page
+/Contents 849 0 R
+/Resources 847 0 R
+/MediaBox [0 0 612 792]
+/Parent 841 0 R
+>> endobj
+850 0 obj <<
+/D [848 0 R /FitH 686.127]
+>> endobj
+851 0 obj <<
+/D [848 0 R /FitH 668.127]
+>> endobj
+852 0 obj <<
+/D [848 0 R /FitH 500.371]
+>> endobj
+853 0 obj <<
+/D [848 0 R /FitH 436.282]
+>> endobj
+854 0 obj <<
+/D [848 0 R /FitH 326.309]
+>> endobj
+855 0 obj <<
+/D [848 0 R /FitH 254.139]
+>> endobj
+856 0 obj <<
+/D [848 0 R /FitH 202.004]
+>> endobj
+847 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+859 0 obj <<
+/Length 2860
+/Filter /FlateDecode
+>>
+stream
+xÚ•ZIwÛ¶ÞçWxIZ 1 —mâ =§/9=~íâµ Z¢d¾H”CRIì_ß;ƒD¹ÉÆKàNøî 'WÛ«äêí‹_n_¼|“]åqî´»ºÝ\)—ÄÎù+—¹Xiu»¾ú_¤²Åß·¿¾|ã͘2Ícë5lC4¯Þýüñöæ÷ÅÒ™x±ô>‹^ß¼úðúýÞò쇅öÑ@£”Žþxó'îú"V¦|,ÃöKíaÒð!U»Xê\G‡ºÄŠv‡zËSOesàQs¬áxk’è¿õ®ú´ÐYTòʯoÞò¨¨×¼Áo0uÍsÝ}Ùȶáœ:lY~>VM¹/kÜ­ãÉÍ¡aê²X¡d÷(ˆ²T*ÎÓ”9¾ÛáY´Â?u|¦Q‰LàÄת»ç©‚'Úú¨\UÅŽöEÃ’4$[½ß0i}¨—7~ ;BNʺå÷ǪÜÉ_)l¿;–²DÜÓ‘»Ï8ˇ͜  ¶âŠ*ÿJ”[U¨u-¯U5?Q c£»Z(ÈïA~]ól'´¨c|²°4ˆÊ ²ÁêØ´1q¦lœ[ ìÙX™ŒÙ»)HèF—±`<Ây2'Nm+›UEW®yQ”Ë<1(D´+qýdìúÞÇ@\N£“²°.¿ñcoN \ª@^ WŸ:õ°nj}ôf‘à0TÕÛ]¹$Ù—Ú¦qîÕÔ8ç6!/5&¹i>Í“:`‰™å¡L‰•³è©Ú.ŸŠí aŽÎ1%«šHOÖÏijiÞ‹7ãgx—p…‘0vGîmæ„{\¦h(St(ûÅRE$Á 1JˆÏM«­êQ = i»s‹jØwAý|ðä4°ŸËcc´íx†,Î>>w°ïmwWÕEWjžœªDiQuîQH¸`%
+þiɬð,¶ˆÀÙ‰ǃ‘‘VŒ ódd<Šwvc5œÚë’ëiϾ€è@ÛÀ€1G͸ ˜¶$³e™a…a
+2>ÄÇÔ„7À Cp†$ ýEöðk ~áF ? À …aÏ1ÁýT‚ <y0ãib¢×G™¢P
+O1µ<¢v)œ¸TÊ gƇ¹µèTv«î $úÂiÅ\ ”x†t>Ð QÑLi$àüBÓÍ#¿ŽØ°¶/G¿[B€ ˜ äQÉ ¶Ío›Dµ5O.Q4ª¶kÊbcÀldä‘Ç#nm<.e•à·wxðãɆ§:•ÅG†Á^Š
+šj‹P‡êR>Ú4‡}ÌßÝrÌRY´/ ²¯ê=)I…°ZY€_5XªpØe•Ü
+ÜãØðíMÄÍÔ(¢É9” ÌfDɯúèCdz&¬x7Q!^`R—BjtVP-ÙX°.U¸ßk¶ž:ÑmË“bðsj¶õ¥]|ÈÍhîЬ)ÅôpOÿĬ•åq–eSñ×eØÒ“kVz¸²¤jÍ
+äŸ ÉÔÍ”—
+úXZÀ§¢æ'…9pö¬¼Tr/ß(5:/Óqªòp^=Ë2}µr5Š#>>ÇŽ%Ìtü‡ å/_Y@–ôGŒo9' ûÊqPJ K£DÛÆ™±Ó R—ߺh'Æ?£“,ε¾¨s¢Ïñí)©É€¹åBE“:˜H kyøõþЖ²ø®ç>C:ö]>ˆ|—†-ï_~>bHaâ9'Ìlì¬ù‘+IÖݱ WLCTÒ'š¤|È«ÁS—iê¸-áU_f¨¨‘zÃK„ÂÁ¦üÚgzD\Ô3VÁ^”RÏ™%7Í‚[ ù„bLL¡Ah€•p}¦ë À•ý~]²
+m2Êw†–JͪfP…ÁèB5<³e_ⶠRB6·½?ùl‚VÉ ZÁÜ®¢üF¡„!¥+Ó½Ú®h:r¯U…ؾý÷ÖVËY”è[³¾U>ugœ˜Æ šêë¥ä’ΓXëì9CQ­{£ü{Ã]P”Ù…B
+O¥Fí ˜ T§Ñä"ÀûyUïÖù t:©Ít:8f*…|µL<§‰ÜÇÞ¨ÁZlñ…„UFŒ$ð;éó Xk­…W
+ËwXß¡=ñN‘Mу.îAøíðIZµŒÅ@Ö–»rÅÝPƒõQ­ªCÑØ,7M±—’M>LH]a%Ï4(˜—LâãÓ CnGX,Ò8•°\¶(A&´ew|àá=8:éÁÁmø­¨CÁªÌ¤|#ÒÉ%Ä ^Àó¾ñaf>»Ç…Y@:‘ܯY@A‡wËÁÝ« í?³ºU±N{»Ÿµ¢5èŽÁSŒˆ%Õ¾J¡•)5À‚ 7&J¾ñ0%7¦Ø:Ø
+ñ{téŽçªý¾\ã™;©Ä…¯‰@…T>´p¼ŸÆIiúxV[x8ÆU‰ø>:¶äa´Oø P‡Ýï¡dËöØ—{¸…ÌÎ÷¸Æ¾æBi[WÝq]^³“bŸP~uàH`ÌðkÆ®¬·±F¥
+ ¤uô±…®¨A{ž7šØä½ÑCÑå‚Zˆå{±8*†ÊÖ7˜:ÊGýMð6Ó±tAßnjާÑ€`µüš üMÓ’ê‰Ò)Q»¤ÿñˆS9\A]ás(Í‘î”%¤ $Õa½ûøüØv$ãZ>(Úp"N±÷Î^¶üŽæË
+endstream
+endobj
+858 0 obj <<
+/Type /Page
+/Contents 859 0 R
+/Resources 857 0 R
+/MediaBox [0 0 612 792]
+/Parent 841 0 R
+>> endobj
+860 0 obj <<
+/D [858 0 R /FitH 686.127]
+>> endobj
+861 0 obj <<
+/D [858 0 R /FitH 253.546]
+>> endobj
+862 0 obj <<
+/D [858 0 R /FitH 182.141]
+>> endobj
+857 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F70 508 0 R /F11 573 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+865 0 obj <<
+/Length 314
+/Filter /FlateDecode
+>>
+stream
+xÚe]Oƒ0†ïùWmb;úA[nÝ`Ó,™Ùˆ7Î „‚d àÿ·µ,j¼éùzÏyŸ45Á6xÈ‚Uª8ˆI,™Yh(‰–1ZÊÈJð
+9aa¥4Ü=nwxŸ¼${„9çp“¬›ÄçÏGÄ<¬“¢ð„Þ²§Uª¶¢Dl¿ÒØI‚pAY¥vô#Æ75fÊ6¹ßÙ÷ÖŠÁ~@˜E¦M;›±éêÿf:$Z°›W†4‡v—1‹þ:´f6®Šàü±$£…¶)µónšÇÏb6¥_¨Æüjîm.$Ì;¯>S.š·î¦¶<w^Zš÷¥U û\4€L)‰£ÈCC*¿ÿ½frQÀ|ÚÆY»æÜ/ÑQº©)k3ù^_ù˜·­ŸÎYY†Ò×E9/ùóÝ·˜dÁã €-
+endstream
+endobj
+864 0 obj <<
+/Type /Page
+/Contents 865 0 R
+/Resources 863 0 R
+/MediaBox [0 0 612 792]
+/Parent 841 0 R
+>> endobj
+866 0 obj <<
+/D [864 0 R /FitH 686.127]
+>> endobj
+867 0 obj <<
+/D [864 0 R /FitH 668.127]
+>> endobj
+863 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+870 0 obj <<
+/Length 132
+/Filter /FlateDecode
+>>
+stream
+xÚ]Ž;Â0{ŸbK»ÈÆ^î]†Ä ¡ ­BèP¸ÿ ŸQ=i4=ð0˜šºO131è=2 pb $ w¸Zòº—økn3n„ÖÌÛi÷ÍIËÙU1FÑU"Év¥ºñ8|èäHì¼:!ÇryUÿ^ùß¢æ ¯m#Å
+endstream
+endobj
+869 0 obj <<
+/Type /Page
+/Contents 870 0 R
+/Resources 868 0 R
+/MediaBox [0 0 612 792]
+/Parent 841 0 R
+>> endobj
+871 0 obj <<
+/D [869 0 R /FitH 686.127]
+>> endobj
+868 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+874 0 obj <<
+/Length 2085
+/Filter /FlateDecode
+>>
+stream
+xÚXK㸾ϯ0r’±"Š¤¹m³AÌi:A6;{ %Ú&F–IîžÎ¯O½(ÛÓÚ “,‹¥z~t¶9n²Í_>d2þùùÃ6Õ&ÏÒ¢Èíæù°QY‘VE½±•J« Híæ×äéä.³·;]ÚÄl{þ3iY•
+e›U©±†ü#´~`öŸ·µI†ñìæ‰V›:­‹¼ˆÇtjŒÜó|
+œ2&A%¾™ÃÐ3á^¶y•xÚ·‰cêeôM˜<ÓZ?5c¸ÜÎ ç“p¼ˆZ@;ˆJDŸOnfòóÉ£cjÔ¥q;Ô•U*­­({qûä«é"códš‡1ôÇt»«²eñvŠ,û0OóèÝ™·ð·ˆËEœNN®o»ÐoUrd‚èSTy]fy{P°`Ý—n|Î"KF? Ý•­ƒëë%ÔÉ<ðZe¦²EÆNRæÎKÊ–i])Or¿fYþÞ•*ƒx1‘G„¡%r“|¹6¨å‰/Š_ÓW$×®*þûFÏ ×±Ùwª¨ Îì£õÏÄ.Ó
+œ7z/S?º=Ùc¦@Å
+n˜„,]`Ìk!Òúf «Z?’>:ùüÓ¶ÒÉ/¼ýáJÑ« ¹iwg˜Π·œ~Å´[üh>5…ÿĽ=Ô™´oE*ðbò©‘‰l¡ sðSJz+“ÖÆ€ò:µõ’Œ¨@i@˳ }Ëù/YUbVQ‚ÀlZÉ®û&tÇ* ×Y¶P5py™ rPÑ„¯™2œ"j™ÖÍ<ýx«hÅQĵ¿3=ç÷Ÿ¶»¢Ô|Ș<Ö¡‡q:]\CÔ
+r¨ešðUÉ%|÷ÓX2”:Ii ¢¾#F .¸ðˆý'–pøcï®] Jÿ
+ã1Ö<GFY-˜ ¬’dÁ‚ÒÇÑõ*'K*a8‹ßø£X'©ôÀ‘äxhýK
+fî;%CU%„]™éŬ8½e=°º‰©Oý$%FÝW¢LU­cùø'š³$Ïuò¯÷Å&¯Rk«[A²V0*pTacíE% ÈŽ Â;?eDµMK«ýó²µÔÑ0\'É7þ$öB8È·Ó¦ÃzÐ99Ra"A–×]ãéÐ o8 ³ãÌÕÜ/ Ý5Ô Ó¥íB¸kSäÒ?J S²º&UÀ«r›<ÉЀ¿°Gpú
+&­oCã¨ôé#ôŒÐ{aæ® “˜I4¥ bP8NÜ~ji£0Jòâu ó Q·¢3ç[9M^x ä΢N@’gh¯²O©
+£ãbÓr V½ücm–|ý]  Ú­ÿ×á™ñ4òRž³úÀr
+ù×Pk Ç;war«ÿ?ÀÃPÕôð"¹á(½¼×èy”|UÚ\ûo=¶þT·—ÿ á©VÀË
+ç‡z`úôüῃÑc
+endstream
+endobj
+873 0 obj <<
+/Type /Page
+/Contents 874 0 R
+/Resources 872 0 R
+/MediaBox [0 0 612 792]
+/Parent 876 0 R
+>> endobj
+875 0 obj <<
+/D [873 0 R /FitH 686.127]
+>> endobj
+94 0 obj <<
+/D [873 0 R /FitH 668.127]
+>> endobj
+98 0 obj <<
+/D [873 0 R /FitH 343.658]
+>> endobj
+872 0 obj <<
+/Font << /F48 455 0 R /F8 458 0 R /F14 574 0 R /F11 573 0 R /F13 705 0 R /F10 668 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+879 0 obj <<
+/Length 2660
+/Filter /FlateDecode
+>>
+stream
+xÚíZYsÜÆ~ç¯ØG°âaîUy°JqR‰‰åŠ"ëÚITö ÷¬Ÿ¯§%°;{Y´Tå…žéî¯Ol>¸䃗Ï®/ž¼ƒBN¹ÁõÍ@º\8ç.8!•\ï3¥.?\ÿåÉ ¯»”!­ØDšçþîõõ՛ˡÖ:3ârè}È~øþOW¯xéÅ¥òÙ«7ûî2˜ìú-1¼È›S<yaÂ@¡SÄzØò*ý4ï`„ºJ©lö|>™/ÀÖÛìí}9ªøòù|v©eö‰þT‹e=Ÿ-éÉÊÙ˜)^Ó£rQN«X¦®ð96”"(É^ß³Ñ*»x÷2û|WHœ;¾WËÑ¢þx9T!kÞXñ«2áȆGŸèÏæ`DE¯ø¬Z¯Ïñi5ã'U9¢û;¾±¼ÄoÉòÒj¹¨H:µ”¢°–O=©—«Š†¢š3MæÄì3ŒbŒ"±–?'¸p|^ZéŠJ÷³ª·ÜVs&ž–÷¼ÏÕÞ,æÓ†ì®aZÍFó(!qˆÊ–²¯íî¹ß5$zàDáu X¿-œlˆò%|aÃÕó†*ï±’°ëP
+S¦ú˜àeDž«A‡h«§Å.”¼P„éMu¿€Þ#Vå
+ Û°RãÒš‚oŒ«Oõ¨Ö³quÏæÿƔ è²A½öüû«”nL!\®['ý'Ü2@ÓC¥tö¯ÝSÃÝtØPÿ˜Û\Zâ¿jC-µ@Tè®ÅÓ–£èè?æÒÌš§åÇåjQŽV|7-!2þÔ£rÂÔ£ŸøÆOxýf=­wÆ‹ì}Ñ9ô~7¨gqëzUM¾
+A²&Phœ‰o©†–_àÔÓ†hÉkcRô´žñËx¿/LÃhÂâOërR¯:Oæ7ü`¾^ݯW¼†
+zßÇÊÕ•{¬¾Ý‚EHC‹âÍ‘‰¬@öh“DôPcq’×Wå¿ãRC†k
+
+„q­0tƒ(8a¡†.“Â@Š3…ÙàT~`Ö7±œ±4 {®˜qÿ¾ÙÒtX8àÀª‡"!oÎå;°
+¢0`/TS¼Ë˜«ë‹Ÿ.$^Ír`”ÑÔ"ZFÓ‹÷òÁ®Ë0øI§ÄÈÓk“ÁÛ‹pÓÒÝmÃ)xaó¶iIhË!Jùmgè«Ë~m|qLã ó’´œ’tÍy]OŽ!ˆW ô­ÅŽ„~²égˆ€°CC0ÙÝm¨s„1ÑK¸GâØþ¼D±§——¨„Ð.{VÊu,<sŸ-çÓæªçQ¸Ÿ–M@77ådÂW¨1–õ¸y‡½-wÙEƒ&ž±ø öÐT?£LljÒÜwŠ‘èø2!}‰§ÒfŽî¸s,g³j ìó›zkÛÁsØÚ»_!³|]—$¥è@rUa§èø
+)Ú¦4P¼\OVK¾y0(nƒâêÁ ¬ÊeÕXÆ
+'¼9ßüéc¡Uo›ÒD>-P-œÊùíŒzT¸jùŠãÔ*¤B_ô«Úw»Kë\8¤ï S‡2Jš+ÛNÊê ƃÉáñ®é®6Ñr÷„FÚý°ÿ.a¬zC™AƒÀð0
+¯¾2×Áü®è¦“ r^HíUÀŠíî·úLôÏVÀ™Š@ÞDU„'…Ámè- ]äÂB’CP ±ê=
+!Q(ŽDžßUÈY¬öÄ'X…­|ÛcÔ|š#­¬—Õ¸¯°ñ¢fëóm9Z­y"¸ù.ý«GÉ勾=øûà2NAŠì‡K´»í¸Cº‡NMúN§†±¡ã…æq͆ŸóÛ„íÄkéñ)ÕCòkŽà\Þ¬èkí×4ŒXŒ £H–bHƒ>*˜š{,ÂP»höšÊ
+K¬:DÉZ ª—'Œ]Ží•Srèý>¾ªLÅ«‰ÂM9h×ìNW{‡ë5ƒM• ‚~JqÂdMökÄd%Œ"ËÛcÓãs<iˆûßĹd2û
+peªƒ‹?ÊðAóõÝ!Á«ëDZz¯ž;f×'—ßqÌ ËYèò¡؇„„êqœèc8I~L ‡FOpb~Ánýþ@Ü¿«œ$tûCC“½íAËIÀQñý–.ÑR=|By—³§ôùö±-—ʹV¸ÜÇJqÎ7À3O~Ò-7 ­‹ã˜öé3>*<¤Íþ–7 ¬„â Ýrú?¤Ï…t
+°†)¶’ÝŸÐôã„*.¨cãï›ÂÁtô›W!‡³‹<1»œZ…ìßM+´ »Fw‰Á²"ØôÜ&K'Œòçe'õíO¹ÄNq”J„âì2ïÈoz(
+R<ÑP§tóÿ ÍZ¯›G·F#¾ÕIaÈ^>K <0ÕýÕä«æÇuô-’û5nînË)5åñ3ð|±¨âÏ xýaÂö$“ÿ
+endstream
+endobj
+878 0 obj <<
+/Type /Page
+/Contents 879 0 R
+/Resources 877 0 R
+/MediaBox [0 0 612 792]
+/Parent 876 0 R
+>> endobj
+880 0 obj <<
+/D [878 0 R /FitH 686.127]
+>> endobj
+102 0 obj <<
+/D [878 0 R /FitH 668.127]
+>> endobj
+881 0 obj <<
+/D [878 0 R /FitH 428.946]
+>> endobj
+883 0 obj <<
+/D [878 0 R /FitH 402.974]
+>> endobj
+884 0 obj <<
+/D [878 0 R /FitH 375.945]
+>> endobj
+885 0 obj <<
+/D [878 0 R /FitH 235.303]
+>> endobj
+886 0 obj <<
+/D [878 0 R /FitH 213.52]
+>> endobj
+887 0 obj <<
+/D [878 0 R /FitH 192.838]
+>> endobj
+877 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F48 455 0 R /F11 573 0 R /F13 705 0 R /F10 668 0 R /F49 457 0 R /F14 574 0 R /F7 674 0 R /F9 882 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+890 0 obj <<
+/Length 2196
+/Filter /FlateDecode
+>>
+stream
+xÚÍYY“Û¸~÷¯Ð#§ÖÂâ"z“3žrjcoÙS©›ZÂÌ0+‰vvýv£Š”0‡\N9/#°Ùh4úüšÃ7 ¾¸|v~õìû×…Z”¬4Ò,®®‚fM¹0Ö0!‹ÅÕzñÏL3ÉΖEa³Wï~|÷þl©”Ê>ütfUöòLõ‚H¯Þ½ýëÅûoÞ½ý@„—oÿ„ ¯Î^¾ù—‹+`8û×ÕŸ¿m'Ç3+t Jù¥B–g<¨¹X*n™Õr±”ìQÄuu[wg@Ñ٪١Ÿðk»®²¾úåL™ëÂã­#þ]³[nê«ZREˆ© r˸´Q—÷E- + e‘¥`”QÌCL<!G²¢ÌAõ=×eR”UêtQç Q vn¢¦†ÎY.ÅL’7Z³é«›`œ#;n‚q«Ý™ÈÖ´ÞVwÚßvˆl‹§,–¢”Ìð+X™ç$»oÀý\fÁÖ°V°¾¹Eù}x…§t>ßµ°^¯‡•[é#²ÿJ»½ ‘X­ú¡Ú±ú»!È[»OõÊA¸j»·Mïâ¾*0ô5¨1ŸëšŠ!-L†1¦Ež5»Í¯D!Yžv).‚&H$Mž£&Œ¸&Žºï‚ÜÙqn<Ì»¬àSï[ÉTYÄ€Ü5ý±_…eB2°x ½Wç,WåüªCçM+ÔÞ´"šõŽ¬ ˉ5‹ìÜ­ª¡ LU`¨·´øT»Ïõî†Ý­n›Ý–ÖAÓïîºa J$üPïÈPÛ¦ó†„Ps$uôHžu=X³j×·m­¯³#)X´ÚlˆxSm·¦=~ôÑåzäúìY];:1ܹÑm Ç€SÑDÕ9? 'Æ >Tm3 ûq-RG—Ì(÷âØ»ÿfô¿ I>·àÈ”D™3mž*O>j’ŽÚQè§ëÛzÕßš- ÄÔ#Çõ”3ŠLYpVJŒÌ^þƞҴtîªÚÔÛª÷ŽGÂçªi³TJ8#܈"X¶¡¦Ä’µIyZ‹ÂL‘‚qH%¯ÏÇ—)Y®GÛý‹¡Í~æ9O:òVDÞ‹dõ/¡Óh&„~ dsjM˜¾ƒS¥„S¹€“£KøD®”P¦ræ"OT êB΄ã]4+¢`°Gi™~2Œ ®î¶6/FÆ”¢‡lܡݽ`Êè5#¼ÂÄEžÅuëÂê®j«­ë]K!ó[@Ш1´Ó·*™£‡n]T˜õ]xðÙ3UäÓYUz3¸piÉ™ÌÕ<í»;ºéªFY^Tn}ÁÂ_ßXüjMá¶bñƒš‹
+ t?:Z?:âã8Áøõ~‚Ñb6/ákÂQ° aÉ »uÛ°jhõ ÌGÑÃ:>δÚF(Æ·Z­pj‚õlpBf¥U8 6ÑKB¹°Q>x.˜†8®”Kð™ú’V<KÏO[hMñÚœvna )‹í¯,³7}xÛÑ/áLX´î?CÝúfO×ÿÁâãPoÖ5NŸ7D¨ègíVáª.pÆãVðêr¦ätØumO“
+Ü1=¨h4\2hëfèˆ@w 5Oø÷Ø”O°©
+m÷PBê'@`pœÉþ€±W æøÜ¥-¡‡ü¹ž4JA“àwÉQ‰ñýTr‹c¹h¤ K/*f‹ü}ð׉Ŭƒ 4MníA«ç)xQúO¼Å€¼Ö‰qf‚í)mN4ú±?»”Çbì½RvÀ0EÑYÊ92÷!p nôc7~ͶùéS·ɊËTF@àö±Œ(OrÎ% ¢f„*ԷψËdF€è¯‘òÔŒ(N4z2#Ìåƒ,u"äýù ˜À‰bš§Œ“ß&ÎÖò,Jɯ›p˜’!)ìI‘—Åÿ$)ô’B~
+àƒ$EñÒ&ÎÓI1ù,rBZäÌêT›P‰
+à’üâï füÌð<!Ä0n')TJ†~TÄû¤"T3ËóSd<ŠÝ¢üÒo1þKë7©pÇÿCŠþ ð¢ÍþŽY¦²¤D[¦Ì$ö %K%Ž?]þ^\=û¾UŠñ
+endstream
+endobj
+889 0 obj <<
+/Type /Page
+/Contents 890 0 R
+/Resources 888 0 R
+/MediaBox [0 0 612 792]
+/Parent 876 0 R
+>> endobj
+891 0 obj <<
+/D [889 0 R /FitH 686.127]
+>> endobj
+892 0 obj <<
+/D [889 0 R /FitH 576.526]
+>> endobj
+893 0 obj <<
+/D [889 0 R /FitH 494.769]
+>> endobj
+894 0 obj <<
+/D [889 0 R /FitH 479.825]
+>> endobj
+895 0 obj <<
+/D [889 0 R /FitH 464.881]
+>> endobj
+896 0 obj <<
+/D [889 0 R /FitH 252.946]
+>> endobj
+897 0 obj <<
+/D [889 0 R /FitH 224.961]
+>> endobj
+898 0 obj <<
+/D [889 0 R /FitH 196.976]
+>> endobj
+888 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F11 573 0 R /F13 705 0 R /F70 508 0 R /F10 668 0 R /F49 457 0 R /F1 667 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+906 0 obj <<
+/Length 3013
+/Filter /FlateDecode
+>>
+stream
+xÚÍ]sã¶ñÝ¿‚ôL„#> ¤“‡ûî%½æj;™|>ð$ÚbG’:ÇüøîbAŠ”p¶ì6¾ˆÀb±Xì eÉM’%oÏ^\={cÇœ&¹ºN¸É˜1yb¬a\äÉÕ"ù9êü׫¯Ÿ½ÉåÓZ&…
+èEḵáÙòF°®Ð.]‚­€üž½Þ„¶ ¿öw»Æëq‰A»íŠÍ¢h-Í mm«y±ZÝh[Öšê£ßPˆÐ(Ø l·‚å-ô€að|‹tlš†ámSÉ<Ø&GÏÿò­¦ümW)P½¿SïÂà²lÃü‰ms´>¯•0» Ï®-¯wd/³ÀmÀg]SlÚëºA#Á‚A ÚMõ;¶Uêõ°¦Ü6dê‹ÝÜs
+Àäæ+Ò‹ˆ âin ¦éŒÙLÐ’oŽ¥Å3¦uÞKë«@è
+5·탲ÒÇãªÌÁ‘žŸ´Cžó{vˆ”4˜û‰;D¶ò[ “L‚ν)s!DOÿ•¾”¡Œx˜q ®2u¸~‰OŽ•-Þ;Ü/Y–EDl˜ƒSÞï¦8^ ÙÑÉé”ÕN¶ûc…üAHð!ðo“ç÷éRb(9Å!FäúÑÞ8V ¤)VÙ±3þ™É£®3Õ‡\÷OÐH,|hÎ4ˆý4H0ÜÈÃ*‰Æ‰NË€hfï[O׉yØKŽý`% #¤ÿH'‡‹èÄåL˜Ót"˜°î”w’N"BçLÂ_¾$@tÈdìÏ#‡¼> J2n1òX7ÈTg`B
+¾üxùDGÊL(&3}œe8)¦Å$CápsÑI_ìÔ£”SÓˆ9aD±Ü
+@˘2üÄnâÄ$XÖ#ˆéÏ*N"缟öª–1ñDt±/ƒ£L°ÌÉi’w”å Öý&â&9ËѬxŸî½$ÿœKF4 —|ð5 y ?AËy£µ8UËüçâmÄ ÁÌ\uu–3)ïuB Ïï Œ@Ë@¤3Ð_¿§{v>âë°iÇô!v"Ái–¡“Ë2ËÿׇÚmd%âç´CÍ<@ùƒÊzl¢,H bÕ}Ôx§yXy*× òGd·‘ªÁ² ®©{Ÿê¡¬,3jâ£!^ê{âeê ˆ›<0å½Ó9˜?ÐTP÷AÙåÇ0 ”˜ü¹)J&àr ¬ÙÞ0eŒ¥ûƒ”x H™Ã 5%£y"@œâ 2±’
+=¶aͺ)áSµ(k¬Ãª,}]̱²¼$¬zSF ÒXUW—S•ÈÒvYc%!pý/”Ho+¬ä"ðvYQÙºUGÓª@¥)¯ËÆzŠ¥Zµ¡o·$¼,]P©u¾[‡û…dZlÂÔ‚f¬ë&Êö¢ì@S~ _v¨N;¯PlóPéŬÝã×ëÀ£îkçؽnê5µhc^\Ø­º€1.Bcß«‹²©¨t½`ásY¯}یׄ,ÂïÁ›º#Àžýë;*V+"ÛÈ´®ÓMIïm[4wøöæ‹ïŽkh{sIC-ݤ»MKo°JôU %çíMÙÑb ©{ÅI•+Žf´eC²h©_„/ñóÈ¢«P„Wô~„#·Ë¢'²¬w«ACåÀì1žo—e¨è—›ðNµ¨67òB
+VÞóô† ƒÓÈÁi†˜áW½w[¦Õ+Ñ⢜3¤ªS•gï©…ëþîê»Ù6MúâŠÖÌÐÀå]Û•kj¿ö÷«Ë—~o
+rMÈ|gpÚ;Õ__¼ßaü!ºØ
+t± tMÆg£ôurÑ(Zf¸¿·*çúh¤Mi Â)ȨÚ#zéûVu|»©‹Å¼h;BîÊUù©¢W[&G†Æ+œóý«@ËG@_£«í†HâÈ-&¢êçkp7X Äÿu±-6¾mÒo Fî—]•~·!‹˜·8ø¾¿ó©Ífíßjççðl·Ÿæ&¡ÆÅÛ3X¤íìäU€¿ú;¼öa ïC»<fd7ë¢ß½­©µ7zèرEá½å`ûý³èêÏÿF]´½Mñ¯j…Æ€ÒÈUo>¸Æ&|·Û¦Þ6UÑ…U"¯î‘XÖî¶ÛUåÍÀš½Ø ¸÷À²!ˆþ€2¯×ýsyë×ÅA¿'’êi,0~˲B oŠõº æ§sâÚáK£ËDzYF¥{Yλ°‘p¡¥RÃ+5ü—²êÅúÈ@Ò–’d†ß‰Ì
+endstream
+endobj
+905 0 obj <<
+/Type /Page
+/Contents 906 0 R
+/Resources 904 0 R
+/MediaBox [0 0 612 792]
+/Parent 876 0 R
+/Annots [ 899 0 R 900 0 R 901 0 R ]
+>> endobj
+899 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [394.994 227.028 425.214 235.828]
+/Subtype /Link
+/A << /S /GoTo /D (cite.rec470) >>
+>> endobj
+900 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [194.541 188.671 217.012 200.627]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.4.3.2) >>
+>> endobj
+901 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [257.988 131.141 288.209 139.941]
+/Subtype /Link
+/A << /S /GoTo /D (cite.rec601) >>
+>> endobj
+907 0 obj <<
+/D [905 0 R /FitH 686.127]
+>> endobj
+908 0 obj <<
+/D [905 0 R /FitH 550.575]
+>> endobj
+909 0 obj <<
+/D [905 0 R /FitH 506.245]
+>> endobj
+910 0 obj <<
+/D [905 0 R /FitH 464.905]
+>> endobj
+106 0 obj <<
+/D [905 0 R /FitH 398.114]
+>> endobj
+110 0 obj <<
+/D [905 0 R /FitH 284.678]
+>> endobj
+904 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F11 573 0 R /F1 667 0 R /F10 668 0 R /F9 882 0 R /F7 674 0 R /F13 705 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+919 0 obj <<
+/Length 1979
+/Filter /FlateDecode
+>>
+stream
+xÚÕYYsÛ8~ϯà#Ue!¸H“š‡Øqï8GEÊLMeç¦h‹µ©"©q¼¿~»Ñ N8qÏNÍ‹Ðh4}áúÄ£›ˆG¯žœNŸ<}iTd™MeM¯#ÁS–¥6J³” i¢é,úk¦ØhlL? !â_Ýïó‹Ë秗磱R*>{wùî‘“÷£L¤Ìâ³óÉèé¿ž¾Ìv¦
+èT,MT´#Ò•1ž‰hÌ™µ>:íñ~f˜Ì" ¦‘ÄÏXd”mÂEê';âvS˜Ùï~ÏŽõi¦A¡2 èðy{¸°Fø”KÅ´I7¹w矋uÛùr:”†x
+óÏ ¾6}Ë”J¾9³9›¤þá胎!úzÆiÆŒÑû©ø%®ŒéTìe  al´#ãcÁC$ ¶ñò§ce’™të EÖ:(I¾Çú«ã aCH¿Éúì+Öo¼"”Ã1nAú öî¨9Òö›ÍmÅ›%Ø,4
+’è6º}£tÈ(»-±G‹•Nî±Jkyd•:Vf¡ÍUú‡­
+•°L™#£ÒÐÂHŒ|ôPq‘Ýc?Ü]Á,ªøLˆÇ7+¼Vµ†[ýB¥þX« K­¦µšìí4{ê`2Úz·ÔÀÅñX#ì·B†4†÷®ä‘ã‘š€
+ëÞ<x0
+§ÚÃ3¢B÷3¢¹üK2"Åßž>áÅ‹ŽoÏÈUРο|ñ„|ìŒÈÿoFxæo§
+n}úh[OøÅb±^V5¼äámÒ{Ìáž{UŠ‘Ýl­KámH¬PûÝ‹ê6t<J‘þ%)T‚ÿðEõ¾$Š‡Þ¾;PŽP‚) Ç¡†ÓNz§ýKrQRá¹øÓ(°
+¾š™ç;”©÷˜s÷¨vêÝ)†öéKØKé /Ýb¶pµÖÂ|nŸK B&ÂQ6ÃyN_!i\¡m.¦Çhàt
+w@>Ni`r×õ%ânˆxy=s¬áQcS‡ Xí7¨Ý$ñmÕωòs
+]ÒØ}KÄîÖ÷’©_¿mú2°Èa#JãW9eBå«27,!`R=´ BXEÕåÍŸ£$‰óÅñZì#å>™!©Ê¶ÜìíÐ\ƒ
+¢úyÓ p•Ãá
+?Û)ì¸"-=tv^œ¼í”2ž•ˆ –³Ba!`w4pë€5ô{W9Õ£Tñ½€PÓ­ à{
+¢ç÷.@ÙF'r¨ØœNbäµäìby&=4 Ê>² # XüÍrYÖ³.d̺s+ˆOÑ´­‡Z¡/¼®úöŽ†®Æ6_­ZçÏ`}_úA7/|T~®ºTâZMLÜõPly; Mí@iXÑ|ôBÃugÝî¬Ø–¯ûcFÄP¾ÊÓ½)a;!þY¦ŒCv }ÕK¿%5 ^!,¿ÍÏ>œ)/}‹óV#¹IhÙ´þ´‡Xîø
+endstream
+endobj
+918 0 obj <<
+/Type /Page
+/Contents 919 0 R
+/Resources 917 0 R
+/MediaBox [0 0 612 792]
+/Parent 876 0 R
+/Annots [ 902 0 R 903 0 R 913 0 R 914 0 R 915 0 R ]
+>> endobj
+902 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [108.64 645.213 138.86 654.013]
+/Subtype /Link
+/A << /S /GoTo /D (cite.rec709) >>
+>> endobj
+903 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [135.402 633.258 168.804 642.058]
+/Subtype /Link
+/A << /S /GoTo /D (cite.smpte170m) >>
+>> endobj
+913 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [419.852 606.323 434.575 617.171]
+/Subtype /Link
+/A << /S /GoTo /D (section.4.2) >>
+>> endobj
+914 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [170.907 594.368 185.63 605.216]
+/Subtype /Link
+/A << /S /GoTo /D (table.4.1) >>
+>> endobj
+915 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [163.534 241.093 193.754 249.893]
+/Subtype /Link
+/A << /S /GoTo /D (cite.rec470) >>
+>> endobj
+920 0 obj <<
+/D [918 0 R /FitH 686.127]
+>> endobj
+635 0 obj <<
+/D [918 0 R /FitH 345.12]
+>> endobj
+114 0 obj <<
+/D [918 0 R /FitH 301.502]
+>> endobj
+917 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F10 668 0 R /F9 882 0 R /F11 573 0 R /F48 455 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+930 0 obj <<
+/Length 2165
+/Filter /FlateDecode
+>>
+stream
+xÚÕYK“Û¸¾ûWèHUYX¼ˆÇºr{Ç^'qì+©Jy÷À‘8«$Q!)çߧ J”„ÏŽílåÄ4Ý_?
+â-!ô@ RØš°r—Õ¿qaf´MhF×
+\ãå"Ûè³
+ë ;ôôYA«ëØ`›
+“ ^ *›>v½8g¨™–û:@H—Ê¡d·ÇógK2¹T¨ÍÞöaÄå—Ù®i#œN¥AŸÂþÿ)_
+ŸÒ¾g€ÑÇjNJýÍÚ½öOøLŒcÖêcSü-¡.(­Œ8²@Rê¯Á˜¨ þÔì°ŸÒ$ø:0ÉŸ"ýõù‚pV4?Fz!R6„ªƒY}¢ûÿAaë…mR*°bˆt(•zèÜᘗîDªoW–Îï‘Jc¸>Ñ•J] ˆÃíA”J³Ti¡àl©ì™P&åùÑ…Å÷Qî±øix±l
+òNˆï/VÚYµfÎœ˜ðKÂYsf¼&gÍBÍ;pp¬ z厱Ù]‚#\!SÓÁ+ÿÎú0)øùpãüp
+ðN>ö «T2ø£S¹§Xd‘ȨüXD¥8[DsùC,"ýŸnÓ1PŠ§Xä:)çO÷‘Sä÷¶ˆÈÿt‹pCå©÷Ì
+>sþ‹Éï©¢¤ƒ£þ^ÐÇÙë6ÁÇ€;ú'{Ðm*J8Áÿ{)¡¾¹,½ÏbâÑQüøpª G ¼ß˜hHm²?Ó¹qUöo†òg¼¸ 7xF>ÜJ„{r à {8Cwû»ïöh©Ã‹"PضÒÚЃ=ÔPhÑ0‚6 L„̳Õ—2¾ñâÁë,œ³Ûó]rHâ6 öGûºÁ[cƒW°[ºõ¨›p G춥 ç(¼¯ÃÒ¨lâ;ÚÒÚøŸÎ÷ís¼ëVYYÌðòuIÿƒ%|o—Õ°{×Ò«Ô1s›u©—ƒvwÝë튞åòø†]9äx‚¼ññ“ÚÛU± ÷;@7åªèªþå!L«é~?}µ;šl]vA]ÃG.êYǸ”/§Ïþ ^Û=H
+endstream
+endobj
+929 0 obj <<
+/Type /Page
+/Contents 930 0 R
+/Resources 928 0 R
+/MediaBox [0 0 612 792]
+/Parent 876 0 R
+/Annots [ 916 0 R 923 0 R 924 0 R 925 0 R 926 0 R 927 0 R ]
+>> endobj
+916 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [237.482 642.722 259.954 654.677]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.4.3.1) >>
+>> endobj
+923 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [344.378 583.5 372.8 594.237]
+/Subtype /Link
+/A << /S /GoTo /D (cite.Poyn97) >>
+>> endobj
+924 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [257.988 513.706 288.209 522.506]
+/Subtype /Link
+/A << /S /GoTo /D (cite.rec601) >>
+>> endobj
+925 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [180.704 477.841 210.924 486.641]
+/Subtype /Link
+/A << /S /GoTo /D (cite.rec709) >>
+>> endobj
+926 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [473.65 463.948 488.373 474.796]
+/Subtype /Link
+/A << /S /GoTo /D (section.4.2) >>
+>> endobj
+927 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [224.705 451.993 239.428 462.841]
+/Subtype /Link
+/A << /S /GoTo /D (table.4.2) >>
+>> endobj
+931 0 obj <<
+/D [929 0 R /FitH 686.127]
+>> endobj
+636 0 obj <<
+/D [929 0 R /FitH 206.548]
+>> endobj
+118 0 obj <<
+/D [929 0 R /FitH 169.953]
+>> endobj
+928 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F11 573 0 R /F13 705 0 R /F10 668 0 R /F9 882 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+938 0 obj <<
+/Length 1313
+/Filter /FlateDecode
+>>
+stream
+xÚ•VKsÛ6¾ëWð͘0‚/ß’ÆΤÓ6©­C2NKœò¡dmwú㻋õ2S§£a ,öùí.¢`DÁûÙÛÅìò&‹ƒ‚©LƒÅC ¢”çi¤yÊ…Ì‚Å:¸gŠ+>³,gŸ>|¾þeÆqÌnæ2go}3Ïc¶¸›ÿ±øùò&?L<S(rBd†,³È«Âñ<”܉‰«1f ò‹œõ-®ë̪ˌý…úLG‡šÎ†ª¢Îضú²mèd…W¶][{Î]¥C¬e¿%ÊêzWëo´á<Ì–=Y1ö[ƒÆƒá¡¼H2¶P¼bdÙ౶[£µ¸…®àºëÀ ïIzx‹»ïßÒÇC믮Ë9Ø„†í€¨4ºõ<*ðºç¡“wjÚiÁÞý¡`]ë8VÆÚpʲÙ@zU,Ù;Œ5ò‚é TbXtC„¶v¨ Ò)ÄC÷´‹‘!>4ß¿m¹itEìV÷¥ý eìÙ­ßž¿ ¥íû­nˆÎ„u.I`"X ¼Ùv¦{S•±ÊÁírmP’U‹–<†;0˜vAí»aEøÀ=´¦ê]”œÔÒó–¨ÌŒ~mÚ~ʲ]§AâJWX’-‡žíÒüLv({½¬|±`z·ëœOe­=\ÉEÙÉ dó` f~ 9¼ ¢CÒ l˜iÖ.2xsåbëTQÕ$)Óe5™x2Kf ³ÞAõ ,ü$HQ ¬™¾
+GlüÝÇ®u¹
+~ (KØÝ°ÜWÛ‹vŽÎä<’D¼¡Î ¡ÛvÆwÖU[µíº†h‰Ö?·=ÔîÚoö´B ÇÆF‡.þÏ>ë$®|2žg«í8œBÏœ(á…’ãÌùâYâ åEçÈæȂ˜§Â§%zé«äY‘À„:0]`;M&uŠ„çb¯ò'ϨR@ø¸*¼¸åKˆ!ž![Ä•‡·n0Z©˜Ô‹ùÅkzOÔv/Õæ<Š’àˆ‡:F5Òü5J"küÇM¹:7
+gGA· ˆ¸…‰~<Cd ú{”! ®é;6Š:ÌÞÔÕ‹ÛìÇÓu ½!6q´§Mš€+ŒI癵ƒ"ˆÑÔ¦a”ñX©ÓNã½òsPÓ„‡*Âaoù‰¹çëõ»* œ"žÉ$RÁš«zömˆÿS—ê<x×Î~‡ß(sd G‰á‘H÷&;c”¦!G…ä9TµsÇgÂy¿xª„}Â2ñ½Ä:˜÷–*}ÊÙón”<ÊR¥ä¢È]C¼’ÿ£køçÝ‚RçHŽx5ùCHVß-  ^“"8âÁê™(W¨²¼øÁrUÿQ7"9V¶oxBf–lú×$P[]=ExÆ-@»íÊ¿ñÏ#|ËàùÉ«¾Û£{aL!Y¯µ¾ü•Ö‡ó‹R}-ÉŽœÃÉ(
+H!š8XÚY|˜Î¡L
+g L܃ÙMÿä0 pÛõnܤxN"œçCÂüðëè`”¹= î-ÇšÆkzáÚDO¡Jú_©¾E|
+endstream
+endobj
+937 0 obj <<
+/Type /Page
+/Contents 938 0 R
+/Resources 936 0 R
+/MediaBox [0 0 612 792]
+/Parent 940 0 R
+/Annots [ 933 0 R ]
+>> endobj
+934 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./pixel444.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 941 0 R
+/BBox [0 0 336 267]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ExtGState <<
+/R7 942 0 R
+>>/Font << /R8 943 0 R>>
+>>
+/Length 944 0 R
+/Filter /FlateDecode
+>>
+stream
+xœ“MO1†ïýsS;N§õ¨Q¯Š{1àQÃú±ÄèÏwvÁDÓÃì¶Ï|uÞ~€Gß®•×0[¸HÂTîm{â
+Ƙ¾\GCÿÊ’—Œ9r*I‘ÌjLÍÔÝ:%E5? }àíq*¨ Ù+Æ«:"jˆ¡-„(¡E 1£ŠÑ¬È”:[bYz±ÑÿAdé=Óvh•m/£\0s€¤l›; œ EÊÿ á€d’õt{!âB6°‘Ëæ üBÂŒ²Î„­H&IÚ@Êzª5f³³¥|š™ûp´ü^™q g•‰/ƒZë9Cõè–š$HÞÔç¶V`U»ÃËfTOOaüÔ¼Õ#xŸ^§pþpT½¸”MjÅ”‘‘£Íµšì ›–îQh
+ôÔcN6‘?üüó—¾;há¶<{Ö©tõE$Ómb{q©ó¼~þžÎ]ä‚¢ÑܳA…ÈÝñðÐûáQ{~Q¹[?XP¿
+endstream
+endobj
+941 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115427-07'00')
+/ModDate (D:20090924115427-07'00')
+/Title (pixel444.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+942 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+943 0 obj
+<<
+/BaseFont /TGKBXV#2BTimes-Roman
+/FontDescriptor 945 0 R
+/Type /Font
+/FirstChar 32
+/LastChar 120
+/Widths [ 250 0 0 0 0 0 0 333 333 333 0 0 250 0 0 0 500 0 0 0 0 0 0 0 0 0 278 0 0 0 0 0 0 0 0 667 0 0 556 0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 0 722 0 0 0 0 0 0 0 444 500 444 0 444 0 0 500 278 0 0 278 778 500 500 500 0 333 389 0 500 0 0 500]
+/Encoding 946 0 R
+/Subtype /Type1
+>>
+endobj
+944 0 obj
+373
+endobj
+945 0 obj
+<<
+/Type /FontDescriptor
+/FontName /TGKBXV#2BTimes-Roman
+/FontBBox [ 0 -217 775 683]
+/Flags 32
+/Ascent 683
+/CapHeight 676
+/Descent -217
+/ItalicAngle 0
+/StemV 116
+/MissingWidth 500
+/XHeight 460
+/CharSet (/C/F/P/Y/a/b/c/colon/comma/e/h/i/l/m/n/o/p/parenleft/parenright/quoteright/r/s/space/u/x/zero)
+/FontFile3 947 0 R
+>>
+endobj
+946 0 obj
+<<
+/Type /Encoding
+/BaseEncoding /WinAnsiEncoding
+/Differences [ 39/quoteright]
+>>
+endobj
+947 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 2743
+>>
+stream
+xœeVyTSW1ûp¡-i
+)š¤ußÑj ÚŽZDÇŠ”}W IkزAàKXÂa_‰‚‚ŠÈTQ±¶V«uÑq:­µS]æ>ÎóyÑ™Ós¦ç¼óÎ{÷Þï»ßïû¾ßý]á0‡`±Xóƒ%2qæÚ@¹,.Õþ¿†rgQ çP‹Ø@Ëf›g·9."|[Ø `>æ;´-œgrÁ7^Ãm¯àâW 6‹•kêò–§åeH’’³D+BÃV®^½æ÷‘ ^^^¢ø¼ÿ͈vŠ3%I©¢ėB,•§ÉÄ©Y[EÞÌj©TrP”$ÍKKÎÅ%$ˆìf¡qRqŠh—D*IK“+D+¼WŠ6zxlX˼6ûIdñÙ™¢‘‹üä^"_Q 8)[—ñÇ‚ ÞL•Gx§eìÊÌŽË?(öO–He¢-ËW¬\ãAþÄb @ˉ`"”øˆ ¼‰Ä.b±‡øˆØGø, 'b.±€xpgòG8
+â<ë]ÖàœusŒsh¶ÉíÐí¸Þq>äœA¨}Fjr„üÑiƒ“Âit®+UêL•‚™zó<ëî Þ9Ãn¦ÞæUWÔêì­UF
+i‚@­*ü0©ÄÉf^©l
+*–G¿á±šÐîß/Ã.ØåÉoX€]×ÿ@¿.TËy3—VÓ‹hÇ»·'$vŽ(„òÉ‚¯àùÙ+×γ‰Ð:˶²ð—ÏسA³«x´<—3Yn)‚LЕh
+•ôbZáF¯ÀÚf½êùÐÒT;`¬„:¨7­ô`./kR=¥ß®t°ý!‚M:Ça2_jEªø†Ä¡¯ÀŠéGÝíç*ùγëUcÔÏ#¬^L²g *”WˆŽ
+Ž^Q ÉBPV(«#›#j¢Á <¥û‚}ö‰×=Öõo>xù£ïÄ?v„ŸNOß#óZvìÜ#ó¾/YcŸ•~ ˜Mâ=ßc'¼tjRqpD0b–·~D2Y£e–ü–<,Ó PΗ]nÎà쇮ܒZj¯Ö`‚Z štÑÂçÉ´Z=É]–K÷@ ÚnP×ç$Þ€†uêN‰ç~‡ðRüªÏ?VÅd„Äo!½1D‘¬ÎçãUÛyýl§oœÝF“4;r»wt ­_àŒ2ò•õÍ ÛD½Ékª¨54
+«$.5kg¤ð;Tb ÍNRûç2mñhÅÓ'píñÜV—Ÿž¹r“©L\ÀÃÊ,¤Ùš§Ü
+$½gpz«ª{x!‡Éa»Ò²ìâ”âÅŽÏ{9Ü[¹è†¾Q>äsžZõ¶¦Œƒ­èO•ª&¸NâT¼Ý‹²a “N¾®]c¥ÖYÕí.ç®`¯¯\¹kð—ø Þa¼ÐQË)++,./? |=èŒÚ*’k©ÉήLw?0Ü;hààƒ(áÅCC9–LòcRäáic{®@ÑUØ¡ž" hFŽ©®ÒÈd‡ë[ MeL1,úÞžÃ-î·>»øÕDæàÇ6!M|&oVvAäHïé©~ÉÆ­Ô‹ªÉåÚ Þ5ãʵP™¼Î~mýi!~BoDÜÁ|t¥´A$­A /Q©´iÙR È„”£'…\ ¾C/S¡ñÒ&%ì'é*ôþxø×dž›{z££Žžˆë[Y6aµÕŸkb²î¯›
+¼H¹uº\¸WÜs垢ü>çå«4%J ³Š›Æ„8 ÁdIŸ²3ÛÛêäÚ‘¾YÖœŽÎ6k{eyU¹IXV[^&²g }älOjˆÀÑëöåÅŠ³sT8DrÃ}Çb¦ÇN´MN ¸aU-ŠîG¡­aè83E¯¿ÏiI¡B“©’*€L–V"¸t†ŒÙ¬Ô;f>òÞoæH!§Y:F¿ŽÃÝîãù­=ý;™Þ¨DýeuzPF“!-ÑkòÔ9*«›üdÞQh„¦FS¿4Ó•µ¨šÕG¢ÓKÜhí%‹×*å+ñR3’kª«MæF«ð~埴¨RoÔƒžyŇ•Ù#a¨7ïSÖÕœóˆ×Î~À+1Æ)ÓŠ¢ÕüÔ"ÇTm¨#µ…qÂçÍHúàÐ]ìö ÏÁ‹ñ+Û/÷ HŠÌ„: Ÿ±MÞžø€v¦ÙQ{½Âtt ìu¸N9ö±ºn±©·±/Ê')3H½w1úùüµ{¶Fmb°:»FÞ’×üîöÖŽ >gÞ‹ ÏIŠFÄÈwÃû$ýÆu˜}j¤ùˆMÐÓɤæi÷{§`dcQk°'/j[lê^„ؾԩ¼ãŃeÓ$žæýU×—1 ³ío ƒˆÎK¢ãÓv‚I ®oÆ臛—0qR@ßÆkxõ·›†iè”7n"_’¶}OcHûô.À,W®Àc¼î2Ky7܆OêF;/ئás8©:žÖwplSïZ†Ì×Â0¶¨NÞ/û^‘n[ñKƾ_¡l‚¯I®”R8ô˜L=ØýJô’Uþ4ÊQŒY‚—ªåþ ëëì7ÃÆðÞÉÓý–a 'º’|„t$‚Ý:u€þ¥l…Ôékà*‰£Ð¯qŸlñËüx¿
+‰&£(¨€Ÿf/^¥¡ª€­)Š>OAà£/ (bì¥fP­k`ìñf×yæ!+^ðÌåö³wvþŠ½íúµ>ØQ‰j ÆFC-ð;_œ‰JÞ:í.»*êÌhOUQýˆK…c/-+K.oÏêíëhïëÍêH¾ðÎú× ›4^5§ÞÐ`¨r NÅœééBTjßÆ•ÖŒ|+5upž¤£ÃÆ°|±nW>#J­Lh‹&Yg°¯ýa·2JÞXQcWòîÚ‚(!]m÷¡ *g|d˜Q¨QYÃ$B`¬©3™º:F-C@Žµ'3Ù“!Òjí‘g™Q Ai+$®Bý£ƒ-§œjIóÒIÌÍ ¨( ˜Y$7£t£Ì¨na>ŽGxnÂå?„§„ò¦$=!r•§/y“¹„ç2—
+endstream
+endobj
+933 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [227.189 512.284 241.912 524.239]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.1) >>
+>> endobj
+939 0 obj <<
+/D [937 0 R /FitH 686.127]
+>> endobj
+122 0 obj <<
+/D [937 0 R /FitH 558.315]
+>> endobj
+585 0 obj <<
+/D [937 0 R /FitH 204.803]
+>> endobj
+126 0 obj <<
+/D [937 0 R /FitH 164.664]
+>> endobj
+936 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F48 455 0 R /F11 573 0 R /F13 705 0 R /F10 668 0 R >>
+/XObject << /Im8 934 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+952 0 obj <<
+/Length 1325
+/Filter /FlateDecode
+>>
+stream
+xÚVYoÛF~÷¯àã
+iîÁ]Òon§)$µ…EÒJ¢%"<dqÝ_ß™%MŠL[g‡ßν3zG/ôÞ_ý´½º¾‹½$H´ÐÞöÑã: ´6žŽuÀ…ñ¶ï ñæÏí¯×wFN‘qH!@ŒÅüüËíçí»û/¥d*ØøÆÄì÷oß}"ÖÝFöéþãí&Vlû€¯BgÅÜì LIò‹¾LA’ˆÙ¹H«ŒÈ¯a¶™;ÜåǾɬ`bC¯9zDÜ¿¿ò¾XŒ
+ÄL3ÌUJ²‡¼Ì‹´)^6±doPjºSöBòOé~¿ãO6pŠG¢
+rjW™¹j;¸9[{ËÅZFÑëb-a‡±‹µJÌ°X#oá2]£âÓÅÚòÝb´[¬‘kÔèÚ§U:ân•^›/0Dÿ˜AuC
+endstream
+endobj
+951 0 obj <<
+/Type /Page
+/Contents 952 0 R
+/Resources 950 0 R
+/MediaBox [0 0 612 792]
+/Parent 940 0 R
+/Annots [ 935 0 R 949 0 R ]
+>> endobj
+948 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./pixel422.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 954 0 R
+/BBox [0 0 336 267]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ExtGState <<
+/R7 955 0 R
+>>/Font << /R8 956 0 R>>
+>>
+/Length 957 0 R
+/Filter /FlateDecode
+>>
+stream
+xœ•“Mo1 †ïù¾ÑJ¬‰;Ž9R®Pæ‚(‡e»ÐNK§Bðóqfwi§ÌVE9d2~òú+¾ˆ±­Ý¾êË3…ËÛÀ¨‰“À¯0ÚáìM *˜2$®¨R²b¦2îÆÃ:¼ß3c¦y&‰DÚC*q$å;%64âyè¯Ò$RP’N”Rµyè¾Ò?Pu£W ¨zóƒ¸eÂHN˜HæŠ9£ÙT(Í3¡‡L©â'°BHZ´mU,å@K>‚ç_Œà“¿‡‹`È\ÛQòýKcl‘ZQ$Ñâj´¿¼½u÷®ˆÅ6 ,=Í%åb¨Z!¹þ¯ÇI–OõH¥ÿ¶Š•ó—ÛQ.÷füÞm«^u>ZEj…îKØNA‰î#&H™PÍM}8z=,ûõKX}®û%üØ,¯Öpòù¸ûJõ›OaÅÌ>ÝÅzhô‚Rs(°Ðˆµ0Ýç7?÷ô‡g náyî”MÆøØÛ’aAìU²2Þ|ûí÷zs;*[*O|‘}8æó£ø<ž7ûiÞùú/ì7
+endstream
+endobj
+954 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115427-07'00')
+/ModDate (D:20090924115427-07'00')
+/Title (pixel422.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+955 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+956 0 obj
+<<
+/BaseFont /TGKBXV#2BTimes-Roman
+/FontDescriptor 958 0 R
+/Type /Font
+/FirstChar 32
+/LastChar 120
+/Widths [ 250 0 0 0 0 0 0 333 333 333 0 0 250 0 0 0 500 0 0 0 0 0 0 0 0 0 278 0 0 0 0 0 0 0 0 667 0 0 556 0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 0 722 0 0 0 0 0 0 0 444 500 444 0 444 0 0 500 278 0 0 278 778 500 500 500 0 333 389 0 500 0 0 500]
+/Encoding 959 0 R
+/Subtype /Type1
+>>
+endobj
+957 0 obj
+414
+endobj
+958 0 obj
+<<
+/Type /FontDescriptor
+/FontName /TGKBXV#2BTimes-Roman
+/FontBBox [ 0 -217 775 683]
+/Flags 32
+/Ascent 683
+/CapHeight 676
+/Descent -217
+/ItalicAngle 0
+/StemV 116
+/MissingWidth 500
+/XHeight 460
+/CharSet (/C/F/P/Y/a/b/c/colon/comma/e/h/i/l/m/n/o/p/parenleft/parenright/quoteright/r/s/space/u/x/zero)
+/FontFile3 960 0 R
+>>
+endobj
+959 0 obj
+<<
+/Type /Encoding
+/BaseEncoding /WinAnsiEncoding
+/Differences [ 39/quoteright]
+>>
+endobj
+960 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 2743
+>>
+stream
+xœeVyTSW1ûp¡-i
+)š¤ußÑj ÚŽZDÇŠ”}W IkزAàKXÂa_‰‚‚ŠÈTQ±¶V«uÑq:­µS]æ>ÎóyÑ™Ós¦ç¼óÎ{÷Þï»ßïû¾ßý]á0‡`±Xóƒ%2qæÚ@¹,.Õþ¿†rgQ çP‹Ø@Ëf›g·9."|[Ø `>æ;´-œgrÁ7^Ãm¯àâW 6‹•kêò–§åeH’’³D+BÃV®^½æ÷‘ ^^^¢ø¼ÿ͈vŠ3%I©¢ėB,•§ÉÄ©Y[EÞÌj©TrP”$ÍKKÎÅ%$ˆìf¡qRqŠh—D*IK“+D+¼WŠ6zxlX˼6ûIdñÙ™¢‘‹üä^"_Q 8)[—ñÇ‚ ÞL•Gx§eìÊÌŽË?(öO–He¢-ËW¬\ãAþÄb @ˉ`"”øˆ ¼‰Ä.b±‡øˆØGø, 'b.±€xpgòG8
+â<ë]ÖàœusŒsh¶ÉíÐí¸Þq>äœA¨}Fjr„üÑiƒ“Âit®+UêL•‚™zó<ëî Þ9Ãn¦ÞæUWÔêì­UF
+i‚@­*ü0©ÄÉf^©l
+*–G¿á±šÐîß/Ã.ØåÉoX€]×ÿ@¿.TËy3—VÓ‹hÇ»·'$vŽ(„òÉ‚¯àùÙ+×γ‰Ð:˶²ð—ÏسA³«x´<—3Yn)‚LЕh
+•ôbZáF¯ÀÚf½êùÐÒT;`¬„:¨7­ô`./kR=¥ß®t°ý!‚M:Ça2_jEªø†Ä¡¯ÀŠéGÝíç*ùγëUcÔÏ#¬^L²g *”WˆŽ
+Ž^Q ÉBPV(«#›#j¢Á <¥û‚}ö‰×=Öõo>xù£ïÄ?v„ŸNOß#óZvìÜ#ó¾/YcŸ•~ ˜Mâ=ßc'¼tjRqpD0b–·~D2Y£e–ü–<,Ó PΗ]nÎà쇮ܒZj¯Ö`‚Z štÑÂçÉ´Z=É]–K÷@ ÚnP×ç$Þ€†uêN‰ç~‡ðRüªÏ?VÅd„Äo!½1D‘¬ÎçãUÛyýl§oœÝF“4;r»wt ­_àŒ2ò•õÍ ÛD½Ékª¨54
+«$.5kg¤ð;Tb ÍNRûç2mñhÅÓ'píñÜV—Ÿž¹r“©L\ÀÃÊ,¤Ùš§Ü
+$½gpz«ª{x!‡Éa»Ò²ìâ”âÅŽÏ{9Ü[¹è†¾Q>äsžZõ¶¦Œƒ­èO•ª&¸NâT¼Ý‹²a “N¾®]c¥ÖYÕí.ç®`¯¯\¹kð—ø Þa¼ÐQË)++,./? |=èŒÚ*’k©ÉήLw?0Ü;hààƒ(áÅCC9–LòcRäáic{®@ÑUØ¡ž" hFŽ©®ÒÈd‡ë[ MeL1,úÞžÃ-î·>»øÕDæàÇ6!M|&oVvAäHïé©~ÉÆ­Ô‹ªÉåÚ Þ5ãʵP™¼Î~mýi!~BoDÜÁ|t¥´A$­A /Q©´iÙR È„”£'…\ ¾C/S¡ñÒ&%ì'é*ôþxø×dž›{z££Žžˆë[Y6aµÕŸkb²î¯›
+¼H¹uº\¸WÜs垢ü>çå«4%J ³Š›Æ„8 ÁdIŸ²3ÛÛêäÚ‘¾YÖœŽÎ6k{eyU¹IXV[^&²g }älOjˆÀÑëöåÅŠ³sT8DrÃ}Çb¦ÇN´MN ¸aU-ŠîG¡­aè83E¯¿ÏiI¡B“©’*€L–V"¸t†ŒÙ¬Ô;f>òÞoæH!§Y:F¿ŽÃÝîãù­=ý;™Þ¨DýeuzPF“!-ÑkòÔ9*«›üdÞQh„¦FS¿4Ó•µ¨šÕG¢ÓKÜhí%‹×*å+ñR3’kª«MæF«ð~埴¨RoÔƒžyŇ•Ù#a¨7ïSÖÕœóˆ×Î~À+1Æ)ÓŠ¢ÕüÔ"ÇTm¨#µ…qÂçÍHúàÐ]ìö ÏÁ‹ñ+Û/÷ HŠÌ„: Ÿ±MÞžø€v¦ÙQ{½Âtt ìu¸N9ö±ºn±©·±/Ê')3H½w1úùüµ{¶Fmb°:»FÞ’×üîöÖŽ >gÞ‹ ÏIŠFÄÈwÃû$ýÆu˜}j¤ùˆMÐÓɤæi÷{§`dcQk°'/j[lê^„ؾԩ¼ãŃeÓ$žæýU×—1 ³ío ƒˆÎK¢ãÓv‚I ®oÆ臛—0qR@ßÆkxõ·›†iè”7n"_’¶}OcHûô.À,W®Àc¼î2Ky7܆OêF;/ئás8©:žÖwplSïZ†Ì×Â0¶¨NÞ/û^‘n[ñKƾ_¡l‚¯I®”R8ô˜L=ØýJô’Uþ4ÊQŒY‚—ªåþ ëëì7ÃÆðÞÉÓý–a 'º’|„t$‚Ý:u€þ¥l…Ôékà*‰£Ð¯qŸlñËüx¿
+‰&£(¨€Ÿf/^¥¡ª€­)Š>OAà£/ (bì¥fP­k`ìñf×yæ!+^ðÌåö³wvþŠ½íúµ>ØQ‰j ÆFC-ð;_œ‰JÞ:í.»*êÌhOUQýˆK…c/-+K.oÏêíëhïëÍêH¾ðÎú× ›4^5§ÞÐ`¨r NÅœééBTjßÆ•ÖŒ|+5upž¤£ÃÆ°|±nW>#J­Lh‹&Yg°¯ýa·2JÞXQcWòîÚ‚(!]m÷¡ *g|d˜Q¨QYÃ$B`¬©3™º:F-C@Žµ'3Ù“!Òjí‘g™Q Ai+$®Bý£ƒ-§œjIóÒIÌÍ ¨( ˜Y$7£t£Ì¨na>ŽGxnÂå?„§„ò¦$=!r•§/y“¹„ç2—
+endstream
+endobj
+935 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [262.354 654.677 277.077 666.633]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.2) >>
+>> endobj
+949 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [393.475 140.605 408.197 152.56]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.3) >>
+>> endobj
+953 0 obj <<
+/D [951 0 R /FitH 686.127]
+>> endobj
+586 0 obj <<
+/D [951 0 R /FitH 258.6]
+>> endobj
+130 0 obj <<
+/D [951 0 R /FitH 213.319]
+>> endobj
+950 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F48 455 0 R /F11 573 0 R /F10 668 0 R /F13 705 0 R >>
+/XObject << /Im9 948 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+964 0 obj <<
+/Length 1276
+/Filter /FlateDecode
+>>
+stream
+xÚ•ÉnÛFô®¯à‘BšÃ¾¹h$hP7Úm#i$ÊÍÃaçëû–¡LÅÌ¡ Î[çío"ïìEÞ»ÍO»ÍÍ}‘xUXåqîíNžˆò°Ì+//óPÄ…·;zùi˜†Û (JÿáýŸoÙI’ø÷Û¸ôýôñn[&þîóöŸÝ‡›ûr¡
+˜Â"­à"RWȲ‰ÜÕ^0Óƒ¸
+êôãäh‡¦Õh°ü‹’p-s»Z»ÜÍ_‹!Çt”bÔ8íÒ¡»3ci¡:¦Qùô„!Ò=[³Žoß½aÚÇÅ™’AHÀkv ŒK–¹´%Ƽ :C@wµ2Ú*¢A ~H°k“¿cÄu¶™½7L[– c±b¦±Ö'ËX#5®C¯lÎÙf£'m(Uæ[ì¼*÷Ã%œŠ)£>w²™üTëKË8Žé¨ÿŽD¢Œ«K¦^uÀ‹¤€ÈÜ[Òê¾sêOýjÃúR¨÷ºÑTÑ®c±ÿ9q¯¯Ç:x­jÇðj¨}ÿ}»Û8Džð„ˆÂ"μ¸â©wh7"þ¯!nÞ·"ò~î7¿ÁoV:ó³Ê`¡“&úr
+ÇQ ÷æ‚;¹|¯Ï“q†É-¤3ÍüýU5®òUwp©šë9½o£UooîÓÒãˆÆxe ¢8ŒŠF|æ"~Y")ô„ˆ3ÿó´_¤«p¥î¸9X¶€Oê i|½b0“e˜”έ»ÆÖýtÆ´Å©S‡“áî±Ü¾9dË#Ç24W2²cfl^šáV ¶×ú“S ÓËÍÍžõð¾)Ü Ç)—Ĺs™ìdSÖj“¯è©3á\ÊœY¯¬
+y¸áò`Ìû—̉aáJCeÓHUŠr8û׆ï”#2Uy>ÂÀi¥¥„G0°`'Ÿ&GÂÁÎpä¢h9d¸T$é”Úi·=£A~ ‹—'¢ç'ÁêÔ3F××¼‚hNãì#í¥@^Á4õæ½ý£GÊÝÈñkwŽæ6À’{yG ƒäÒè‘‹+ÂTÒ”&*3¶ V<rX;䚦Dä¶6ªæÏü$ÀóÕ²ˆf?~üR±µÄ
+ÎsVš®w
+àá29ËÅó(—w!j¦_¤®.ø•å£ã»®¶ð ø:q‚R\^mˆÕÝê5ùÖ7ö
+endstream
+endobj
+963 0 obj <<
+/Type /Page
+/Contents 964 0 R
+/Resources 962 0 R
+/MediaBox [0 0 612 792]
+/Parent 940 0 R
+>> endobj
+961 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./pixel420.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 966 0 R
+/BBox [0 0 336 267]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ExtGState <<
+/R7 967 0 R
+>>/Font << /R8 968 0 R>>
+>>
+/Length 969 0 R
+/Filter /FlateDecode
+>>
+stream
+xœ}’Oo1 Åïù¾ÑJ¬'vs,*\¡Ìµ–í¶í:‚3;Û?êì*‡$òož3Ïï"Ķ¦}Õ‡“s…›‡À¨‰“Àß0Öáüc *˜2$®¨R²b¦2îÆÃ:|Ù1c¦y&‰_D í ƒJ EùI‰ xzTšƒD
+JÒJ©Ú<ô\étN#øæ®]CæÚlTRT?IbŒÍ"+Šä´šìËÅP3TïÀuC„äúV±rÞ]LíŸÆXcš ø3ü>?¼˜ Å3,®©`1¢FÝBibdbJuËóKæQh‚¶±n½÷ÏÓ¶êá´óVP©ºë°M'A‰ngL2¡š—úpôaXöëw°ú1üê—ð{³¼[ÃûïÇÝÏPª;mžØŠ™=KÝÕzhô‚Rk(°Ðˆµ0=ç7vô×7 nÏó1S6ßÇH>¶±ÿ©•ñËO·ÿÖ›‡QÙZ
+endstream
+endobj
+966 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115427-07'00')
+/ModDate (D:20090924115427-07'00')
+/Title (pixel420.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+967 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+968 0 obj
+<<
+/BaseFont /TGKBXV#2BTimes-Roman
+/FontDescriptor 970 0 R
+/Type /Font
+/FirstChar 32
+/LastChar 120
+/Widths [ 250 0 0 0 0 0 0 333 333 333 0 0 250 0 0 0 500 0 0 0 0 0 0 0 0 0 278 0 0 0 0 0 0 0 0 667 0 0 556 0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 0 722 0 0 0 0 0 0 0 444 500 444 0 444 0 0 500 278 0 0 278 778 500 500 500 0 333 389 0 500 0 0 500]
+/Encoding 971 0 R
+/Subtype /Type1
+>>
+endobj
+969 0 obj
+387
+endobj
+970 0 obj
+<<
+/Type /FontDescriptor
+/FontName /TGKBXV#2BTimes-Roman
+/FontBBox [ 0 -217 775 683]
+/Flags 32
+/Ascent 683
+/CapHeight 676
+/Descent -217
+/ItalicAngle 0
+/StemV 116
+/MissingWidth 500
+/XHeight 460
+/CharSet (/C/F/P/Y/a/b/c/colon/comma/e/h/i/l/m/n/o/p/parenleft/parenright/quoteright/r/s/space/u/x/zero)
+/FontFile3 972 0 R
+>>
+endobj
+971 0 obj
+<<
+/Type /Encoding
+/BaseEncoding /WinAnsiEncoding
+/Differences [ 39/quoteright]
+>>
+endobj
+972 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 2743
+>>
+stream
+xœeVyTSW1ûp¡-i
+)š¤ußÑj ÚŽZDÇŠ”}W IkزAàKXÂa_‰‚‚ŠÈTQ±¶V«uÑq:­µS]æ>ÎóyÑ™Ós¦ç¼óÎ{÷Þï»ßïû¾ßý]á0‡`±Xóƒ%2qæÚ@¹,.Õþ¿†rgQ çP‹Ø@Ëf›g·9."|[Ø `>æ;´-œgrÁ7^Ãm¯àâW 6‹•kêò–§åeH’’³D+BÃV®^½æ÷‘ ^^^¢ø¼ÿ͈vŠ3%I©¢ėB,•§ÉÄ©Y[EÞÌj©TrP”$ÍKKÎÅ%$ˆìf¡qRqŠh—D*IK“+D+¼WŠ6zxlX˼6ûIdñÙ™¢‘‹üä^"_Q 8)[—ñÇ‚ ÞL•Gx§eìÊÌŽË?(öO–He¢-ËW¬\ãAþÄb @ˉ`"”øˆ ¼‰Ä.b±‡øˆØGø, 'b.±€xpgòG8
+â<ë]ÖàœusŒsh¶ÉíÐí¸Þq>äœA¨}Fjr„üÑiƒ“Âit®+UêL•‚™zó<ëî Þ9Ãn¦ÞæUWÔêì­UF
+i‚@­*ü0©ÄÉf^©l
+*–G¿á±šÐîß/Ã.ØåÉoX€]×ÿ@¿.TËy3—VÓ‹hÇ»·'$vŽ(„òÉ‚¯àùÙ+×γ‰Ð:˶²ð—ÏسA³«x´<—3Yn)‚LЕh
+•ôbZáF¯ÀÚf½êùÐÒT;`¬„:¨7­ô`./kR=¥ß®t°ý!‚M:Ça2_jEªø†Ä¡¯ÀŠéGÝíç*ùγëUcÔÏ#¬^L²g *”WˆŽ
+Ž^Q ÉBPV(«#›#j¢Á <¥û‚}ö‰×=Öõo>xù£ïÄ?v„ŸNOß#óZvìÜ#ó¾/YcŸ•~ ˜Mâ=ßc'¼tjRqpD0b–·~D2Y£e–ü–<,Ó PΗ]nÎà쇮ܒZj¯Ö`‚Z štÑÂçÉ´Z=É]–K÷@ ÚnP×ç$Þ€†uêN‰ç~‡ðRüªÏ?VÅd„Äo!½1D‘¬ÎçãUÛyýl§oœÝF“4;r»wt ­_àŒ2ò•õÍ ÛD½Ékª¨54
+«$.5kg¤ð;Tb ÍNRûç2mñhÅÓ'píñÜV—Ÿž¹r“©L\ÀÃÊ,¤Ùš§Ü
+$½gpz«ª{x!‡Éa»Ò²ìâ”âÅŽÏ{9Ü[¹è†¾Q>äsžZõ¶¦Œƒ­èO•ª&¸NâT¼Ý‹²a “N¾®]c¥ÖYÕí.ç®`¯¯\¹kð—ø Þa¼ÐQË)++,./? |=èŒÚ*’k©ÉήLw?0Ü;hààƒ(áÅCC9–LòcRäáic{®@ÑUØ¡ž" hFŽ©®ÒÈd‡ë[ MeL1,úÞžÃ-î·>»øÕDæàÇ6!M|&oVvAäHïé©~ÉÆ­Ô‹ªÉåÚ Þ5ãʵP™¼Î~mýi!~BoDÜÁ|t¥´A$­A /Q©´iÙR È„”£'…\ ¾C/S¡ñÒ&%ì'é*ôþxø×dž›{z££Žžˆë[Y6aµÕŸkb²î¯›
+¼H¹uº\¸WÜs垢ü>çå«4%J ³Š›Æ„8 ÁdIŸ²3ÛÛêäÚ‘¾YÖœŽÎ6k{eyU¹IXV[^&²g }älOjˆÀÑëöåÅŠ³sT8DrÃ}Çb¦ÇN´MN ¸aU-ŠîG¡­aè83E¯¿ÏiI¡B“©’*€L–V"¸t†ŒÙ¬Ô;f>òÞoæH!§Y:F¿ŽÃÝîãù­=ý;™Þ¨DýeuzPF“!-ÑkòÔ9*«›üdÞQh„¦FS¿4Ó•µ¨šÕG¢ÓKÜhí%‹×*å+ñR3’kª«MæF«ð~埴¨RoÔƒžyŇ•Ù#a¨7ïSÖÕœóˆ×Î~À+1Æ)ÓŠ¢ÕüÔ"ÇTm¨#µ…qÂçÍHúàÐ]ìö ÏÁ‹ñ+Û/÷ HŠÌ„: Ÿ±MÞžø€v¦ÙQ{½Âtt ìu¸N9ö±ºn±©·±/Ê')3H½w1úùüµ{¶Fmb°:»FÞ’×üîöÖŽ >gÞ‹ ÏIŠFÄÈwÃû$ýÆu˜}j¤ùˆMÐÓɤæi÷{§`dcQk°'/j[lê^„ؾԩ¼ãŃeÓ$žæýU×—1 ³ío ƒˆÎK¢ãÓv‚I ®oÆ臛—0qR@ßÆkxõ·›†iè”7n"_’¶}OcHûô.À,W®Àc¼î2Ky7܆OêF;/ئás8©:žÖwplSïZ†Ì×Â0¶¨NÞ/û^‘n[ñKƾ_¡l‚¯I®”R8ô˜L=ØýJô’Uþ4ÊQŒY‚—ªåþ ëëì7ÃÆðÞÉÓý–a 'º’|„t$‚Ý:u€þ¥l…Ôékà*‰£Ð¯qŸlñËüx¿
+‰&£(¨€Ÿf/^¥¡ª€­)Š>OAà£/ (bì¥fP­k`ìñf×yæ!+^ðÌåö³wvþŠ½íúµ>ØQ‰j ÆFC-ð;_œ‰JÞ:í.»*êÌhOUQýˆK…c/-+K.oÏêíëhïëÍêH¾ðÎú× ›4^5§ÞÐ`¨r NÅœééBTjßÆ•ÖŒ|+5upž¤£ÃÆ°|±nW>#J­Lh‹&Yg°¯ýa·2JÞXQcWòîÚ‚(!]m÷¡ *g|d˜Q¨QYÃ$B`¬©3™º:F-C@Žµ'3Ù“!Òjí‘g™Q Ai+$®Bý£ƒ-§œjIóÒIÌÍ ¨( ˜Y$7£t£Ì¨na>ŽGxnÂå?„§„ò¦$=!r•§/y“¹„ç2—
+endstream
+endobj
+965 0 obj <<
+/D [963 0 R /FitH 686.127]
+>> endobj
+587 0 obj <<
+/D [963 0 R /FitH 273.824]
+>> endobj
+134 0 obj <<
+/D [963 0 R /FitH 234.268]
+>> endobj
+962 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F48 455 0 R >>
+/XObject << /Im10 961 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+987 0 obj <<
+/Length 1913
+/Filter /FlateDecode
+>>
+stream
+xÚÙŽÛ6ð}¿Â2+¢D]yK›Ýt MS£’>h%Ú*K®$'»ýúÎEŽ6
+Öp83$ç&½Õ~å­ÞÞ|·½yy—¬R7ühµÝ­Tä¹Q¯¢$r•¯¶Åêƒx뿶?¾¼‹ƒ)e’¸ïƒ¢ùþ‡×ﶷï×› í®7qœ8¿Ý¿¹ý™Qwk?v~~ÿÓëu¢í¯(ðÆ“]Ì·°±’7~ È€å÷³Þøiêäms:˜8¦`Ì©\+'_o”ÓŸj…°5û²©>âê8Ù"ç¥0EYçÕ¹0ì\Ãv·‡5Ì»°{/r>ŒH*ÊOeQÖ{1ìêsYô›Û(å¦aÈû?˜rO2{”è9ÍŽ¿$S™ÛDZÝ>ÂÈø$ Æ¿Fòmú¬¬/¤v忲Ã/ìÎ]v<U¨Fç(óÐ6Çliÿ§*« ©´2p7FÅ¢šzÆÅAۜ낄ÝùGsI°Ònªõ\úÝ: œs rÛcÓXF+_¶šÆí“”¤‘S5´Lžõ  ŽqY+¤…ùè)]Óº€oMdŸÐü†1¤. ᑳk³#¬ÈîM1€ÆQh=¼nz&š9kà§nì¥óãlí§lÔVlQ Àw~'Bô¹£“!8ðéWþ+ŸÁ¬.FœÇà®iYÖÐa0r‘bâQ1ˆ³/Xsbk8AÂaAÎÐ1bЛý¶‘/é W;ÜSÎÂHtÖ…`È‹Ñi ,È–¥ V§rçÙ†#ÞpV :ƒ´:b_†/ó
+¨Ñíuê˜,GG:ðdÞ€êù†¾Cƒžtä{ÛšŽuÕ®‹ZÖ¦(XÈF9“ãjÏârˆd 4ýÑ ½ÎÜ•{Ô æ[òVí~ÅÀû·7«D£]=KÈ„Vèf,#«—ŽciQXM¡SCŽÙ’'†>¨zbÈ<ææÔ“=t¨H³ˆ.w<î-‡$PšëxÎÚ Ý<ÖZ(%«™©(ñg¹We]¿èùb5­â%
+¢dÜLÄ
+GœähÈ;x°ktY Ÿ xZs„šÈ•c×ñí8³®„˜ Y͢Υ
+ÇT…“t´wzWc´=gi ªfIýÌô9ø8F‚§)x%%̳Áƒ8"Ô$u! “Â<ÅQ ºl¶ÇÖa1\.C„êÃ_¬ïl1@ RqzÇ“b1ÀŒ•¤24‚Þ«j£Ö2^VÛs­Åk­¤Â•Ç²ÊZFœZi#L×1†T§°ºVPIm—E„ÂT¬¬w
+õ7¨P£
+Ÿ+Y2 wZ6h
+ .9cÑÒÉè“$K–œ5¹:ùšONzŠ`±7 °'kxV²A†§Æõ¥; †î,»³\Q†Beo8
+•m‹5u©õë–7­[±Ô-Oî9^|y_ŒÈÀWí
+ŒÔ\Ö(Øfð0ÊCoÉ"ÀK!≄Gó PcPx¶à¹Æmtw¨(YÕ5¶Þ|½@fø¦CÿŸòr;æä³'ZûÐœ«‚áñÛèÁt]EåÏïp Rî¡d¦(1P@?unD0e{ë5´’\áù="òí;@|«ü²”H~BùIBŠÉ@8Â~Ÿ¾Ci¢‘D,•ZDó.’„=ì ê]V!bhU|¸e³K ÕòŠöÝ„d½™›à+ »É‚O°y±Ûydï' æ½´LóZ’¤Ó‚¤|!é›é­$xÓiÖ„]‰p^ŽÑ>Í$/ ä^½‡‡ÓDáÛ'
+@KáÇ× î¬«åQ‹R ŒúìoûÊ9?ˆ
+endstream
+endobj
+986 0 obj <<
+/Type /Page
+/Contents 987 0 R
+/Resources 985 0 R
+/MediaBox [0 0 612 792]
+/Parent 940 0 R
+/Annots [ 973 0 R 974 0 R 975 0 R 976 0 R 977 0 R 978 0 R 979 0 R 980 0 R ]
+>> endobj
+981 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./pic_even.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 989 0 R
+/BBox [0 0 417 168]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ExtGState <<
+/R7 990 0 R
+>>/Font << /R8 991 0 R>>
+>>
+/Length 992 0 R
+/Filter /FlateDecode
+>>
+stream
+xœTMoA ½ï¯˜c"3öØóÑ# q‚²·¦‡( Ô5‚ŸÏ›ìnº Ù´ÚÃ$;Ïöóó[?:Oì|}ús½mÞ^'wÿÔ(%Q1÷§Ùß»ë çD>GgQɼ:J3ÎDE‹Ûmš¯r¦RâyPJ…²¨3ó乂ŒTpŠ’?Á<'ú3cIøF ÅSu 8"½³ RÙ_†=³Q¦Š§h2Ê–+—Ë™zÐÅLb¦„e’ó˜£D§˜XŒJ¾Ìh
+Éë¾ØQž)FG‰NA7p#ÅÂî½k
+©æjZf•ý°…)fu%
+ÓÁl)ÈC:ö$<J`Åœ ³†âlL…G söòšO!øàJÁû¢—;”€b{Ï™"(J]9‘¤é;îºp±ó_ŒXôd#S©E9æõ*Ð$ù*KeëSG#cÆ<°Ï]p·xv÷ÍcÃÝïþXoÝ»‹*;L3&ŒµýÖt ŒCwNÉ°‹œ\»mfD4o6 Æ ‚waâÚ»ÑÖ ~`˜Çwìše·@‡Á î讲@‹ÐX,ê|“
+’êáP;ÏACÇ<üÞ®*ä}Û|ÁóBF_ì
+endstream
+endobj
+989 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115428-07'00')
+/ModDate (D:20090924115428-07'00')
+/Title (pic_even.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+990 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+991 0 obj
+<<
+/BaseFont /AXDXXM#2BTimes-Roman
+/FontDescriptor 993 0 R
+/Type /Font
+/FirstChar 32
+/LastChar 120
+/Widths [ 250 0 0 0 0 0 0 0 333 333 0 0 250 0 250 0 500 0 500 0 500 0 0 0 0 0 278 0 0 0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444 0 444 0 444 0 0 500 278 0 0 278 778 0 500 0 0 333 389 0 500 0 0 500]
+/Encoding /WinAnsiEncoding
+/Subtype /Type1
+>>
+endobj
+992 0 obj
+609
+endobj
+993 0 obj
+<<
+/Type /FontDescriptor
+/FontName /AXDXXM#2BTimes-Roman
+/FontBBox [ 0 -177 775 683]
+/Flags 131104
+/Ascent 683
+/CapHeight 662
+/Descent -177
+/ItalicAngle 0
+/StemV 116
+/MissingWidth 500
+/XHeight 460
+/CharSet (/F/P/a/c/colon/comma/e/four/h/i/l/m/o/parenleft/parenright/period/r/s/space/two/u/x/zero)
+/FontFile3 994 0 R
+>>
+endobj
+994 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 2332
+>>
+stream
+xœeUkXSG>1$sl‘nISHÑ$½Xu½©® ¶¶ËÅv¥”‘‹IH ×\M‚À$\Â-„@¸†«DQAë¢ÛÖÖmµ­Úv¥în»mÝ®ën·sØñÇh÷Ù}žóÌsÎ|ó½ó}ïÌû°‚`0É2…D½Y¬Td.}o¢ÂÔêÔ&ı‹‹{XkˆøNæ*È„Ý«WN£÷G!ë/&ƒQæìVªÊ‹eùRp}Š8uÃÆ›þ?³5**J˜Sþ¿ˆ0F¢–å
+Ÿ§_J$r¥J!)ÔìFÓ«årÙa¾¼\%U ³ss%¹Kiû³å’aœL.S©”%ÂõÑ„áá[7ÓÃö™"G«.W.LPF ã…bI¾Vž]üóA!Êâ8µ6»ìˆ$Q*“+¶ w®ß°iKxA$IÄ:"™ØOüš8@ÄqÄVâuâ7ÄDÁ%D±’x„XE<F<NpˆPš6"€Nò3Ö0άX»â
+SÄ L?°’YìWÙz¶‰}–ý°`RDUQÕæA*b1ô%jÿ’‰ê¨,.~2|#æã°¯ŸGÁ(øÞ¿…¼ð-~B`Pr.oÄk0ëðÞWróúN—”—*?„×Éoßš¿ÎBw¡›zÉ˸¹ÀtROqÛëšímìo®Ìà:
+ªûµù†Ä2^õ;Ø…æΠæSe]Á‘RjTÉE: 0î*×í‚$^‹ŠÙƒ >>ZÍF,Ø£ól%ûÙÕèYÖÃA6çVøØæÒÃXòa,€‘&Þ*² u—ëõíð‰
+ÑZð9ôèÚv’AÏÜcôR[¼†žà‹ó(êÃÎ&ôt{­f™Ø55ǬµµÇ!ÏÍSÉñ4iµõEa»ÅiÑI£G¾HÌ/õ¨¡œ—Y L“É]=eü’þc½†²‡»ØΖzÍ'¾¶×ôÚh
+Hæœ8+àxЧøy=¸PÝ®ƒ$n
+४!]ŸÖŸÕ•ÉͯŒ×xK{ûº½=õµ µNAMsmt’¾ÑžÓ¿õ¦ð
+ÀCåÙ¡U Œ"1ÿÆv¾ýä2"Îòñm´‰ÛzûÄÉ98û”®mäÂê9¦OÒºÿ
+›?ôÜ/`Pª·;4Kw™ö‹°·- „&ÚŠîqÏžöL@rº??V€¸×lÙhϺAJ‹­ ~@¢tð}öÛ;³ÕofðÑ ¨ª“‹-I•<•…U êíu°’“M–,ÁÃ
+
+Ú:Bwý^9®úD}Ítއ߻þ蛜öߘ%Aéw™§p,÷ã Ã'Ï_ÿÓø}ˆVBôDÞß^|s¡¨'uÔXúY¼O:øJßk­{à:ø¬!R• ŒWäG‹h:›·ò_Á(|"„“u?ͽ6vn^!§¥‡¥jŒÏé.è-ó7:íöF>'Ëá„ÐÖÔh³(óRòèNêLt ßÿyã4±úÅàFß=äºÇDNºÓd˜]‘'%I0Xn•1†W¾•t2ó¢z^„“ÿøì;§ Ñ*e‡£§q¿ºˆ»p³°K2…Û·gþ€r‘ôbÞ]Ú
+*bº«BOçý
+endstream
+endobj
+973 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [459.007 570.991 473.73 582.946]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.4) >>
+>> endobj
+974 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [470.438 547.081 485.161 559.036]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.5) >>
+>> endobj
+975 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [231.587 511.215 246.31 523.171]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.6) >>
+>> endobj
+976 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [426.394 499.26 441.116 511.215]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.7) >>
+>> endobj
+977 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [395.504 463.395 410.227 475.35]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.4) >>
+>> endobj
+978 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [211.384 439.484 226.106 451.44]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.5) >>
+>> endobj
+979 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [297.797 415.574 312.52 427.529]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.6) >>
+>> endobj
+980 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [319.212 403.619 333.935 415.574]
+/Subtype /Link
+/A << /S /GoTo /D (figure.4.7) >>
+>> endobj
+988 0 obj <<
+/D [986 0 R /FitH 686.127]
+>> endobj
+588 0 obj <<
+/D [986 0 R /FitH 176.976]
+>> endobj
+985 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F70 508 0 R >>
+/XObject << /Im11 981 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+997 0 obj <<
+/Length 352
+/Filter /FlateDecode
+>>
+stream
+xÚ½ÒÉNÃ0à{žÂGû×Ëx 7 *Q $à€S"Ѥ´eO›¥JE7Uå{2þí|2C#ÄÐYp’½ØHÑH ’gÄ™¦VGH[M¹0(ÉÐ=
+”„ÆX<Üõ/H(¥Ä1_Ý\+qrK“ó^l;Q¾‰ˆüFUˆä‹–€5[oz÷“€ûC|y% åR t¼ŒZBU-Ýqõ±]Ùzƒ1è´ ®ýÓnÐö„m|Øɯ@슇¥Z‚HQ¡xý+q>zŸºš¨:"!€ÂÃü˽ÖÅ´œNÝlBBOT™+Ò¦û3Ÿ¿Ô#÷A„Á®¨g“</#ËÆåÌÍ3ÀOEÖ”«¸,[³b–»½t·(KàžS¦,w+wò+sF¹ÑH2_½NY¤¼Ñ V”åÊð'Ê\iª?Lv+wò7Þe.<'¬½Ë柔·Üþ½•½î›t"
+endstream
+endobj
+996 0 obj <<
+/Type /Page
+/Contents 997 0 R
+/Resources 995 0 R
+/MediaBox [0 0 612 792]
+/Parent 940 0 R
+>> endobj
+982 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./pic_even_odd.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 999 0 R
+/BBox [0 0 417 168]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ColorSpace <<
+/R9 1000 0 R
+>>/ExtGState <<
+/R7 1001 0 R
+>>/Pattern <<
+/R8 1002 0 R
+>>/Font << /R10 1003 0 R>>
+>>
+/Length 1004 0 R
+/Filter /FlateDecode
+>>
+stream
+xœVMoÚ@½ûWì‘He²3û99Vj+õÔ&¾%9 BÓV¡U@UûóûÛ`‚ – Þ73oÞoy5–ØØò´ër]]ß&ó¼­<%ñÌßj·on?UœÙMˆž‚õ†'Žk"õj6«ênòœI5ƒRRÊâM–,P /XÅ“}ƒ9$:ÅHž@28!—tWÄÉq­ãÔR 2Œ‰Hóqž¯ÐQ¢· {¨CQÙ<B³§JÉû\DdöBš SÌÞ¨ ß“yt×7QíY$£ˆÐ|ŠäA”- w’ ¤Éi:–<t瘔{ S99 YŸö’'çH¬3ªx¯þ|‡âPŒý.qðŠŽR0ì9‘¤ñ†áq‘-…Þz(ÊD^¥ãBĦ¦BV%îˆå1b“jv³™ìùÙ:¼—C&ˆwv¶:ÐÙ)iQÑ„Ÿtfpšl6Ïg\Ô8ŠÝÍÈ7üôÕ,·!\ßf³]þš84άӰ+ˆMˆ»Œ¥åc‚Á·–aZSâ.c.Òw³ó´ÎÅ]ÆìqääFì}„û>6Qê øÔ0ùI@wí].¯7ŸÛe¹6ïkÇW8rL°æ9ˆax''(ƒÎ"'S¯«]Õ?«9ÊK‹M˜˜ú©·=a¦P¦µz{l Ëlæ°`½½ ˜;øhÌ‹I'V(  ÷³‡™}g®®æì“â’Ø¿x¬?Ãôp±âòœcÀÔaòKö€
+EV5‚µ8~Ùþòãßêe»¯ß“¡)ë[„Ê–!o³æ“62þ*¸Ø¶à6sKéãf±^ݘå÷ÍïõÂ<ÌüÜà0ÛUóU7›˜ÑºÑ éI¹Š\é=;ïr?æåÏzQ êê+žÿ¾êÜÜ
+endstream
+endobj
+999 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115428-07'00')
+/ModDate (D:20090924115428-07'00')
+/Title (pic_even_odd.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+1000 0 obj
+[/Pattern/DeviceRGB]
+endobj
+1001 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+1002 0 obj
+<<
+/Filter /FlateDecode
+/Type /Pattern
+/PatternType 1
+/PaintType 2
+/TilingType 2
+/BBox [ -2 -4 10 5]
+/Matrix [ 1 0 0 -1 -27.4 197.8]
+/XStep 8
+/YStep 4
+/Resources <<
+/ProcSet [/PDF]
+>>
+/Length 71
+>>
+stream
+xœ3Ð3T0
+¹\†@%†
+9\Áå†0QSˆ` 
+endstream
+endobj
+1003 0 obj
+<<
+/BaseFont /AXDXXM#2BTimes-Roman
+/FontDescriptor 1005 0 R
+/Type /Font
+/FirstChar 32
+/LastChar 120
+/Widths [ 250 0 0 0 0 0 0 0 333 333 0 0 250 0 250 0 500 0 500 0 500 0 0 0 0 0 278 0 0 0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444 0 444 0 444 0 0 500 278 0 0 278 778 0 500 0 0 333 389 0 500 0 0 500]
+/Encoding /WinAnsiEncoding
+/Subtype /Type1
+>>
+endobj
+1004 0 obj
+686
+endobj
+1005 0 obj
+<<
+/Type /FontDescriptor
+/FontName /AXDXXM#2BTimes-Roman
+/FontBBox [ 0 -177 775 683]
+/Flags 131104
+/Ascent 683
+/CapHeight 662
+/Descent -177
+/ItalicAngle 0
+/StemV 116
+/MissingWidth 500
+/XHeight 460
+/CharSet (/F/P/a/c/colon/comma/e/four/h/i/l/m/o/parenleft/parenright/period/r/s/space/two/u/x/zero)
+/FontFile3 1006 0 R
+>>
+endobj
+1006 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 2332
+>>
+stream
+xœeUkXSG>1$sl‘nISHÑ$½Xu½©® ¶¶ËÅv¥”‘‹IH ×\M‚À$\Â-„@¸†«DQAë¢ÛÖÖmµ­Úv¥în»mÝ®ën·sØñÇh÷Ù}žóÌsÎ|ó½ó}ïÌû°‚`0É2…D½Y¬Td.}o¢ÂÔêÔ&ı‹‹{XkˆøNæ*È„Ý«WN£÷G!ë/&ƒQæìVªÊ‹eùRp}Š8uÃÆ›þ?³5**J˜Sþ¿ˆ0F¢–å
+Ÿ§_J$r¥J!)ÔìFÓ«årÙa¾¼\%U ³ss%¹Kiû³å’aœL.S©”%ÂõÑ„áá[7ÓÃö™"G«.W.LPF ã…bI¾Vž]üóA!Êâ8µ6»ìˆ$Q*“+¶ w®ß°iKxA$IÄ:"™ØOüš8@ÄqÄVâuâ7ÄDÁ%D±’x„XE<F<NpˆPš6"€Nò3Ö0άX»â
+SÄ L?°’YìWÙz¶‰}–ý°`RDUQÕæA*b1ô%jÿ’‰ê¨,.~2|#æã°¯ŸGÁ(øÞ¿…¼ð-~B`Pr.oÄk0ëðÞWróúN—”—*?„×Éoßš¿ÎBw¡›zÉ˸¹ÀtROqÛëšímìo®Ìà:
+ªûµù†Ä2^õ;Ø…æΠæSe]Á‘RjTÉE: 0î*×í‚$^‹ŠÙƒ >>ZÍF,Ø£ól%ûÙÕèYÖÃA6çVøØæÒÃXòa,€‘&Þ*² u—ëõíð‰
+ÑZð9ôèÚv’AÏÜcôR[¼†žà‹ó(êÃÎ&ôt{­f™Ø55ǬµµÇ!ÏÍSÉñ4iµõEa»ÅiÑI£G¾HÌ/õ¨¡œ—Y L“É]=eü’þc½†²‡»ØΖzÍ'¾¶×ôÚh
+Hæœ8+àxЧøy=¸PÝ®ƒ$n
+४!]ŸÖŸÕ•ÉͯŒ×xK{ûº½=õµ µNAMsmt’¾ÑžÓ¿õ¦ð
+ÀCåÙ¡U Œ"1ÿÆv¾ýä2"Îòñm´‰ÛzûÄÉ98û”®mäÂê9¦OÒºÿ
+›?ôÜ/`Pª·;4Kw™ö‹°·- „&ÚŠîqÏžöL@rº??V€¸×lÙhϺAJ‹­ ~@¢tð}öÛ;³ÕofðÑ ¨ª“‹-I•<•…U êíu°’“M–,ÁÃ
+
+Ú:Bwý^9®úD}Ítއ߻þ蛜öߘ%Aéw™§p,÷ã Ã'Ï_ÿÓø}ˆVBôDÞß^|s¡¨'uÔXúY¼O:øJßk­{à:ø¬!R• ŒWäG‹h:›·ò_Á(|"„“u?ͽ6vn^!§¥‡¥jŒÏé.è-ó7:íöF>'Ëá„ÐÖÔh³(óRòèNêLt ßÿyã4±úÅàFß=äºÇDNºÓd˜]‘'%I0Xn•1†W¾•t2ó¢z^„“ÿøì;§ Ñ*e‡£§q¿ºˆ»p³°K2…Û·gþ€r‘ôbÞ]Ú
+*bº«BOçý
+endstream
+endobj
+983 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./pic_odd.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 1007 0 R
+/BBox [0 0 417 168]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ColorSpace <<
+/R9 1008 0 R
+>>/ExtGState <<
+/R7 1009 0 R
+>>/Pattern <<
+/R8 1010 0 R
+>>/Font << /R10 1011 0 R>>
+>>
+/Length 1012 0 R
+/Filter /FlateDecode
+>>
+stream
+xœUËnÛ@ ¼ë+xt€šYr¹¯ ´zjßš ÇI[Ä-b£h?¿³–ì(‰%:¬¤’á4ûHŽ…\½ºuµiÎ/Ýï㤦þ6û}ºüÔHNìr¤ƒ3o,1cM\¬ÐvÝ\A&™K‰§A)Îj‚c'Ø«»˜§D¯1‡b¢É³L0 8¾…ä“D¤§à•}*ûM¿gÖËt
+p¾á ›cBÅÃjö
+á`*Õ,ëö—ÿÖ»cýž mY;Ù"¬Î ü¹]ó«62Nl»6BàB0´˜;J·ËÍú‚Vß·¿7KºžÙ…^`ËݺåÙ©›)fôSü`ö‚´º¸¯½go>÷cþl–òaÑ|Åõ=JÂq
+endstream
+endobj
+1007 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115428-07'00')
+/ModDate (D:20090924115428-07'00')
+/Title (pic_odd.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+1008 0 obj
+[/Pattern/DeviceRGB]
+endobj
+1009 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+1010 0 obj
+<<
+/Filter /FlateDecode
+/Type /Pattern
+/PatternType 1
+/PaintType 2
+/TilingType 2
+/BBox [ -2 -4 10 5]
+/Matrix [ 1 0 0 -1 -27.4 197.8]
+/XStep 8
+/YStep 4
+/Resources <<
+/ProcSet [/PDF]
+>>
+/Length 71
+>>
+stream
+xœ3Ð3T0
+¹\†@%†
+9\Áå†0QSˆ` 
+endstream
+endobj
+1011 0 obj
+<<
+/BaseFont /AXDXXM#2BTimes-Roman
+/FontDescriptor 1013 0 R
+/Type /Font
+/FirstChar 32
+/LastChar 120
+/Widths [ 250 0 0 0 0 0 0 0 333 333 0 0 250 0 250 0 500 0 500 0 500 0 0 0 0 0 278 0 0 0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444 0 444 0 444 0 0 500 278 0 0 278 778 0 500 0 0 333 389 0 500 0 0 500]
+/Encoding /WinAnsiEncoding
+/Subtype /Type1
+>>
+endobj
+1012 0 obj
+666
+endobj
+1013 0 obj
+<<
+/Type /FontDescriptor
+/FontName /AXDXXM#2BTimes-Roman
+/FontBBox [ 0 -177 775 683]
+/Flags 131104
+/Ascent 683
+/CapHeight 662
+/Descent -177
+/ItalicAngle 0
+/StemV 116
+/MissingWidth 500
+/XHeight 460
+/CharSet (/F/P/a/c/colon/comma/e/four/h/i/l/m/o/parenleft/parenright/period/r/s/space/two/u/x/zero)
+/FontFile3 1014 0 R
+>>
+endobj
+1014 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 2332
+>>
+stream
+xœeUkXSG>1$sl‘nISHÑ$½Xu½©® ¶¶ËÅv¥”‘‹IH ×\M‚À$\Â-„@¸†«DQAë¢ÛÖÖmµ­Úv¥în»mÝ®ën·sØñÇh÷Ù}žóÌsÎ|ó½ó}ïÌû°‚`0É2…D½Y¬Td.}o¢ÂÔêÔ&ı‹‹{XkˆøNæ*È„Ý«WN£÷G!ë/&ƒQæìVªÊ‹eùRp}Š8uÃÆ›þ?³5**J˜Sþ¿ˆ0F¢–å
+Ÿ§_J$r¥J!)ÔìFÓ«årÙa¾¼\%U ³ss%¹Kiû³å’aœL.S©”%ÂõÑ„áá[7ÓÃö™"G«.W.LPF ã…bI¾Vž]üóA!Êâ8µ6»ìˆ$Q*“+¶ w®ß°iKxA$IÄ:"™ØOüš8@ÄqÄVâuâ7ÄDÁ%D±’x„XE<F<NpˆPš6"€Nò3Ö0άX»â
+SÄ L?°’YìWÙz¶‰}–ý°`RDUQÕæA*b1ô%jÿ’‰ê¨,.~2|#æã°¯ŸGÁ(øÞ¿…¼ð-~B`Pr.oÄk0ëðÞWróúN—”—*?„×Éoßš¿ÎBw¡›zÉ˸¹ÀtROqÛëšímìo®Ìà:
+ªûµù†Ä2^õ;Ø…æΠæSe]Á‘RjTÉE: 0î*×í‚$^‹ŠÙƒ >>ZÍF,Ø£ól%ûÙÕèYÖÃA6çVøØæÒÃXòa,€‘&Þ*² u—ëõíð‰
+ÑZð9ôèÚv’AÏÜcôR[¼†žà‹ó(êÃÎ&ôt{­f™Ø55ǬµµÇ!ÏÍSÉñ4iµõEa»ÅiÑI£G¾HÌ/õ¨¡œ—Y L“É]=eü’þc½†²‡»ØΖzÍ'¾¶×ôÚh
+Hæœ8+àxЧøy=¸PÝ®ƒ$n
+४!]ŸÖŸÕ•ÉͯŒ×xK{ûº½=õµ µNAMsmt’¾ÑžÓ¿õ¦ð
+ÀCåÙ¡U Œ"1ÿÆv¾ýä2"Îòñm´‰ÛzûÄÉ98û”®mäÂê9¦OÒºÿ
+›?ôÜ/`Pª·;4Kw™ö‹°·- „&ÚŠîqÏžöL@rº??V€¸×lÙhϺAJ‹­ ~@¢tð}öÛ;³ÕofðÑ ¨ª“‹-I•<•…U êíu°’“M–,ÁÃ
+
+Ú:Bwý^9®úD}Ítއ߻þ蛜öߘ%Aéw™§p,÷ã Ã'Ï_ÿÓø}ˆVBôDÞß^|s¡¨'uÔXúY¼O:øJßk­{à:ø¬!R• ŒWäG‹h:›·ò_Á(|"„“u?ͽ6vn^!§¥‡¥jŒÏé.è-ó7:íöF>'Ëá„ÐÖÔh³(óRòèNêLt ßÿyã4±úÅàFß=äºÇDNºÓd˜]‘'%I0Xn•1†W¾•t2ó¢z^„“ÿøì;§ Ñ*e‡£§q¿ºˆ»p³°K2…Û·gþ€r‘ôbÞ]Ú
+*bº«BOçý
+endstream
+endobj
+984 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./pic_odd_even.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 1015 0 R
+/BBox [0 0 417 168]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ColorSpace <<
+/R9 1016 0 R
+>>/ExtGState <<
+/R7 1017 0 R
+>>/Pattern <<
+/R8 1018 0 R
+>>/Font << /R10 1019 0 R>>
+>>
+/Length 1020 0 R
+/Filter /FlateDecode
+>>
+stream
+xœVËnA¼ïWôK¡=Ýól#%‘rJì½Ù> ŒD&‘AQòù©a¯1°8â0ÀTÏTÕöLí9rõ³§óæü2Óò œ5h¤?Íjž.?5R2»’(¦ÀÑXRÁ˜Ù‚ÑbÖ\mAA
+›¥ý œ‹ŠÑ±“
+Š£v;˜ç…^c6›‰fÏ2ÀH€â´ Šèª8™Ð-´Þ5Æ!”*^$èªH…S d0üΪÀj]ÜU={&ª…½éœ"{-űʆ˜BRÉ[Ð^bR¢°I´ÏeòÖªì=«ód†ÿ-W¨›­¼‹Š’çI‚dÖ|X`Ç=Á±¸ßyÉqŒäÍqŠŠ5Cä¤'òªŠ+—»ŠˆX9DLc ŒoÑ+ûl+B^wyu˜-¯=WSË8E\„»B‹‡Fƒ(fŽ,d4]vçêü²Ðrúó¤ºaÌ ­ÃŠŽÓ:V7Œ9ñIûK=¥/ZþÞJÐ vA\ð†AS¾õáœR7Œ¤õÖ‡sJÝ0æ¹Ýqe»ÿjwñ¸bêaì—Æá¾:V7Œ¦uPÑ
+.
+endstream
+endobj
+1015 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115428-07'00')
+/ModDate (D:20090924115428-07'00')
+/Title (pic_odd_even.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+1016 0 obj
+[/Pattern/DeviceRGB]
+endobj
+1017 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+1018 0 obj
+<<
+/Filter /FlateDecode
+/Type /Pattern
+/PatternType 1
+/PaintType 2
+/TilingType 2
+/BBox [ -2 -4 10 5]
+/Matrix [ 1 0 0 -1 -27.4 197.8]
+/XStep 8
+/YStep 4
+/Resources <<
+/ProcSet [/PDF]
+>>
+/Length 71
+>>
+stream
+xœ3Ð3T0
+¹\†@%†
+9\Áå†0QSˆ` 
+endstream
+endobj
+1019 0 obj
+<<
+/BaseFont /AXDXXM#2BTimes-Roman
+/FontDescriptor 1021 0 R
+/Type /Font
+/FirstChar 32
+/LastChar 120
+/Widths [ 250 0 0 0 0 0 0 0 333 333 0 0 250 0 250 0 500 0 500 0 500 0 0 0 0 0 278 0 0 0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444 0 444 0 444 0 0 500 278 0 0 278 778 0 500 0 0 333 389 0 500 0 0 500]
+/Encoding /WinAnsiEncoding
+/Subtype /Type1
+>>
+endobj
+1020 0 obj
+693
+endobj
+1021 0 obj
+<<
+/Type /FontDescriptor
+/FontName /AXDXXM#2BTimes-Roman
+/FontBBox [ 0 -177 775 683]
+/Flags 131104
+/Ascent 683
+/CapHeight 662
+/Descent -177
+/ItalicAngle 0
+/StemV 116
+/MissingWidth 500
+/XHeight 460
+/CharSet (/F/P/a/c/colon/comma/e/four/h/i/l/m/o/parenleft/parenright/period/r/s/space/two/u/x/zero)
+/FontFile3 1022 0 R
+>>
+endobj
+1022 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 2332
+>>
+stream
+xœeUkXSG>1$sl‘nISHÑ$½Xu½©® ¶¶ËÅv¥”‘‹IH ×\M‚À$\Â-„@¸†«DQAë¢ÛÖÖmµ­Úv¥în»mÝ®ën·sØñÇh÷Ù}žóÌsÎ|ó½ó}ïÌû°‚`0É2…D½Y¬Td.}o¢ÂÔêÔ&ı‹‹{XkˆøNæ*È„Ý«WN£÷G!ë/&ƒQæìVªÊ‹eùRp}Š8uÃÆ›þ?³5**J˜Sþ¿ˆ0F¢–å
+Ÿ§_J$r¥J!)ÔìFÓ«årÙa¾¼\%U ³ss%¹Kiû³å’aœL.S©”%ÂõÑ„áá[7ÓÃö™"G«.W.LPF ã…bI¾Vž]üóA!Êâ8µ6»ìˆ$Q*“+¶ w®ß°iKxA$IÄ:"™ØOüš8@ÄqÄVâuâ7ÄDÁ%D±’x„XE<F<NpˆPš6"€Nò3Ö0άX»â
+SÄ L?°’YìWÙz¶‰}–ý°`RDUQÕæA*b1ô%jÿ’‰ê¨,.~2|#æã°¯ŸGÁ(øÞ¿…¼ð-~B`Pr.oÄk0ëðÞWróúN—”—*?„×Éoßš¿ÎBw¡›zÉ˸¹ÀtROqÛëšímìo®Ìà:
+ªûµù†Ä2^õ;Ø…æΠæSe]Á‘RjTÉE: 0î*×í‚$^‹ŠÙƒ >>ZÍF,Ø£ól%ûÙÕèYÖÃA6çVøØæÒÃXòa,€‘&Þ*² u—ëõíð‰
+ÑZð9ôèÚv’AÏÜcôR[¼†žà‹ó(êÃÎ&ôt{­f™Ø55ǬµµÇ!ÏÍSÉñ4iµõEa»ÅiÑI£G¾HÌ/õ¨¡œ—Y L“É]=eü’þc½†²‡»ØΖzÍ'¾¶×ôÚh
+Hæœ8+àxЧøy=¸PÝ®ƒ$n
+४!]ŸÖŸÕ•ÉͯŒ×xK{ûº½=õµ µNAMsmt’¾ÑžÓ¿õ¦ð
+ÀCåÙ¡U Œ"1ÿÆv¾ýä2"Îòñm´‰ÛzûÄÉ98û”®mäÂê9¦OÒºÿ
+›?ôÜ/`Pª·;4Kw™ö‹°·- „&ÚŠîqÏžöL@rº??V€¸×lÙhϺAJ‹­ ~@¢tð}öÛ;³ÕofðÑ ¨ª“‹-I•<•…U êíu°’“M–,ÁÃ
+
+Ú:Bwý^9®úD}Ítއ߻þ蛜öߘ%Aéw™§p,÷ã Ã'Ï_ÿÓø}ˆVBôDÞß^|s¡¨'uÔXúY¼O:øJßk­{à:ø¬!R• ŒWäG‹h:›·ò_Á(|"„“u?ͽ6vn^!§¥‡¥jŒÏé.è-ó7:íöF>'Ëá„ÐÖÔh³(óRòèNêLt ßÿyã4±úÅàFß=äºÇDNºÓd˜]‘'%I0Xn•1†W¾•t2ó¢z^„“ÿøì;§ Ñ*e‡£§q¿ºˆ»p³°K2…Û·gþ€r‘ôbÞ]Ú
+*bº«BOçý
+endstream
+endobj
+998 0 obj <<
+/D [996 0 R /FitH 686.127]
+>> endobj
+589 0 obj <<
+/D [996 0 R /FitH 507.206]
+>> endobj
+590 0 obj <<
+/D [996 0 R /FitH 321.901]
+>> endobj
+591 0 obj <<
+/D [996 0 R /FitH 136.596]
+>> endobj
+995 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R >>
+/XObject << /Im12 982 0 R /Im13 983 0 R /Im14 984 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1025 0 obj <<
+/Length 127
+/Filter /FlateDecode
+>>
+stream
+xÚ]Ž;Â@ û=…Ko‘ÍÆŽl§ °ËGBAÁ¢Atî¾¢zÒh4zîaÚj0¤AHÀoÐIN"
+b’:Rð+œ‘)^|×Vå_Ó,1Ñ3óv–›ñàeŽ 3cŸb£jxÚ®ÊôA5’â4ïÇh=úñ ùû⋇óÈ"|
+endstream
+endobj
+1024 0 obj <<
+/Type /Page
+/Contents 1025 0 R
+/Resources 1023 0 R
+/MediaBox [0 0 612 792]
+/Parent 940 0 R
+>> endobj
+1026 0 obj <<
+/D [1024 0 R /FitH 686.127]
+>> endobj
+1023 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1029 0 obj <<
+/Length 1615
+/Filter /FlateDecode
+>>
+stream
+xÚXKÛ6¾çWø¶4«¢D½ÐS$E‹¶9Ô@M¥m®MÄ’\ŠÚóë;R+wµh/Kr43¿ù8Þtu\¥«ߤa|·}óÝGU¯²4)ˬXmV2-“ºlVE%•R«íaõ§xÒoÜz“W…(Ömf3•Tu%Ñ,]mŠ4)dÎ﬿èý:—â‹íŽl÷¾ïÖy&Qj:üë-ˆ¢3©’\•YtV'ª»‰\o¤Ì
+ñ‰Ý£5OlX¯š¤)³2˜ey"³`¶=™õF¥ Nz§a.S±ï×›¬³çõ8˜µœ9ko×Y-Ìùʲ±¼÷~tæÀúàžø3V_ÈB>øÚù@æµíèø(ÛÙN»+FJ™4EÁZV6GÊ°ÊÄçT*s> ¼êxÔng½C´|²JÀw•Š_ú£Ýë3„]+ñ¿+a0¸JœXû&TÏ26Ð<€w8­ÑmøÚ…}N–LOK¡£ $´È!:ƒÐwÖ{¸_’öÙìÐúº)+ì0¬+ÏýÉ°¢éèfj¸ÇŸtwàO Ó±‚;¼î×v“>OÝš¥ {Ç›
+¸ ¤E,si,”§‡S‰ÌÂ)Ù\ž{K•5°W¼ïÅ8á‚÷˜·TŠV_.L`° Ü¦)g.;^¼¨0ÍK
+–Ó5ÓJwìN¿D'Î\œÂ4Ÿ"X.„2·!*
+Ÿ…ïašÚ– ?®Õ3Ubv<a¼,íaýÄ’KGÍÃÑÆÃ/àôüÖ)"›º?@ÕGÅ»=Q‹‡pŸc;õy g¾(³`–FWÔïÐd‚¯èÍÀV³ÕR
+Ã|Õ˜ÄPy·ÿ÷ñÈÂãñǺA¢<,½<ûDýÖ½$? ðkqÏí…;Üñš:FµÀm Dx°Z@û܇©ïÜÊ×¢EGãÙ[JJ0/ì$žo
+Þž¬H²Tr4y~£ôaûæ­†T
+endstream
+endobj
+1028 0 obj <<
+/Type /Page
+/Contents 1029 0 R
+/Resources 1027 0 R
+/MediaBox [0 0 612 792]
+/Parent 1031 0 R
+>> endobj
+1030 0 obj <<
+/D [1028 0 R /FitH 686.127]
+>> endobj
+138 0 obj <<
+/D [1028 0 R /FitH 668.127]
+>> endobj
+142 0 obj <<
+/D [1028 0 R /FitH 487.561]
+>> endobj
+146 0 obj <<
+/D [1028 0 R /FitH 349.981]
+>> endobj
+150 0 obj <<
+/D [1028 0 R /FitH 200.406]
+>> endobj
+1027 0 obj <<
+/Font << /F48 455 0 R /F8 458 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1034 0 obj <<
+/Length 2408
+/Filter /FlateDecode
+>>
+stream
+xڵ˒۸ñî¯ÐÍTeÈ%ÀwR9Ø.ïƉ[±²9Ä©2FÄH,S¤BRžõ~}úÒ°œÚC."Ðh4ºý„âÍao~zör÷ì‡ËMU¹Î7»‡Êã(Ï‹M^æ‘ÒÅfWoþ$éöß»¿þðc‘ø˜I%y
+dçÕ_^ü¼{ý÷m˜$IEÛ°(Êàå›ÝÏÛ2 ^lu¼úÛ›÷?ñú«ïyý~÷æÃ{$ü,nÜN*¼“B¥U”ªrê€ øI«øj÷µ 8RŽ¹—Í!´]ݘîÛ0MÓ é‘4x<6{äíÈ|MGËðS?N ›C×|ŠUº7b
+ø~«‹àÛdy¶ïOvä!¢ãtÇtltˆž„:Ta|wÃòµ Ìt¨ã¨¬Ôïóm3M­õ$-
+–4‹QÒ­
+öÈ6
+›V",,µÖ´0\“P=iaæ¤|OÚl–PbU‡ I Ü…JEU–3—¦«ÿŸJx×üjkOyôˆŅAÿÀ_–­ÇDÚ†
+®µ•&A?ÔvhºÃèÍÄ#ÐK×Ëø~‚Š„Ìù"Іׯ‰.ö•†÷öˆú•+ð [Z"Ú›Éú¡±ãcø…,£žcôc2µ$"H ©3Ϙ‹q‘+ôƒáñ}3AK†,ä ˆŽàîºCÀWdɲd ) ¶ŒgVÀž,†LvŒÐ<È x׎ü8 Öœxz2]s¾„Ì¡J£*MESÂckø]V꿤=]ÅhŽ%šãNË€.‘UЂ
+jZª‚–/^‰
+¥3H[t¿Yð„xrŠZFeRñÖ¨‡ÒfG3òÀðç‘¡ k‹^Û±öÊà³Ë0~’ž åF>ÅYüöã=|…~}•H¡‘C%Ê–ì>‘"ÑöíªÑ±  k=ñyœ©
+?Œ •  #ÊUl\àÐ7ÑkæÏ2«,€åF?Š_¨ø™Fr³…-#\¹&î§"£­….›2 ¸S˜@ÀçÈŠÊÇ8€\—®6XMñ*äÁæyOYùγÁžâN±ûLT¢ü WŲ§³¿N<~yBÞMDŒ@Œ -§5YÜK-Ü~:Y(h'{S[¸’úa²·Žc)SbYøp³b|mú‹×°
+.®#[Ó™áÛJ)l_ÙO
+ù†-9¥¬Ääq,"0Ê\¥Þaý’A8jÛ-”³f-X"ŽI©8à{GŠÜ;"l¥›’SîÖìÎNûN5h’KmäKKZKšÏ. …jÏQ¼ óGxU…_vC´Ô°ÐÇ}L´8EýcקÁ?¸\(]ceÍá—ªNW¹çë8C60ˆÇ‰KзÆDX,¡éF`=ãx6œÌDÈ6t•qAî¯Ü$ö|á…OY¨®Iæ²àp«”x¶r³ˆ}éØ¿©Th÷Æ©«x¸éhÆþ2ì×»›§6¸ -TV„@‹ Ùéˆu–›µ'p»ÃS³°K:‹$D¤/ºœE£ý¢Ù®ÑÂá®FʵB…ÃG*')y@óñ¾Ÿ¬‹\E¡«7‹j>±OóÚlÊà|­ê!Sʦ7·ùöŽSçRî®Dca” 9"m±uŽpàà ¥]X”YK~¢ðVœuàøZãØs-‘—'Þ+âD¨(G_/ëé*ñl1™m‘Ò³’È + ɶeŒyÇ\cgô–ö—a°‹ÑùGhïm‰è²¥¢˜q«¾Öé‘Ã%[ ¿DNǹËι „ŽýÉÛyáËœ¥Yð¢s)+Ç ‡Ô¶džyáêQŸ~E³Zî¨òÜ@Ëóï–‘ÏòCþ.ïïþñqç^Ý«>A×Æ•;Wß7ýìœm¯ ƒ=—¹yWûÒXR5—¶‘’âö#•XÇÿÙRÙV•KÔaÇ7®^÷ñ„/L#þäˆÜ<˜qøyàÝ{d‰¶œŒKÏD+\pmÃ/ˆ5J­ˆð~X»ŽKÇ8`y¡AŒ i\I‹ÈE$Î¥®€ÑuÉ¡8ÖÝ,`‚×&qišé^?§í%ÊòöºÙénù<öÜê‚(:°Æuá8óšYœŽÇþÒ’ÌÊWÌS¨ '+f”ÅI¾#Ã¥P¨ ØQ˜E`ƒù=öNJÇ$ÜÙwßsZð»;ßo2ÔÉ`-¿&rQL¶"\?›iÂ÷6þS"½úû"
+=?»Ü+¥žªNý†qO½_/•N&óEž<yÚóWz€ùm@Ϊpü¹x.iYE:¹yÓ4ãu³é,lnE½~{Q©è?KÏ{%§Ê¢,Ÿ›ÚOq?•³€6uî»Õs9|dêfù{ÃÖwóësá=šÈ?îÑDþûH}N£Õÿo^ïžýÂêÌ
+endstream
+endobj
+1033 0 obj <<
+/Type /Page
+/Contents 1034 0 R
+/Resources 1032 0 R
+/MediaBox [0 0 612 792]
+/Parent 1031 0 R
+>> endobj
+1035 0 obj <<
+/D [1033 0 R /FitH 686.127]
+>> endobj
+154 0 obj <<
+/D [1033 0 R /FitH 507.081]
+>> endobj
+158 0 obj <<
+/D [1033 0 R /FitH 422.134]
+>> endobj
+162 0 obj <<
+/D [1033 0 R /FitH 199.094]
+>> endobj
+1032 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F77 675 0 R /F11 573 0 R /F48 455 0 R /F74 666 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1038 0 obj <<
+/Length 1459
+/Filter /FlateDecode
+>>
+stream
+xÚ½YKoÛF¾ëWè!P®wö½=&µ÷ °.E ²EÛdÊ•è8þ÷á.%Ò’([¢}ÚÕ>ç›×7Kñä&áÉçÁÇÑàäÌÊÄ3o„IF× pÃœñ‰q†°Éh’|K5l˜YëÒO_ÿ<ÿòy˜I)Óç£ ê©ôüËèkûgtz1ü>úëäÌ5NÅ)f•Ç;«ó¤¦%¥89S.`^kA«³zy&,!×Bˆa tzZ\ÍñBH'Óâ;‡~ïîgùæÝÏsLyŽÝæ¸Áëôz>›Í‡Â¥á Êñ ¼!½B:«–™ty-Ã’²Þ¾,ÇeìίC;.–¹æ.»œ–Ø0uIg<•«½‹œnª6]—ù"ç?‡Â¦ùb<#$yÐJürZŒOÃLqŸN :°ÌoòÅ2ŒŒyèä•npv‚(r‚CßqǦÅÕì!(ÖVh¨3£-6½—Óy†UkÍýC;ÕÚ9É`ÓJzÅês±Þ°Eü"ÿU'AÍ¿)çaàq1­TƒÝ0¤P—“8p»š)Q/UwVÁ*ÖMyÖW6h._é'§E¼8ZaÉ*A1¯z™`VGW?]iP+ˆð•HUø] O‡b9½)òI˜m$Lÿj4îì!óć°’¼#x©U 7Ü2ª‘K
+MÎÀÄå¿Uá|:ü7 Ùx Á¸³‰šIÉÕÝàÛwžLp=ƒIï’Çjé-n2K.‡œÔÄ Æ1#é(”T¸p¥EdÃÞÄVÇVQ+]*©å<±…Øò-¢
+@ÍËJTP¢KT°(‚–Øß%+ÊhO4æmL9àGgäÊɤ3¯Ufʶ¶„Qm `C m´Xά\¹!ßØÐÚØr c1i›µoª-§g`m%~;³µ
+âÀ”ìÇ›¸fl&zÏÖ½©S È/ž9¤°Lb7&å<SV÷Iyɸï„Iv`B+kÑ $ x?fÂØDƒgÀ™˜¹XÍT’y§÷ŒíÀª1'`ÄtƒuLc`ï
+“ ™OóÀâÌ¢Ÿ‡}áŒuqŠÆuÅAñЬnP¤XÄ
+d]Ðd]„–üÈàC˜ÛU!(LÂ4*ØR päHÑ,¶±8z z¦ÚÇÔµOK
+hÝK’’Ñ
+^@ãØÊØŠØÂÊ9vÒ8‰*u'‰‰àõ~—Æ3pæ•4.fýxëþÝ$Þ_·ÞºC\zÍî[
+<Œv´Òwè>ÞÈâRKfT?Τ-^Q:3Íñ,Ž5.3®—,)>u­y'L,.…¯jÁ>0á‹^Š~ìô64.Ò’;ŽÆ£3=(¹>Æ%Vƒo@ãÂc*ñ²cb©aݱ¶ÜËâõç‹øÎ_2·ÏÈü+"pß÷{£”xS»‡Ä‘ õÊ^—œ#ó-™Ó‰Sò<î™Æòø¥<.(¤M/iJPH×zWî°“ÇITD´‡Æ½ûi\à‘ê•$. |éƒÆ÷¿žÄw¾Ô)¹ÓÃñ0øþuÚõƒ½c³ýÉ
+endstream
+endobj
+1037 0 obj <<
+/Type /Page
+/Contents 1038 0 R
+/Resources 1036 0 R
+/MediaBox [0 0 612 792]
+/Parent 1031 0 R
+>> endobj
+1039 0 obj <<
+/D [1037 0 R /FitH 686.127]
+>> endobj
+166 0 obj <<
+/D [1037 0 R /FitH 668.127]
+>> endobj
+1036 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F48 455 0 R /F74 666 0 R /F14 574 0 R /F49 457 0 R /F11 573 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1042 0 obj <<
+/Length 1773
+/Filter /FlateDecode
+>>
+stream
+xÚµXKoÛ8¾çWØCe`ÅòMjom7}-v»F/MUlÅ6 K]InÚ¿Cåȉdlj{1irHÎ ‡ó}#-"½9{9={þÚF)I5×Ñô:bš­M¤­&Œ›h:¾ÄBO¾Nß?mD_Rh"´„m¼Ì«·/>NÏ?M!D¬È$1ÆÆ/ßM?N¬ˆ_L¸_ýõîâ οúpñùübúîÃ…ÛøŒmž¿f²wBÂQRAëNJñœßüŠóéÙg шEœ)b­Š´”„3ÍÖg_¾Òh“ï#JDj£/ºv⌤JEEôÏÙß÷Íçœ)ÜV†X*ðH3IÀ*Ö¡U¡•¡¡å¡e¡¥÷UeF͘W•îW•YÐTrèèÊ,'ÊÚH 0_ZÔõÊyúg›;?Ë! ¶ÎœpÍu–Lïx‹Â;xë)ݶôNËFZŠ1Ö·0)‘FFIÐcÀB¶ÇBæP} ¹ 6 ñ@X8néc,ä{,¤–ÅNc¡“vØBöK-㪞~zš;T)ŒÙ;wHÇ5W‚H¾Íotû¨ÇZ¿ÁN³–PÈ_a‡K*‡bœé¢†d^¦Q–8AX˜PYqv(6,d=š ­òÉPÙò¯y„fÎ(x8R\?ºŒí\a"í\Vî1OC ž Ù+¸ ™ö÷¼§v'´EÜ´už­1Ì‹¼\´Ë ‹ÿ˜$Rzøp"Ý‚½iµæ>:4#FÛ(‘Æ‚ŠŠpâ0‡qÿ™Ï*؇ÅóU¹€hrþ#[+òû¡F=¢¦*ÄØt JJ–Æ×UQTN‹¿‡ä4ÎÃ~¾Yâlƒ[¿„š6kƒHuÝŸƒÎ%UÔ&W«: ‡ÀPƒžñ›ϸ~^:#àˆy>Ç‘UÙ…ëiv7ñ·:ÿ¾ª6 þë)«ãìºÍkoòïNo˜`q8µ*³ú'
+À)0ß拼[eu8ažßªô; '=+6èf'á”éëb»Àe³¬]U%Þ°sŽk½ú.y‹#ß¼lÕéQãèuU£\X â2ÿV€GÃ\…àÅ9¾5&/¸D /΄Pù³(—…eþ&ÝO…WÝž›²Y-Ê<¬èy§¯ëj½c‰¸u½›×hðÝHvåÿWîæñ.ÈPš¤Är¯7gûXž„‡¯#)ÀÛéÓÞ=ƒwo`'E K<¸mOò(C’
+fF©Ù>’ئ‘¢90É ¾
+D…z"|2€O±«ÁÀ§
+ÈXt g÷²¿¸`”ÓCø\x,I 
+EíI¢ Ät‡’´_
+@4ÑM"Pž39>},+D“€/Aé¦Na“
+¼ÜêSDO-<@1v
+Ž_ %Ü
+";‰MV“”Ùa›Ø©mÚ%Ü0"ÌiîÉ
+endstream
+endobj
+1041 0 obj <<
+/Type /Page
+/Contents 1042 0 R
+/Resources 1040 0 R
+/MediaBox [0 0 612 792]
+/Parent 1031 0 R
+>> endobj
+1043 0 obj <<
+/D [1041 0 R /FitH 686.127]
+>> endobj
+170 0 obj <<
+/D [1041 0 R /FitH 531.706]
+>> endobj
+1040 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F14 574 0 R /F49 457 0 R /F11 573 0 R /F48 455 0 R /F74 666 0 R /F77 675 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1046 0 obj <<
+/Length 1700
+/Filter /FlateDecode
+>>
+stream
+xÚ…X[¯Û6 ~?¿"ou€&ïöc»gÀÖaM7ìT‰•Ä¨#g²ÜÓö×7Åv³½ÄEQ$E~”²Y›Å›»WÛ»¯óxQ®Ë,ÊÛÃ"Üdë"+Y‘­Ã(_l«ÅŸAºŽÖËUžÁwo¿øéÍrÇqðêaû©$xøiûVx¿oïß-ÿÞþðâu1Ò
+Së<)aOÒç(r·+^¼NŠE®Ë4PzåÅWQ*âÁˆd¹
+Ã( îMµj«Ÿ—q¨=þ~\ÆQ X‘§Á˦>š³68ážZ³Y¬Âb%+Þžôr•”%ˆFEðåRïUƒŒ"è;™iüÝÕîûØÇÚY¨îduËß‹"ʃªßËê³2¤™Gµ©ô…$4P0“ÃƤiGRN¯Ú¯+´œŒ¥Ð°±~{üõè_€Q§zêN8„ÀXÍ|}Fé]U ˜Ø5Y…fãHñ¢FÙ£¶Ìzbq÷-¯Sµñ‚³ýÞõV?‡q 㞌<Í9 ÀØd &ô}{<2á¬2Ý…Œl­cÄtku†ôË¢MpÿÙikTÓ|Yq
+endstream
+endobj
+1045 0 obj <<
+/Type /Page
+/Contents 1046 0 R
+/Resources 1044 0 R
+/MediaBox [0 0 612 792]
+/Parent 1031 0 R
+>> endobj
+1047 0 obj <<
+/D [1045 0 R /FitH 686.127]
+>> endobj
+174 0 obj <<
+/D [1045 0 R /FitH 668.127]
+>> endobj
+178 0 obj <<
+/D [1045 0 R /FitH 408.704]
+>> endobj
+1044 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1050 0 obj <<
+/Length 133
+/Filter /FlateDecode
+>>
+stream
+xÚ]Ž;Â0{ŸbKoÇñÂzS&– ’¡ ¢Cpÿð-Õ+f4zîàa6£švè]ÏAoбwÌXØu!‚^álIð¢ûvŠôk;âÍ3óvÒnX5±!"»uØÄ(v,º¢0ˆM‡RçOK=åªe©¯°ñß7ÿ›Õ<
+endstream
+endobj
+1049 0 obj <<
+/Type /Page
+/Contents 1050 0 R
+/Resources 1048 0 R
+/MediaBox [0 0 612 792]
+/Parent 1031 0 R
+>> endobj
+1051 0 obj <<
+/D [1049 0 R /FitH 686.127]
+>> endobj
+1048 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1054 0 obj <<
+/Length 1099
+/Filter /FlateDecode
+>>
+stream
+xÚÍVßoÜ6 ~Ï_á·ù°Zµ~X¶û–vËÖ¡:àP`ØL9+9a>Û“}-ä)ÊÎ]ât+†!d(’"?}¤/On“<ùî"òõöâ啪‘3­E‘ložkVé:)*ÉS“üš¾Ù›a²~“ɲHõæ÷í¦XY•Ãò$+r–+E¯Ý4NÞš…|oMcýHUR³Z =‡ –KMa—›LÕ"Ýîmï ê2½~È„G×›LT©½uÝH†OnÚ“6í½µ´÷‘y0» „ü¹ej§‘m²Zp¼âs®ºb¹X!ç¬."ÆÛ›¬à<uAo½‡øhƒRxŠ‰KºÆv˜hr¿å\íÌäúAW.!–¬»þpˆ” æâ©if̓ãL×P\L ÓÑNÇa­fº/u•^¶-¸+Ž "Roÿ::?_ÑÐéMïIi쮘7– PçÐ:Óí윱£Û5Y“ËÄ9¦k\
+€àñ) ñèèùù
+›öÖ+üQr²·Àºì-ÐßãÞ>ûÝKöwa¡ß¡©‡]õ¹¥“àVáŠ>Ó2V!볘o·ÉV|
+endstream
+endobj
+1053 0 obj <<
+/Type /Page
+/Contents 1054 0 R
+/Resources 1052 0 R
+/MediaBox [0 0 612 792]
+/Parent 1058 0 R
+>> endobj
+1055 0 obj <<
+/D [1053 0 R /FitH 686.127]
+>> endobj
+182 0 obj <<
+/D [1053 0 R /FitH 668.127]
+>> endobj
+1056 0 obj <<
+/D [1053 0 R /FitH 394.473]
+>> endobj
+186 0 obj <<
+/D [1053 0 R /FitH 330.419]
+>> endobj
+1057 0 obj <<
+/D [1053 0 R /FitH 302.192]
+>> endobj
+592 0 obj <<
+/D [1053 0 R /FitH 134.074]
+>> endobj
+1052 0 obj <<
+/Font << /F48 455 0 R /F8 458 0 R /F49 457 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1061 0 obj <<
+/Length 1893
+/Filter /FlateDecode
+>>
+stream
+xÚ­XKsÛ6¾ûWðVj&Bð"
+åáÃŒ((z^ÕSuGõ#ɇì§ÐžR?Ám”ë—ë¦ $%)•)£=HdgSÐ>÷½ÿ‚Ö{걂zläã+2T ?hàe^ kÑ›Pè¨*KÇR¾Õ¸|´¤g•Á@¸Ø0“&vÿŽCdkÞµ ØaZ-EßÒA3†—c{dÚ…!”f ×
+f\ú½7þHþÿU…£$¥BÝôšÓ ³À"n+ê½ñ l$×åéÉÙ[.«p†Û©×8]—®ß€38ÿòüèòGâÜ1b]|, ÔãÓç|T¼‘f?V?÷W(@ú~+ºˆëš²N˜{ä’ÈE6­«»o¬®æapñÍ¥Ù«™ä‚©Ôî¨öꇩ&žùË›Y,ð?ê']˜'ô“a¸ÂwP®¿èžPþ±ïË
+endstream
+endobj
+1060 0 obj <<
+/Type /Page
+/Contents 1061 0 R
+/Resources 1059 0 R
+/MediaBox [0 0 612 792]
+/Parent 1058 0 R
+>> endobj
+1062 0 obj <<
+/D [1060 0 R /FitH 686.127]
+>> endobj
+1063 0 obj <<
+/D [1060 0 R /FitH 668.127]
+>> endobj
+1064 0 obj <<
+/D [1060 0 R /FitH 634.254]
+>> endobj
+1065 0 obj <<
+/D [1060 0 R /FitH 562.465]
+>> endobj
+1066 0 obj <<
+/D [1060 0 R /FitH 514.644]
+>> endobj
+1067 0 obj <<
+/D [1060 0 R /FitH 480.827]
+>> endobj
+190 0 obj <<
+/D [1060 0 R /FitH 320.359]
+>> endobj
+1068 0 obj <<
+/D [1060 0 R /FitH 294.498]
+>> endobj
+1069 0 obj <<
+/D [1060 0 R /FitH 266.665]
+>> endobj
+1070 0 obj <<
+/D [1060 0 R /FitH 232.736]
+>> endobj
+1059 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F74 666 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1074 0 obj <<
+/Length 1729
+/Filter /FlateDecode
+>>
+stream
+xÚ½X[wÓ8~ï¯ð£r¶$[2/{
+i!ìR É²p€×qŸMìb;@÷×ïŒFÎ¥uJÆ}±ÆºÎ7ßh4’ïÍ<ß{~òt|òø\K/æq$"o<õ?â&Š½ÈD<ÚO¼,â‚÷úZ6œ]Œ‡çÃg§=£ØxØëìu/`½¾”Š½8;œ]¢,ÙàìÙëÁYïóøåãs³µ´q­bXßέìrâ;ÎÆ'_N}/Ø(i®Eì¥Ë“Ÿ}o/=ŸëX{ßl×¥'ÌàÀ…7:yKȶ—0<Ò‹BÍ…Šhñ‹d™¶¾4lÜšÝ\÷úP@J²QþO†Úy1êyý àqÒØO~è_åM ¥…àIà Xl»Ï(ŸÙä7°Rl6Èê´Ê¯›¼,ÈDI1!»UYÝTyŠ-µ5G·d̵¼c›ûÍ
+¿®1û–OÀ³š9þ k¨k{\çð“¢ç5+*W]e3Üë?tàëü{¶¨BøâheìŽ|6·ýáßÄä P6¶ƒA€i³ªÜÏ/„õþ0X`™=AH±÷XÀnûä²Î÷7¥²¡^r ‡ÜfvÝõÁÐôhŽ íá…ÿ ÚùåÅÑ‚ …qØíý*i2ÒÇE˜ jʪS-·Ø-­¿T«IV”˼8H§7½8b§?c.¡: ºHLjw¦ jš—T½1`¿cïÃÑíÍdp4 "Œ[ (v
+ö|ôbx>>\³°S3hH‰ËU ZCÿM‰eÄêy>m«Ú¾ã´&27ûy±±2ß&÷šaʳâðŠÚ¯œAPF±´‹)?b³*¡Ø´ 'ðw—!~Ë:Çkß-qÌ’ß;¯EB+.´Ûï0Î%Už\-2t:¸ò®êlòä.;&ä¡X³sQ´ýhŸ‡&`p‡Vî¶åKÍrˆh–ÇÎq•&t3Ä–y–LZL81·¬IL¨µž—Us»£†<•rTÍÊbqC’1;‘€ e‹‰›ÑP}C9z?P<Vj—ˆI–.›FH—¢@»dåCœ·
+&Ô=oóN®å._£Ì¾zX(´±«™GÂ¥%Å"ÜÂÊiØpÚ]#Å¥Ýìv÷&ZŒ?¼éx2°á…i{WdÌê ·á åfŽœ¢DàÍ<ÖµmEÙÐZmGñt‹øßWáóX¬Õ~DûQBà𥾕¬Í3—¬×My¦Pïóö`Lè6½Žå;B];êh…¦=¼º}ÚžbÖSn¹Z¿%Òp!‘¢Ó/a8ߺ°Ìô᧪UQÛ÷1úËwŽ4QwpDW±h­ôîÕéËŽ'FŃ%ïs°®ð|ÿlP®¹#¢[# ‰
+¡5)–>È}?Üõù Sm µÜfg™ðüq/"iZV°/a«Í¨·&q¹ž´Mž·È¼@çTò>qiç-PµE Ø!GtK«-“;îCRÀ‰o¨¢=jˆŒâ³Aü€í¸M T;‹GÎ’nW©]áàþ_þp˺‡èýn=˜ÿ Éâß
+endstream
+endobj
+1073 0 obj <<
+/Type /Page
+/Contents 1074 0 R
+/Resources 1072 0 R
+/MediaBox [0 0 612 792]
+/Parent 1058 0 R
+/Annots [ 1071 0 R ]
+>> endobj
+1071 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [165.458 189.585 180.18 200.433]
+/Subtype /Link
+/A << /S /GoTo /D (section.6.1) >>
+>> endobj
+1075 0 obj <<
+/D [1073 0 R /FitH 686.127]
+>> endobj
+1076 0 obj <<
+/D [1073 0 R /FitH 286.231]
+>> endobj
+1077 0 obj <<
+/D [1073 0 R /FitH 219.569]
+>> endobj
+1078 0 obj <<
+/D [1073 0 R /FitH 175.486]
+>> endobj
+1079 0 obj <<
+/D [1073 0 R /FitH 145.295]
+>> endobj
+1072 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1082 0 obj <<
+/Length 525
+/Filter /FlateDecode
+>>
+stream
+xÚÍ–ooÚ0Æßó)ün‰¦¸þŸ¾ ”tƒ±¶›¶IE%ëФVbTÚ >ü.±!˜Tmj6!ñ\Yw¿Ü9‰¹'Œ\ôúEï,5$¢ ÅWÂQ
+XÑVŒ•ÈÊ™¥ºÛ@Q!Ûwü:øËß©6np¸8 ý4X_
+ј¼÷óyzôþ*~ëÈýR½I/f£,-Üå4uA^þ°ÁŸA¶N펎(cÁQc¸Í—.ïŸVåöè"Îý •—-Ê_o½üÌxx7_/Ü9¦œ/Ê•§¾ÐÞü®Zø½ú+×Ï:Þ$Eï»™ñ£
+endstream
+endobj
+1081 0 obj <<
+/Type /Page
+/Contents 1082 0 R
+/Resources 1080 0 R
+/MediaBox [0 0 612 792]
+/Parent 1058 0 R
+>> endobj
+1083 0 obj <<
+/D [1081 0 R /FitH 686.127]
+>> endobj
+593 0 obj <<
+/D [1081 0 R /FitH 244.632]
+>> endobj
+1080 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1091 0 obj <<
+/Length 2662
+/Filter /FlateDecode
+>>
+stream
+xÚ­ZK“ÛF¾Ï¯Ð‘ª²˜~²›{s23›Ù*;‰=›]—“G¢4¬•(-Iù‘_¿@£›/÷hìl."û…FÐ
+î?mÏOŠÅº;£e¡ž?VÄAr &Ùo cnKè:UŸÊ}Ûã+¦"Š(…«Ñ,ÅR¥{ÿƘüRs&åyO‡gsà ¡ÀMÉ)ò²KÈË2‡<x
+°55 (H˜
+°·BØs°Bh8+„á™°µÂŒ?i…äöyŸ˜=ç+íMPÇ÷Kà÷¸+Ás7ÄÈÇ
+ ù%#p…å"ÿŸ…¦š´!åHt•…Ë ¬ ­þ(©Ë]'~ˆd—óÔd|–>Tíiï³øñQ2³ƒ©IfÀiì\¢€ïx4w1ë·…ÎÉ• mwu9•%oK?é¶Ú!EÄ%lÑìôòÆ!)Š”Ï€ëW©“—;H¨^Ä Äy;Ù{; ñ…6þàmY·o W-XÌó¦”_0%‘Sž,ròdì:×à—\EIÄ»4mbXn}üzcàñÕ*ÿŽçã¬YIŒ¯B’
+´É¶ð­±°¶…¼ô¡vŽB-8ÍfVö„mÉÔõׇ¼* `lD%ÆNîêß 52ã9€a«§0àì"´Çp G.[3Íë õ>Öü»èdžO4n@$Ô®Çj×^íz¬v=Q;(‰?¥ö'<*ÏÌsqM®Ìeµó±Ï|Rífˆg¿Fd!€‚+{æ½Å“ÞÛ@:cí·€ ½·èK "ê½EðÞð2YwËû’“)(wª”Yª ’l ífµ/·MX›Ú*–_ßo&¾ßeÁ÷;º£ÂxÈ—Cï³¾½kÌ—Ï,Í€âøÌÐø¥ØEªh™D
+»¨l»¨™‹u+ⱋLs9¤Jo^GÔ©àÊÛ™é3M¤ëC``]ÔÈ­bcœÁ²4Ïy,ƒý
+©ˆ‹R±$;’Jžœá& &Ÿ 橻Ǩ¢øA0×QÁh;LÞ Æö‚±cÁر`ìL06WñÚRîj9ÇÆEÎ>¸çTÖäY‚fô©Ü¬|®Œ#«òâÛ‡jSi^ ¬M–Ü¢Õã¢@Ï¥0³-0ÞÞøÞ.p8 R+UãôÀo.X_儈 œœÐýøMHšxBL`wusõ_oJ|!„N58+¡-Hœ/Ö‡«÷¿³ÅÌ~tS nM ˆ÷‹·W¿ÐWˆÉ–H+ÓhÉ”I}Y§™Z »ñiÝ6ÈŽãk* µÚŽ¾Aµ3éj”Ã`BU£C¡<…z»ê0 ÊÒ¦ZˆˆP%øTiÓvÔ5¥¨¦«œNÜBoÄMë*œ9$ÄÔ{(Cé¼jÔHœç/êqU`Ødš£ºí&ð’©õÊïŽî,˶ôu—ëMmUW]EeBãˆÅ oñþû ——*z’jÉ@0äpØ5*åÉq¾zÈ'ëÉpWë¾Àðó2Ï’—1‡(Dù(—›…KÅ<nºø ”‚ý1à}\‘¤¢*’ü©#ØÔ ¼?Âu4ÁÊ'é¨ê_ÂÁ¥ÁŒþVAõiˆ¿×sá쬜9CŸ–FOÆ:êhÐÄð5§›}<¹/j;ÔÛ}Ú¦]Gg
+#š‰g´3Š´[Ä\™†ûFq‘œ\Mós[­ñ84­ø㜰¨ðK]OæH].•ÃŽ991ª›¢+7ýµÃ¹¿D²«úÒv?P~û”'ÇZX¾™º!uÑÌ|…ºuj³þÊü[„xt©þ:1…¾Cs–”•Ç'óJ‡'aÊ »˜r¿ii€’`èFG…jæáëŽVõDÚùŠ 7Ó_>¯Í{ ɜπcˆ0VÕàüÞ÷ÓÇa LШ'öLå¾jïÃNüþã©ôßʺ¿¶Ô5\&wu\ôñ‰Cè܆/E~³W/Ñ´ßQcøÒ>T ß üÇ&–)'Åé´¯ÖýÁ8\…ñå'lÜG[lœÇ-ú2@´nî ïÇ7å¶8ï½#ÿò“©ëæȱ|ÁÃ` _¹?¼£Æð)ç¶Ü¤Ñÿ@¸ñ?ɧ“
+endstream
+endobj
+1090 0 obj <<
+/Type /Page
+/Contents 1091 0 R
+/Resources 1089 0 R
+/MediaBox [0 0 612 792]
+/Parent 1058 0 R
+/Annots [ 1084 0 R 1085 0 R ]
+>> endobj
+1084 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [401.241 418.519 415.963 429.367]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.1) >>
+>> endobj
+1085 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [429.742 330.05 444.465 340.899]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.1) >>
+>> endobj
+1092 0 obj <<
+/D [1090 0 R /FitH 686.127]
+>> endobj
+1093 0 obj <<
+/D [1090 0 R /FitH 668.127]
+>> endobj
+1094 0 obj <<
+/D [1090 0 R /FitH 616.177]
+>> endobj
+1095 0 obj <<
+/D [1090 0 R /FitH 571.943]
+>> endobj
+1096 0 obj <<
+/D [1090 0 R /FitH 527.709]
+>> endobj
+1097 0 obj <<
+/D [1090 0 R /FitH 459.565]
+>> endobj
+1098 0 obj <<
+/D [1090 0 R /FitH 405.313]
+>> endobj
+1099 0 obj <<
+/D [1090 0 R /FitH 370.543]
+>> endobj
+1100 0 obj <<
+/D [1090 0 R /FitH 326.862]
+>> endobj
+1101 0 obj <<
+/D [1090 0 R /FitH 296.521]
+>> endobj
+1103 0 obj <<
+/D [1090 0 R /FitH 228.376]
+>> endobj
+1104 0 obj <<
+/D [1090 0 R /FitH 206.115]
+>> endobj
+1089 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F14 574 0 R /F61 1102 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1113 0 obj <<
+/Length 2359
+/Filter /FlateDecode
+>>
+stream
+xÚÙrÛFò]_·«LsáØ7)+ÙÞµsHLª¶ìT-LŽDTH‚@+ޯ߾
+>…ÖÎ~[üó»›ÔŒVª(N Ck¾wùÓâúv67Æ„I4›§i^½_Ü-n¯/?2úÝõå?®oïð°‹X(èÆ1såL”sÒðÊE£½Á§¹‹ãðÖ«Ù\'yXìxÌæ_Ê–Áî)v^”»™NÃÖ?øZv4ÌšÍG¬ñåkw¼f$'%¶[
+[—qP? Ü’ØqY™m° R„ÐóŸ_v+ÿ9Vð7¦å( ä0³VîVåD€âË2à«hê9ȘËÝ}Uo‹¶¬ˆò4|Dí²{WµŒ- ÷&C©ÀéUw‹ ünI¨påkâ$ß·Sd~¼œe&ü7µNÂ/´Åó¤ÙólY"×hu¼pß¦Û ’¹Ÿ©p¿A~‰~Ä}- ^Uìxô¶¾Þžm}±k2«Ã÷÷r ª}ãkÖæjŠdfŸLÐKŠÙ[ÀÆŒ^ù£$sd&µ¿?4ža”"îl‘kš¶öÅ6šôún¼^\ü!–¦­]dµ \î€,·Ÿ~‹ƒ|¾À!Òà‘–n ~¨rôÔMpwñóy<ÓFE6ÖËàÌT±0~E^XJC
+ÃmæÂ[ÎJƦ?¤à# ƈt­— d¯CZʧ
+Ø2@š3Š‹2DY…É1¯ŸžÖøÉÚ‡ó½ ÿëkÉü¦+Þºô_´ò½+†õ•Ô¥„-ªÕpñ²¨G……9–T‡ ~‡æ*RFªcx®tÏ„ô¹h•;Ö ~% 8ˆT0½hÃt¤rðJèMòç_.?œ[DQpˆÁC!1±<ðà¡~ó$ìÐá9–Œ{6Öö _±§ 2ž>yc¦7Jž±ÅŠžò®0˱Œ‰JÈŒl ±/ØCId¸‡ •áÇ5¾ZVÛ=(n%‹+Ù »êf*#7d‡%½ÌœíkdH¹R‘²)¶žQ§µ¹ÊÂEÍÏ8XØ¿*žm7¯Ë‡u·rÈ"X¾œE™°ö%‡pG®‘r˜dõ «Ú,¼çÐo¡R/¶û4'N´BŒWÛŠ¡Yê5'×ù?OÀI}E¹+»ízòÁÄB7áÐ
+ÝñÀ¦häÌßÉ ¾ ÎÂÎ(-Ê Ÿ¿Pà Ì:o¦"
+u\`ɯ­êî²b4µ6Ž4$áaßW€4O¦‹/J|Z—Œl
+9õZS‚ó²n)gÂîãºÜø
+7•()“2õäÚ,ÌkM"V;'ÅW‡–âwqAT 0©Uü€Zµ¹f­É1M¹[ú“XÙ‰²i:§6ð6Á˜ÙN†¶•r6Ò§ É°–`ÿÉØÁUBÕˆ³C"µY8Žbƒ£+/&:5TÃL¾`éÛíõÍ«"cþ\õ¡ùuƒ–êC {”øaüNÒO¾“TeZ§ÿŸn&*fÅ£¥Ÿ‡:lîž=+‹´NÏ«e o`<͈ÃaqSòbŠ:†Z|f\» ‹¦nÜ ]1NZž)$ˆa7I]ßò6÷
+œbŽÆ=í%éÿ­
+5©ŠËÅ=à}œØÞ㸻šøÊ(uüŸDšÇƒ;p:´4~Öß•+ÈNîÅX¦ºoä膣õÀ§Ý·ÛáÓ+ü—%‘;÷ë©>ÙõââÒš¾(
+endstream
+endobj
+1112 0 obj <<
+/Type /Page
+/Contents 1113 0 R
+/Resources 1111 0 R
+/MediaBox [0 0 612 792]
+/Parent 1058 0 R
+/Annots [ 1086 0 R 1087 0 R 1088 0 R 1105 0 R 1109 0 R ]
+>> endobj
+1086 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [388.905 643.276 403.628 654.124]
+/Subtype /Link
+/A << /S /GoTo /D (table.6.3) >>
+>> endobj
+1087 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [371.239 551.976 393.71 565.924]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.4.3.1) >>
+>> endobj
+1088 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [376.982 540.021 399.453 553.968]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.4.3.2) >>
+>> endobj
+1105 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [460.436 205.315 475.158 216.164]
+/Subtype /Link
+/A << /S /GoTo /D (table.6.4) >>
+>> endobj
+1109 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [441.365 117.248 456.088 128.097]
+/Subtype /Link
+/A << /S /GoTo /D (table.6.5) >>
+>> endobj
+1114 0 obj <<
+/D [1112 0 R /FitH 686.127]
+>> endobj
+1115 0 obj <<
+/D [1112 0 R /FitH 668.127]
+>> endobj
+637 0 obj <<
+/D [1112 0 R /FitH 480.123]
+>> endobj
+1116 0 obj <<
+/D [1112 0 R /FitH 450.093]
+>> endobj
+1117 0 obj <<
+/D [1112 0 R /FitH 382.149]
+>> endobj
+1118 0 obj <<
+/D [1112 0 R /FitH 314.205]
+>> endobj
+1119 0 obj <<
+/D [1112 0 R /FitH 234.306]
+>> endobj
+1120 0 obj <<
+/D [1112 0 R /FitH 178.317]
+>> endobj
+1121 0 obj <<
+/D [1112 0 R /FitH 134.284]
+>> endobj
+1111 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F7 674 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1124 0 obj <<
+/Length 1702
+/Filter /FlateDecode
+>>
+stream
+xÚíXÛrÛ6}×Wà‘šFî—tò§v.S»n¬ée’<Ðlq"‰*I%q¾¾ €”(‹RìD™´3L
+ák!ý”©×Üõ<öþéQhDÕ{iJi¬™E£Yïõ[‚Æ0ø¬­FÂÔbT`
+ïMÑEï÷hS[ª5VD %5fBE¥þ螤ӥë(#$9Ï>ºi4ëÄåÅ,­‚ÞÝzIxZq[/aÍ=ô2  -fÆDµHÀ¨f‰xįŽHÞIJç¢nnTeù<(u*®Ql¼zÖC¯Ã$昃dC±ï„Ž¥ØJ—¤õ’¯\éŠ÷}¦7îœÈZº±¯ÑÝY7¾Zþ¾fIºsÉnÿJk€wì>¼#í˜Úô3ÁJƒL 1"Z6 ü»œÖ†(,õBˆäxî]°ìÓdÔL\‘Vn'ýš•UlåWŒs˜ÖWxâŠHÜòN×yŸ2$!ZŒ¢{3°qƒá÷-ÓÃÄ")4溦øù ØEˆÉÙÅÑE‡ Å2оëR`zH”‚ŒašÕ1æ™Æ88Z#¥f±ß3ËÿbBÛ°C·óÙÉéÑŸÛI¢XHÖÌù ˆËXB=Íâ\J7( 5ÍäÇ·Åùo&°–ÑC1Q+½Þ·
+“ïL C£ÛA ým,<¾ îà‚LâîQ¬î.×%ÃJ*$8<µÝQ®Ëº\?[Î|½~ ÖÂÁ©ˆ…x,Ïáx²\@¿©ûyr4ÍÃû¨ÿÞ•±ó*¯¿rièŸÄîó®º~oYÜ`i<}Õ]§P¨|o}λOÊ2»žw8ZX¬Ö™â,Vè›1… Y‘/ú¾ïKY¨ýk:åÅ8›_Ç×*ïXÊzz®ç‚­•¨ÄDÐfƃZta¹ÎÞ{¼Ü<v_ú—›84ôˆwí9
+p£º}.¼Ö€†¥RhÀ ~SþU˜žv
+Ñ£ôjN5q°îˆN¡°V h#lf u:¸ç­|°#Î!måŒx¾%¢ÎÇÜ@ÃçãúÖå2‡ýÓ|¶H«ì2›fUŸ3ðÛ¶ï‰Ä”¬ö¶ø)ãÉ8Æ+ãë<¯bøV¸Q5½‰¯“t>á
+í«"…¦HÊìSóe5IëOÓ­…Åj¤^|ã6Â3ÝØ$ür
+Gï*[„%,‰!ƒTáþ@Q– 'žËòA6”ÀÙZ‹ó_<íØ0`{â|eóq— hò–˜.oqÌÖ-'ùr:Žª^FãKéªhDjèˆ „F4?dãjRd!Ûsz  ¹Mm2qÙu°¿ŠïÙ<>>©•>Žak(\Y§ÇQ•Å‹'pn=¾ÃdØÞu+k¼xúW‡Ñ Œþ<vŒÓ–œ¿;åHm·À£mðh4xðüäŠ<^h ˜$àk½ T ³ ÀR—Ž]QÆÏlÿ ”ȺˆÛÊ(»º‰CiåS¿køžr‘Žœçœk±ù|ZP.伨êe‚g}£¾dôÍà˜®¸«°ï4nTç\@åàÀL —R«;â>|ɤí$eNƒ÷µLž#·Ñ%>IÀP'‡a`œÖ¾‘>Ø4l•QXM%ŒˆÅÁ¬Œ}UóeéFyà †ˆ ƒ…sÛß. ~ý†«“wa©V²BV€õž~Í»€ñú1²ÖÕÓ *\:þ0 É‹*N: !XqÞŠŠ¸óà VÑ0È}¬?lY#¦Éu0+-²ËªH‹›8uæªtœVéÏ{ëƒÊ‰ÙÙ"[¬Ðj_åDÅTÓ=×|á*”j
+g7Ë×÷|Š©¦†è^ŸZ‹… û*ÿÎõ7êe*Ô”pŠàju“;™LTWåO¡Â»ËN¨¾Ù–º ¨6üñAÐо¼ZÝ~D4Ìÿ
+ %±Ü|w4$P”ÑÕ©j"Úu±Àa¢à÷´b'ü€pƒ»O¤î>ãøËÆ…ª8·ãŒ£îrÆù¶gšVîúbuŠ·
+endstream
+endobj
+1123 0 obj <<
+/Type /Page
+/Contents 1124 0 R
+/Resources 1122 0 R
+/MediaBox [0 0 612 792]
+/Parent 1129 0 R
+/Annots [ 1106 0 R 1107 0 R 1108 0 R 1110 0 R ]
+>> endobj
+1106 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [291.566 635.706 314.037 649.653]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.4.4.3) >>
+>> endobj
+1107 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [291.566 611.795 314.037 625.743]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.4.4.2) >>
+>> endobj
+1108 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [291.566 599.84 314.037 613.788]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.4.4.1) >>
+>> endobj
+1110 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [381.202 397.652 395.924 408.5]
+/Subtype /Link
+/A << /S /GoTo /D (table.6.6) >>
+>> endobj
+1125 0 obj <<
+/D [1123 0 R /FitH 686.127]
+>> endobj
+638 0 obj <<
+/D [1123 0 R /FitH 582.439]
+>> endobj
+639 0 obj <<
+/D [1123 0 R /FitH 444.634]
+>> endobj
+1126 0 obj <<
+/D [1123 0 R /FitH 410.548]
+>> endobj
+1127 0 obj <<
+/D [1123 0 R /FitH 394.394]
+>> endobj
+1128 0 obj <<
+/D [1123 0 R /FitH 363.111]
+>> endobj
+194 0 obj <<
+/D [1123 0 R /FitH 290.099]
+>> endobj
+640 0 obj <<
+/D [1123 0 R /FitH 132.137]
+>> endobj
+1122 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F11 573 0 R /F14 574 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1132 0 obj <<
+/Length 2014
+/Filter /FlateDecode
+>>
+stream
+xÚµ]“Û¶ñý~ßJMM„
+ÉTÃõ—Er
+g3Yþ½~‘$m6í*E\Ù
+o²¸:׬x¼¥#cìCù2¡™*³'È·à4 ¡tö9NK?žhøìâÉ‚t}á¶ÇÎŽq'Ÿ¯’,SñÏdøEH2Á6¸Èx­
+’´ `$o¡Ö^õ$ìïa‡5ÅÛ×_ûÀÅÝ‚`A‹“±DÉÓ¢Õ; à/|Ü7´3„±i‡:
+”X`úåáL’!
+ë%_ÈÁ@Ð÷½­ ¹'+É‚ñbn$㥖TÂÆÖ"D_]šíÞ5®h£ <¼l`ªÊ…ª®©Þxt/«¾p
+ Õ—ÍÁÍÂO9`
+ÝçÖm[ýgŽ¾è7;„°ïLž Å {ƒÀþ[€¦F—ÆÈ&ƒEcÌüBÄ rKÁø˜?ß¼úÐÑ@ŠC KÇð z±õ E¤©[!T!à7*¾&LE;Æö9S¦Ùðn4õѲGô9<@³Ïvþ‚¾@ Âq,ÈÿY•À¼s殶~öÎü\ýH
+ A¬ø‰C‘+xxþÁ8TŸ‡ê+Å¡€æ_äâ³ã°XC!ÑÇù) S0††ª>7 áVÌ£-?“ø˜êúdÔ7ƒÏ÷§)qá-ë#rqXYødé¡ä6ÕE<A”açº/%ÉÙAò ’Ü·ÇnìŒOe9y™Asùci ©×)S0zE¯ƒ,§J–]¼á¥œd2 $°Vöòó‰
+_Y?‘8¿ûžÄìâ—U(‚ÿ…Õ
+endstream
+endobj
+1131 0 obj <<
+/Type /Page
+/Contents 1132 0 R
+/Resources 1130 0 R
+/MediaBox [0 0 612 792]
+/Parent 1129 0 R
+>> endobj
+1133 0 obj <<
+/D [1131 0 R /FitH 686.127]
+>> endobj
+594 0 obj <<
+/D [1131 0 R /FitH 639.335]
+>> endobj
+198 0 obj <<
+/D [1131 0 R /FitH 452.155]
+>> endobj
+1134 0 obj <<
+/D [1131 0 R /FitH 431.386]
+>> endobj
+1135 0 obj <<
+/D [1131 0 R /FitH 405.877]
+>> endobj
+1136 0 obj <<
+/D [1131 0 R /FitH 371.949]
+>> endobj
+1137 0 obj <<
+/D [1131 0 R /FitH 312.115]
+>> endobj
+1138 0 obj <<
+/D [1131 0 R /FitH 276.25]
+>> endobj
+1139 0 obj <<
+/D [1131 0 R /FitH 166.651]
+>> endobj
+1140 0 obj <<
+/D [1131 0 R /FitH 148.718]
+>> endobj
+1141 0 obj <<
+/D [1131 0 R /FitH 130.785]
+>> endobj
+1142 0 obj <<
+/D [1131 0 R /FitH 112.853]
+>> endobj
+1143 0 obj <<
+/D [1131 0 R /FitH 94.92]
+>> endobj
+1130 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F7 674 0 R /F14 574 0 R /F48 455 0 R /F49 457 0 R /F11 573 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1150 0 obj <<
+/Length 1953
+/Filter /FlateDecode
+>>
+stream
+xÚÅXÛŽÛ6}߯У T oâ%/EÚlÚí¦ÍŠ$^Kk ±-W’›Ë×w†¤dÉÖÚÙ¸@_V´ÈÎ Ïœ9~¹úizõä…‘%VqMï#F1ÊFÊ(¸Ž¦Yô.VDI¢µ‰~ýûï×7ÓI"„ˆ½~öüúÍäÃôÕ“¦g或vpÿ-5.¹¢aχž×Ó«¿¯ iÄ"ÎÑFDJib¹‰æë«wh”Á䫈aMôÉ-]ƒÇ‚XJ£Ut{õç‹FÒ”hˆò„XΈMÓ`Ã套61`Ê¡|\ÿL¸‰óMVV˜×MUl&,^¸páA‰Tú;<I ØHµ¼0%RÉ/Ê2K(RJCJ6˜’ÝÿÞMLOÈMyï!3/×ëÜ­jêiz¬w#Yœ_˜$ÁUê2ÜHïŽD¥Âg©—„rNÁæÑŽŒ$l°uYF˜!šñÿ$#œní÷fäÑŽŒdl¤L\˜àKepIF´t­(¼“©Ï!äDôÞt$z°ÁNÛ8Œžö»F?f ¡Ð,Rm iø
+>wuû8Áó
+Ðij†îu’j4 Î)¡– ÿå[jÓŠ¹|VU¡-ŒŸM’TêxUÔßÇû3<Áº¢|xçD¦„Ù6õ¡,}Zíè`ßïÿL µ³Õ.¯qŠ<ŒO•f5{tµŽã“Q¢tððíÄ‚ U1»[¡2Ng'˜ƒÃåJ¨3Ìw(ÆN0ãÐ
+8SøÎGÚQ!ø±]åN0ÀÍ•ØÒ±ä,›0Ï—¡êœpg–wò# §]{K÷e«eB·Ü‹5N4À<AwÚ[3#Ã5ï’ÔuŸž¸á6è´jÇHƒ1¨™¯²ÚÿšÍ½ª«äa9#hÓê½±mU:¢ç™§8™9Îü:¸Ç{²%ú ÜæÕ.„Õ"òƒ7.Á$¨ v$0S"…‰_Ž1¤’D°Ž ÃWðbú××Ç86.¶¦]]åͮڸ#ï=ã¸Yº£ƒ‘ÚtQã»vnS6~ ¸€ô€Å”jÝnB?vì´Ë;·p›ŠP¡‡ù Q7å–ø«ÀtÙBˉRìZu3„úèÖÀé.Çñ+ãe Ü>„Û–°‡d{¦ *„Ÿ‡¤áƒUkßíqƒc~Ò}éè¯|&‚ßuÛQ%6ø04ûõG§ïE+ÉÝÏ"<ŒÉC@=ƒRw+G8u™,|ZËq¨Ê{¿]ߌ B€|HÛ%GÙåÚ4ä?|£ùÅ>ât%Áϸ
+Yú«ÅÖÃ-­é>¤ >±Á²:0~
+Xœp¾XÖŠ7x3øðçÞ´Øï<Â>¼sØ×ûð³Ïÿ ûì<øå£À¯Fsþ¬F¤Ž8!%QJ}ƒ˜6Œè}©6ûûÔËWm?/Æö3´½ â¹€~eÌqõhÐ/üÔc*Î}SXú_
+endstream
+endobj
+1149 0 obj <<
+/Type /Page
+/Contents 1150 0 R
+/Resources 1148 0 R
+/MediaBox [0 0 612 792]
+/Parent 1129 0 R
+/Annots [ 1144 0 R 1145 0 R 1146 0 R ]
+>> endobj
+1144 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [165.458 185.137 180.18 195.985]
+/Subtype /Link
+/A << /S /GoTo /D (section.6.1) >>
+>> endobj
+1145 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [151.258 145.231 173.73 154.059]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.3.1) >>
+>> endobj
+1146 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [151.258 79.478 173.73 88.306]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.3.1) >>
+>> endobj
+1151 0 obj <<
+/D [1149 0 R /FitH 686.127]
+>> endobj
+595 0 obj <<
+/D [1149 0 R /FitH 590.075]
+>> endobj
+202 0 obj <<
+/D [1149 0 R /FitH 512.429]
+>> endobj
+1152 0 obj <<
+/D [1149 0 R /FitH 492.047]
+>> endobj
+1153 0 obj <<
+/D [1149 0 R /FitH 464.214]
+>> endobj
+1154 0 obj <<
+/D [1149 0 R /FitH 430.286]
+>> endobj
+1155 0 obj <<
+/D [1149 0 R /FitH 322.631]
+>> endobj
+1156 0 obj <<
+/D [1149 0 R /FitH 286.766]
+>> endobj
+1157 0 obj <<
+/D [1149 0 R /FitH 213.033]
+>> endobj
+1158 0 obj <<
+/D [1149 0 R /FitH 171.19]
+>> endobj
+1159 0 obj <<
+/D [1149 0 R /FitH 143.239]
+>> endobj
+1160 0 obj <<
+/D [1149 0 R /FitH 123.369]
+>> endobj
+1161 0 obj <<
+/D [1149 0 R /FitH 105.436]
+>> endobj
+1162 0 obj <<
+/D [1149 0 R /FitH 77.485]
+>> endobj
+1163 0 obj <<
+/D [1149 0 R /FitH 57.615]
+>> endobj
+1148 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F48 455 0 R /F49 457 0 R /F70 508 0 R /F74 666 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1167 0 obj <<
+/Length 2705
+/Filter /FlateDecode
+>>
+stream
+xÚ•]sÛ¸ñ=¿Bs/¦fBÁo6“'vw§cË»æ2c˜„%4©#©$NïÇw»ü’è8}€ÅXì÷®ÜÅzá.þþìÕêÙ¯o’Eꤑ-V÷ ¹NÅ‹(‰áÅ‹U¾øhÉòÓ꿾‰ý ¦pÜȇc Îë·§ÿ\_-mß÷­ÈYÚqœX¯.V׫«óÓ÷~{~zv~u‡=s™‚nœ’a _8i.l/ Owüᆮ„19añÑ]×:SYµ´½ÄÊÜøV»1Ï*T¹n7¬î'›¾•íëZ•Kø®%À~)¬fi KÕôyVm·ˆ†gí]®ŽÙÕty¦ò}­¾…ˆXx
+¼$ éký¯‚ã€!¥Kb̵ÊZ]•æYå.êõ‚&WæÄTß9z9nh"®"!ÓFB‘ºI'¤wç—„4æµç;~t(Îô[„‰#Â'0ƒ îÄ•’ù )ï$ƒºÌS9±u(‰}§[âϾlôºT9s $DOVkU7‡G©DÞ1ÁÙc_+¾†¤ 74m">~Dœ:ñÀ«×Þ¿?¿\]¿„i`¼l>îø­N fÆ™>>"q¢°g×'&°"ú˜PÐÞŠT—5¸¡m£äôž†_„Ú[Y«Zâ°'Aî`aî ݳƒ?š*=6 U´ÞÜÕºQ -Ûî#¦B×ÀP˜< 46ÔLаÔ2?>v'3üì³±¶#3
+ô#rÐ+[–gƒf™¦š;hժȑå : oO@9Á¤E)·ŠwK1ZVAÌovF9ÀBÙÕ*Q[ìÙƒÒ!Fæôág^²+úÛ#iÍ$~„²ªÄĦâÃÿE\ˆƒ€õ’Ç?„¬.VïÎ_ö*|@\Åz jQÕò—™ˆ6„ËÑÓš$1GÒÙÅÕùëÕ‡«—[õ ;q7t¢  ã$éDU½t.Hj8CÃ1“²u ¶Ûè–ó'Ú1"ÁÉû›ë#wÚ y
+Ïs1ñÅ<Á¿ú³ óSϺ•À°ï†a¨Àœ–´3äu&СÃïAü.,ЂÿªJ¾­%ŸöY…ÍN"ÃwUWœÑbôSfœZ¹þ« ¹”€OËu‘·B2¾šçå”2ÎÙ.%J‘?PêEûãáfÜn´sHi´lͼ€ù}p_M/$èsø±J¨à\ñ„ƒÚጿÀsAù6± ¢²à9ÖGÌ^_˜NŸßñ’®¡Zf70y«KóÒI4HY|z‚·>H-—­¤²1GþQ¾ ¶w͹x­HÓ']š¬dÏÊXÐÉmw»2ñÙ£zc²3ä;L]sø©«ÃCMÅI+òHæ§/Í
+%9!×öÉ?®¸fø7®Ò052 “/–}Ï‚Q%KJÂÍêôÉ)µ`þ‘s Aš˜Nõû2~U§ÑA¥k}z\‚o4“J&ÁÄQPÅë.?¬4ʧëVó«jГ™ëï*?yÑ•¨šÏéFÙ3#S¦ÁÒ誜ֵoÚ—}»BgºË¯}ËTqiWµŽ™ú+±dÛ÷dæd1Å=nxE— rüOUëÞaöt?Á‹ÑÜA¯ê"ïGòñ9‰O5å SÁi¥’ŸçrÊór]èfƒí1(ŽNwø$Ã<SJ‡ÖûS¬~§ÅWÀÄY+Ž“QfE@¸ËVÝu´ßfŠŸRYN½„J›²+Yã‹Ã‘ÛôC¯×‘“ߦUŒCÕŸB‰3¨†ýag¡gÊ\˜Xwû–‘6êÐLˆÆ utÀ y
+ãÈɉ‘Åà¢ã#LhŒ¥09SoŽ+…6Y­wì´nx&jëš@]PR ÐTà8µ.+‚ DaOLI˜pÞI†°ú€é[(ºûDz˜1•¾‡ ªÖ7°Ç¯ìz¬TbÔéÐA³Ÿs
+endstream
+endobj
+1166 0 obj <<
+/Type /Page
+/Contents 1167 0 R
+/Resources 1165 0 R
+/MediaBox [0 0 612 792]
+/Parent 1129 0 R
+/Annots [ 1147 0 R 1164 0 R ]
+>> endobj
+1147 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [279.002 643.276 301.473 654.041]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.3.1) >>
+>> endobj
+1164 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [423.183 336.026 450.11 344.826]
+/Subtype /Link
+/A << /S /GoTo /D (cite.rfc2044) >>
+>> endobj
+1168 0 obj <<
+/D [1166 0 R /FitH 686.127]
+>> endobj
+1169 0 obj <<
+/D [1166 0 R /FitH 668.127]
+>> endobj
+1170 0 obj <<
+/D [1166 0 R /FitH 642.673]
+>> endobj
+1171 0 obj <<
+/D [1166 0 R /FitH 626.965]
+>> endobj
+206 0 obj <<
+/D [1166 0 R /FitH 532.59]
+>> endobj
+1172 0 obj <<
+/D [1166 0 R /FitH 154.11]
+>> endobj
+1165 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F70 508 0 R /F48 455 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1176 0 obj <<
+/Length 1787
+/Filter /FlateDecode
+>>
+stream
+xÚµXKsâH ¾çWp4Uƒ?°ÍÜ2À$l1!ÎTÍ>Ý„ÞøÁÚí™Éþú•Z²²›9ì…V¿$µ¤O’îãÁÕÅÇøâý§ÐLíiàƒx?pÆÓA¶ã†ƒ8üf¶oGaYÛE|w;yžg]/.ç‹Íðø—÷Ÿ¢'`Ïý)ð7wý)¹³ÄÓq0òÜȃp0rCàáÑ­x¯HЕÊIß*D.í³üàgäDÀ€î_n†‘\¶13ù¤²<C7²dEÌÊŠ¶J}L&•ºäýbèX"Žë¿d:$ôËb³]®o@¢ë©šV:“ï`:‰¬Jæêí¨b_šÕÐèàzÓVÜÕò‡¦ÅTÕZ÷ª0Ðî7zA­Ê¢æ«{Ú4ý†Öz“æÈêÒØ Mí]k.´DʳD]ƒÍá@¢`-¥íïJhÔ¥%7
+&®µÌ™Ìe|µÐ¤"žÞ^¯ïVsº ´–ùQ£‚¢Æ€RŽ=LH+ bý‰cEU£ ૪¦ÅßÇŽ/³”–/Š‚ÆåvMQ0vh)¥÷
+\~¬$)ÏRŠÔè:~®fRškOÜñŠÍGÝ#ŸDÊj=#ÃS¸x‘o­ØÜ,—^ø
+,Ö„Ï#¶$Ÿ2}04Å"™ïLžíŸÃ6ãÞ^š£ŠM¦ÕÑ$ÍÀé­9aìÙàÞïó[ÀÝó ‰Ä±rÑI5ö1 "n¯ƒ±6³?£0æGÒ¾hÿ‰XØhíƒôÍ:¦¡pÕT‚”6ù½¤ÙÉ‹á,ªIÔNt—L( e~Ö¦m·Y"#
+›¾ÜâìXjt#øáô3%xªqZ× ¼ÌËEASºK4kq¬ãJpÄ<Z¼Õ2šÏ7äèlОb5O¬2M-OηM§O–y¿Ü¾»
+!I.LçXösøáH§Ï1 yÆ‹¦$pYä5¦«ªþðêÎx @÷Ûÿ~nÊâ•¿NñÅ?¤åÈ:
+endstream
+endobj
+1175 0 obj <<
+/Type /Page
+/Contents 1176 0 R
+/Resources 1174 0 R
+/MediaBox [0 0 612 792]
+/Parent 1129 0 R
+>> endobj
+1177 0 obj <<
+/D [1175 0 R /FitH 686.127]
+>> endobj
+210 0 obj <<
+/D [1175 0 R /FitH 251.681]
+>> endobj
+214 0 obj <<
+/D [1175 0 R /FitH 150.582]
+>> endobj
+1178 0 obj <<
+/D [1175 0 R /FitH 129.812]
+>> endobj
+1174 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F48 455 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1183 0 obj <<
+/Length 2078
+/Filter /FlateDecode
+>>
+stream
+xÚ½YËrÛ6Ýû+¸¤f*o€Ýt?štÒ4µ4ݤYÐmsªW(©iûõ=x¢$ZŽÂN7 AÀ¹çž{/L“Ç„&?^¼_¼ºµIF2Íu2~H˜¦Dk“h« ã&O“©¢ƒOãŸ^ݱ7“ªÌø9Wo.?ŒoîC!DªÉ`hŒM_¿Æw7—?‡á77—×7w#gì‚Æ<÷y3¾ø|ÁðH–pe •,ÁÎHÆm2™_|üD“)¾ü)¡Dd6ùâ§Î&-¶(ñ<KF¿á2ÑJƒ“œ°ÙŒdJEG q«° S:œ²œÏ—‹pΧ"Ÿ•{–éýl9r“Nøó‡?úÞÑ$ÕÄRý Ûê€6”‘ýà‘‚HÞ £ˆ5Î’!”Fx<
+6]®B¿S&g›€‘H7ùý¬pUÅz9ÛnJ@ù<Tçn±)˜à¼PÂñ_÷B*³ÄZS’h%¾©ç‘9{OÐJ, 6ÌÃú±d2žhΠϲ€Íz’¢œÏ™³wÔ l(&ú!ƒý•õAFPJ2 ‰¦“* s9
+04ˆÈ—9'Lj¨Lx[½± ’Àúé°K–¦áÂDŽ'Û¹û{ïu¦ÎSˇ
+Ó/š
+S¨¹¨ÕxaXþáªá"¢òf‹"GÌó6H§ÂêìíuÀTœUäÐçZ&ŽªŠ¢QfoËÇmUÔÍú~0”R¥£b³eÝ›¦E@vÚTÛÉÆÍïjŒ^ÝʬµÚ0SD
+‚Ÿ]]£ë¾rñ.ãºUùç R½¨÷:“¾ÈÜ—¦î ”ïÂë—§Ò_Å=E
+­ÃçÔ‡Rtë´¦Wðʨ˜4— ÁÕcî~¼H>Æ,/ ÛKà®Bvy_¦o£{w‹5(Æ¥òu˜ñ°œÍàú¥Ûá—˜À{UW9Ëb¡ÁÈÁšCjßy:zÃÁ®Þ×r½]¬½ˆ4gl……“¸G;Æ]^}ꪃw®};@²Œ¥M‘Oœý§`{)*&ÛÍΗíô^Áp×¼§0’£hîš»´Å1ÀÈzÆCµœ{4FÖ2câ»úà“Ùvwr
+ú,BòÛh¨Ð:½ZÎWÐåûr†ó
+*•ÿÐpgNk™qþfv/ZñÚÒ÷eÔv xÏ«hà)¯¦{áÄ‚»OlÐ… ÈüzA1â>ö$cϸµ
+ þÊ+4±×™¸D z?ñ¥W~<¹*îT»‚få¿éU†èMEsƒ ¶\®.ßÝ»å®ê¥~Ewõ+îŠ0“I{Ó] ‹f±aq´šŒï,â56-^{Üòp¥’h´¡Êîo¥ØhÌ_+÷`šûr78 ½OíÑ“²p‹¯Ã\÷£Ž¶¬Ém‚ˉܺ/§«f›ÝÒ«hHüíÕ¯û¹J½ä*õ¿¹ªCƒ¥¬]…_aJiüm¾ˆj_û+®Þqº‡½2ÄtºJ¸‹õ­®êú·õ¿ ˆ:¶
+endstream
+endobj
+1182 0 obj <<
+/Type /Page
+/Contents 1183 0 R
+/Resources 1181 0 R
+/MediaBox [0 0 612 792]
+/Parent 1129 0 R
+/Annots [ 1179 0 R 1180 0 R ]
+>> endobj
+1179 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [337.228 226.028 359.699 236.876]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.1) >>
+>> endobj
+1180 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [312.017 126.409 328.815 137.257]
+/Subtype /Link
+/A << /S /GoTo /D (section.B.2) >>
+>> endobj
+1184 0 obj <<
+/D [1182 0 R /FitH 686.127]
+>> endobj
+596 0 obj <<
+/D [1182 0 R /FitH 515.953]
+>> endobj
+1185 0 obj <<
+/D [1182 0 R /FitH 482.136]
+>> endobj
+1186 0 obj <<
+/D [1182 0 R /FitH 448.263]
+>> endobj
+1187 0 obj <<
+/D [1182 0 R /FitH 376.474]
+>> endobj
+1188 0 obj <<
+/D [1182 0 R /FitH 340.608]
+>> endobj
+1189 0 obj <<
+/D [1182 0 R /FitH 221.047]
+>> endobj
+1190 0 obj <<
+/D [1182 0 R /FitH 201.122]
+>> endobj
+1191 0 obj <<
+/D [1182 0 R /FitH 179.204]
+>> endobj
+1192 0 obj <<
+/D [1182 0 R /FitH 150.762]
+>> endobj
+218 0 obj <<
+/D [1182 0 R /FitH 113.464]
+>> endobj
+1193 0 obj <<
+/D [1182 0 R /FitH 92.695]
+>> endobj
+1194 0 obj <<
+/D [1182 0 R /FitH 67.187]
+>> endobj
+1195 0 obj <<
+/D [1182 0 R /FitH 33.258]
+>> endobj
+1181 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F70 508 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1204 0 obj <<
+/Length 1688
+/Filter /FlateDecode
+>>
+stream
+xÚÝYKsÛ6¾ëWðVj!xì¥ÇNêÌÄMlµ©ã-Ñ23zØ"'ùõÝÅ’”hѲœ‡=h °ûáÇ]ˆG“ˆG¯{{ÃÞóWNE K¬´Ñð"Ü2o“ÈzË„tÑpÆ–iÖ8ç㓃á_ïú¥TüÇÁ‹ýƒãþÙðÍóW~mhcN'0~øÖìÒãÕŒÃÞuO@‘Gb5™uÌÉ$Íz§g<C㛈3—¸è6tEJè?œF'½÷dùú´Bjf‹àǤ¶4ùQ:ËÀZgy<ìK¹êàuRèø$ÿš¡u‘0ºRÑ@–Cà†ŸçeÏàC¤<ó0ÙzŸ“|2ÏÆ¿÷Bš$ÞÏŠÑ2¿*óÅœ0Jçc,èx™å2aKðèÆA%`Æ:ñÛq
+ ÕÈ£ˆA«ÈÒé—¾×1#°lÂ@WÚ` /ó‚˜GO§eÅÄEQ•¬Ú@ÆÃ$¤ú‰„´ÜwR³$u;!Û5>n’0.õcˆF)Z” +}×b6"±¥!³1LXÑF €S®À%–$ÎVÅY:BL.©vÌØÈL-ËXH» ýrùÏù4è0éCä\è%ðx“¾–Cı::ETIïºËiPÌY¿'°Ï6cœu b`’Pjæ9# haÂضB}êÃfH§7Y½™—Õ¹rSdãÇìâ½·‡O¶‰“Ÿ±‰ÅC»øQƒày_íâúlêØÂw¶sCŸÏº¢¾zª_`éœâñ ÈE ƒ0lÚÏXàP
+„ú)_©€±†T
+ ›³hôC-Ú9$#F "$£v”gMî }À>SBü°»™!ÐCv&÷Úyçòäó7­åòç,f¥áUÖ2«Û£½Ãá ž;Ú53"º«YM絎¹"•øÉ•1øɦã*Ë/õ±’Ò÷Žãèàœõý1^‹ÂtJš_MÓ 2DBÄ…·Ò«Šù(EKÊš#uK©Ï<»¥÷"«¾¢ûGy'¦íTãæÖœ¹Í§ÓŠ Í1¼Œ‘±z^E2÷¨úñ;tUâòêM®jQ»Š¥|îÁÕí¡¶Œ
+k<À×Êæ{}*ÃFƒ”wqU%ÒóÊ;ª1 Ô],3ª£T
+EZ7’¸u»A궄ul3‰Ñ÷]å æ…‚'gÂËú– —D[_ðë%•‹Q:­ª)ÚÂ~Ý2ÿ¦½•ÖbÿeÕÐ,1½æsz†sô“¤E5^>»ª+ëèÊ·yyI%ÈðÖO¦µ¿<þÆ¡
+endstream
+endobj
+1203 0 obj <<
+/Type /Page
+/Contents 1204 0 R
+/Resources 1202 0 R
+/MediaBox [0 0 612 792]
+/Parent 1208 0 R
+/Annots [ 1200 0 R 1201 0 R ]
+>> endobj
+1200 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [302.884 312.858 317.607 325.356]
+/Subtype /Link
+/A << /S /GoTo /D (table.3.1) >>
+>> endobj
+1201 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [424.401 288.948 439.124 302.895]
+/Subtype /Link
+/A << /S /GoTo /D (table.2.1) >>
+>> endobj
+1205 0 obj <<
+/D [1203 0 R /FitH 686.127]
+>> endobj
+1206 0 obj <<
+/D [1203 0 R /FitH 405.055]
+>> endobj
+1207 0 obj <<
+/D [1203 0 R /FitH 369.19]
+>> endobj
+1202 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F14 574 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1211 0 obj <<
+/Length 2364
+/Filter /FlateDecode
+>>
+stream
+xÚíYÝsÛ¸Ï_áGjj#Aà½99§w&sc«÷’ä’ ‰3é’tbß_ß]ì‚cçnÚÞt¦/"°
+\¯DE¼¿,2‡×.®Ò$‹\±^$6Ú_B7µQ]9¤§Ñ¶n¨}ñ$=‹.3‘¥6ˆþÏ’æLpH„µI˜Ñ €zI-÷Ž$i‹#ïÝâ–ëâÀ]X‘ኅ$aZ" /|hÝf"4hõåuÍJH$V¤
+‹`¡’¿›`”Ÿb™B»òº)va\5‰;ž2ç±)ºˆ%±ä±*xlú 5ùå‚ÀÅG"äùeA1ÀSî‹57Ñt“D“ aïŠk ~&©‰VeGTÐ++v-Í/¯‘åW+ˆêqÃ>â†_RÐDL¸a»«iÍ*D&ì¬ëûqà ۦ>Îì¥lÝ7îKY?´‡'êoO¨[éeÕv uüyÂwEàBP þ`ËÈÄñl`÷p˜‡r]v°
+CC¬¹éãñt;÷¸v÷ÝœÜož{iÚŽb–OOH]ÅVáà=5
+s|6}ä=ª &Vth£)˜ 9äÓÙÄàF9(¡ŸÔ!ùcøÐ’Ë ž$õGjsŽ³Ãâ3¶$[`KÍPRp!
+˦ú¼Ââ}IÖÁ’¯«a„Î,‰{+7ÞÊ
+ëö¹£6
+nŽêÜ9Úš.Žj.ø'¬É:÷Í‹ä/õ'E%Þ抪@-ßøf±q¯Ç!ž²­Ã%¬ýaòj‡- H×(øòYK1óñ*ƒÒÿ–®FÈ•¶K¯ü…)U[kˆ;× ¡AVºnqœF?àc__ã`ô¶º W×Ö¡æ+ì WŒéL€ß‹ÌŠýÎßmýzTÏà ¹jÝú¡+é‚Ö‹’õ¢¨ù—™Zéï° ¾©
+<ì/Ÿ:DÓW+ÍÇzåà}Ír½€(òöîíõßof_ž > S?Î=ÌxÛ{E+tÖƒøYœš®Ñ¾@šÀ¢þÇŒ—ÅNÿo¼ÿmãýñÃ5Ã;ë6\õ¬ái¦dÏnJgøÉ ÿößÃÒÛÜÈp T»l¸38X+bÓ+ðáÍû»s”ÙpËéÂ?#kO=¼eúÔƒ7Ø ÿ›âŸê •O“rðˆÑ I•¿ ™ÚôÇÈå„R£‡"èT5™Îür%ÿñ/Ø‘•=õ8€LdéÉ¡è?Ë-WÇ«ÂZ<‘/ú%:× ´©ùP·ÐBu?ÂV‹Ìô[|Šãxîz ­0E¢ÏÅ4Š³b#ÔÛ¿#üg †ˆ”ôH¬ÿÝpNs —}kðÆ©®XJñ}áÏ~G²â‡ªÙ°§¡ {§šõ©$*ÿþ˜7kžþbÔóø<Ç„þHyø§ND*íÔ~ÌŸ–:»92‘Xõ¢å|§Ë„ïÍòÕ¿
+endstream
+endobj
+1210 0 obj <<
+/Type /Page
+/Contents 1211 0 R
+/Resources 1209 0 R
+/MediaBox [0 0 612 792]
+/Parent 1208 0 R
+>> endobj
+1212 0 obj <<
+/D [1210 0 R /FitH 686.127]
+>> endobj
+1213 0 obj <<
+/D [1210 0 R /FitH 349.887]
+>> endobj
+1214 0 obj <<
+/D [1210 0 R /FitH 329.113]
+>> endobj
+1215 0 obj <<
+/D [1210 0 R /FitH 306.136]
+>> endobj
+1216 0 obj <<
+/D [1210 0 R /FitH 287.014]
+>> endobj
+1217 0 obj <<
+/D [1210 0 R /FitH 266.794]
+>> endobj
+1218 0 obj <<
+/D [1210 0 R /FitH 243.816]
+>> endobj
+1219 0 obj <<
+/D [1210 0 R /FitH 224.694]
+>> endobj
+1220 0 obj <<
+/D [1210 0 R /FitH 192.519]
+>> endobj
+1221 0 obj <<
+/D [1210 0 R /FitH 168.988]
+>> endobj
+1222 0 obj <<
+/D [1210 0 R /FitH 150.419]
+>> endobj
+1223 0 obj <<
+/D [1210 0 R /FitH 134.055]
+>> endobj
+1209 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F70 508 0 R /F11 573 0 R /F49 457 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1234 0 obj <<
+/Length 1952
+/Filter /FlateDecode
+>>
+stream
+xÚíZ[oÛF~ϯàK
+‰&œû0@°'u‰£mMò@K´Ì­L*$å4ýõ{æBñ6”­¬‹mÚ}1禙sùÎmÆQ°¢àå£ÓÅ£§/$ b "‚ÅU€#”ˆ¡ÂD‹Uð>ˆ¡Ù\J¾;[üóÍlN) <;y~v1û¸øéé ÕÙæd1ìo~Ë©^ò(r'6ß`N#†ÁœHø-µ«?D<Jàîý(x?çQ¾˜)¥=>M–3¢ÂkÝcá²È«t¹«³[=˜Ú%·3ÎÃd³sÝâÊ+£.¿L"IXCív“9ÂE´YqU7v¿È]¶KžØo–/7»Êò¬ÏÇSb¢ ÁQÌìŽò1{DˆIÕò©vÄbÜãIŠ›5ÿð°!ŽE³ rÂ)ýÇñHŒd3<ŽIqÿ㜔Ê4YYù%v
+“ ÍA ¬í­í±g¸›´A|`R"ÆwšT» nr´'VHñ=1ßïÛ¥Ãu:°F‰§•(•’|µURÙUŠîNy ŸÜa µ¶úãhq|Gµ¹‚£^\CÊb Nj-:{rnŠJ[…–©MolßÚ2,±éj01*&ŒÃE2gß:zìí{d q2°Ž3¯uœtÔ
+÷*S¢leJvé^ðù:[êðum'²|•-“ÚX—"®0Ô­¦lÕí¤„
+æ»q“…OÔ±D$–NÒb…^VÆ ÎíÅèîVªºØ:g°hP]Õ@ÓSxÕÀ`•. í~ÂUr¹•—P_´YòPy9 sj`.ˆÄJâJ¹n9èQB‚Óv“{¡ÜÝåMFþ¹Ò¥Ÿ"ýKê‡ï‚õ…â;³ÝìªÉ blÊmvl)6ôçÝ{¸¯ñçžMÛøð¦R­ò{ÐÒs´O”Œk0ì®×ªÁ†úÆJýwùÅ
+/'¿ºnHˆGÅ
+endstream
+endobj
+1233 0 obj <<
+/Type /Page
+/Contents 1234 0 R
+/Resources 1232 0 R
+/MediaBox [0 0 612 792]
+/Parent 1208 0 R
+/Annots [ 1224 0 R 1225 0 R ]
+>> endobj
+1224 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [347.685 256.172 383.025 268.127]
+/Subtype /Link
+/A << /S /GoTo /D (Item.70) >>
+>> endobj
+1225 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [278.697 190.979 295.496 201.827]
+/Subtype /Link
+/A << /S /GoTo /D (section.B.3) >>
+>> endobj
+1235 0 obj <<
+/D [1233 0 R /FitH 686.127]
+>> endobj
+1236 0 obj <<
+/D [1233 0 R /FitH 668.127]
+>> endobj
+1237 0 obj <<
+/D [1233 0 R /FitH 651.689]
+>> endobj
+1238 0 obj <<
+/D [1233 0 R /FitH 638.294]
+>> endobj
+1239 0 obj <<
+/D [1233 0 R /FitH 624.347]
+>> endobj
+1240 0 obj <<
+/D [1233 0 R /FitH 598.444]
+>> endobj
+1241 0 obj <<
+/D [1233 0 R /FitH 584.496]
+>> endobj
+1242 0 obj <<
+/D [1233 0 R /FitH 570.549]
+>> endobj
+1243 0 obj <<
+/D [1233 0 R /FitH 520.735]
+>> endobj
+1244 0 obj <<
+/D [1233 0 R /FitH 482.877]
+>> endobj
+1245 0 obj <<
+/D [1233 0 R /FitH 468.376]
+>> endobj
+1246 0 obj <<
+/D [1233 0 R /FitH 454.428]
+>> endobj
+1247 0 obj <<
+/D [1233 0 R /FitH 440.481]
+>> endobj
+1248 0 obj <<
+/D [1233 0 R /FitH 415.131]
+>> endobj
+1249 0 obj <<
+/D [1233 0 R /FitH 401.184]
+>> endobj
+1250 0 obj <<
+/D [1233 0 R /FitH 387.236]
+>> endobj
+1251 0 obj <<
+/D [1233 0 R /FitH 349.378]
+>> endobj
+1252 0 obj <<
+/D [1233 0 R /FitH 322.922]
+>> endobj
+1253 0 obj <<
+/D [1233 0 R /FitH 308.974]
+>> endobj
+1254 0 obj <<
+/D [1233 0 R /FitH 295.58]
+>> endobj
+1255 0 obj <<
+/D [1233 0 R /FitH 269.123]
+>> endobj
+1256 0 obj <<
+/D [1233 0 R /FitH 255.176]
+>> endobj
+1257 0 obj <<
+/D [1233 0 R /FitH 241.781]
+>> endobj
+1258 0 obj <<
+/D [1233 0 R /FitH 215.332]
+>> endobj
+222 0 obj <<
+/D [1233 0 R /FitH 178.034]
+>> endobj
+1259 0 obj <<
+/D [1233 0 R /FitH 157.265]
+>> endobj
+1232 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F70 508 0 R /F11 573 0 R /F14 574 0 R /F49 457 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1262 0 obj <<
+/Length 1556
+/Filter /FlateDecode
+>>
+stream
+xÚÝXKsÛ6¾ëWðVrZ"ěȥ㇒:S»Åé¡Ž´ÄÈœÑË$•6ùõÝ(Š´(ÉNœÎ´!`÷ÛývyS/òÞN“Á«7±gˆQLyÉGªˆ(¥=+B™ö’‰wãKÜ&ï^½Ñ¼³’’HqØÆ®9ûåä÷dx„œs_‘ Ô:öO/’Qr=<¹tÓ¿ O·×#ÜlÕ “ÁÀÂ0òèöt¥‰fÆÏ7·‘7(h£½¿ìÒ¹Ç'šâgÞhð¾G!¥§¤&L('åU:Ï@­"? ˜ö?¯‚8ǨðGù— ¥ó(…Ý9÷BJ‰MìŸ?D2ºË«žÔ®â1‰£öšQ>]d“Ÿƒ2iüó¬ùªÊ— ‡@º˜¸A‘•°Æ¯Š< þØq´ÄÑ¥©n@¶p„‰ƒ#ÌŽcO±˜€<Nø“€3ÿltvòëм§RpªÜ˜ûb°Ø¯²iVX(¢.TiQ¤¸à³ýS¢ŒèàD
+™ŒÕº{úùÿÚTbc*T÷4¨ì&¬½âÆ^õémíjÂÛ-pÖTº×T\ä‹™JI"`ÜÑìôrtÌLì<ÄÌç™K¥eÇ\ñ®µv¥ÔŒ(Ê6G_5âQÑÆ‘z³èC±] Šx³D d‘®eÔè
+I Îìê_B‘V¢q]jaŠoó°m¹1~´nì¾X/ÆÁwóbý/VßÙ‹ku~[Ìl
+Sš}lèïŠÿ]ñá>sØ»%Ù:÷ž
+u<&™×ØÓjÿ£
+endstream
+endobj
+1261 0 obj <<
+/Type /Page
+/Contents 1262 0 R
+/Resources 1260 0 R
+/MediaBox [0 0 612 792]
+/Parent 1208 0 R
+/Annots [ 1230 0 R 1231 0 R ]
+>> endobj
+1230 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [420.568 336.826 435.29 349.324]
+/Subtype /Link
+/A << /S /GoTo /D (table.3.1) >>
+>> endobj
+1231 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [391.51 312.916 406.233 325.414]
+/Subtype /Link
+/A << /S /GoTo /D (table.2.1) >>
+>> endobj
+1263 0 obj <<
+/D [1261 0 R /FitH 686.127]
+>> endobj
+1264 0 obj <<
+/D [1261 0 R /FitH 668.127]
+>> endobj
+1266 0 obj <<
+/D [1261 0 R /FitH 285.504]
+>> endobj
+1267 0 obj <<
+/D [1261 0 R /FitH 249.638]
+>> endobj
+1268 0 obj <<
+/D [1261 0 R /FitH 165.894]
+>> endobj
+1260 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F70 508 0 R /F14 574 0 R /F83 1265 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1272 0 obj <<
+/Length 1973
+/Filter /FlateDecode
+>>
+stream
+xÚíYݣȟ¿‚G,­û覿HEs·s—9åFÙµ#E™ÝÆÆ6' À;»ûקª«Á`33É%9i_ TÕõÕ¿þ5Ž‚m?]}¿¼úîG K´ÐÁrðH3«“@[͸0Ár܇šI6›cÃÅÍòï›Íã8ÿrsýöæýìãòçï~´ 0ÆŒLÀ¾{W)T¹ŠüŒ7Ë«Ç+·QÀO“iÃŒH‚Õþêþc¬aðç b&1Á“Sݱ«_,‚ÅÕ;ò|8-ç “FZ&¤¦ÉïÒ}6› #£p9&ürÀ§Ðɸ ù× ½ Ë”µÁœs–(Eï~ˆTô· \¹SŠ-³‘¡Î"ß–ÙúÏ`N˜$|›5«:?´yURŠÒr72¬³¦­óŽ4.Óiˆfâ‹4ÈľœMPX>Ÿ«ü²NJ³Øˆ®L·åLذͶY=›K-E¨1*¥Ã»Êݨp¹Ë(¬·?,)¬Ù0ûq½Ê32A:y¹Î>3šuäßÜÏ;ÊõÃþ78˜<ëàCÚdäá>…¼þm.ýúÿæÒcý?-ãã1-qQøŠÕi¹ÍÎÝšväÝíb9³qxý~f%¬¬9Qäæ6ƒ¹ùssG6,² NÁZ,×sZ•UÞ»òjC×v—Mä'Ž“‘ìÂ~œH 8lxŸ)æ†q®}Lº‹éæî-ø õlU‰¦HŒNÂ:ßî|ßmûp,…ãå‰ ÇŸ 'V,Rö¥pæÐA%z\‰aX<œè³R}ÿ DAM‡ÕAõ©º¦u¢Ï_œ†Ñ.C{^Ðk,Rj9ÏŠlŸ
+˜ Œ¹ÇUEéHó2/·$óÉ
+]¦„õ8øivÒâCÔ¤;iQTèÅþP<Q¸©À¡XP>ÜÍêX×'8EÁÒNÆݵóâ‡ë¿Þ€Jšç#¿„y67¤»Y¥…ƒ 5I-7½‹É„sÐÿÝf.8³<¤ÆÐ|HÎC!-ä«Ë¢ë$jJÐ*[k¯¶‚j¹›Ê=L;Þµ]·Y™ÕÐ]ô”Ò¥Ó…=bQ»Òõ5ÇåTÉ)ÇÕ¦ÂÆƱ·ù§yÂÃ’DÔSv`õ[·p¨ó³7$[UEgîP¤e'FŽq (ðQ›äE|,ŠL§ÑWÖ™µ½«CÔz°¼¿.xˆ
+Œqý!­~Á
+n¨Ö™ïâuæiQîyÒ"[u¶|;ÕÛ€nÞÿtÜ;%$¡bÄ%aZS¹¿«\E5®ª´Å;_':ÔPQïÌqÕ’!z¤åeÝêöŽØ‘m/!LBQ·¿O¼–7¤‚qãó±~9Ñ>¾áÝxµ;L¢’½,¥ËAêsVÐÓƒ Ç°–*ñ4†Z·SzʽÉuþ)§’€ð¡ƒlš—4p¥  ÎÚc]ú·ÛñÅræ#†ëÒ-¬˜‹ð€@úÙ¹Šp>˜¹„6\ü _ÝÛ4"°%鸂­IÚòMu¬1\“»0 UZ¡ÆŽ4¨¿AŽ&h© „f˜
+…x02—c{8¶oªŸvyoÆœ—pM‹§aP°IW-¿';(Gé®Hk‡Öø4pIR¿AÀ u»«ÊªÞ§ hµâRƒ†Àæ.§<vóÀZj;°o@4
+÷sÀçÛ×;ùM–T¸¯H"i¿#V$¦“³3TU"æ1Ä|Ç\ aç¸,”IX,ÕË{’`Võ Á=ÝÂŽÊ2ÖÝn¦vXõ"ÛŽ ÷ PäYãÝ,É{ÚüŒð‡•êX®Óú ùóK{:8:ÂÊÈ ™EÕÓéY%gp¸›øfмA£Ú“'a<'Fz6C§¼(Hz:D u›î+pÃmZ¯‹¬i¼•·p¢CN\z}Wv_¡÷»ªÉÊ3z1G¬‹‰­GOñq<`øi*—#ºzdj/×L¹/"@\¸ù¶›ÛH¼¿öuø•¯Â¯z~ù«ð«^‡ß×зWøèÉ.`?ÕüŠÈâÈÒñ¿Ñ—îó"‘ÓS7êg»Š¤±î®õïzÿÖFЃ?ÀþyÊ«×
+endstream
+endobj
+1271 0 obj <<
+/Type /Page
+/Contents 1272 0 R
+/Resources 1270 0 R
+/MediaBox [0 0 612 792]
+/Parent 1208 0 R
+/Annots [ 1269 0 R ]
+>> endobj
+1269 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [242.417 438.622 264.888 449.471]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.2) >>
+>> endobj
+1273 0 obj <<
+/D [1271 0 R /FitH 686.127]
+>> endobj
+1274 0 obj <<
+/D [1271 0 R /FitH 668.127]
+>> endobj
+1275 0 obj <<
+/D [1271 0 R /FitH 378.887]
+>> endobj
+1277 0 obj <<
+/D [1271 0 R /FitH 233.875]
+>> endobj
+1278 0 obj <<
+/D [1271 0 R /FitH 172.923]
+>> endobj
+1270 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F70 508 0 R /F83 1265 0 R /F14 574 0 R /F71 1276 0 R /F13 705 0 R /F7 674 0 R /F1 667 0 R /F49 457 0 R /F11 573 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1282 0 obj <<
+/Length 1737
+/Filter /FlateDecode
+>>
+stream
+xÚíYYsÛF ~÷¯à#56{î¤ÙVjej·¶4y¨ãZ¦¶:lRJšüúb¹<¥%O¦ÓN§/æ! àÃÖ8x pðÓÑÉäèõ[d$•Áä! #)U µD„ª`rÜ„Bön'ï^¿U¬%I– Ôä2§çƒ_'Ãë^Ÿ1JÔë+¥Ã“Ñd<¹.Üëóáàlx=¶ÊŽpaAym›Ñ'\#­eЧ
+^2·G­Oƒ›¾À8dYò¸(,Ä %œƒ+²4ðnž8™æ:ƒ—¤Y}Œ¡ŸzB„Ñl»/¸ij¥HQ~ru}r1o+æVIÝÍøQ¤ Î…ÀóÊcaH“JÇ­O‰@¢^åiæW"jK%­8µ”<§>%à³à•’ úk$9Ôà*Š¤ù6°~÷‚%¸ú¬}` Ø—ºù®×§”†d4BÕ I/ho{š…ËÔ…;Ž¦=ªÃö‰‡Óå"‹§ëUòɾÜB$\>xü
+#k¯FÃË32f5ª¡ {r7¿«ÒÎã*Ü©†E.¦+I„µÞ¶ºµc[fŸ\xv+ˆ™ÍÚÂÅnVÝYö‰Dúð]v
+1^p™S`C–÷|ÀDN
+ež
+mbœ÷©ãv}†±‰ôÀÝ/4Ú«¢½r«ˆµ—þÁcôBRg”pF1¯QËPûlh˜òÛtp4ÈV4â´Œ†$!£ÿD4ÈV4ZF9ˆväƒ+¥/Ø6x×Â+À-]È"ÝêJU`}ÜësÎËd‘ÌmM[Cš»°^­#gò5Z%ËbJxŸë€º˜u– úPeòz ć7¨þtWAù&(ªšgû¨øyÍ2gê×8]¾r¾D9çj|:øyØ5§l4\¢ìqQÕ ÎN‚-KT,MŸ°÷ ÛÓ¬Ò@"í4+€§Õ!½ßÒá,‹‹¹±Ž
+Vïiõž“ƒp³ zFÂ.Ùn†˜ÃDZož’Á,˜þò"IŠãÉyôg>ßj£VÁÂêÌúÞC¡jTöÍ“…Õ•ëk ØcÐ6þ‚éÛ|@4TYù²d÷VhwQëŠ{Œw rMÌØ &Qî1¤z‹ï‹3ÇFZcvÌ PÛd]¹Ž‹üÔëL4ïVÌv!鎈µ6å,¬‘PÕh9¤¤­ááò#Ž¥Â«ó5%6 [þ3ÏVÀ°Ÿ º”KŒOë|Åþ)J£y ],;öõ@ -«râr¹ˆ‘G{¿”³í@CÒäÒ¿¬W»Vi7ÈòÀžBƒ4¬“W2Î"d7±$ÒÎj" T#^€KXJ¡XLlÏûòäˆ&¼ÓÌ„ãä«Ûš@â•mòOÉ*+Qò.®‚¦ÌêO|ÿ£u•˜ð,ΦiòT6Užóô¼"¤q¶J“©ý%ë0ñíà£Þ0´kz® ²Í
+lû NÎ4_
+endstream
+endobj
+1281 0 obj <<
+/Type /Page
+/Contents 1282 0 R
+/Resources 1280 0 R
+/MediaBox [0 0 612 792]
+/Parent 1208 0 R
+/Annots [ 1279 0 R ]
+>> endobj
+1279 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [378.411 519.186 398.115 531.141]
+/Subtype /Link
+/A << /S /GoTo /D (table.6.18) >>
+>> endobj
+1283 0 obj <<
+/D [1281 0 R /FitH 686.127]
+>> endobj
+1284 0 obj <<
+/D [1281 0 R /FitH 668.127]
+>> endobj
+1285 0 obj <<
+/D [1281 0 R /FitH 651.689]
+>> endobj
+1286 0 obj <<
+/D [1281 0 R /FitH 631.763]
+>> endobj
+1287 0 obj <<
+/D [1281 0 R /FitH 610.399]
+>> endobj
+1288 0 obj <<
+/D [1281 0 R /FitH 533.133]
+>> endobj
+641 0 obj <<
+/D [1281 0 R /FitH 426.523]
+>> endobj
+1289 0 obj <<
+/D [1281 0 R /FitH 400.676]
+>> endobj
+1290 0 obj <<
+/D [1281 0 R /FitH 384.736]
+>> endobj
+1291 0 obj <<
+/D [1281 0 R /FitH 368.795]
+>> endobj
+226 0 obj <<
+/D [1281 0 R /FitH 318.989]
+>> endobj
+1292 0 obj <<
+/D [1281 0 R /FitH 301.098]
+>> endobj
+1293 0 obj <<
+/D [1281 0 R /FitH 273.265]
+>> endobj
+1294 0 obj <<
+/D [1281 0 R /FitH 239.337]
+>> endobj
+1295 0 obj <<
+/D [1281 0 R /FitH 167.548]
+>> endobj
+1280 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F70 508 0 R /F49 457 0 R /F83 1265 0 R /F14 574 0 R /F11 573 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1299 0 obj <<
+/Length 2432
+/Filter /FlateDecode
+>>
+stream
+xÚ½]Û¸ñ}…ß*±N¤¾Û‡"i6ÍÞÉ]Ö}Ê8Ú¢m"²äˆÒnößù eÙk§w(Ћg†óM:šmgÑìŸ7¯–7?¼ÉãY–™ÌfËÍLDYXdå,+²PÈ|¶¬fƒ,LÂù"Ï‹àþvùïŸç‹8Žƒ··/_ß~˜ZþøÛbBÖÂ<)>íMsD¹‰ÇÛåÍ—Ãh&ŽÌ²<Ìe9[ïo>~Šf,þ8‹Â¼Ìg„ºŸÅ P¸±žÝßüÂ’OÙ
+‘†y ´Ò<”IÆÌß©½ž/d’'Ár.‹àé
+aã<€N™%ÁÛá×HÄ{Õà4zµªQ­¸4X]ñ W'v»É hº許<Wð}Ûy2Æ3ñÌ­î‡éj!’°L’Sí´ªÈ1„ä½ÂïÀ¦íö "ËDñgeÕ=9l°!äˬpbc¨Ø»¦Sº#ˆ™áË€æíôméügÄBßó\°îT1EN.CÙ '›¡®¿YÔaQxJ
+k\]ªîõ¶íÀþ{Œ;؇Ù.Ž2¢C6uóò®oò.±-³€;ãÖZ³¢v @¶WkDüÌÓÇTp;°nJóG^Ûš‡±!CšîkÞCí–^I%׳ç˺ߵý¼ów\J®÷8 G‚µÊ ÛijÃ8'
+çþ&ã“®^»zPLI"ø”°~¥á­)â|zúœNš††ÝlxåƒÁAu½YµêHÃ1 í“Ãï=ë.k³qh\¼êÞø†’µdyˆ|n¤‚WÒ )grø$*}[5hžRiô¨x:––¨KK–G¾´
+Ó4ÎiýÎä©éç;ÊœÉÈXºü l©•‘Øà€§q²v ¬\jN9*q‹n¶ýõ$±À·JªÒù”¤g!M}½t^›‡¦r]©(B™¥—/¡œ‡Î‡"-ÜiËãi××Nûnß'$+ãT?4–ÞÛ¼‘'OHˆéCß{žIŠ(.Hõ]µÔKKm£Ï<Jfaœ—§V5á5ºØ{pwÁ‰Šß<ùɧcŒÖažÞ3¸«¢Ü”P´$åI¸R…—·à6ÏBJÆaQ÷ñB`rVønXÊ0ÉGŸœp–…S5øQõÄÀXbÇEÞ…ÇÝS‘…y_Im£N’ºáw-e‘ÐîYΗ­ðÌÍÒ?ífôœ^N¥§\áeU¥ƒ2Žz&Ç;)]ˆ“‡îL7¾¯ÿí¹]’0‘£åHLrrfÖúÂtìîâøº+IŠBü¿]é™ZË4eú<|õµð}ׄGcŸjJ`ôu´óß ¿F¹–ùýKå2ÄfR-.9Iñ‡ÜôõôéSJ÷nˆƒßPØaµà>@BO<Xº_2*= Áèô¦ùÿÁHÄÞË#sME
+¶×ô8ê…»íŒH(Ä«3QƒSÙ'õüÀ,¢™
+endstream
+endobj
+1298 0 obj <<
+/Type /Page
+/Contents 1299 0 R
+/Resources 1297 0 R
+/MediaBox [0 0 612 792]
+/Parent 1313 0 R
+/Annots [ 1296 0 R ]
+>> endobj
+1296 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [441.094 117.248 453.603 128.097]
+/Subtype /Link
+/A << /S /GoTo /D (Item.90) >>
+>> endobj
+1300 0 obj <<
+/D [1298 0 R /FitH 686.127]
+>> endobj
+1301 0 obj <<
+/D [1298 0 R /FitH 668.127]
+>> endobj
+1302 0 obj <<
+/D [1298 0 R /FitH 313.558]
+>> endobj
+1303 0 obj <<
+/D [1298 0 R /FitH 290.134]
+>> endobj
+1304 0 obj <<
+/D [1298 0 R /FitH 274.072]
+>> endobj
+1305 0 obj <<
+/D [1298 0 R /FitH 249.099]
+>> endobj
+1306 0 obj <<
+/D [1298 0 R /FitH 231.1]
+>> endobj
+1307 0 obj <<
+/D [1298 0 R /FitH 213.814]
+>> endobj
+1308 0 obj <<
+/D [1298 0 R /FitH 190.618]
+>> endobj
+1309 0 obj <<
+/D [1298 0 R /FitH 174.949]
+>> endobj
+1310 0 obj <<
+/D [1298 0 R /FitH 160.664]
+>> endobj
+1311 0 obj <<
+/D [1298 0 R /FitH 143.378]
+>> endobj
+1312 0 obj <<
+/D [1298 0 R /FitH 132.137]
+>> endobj
+1297 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F70 508 0 R /F49 457 0 R /F11 573 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1318 0 obj <<
+/Length 1843
+/Filter /FlateDecode
+>>
+stream
+xÚåY[sÛ¶~÷¯à[©i…àð¼t|KíNâ6¶æ<œ$3¥$ÚáT·P”Óôן],H‰2e;MÛ™N_Ì%-ß~ûq óä.áÉG'££/}’±ÌJ›Œna9³Ö%Ö[&¤KFÓämjüàýèÇ/êÌŒ[nœӋãŸGç׃¡R*µl0tΧ'—£›Ñõùñk¾8?>;¿¾AgG<FÐ\»a …Ìš,JƒŠÖ(Ë’u~œ¼ÎÓëb¾HŸÞãŸÖ’.­?æ¿ðoȸ­–s²ÚgÅbJÆò–®19È›gù´1¢CÖËw@ø¸ –C±‡\aoCa˜s®Še:‚^Þ÷îõ¬˜À²°Ï),*¥¤ÕÑq¡±ÞŒ‡uU„a•nÖåâ®™Z®ÉZUädRL7UñØZ§ë:¯êv2Á…Öu±
+¡„'Õ]BÆu
+çŠñ^¨é^ì’9 íÏÓþîŸJ¥ ©È_0y¥ÓÛH)›pÓ>¦l‚AXë¬_¼ÔÙ.½ŒdJÃ|f) ÿþ¬àgÚ¦§Ëù*¯Ëq9+C‘Ö%ÓÏä¥S*\3otS
+Ò2Í   ¤IoŠzë)gÒ‹"ŸÙDr%ä³þ„gªñw¹Xmj˜íUºÊ«|^ÔEµþO_¾8óÒ4ùºZ.Š^n4ó:äøiSZåè|tô1¢$ZÕ¸î“Éüèí{žLáÙ g.sɧ0sž(­˜ø»Yrsô¦G‹gR«b:‹²pK#H–§#¬‘Ï1]¨@B§7åïiÔšSªËwÜðqY¯á*Â,åa«.ÙsSÞ-Šé÷ i2ÈÄzR•«º\FžäM‘UÈ- pUB1N‚‰Ö­ëG°1†e™ØG^‚ÓÉ9ó‰Ö@'ƒõòÕå뛇¹·ÀhS¹@æ×Åð Qà]”òªÊqB¨ù^„Ö™DuÑX P0Lz W¸·zXÌŠyAîilë,Ü¢4áuFú»\Ñ-(ƒÌfð¤•L9× ªµ¸ÏÊyYS­B•[ªò^"K|­xßõsŒjvzszüêü
+Çw°2V¬pxؕψØÖ1eö6µb0Ôܧ·Ë
+  ‚»SŒšZ
+Ù¾©Ûð„ÞÍ'$À¸fÒ;ÎåÃ=Àë z‘8ÅjÄÎÅ]d¸,iKy¹ ùx£ìuV¡-ÞiFu„‡…»W„¯Þ\ÿm€÷U¶Êl*{ e
+endstream
+endobj
+1317 0 obj <<
+/Type /Page
+/Contents 1318 0 R
+/Resources 1316 0 R
+/MediaBox [0 0 612 792]
+/Parent 1313 0 R
+/Annots [ 1314 0 R 1315 0 R ]
+>> endobj
+1314 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [494.892 629.328 507.401 640.176]
+/Subtype /Link
+/A << /S /GoTo /D (Item.90) >>
+>> endobj
+1315 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [332.496 577.529 349.294 588.378]
+/Subtype /Link
+/A << /S /GoTo /D (section.B.4) >>
+>> endobj
+1319 0 obj <<
+/D [1317 0 R /FitH 686.127]
+>> endobj
+1320 0 obj <<
+/D [1317 0 R /FitH 668.127]
+>> endobj
+1321 0 obj <<
+/D [1317 0 R /FitH 644.217]
+>> endobj
+1322 0 obj <<
+/D [1317 0 R /FitH 628.332]
+>> endobj
+1323 0 obj <<
+/D [1317 0 R /FitH 604.373]
+>> endobj
+230 0 obj <<
+/D [1317 0 R /FitH 564.585]
+>> endobj
+1324 0 obj <<
+/D [1317 0 R /FitH 543.816]
+>> endobj
+1325 0 obj <<
+/D [1317 0 R /FitH 518.307]
+>> endobj
+1326 0 obj <<
+/D [1317 0 R /FitH 484.379]
+>> endobj
+1316 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F48 455 0 R /F70 508 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1333 0 obj <<
+/Length 1071
+/Filter /FlateDecode
+>>
+stream
+xÚ¥VÉrÛ8½ë+p$«†ˆ…
+Í&]ä»ÇÆ”ãDH˜òÄ~­
+ˆV&$HC*ƒŸ›0‚ÁÌј³òWa¢Cq 茡(Ž±ÂmþL™—] cl½˜Â
+Ûõ™•Ëu‘¿ £˜
+œí¢)7]Y¯GÙ:7š¢íšraVZËÇ8LCG<p­åa „c¡Ô¿&R6"¢0ÕÌ]öÏP'AÖ”Ù¼*Z¸—âÁ¶-ò×ÇP :Hàº^Ø2I± àYbÍ<lz_8¶õjS]á(k‹n»q ÷E–³ËÖ-çÅ¢†d*0rOvëÆ»ºªêV~@Z‚öõžþPD±L$ ÅØë;Æû>·‘ ²9œ
+.@‘¥×Ò&[˜¸¿š6!Ý®
+™ÑÝýc²=ÐVÔg¢¥>ú¼þ÷’1FåæëûidWu¶@Ìb¹*MP\ßC2¬¶ý~S¸ÎܶVÆi@„hî ù
+9☗Jîg€=Ÿ.¹ãŠK|Ûf.ÈòWæÚ½YÞd <8‰ÖýÞ¶†Êˆ4d›}àXøf®gÙlòˆ¥G™N^Ä4×–i:Vöšùî NðDm«ÎèZèò~ª¢±% “®õ¾lhéží“Ñàlvvr5Òt¦öÊò0¿˜ªÁáü ©âã\ŸŽ©žI&äS ãcŒ
+Ìô3‘ˆ>ÞŒEºe/ŒË¿¦cú‡ïÂp†O‘c@ˆ¾•ÀÓ÷—cx <Öâ±z¢„cŽ{õÄ_ÐѨö½Œó³Ô„I ê¿æßn¡¹±U¶ö«ÙŠ©rO£óè;Ù.ÚÑ«s¶¸ä
+endstream
+endobj
+1332 0 obj <<
+/Type /Page
+/Contents 1333 0 R
+/Resources 1331 0 R
+/MediaBox [0 0 612 792]
+/Parent 1313 0 R
+/Annots [ 1327 0 R 1328 0 R 1329 0 R 1330 0 R ]
+>> endobj
+1327 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [165.458 553.554 180.18 564.402]
+/Subtype /Link
+/A << /S /GoTo /D (section.6.1) >>
+>> endobj
+1328 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [151.258 511.656 173.73 520.484]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.1) >>
+>> endobj
+1329 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [151.418 477.838 173.89 488.686]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.2) >>
+>> endobj
+1330 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [151.258 435.94 173.73 444.768]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.4) >>
+>> endobj
+1334 0 obj <<
+/D [1332 0 R /FitH 686.127]
+>> endobj
+1335 0 obj <<
+/D [1332 0 R /FitH 620.248]
+>> endobj
+1336 0 obj <<
+/D [1332 0 R /FitH 582.446]
+>> endobj
+1337 0 obj <<
+/D [1332 0 R /FitH 538.61]
+>> endobj
+1338 0 obj <<
+/D [1332 0 R /FitH 508.667]
+>> endobj
+1339 0 obj <<
+/D [1332 0 R /FitH 462.894]
+>> endobj
+1331 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1342 0 obj <<
+/Length 122
+/Filter /FlateDecode
+>>
+stream
+xÚ]Ž»Â0 E÷|…Çd¨ëÔ’Ž)¸$$”zClþÿx.0]éèèèÜ`&ý\`ÄQ¿AB)‚yPð+œ£Pºø¡Ÿ•ÌŒ$ü̼ÍROn-uÌS§Zâ´÷Õ›Õã/V·ÖÖW,Ð÷Áÿš‡}ƒ"
+endstream
+endobj
+1341 0 obj <<
+/Type /Page
+/Contents 1342 0 R
+/Resources 1340 0 R
+/MediaBox [0 0 612 792]
+/Parent 1313 0 R
+>> endobj
+1343 0 obj <<
+/D [1341 0 R /FitH 686.127]
+>> endobj
+1340 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1346 0 obj <<
+/Length 1181
+/Filter /FlateDecode
+>>
+stream
+xÚ¥WKÛ6¾ûWè(Ë—D²—"M6m
+tÓtE’ƒVâz…•%G’³ØþúΔcÙZ£‹œÌÇÌhß|ÓhÑè× ¿¿¬W?¾•:â”ä9Ï¢õ]ÄhNtn¢L "%UÑÇøõ}±mŸ¤Be±J>¯÷j’(­ªÑ(•†h&½ÂÛÄȸ/¶Ö«¼±e+WÖ+ëÈ“ó<¨fŒh¾µ¾¯‡Nx<Ør¬»7¨9”IÊâ>aq}›¤\Ç6È÷Ö/Ên»kìh½Æ®ïœXi«}$Z[Úa(ú§ ÙMÆK/[¹ÂŸu»iœËè%cÄdÁË; Ž$©"x,(‹Ñ/[ôsS·ài8¬Ç{\Qï+.îBvàöÞ•íÀŠïº¦Å.C FYy…[Ü<yƒ·Ó]BE™ö‰²¬Ø Áì¶(!Çä>SU®t¼Ì£6×|!ðò«sª»~ºõ&šPñCÚX/ÒøR+zTk¦r’r¨ÿø—úàœäl’øšdy\4ûƒ+E[y? >ÙMóä·.±¸xózí½êj_87 f­ \Ϫ8vÎÕÖ¥IÈøñ¾v‰ÀjAe Ä .öƒ+jåwüí6í0öûr ®º`'Àcj&‰9hœÒ¯ÃŒg§-ó›Å3í#ͼ8ôäÌY|×îöèŽñ®@{иÃO y¦”ä”èë®=8|l=äRžm‚Ûï÷ãs_Y]­W_VX@±I‰Ñ&*·«ŸiTÁ%@‘(£¢G'ºACÅ&ºY}ðä4GÚÊ#!(ÉhðäÚeŒKeâµëçÄ
+endstream
+endobj
+1345 0 obj <<
+/Type /Page
+/Contents 1346 0 R
+/Resources 1344 0 R
+/MediaBox [0 0 612 792]
+/Parent 1313 0 R
+>> endobj
+1347 0 obj <<
+/D [1345 0 R /FitH 686.127]
+>> endobj
+234 0 obj <<
+/D [1345 0 R /FitH 668.127]
+>> endobj
+238 0 obj <<
+/D [1345 0 R /FitH 429.01]
+>> endobj
+1348 0 obj <<
+/D [1345 0 R /FitH 403.149]
+>> endobj
+1349 0 obj <<
+/D [1345 0 R /FitH 375.315]
+>> endobj
+1350 0 obj <<
+/D [1345 0 R /FitH 341.387]
+>> endobj
+1351 0 obj <<
+/D [1345 0 R /FitH 245.688]
+>> endobj
+1352 0 obj <<
+/D [1345 0 R /FitH 209.822]
+>> endobj
+1344 0 obj <<
+/Font << /F48 455 0 R /F8 458 0 R /F70 508 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1356 0 obj <<
+/Length 1961
+/Filter /FlateDecode
+>>
+stream
+xÚ½XßsÛ6 ~Ï_¡Gù®æø›ÒÞº4Ùº»­]êõn×öA–GWÙJ%¹Ùú× (Ų•dÙíöbI4 |
+ gBÅÓ¢ ç¯(‹¨˜û󬹌7¸~*&pxµHÀûëÚ‡¥3¨yÔn"z¹ò~Ä鎩#÷¢aÖHÏDwˆÝ #% ‡ &áøIþ¯)úÈc‡øè)ôøå÷w«pb(JÑ2qʃãçÅêìK0SDàW¦A¸ “<‰òíÙ‡O<*àOÐÍÄç;?u Ñ®e…¥ŽÞýFÙÈ„6Dà ÃsÒ<J#àŽcÏ%î¹m[Mø€Æ̃æô1h&ƒ>Ä7\‰*ÒÏ8 µ‡Ã1
+¿¦ÈÛ†I7sˆé|<?“ùóðµSLùŸó‡2Ai-˜‘DZk–¸ŽÝ3;äyê{ ™Ö3îväî‘FïîPJõ—¢eª˜ã’ÌDéU…fE'•·Ú¢áõ DÃÿdÁ£›Á§ó1É&,cÀùíõ»™Ë.ep©S>ðO'5I ‰NBL ;«Ÿ0%Dm1o‚šÆToóp|ß\]
+¢þ½kžÃ*yâDH^5¬8Á^<„ý!rIàÒ (гbÿ+«04§ÉsX%gƒ“…Šw œRÍònv{ @ëûÒï9»£NÀÀ½ËU:=±î¡Xu
+Òx£õ¤–°q#ªò’˜û’M¹8ŒdTª°I0r°Iðu°I˜ˆB²U[WÒ*XgmÂò¿Äò¿+[Ê‹°Žl‰–‹Ÿ“ºÕ#”jR4HJ•Ô1öA|ªcßP|8NƒCÅ ‡Üá@„
+¥¼Üg‰ÙÄúûTdyÞ´…ï¸lhÄï ,
+ß³ºCî7ôå[þ¥¡mȪ0Ðì`óh> ª†‰*´ã6ÇŒùÑ.dÙ:9ér`q˜ˆÁÜ<Ûw¯'5¾¡‘ÓÑ'?ê~€Äô¸îìö·t’šý Z5ö{ ¿®gŒH,“&}¢á)¬›mxú®ðF„!:6è¹Pƒ7Y±ûfí¿ÐIò±Iº}cÐÈA£z¨H¾ƒÔ39îV»IúCØ­’ó¥,”S{†›¡
+endstream
+endobj
+1355 0 obj <<
+/Type /Page
+/Contents 1356 0 R
+/Resources 1354 0 R
+/MediaBox [0 0 612 792]
+/Parent 1313 0 R
+/Annots [ 1353 0 R ]
+>> endobj
+1353 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [306.698 539.998 321.421 550.846]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.3) >>
+>> endobj
+1357 0 obj <<
+/D [1355 0 R /FitH 686.127]
+>> endobj
+1358 0 obj <<
+/D [1355 0 R /FitH 602.014]
+>> endobj
+1359 0 obj <<
+/D [1355 0 R /FitH 569.305]
+>> endobj
+642 0 obj <<
+/D [1355 0 R /FitH 456.829]
+>> endobj
+1360 0 obj <<
+/D [1355 0 R /FitH 430.566]
+>> endobj
+1361 0 obj <<
+/D [1355 0 R /FitH 407.321]
+>> endobj
+1362 0 obj <<
+/D [1355 0 R /FitH 387.12]
+>> endobj
+1363 0 obj <<
+/D [1355 0 R /FitH 366.365]
+>> endobj
+1364 0 obj <<
+/D [1355 0 R /FitH 345.348]
+>> endobj
+1365 0 obj <<
+/D [1355 0 R /FitH 326.503]
+>> endobj
+1366 0 obj <<
+/D [1355 0 R /FitH 310.148]
+>> endobj
+1367 0 obj <<
+/D [1355 0 R /FitH 293.793]
+>> endobj
+1368 0 obj <<
+/D [1355 0 R /FitH 275.238]
+>> endobj
+1369 0 obj <<
+/D [1355 0 R /FitH 261.083]
+>> endobj
+1370 0 obj <<
+/D [1355 0 R /FitH 245.282]
+>> endobj
+1371 0 obj <<
+/D [1355 0 R /FitH 190.183]
+>> endobj
+1354 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F70 508 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1375 0 obj <<
+/Length 1629
+/Filter /FlateDecode
+>>
+stream
+xÚ­XKsÛ6¾ëWðVj¦Bˆ°—NR?êNF™Jj/I”ÉœH”LRqÒ_ß],(‹Ö£õ8X®öùawá$ZFItÛ{7é½¹12ÊX¦…Ž&‹ˆ'šYEÚjÆ…‰&óècl˜`ý16õ…ÿÞ_o'¿÷RÊøzøÛ‡«ë+<¨øÝÝ„¨ãÉènx;îžüñæÆh€Ì¨ ô{ÙZ"K/ ½¹Q6âŠI¥rZö0 Bî ê8i<Ú•ƒ÷®\6÷ Ö¤ñu9ÛÀŽÇs7'Ê»¢¡Í¸©ŠrY[”€pάà$|òˆN‚ÅÓøk?Mã¼*ò¦Ø”5Ñ6 Z+н
+ºñì¼naâ9è!R^9ÚìjØ€Utj‚ôºÙ´ µ{Ø
+™IqbË o³øP‡• &µm9 :ÎW;W”R­â iñ¶
+ZÝ|W¹`F×¹Ûûà½ð,eRfGAÀø"î¦>݀ă€"ÝgÂÓ·>GnV@4” P‹’Ø(°YlV Pü蓉<?pŠ™‡#ç¹Þ(Ñ¢Ê0kíÓâ´ï7år
+2„*x¢ò)à `#i³†!jÜÒU`µH’Xj \“áÆoÒpG
+£ÉßýLûþ<]ùJo¶ÚùœÉ¢©ì+qf˜‚Þhig‰¶ÿQý $ü58ËRþgê¥ÕO
+,X/Ç™=•Žé ³Œ†¡žýÈ
+ „¨Yè 
+<MÅÁM(iŸRi|*O¥’ µÀà¾5UN¤)$•F\8”Îù|"´±³‘;
+»S[µ+£p1¾ãIZÂÛQjV¸²¦ƒ }ÚM¸5Æ£É+„%RùkÓ²PØÔu剾<ŽýÓÏgerGê%´,‹¯h¦ æ÷L²r‡c·íŸósôáær̳$;1qÒs¸BñõÕ®¡Ó¢Ú¬i7÷±Y„¨b»%vD¡JC–€€18ŸÝƒÔ.]<ÃA*}]Ç—×–%Ièà Ž)5­å†Öm•CEå+:®Š5vJÜú·œB RƒÄýÉb†Ì!°Î 6»Ù®)è…EÄ䧠ԗrÜp¢ ð¼ ÙT,Sª±¦^Áð1m'<tk$R¨RÁpò¼ƒ@뾾𙸽 ò*—¯
+ÿìùŽùü¨0¼¥¦Û†âö¯` ¶‚}ˆH3<cýàuáýšži
+>Í}[êæôcï#¬cznú‹Aw¢ZF´Ýö¢^
+Ócks»ÂýÿHΔÖ
+endstream
+endobj
+1374 0 obj <<
+/Type /Page
+/Contents 1375 0 R
+/Resources 1373 0 R
+/MediaBox [0 0 612 792]
+/Parent 1383 0 R
+/Annots [ 1372 0 R ]
+>> endobj
+1372 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [293.852 129.204 316.323 140.052]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.2.2) >>
+>> endobj
+1376 0 obj <<
+/D [1374 0 R /FitH 686.127]
+>> endobj
+242 0 obj <<
+/D [1374 0 R /FitH 668.127]
+>> endobj
+246 0 obj <<
+/D [1374 0 R /FitH 596.555]
+>> endobj
+1377 0 obj <<
+/D [1374 0 R /FitH 575.786]
+>> endobj
+1378 0 obj <<
+/D [1374 0 R /FitH 542.245]
+>> endobj
+1379 0 obj <<
+/D [1374 0 R /FitH 482.411]
+>> endobj
+1380 0 obj <<
+/D [1374 0 R /FitH 446.546]
+>> endobj
+1381 0 obj <<
+/D [1374 0 R /FitH 386.712]
+>> endobj
+1382 0 obj <<
+/D [1374 0 R /FitH 350.846]
+>> endobj
+1373 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F48 455 0 R /F70 508 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1388 0 obj <<
+/Length 1758
+/Filter /FlateDecode
+>>
+stream
+xÚÝXK“Û6 ¾ï¯Ð­ò4fø)å¶Iv›t’M»ëž’d[öjÆ–IΣ“_ õðÊv¶Í©“„@à i°hðÛÅóÙÅÓë8HH¢¸
+f«€)J”ÒŠa\³eð>TròqöûÓk-úœ %"Ñ Æò¼xuùÇìêv2B„šL¦ZÇáõíåÛ+$½¼zñîå•‘sAò¡æ)Ó‘‘¦\Q ØëI,²‘›û '(“UÝà¢ÚOÌ,S3Ȱ΋õÆqÎsÇõyEaºÙ;z^»ÍYºô»‹%îoî',>È”âðjzÅ6-¦‹r2åq¸Ì–^ÊnjL#$I¤„‘‘$ŠÐ†*«³büMÚ䥑™¨°\áhd':¬@å¾Àù¦SÏÂ5 ±T‹6,3«]ÃÄð, Œ;€¥¹OœØ °~ÃÕ¢ÜåY=Ô>… z
+&à)…ž2Ñ¡-ieظr·³(²½
+,Yº0
+ÞS<ÖÛ³À+ðÊŸ7z Þ
+†:zî4Ë7WJ7d2MÀæv×Û¿îf¸Ïý·„‹MV×N¬}áš¹å†b7Nר+ q@JDù©—Ž:æHˆ<Àû/°ºÃDü?^`½NþÓ8‰¤
+endstream
+endobj
+1387 0 obj <<
+/Type /Page
+/Contents 1388 0 R
+/Resources 1386 0 R
+/MediaBox [0 0 612 792]
+/Parent 1383 0 R
+/Annots [ 1384 0 R 1385 0 R ]
+>> endobj
+1384 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [480.615 431.233 495.338 442.081]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.7) >>
+>> endobj
+1385 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [432.142 243.244 446.864 254.092]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.7) >>
+>> endobj
+1389 0 obj <<
+/D [1387 0 R /FitH 686.127]
+>> endobj
+1390 0 obj <<
+/D [1387 0 R /FitH 530.083]
+>> endobj
+1391 0 obj <<
+/D [1387 0 R /FitH 509.666]
+>> endobj
+1392 0 obj <<
+/D [1387 0 R /FitH 489.249]
+>> endobj
+1393 0 obj <<
+/D [1387 0 R /FitH 468.832]
+>> endobj
+1394 0 obj <<
+/D [1387 0 R /FitH 448.415]
+>> endobj
+643 0 obj <<
+/D [1387 0 R /FitH 286.519]
+>> endobj
+1395 0 obj <<
+/D [1387 0 R /FitH 260.426]
+>> endobj
+1396 0 obj <<
+/D [1387 0 R /FitH 229.991]
+>> endobj
+1397 0 obj <<
+/D [1387 0 R /FitH 207.637]
+>> endobj
+1398 0 obj <<
+/D [1387 0 R /FitH 186.666]
+>> endobj
+1399 0 obj <<
+/D [1387 0 R /FitH 166.803]
+>> endobj
+1400 0 obj <<
+/D [1387 0 R /FitH 136.368]
+>> endobj
+1386 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F74 666 0 R /F11 573 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1405 0 obj <<
+/Length 1579
+/Filter /FlateDecode
+>>
+stream
+xÚ­XKsÛ6¾ûWðVj&Dð"@äÒ©c;q§c·’ÚK’-Q2g$Q!);éôÇw Ê”L»õ8–À>¾ýv!-#}89ž¼½°*rÌi¢é"̸ܰÈd† i£é<ú[&Ù(±6‹Ç#™Å^%¿_}˜~%J©øüêýõÙù¾èøôrJ³“éøòêÃdôeúëÛ‹¬w,2«œï÷6)Šœð Q÷Œ% KS%Ò·Š¤(Ò>%)çñ傃^¤Gñu—¯šÕBº74¬‹|N9Mˆä¦li¸Û4årS„õrƒ¦¶Å²¨i9»^ŽOôàQ"ÀF™=Õ ž×ímQß—Mñ¦Û<òÈÐàn”¦q¾Ú…×Ï<å‚ü)t?dV2‘eC?sÎ{Ýy8
+6G*&"ƒRqd‰´ä}Eþ!7‘Š:ž³j”ÀÄæE¼¤Ù<K&,êjM£¦-¶~_»ò¨^F4ûð«ôèؘ‘U
+Aî#ýq 9YWàÍuC!ö³|×’yÈÕUµ ܧHùæKwÕ!éI˜Ùż˜wišE¤‡D÷rOã°Ô¾ HHL!Óxr v&ã`ÓøÔÓ1 &míSÇg>k”€ô 49cÊÑÞ—›í·
+}À Q "·¢™Þ-Ø3Ns ÷K±0ì.™‘dÞõ®}*•D¿•’eÚFÊ@ê¢R"d
+TÊL™'Q©ÿ'*UÊvåA¥R]³ï†@©Àê}+pÚµ†Mà"ç ´~ØQÜ•>jzŠùüžAvÀòG¡LÁÓAÞRï2‚Zœ×%VLL€LÇÀìógpA‡L•¯Ä™eÚd‘ÄFTºœq“ýûA-àâ58s©8Æ™~)ûÉKªã,ˆ˜á W'º ŸýH†ƒÊ]
+endstream
+endobj
+1404 0 obj <<
+/Type /Page
+/Contents 1405 0 R
+/Resources 1403 0 R
+/MediaBox [0 0 612 792]
+/Parent 1383 0 R
+/Annots [ 1401 0 R ]
+>> endobj
+1401 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [282.046 615.38 289.02 626.229]
+/Subtype /Link
+/A << /S /GoTo /D (Item.123) >>
+>> endobj
+1406 0 obj <<
+/D [1404 0 R /FitH 686.127]
+>> endobj
+1407 0 obj <<
+/D [1404 0 R /FitH 668.127]
+>> endobj
+1408 0 obj <<
+/D [1404 0 R /FitH 652.242]
+>> endobj
+1409 0 obj <<
+/D [1404 0 R /FitH 631.763]
+>> endobj
+1410 0 obj <<
+/D [1404 0 R /FitH 602.436]
+>> endobj
+250 0 obj <<
+/D [1404 0 R /FitH 528.719]
+>> endobj
+1411 0 obj <<
+/D [1404 0 R /FitH 507.95]
+>> endobj
+1412 0 obj <<
+/D [1404 0 R /FitH 474.409]
+>> endobj
+1413 0 obj <<
+/D [1404 0 R /FitH 414.575]
+>> endobj
+1414 0 obj <<
+/D [1404 0 R /FitH 378.71]
+>> endobj
+1415 0 obj <<
+/D [1404 0 R /FitH 318.876]
+>> endobj
+1416 0 obj <<
+/D [1404 0 R /FitH 283.01]
+>> endobj
+1403 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F14 574 0 R /F49 457 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1422 0 obj <<
+/Length 1616
+/Filter /FlateDecode
+>>
+stream
+xÚÅXKsÛ6¾ûWðVj!X
+ˆX¨¿Ïõ¦1“¨ ‰ØI¢È©Ó¬Ò9©òèh®ÓïÙz‚ðÚµ›)&L…íµéÜ!t"/„•›/ï];/‹ZÏÛ&ûfV{iô—ÚsUŽ
+CÆbBiâö2ðiDix^×Ù²prß]~p‚›æ·I„•·'ˆ v.™ÛÛÁ†+‘ì…!0®É.Z½|;»qLû!½
+ 7Ø}ª‰Ayˆà$ðQˆoïÐ_Û4¯G0+I°χ #¢vaø™“]馭
+o_t±•·iwr¯Ëî.X/Ýj7f8n@&IÌ;–¡…8EFÙ;E1j¢kz8©Ã SÒæ„;¸èFˆ¾ÑKã8†3õ׿?ѱebwÆÆíkÆMÞdkíz­ ØM–»aYxº T†så oÚOø:-ÜpkùÚ—>ûéÌ·³IŒf¸Ëõ‘¬„lŠÀ )º%ïG„Χ+<öe‘ý­}# ÛËÙÙW¿% 8a"D"£2˜¯Ïn?Ó`“Yí%|°¬ë€ñ˜àž4ȃ›³?~¬2$„±(1'ŠùT¿oÄxÑ™S3'sc-q~m¾³Žhï¡ï·]d± È:Ô TL@±¡"‰j Ä˜
+‹UáŽþè
+Œ`˜œcæÃÀÛbÓš@Qp“Vé¯Z5øy²÷ÒúqÔ
+endstream
+endobj
+1421 0 obj <<
+/Type /Page
+/Contents 1422 0 R
+/Resources 1420 0 R
+/MediaBox [0 0 612 792]
+/Parent 1383 0 R
+/Annots [ 1402 0 R 1417 0 R 1418 0 R 1419 0 R ]
+>> endobj
+1402 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [448.683 655.231 471.154 666.079]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.2.1) >>
+>> endobj
+1417 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [485.671 515.955 505.375 526.803]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.11) >>
+>> endobj
+1418 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [428.066 344.567 447.77 355.415]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.11) >>
+>> endobj
+1419 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [335.844 192.125 342.818 202.973]
+/Subtype /Link
+/A << /S /GoTo /D (Item.137) >>
+>> endobj
+1423 0 obj <<
+/D [1421 0 R /FitH 686.127]
+>> endobj
+1424 0 obj <<
+/D [1421 0 R /FitH 605.556]
+>> endobj
+1425 0 obj <<
+/D [1421 0 R /FitH 587.195]
+>> endobj
+1426 0 obj <<
+/D [1421 0 R /FitH 568.833]
+>> endobj
+1427 0 obj <<
+/D [1421 0 R /FitH 550.471]
+>> endobj
+1428 0 obj <<
+/D [1421 0 R /FitH 532.109]
+>> endobj
+644 0 obj <<
+/D [1421 0 R /FitH 385.006]
+>> endobj
+1429 0 obj <<
+/D [1421 0 R /FitH 360.722]
+>> endobj
+1430 0 obj <<
+/D [1421 0 R /FitH 332.342]
+>> endobj
+1431 0 obj <<
+/D [1421 0 R /FitH 312.043]
+>> endobj
+1432 0 obj <<
+/D [1421 0 R /FitH 293.128]
+>> endobj
+1433 0 obj <<
+/D [1421 0 R /FitH 275.32]
+>> endobj
+1434 0 obj <<
+/D [1421 0 R /FitH 246.94]
+>> endobj
+1435 0 obj <<
+/D [1421 0 R /FitH 226.641]
+>> endobj
+1436 0 obj <<
+/D [1421 0 R /FitH 207.726]
+>> endobj
+254 0 obj <<
+/D [1421 0 R /FitH 178.781]
+>> endobj
+1437 0 obj <<
+/D [1421 0 R /FitH 150.131]
+>> endobj
+1420 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F74 666 0 R /F11 573 0 R /F14 574 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1440 0 obj <<
+/Length 1536
+/Filter /FlateDecode
+>>
+stream
+xÚÍXMÛ6½ï¯ÐQbFü&{)v³Ù i¤°Q HrÐÚ\[¨?¶’Ü4ýõáÐ^ÉV6ÙMPôbR$EÎÌ›÷8r‘-²"{qv1={zeeæ™7ÂdÓ›Œ†9ã3ã ãÂfÓyö>·L²ÑØZ—?{{ùür4–Ræ¯ß>û…ºW¯ÏGÂæ/&ôxù—>N_=½r½aŽYåá丫±¸ä¬H¶<ŸžýyÆ¡[düÎ c™>›­ÏÞ,²9L¾Ê
+f½Í>Å¥ëL*Ø•ã‹«lrö+ùÔ=–sÜËdF[&”¡Ãß”ë0‹¢pùt$\þùž\ŽcBÉ|Rýк  ½ÏÆœ3¯5½û¡ÐÅuÕ6Ðò¸H:æ VÝ5“j± óŸ! ùehfuuÛVÛ …¨ÜÌ©S‡¦­«Î41ÃažYyåÝýa€`@+ƒ£ÉΫéïï Òœqp%!õrƒ!jÃ"Ô`µ-Šœcœ´ÉßlcGçÓe@‡T~SÇÈ¢om7°ŒéY4NÇô¢ûfr1y˜A€b.Å E«¼Ý¶å
+»2¯íÖø{MfÕ4±½¡¶ÙÝöƯW¸Íg˜ß44Xm¨-#ø\
+½?è:Ôý ÿËãT
+endstream
+endobj
+1439 0 obj <<
+/Type /Page
+/Contents 1440 0 R
+/Resources 1438 0 R
+/MediaBox [0 0 612 792]
+/Parent 1383 0 R
+>> endobj
+1441 0 obj <<
+/D [1439 0 R /FitH 686.127]
+>> endobj
+1442 0 obj <<
+/D [1439 0 R /FitH 668.127]
+>> endobj
+1443 0 obj <<
+/D [1439 0 R /FitH 572.428]
+>> endobj
+1444 0 obj <<
+/D [1439 0 R /FitH 536.562]
+>> endobj
+1445 0 obj <<
+/D [1439 0 R /FitH 452.818]
+>> endobj
+1446 0 obj <<
+/D [1439 0 R /FitH 416.953]
+>> endobj
+1438 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1452 0 obj <<
+/Length 2204
+/Filter /FlateDecode
+>>
+stream
+xÚÝYK“Û¸¾ûWèHUYXâA‚ÌÍcÏ$NÕx]å°åõ#Qk5ℤ<ë­üøô Ҥ}æ‹4¯~|Ýh…³í,œýýÕÍòÕwwÉ,i¬âÙr3“q(âØÎâ$RÙÙr=ûÄÉüËòŸßÝY}Ê™†B§–!ž·ÿxóqyûi¾ÐZVÌÖ&Áݧ7÷·Lzwûöûw·¸Î«ÐmÞßyá\( DÍË懹J‚¦¨òý·ùBA»<6u±Î±cƒf—3õ¹X5ÇÊQ«|[”‡×Ð1iÅ`âkvåq»k'ãVV¹eeÃõ\Eý¼Ïæ0üVXÃ¥L˜·‡U LÀ“W5^.³R¤QÄg¾3OtðÜ;N‚ÎÝñ„²Î™Ø”nÐ/ÄÝúÈÜÜ{Üó(Ñ~ªa÷®ó.?Ýïÿõ°äÖ&+šÝŽ~Ü£¸Tå«ùBå¨5¶š
+ÇW §Ý–÷
+Ãàý†ÕhÒ=*%âT{=Þ-øx;V¶Q"RÒ3ù³ý’W%ŸîÇ0
+ ¶æ*ãA<Ðåð¸&Ê¢!âq~†ÌSǾC  ãW*È3oØOªÙuÉö‹¯sç90öuÅA¶?RW£ÍMØ9\L¦þ^Å„™‡"‰[üÞTå¯ò1
+WÇ |¸yàùÒœ,›Ö•~ Ãp¼‰Ö´§(‚e0ŚШØ&4g? -79Þ׎B!u«ºÏB`û¹ ðô¨µ/ΗÀ®ãÄ;SÌc·o}ädÝò r¡Q,Þ
+œÕªI«ý]ó¥ðNæM "áÅSCÓq‹–ö¦®QԴ臛÷˶îѵÀÖò …H ÛBâ‡o§²T©H:sJEFVH0È ‡Œ’îÈçŽü)Ï
+˜Èt0‘0‘k˜Zy3‚AL­œ•ÀwãžJJ½<_é.ygãºþBf,àÉ6Öl ã ¨i5 H‹šF»¤OƒÈ9—-ÀŽà>)4ú\RIÈvÕe;µ"Ôi<qÁ?d$.Y9ž©Ð‘¹
+ž±2=ðäu;‡4§ 9#È=ýk=RAøñ‰môHLW­A:sñäSØÈšÁ£·Í ½õ†œÿÑ嬉”ýŒÓƒ vˆ®M‡èøŠj<0òØÃÍžï¬<dÃ{@ýT—I,àÆæl;sÞ^u•ZêØd¤I@>z|ÂßǪ‘ƒ„ßd#‘j °JV¨€
+ùgç¿Ð{Øa”ŠýO·)«:›²îÁ°0
+†¯OaÒ‰|´¸þtñA¸MG5¼“’Y/…À(\­óê?ÅaÿìI\QžÈ»ÃHD±úÕåŠaõ ëçqhú—,Ä`ŸÁ(a"uíqšÄ³´ :Ý‘…áðvìr&Γ|åP5c¾)‘…Âý«E64 eC¡)¤iúVçJŒT» )”Ò¿1@ÀšúðýÅ¥šðö¥2YäCþ¸"GBv™?V"K~C‰Œkƒ»®µ•Hu= Íià:/ øüÓҠʤSYìUV\.°½ætò$‹£hh¤³R# 8¦¤¬
+‰Yôfç^6ÐÞy(#<•®æB+tL-†Jÿ&§å\A߉ä°L?Lê âîX㘻wõ†ÿYQT¸£$X÷×
+•8¬±Â€x¤Š‚ûlEõsˆ7èÃ^,søù‰io™´fGÂ=Àf=qoŽ
+òc%y—÷‡ç#Š ð’ ˆÉM^ þ8ðßÛå«ÿLª`
+endstream
+endobj
+1451 0 obj <<
+/Type /Page
+/Contents 1452 0 R
+/Resources 1450 0 R
+/MediaBox [0 0 612 792]
+/Parent 1383 0 R
+/Annots [ 1447 0 R 1448 0 R 1449 0 R ]
+>> endobj
+1447 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [289.213 485.496 311.685 496.344]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.2.1) >>
+>> endobj
+1448 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [286.805 395.202 309.276 406.05]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.2.1) >>
+>> endobj
+1449 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [287.11 259.024 309.582 267.935]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.2.2) >>
+>> endobj
+1453 0 obj <<
+/D [1451 0 R /FitH 686.127]
+>> endobj
+1454 0 obj <<
+/D [1451 0 R /FitH 594.038]
+>> endobj
+1455 0 obj <<
+/D [1451 0 R /FitH 573.349]
+>> endobj
+1456 0 obj <<
+/D [1451 0 R /FitH 547.734]
+>> endobj
+1457 0 obj <<
+/D [1451 0 R /FitH 525.108]
+>> endobj
+1458 0 obj <<
+/D [1451 0 R /FitH 510.95]
+>> endobj
+1459 0 obj <<
+/D [1451 0 R /FitH 473.436]
+>> endobj
+1460 0 obj <<
+/D [1451 0 R /FitH 446.769]
+>> endobj
+1461 0 obj <<
+/D [1451 0 R /FitH 420.656]
+>> endobj
+1462 0 obj <<
+/D [1451 0 R /FitH 385.078]
+>> endobj
+1463 0 obj <<
+/D [1451 0 R /FitH 344.52]
+>> endobj
+1464 0 obj <<
+/D [1451 0 R /FitH 285.032]
+>> endobj
+1465 0 obj <<
+/D [1451 0 R /FitH 258.919]
+>> endobj
+1466 0 obj <<
+/D [1451 0 R /FitH 241.169]
+>> endobj
+1467 0 obj <<
+/D [1451 0 R /FitH 228.665]
+>> endobj
+1468 0 obj <<
+/D [1451 0 R /FitH 215.055]
+>> endobj
+258 0 obj <<
+/D [1451 0 R /FitH 177.791]
+>> endobj
+1469 0 obj <<
+/D [1451 0 R /FitH 149.693]
+>> endobj
+1450 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F70 508 0 R /F49 457 0 R /F14 574 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1476 0 obj <<
+/Length 1606
+/Filter /FlateDecode
+>>
+stream
+xÚ­XIsÚH¾ó+tU¡Óû2—)¼d›ØÎÄÔTM%9È ƒ*€<’ˆ'óëç½n K ãäBïÝoû¾÷æ^N&ƒ—¯Œˆqšëhr1ª‰Õ.ÒVÆM4™EŸbC$ŽŒ±ñÅxÈm|ú¯†#!d|òþêôìŠøôêìíåëп¸:;¿~™¼{ùʶî‡%b¤ƒ×ýÍÚá–­å9Ÿ þ0èÒˆ=ˆ¢ 1ÜEÓÕàÓÍ`ñ]D‰q&º÷[W‘p+ÃËèzðgЫý,ãœÁ#­ áR‡Ç/“U
+ÂRnâ *ôýn8‚æ¸a2¾ÎþKQ:„ ‡FŒ§T8ü™*z“U%´Ìï–Xx¬½ç:›¯ÓÙïÃsŽÇgi9-²»*Ë×ÁrÉzlU¤eUdS\)½=úí 1bÏÒÙÇí
+eô
+õJ6ך`w7æqnÚ¼qÓd?)쀢°¥K-„oóuZwnC›fóEó97¶Ò@Ol<.Z"}ž¹ÑTŠ“)ö”øÄmŸv7>ѲÎÅãå2\é?a¯'œØÿNTµ¯`1 ÇЙK¬¯pîn™¬Ó²™Q”dkïæöÑ^…qg
+w‡š¶`
+Ä©u^¥õ¡²^ñàZ&ºõ¬¡mÉb„-¿‡™²Ê ¦Ž?¼x1X“UEš¬|e
+dì$¡i,aÖÃâöÙ°#»­Û*´ m¼¡žX¦IYw ûIs¨Ê¨j¸~¹Y%=ßä ;Ûþ{¸–v¾‡GÊÂI[…vÄ·þtüÒƒŠ
+endstream
+endobj
+1475 0 obj <<
+/Type /Page
+/Contents 1476 0 R
+/Resources 1474 0 R
+/MediaBox [0 0 612 792]
+/Parent 1483 0 R
+/Annots [ 1472 0 R 1473 0 R ]
+>> endobj
+1472 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [400.29 230.763 419.994 241.612]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.19) >>
+>> endobj
+1473 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [205.218 153.838 224.922 164.687]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.18) >>
+>> endobj
+1477 0 obj <<
+/D [1475 0 R /FitH 686.127]
+>> endobj
+1478 0 obj <<
+/D [1475 0 R /FitH 668.127]
+>> endobj
+1479 0 obj <<
+/D [1475 0 R /FitH 524.607]
+>> endobj
+1480 0 obj <<
+/D [1475 0 R /FitH 488.742]
+>> endobj
+1481 0 obj <<
+/D [1475 0 R /FitH 404.997]
+>> endobj
+1482 0 obj <<
+/D [1475 0 R /FitH 369.132]
+>> endobj
+1474 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1488 0 obj <<
+/Length 1859
+/Filter /FlateDecode
+>>
+stream
+xÚ­YÉrÛ8½û+x¤ªFö%7/r–Ù[™ª)'J¦mÕhñR’©ùùé@™¤©ÅeŸ ¬ïá¡Ñè¦hrŸÐäÃÑÉèèݹMqšëdt—0M‰Ö&ÑVÆM2ºMnRC{ßGŸßQé(ÎÀ2~ÌéÇã/£ÁU¯/„H éõ±éùÕñpšÎ§—g\çˆFðmå`tôσŸ4a W”X£ E wÉd~tó&·Ðù9¡Ä
+rXNŒqM9äar(ǽ_x½¸’Ôv¿o
+JGÙKgº-áR­d¢8^ÿh¡£ži6žåU|Áìû^_J™³I±ÄV™žÌÂk=A¾‡‘Û_ô²3§ A"“ôlGÆ­•¥éê![…_“åÛWÙtQV-ä6Ô›óã é¢Z(³°÷¡XγPœe‹¼ü *†¦ãuD[,W[æÏÖ0³ã-öëÀ2BÑtøƒ¾&{Fy¨Ô c×Ær›3J¨Ð‰/B­zÁ1A(W‰4pѬ®ù#?¯xA@)­JG¨Ñºô»a E“~¥á ëSCu‘ç·e¼ÔŠ¡ZaÁjìãI¨Üæˆ S\ÉDqÀÎî–Eè.×áÈB- ½óÊ ÛÇN<:󒲉Ý4R8¥ù“‘úzVäáG¾˜ÔÉ@˺ÜÌZ.â¨å]=½½Lº
+U/Ï7Êî)/ò`µ¡¯ ;Éçy‰R;•^?µ„!4ª×±Xí°€™ðï…‘@,uoŸØRfóØTNç³Øúq”æÙ"tMžŽÍO^†QEþXäå†26­`?q‘ys–¶žãÞÇ^®¼@“áV§YÙ¸"Ñâî§?pJŽ$\0,+·ãð„ PÜ'áÇ8Œ?<’k8X…+ùýØþ9@؃O|¿Þ ®ª eý<¯²5¢¾o¨nöm+;.BGV–ÓûØL‡{@‰%çLVY4¶Lj·ÂŽšI„~Š…À“.C"¶¸ù渰¯| Œ&(ôž‘G'½Á‰ÁñtU®Š<›£ß“*ýù0å]´âÉSöŸ?¼åἑ’¥ˆ÷+x6Þ¢†~‘lV.CwÍ°ü «½?[­
+_2Ld|]ÅŒ) ±BÇóE!ÿw<vK£Ûœ¹sOa pÖÌíç¬a1x¬y´z\ßó‘áݹ¡õ¯,:i«¯,óiGV
+çKá†Í§®þ °´ÜùRºœp²9f\´[Òz£û
+4útÔ–®¾ÈA¨ä>ýõeðüL$'ÊËâMã{MÃŽ¾QE§!Ø(²ÐsW@ íì}“d8„ Ë‘\†åp~†ƒ»8Ÿ£¦>a²¿ ¦01-óÉzcšÐø£§
+ž­cuy×õêHü 6¯Îxú|×@Ò‰ÍÃtikX†ÂçSP"ÿa¥l#ìÅðä: bõ»!4át3è¥7Òå¿*„“E¡0¦c.ö0´FM0|‡ç†Oû,†Ã¡1ÛJcBlØep r#Çðdxy6¸~ÎEÃý°›Dn:„åÄh³[VT~cL߃ÅÄ@N6Oà[¶±1ÿ%·ß2nÈ×$±Ò6­Šw^KÀ)~N˸zeºoäÅnÓÖNT–+°Ü«<»m¤Í¢g O1Y©‚Y¼<ù}à 1ƒ ~áúôã`8èŽUÁÇý.5ô
+endstream
+endobj
+1487 0 obj <<
+/Type /Page
+/Contents 1488 0 R
+/Resources 1486 0 R
+/MediaBox [0 0 612 792]
+/Parent 1483 0 R
+/Annots [ 1484 0 R 1485 0 R ]
+>> endobj
+1484 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [223.615 429.132 243.319 439.98]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.19) >>
+>> endobj
+1485 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [405.497 405.222 425.201 416.07]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.19) >>
+>> endobj
+1489 0 obj <<
+/D [1487 0 R /FitH 686.127]
+>> endobj
+645 0 obj <<
+/D [1487 0 R /FitH 534.618]
+>> endobj
+646 0 obj <<
+/D [1487 0 R /FitH 232.542]
+>> endobj
+1490 0 obj <<
+/D [1487 0 R /FitH 204.16]
+>> endobj
+1491 0 obj <<
+/D [1487 0 R /FitH 182.19]
+>> endobj
+1492 0 obj <<
+/D [1487 0 R /FitH 152.804]
+>> endobj
+1493 0 obj <<
+/D [1487 0 R /FitH 131.388]
+>> endobj
+1486 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F70 508 0 R /F74 666 0 R /F49 457 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1499 0 obj <<
+/Length 1941
+/Filter /FlateDecode
+>>
+stream
+xÚÅXKsÓH¾çWèhWáAóÐ̈ËVa µIv‰+rPl%QKF’ Pûã·{z$K²’@AÕ^ìy©Õ¯¿îQÜaðçÞÁ|ïùk#ƒ˜ÅZè`~ðP3«ã@[͸0Á|\L ‹ØtfŒŸÎNO¦3)åäüðåüôÝÙôrþöùkÛ‘›Ì¨Þ@Os<²úw6ÿÁL†ã6fÂÀ³’N £ð
+~ú³( 'G×ôêã³—oi’Uø¯&á‹þ#B3i@:X¬HxÆƤ¾žZ9)J’–&‹©°“[š-¦3>)ò)ŸT8J›:û‚û)í™FÑ$¹ÛøiÑèwúÊ+w]+¯-Ôý›g´œå‹»Må…,à‚ )À X2aÔ„wi²$¹ ‰•³«¬¦•M^e7yê÷³ßT§7iI'“Š"hÂ. ¢˜iÓ†p•íF•ã¦91ÐjÆ gÊr¯»ÇÑÁ¨îûêç·ÿ×ßoöçcJA$ÃX?©”mN\z—ߦd*DKw¢…QÚÑ[GàsÙC Brñ$OAzyŸU)ÄS(ˆ'@@ˆD…¢øŸ5 Œ; Ðñ¶ãšS)…¨ÌÒŠd×´Ñz ¸a<² )gq¤IUoj˜Uö¾/EY¦Õ[ø2Ëoš­»Í*ï#zŽ9’\Ý¥Î<åM@ƒwÎÕŒÇ/íBÃ2¡£/òð6=•î¦§2 i^õsWÉ¢,èôÕ]á tÏ|¢mç Ø[ÐÖÒ%¬å2õ/q¿ÊSVMÎÒE‡¶L ÍFsþ¥@5c "ÏDù2ýÚääª÷mñQÈ´’-à¯Æ|òæÈ€@fÆ0S #Vk{Øxè·Å43¼¥‡«ñLŒD«ºs:È'øÁ
+T36X¬ö..Ã` {oƒÉØ÷îä
+T‹-–ç»àlïºæõnhÚ{¹R!‹¡ÍwꜟcÓ¼Ïl
+[œr.ã^f»ÝmË”aWCµê£ í€ ÒúÖe¸F@ãŸʨkx¬™âþÖzº©²Ê‡–ï—0 =°…v‘C+ …ìb–ëP!f-aÖzÌJÀÚw«…û¯‰ûÝî£`Õ°JÅ£_+WŠq®X9”~ì¾ß*H—=T Nâ°öïlîãÎZ¡}›¼§¿E±j>Kù/a´î¾‚YãÁ…¶jÙnÕb#ü7óšõojç~» ~Ÿ ;Ì!ÀÿÒû»U
+endstream
+endobj
+1498 0 obj <<
+/Type /Page
+/Contents 1499 0 R
+/Resources 1497 0 R
+/MediaBox [0 0 612 792]
+/Parent 1483 0 R
+/Annots [ 1494 0 R 1495 0 R 1496 0 R ]
+>> endobj
+1494 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [365.954 583.5 385.658 594.348]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.19) >>
+>> endobj
+1495 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [423.017 567.006 437.74 578.961]
+/Subtype /Link
+/A << /S /GoTo /D (section.2.4) >>
+>> endobj
+1496 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [317.292 501.806 336.996 512.654]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.19) >>
+>> endobj
+1500 0 obj <<
+/D [1498 0 R /FitH 686.127]
+>> endobj
+1501 0 obj <<
+/D [1498 0 R /FitH 668.127]
+>> endobj
+1502 0 obj <<
+/D [1498 0 R /FitH 651.689]
+>> endobj
+1503 0 obj <<
+/D [1498 0 R /FitH 638.294]
+>> endobj
+1504 0 obj <<
+/D [1498 0 R /FitH 624.347]
+>> endobj
+1505 0 obj <<
+/D [1498 0 R /FitH 609.846]
+>> endobj
+1506 0 obj <<
+/D [1498 0 R /FitH 582.504]
+>> endobj
+1507 0 obj <<
+/D [1498 0 R /FitH 552.616]
+>> endobj
+1508 0 obj <<
+/D [1498 0 R /FitH 526.159]
+>> endobj
+1509 0 obj <<
+/D [1498 0 R /FitH 478.837]
+>> endobj
+1510 0 obj <<
+/D [1498 0 R /FitH 462.399]
+>> endobj
+262 0 obj <<
+/D [1498 0 R /FitH 423.475]
+>> endobj
+266 0 obj <<
+/D [1498 0 R /FitH 334.469]
+>> endobj
+1511 0 obj <<
+/D [1498 0 R /FitH 316.024]
+>> endobj
+1512 0 obj <<
+/D [1498 0 R /FitH 280.158]
+>> endobj
+1513 0 obj <<
+/D [1498 0 R /FitH 208.369]
+>> endobj
+1514 0 obj <<
+/D [1498 0 R /FitH 172.504]
+>> endobj
+1497 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F70 508 0 R /F49 457 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1521 0 obj <<
+/Length 1943
+/Filter /FlateDecode
+>>
+stream
+xÚÝYËsÛ6¿û¯à‘š©P¼¹tÒÆIÓ'm¬ñ´“ö@K”ͯ”è’”óø뻋)R¢«Íôð
+ϤR–‚†<—ÅÍ6_}
+k‘Ä/òfYwmQmÑ:ζpåŠæuÞ´u±ÄÍÆeÚÊ1«ŽŒ¡]ú 1¦Ñ,IÓ“-ªÝ.xʤS¤ïÕÌ™8«‹ìºÌÐ+Õñ®ÉWÏV(Is©þw޵ܓF‰U,árè]É ÞE×Ú ×Z–\kžàZsàZé$?t­מä×$I˜sÉ)~} RÁ ÝëHÌ‹«ËׯÞ
+Æ„Ì ½]¬‡‹‡b§„P²ÒŸ!­êœ+ñp“–"° ´ö6kÇìímÑe™5=W^ç´Õ …ñ;u~ù'(•QòœkÂ¥ A ¬äÿr7©Áç¼®PNÍã—èSüZIá#Ž½.ÊÂßý‰È
+˜]ý¬ÐH _F²Î@uš n8Öy¶¢Y¾Gî¯i$·ÂdèÖî» ¡ý¹`zá“ø-ÚiÍ£)à
+&ïÊçÄ4L•Ð}Aá,J„SÄ0™
+f¤êXžaOei0ñ³ã…b*~"æuX–ÿÈõàS ®»÷6+×ó»âc^b{•`¡õ±\îÀ3užvqÁȪ ݪ/OÕ]$ºûÙ^õ£ÀÛP’ÃþÔؘŠh»%R_Èî%h{!Ì>úP(aÚÕg<û| ór·ÉÂ7¥o_ýG^©ÀÜ )(`?ïÁ«fw ÌóP¹Œbº/]!šlsWúBˆŽÿè3œés`Ú%ªÃO<g´F9rLÅЈ ¸ª
+XÉ[Í°ñµÓø¾€òt›ÐñþYϘš„6+ʆØèÐTQoå
+dqûaÖ=Ez‡Ï)¥x×Ú8öHÈhÙÔhðx…’6ªm û9©×q£Æ[ñxÔêÂvè ̼_è´m¢Ó¦cõ¯¦QZ†à© Ýúœ¯¾9xÙfMhæ”Úw@}ãèW¿xs.R&M#<À¥<¼ÿÿÍÜi>ü¯eæß@ð$>´µÒÐe¤cHËÉðz‹ïŠ.¢Bà›Ûž¨ é‘ÌÉ_ØEoÿëIÈ£_%¼Æ!.Œd¸}Œÿ:Q)À°ÃÜgNª€7õt¼í5§hü¿¾ˆ"˜àö÷ˇäx½6ε¢C dÂl9šM ¤g™ÀØq3¢%K>îEFwš‘“†ýŽ¶òØP«ÿrVÊÊo“èÔ<:Á'tÈ¿&è°A©;<<Î wÇ
+endstream
+endobj
+1520 0 obj <<
+/Type /Page
+/Contents 1521 0 R
+/Resources 1519 0 R
+/MediaBox [0 0 612 792]
+/Parent 1483 0 R
+/Annots [ 1515 0 R 1516 0 R 1517 0 R 1518 0 R ]
+>> endobj
+1515 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [482.903 476.221 502.607 487.069]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.23) >>
+>> endobj
+1516 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [293.171 357.816 315.642 366.727]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.9.1) >>
+>> endobj
+1517 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [475.692 294.408 495.396 306.363]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.23) >>
+>> endobj
+1518 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [475.692 264.93 495.396 276.886]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.23) >>
+>> endobj
+1522 0 obj <<
+/D [1520 0 R /FitH 686.127]
+>> endobj
+1523 0 obj <<
+/D [1520 0 R /FitH 620.248]
+>> endobj
+1524 0 obj <<
+/D [1520 0 R /FitH 584.383]
+>> endobj
+1525 0 obj <<
+/D [1520 0 R /FitH 336.569]
+>> endobj
+1526 0 obj <<
+/D [1520 0 R /FitH 312.633]
+>> endobj
+1527 0 obj <<
+/D [1520 0 R /FitH 281.219]
+>> endobj
+1528 0 obj <<
+/D [1520 0 R /FitH 248.958]
+>> endobj
+1529 0 obj <<
+/D [1520 0 R /FitH 225.022]
+>> endobj
+1530 0 obj <<
+/D [1520 0 R /FitH 205.009]
+>> endobj
+1531 0 obj <<
+/D [1520 0 R /FitH 187.487]
+>> endobj
+1532 0 obj <<
+/D [1520 0 R /FitH 169.965]
+>> endobj
+1533 0 obj <<
+/D [1520 0 R /FitH 152.443]
+>> endobj
+1534 0 obj <<
+/D [1520 0 R /FitH 134.921]
+>> endobj
+1519 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F14 574 0 R /F11 573 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1537 0 obj <<
+/Length 220
+/Filter /FlateDecode
+>>
+stream
+xÚUŽËNÃ0E÷ùŠYŽvüˆ_, *R©µ²©ºˆRƒÐT!ü?ŽÜª°™ç9—Ãpx.V¡(k«À3o¤ð
+‚æŒã ÒB8Á-ÓŒPk6mØ´[B•RØ­C»Û“cx)k÷çGZ2[ùDÈ×j‘üÊ,ëÊÌk-5½É©´é…º#%¡BHM?LcbZ«Ï¥8>ò¬ç÷ñœëŽø
+ã0SîŸâ°H<Åì3qîF9Pá˜r>37çËÏœÔNᥟú¯8ÇéûáŸù[^‡âlßL
+endstream
+endobj
+1536 0 obj <<
+/Type /Page
+/Contents 1537 0 R
+/Resources 1535 0 R
+/MediaBox [0 0 612 792]
+/Parent 1483 0 R
+>> endobj
+1538 0 obj <<
+/D [1536 0 R /FitH 686.127]
+>> endobj
+270 0 obj <<
+/D [1536 0 R /FitH 668.127]
+>> endobj
+1539 0 obj <<
+/D [1536 0 R /FitH 651.73]
+>> endobj
+1535 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F48 455 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1542 0 obj <<
+/Length 1353
+/Filter /FlateDecode
+>>
+stream
+xÚµXKsÛ6¾ëWðHˆàýè¥#ÛrÛLí¤±ÆOš-Ñ6§¢èRTö×w— %Q†äGâ‹
+b>8.œ°Œhe#­ áR{ÏÓ"S”åñdÈmüïý0îqÃd|‘ÿ—¡u£š8#£„1â”òÿI½Îë%Œ¬Ù%,±ð²í=ùí"›ý<L˜&>ƒY¼œVù}Y\.§‹™¤Ê–u•Oë¼\,XÂpGŒx‡tö0Ò=
+*àÁ-W{s?žú nga’w!ým8ÕÙmV ©%9€Å•ŠÏËf¢ãÉ]潹ϿesïáMYiMüé=;’öü´çgG/³b6E+×eÎý´ylUàïµvåÊ?é´*}Øhj]߶ëyÙ<6ÅþZzWó.’þò¦b½åŒ.Xÿȳ£3ÐÁ‹<Fóhÿ”QU¥ ‰›E£
+`X›—‘E“ʼn5ºoõÔ£9Ë·F ð·7²¥¿êøI#ž´ý®ÝºŽT…Åèù8ítX€CK;‹AÚáÒ÷>æÜÌû‰ø:®aÊ=ykª±çQMÅÙšj!ð¹ Ò²0Ó³È4H¤`ŒA²9fÖd“Šh®vS6Sé-`«4lgù4­âáõÃ]Þ‘ /wã€!­ÚLב8›‘ýi[QAd/®b´m"‰ Û–îVõý
+
+02Ûm¸žšh{Ϧž*¦ ž¶µÔRÑRùÌB*¹vÙSH%Ãðò6£_Ž':khB ‘¡»2J˜Ö¬£îËø Ô%hœžÐä墟Më²ò\…fM…rÌïÀ<Åàˆ«¡•>›.›;&¬Nc#âiuò°:£mh¤‰—Mªƒ±(¯QHkÊؾ›hþƒ¶ùT‡¥
+äÊÚ€ÅvKË •ö;ZZ.ß+Á¦—EŠÕžŸV¢ Zƒ—+Ñ„ÈhˆÛXûûèbňqJ÷
+ Zõ“ÑFMÛbÚÞÑWÓ²½j›_ÏÓeí(Ê¥‰W
+ö(Œû½të0â´ñÒµaÄÉê¾­l] ñæ›ÇpýGÕÖVÿK}›„
+endstream
+endobj
+1541 0 obj <<
+/Type /Page
+/Contents 1542 0 R
+/Resources 1540 0 R
+/MediaBox [0 0 612 792]
+/Parent 1483 0 R
+>> endobj
+1543 0 obj <<
+/D [1541 0 R /FitH 686.127]
+>> endobj
+1544 0 obj <<
+/D [1541 0 R /FitH 668.127]
+>> endobj
+1545 0 obj <<
+/D [1541 0 R /FitH 488.742]
+>> endobj
+1546 0 obj <<
+/D [1541 0 R /FitH 452.876]
+>> endobj
+1547 0 obj <<
+/D [1541 0 R /FitH 369.132]
+>> endobj
+1548 0 obj <<
+/D [1541 0 R /FitH 333.266]
+>> endobj
+1540 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1551 0 obj <<
+/Length 1733
+/Filter /FlateDecode
+>>
+stream
+xÚåYK“Û6 ¾ï¯ÐQž‰ñMN¶Ù¤I“Ý鮓KšƒbËMmÉ‘ì&é¯/@PkɼÖIÚ“AÈàGÎ’›$Ký<9»ÿÐÊÄ3o„I&ó„g†9ãã ãÂ&“Yò2µL³ÑØZ—>»œ<¾¼¥”é‹ó_&—W×£W“'÷ºž dVyð@_kT9Ë¢ÏóÉÙÛ3b–ð­;c™>™.Ï^¾Ê’ >I2f½MÞÕe"Xåøá"¹>ûæÞw˹`ÞòÄhË„2äü"_£±ÐÎ¥“‘p釴\
+}Rp•^—#žþ=sèIÂ|Ë”KÆœ3¯5Ùø#ÓÙërÝÂ/ZÒ1Øôu®Ë›ª˜ýÆ•郢6åj]Öa•W3š¢]7åGÚ
+ ÌëMCÒ0‚-u–6b!Â]*H!pq{HËŒ×ÃpP0íZ`©lH¬ÑÓ»Š]ô”3=Kуéjà¯pi=®ÕÒ`àÙ[
+Ž–Õí}žVFnódZ
+Óz¹Ú¬ÃR 5o°@ l¶­ò:Ý´~Ãwh3²M~³í^­šzÕ”ù:š]×·f¾àX¿%%Á ìúu'Óºùh®s‹¯.Ü0cý]èÂjm°¤¶©œÓ;ƒÑGwœÂ3@œ`Bé¢ù`.Ÿ>8¿8àÕqdê^½g™—Ö<‘Û°Ý0&˜‹¢Ó°UÌäm]<2Ì‚“Qp°:í6óŒzhwØÕ+ äÕ¢,b;ä(lÏIlí>`Œmæ1qTHÔ€!½Ÿƒµ‘ÃG5o€¸2Å,Ìòë1”Ž­‚%ØæǹRjøþ.5œ‘J]n¹WëpXG@4Cx„Îœ;t‡·0³ «ïªD2„6ôaQoE¡ª†zU ´:µ'SQ;ò°7ûµŽ‘<}^íšßý`ËŽ§)¦EÙM_HAü¬˜ç›Å<<Gfôê
+eßdçÆñÕõ‡ýwYÅ”pÝx^3ƒõí±Mí9 |ëµi¨Ì­[dg‡ˆœËö¦Ì7lÇ…Pz g°ž½"ô8Ñ^ÔUØÈŽ" >DRˆPnŠe^VT†C³«LAÜ{m„¾i¤‹­~»¶3÷vS†JØ «L1ö¿Ù®êP¹:(­Ø¡ÓK‘¡EÃë¦Kµ|Éh
+endstream
+endobj
+1550 0 obj <<
+/Type /Page
+/Contents 1551 0 R
+/Resources 1549 0 R
+/MediaBox [0 0 612 792]
+/Parent 1553 0 R
+>> endobj
+1552 0 obj <<
+/D [1550 0 R /FitH 686.127]
+>> endobj
+1549 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F11 573 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1560 0 obj <<
+/Length 2173
+/Filter /FlateDecode
+>>
+stream
+xÚíÉrã6öî¯à‘®j!Ø€3'¯™¤ÚvÆÖtMÊÝY¢lÖhqHÉäëç=<€EÚn·Ý9¤úbayxûJóä6áÉ{‡Ã½N]’³ÜH“ §‰0œcã Ò&ÃIrZ³ÿiøó§VmC朩Üsô¯ƒ_†'—û¥TjÙþÀZ—ž^œÐÑñÉÑÅñ âÙãx›ò "H ‡ŠÐÞÌ–ûéÒñ>üù_ ¸,O?—«;\‰t±¤“1AMŠ ígëùˆ E¼ÃÓ<Õt»º+þ £ª £1ÁT"-ðÓ9Š‡üŸ ÷~Û OD¢µd*“‰ÉSF'ãùÞõ'žLàòçrÉg:O$Ë]«Yrµ÷ï®êµÎ˜ÒÂc€ÉË~qöèÏ£ˆÈ(Éif¬µ –gYÐj R
+‰¥Ì;ˆI&ÏÈÛ%isƵy ’N2®²6É÷WCy´˜<)»2Š m߀e À”y^våSʽIˆi%mWvI2¯ëà«G ëÐú}«‚ûÉŒ™,o»ßjYí´0é´ZÎiåQiaÓÙ¨^ÑÑ|4®–´lG7~äǘÃûí°Æý²š
+ lN$Ÿ­”̳\ÆFâŸÒªŒLKï9Å?bÜöZ$åuçÈ9êU1š€2(¡§ûN¡cPÊU[ 15á{\Q︢®øx¥Ì-ˤJ²Œ3+_Ó(ÎY&¤Ç”Éì‰j!,³B¿I ¸j“<Em\üç’Än¬F×ÚÆÐÒítûP¤Þ€¬ï)çU¨(Øyr(ˆ-ƒTåí]:÷Qg§t§x`—Iѧ¨”QþzGÐñ´pS:%çÄvZ4Õd(;øƒc<Óg!pL¼ˆa£©À9õ¡¾‹HAˆ ‡ eâªáÞ©UGá~pN—3P}®ÿÑêÀ!
+˜5ØrCW䟂µa®¡òô ®ËÛ =ìqéKp<“AcTÌ|¾áeÍ ùÍÖé'óŒ/ÉlW,nÉ,À©ò0ÆÈ^Á.!? Ckµ’y*7åŠNÖ º÷%èwiyUÜ“Š9ÄâŒ7˜èµJÏ—«‚Ž©7@ÀX8ªúïÊ*ÞTÈŠw0ËNjÚö_üWÑüƒ.ËÞxè¾*~[—UP|ˆŸªv&E›Ed±ÚãávµßUxàØ«;ÔHի=Æbä£êŽˆaQ-Ækßd5Dƒ¶¢Ó@¢Q”o¢0ƒYÝxÌü¦ìú p&¤ˆ ›â!,7NIu¾íq0’r_ŸŸ^ÇÕ­–že¶!ñ‘GïÞfï"ˆ@×íD¤æ~léÙùÂ×£ÒŸ¦=Ããa tvˆîyÕå&0áL»îQ.f÷¤j…a À§v‚´­>6Qe9Ó@@+É´Ê_5Q†ÌzLR?Q"a˜ÄÑå (Â0i´kQŒ²Ï´ÂXc%.%µì “÷…Ï2=Àú%³ôÐÿêô(ì)ñÀ1þ¨M«¨b‹—åbRŽ±©ÅSÊ_~Ùê÷
+(B#2¨K;iÛ‚‰ú0ø9iRüNg^L#ÚÆ€=ÃxuŸËn7²…§
+ÅÞgÑ€hVLWÈ®qéᆣžI`÷-qÓ½£h>z´w¢}¤…¥&¶Çϼiht
+ r§ýožö‡L„çºñßCüyÜõ hq…j<ãúàÓn›·üYTËÝxÆO~ÖÞÂ÷”ƒ^ÞŽ7¥\g@ü±i £þ,5ó8¬;ßhÆ ¾‰»³ÿ%ôÄŸü
+ ðƒ5b¥>"cŠ^û#M4ÁfB¬«¦Ä×㪠U?˜® =Ç~ÿXúñ1äÒê6¡Å¥”¾üfl·H¥›jDÓ²éáSMgO=6Pðƒ}89ö7 ‰Þf³>Õ¢Z»-©³L|yGê !ýÀÛmL¹a"ÏÛ>S>âÑÀiõ¹¬‹M©#Ï l©/R‡~‘:úúsã·î•í¹e2o{@ùð‚¨Î Û|iT~ê¿cT~}T¹Ì½MTã
+endstream
+endobj
+1559 0 obj <<
+/Type /Page
+/Contents 1560 0 R
+/Resources 1558 0 R
+/MediaBox [0 0 612 792]
+/Parent 1553 0 R
+/Annots [ 1554 0 R 1555 0 R 1556 0 R 1557 0 R ]
+>> endobj
+1554 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [396.068 337.48 418.54 348.328]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.5.1) >>
+>> endobj
+1555 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [396.068 269.563 418.54 280.411]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.5.1) >>
+>> endobj
+1556 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [396.068 201.646 418.54 212.494]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.5.1) >>
+>> endobj
+1557 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [396.068 133.729 418.54 144.578]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.5.1) >>
+>> endobj
+1561 0 obj <<
+/D [1559 0 R /FitH 686.127]
+>> endobj
+1562 0 obj <<
+/D [1559 0 R /FitH 520.509]
+>> endobj
+1563 0 obj <<
+/D [1559 0 R /FitH 497.922]
+>> endobj
+1564 0 obj <<
+/D [1559 0 R /FitH 466.425]
+>> endobj
+1565 0 obj <<
+/D [1559 0 R /FitH 443.74]
+>> endobj
+1566 0 obj <<
+/D [1559 0 R /FitH 425.679]
+>> endobj
+1567 0 obj <<
+/D [1559 0 R /FitH 376.377]
+>> endobj
+1568 0 obj <<
+/D [1559 0 R /FitH 361.833]
+>> endobj
+1569 0 obj <<
+/D [1559 0 R /FitH 336.441]
+>> endobj
+1570 0 obj <<
+/D [1559 0 R /FitH 321.897]
+>> endobj
+1571 0 obj <<
+/D [1559 0 R /FitH 307.906]
+>> endobj
+1572 0 obj <<
+/D [1559 0 R /FitH 293.916]
+>> endobj
+1573 0 obj <<
+/D [1559 0 R /FitH 268.524]
+>> endobj
+1574 0 obj <<
+/D [1559 0 R /FitH 253.98]
+>> endobj
+1575 0 obj <<
+/D [1559 0 R /FitH 239.99]
+>> endobj
+1576 0 obj <<
+/D [1559 0 R /FitH 225.999]
+>> endobj
+1577 0 obj <<
+/D [1559 0 R /FitH 200.607]
+>> endobj
+1578 0 obj <<
+/D [1559 0 R /FitH 186.063]
+>> endobj
+1579 0 obj <<
+/D [1559 0 R /FitH 172.073]
+>> endobj
+1580 0 obj <<
+/D [1559 0 R /FitH 158.083]
+>> endobj
+1581 0 obj <<
+/D [1559 0 R /FitH 132.69]
+>> endobj
+1558 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F11 573 0 R /F70 508 0 R /F49 457 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1584 0 obj <<
+/Length 1702
+/Filter /FlateDecode
+>>
+stream
+xÚåYKsÛ6¾ëWðHM-X¼ÓSâXŽ¤nM/®¶L§šÚR*)¯Ÿ]‚¤HŠ¤ÄDéLÝñŒàîbŸß<zñètð|2x2¶2òÌ0Ñä.Ü0g|dœal4¹.cË4Ž¬uñ›‹ÉÙÅ/Ñ”2þãäxrñûÛáÕäüÉØ•hàCf•GámK[<ã™ÑœbÜ8œX|W†Ý³Ï¬²=ºiÎã‹õ_ÉòÓl•æ׫ÕìÝ<ðFVæ^3!tÎû Ù ¢òÌØb×å‹«@™ÐDŇÚÄ×÷’°þ'G!JdŒc LNæç>LËŸs$#j§PÌ„d^g
+oÖÁÙ]ÃypZèú×ñ¶ Â1i ß1[…#ñpP:™z
+OSÙžÖe3ÌpWíY£h¯“5ҟЀª›ß†É8,ß ÑÚqÖ‚–qu6¿M>‡µÙ<,MéÎÛ${±¼M–áÑâ®öúbž¼¹oM‡øïïœ6É Í
+–(Ø”>¾[.6n±m|–ã<™b³-<2Ì[éh‹ÅBæLy6Ýl›Ç2 2*í!Ý5póLZèÅlÙÄÌÊ
+³÷÷×ód•Õ2Y½†š®gI™Éý—¡“qÝi…Å” LÕ3ž7zƳ¶@U“„è¨'Y :ª”šqn{’·Ç>9ÐHhÃPg#e(/QÔ,
+C•ãѧÑF¾¡\¾ AZÁ™ð§ÛC`UüìªÁøh:zÙüŸ›Ì_uµŸš(Ízêðy£HÀ´‡]"¡É0ƒî ý :…żR½ôuÜ"†îÔ%÷R—*—›F
+¥·EœLÿ (Px$"æBEZ{¦¦ƒË+ÝâÃóˆ3é]ô)Ýú‘ãjCFºÞ~ žR§Q ž¤Å˜ÌµÕ¶K;‘–à̹"
+×
+«^ÏTéºS¥“>K•zwªô? U>ÚŽ3%`»Öáö©Ò[×*éÇ@—‡kØ1ÒµÈR¥Î;Æ>-#:Wý[FYnñ¯µeô{ß;
+endstream
+endobj
+1583 0 obj <<
+/Type /Page
+/Contents 1584 0 R
+/Resources 1582 0 R
+/MediaBox [0 0 612 792]
+/Parent 1553 0 R
+>> endobj
+1585 0 obj <<
+/D [1583 0 R /FitH 686.127]
+>> endobj
+1586 0 obj <<
+/D [1583 0 R /FitH 668.127]
+>> endobj
+1587 0 obj <<
+/D [1583 0 R /FitH 653.672]
+>> endobj
+1588 0 obj <<
+/D [1583 0 R /FitH 639.715]
+>> endobj
+1589 0 obj <<
+/D [1583 0 R /FitH 614.356]
+>> endobj
+1590 0 obj <<
+/D [1583 0 R /FitH 493.416]
+>> endobj
+1591 0 obj <<
+/D [1583 0 R /FitH 480.455]
+>> endobj
+1592 0 obj <<
+/D [1583 0 R /FitH 431.186]
+>> endobj
+1593 0 obj <<
+/D [1583 0 R /FitH 342.923]
+>> endobj
+1594 0 obj <<
+/D [1583 0 R /FitH 256.21]
+>> endobj
+1595 0 obj <<
+/D [1583 0 R /FitH 243.249]
+>> endobj
+1596 0 obj <<
+/D [1583 0 R /FitH 193.98]
+>> endobj
+1597 0 obj <<
+/D [1583 0 R /FitH 167.514]
+>> endobj
+1598 0 obj <<
+/D [1583 0 R /FitH 141.602]
+>> endobj
+1582 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F11 573 0 R /F10 668 0 R /F1 667 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1603 0 obj <<
+/Length 2651
+/Filter /FlateDecode
+>>
+stream
+xÚí]sÛ¸ñÝ¿‚ôL„Ã7ˆô)—8—tâäšè2½ñå–h›IÌ‘RÜô×w J$EÉnì›Ìtú`î.û '× O~9ùyzòÓË,ñÌ[i“éU",gÖºÄf– é’é<¹H]vúiú÷Ÿ^:Õ]é9SÞš°æù«g¿NÏÞŸN”R©c§ç²ôåûgçgzqöüÝ‹3ÄsÂ#ñ¶ís0R2£t2‘€ŠÐŸ±Þ§ÉÅÄpž>kšòzEÌißA¢-ÓV·¼<{>ý@˺¤´gÖ™vÕÅ«OÄj¾š T†YïÿK”o"ÊõM~=56Í›b„ÂDXË|;‚ycîAi»Å‹Ÿšd > ¸4“ÎÒª•eyL×7Ï>L%qÙV¶—ˆ"d\$çZr_ï Qõ¨é!µ?¸áçÿI"¢«ƒ&cf«‚Ó2ÛÙï§i0?ÑÚ¦Ó›²!"mÛeÂt˜¨®vó@7
+‡dmÿ°–Õº¬ÂÎ YZÌÖUc›Î‹Yô³t~*RÀ* ^ÕÕ’z‘¸Iy³¦^ûM/6Ëœð]šÍÎN¥K?Ó‚2’¯EQ^yŸÉªž5Z¨ €¢š ¥t‰H6HGùâÇ9nâ[ƒ0Á&Ó‚ùšÚE‘7±[­Š'Ð32mÊÕ,®[泺ŠßïØÍÒÏM·¨¡·åú†TnU‘Àƒ
+&²­]D_Ï;+$sv»`yYîã
+‹çf ÉéЄcàÒ÷Í`v3,šíê÷_n#,ÅÀ¢ixÌx#5Ë2õ #ÌH0YH(¢6Ž”sÒ<I.Nè>ÉJàÙ=:<”àƒ“¾;59œ 8Î4Wwdn,8˜ í’¡¡š:˜îå:]b5!µP»9qœÜ±ÌJ1cÕ÷¥VC£Î ¸™}«žßǪrãVqæµûAÁÍÇàæ]ªhx4¸9Æ1B¨™äŒë,¤^³kå˜õ#PÔ×+ߧˆšÕF6Øz¾­Â@WˆS»~ð8¬fXâñ=Zv·Ùî)"TL MûzXüDyï袕fc\‘ÊD7Õºyá óÂÝÇÍ¿(:)–S -!ÂB 2 ‘†LgÚLûÝLÇ»LG!
+È0"Èï”0ÇLI´%àÌÛ¯G¾Ô½Ì(ùŽ\^—˜S=JJ¤˜ W2þÿ±æp¬ Rø}‡êÝe醈¥ ŒXºµLkóc"²…¶Ž­yŠíÁâUyͼӉ‚â&ƒšêû-]yºCL¶U¾ƒµ”–L‚­?œ,™Inúd±l~BûO©}ý¶­¨ Ú9¡úAgúþYtÛtsgÑ/½€<ä§3¼8û~þ%@&'ÅŽý2Ãcç,8©öÞ1t‚†+ãÁ–èªhäRìßE]íi?7Œ«í¿>¤ø¯Ç"š´ÌJñ£ô<‹zîÒUµ&€£waî ògx#hyˆ’òAÊaΚ€IHu$ׂÀŠû|8IŒ¬ÎØ>É—ÐÞýö>j
+¼ÕŠzWfjêy¸»‰6ÁÁ…[ÝfýËÄá ÚÈ ͜ߺ¼ÑÁÙÄmŒ—~¨¨Dõw”û4¬kñ÷N|ör ÝFÈû–’#Ï’i#ïu·¯ïRø옴2f¤p‡rØ#Å® ¹ø÷ÆËá³ä÷,Ãœ²q«£Ãúø«Â¯\ú¼Z~É×åe¹(קJ¦ßFŽ‡«'"ÁßV‹¢i(Få‹vtzUmjÑ.Â.»›§ ñ£rE-]QaÆGꄰʆé¼.hr§ßOâ%}ä¬ZííQC^P¬¶_Ö45§qÑÐ0¸\Ù È6 عSÆá!äà448UÍ„{C‚ÜFƒ¡H(ê¼;â0°È$$
+‚ÅWᣌ ó#$´ÍÃÊl7¿·u€Ý䑪{8<©Àà‹¢L¾ºòt¾}ìÁ.¡wüײÚ44ºªóeœ $Çmy‚^°ý›º
+§ãr‡¸Ìãã‚<v¶P8Xäõu±ø6v[ ^¾ªÛ w¢%:XPµrÙ*TxBŒŠ?Hš5F¢ %mXFZO†>¡üƒ =‹ŒáD¸²(ñŸ›2DhPAòF†ÄC4‡Äáöi $¾€H±ÌfG<‚DB>E=l]íz‰p|ôƒáÞ+]8þ(CtÂä(¤ýjð.Ò  X¢e>”õØîÔ
+C3¤³ƒm:ÿstc|(8D^ {Gÿ‰ÕÎî<)ýO Dð_C°
+endstream
+endobj
+1602 0 obj <<
+/Type /Page
+/Contents 1603 0 R
+/Resources 1601 0 R
+/MediaBox [0 0 612 792]
+/Parent 1553 0 R
+/Annots [ 1599 0 R 1600 0 R ]
+>> endobj
+1599 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [297.073 540.286 319.544 549.197]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.5.1) >>
+>> endobj
+1600 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [361.974 402.894 384.445 413.742]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.5.1) >>
+>> endobj
+1604 0 obj <<
+/D [1602 0 R /FitH 686.127]
+>> endobj
+1605 0 obj <<
+/D [1602 0 R /FitH 668.127]
+>> endobj
+1606 0 obj <<
+/D [1602 0 R /FitH 641.397]
+>> endobj
+1607 0 obj <<
+/D [1602 0 R /FitH 627.674]
+>> endobj
+1608 0 obj <<
+/D [1602 0 R /FitH 579.469]
+>> endobj
+1609 0 obj <<
+/D [1602 0 R /FitH 538.96]
+>> endobj
+1610 0 obj <<
+/D [1602 0 R /FitH 517.55]
+>> endobj
+1611 0 obj <<
+/D [1602 0 R /FitH 503.273]
+>> endobj
+1612 0 obj <<
+/D [1602 0 R /FitH 489.55]
+>> endobj
+1613 0 obj <<
+/D [1602 0 R /FitH 474.72]
+>> endobj
+1614 0 obj <<
+/D [1602 0 R /FitH 446.167]
+>> endobj
+1615 0 obj <<
+/D [1602 0 R /FitH 427.247]
+>> endobj
+1616 0 obj <<
+/D [1602 0 R /FitH 401.569]
+>> endobj
+1617 0 obj <<
+/D [1602 0 R /FitH 387.292]
+>> endobj
+1618 0 obj <<
+/D [1602 0 R /FitH 372.462]
+>> endobj
+1619 0 obj <<
+/D [1602 0 R /FitH 343.909]
+>> endobj
+1620 0 obj <<
+/D [1602 0 R /FitH 315.524]
+>> endobj
+1621 0 obj <<
+/D [1602 0 R /FitH 285.721]
+>> endobj
+1601 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F11 573 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1624 0 obj <<
+/Length 1854
+/Filter /FlateDecode
+>>
+stream
+xÚ­XKsÛ6¾ûWðHÍT(Þ^:qâvÜz’I­é%éa‹‰RH*Ióë» €²(QŠÝä"â±XìóÛ…höÑì÷‹ËÙÅÏ¿‘9â4×Ùì>cT«]¦­&Œ›lVfïrC4™L±ùåÍ›—No®þ¾º™ü3ûÓ½ÃΡ€q8ôö:Q Øk"ÌŽäÕÕË7¯®"™Ý£âÌÊeOf’\Ð$ôÏ¿I›1I„Ô©§Bb¤Ë¦Ü
+ç8ت7Õ¦«Ö5Ü*d^Ô%DÞø¶kª9î´§í ¬$TÙA:{Þ—ì˜N´pÉ—·Çq¨ÁêÖôŽ¾®ÑBðÍd*™ä¹€ã\©üõ: t>[ 9É»uW,ã0Û®ð÷.Z·‰ëûø½Ã
+…:g Î‘±Nb9ËòËCv°0×JÿX/ã­ï†R¥úMF’!õ®zò ‰Ü©Ž ZAì ü—8DYðÛÅ=‘Ï·MÓ[¢‡ $æhÏ'vl¡÷p§º…¤tSúfLÕ)ƒNWh5<>
+8çT¶ ò‰¾j”_-_âlï k'^/ç›íÜàí®ß®¿sYµèpªÆï³Ð.mM¦LQ¸O ³³1l=„‘¬{3ï¶[T‰â±wÏ`.á¥!Äw¾¸àÉÅŒCM
+¥ÿ¸-b0U_C"÷"…Á Üy™Ššâäðm˜"ý çUª³ —ÁóáêÅz‡³ÃzÍ»Ê_½Œ›çØËe€q¤ÄA‹Uc¤–*ŒûFTSwÜÿ|5`Û:]Dèú9Êõ ÖUÃTD)ß 1K›{ßøzŽ¹!Yþ¹
+ £s‘VÑøÝ4¾Œ…ç4_ùØ-uÕ®~Â5žž2Á¤x$ЫgB:"ÿžùž}9†ìåzUT5IšÈ!§¯$>LCžÁ·˜w[pöT[VТMî hZÆ»ô’ GêÄ"
+e¨,E›–@„èV¯ëY m’ıGþº¹šö: ÿ
+=Óªh?àDÅP‡ïq¯TÆxpª¬>U¥OkAlduôç²| X¤ÅÉç€*qáü¸'0èˆX·‰W·(ºHP8âËT†]hh|øß ñbDðoÁ£c%F°„24 \ÀCƒ³þõ6£Ø C,$g4‚8q~Àû¾Y¯âþ²èÂÿ0 2ú¨^H÷_(öÿ럕ê
+endstream
+endobj
+1623 0 obj <<
+/Type /Page
+/Contents 1624 0 R
+/Resources 1622 0 R
+/MediaBox [0 0 612 792]
+/Parent 1553 0 R
+>> endobj
+1625 0 obj <<
+/D [1623 0 R /FitH 686.127]
+>> endobj
+274 0 obj <<
+/D [1623 0 R /FitH 668.127]
+>> endobj
+1627 0 obj <<
+/D [1623 0 R /FitH 645.509]
+>> endobj
+1628 0 obj <<
+/D [1623 0 R /FitH 612.433]
+>> endobj
+1629 0 obj <<
+/D [1623 0 R /FitH 492.823]
+>> endobj
+1630 0 obj <<
+/D [1623 0 R /FitH 456.958]
+>> endobj
+1631 0 obj <<
+/D [1623 0 R /FitH 385.169]
+>> endobj
+1632 0 obj <<
+/D [1623 0 R /FitH 349.303]
+>> endobj
+1622 0 obj <<
+/Font << /F73 507 0 R /F70 508 0 R /F8 458 0 R /F48 455 0 R /F89 1626 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1636 0 obj <<
+/Length 1405
+/Filter /FlateDecode
+>>
+stream
+xÚÍXKsã6 ¾çWø(ÏT\>E±·<œ6i»›xzIö ÛŠ­©-9’¼þú$%Y¶lO¦i/1 |ø
+gv’ÌÇ<VhDÕnV¥o»4GYí o“ªr_³1 ü°L«ºÌæuºpJuáäõ*u‚Ù$`ÄZÿ³rÂ,o´ÀRê·LçEî­,Ëb·%½;Œ'Lã¡1Ìû‹è<‡ŠÒà~‹ (ÁAÚÝ f_ÆJÉvÝá¶LÅ«w9ÝsQlˆhü=ËœB/xŒhÝj¼–ÅÆ™§îÇ:~_¨ò•foµÔ„Ó¬þíæÉé0¹§ÃèðFç…Rz|
+C”jÍ0ØŒý€ûê
+…â
+¥û
+7ÃÀŽR«`Wµ:Â8Øb0¸æ0gÁëCi?i;±ÒÐF–Å„[Z¸zZªæeæ‘å&¶8>xJçuVX*¾bp':*—#7x´÷C%(â ¨íðîà¸PB$¦+Ä *–éê­/Ê^f¯€[®³ªv"L;üui§1í´-½¨f“Å~ÞUéXb¸ Ø#¾ãð†NÜÀª‘cÕ£Šh¡ßA¦ ›¯²å*-¤€:¹<Ðü€Ú!ãý!ã*Mp‘Gµá¡$‰äYÒDvUÒUÜ€:«œñÉ
+¡8qt¡Oˆ€7ÙùÁ(D©ß(¸}-jç
+qŠFC.a=œ£í³tÊþ1É6Ê|»¹Ïœâsj@EGP˜3þçQgx >î32̘›ñÜv=Ôsf
+'l7I³Ö·ŒÅÖ}°h´šþÅãįt»bífº€*î·úºÊ<ÙámhŸÍ¾âêb·^¸çHV§eRû·ÉÐë…V^èÔ5<):ö5Km`6OÝšwë7,KéÂ614¶É®ü¢Ü¿0g.Ù`””þ¼eÓ¯$ع4/Â|±÷n¼
+endstream
+endobj
+1635 0 obj <<
+/Type /Page
+/Contents 1636 0 R
+/Resources 1634 0 R
+/MediaBox [0 0 612 792]
+/Parent 1553 0 R
+/Annots [ 1633 0 R ]
+>> endobj
+1633 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [286.072 553.612 308.544 564.46]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.2.1) >>
+>> endobj
+1637 0 obj <<
+/D [1635 0 R /FitH 686.127]
+>> endobj
+1638 0 obj <<
+/D [1635 0 R /FitH 650.25]
+>> endobj
+1639 0 obj <<
+/D [1635 0 R /FitH 629.771]
+>> endobj
+1640 0 obj <<
+/D [1635 0 R /FitH 607.853]
+>> endobj
+1641 0 obj <<
+/D [1635 0 R /FitH 579.958]
+>> endobj
+1642 0 obj <<
+/D [1635 0 R /FitH 540.661]
+>> endobj
+1643 0 obj <<
+/D [1635 0 R /FitH 510.219]
+>> endobj
+1644 0 obj <<
+/D [1635 0 R /FitH 472.368]
+>> endobj
+1634 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F70 508 0 R /F49 457 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1647 0 obj <<
+/Length 804
+/Filter /FlateDecode
+>>
+stream
+xÚ­™MO1†ïù>îÖ±½»G ý T5âøU% mõï×ÉnB¶lðŒêSeÖó>óz<Q ê»õq²7›¼û@VE½ñjv«¼>*¼FCjv£Î*Ò^× Q¨öŽŽ÷¿4GÓÓéQ}1;LÃÖÃ1jÛ¦…W|î#Ë{mir0Ý?>˜vaa+Ê`Ð`Ü:,à2d½è]¯ÓÙä×Ó[P˜‘†”GУº¾Ÿœ]€ºI_*ÐIýY…Þ+c¬6´Ìv§¾MNº¢lËA²|«<€vÖw¢>=ŸÚûˇº±ÖVû‹º1¡º™× €ê´¶º¼{^f‡/IGIÚètî_ÃÛ$éók”6Xí(v(W
+endstream
+endobj
+1646 0 obj <<
+/Type /Page
+/Contents 1647 0 R
+/Resources 1645 0 R
+/MediaBox [0 0 612 792]
+/Parent 1649 0 R
+>> endobj
+1648 0 obj <<
+/D [1646 0 R /FitH 686.127]
+>> endobj
+647 0 obj <<
+/D [1646 0 R /FitH 190.884]
+>> endobj
+1645 0 obj <<
+/Font << /F73 507 0 R /F70 508 0 R /F8 458 0 R /F74 666 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1652 0 obj <<
+/Length 120
+/Filter /FlateDecode
+>>
+stream
+xÚ]»
+Ã0 Ew…F{ˆ¢X ÙcšÈ)…Ò´•n¥ýÿ?ès(™.ç<€` ;}+P±Jð; B(¢ EpÈ
+~ƒK,9]ýÐ7å³rÕWæãLûñ춦Ž™£bêTKlëx´/šm:Íöîúo×<<ï Ž
+endstream
+endobj
+1651 0 obj <<
+/Type /Page
+/Contents 1652 0 R
+/Resources 1650 0 R
+/MediaBox [0 0 612 792]
+/Parent 1649 0 R
+>> endobj
+1653 0 obj <<
+/D [1651 0 R /FitH 686.127]
+>> endobj
+1650 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1659 0 obj <<
+/Length 2052
+/Filter /FlateDecode
+>>
+stream
+xÚ­XK“ÛÈ ¾ëWðHUE4ûÝÌ%eg6“T+]Rö(‰#1–D-IÙ»þõÁ£I‘ÎÚãÊ…ì àCèN£m”F¿ÌÞ-go²$³ÒF˧H¤6ñ6‹¬·‰.Zn¢±K\2_8çã÷7ËùB)ß|¸½»»¿¹¿}X>Î]þãÍpŠÄé ö õ^!É, »¾¹Ó>:QÚJ¤^tä 逅ê7/„&lêL|SÁ_ÄŧTØuYçÐi›çÛ§ÀI$^
+æ´Ü°ÎÊø·s~œK·å·bÃCÌkà-ý€7t€7Ì©8¯ƒMÈ6ÝúòûƒÛ‡üsyÜrÛj^zÊ›¦hx¬ÝÕÕy»ë:
+Ž²
+‘dÆ°¬û²iç mL\=ñ¸#öW{X£„Ÿ›¿À¨êcÁÓOUÍ"_£l;îµÕg¤½¨[7Åï]“ÿßÊíâ[¾ ›×›¢̽H㻹×qÇŦÆû›)ñûmP.éì~ÅJm}ü÷3XX
+ÿ³Ûåì· …èï;Z¤p‰Ö‡ÙÇ_Óhs
+?Bg!i)Ç~ñ)5éªlø“SGÊÃÅÆECšÇr{,6 Ê,+5ëº<^ÓÙ馭KB²yÙge®-¡3ÿç–aÑór)…\Îþyûð<[Èl¢OÀ÷ì–Åc²±ZƬu
+!Pü_†ðrC½—°É„{†ÐCpLâ/…ŸÒTNÅ4éùÐëš±Ã#„]ªß ?¡æ721ÒŒ 5‘Qái“wižú2Çö碙~T©ù®?fÔ#ÉcThûáK>ÜÕ‹)¶ôüÆVPß…UþtÜ7ÝÙ²!î«þq›”T¸Lac€pàJÑã}wÃ= *Õ½4~WÕ»×WÓš’0AšpÊ×b°Dòr­$¬LÒÔ¾ºlœ,–„’‰P¡nüpn_,`»òºûƒhÿÁrØ3
+endstream
+endobj
+1658 0 obj <<
+/Type /Page
+/Contents 1659 0 R
+/Resources 1657 0 R
+/MediaBox [0 0 612 792]
+/Parent 1649 0 R
+/Annots [ 1654 0 R 1655 0 R 1656 0 R ]
+>> endobj
+1654 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [207.821 489.948 230.292 500.796]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.7.1) >>
+>> endobj
+1655 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [363.268 489.948 385.739 500.796]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.7.2) >>
+>> endobj
+1656 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [426.338 477.993 448.809 488.841]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.7.3) >>
+>> endobj
+1660 0 obj <<
+/D [1658 0 R /FitH 686.127]
+>> endobj
+278 0 obj <<
+/D [1658 0 R /FitH 668.127]
+>> endobj
+282 0 obj <<
+/D [1658 0 R /FitH 465.048]
+>> endobj
+1661 0 obj <<
+/D [1658 0 R /FitH 446.604]
+>> endobj
+1662 0 obj <<
+/D [1658 0 R /FitH 410.738]
+>> endobj
+1663 0 obj <<
+/D [1658 0 R /FitH 144.766]
+>> endobj
+1657 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F48 455 0 R /F70 508 0 R /F11 573 0 R /F49 457 0 R /F14 574 0 R /F83 1265 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1668 0 obj <<
+/Length 1956
+/Filter /FlateDecode
+>>
+stream
+xÚ­XKsÛ8¾ûWðHUEâAÈe+Žå™Lí$»±jª¶’9Ð",s#‘ %Mœüúý
+Æ…N–Uò!5jöÇòן.µ<¦´“VãOóú—WÿZ.ÞÏæRÊT³Ù\k“^¾õÛ"l],^¿»XÐ;gYd¾Xž}9ã˜f ¿g\h¦…MVÛ³dI…Ã_“ŒipúêI·‰T’iN7ÉÕÙ¿'”Ðo%E®™PEïm¹uDh›.gB§ß>ÏæüWéUýÝ‘p Ï ³Ò&sΙÍópùc–g×õ~‡‘{*i˜uŽi®êuãªÌæ\«,½p»UWÞ×mô/›Š&*íÜnßÕ+:ÙysL›AZ¦å3(kž6ƒ²œi’B‚œË7WÁ›Çƒ¥8,}ù¦™ “îÝÚu^ÛllW]WÁ7ˆ@)t>2…†iE^¤o[?ÉÓWM`9’ÎdL˜çÛó ±„dÊðždî6në‚l³¹²"-½$pfX¶7aÜßÎxÜ9Wœzsuèºá™ÂÚtß~¢öü²n*wGS“Þ´]ØsåŠHn§ìq½!=Mê)>± Uç"C:Ù9^¿[\^>æŒ!±Ä$@.=Ï)œVœÂ ÉAñŸ™Q©ÛÅÕ´kÓ÷v\ÃÕØ7æÞ}³L<ÔÄ0ž«ž¤P`©$9 îéý&Tð|9”AI$cݧ™*äXÕ‹×K¤’.ÒU°»û˜ñbU.¥£?gˆ¿rs =ií)u©OYL92ämÝ„´ý^¯çßËuØl»Êuÿ¿£ïÎÿÒÍÇîçV‘EÌž˜FEº¼E¹Ò™F Ù–uS7ë°Ü¸f˜÷s²%ûÛXÏ”eY.žÈ
+ã‚Î õûÌÂe]]^o¼×¥‡«^>.‹2¨kJþV¨_*O”ÖÌŒ°\TÄ
+Xçs5ò"u€ dJ®-¤âù)Z( X> 0F‰d{.`èl0”"'›˜ÿ}»x‰óI¼
+ü‹,ݶ۲CI•y0+mRð“!Ãi³|Öu×õŸƒBy°;m/gUYéu juë$LÞÿ|–|ðä=ƨ¿ƒhès¡d‹ÛFm·/‡ò㥤Zæ >Wˆ<u⺖ÊNa|f^bCU®¤'LtÒAv,‹p^E„Ø „IYU®lÂF ‘;{†ÁzôŽ;>ºˆ*Ž€4¹Gšh>3®·áHïoÛÃ…ZåÆ[—Ƶk\Wnh½öasÂMæm³ùf×} ¢ÕÆpÉcmA¦]¼sß¡:ågRÄ“H»i©Ä
+µÑ0û
+žèr„Ÿ”¹#y±÷;6ŠêÓqœëV°L‰”È”ü'r] ÿµZ=‘ëÖ0e"EÁ R"tãºó»OOïNµwq·G+èÎBýnïïñÞ?}×0)½b²`CÊ_*!
+09ˆº›RÇ㦉êK›¥¿
+endstream
+endobj
+1667 0 obj <<
+/Type /Page
+/Contents 1668 0 R
+/Resources 1666 0 R
+/MediaBox [0 0 612 792]
+/Parent 1649 0 R
+/Annots [ 1664 0 R 1665 0 R ]
+>> endobj
+1664 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [391.072 396.853 410.776 407.701]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.33) >>
+>> endobj
+1665 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [329.909 153.114 352.38 163.962]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.2.1) >>
+>> endobj
+1669 0 obj <<
+/D [1667 0 R /FitH 686.127]
+>> endobj
+1670 0 obj <<
+/D [1667 0 R /FitH 668.127]
+>> endobj
+1671 0 obj <<
+/D [1667 0 R /FitH 524.607]
+>> endobj
+1672 0 obj <<
+/D [1667 0 R /FitH 488.742]
+>> endobj
+648 0 obj <<
+/D [1667 0 R /FitH 216.171]
+>> endobj
+1666 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F14 574 0 R /F70 508 0 R /F11 573 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1675 0 obj <<
+/Length 1605
+/Filter /FlateDecode
+>>
+stream
+xÚíYKsÛ6¾ûWèHMC {k»ãvwµ;J‚,Ö©!©$ίï R¤DÙqv§Ó‹,Åî·ìÂtt3¢£ŸO^MN^žk1JH¢¸M#F‰U2R±"ŒëÑd>º
+4Ñdj¯O'ãPœ^žŸ_œ^œ½™¼¿›üòò<îpDG œáöÇÒ.9¡þÔQØ|¹†=WUu±‡<QAZÛ_ÔKƒ“Ï‘R,ü
+œÎŠUQ"e³Jó1 ü††ê×ÕÅí˜ÇÀ©Y>7A£Hð`‚gÈ Üæ8øíÏ·“¸pYØmÜÞ÷c®SÂA…“t}BÆH"%ê`%·ðØ󅈂)ð]‹¢4Hp*ÙN%·t±÷eQ¦kCúˆ1N˜Ö€#\0<‹í­¹
+%¥ÁÅÍèîìÁ9Q‰hÌ1¹üõìÍ¡Ñ"I„fÍ¢¬Biè /­ªì&à-)‘¢å}vùjÐ`غC«éû±”AºÚúé¾B!“œH¥`åæƒZ_ÏòCV™È*BA3¢eòE(°§Ca_ÁSF”à=ij ÀŸq?
+>¢gAü¸ï§”–D= ]SISøÆ$üä>úSD”‡Ó̧ŽmnÁ5þ{–ÛäS›À…¥ßT (Ä”Í`O‰Ú¥åƒpK¨k!–DAصzLéñÓ=Ž
+ÈÏp«ø¸[ÅDHñˆ q¸úŽ åüA—Ò*ê!ËDðÉ”…ÍL¯¹ÀpšÉÇp¯ ä ÃÀ¼]Û¿vt>%~p
+ãÐt9òܙIJY!af·ÜzShÚ5E¤ILÛŸþ}(!0À5½vªÚ:¦Ë¦C‚:¬˜Š•-ÿÉÅ
+§yQã`[¹½IRmpå,KWHiJ™rSš: ÝsbØÈл묰wŠöw°Ž\¤±>W&¿©—H
+²­S«ø*ÌmmÀ™WØ×X¾ð°õ‰æ[7PÁÚ&W¸YóÅÞ7ö7ÅŸe
+‡;ÎHͲ¹A‘’å~ßÒ3p/»igOû¥‡Ngmå'eV×î9Y+åûœIópèqؚџGÀÖF¥µ—î™Yïž™cÿÌÌ!¸Wb†·µ;nEw„A¶Þ¬ÌÚk˜Zî~Xg`mTÛNÑ+aPšMé LgÆ3©‡D]¤Y½\lW«»1ø{*—Ý¢$
+¦)Ö{K9¯<ë†äö»j€®¢§;û»sW„—¶žbÍ Ë‰ äp)²9’²Úó4ݸZÝù Õ N…oÖEUcžuOíH¬²O¦êÔ™Ø_øi3X´R§ùØ|M$ŽöJbÿlºNo³üÆŽmw“›iygÑm[<Bɹ 1êþO¢;ÿŒáp>Ç9u•|`®)S³ <&.Èd0'QPÜZŠÉ‘ôÚù4æCw·E ÚO¹È7[Ë dÚ¤%ÈSU¿Ïk~Ï&'ÿ
+endstream
+endobj
+1674 0 obj <<
+/Type /Page
+/Contents 1675 0 R
+/Resources 1673 0 R
+/MediaBox [0 0 612 792]
+/Parent 1649 0 R
+>> endobj
+1676 0 obj <<
+/D [1674 0 R /FitH 686.127]
+>> endobj
+1677 0 obj <<
+/D [1674 0 R /FitH 640.781]
+>> endobj
+1678 0 obj <<
+/D [1674 0 R /FitH 619.194]
+>> endobj
+1679 0 obj <<
+/D [1674 0 R /FitH 599.543]
+>> endobj
+1680 0 obj <<
+/D [1674 0 R /FitH 579.893]
+>> endobj
+1681 0 obj <<
+/D [1674 0 R /FitH 558.25]
+>> endobj
+1682 0 obj <<
+/D [1674 0 R /FitH 542.031]
+>> endobj
+1683 0 obj <<
+/D [1674 0 R /FitH 524.373]
+>> endobj
+1684 0 obj <<
+/D [1674 0 R /FitH 503.283]
+>> endobj
+1685 0 obj <<
+/D [1674 0 R /FitH 487.065]
+>> endobj
+1686 0 obj <<
+/D [1674 0 R /FitH 469.407]
+>> endobj
+1687 0 obj <<
+/D [1674 0 R /FitH 448.317]
+>> endobj
+1688 0 obj <<
+/D [1674 0 R /FitH 432.098]
+>> endobj
+1689 0 obj <<
+/D [1674 0 R /FitH 414.44]
+>> endobj
+1690 0 obj <<
+/D [1674 0 R /FitH 393.351]
+>> endobj
+1691 0 obj <<
+/D [1674 0 R /FitH 377.132]
+>> endobj
+1692 0 obj <<
+/D [1674 0 R /FitH 347.519]
+>> endobj
+1693 0 obj <<
+/D [1674 0 R /FitH 327.868]
+>> endobj
+1694 0 obj <<
+/D [1674 0 R /FitH 308.218]
+>> endobj
+1695 0 obj <<
+/D [1674 0 R /FitH 288.568]
+>> endobj
+1696 0 obj <<
+/D [1674 0 R /FitH 258.942]
+>> endobj
+286 0 obj <<
+/D [1674 0 R /FitH 173.942]
+>> endobj
+1697 0 obj <<
+/D [1674 0 R /FitH 155.498]
+>> endobj
+1673 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F70 508 0 R /F83 1265 0 R /F14 574 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1700 0 obj <<
+/Length 1491
+/Filter /FlateDecode
+>>
+stream
+xÚÅXMsÛ6½ëWðHˆà`.Å–]§ÝÚšÎtâh‰VØÈ¢CQiã_ß]€”H‰’£8žð)ûÞbßi0 hp>x3¼:³ABÍu0¾˜¦Dkh« ã&Oƒ÷¡ÕчñÛWgF´w&”ˆÄÀcÜž“Ÿ‡¿G×Q,„ ‰bclxv=|7òS§£“«Ó>g@ë—ƃÏ]°Í‹µ!†'Áäaðþ ¦°ø6 ÄÀ›þv[!1 8n¿÷a<+ÐÊ.µ?ßeúÁI¸IÂqÄMøõ1Š¡qsL†7ùS†‡ µ$I3F¥üo©¢wyµ„–¹] è´÷Üä³E6ý)Š™‘4<Í–“2¬òbáãOSìÈ°Ì–U™Opeéàè‡A$Ĉdbà “2m ¹%pÎñÕ/£KÏg3ÀŠV5›‹ˆÛ°ÊfYÅJK*€‹+^®£ÂñGÄ:Uñ 7g ?¼ƒuå‹™O³IᦦÙÒB1
+?Í—l™ªxì|ÚjYy¸îÖ4Á ¯Á¬Ü»¡S¦‹Y½f|L
+Ý*ƒ‹*û®ûÙÊ¡Rc[ú…âÞ·wsð·|ZúI´é~ ïK¸½!r
+·;ÄñÅQ!âkiý„úË2Å _Ý"TmTÐÞ`¶ñ.zŽg»~g/ò\iY³%ÎæÙCæÏÅ2áaêNUÀIl« }ˆ%#ë2Po²*Ëõct’´S‡ùbšýƒ]Þ¥ŸËRGËÇ5¢]â0±UŽN®FggûÈXg;?…@ÞGŠê%…ÈNac˜¥ vüYfËzÔO 'fƒûš&»ÜØ }·”òÝH,aJ6[´„WJ¤= o\zÞpåó*õABŸÖô"µè†zz2†KatXW¤ì–2=É×”âÒ—ò/¯0N;"…QžHó-DúÒäk• ŸòYü”ÎüdQN³²&ÚŠg‰¾ËŸ#yoQQÍ%Ò¾¨H¦šüÄ®Ëxh«f­“Û8±Ón©/ES“7Uþ»B­Ž 5©?Rw˜:ãhEÅh‰”# ûåWš„€nkBzÔž¥8±¦FëjU=®ðLV„)à*+—¯œ´[ióB?÷IŠ@2K¨•C^ëC¢(9‰!âÉŽ!’`ˆà2å‰$¨¹2öÇx"a‘a~@Ú4d)ãÏI›zNÚÔ1ÒDQ©¾[Ú8¸›–´áЕHhÛÒÞ’É-uïÞ#Û7‡¹£ ²ƒ…XBŒð•—^*qL¦U·ª\îÓ¸ÿƒ+ˆ’ò»Y±,i³b™EV¼JI¢¡Âu+¡/É0° +7Je|†åbµ©× 0ÿíBõ t<ã8ºlüGŽað®Ãìå'Ù¸ü=®C ?:è:…hLÛv…
+2Íž€lqÆVÐvÄžH¨ñŠËmIC7+¡¼óÀÎç¡DÇyô€æéµjsÛÜhÛyà*2¶k烢Œû,y£Ñý—@ ®ÌÑAîAYÿÚ?¢b-óônîŒмZfÓ:·“pÃ^¦ƒ®Ê+èØTÛÖAx¬uØ~ô$aM
+ö|0€Ä™g‹h¼·Þ÷Ï$]„ÝÊSVu­0ûj%0´• [¨úk·`BŽ1Öÿ£ÿ¸ÃE‡*ý«ôäŒãÇ£¾ 6_›ö_²
+endstream
+endobj
+1699 0 obj <<
+/Type /Page
+/Contents 1700 0 R
+/Resources 1698 0 R
+/MediaBox [0 0 612 792]
+/Parent 1649 0 R
+>> endobj
+1701 0 obj <<
+/D [1699 0 R /FitH 686.127]
+>> endobj
+1702 0 obj <<
+/D [1699 0 R /FitH 668.127]
+>> endobj
+1703 0 obj <<
+/D [1699 0 R /FitH 464.831]
+>> endobj
+1704 0 obj <<
+/D [1699 0 R /FitH 428.966]
+>> endobj
+1705 0 obj <<
+/D [1699 0 R /FitH 261.535]
+>> endobj
+1706 0 obj <<
+/D [1699 0 R /FitH 225.67]
+>> endobj
+1698 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F11 573 0 R /F14 574 0 R /F83 1265 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1711 0 obj <<
+/Length 1824
+/Filter /FlateDecode
+>>
+stream
+xÚÅYÝsÛ6 Ï_¡Gù®fùMªokšìãnémñ¶»¥}PlÅÖÕ¶2Inšüõ Ê–eÙY<g{1)$€A
+‹%¶xFÐɾ¥ã»ól9­gžPàa¶ X9iØ m±Ž~U¹£Ë&øåÁ
+O}POxò“ò4=w^-ù±þ¨Ñ!Ñ„ÊŽëf6è NªCrb?¨D”'Uîk÷eþÄËÔk÷@ŸI¡¼ãhyã6ÕIÕàìÔj}PÆëÓº9sj5´íU#xî"‡¸ç¢O’“¹”äÔz({جºa‡‡Èøq™uÓ“»b™1¤o˜OpþÖeÉ=ÚsÈ7VÏko»1œJI»ÁJIG^œb“`W(XGÜæO'Šl÷ˆl 5/rk‘±¼x7ÖÉFäY™µà­öã+k$‘›Tï%øZN8K:Âvƒ¤
+Â^ú¿
+«²#ï`³cûÀ…üÑÈ£À…¼ŸwíÁtäÕ¼á/øsñ,¾Ú­Å‘Æ ︌n0íuYÔ®Mß3òé»îÙZ "µ>Ò‹$ÿÈX8«ˆJÔ1XZð~ð?mûìwbzŽÏ*¬ÛÛý•¡ûÐ4ÇnmþíÝOÀAs œ ÀIÙ6œ‚vrÕÿ3ðÓd‡²ûˆfRtœž`K)N~)eøÇÏO}'Å~'ù‰w<šþ—Œ0þ¢ÊWSI붻µŸ⟈8œ«á71_€ö ¹Bó;WX–=,¬áUOí:ÔÒÛ¥½ÍS$6ÒýSäœ$,pÆøêê‚o¿À÷æ4ì>·K­~(<¸µ3W·u=|Y€Noýù Œ)_àDªŸ»aïêcèÜ–WœŸî4Àš±‘ rí«ÑÐõru „„B³‘{ß5Üœ
+0r³1>c˜uÖmäkÎ0‡Z#yjIà6ƒácÉÈ«Y±šOÂvȺ¯àS§ë3t5`ÿÂ9}
+ЛÊnS-.š¢2H6Ëðe§¢œWo\_Æi…C¨V>äU(5硽À'ÄÚvV.òPí¾]áËDØ‘†· W˜õ¾Ü•Åm2_â*¥âtžOæM>T.'qŸ”ÝÎuEzí÷í%ø‚–o« .å5$á¡®ìŠù=÷^À…Û¤ªV¤¯¦›¸ÑÞ øã…¥™åÙ:•“ˆ¨ë™ŽýÌÃâf¶Ùd\ %æÈ.¼xÊe Æ*kÊ8Dt3ø§|:|J§xaéý½»þãUtâ‹ÕÁ®&8>OkVÐõfíu6^׳{_¶`Hx÷i ˜0Üã!¯gØëãè;.ð«ˆVÃg
+endstream
+endobj
+1710 0 obj <<
+/Type /Page
+/Contents 1711 0 R
+/Resources 1709 0 R
+/MediaBox [0 0 612 792]
+/Parent 1714 0 R
+/Annots [ 1707 0 R 1708 0 R ]
+>> endobj
+1707 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [399.229 643.276 418.933 654.124]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.38) >>
+>> endobj
+1708 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [332.758 116.695 355.23 128.65]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.9.2) >>
+>> endobj
+1712 0 obj <<
+/D [1710 0 R /FitH 686.127]
+>> endobj
+1713 0 obj <<
+/D [1710 0 R /FitH 573.54]
+>> endobj
+649 0 obj <<
+/D [1710 0 R /FitH 220.797]
+>> endobj
+1709 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F11 573 0 R /F14 574 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1717 0 obj <<
+/Length 930
+/Filter /FlateDecode
+>>
+stream
+xÚí™ISÛ0€ïü
+¡Ú—Þ($”.¤¹“˜àâN–v†_ßgKqâ%a ž)¾ [~yzë'acoìaïdïÓ`ï §=ƒŒ¤ÒÜzDb$¥ò¤–ˆPå FÞ¥¯uçzð堧غ¤Áˆj2™£Ï‡?ÝóNÀóêJi¿w~ø½k§Ž»Gýãnªg»Å‹+D`$¸ôª`’Yµ£h˜tªáâC'àDúádñ³f0öC{?oîÝÌ}úå'¿‚Åo;3O¬ÐCè&ãqðŽíl<ÅÃhfŸŒ§Q8¦©©`f@2BXkæwáĺ#Y:r«îC;ÌÂÛÈ>p& ÃyœLPÁïÌC©8Œ)n¬nRº szkCR«PQŠ¤aËÈú_»gVj=ž\ ¦ÈR(ž¹Ì|,™"äYƒ›iáò}…ᩳè<
+GVW<±®:ßYpÏíåb2‹Ç“hdŸƒ$p!¨6XΘóoݳrh K‹iÅVæÜl2çp–.µÒçÒrÙ©?%s¿pYIUY)J©¿o’ê.ÙQÁªjÆp“½Žf~2µ
+£p˜z|gïÀáLHo—Q…×’½”®ç’5ÿYM'ÁÓ¥Àí4yp"¬Xœó\K\«EÁÕR"±&¥žÕ¨#™íê4$7j? l&CøšHȼ¯0ÆUE*ë'’åºr¨­Ô
+ñãñ!ËÕVà´
+W*·ðú²&‡à&ÛR¨Æyì¯3¾ÔH$t™2«âyñ2ÿ1š&åv!Q)ª…:z¢_ª‘úRœÇhpZFXLêWŒ¢u˹Ë×zµ&ÏÍÞغ5FÔ¡Š(81EvÒZŒ÷ÁÉéßx–nb:ë°®`7æYX×e¬ D1ÜÙ¦_ÂuÙr½åzËõ¹N[®7ÇuÇNÖ×Í˹¾±0¸A’ë¦Z¬ ¢Øb€Äž®¯lžTò ü$Zî¾ù´Í´[3U#/12ÔT16|Nµb“oZg›ÊUpD„zÊAý¿„¿òb0¤*â7‚.‚[ví®ê«XO›XyHÝNfˆªö_K¾7%kÉ×ùD3ä#-ùv>µÑí§¶–]-»Þ»d3ì¢ÛÙ¥Zv½ö©n?µµÿ¯¶ä{'äspQͽæ7”ІŸÔ;akßNÒ×à¥ï'§'¥—’˱;ØûõÕ
+endstream
+endobj
+1716 0 obj <<
+/Type /Page
+/Contents 1717 0 R
+/Resources 1715 0 R
+/MediaBox [0 0 612 792]
+/Parent 1714 0 R
+>> endobj
+1718 0 obj <<
+/D [1716 0 R /FitH 686.127]
+>> endobj
+1719 0 obj <<
+/D [1716 0 R /FitH 640.367]
+>> endobj
+1720 0 obj <<
+/D [1716 0 R /FitH 618.516]
+>> endobj
+1721 0 obj <<
+/D [1716 0 R /FitH 600.153]
+>> endobj
+1722 0 obj <<
+/D [1716 0 R /FitH 584.28]
+>> endobj
+1723 0 obj <<
+/D [1716 0 R /FitH 558.943]
+>> endobj
+1724 0 obj <<
+/D [1716 0 R /FitH 538.587]
+>> endobj
+1725 0 obj <<
+/D [1716 0 R /FitH 517.291]
+>> endobj
+1726 0 obj <<
+/D [1716 0 R /FitH 500.864]
+>> endobj
+1727 0 obj <<
+/D [1716 0 R /FitH 484.992]
+>> endobj
+1728 0 obj <<
+/D [1716 0 R /FitH 459.655]
+>> endobj
+1729 0 obj <<
+/D [1716 0 R /FitH 439.299]
+>> endobj
+1730 0 obj <<
+/D [1716 0 R /FitH 418.002]
+>> endobj
+1731 0 obj <<
+/D [1716 0 R /FitH 401.576]
+>> endobj
+1732 0 obj <<
+/D [1716 0 R /FitH 385.703]
+>> endobj
+1733 0 obj <<
+/D [1716 0 R /FitH 367.838]
+>> endobj
+1734 0 obj <<
+/D [1716 0 R /FitH 346.541]
+>> endobj
+1735 0 obj <<
+/D [1716 0 R /FitH 330.115]
+>> endobj
+1736 0 obj <<
+/D [1716 0 R /FitH 314.242]
+>> endobj
+1737 0 obj <<
+/D [1716 0 R /FitH 296.377]
+>> endobj
+1738 0 obj <<
+/D [1716 0 R /FitH 275.08]
+>> endobj
+1739 0 obj <<
+/D [1716 0 R /FitH 258.654]
+>> endobj
+1740 0 obj <<
+/D [1716 0 R /FitH 242.781]
+>> endobj
+1741 0 obj <<
+/D [1716 0 R /FitH 224.916]
+>> endobj
+1742 0 obj <<
+/D [1716 0 R /FitH 203.619]
+>> endobj
+1743 0 obj <<
+/D [1716 0 R /FitH 187.193]
+>> endobj
+1744 0 obj <<
+/D [1716 0 R /FitH 171.321]
+>> endobj
+1745 0 obj <<
+/D [1716 0 R /FitH 153.455]
+>> endobj
+1746 0 obj <<
+/D [1716 0 R /FitH 132.159]
+>> endobj
+1715 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F70 508 0 R /F83 1265 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1749 0 obj <<
+/Length 731
+/Filter /FlateDecode
+>>
+stream
+xÚí–ËnÛ0E÷þ
+-e´špø²»4µ ·¨$Ú¥Y8â
+(RÀvZ __ÊzXŽäÄNÓ*n,¦†ÃËË9ÂYÀ‚Qï}Ü;’,XÍu_È4mm4 § ¾ ÎB‚~DdÂGq?B„Gǃáp|4LâÓþyüñ`hjQÜ iÝ«ïͦôX±jù "Á ±AÄÉ}+òÙ_˜bî7>
+Î"ÅX8¾Ê×?&Ù› ÓE>ò;™ÿx›¿N‹tv§å²¨í-pe^«M´¤/]V¶šuVL¨ËÄ´)'\¤ÍîªýŸ·…P „*g,[BPÈ«ùΖߒ|×?ûJ‡Óï7I>.`S¬-NYÔÀ­•ýºMÙc{þ+]$÷‰h5HkwÒߧ!= Wß¡¬§oÀº¥X)cÍàT÷xã8× ¸hžÀå¶8ܦ¸bÀYåÇxÜ"7Ðk±Á²wkµ‘Þ¦V[Ó3h†¾“—‡oò6̯X^šß¬¥Oö–^Z`V–ëN¶¹]I@E¯Fþ†×Q€±ä^\ÕáEч]ªLzÕ²#B U­LZ Œ êR”@ùËÉá*7´k3L·™á$™^50W£‹t™Ü\gFIŠÿÓë>7á2™¹cÂp^Î5¢n Å@)ÑôåÀÝs)Õ«qéq×1î¤ÇÇÇÝw¶Ü)»—;åq×1î”ÇÇÝëÅCfwÈþ‚wÚ]­‡áN{ܽ|Üi»Žq§ïÆñ¸ë
+wäq× î°ÜÑ‹ÂÝCR™ç3Ë4>fŒne‚€Œö CqAªˆŽ6,*2‹ª‘²hÅÒµË*BÊVh\ØZ6»TJß´vÅÁìÜ $¾ø'½@û•sö— Ûns3™p6Fýgî>ç®
+endstream
+endobj
+1748 0 obj <<
+/Type /Page
+/Contents 1749 0 R
+/Resources 1747 0 R
+/MediaBox [0 0 612 792]
+/Parent 1714 0 R
+>> endobj
+1750 0 obj <<
+/D [1748 0 R /FitH 686.127]
+>> endobj
+1751 0 obj <<
+/D [1748 0 R /FitH 668.127]
+>> endobj
+1752 0 obj <<
+/D [1748 0 R /FitH 653.633]
+>> endobj
+1753 0 obj <<
+/D [1748 0 R /FitH 637.595]
+>> endobj
+1754 0 obj <<
+/D [1748 0 R /FitH 621.558]
+>> endobj
+1755 0 obj <<
+/D [1748 0 R /FitH 603.479]
+>> endobj
+1756 0 obj <<
+/D [1748 0 R /FitH 581.872]
+>> endobj
+1757 0 obj <<
+/D [1748 0 R /FitH 565.281]
+>> endobj
+1758 0 obj <<
+/D [1748 0 R /FitH 549.244]
+>> endobj
+1759 0 obj <<
+/D [1748 0 R /FitH 533.206]
+>> endobj
+1760 0 obj <<
+/D [1748 0 R /FitH 517.169]
+>> endobj
+1761 0 obj <<
+/D [1748 0 R /FitH 499.09]
+>> endobj
+1762 0 obj <<
+/D [1748 0 R /FitH 477.483]
+>> endobj
+1763 0 obj <<
+/D [1748 0 R /FitH 460.892]
+>> endobj
+1764 0 obj <<
+/D [1748 0 R /FitH 444.855]
+>> endobj
+1765 0 obj <<
+/D [1748 0 R /FitH 428.817]
+>> endobj
+1766 0 obj <<
+/D [1748 0 R /FitH 412.78]
+>> endobj
+1767 0 obj <<
+/D [1748 0 R /FitH 394.701]
+>> endobj
+1768 0 obj <<
+/D [1748 0 R /FitH 373.094]
+>> endobj
+1769 0 obj <<
+/D [1748 0 R /FitH 356.503]
+>> endobj
+1770 0 obj <<
+/D [1748 0 R /FitH 340.466]
+>> endobj
+1771 0 obj <<
+/D [1748 0 R /FitH 324.428]
+>> endobj
+1772 0 obj <<
+/D [1748 0 R /FitH 308.391]
+>> endobj
+1773 0 obj <<
+/D [1748 0 R /FitH 290.312]
+>> endobj
+1774 0 obj <<
+/D [1748 0 R /FitH 268.705]
+>> endobj
+1775 0 obj <<
+/D [1748 0 R /FitH 252.114]
+>> endobj
+1776 0 obj <<
+/D [1748 0 R /FitH 236.076]
+>> endobj
+1777 0 obj <<
+/D [1748 0 R /FitH 220.039]
+>> endobj
+1778 0 obj <<
+/D [1748 0 R /FitH 204.002]
+>> endobj
+1779 0 obj <<
+/D [1748 0 R /FitH 187.964]
+>> endobj
+1780 0 obj <<
+/D [1748 0 R /FitH 171.927]
+>> endobj
+1781 0 obj <<
+/D [1748 0 R /FitH 153.848]
+>> endobj
+1782 0 obj <<
+/D [1748 0 R /FitH 132.241]
+>> endobj
+1747 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F83 1265 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1785 0 obj <<
+/Length 689
+/Filter /FlateDecode
+>>
+stream
+xÚíYMsÚ0½ó+|´§µ¢Õ·z£‰¡i'!“øF9@1Ô3:¤é¯¯Œlc°)´“„BtA¶¼ì>=­Vo$ìM=ìu[ïãÖEGyiA„O< !=¡"½xìõ}ƒAüñ¢#iÕRcDµ4nV6—Úwqt„”R_¢ ”RùûöMd»®¢ËÞU”ùiá<xÑn"A
+k/„®,4įS}™q_[Ó¿g^#ÁJä·»òž3\î :úkùn(©²„kRqÒIؤ0«¬RïStÛXk¨,k{±-€~· ØEÍ6ÁeÙ0<x/†ý{q‚?/jèzÏÚf
+#Îi½.. è3Èñ’²
+œ*x^UÀ*8Îi?Š.€óÖüÔ/¨t§N8]ànÜiÁëÔâ(º€œ÷-‚~]P´QÜú tÌ
+endstream
+endobj
+1784 0 obj <<
+/Type /Page
+/Contents 1785 0 R
+/Resources 1783 0 R
+/MediaBox [0 0 612 792]
+/Parent 1714 0 R
+>> endobj
+1786 0 obj <<
+/D [1784 0 R /FitH 686.127]
+>> endobj
+1787 0 obj <<
+/D [1784 0 R /FitH 668.127]
+>> endobj
+1788 0 obj <<
+/D [1784 0 R /FitH 653.743]
+>> endobj
+1789 0 obj <<
+/D [1784 0 R /FitH 637.928]
+>> endobj
+1790 0 obj <<
+/D [1784 0 R /FitH 622.112]
+>> endobj
+1791 0 obj <<
+/D [1784 0 R /FitH 606.296]
+>> endobj
+1792 0 obj <<
+/D [1784 0 R /FitH 590.481]
+>> endobj
+1793 0 obj <<
+/D [1784 0 R /FitH 572.672]
+>> endobj
+1794 0 obj <<
+/D [1784 0 R /FitH 551.433]
+>> endobj
+1795 0 obj <<
+/D [1784 0 R /FitH 535.064]
+>> endobj
+1796 0 obj <<
+/D [1784 0 R /FitH 519.248]
+>> endobj
+1797 0 obj <<
+/D [1784 0 R /FitH 503.432]
+>> endobj
+1798 0 obj <<
+/D [1784 0 R /FitH 487.616]
+>> endobj
+1799 0 obj <<
+/D [1784 0 R /FitH 471.801]
+>> endobj
+1800 0 obj <<
+/D [1784 0 R /FitH 455.985]
+>> endobj
+1801 0 obj <<
+/D [1784 0 R /FitH 438.177]
+>> endobj
+1802 0 obj <<
+/D [1784 0 R /FitH 416.937]
+>> endobj
+1803 0 obj <<
+/D [1784 0 R /FitH 400.568]
+>> endobj
+1804 0 obj <<
+/D [1784 0 R /FitH 384.752]
+>> endobj
+1805 0 obj <<
+/D [1784 0 R /FitH 368.936]
+>> endobj
+1806 0 obj <<
+/D [1784 0 R /FitH 353.121]
+>> endobj
+1807 0 obj <<
+/D [1784 0 R /FitH 337.305]
+>> endobj
+1808 0 obj <<
+/D [1784 0 R /FitH 321.489]
+>> endobj
+1809 0 obj <<
+/D [1784 0 R /FitH 303.681]
+>> endobj
+1810 0 obj <<
+/D [1784 0 R /FitH 282.441]
+>> endobj
+1811 0 obj <<
+/D [1784 0 R /FitH 266.072]
+>> endobj
+1812 0 obj <<
+/D [1784 0 R /FitH 250.257]
+>> endobj
+1813 0 obj <<
+/D [1784 0 R /FitH 234.441]
+>> endobj
+1814 0 obj <<
+/D [1784 0 R /FitH 218.625]
+>> endobj
+1815 0 obj <<
+/D [1784 0 R /FitH 202.809]
+>> endobj
+1816 0 obj <<
+/D [1784 0 R /FitH 186.994]
+>> endobj
+1817 0 obj <<
+/D [1784 0 R /FitH 169.186]
+>> endobj
+1818 0 obj <<
+/D [1784 0 R /FitH 147.946]
+>> endobj
+1819 0 obj <<
+/D [1784 0 R /FitH 131.577]
+>> endobj
+1783 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F83 1265 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1822 0 obj <<
+/Length 924
+/Filter /FlateDecode
+>>
+stream
+xÚí˜KoÚ@Çïù>.j™ìûÑ[šBD«©á–r Á¢6H@Z)Ÿ¾³øÁ6BJH}‰×d¼;þÏë44¸8ùØ99m8pšë 3Õ`µ ´ÕÀ¸ :ýàš0P«cɧóN­.„ ç—f³uÞj´;WµnçóiÓfvA 0Òáóçó&'4>5¹uA%P˃:7ø¬ˆ¬¿SEoñÏòCÁu]QJΦÓÑð!òáëYrÝÌîÂhñ«¦éýxŒoýnÞÐzCÎ9yç/‚hç€å3ê 5xQ \¸Ó/s§5ˆN¹j]´ýJ’Ñ4úä)œŒßGË^äó\%%#6sÀ5KdškZ ¦TÀ\jud£ÆÁh›ÜŒò[àʤáèm¡@ •XÌ
+¶° O·X]zÑuFô829u&\¬¯Zè–é{‰'L~¦á&)éÜVJòMJš×¡äü9&³î[pxM„£4¿¹É^œø«qà\‚.ÊsÌf,ò µ—ý’6}åN«@yfñ$·Ç^/Ûª{ÙJݳ{Ì‹L«á$ße4CÁD¾†Ï—Þ–©çí²ÄW˜2ÿü¹„Ǭ±¾V.²b¶i9£AÁ;e–¾Òå—F»°Ù“¶íd.pña5(vE'#çô"z;&Ãnãļ¢qò„WF&5FƹRâöž\)Ý”©÷-ìõãaÆê7£YôÉãƒW6Œÿ?zðÝsÃIdÙ›.¦ýŠ#%àpûRà`±žåq€£`p[$=±½õ ƒZuYÐ6
+²¶,^AVYo²ÄZ*¨ k¯r¾<d©
+䮌%+ÆÚZÎý3VrmtNþ
+endstream
+endobj
+1821 0 obj <<
+/Type /Page
+/Contents 1822 0 R
+/Resources 1820 0 R
+/MediaBox [0 0 612 792]
+/Parent 1714 0 R
+>> endobj
+1823 0 obj <<
+/D [1821 0 R /FitH 686.127]
+>> endobj
+1824 0 obj <<
+/D [1821 0 R /FitH 668.127]
+>> endobj
+1825 0 obj <<
+/D [1821 0 R /FitH 653.814]
+>> endobj
+1826 0 obj <<
+/D [1821 0 R /FitH 638.139]
+>> endobj
+1827 0 obj <<
+/D [1821 0 R /FitH 622.465]
+>> endobj
+1828 0 obj <<
+/D [1821 0 R /FitH 606.79]
+>> endobj
+1829 0 obj <<
+/D [1821 0 R /FitH 589.123]
+>> endobj
+1830 0 obj <<
+/D [1821 0 R /FitH 568.025]
+>> endobj
+1831 0 obj <<
+/D [1821 0 R /FitH 551.797]
+>> endobj
+1832 0 obj <<
+/D [1821 0 R /FitH 536.122]
+>> endobj
+1833 0 obj <<
+/D [1821 0 R /FitH 520.447]
+>> endobj
+1834 0 obj <<
+/D [1821 0 R /FitH 504.773]
+>> endobj
+1835 0 obj <<
+/D [1821 0 R /FitH 489.098]
+>> endobj
+1836 0 obj <<
+/D [1821 0 R /FitH 471.431]
+>> endobj
+1837 0 obj <<
+/D [1821 0 R /FitH 450.333]
+>> endobj
+1838 0 obj <<
+/D [1821 0 R /FitH 424.64]
+>> endobj
+1839 0 obj <<
+/D [1821 0 R /FitH 406.475]
+>> endobj
+1840 0 obj <<
+/D [1821 0 R /FitH 390.8]
+>> endobj
+1841 0 obj <<
+/D [1821 0 R /FitH 375.126]
+>> endobj
+1842 0 obj <<
+/D [1821 0 R /FitH 359.451]
+>> endobj
+1843 0 obj <<
+/D [1821 0 R /FitH 341.784]
+>> endobj
+1844 0 obj <<
+/D [1821 0 R /FitH 320.685]
+>> endobj
+1845 0 obj <<
+/D [1821 0 R /FitH 294.993]
+>> endobj
+1846 0 obj <<
+/D [1821 0 R /FitH 276.828]
+>> endobj
+1847 0 obj <<
+/D [1821 0 R /FitH 261.153]
+>> endobj
+1848 0 obj <<
+/D [1821 0 R /FitH 245.479]
+>> endobj
+1849 0 obj <<
+/D [1821 0 R /FitH 229.804]
+>> endobj
+1850 0 obj <<
+/D [1821 0 R /FitH 212.137]
+>> endobj
+1851 0 obj <<
+/D [1821 0 R /FitH 191.038]
+>> endobj
+1852 0 obj <<
+/D [1821 0 R /FitH 165.346]
+>> endobj
+1853 0 obj <<
+/D [1821 0 R /FitH 147.181]
+>> endobj
+1854 0 obj <<
+/D [1821 0 R /FitH 131.506]
+>> endobj
+1820 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F83 1265 0 R /F14 574 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1857 0 obj <<
+/Length 1103
+/Filter /FlateDecode
+>>
+stream
+xÚíšËRãF†÷<…–­":Ó÷Kv„± IRŒw 3È T‚«lOR•§Ÿnµ$KVËì ¥ ²¤æèônŸ 8zŒptqòËèäÃPGŒ¤2M""1H©"©%ª¢ÑCt‹ ïF¿}*V_i00£¬™|Íù¯gŽ7qÂC
+âD)†7gŸþÒÇÁùõdzs‚‹‡—Ǧ‰sÁ>)¡Ê^cÞú,pj†è6£³ù<{|ö.rS3Å `ÃKG—ŸýšÆ~5H]®¸-î×·IAÉj“÷YÛ‚ý¤L¹àÎovñ”ºý ‰ÆKCÞi0öQ¯ë¥úƒ€¦˜¹ðŒÚ£
+ié0iñHë%C0Nš•´s&„`ûÌcºó<¾ùc°ï<.Ê£2W¶ÓÔ_ZMΔ_U/Tg»U¬5?è#«B`g1G`íØ•œúÓ0ÿ „¯å_ ˜nâ_
+œóí‡ã_çRÿr0ëÍi¤rê4W¶=³˜KHÞff
+endstream
+endobj
+1856 0 obj <<
+/Type /Page
+/Contents 1857 0 R
+/Resources 1855 0 R
+/MediaBox [0 0 612 792]
+/Parent 1714 0 R
+>> endobj
+1858 0 obj <<
+/D [1856 0 R /FitH 686.127]
+>> endobj
+1859 0 obj <<
+/D [1856 0 R /FitH 668.127]
+>> endobj
+1860 0 obj <<
+/D [1856 0 R /FitH 653.75]
+>> endobj
+1861 0 obj <<
+/D [1856 0 R /FitH 635.955]
+>> endobj
+1862 0 obj <<
+/D [1856 0 R /FitH 614.728]
+>> endobj
+1863 0 obj <<
+/D [1856 0 R /FitH 588.907]
+>> endobj
+1864 0 obj <<
+/D [1856 0 R /FitH 570.613]
+>> endobj
+1865 0 obj <<
+/D [1856 0 R /FitH 554.811]
+>> endobj
+1866 0 obj <<
+/D [1856 0 R /FitH 539.008]
+>> endobj
+1867 0 obj <<
+/D [1856 0 R /FitH 523.205]
+>> endobj
+1868 0 obj <<
+/D [1856 0 R /FitH 505.41]
+>> endobj
+1869 0 obj <<
+/D [1856 0 R /FitH 484.183]
+>> endobj
+1870 0 obj <<
+/D [1856 0 R /FitH 467.826]
+>> endobj
+1871 0 obj <<
+/D [1856 0 R /FitH 452.024]
+>> endobj
+1872 0 obj <<
+/D [1856 0 R /FitH 436.221]
+>> endobj
+1873 0 obj <<
+/D [1856 0 R /FitH 410.954]
+>> endobj
+1874 0 obj <<
+/D [1856 0 R /FitH 392.66]
+>> endobj
+1875 0 obj <<
+/D [1856 0 R /FitH 376.857]
+>> endobj
+1876 0 obj <<
+/D [1856 0 R /FitH 361.054]
+>> endobj
+1877 0 obj <<
+/D [1856 0 R /FitH 343.259]
+>> endobj
+1878 0 obj <<
+/D [1856 0 R /FitH 322.032]
+>> endobj
+1879 0 obj <<
+/D [1856 0 R /FitH 305.676]
+>> endobj
+1880 0 obj <<
+/D [1856 0 R /FitH 289.873]
+>> endobj
+1881 0 obj <<
+/D [1856 0 R /FitH 274.07]
+>> endobj
+1882 0 obj <<
+/D [1856 0 R /FitH 248.803]
+>> endobj
+1883 0 obj <<
+/D [1856 0 R /FitH 230.509]
+>> endobj
+1884 0 obj <<
+/D [1856 0 R /FitH 214.707]
+>> endobj
+1885 0 obj <<
+/D [1856 0 R /FitH 184.956]
+>> endobj
+1886 0 obj <<
+/D [1856 0 R /FitH 163.729]
+>> endobj
+1887 0 obj <<
+/D [1856 0 R /FitH 147.373]
+>> endobj
+1888 0 obj <<
+/D [1856 0 R /FitH 131.57]
+>> endobj
+1855 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F83 1265 0 R /F70 508 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1891 0 obj <<
+/Length 1506
+/Filter /FlateDecode
+>>
+stream
+xÚÝYKwÚFÞó+´ÇÕdÞnzüLH|³s¼A¶•p…ˆOóë{çHŠ!vâÓnft5s绯ï
+ÝF8zÛ;õÞœ)d$•Ñè&"X"-M$µD„ªh4‰.c…ê'JéøäxÔOcññùéÙÙàxp:]ô¯FïßœéÚ* 7°‡{ß0+ÒÃa×Õ5Jˆh%TÁ»ÌKÂOà‡l¼]&ãøp±Èog^‡‡}ªã·vÀãò.ó³_úBÄéý2 íj• ¥4>°S»ÚÜ‚ ‚U” _ë’ué2¸ñ[\ Þ½ùÂÏ|ÍŠù/þ6õ
+;ˆ
+#h ”2d%uê&£HI½¸Î›KÀªlqÕ¶„@‚‰•DÙ²ÁHÁ]8ðH’+Ä
+z¾²ÏÈ œƒ7p4ÁúÀ>‡]ŠÇ|‘=…«H›P¥O¡ª^Upè>‰›Àº5¯-"2´ÒôƸ¹‘ªGc‡Y(§°n˜åö‰PlZ@`Äx¥ÑhЂ?øþÚg_
+¤ØÓf_ïøÈn;±‘Hfs ø²ôB ×. %¿i9` x•}Gç¿Ÿ[“ S•Ðª0òëvâòډuˆ¥]!ö1K'!ÝùD@’ë¼ô3Ë™õŸ,<Ïg6¨Ëì6+¼dºX§m”0‚5ýújÑžsÚëíx×Ú¯|íg/Rû“º2d&ò¨|üãtø<
+R‡Ä®ÖäBõ‚l—òR´ Œ$6{è³¾æñ¼ðgéØžùÎoQSÃ>œ‡HS¸DÚ nªìQ~n­–˜VavŞmùƒ"ÎÙîE·œ{íùZ–#àßZN#AªýºÍÍ€
+H²G&eHL”ón¦›ùZTgÃz›TçsÛé4–ëRã+ dk¡7 LW([F݈X€ŒÐÝ ËóùºÂú?Ì×­s~/egˆËfr¼{>[WjäÿÔf*€¾Z­iÛ3è:ð~ÁEÃûó½é:—ˆÑŸÌÛ<v°P :ù:Ø^JúS» —Æ (#VÝÀiH„¿QÙjÓ6?oIŸ­uCþS; ÔБזZ‘„P ;6¯P(дW›XNEEøܤD| eš‘x‘ã<›õaPúG'ÙØ?œ´Ã.±ÕâƒÙÃÒ¾§Yüé4+³báyúé¨÷wÏæ‘ê3cP¢ˆ‰ÆÓÞåŽ&ðð=°#LåщN#Ƹ}ñ>ºèýé¿©m` œ„11*f¡)ÂÞ ;²ñýÏD‚Žm<€OÅùW߆L€ÐÈM+;¶ž—‹U¨GL# ›Õe.ý €4†H‹q‘?”ù|(è,Ó"[”E>¶OßÀÏaÛ0p£¿ Ãf kQÈù„†”5<jñ>è€ñºÔé3'œÆLÚ´>tì ’íÈù½QÀçÊôÞߺזSû{íÁ-üƒù¿^ßÏݼ£ª-üd>ó×ÔÃÏ ¨b6῱ŽƒZœ-¡`-¢¶¬ut|~rz²Ï)íÎxs‘âHŸ¸‡¶-æS ‰
+>…R¯«Z›d÷Ù4óºúÀÿÓJ7´`rבÞ.|nâQ¾ÅìòÙ$§e>»µÁÍdüx—mwÆ sÀ,Ø¡È6ðñ3ö²“l²»!†¾ËÙh«³ÐÍ~¢ƒIân¬ÛÙÉV·³,RÎ9MÇżۻš^é[H¶~¸§¾=yîwK0 ›¦¡—,Óëû@fjöXJëW “8Ö8ÉìÙëþaçkòvè‚ ®ë :Oî6…SƒãǼ´Í£6ñòÁϸN ÆÎ0›ùê•UωºÓ1)M÷Nç­yŒHhYuø‹ä|YvV–íÿ=@µÃYý
+endstream
+endobj
+1890 0 obj <<
+/Type /Page
+/Contents 1891 0 R
+/Resources 1889 0 R
+/MediaBox [0 0 612 792]
+/Parent 1910 0 R
+>> endobj
+1892 0 obj <<
+/D [1890 0 R /FitH 686.127]
+>> endobj
+1893 0 obj <<
+/D [1890 0 R /FitH 668.127]
+>> endobj
+1894 0 obj <<
+/D [1890 0 R /FitH 653.681]
+>> endobj
+1895 0 obj <<
+/D [1890 0 R /FitH 637.741]
+>> endobj
+1896 0 obj <<
+/D [1890 0 R /FitH 621.801]
+>> endobj
+1897 0 obj <<
+/D [1890 0 R /FitH 591.913]
+>> endobj
+1898 0 obj <<
+/D [1890 0 R /FitH 570.549]
+>> endobj
+1899 0 obj <<
+/D [1890 0 R /FitH 554.055]
+>> endobj
+1900 0 obj <<
+/D [1890 0 R /FitH 538.115]
+>> endobj
+1901 0 obj <<
+/D [1890 0 R /FitH 522.174]
+>> endobj
+1902 0 obj <<
+/D [1890 0 R /FitH 506.234]
+>> endobj
+1903 0 obj <<
+/D [1890 0 R /FitH 490.294]
+>> endobj
+1904 0 obj <<
+/D [1890 0 R /FitH 464.889]
+>> endobj
+1905 0 obj <<
+/D [1890 0 R /FitH 446.458]
+>> endobj
+1906 0 obj <<
+/D [1890 0 R /FitH 430.518]
+>> endobj
+290 0 obj <<
+/D [1890 0 R /FitH 390.674]
+>> endobj
+1907 0 obj <<
+/D [1890 0 R /FitH 372.783]
+>> endobj
+1908 0 obj <<
+/D [1890 0 R /FitH 336.918]
+>> endobj
+1909 0 obj <<
+/D [1890 0 R /FitH 181.443]
+>> endobj
+1889 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F83 1265 0 R /F14 574 0 R /F70 508 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1914 0 obj <<
+/Length 1615
+/Filter /FlateDecode
+>>
+stream
+xÚÍXMsÛ6½ûWðHÎD¾öÒql9NšØm¬v¦“ä@KŒÌDŠJÿúî DR´cÇ™NO
+â€C
+ DÇå?òy“­FΉ‘âDqÙõ³† ø)¡â㣉ïLKpÄÆù;Êô´È=P8¤ã/ L-6ùz´e•Œ¤UqžMñ§+ÿu¹ð:Ù'/+V¾½)棛lî?Êj44í,¯È
+<â€ÅYé:êÖ +)÷‚Þ6‹ÃÆ´¬Qå‹|¹Eܲ"» «eÃêb)%ÑÒt®¯ %ã
+2Ò_§n?™°Ÿ ™$‹…ìo‘‰ËOÅb§»Yb*]zªÁŸu¤…
+Ýl[{¡£ hëfšÅf™ùÓÍ’Ú´‹óõ"[åÄï–A…É‹ <&{Æ£¾´$½‹Œ°øð\b?L’©@h¢ìƒ6l}O7CGÆd×j;fO]~¯<dU±šåÿø®£TÙ9ŠHàlÇç.3˜Õ¦Ey,ô`fÊÁÀeV¬ŠÕÜ.òÕ¼ÆÅ©ðÈêF\Ýúsk€!Þöj³º3Οa•CiÏb «`g0XƒaÚÆãA}PC~{à{–‡Óu–ÏÈÑž>GE#¬ßµbÚÓ Ô@ýO‚eŒ©‘:}w^•›ëpªÚJÀž9ÓËb?IÝþ8H;áíÛÉ%mR »Nlëf¬ã
+úeR)d×…¼`q¨n¡¦¤¶·ew8%¯—-Šu=ÂpŽü4(¶
+ŘƒEµc](p¤o;*«ßÕ°ïeµ«¡îãèÇÇ;z¸*ÁÇë[g±ÛP|æ?÷jC§íÛ–·zú@Ïê…7þá­ïœ4mÿ|©?>Ú®-àmSpû?Äœ
+N7ÈpÈn·¦G`<maw•Ø
+¬½Àr(q+ Ä®çŠ‡!zþZÔWES†y®uT
+\tÿ,ü.¼AïèNxÕÿ^)•ƒ[/vüµGÜ
+RÆþvQ•28×CׯŸ‹òý7•ù¯‘ó{Õ{ÈÝq¯bî2B<ò IAMsÂ푦<T>WÞ¦‹¯+gœæ³M•Ù¦v£á FQækšÁûXå5ö¿&n¨7ÒÐ ‚Ó†µê ãõ«Oa mUI½ÅñXTy(æ$IeïMcct8k u/R³á—µWòùªÃ1ì$\óÜ»y6áÕl§ã=¬½«IŠ0¡wß8Ÿ€0•¾0à•×^L:£ÿ¸qÐUå“ÎÅOàÝåíÀF`Ô¶.CõŠ%p£lÞûÉšµ¥[Û¿‡{[Ú]DœAòê[8ÿ:Çsß©¦ì÷Lé<¢¶Sÿ0I-
+endstream
+endobj
+1913 0 obj <<
+/Type /Page
+/Contents 1914 0 R
+/Resources 1912 0 R
+/MediaBox [0 0 612 792]
+/Parent 1910 0 R
+>> endobj
+1915 0 obj <<
+/D [1913 0 R /FitH 686.127]
+>> endobj
+1916 0 obj <<
+/D [1913 0 R /FitH 668.127]
+>> endobj
+1917 0 obj <<
+/D [1913 0 R /FitH 536.562]
+>> endobj
+1918 0 obj <<
+/D [1913 0 R /FitH 500.697]
+>> endobj
+1912 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F14 574 0 R /F70 508 0 R /F7 674 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1923 0 obj <<
+/Length 2208
+/Filter /FlateDecode
+>>
+stream
+xÚ½YKWã8Þó+¼tNµÞ’k×PPE?`¦É™ U “âîÓN§ú×Ï•®ìØŽ’Ps˜^€¹Ò}è»É4yLhòéälròã¥IF2Íu2yHÕÄê,ÑVÆM2™%w©!†ŒÆÆØôãùd4B¤ç7——WçWדÛÑ×ÉÏ?^ÚÎ.@AŒÌ€‡_Ÿ)GrB×d,˜%–ªdÌ ¬Hu]­ ØÜèt=Ï×Ø{q›†ÙÍóèÓY¾% i¿
+L*<mÜG°VÅt³._š,*ûÊJ//Ÿ¡]U¥ ÌòFÄûrW0>Õ-ÅC]=á~L2|Ÿ-¥%L›Ö”QKrEŒ’KÒˆ”PÞZ›9Sž†Ô×9¨<¹º½‹h qGVÒ­DCð5h6Ǭ Ò“±¾¿  „>>8[N âê¬8ŠZ¨#Ž –ö }òx`Ãx`¿]ð OÕòûÀ
+ÊÖ®ë2zl†²x`?T¬p¨Å‡¡íœ{QÓWÍa,wGÓð*&"TÚÈ·KècìV¾Æ`ìÃîÑ*Àù˜)ÂMÖF ÿ;Ôe¸IŽ{Êñ½¯Þ`f³tçÞ ›¾z,ê¹W1£+(B·*ÍL¢a^Øà²Ò¸˜BdL÷ë®æŠ@9–thvðkÑ°#Ñ,ÜÊJMÓÅÖ[Õ<ßUn7VR“Sˆ-,œ¥Ý"í~ÒZ_’V¡/çKnÔõ%ŸÝdÇ—¤Õ{|I)b·é$ˆè0Än?Šó%ÇmO V`,}$kps4gF÷â0²h ò:/ƒEv…sÉüõ °³ó›#
+rW‡SMæ »™fÇÌ
+ =,†\Ͻ´¹GÛÌöj‚~¼ƒíÄ6šÍ£OAE² ‰þu×Ú&¸BlÝø™Ì§¦#‰nLÊÃršð¬c òóô‡˜‰àú«ßë¦Ý»‚Æ’×™ûòp›ÊNÃÝeŸÑ3‡E}Ìæ&ëÛ<Räì78”èRÕ]ƒs¾Çàà Zÿ?îüQƒs¨/Õ ðùxèuƒ»\^`_7 ã?ÉB9›OHîÙ¿D-+ýk;o*4Þ~`˜ùO/\„þAMÍRµû9ö1–‹®‹­¨ãx@wŠIî¯Ì!pC©)²~䮋iõ¸,ÿ.f§½«tçi¶ûma€¬æ próËÅu¼<Èý_»Eu
+endstream
+endobj
+1922 0 obj <<
+/Type /Page
+/Contents 1923 0 R
+/Resources 1921 0 R
+/MediaBox [0 0 612 792]
+/Parent 1910 0 R
+/Annots [ 1911 0 R 1919 0 R ]
+>> endobj
+1911 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [420.112 571.545 442.583 582.393]
+/Subtype /Link
+/A << /S /GoTo /D (section*.115) >>
+>> endobj
+1919 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [376.065 297.204 395.769 308.052]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.42) >>
+>> endobj
+1924 0 obj <<
+/D [1922 0 R /FitH 686.127]
+>> endobj
+1925 0 obj <<
+/D [1922 0 R /FitH 567.886]
+>> endobj
+1926 0 obj <<
+/D [1922 0 R /FitH 548.069]
+>> endobj
+1927 0 obj <<
+/D [1922 0 R /FitH 519.341]
+>> endobj
+1928 0 obj <<
+/D [1922 0 R /FitH 498.139]
+>> endobj
+1929 0 obj <<
+/D [1922 0 R /FitH 478.82]
+>> endobj
+1930 0 obj <<
+/D [1922 0 R /FitH 459.389]
+>> endobj
+1931 0 obj <<
+/D [1922 0 R /FitH 446.325]
+>> endobj
+1932 0 obj <<
+/D [1922 0 R /FitH 432.708]
+>> endobj
+1933 0 obj <<
+/D [1922 0 R /FitH 403.259]
+>> endobj
+1934 0 obj <<
+/D [1922 0 R /FitH 389.642]
+>> endobj
+1935 0 obj <<
+/D [1922 0 R /FitH 376.579]
+>> endobj
+1936 0 obj <<
+/D [1922 0 R /FitH 352.944]
+>> endobj
+1937 0 obj <<
+/D [1922 0 R /FitH 336.836]
+>> endobj
+1938 0 obj <<
+/D [1922 0 R /FitH 323.219]
+>> endobj
+1939 0 obj <<
+/D [1922 0 R /FitH 312.093]
+>> endobj
+650 0 obj <<
+/D [1922 0 R /FitH 196.237]
+>> endobj
+1940 0 obj <<
+/D [1922 0 R /FitH 169.389]
+>> endobj
+1941 0 obj <<
+/D [1922 0 R /FitH 155.218]
+>> endobj
+1942 0 obj <<
+/D [1922 0 R /FitH 141.602]
+>> endobj
+1921 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F14 574 0 R /F70 508 0 R /F7 674 0 R /F11 573 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1949 0 obj <<
+/Length 2056
+/Filter /FlateDecode
+>>
+stream
+xÚµYIwÛF¾ëWà¾gtÐ ¹äi¡f<K‰É9äÙ>@D‹Â3IÐ
+¸b‰0 8gY’¼ [ìkKß/Ëß»IÄCϲôãÌ.veµqoãð²8¨—MÞºW:±YÊøñóñ`Wy·0š°ÈwþÆùëÙ;o²¸o2£˜Éxk²‡’húÚ7L'²%øðŠTÖ£
+‚Øov“l#€OÄ%Ë”¡nG±t¿{²õsÙX
+ƒs'Ì«öösa¼^ÐaÛKÔwêRe(jŽé<ëà {ÀK30¨õ›ê
+¡¢ù—Ó÷t~ñÉ[…w½-Ô…LA{²X_¼ûB c)ô5ÏŽt@M >‡®‚ÙÅ/#}²áPÑ ä,ŽýûîÐI"cbA¥}¦2_&¸
+gàh…¸†²ZÁý>Nâˆò0ºf/j·4èÓÌÊåÆ?‚
+t,7.ínÑ´ë„jÔfW£/;›9"ØúŠV„dI,Žµ¢2óu­ ,CÌ@-€Í8óðºÂÎÿæ¿©d\u5ÿk
+Wvië±ÌrY×¹Ó©;4šé4è†cë .pçšb(ñ.7#гu7Þ]Ôú eºxÙ•]wµnb°ŒjåpË6^)Ád¬Ž-Ê“|é~…È \
+;*KgT†Ã¤•îHET*òž¡iIñ‘{ƒã¤3¸[ÕöÑÖ£¡aòÎ÷ˆ æÛM~î'…¡ÉÅ è(5ÿ¨éÏ8"LOâ!Wƒ Õý~ó>ŽÅد ïüY+l:ö •‘šÄõÑ0m5ŠùízN“3¿»áQ×Ì7c
+óýšêÛV§m›ï4`üR.£/ù’U=ŠÙ¶
+
+endstream
+endobj
+1948 0 obj <<
+/Type /Page
+/Contents 1949 0 R
+/Resources 1947 0 R
+/MediaBox [0 0 612 792]
+/Parent 1910 0 R
+/Annots [ 1920 0 R 1944 0 R 1945 0 R 1946 0 R ]
+>> endobj
+1920 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [341.716 642.722 364.188 654.677]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.7.1) >>
+>> endobj
+1944 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [315.002 604.864 337.474 616.819]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.7.2) >>
+>> endobj
+1945 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [404.033 538.696 418.755 549.544]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.7) >>
+>> endobj
+1946 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [358.329 431.099 373.052 441.947]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.6) >>
+>> endobj
+1950 0 obj <<
+/D [1948 0 R /FitH 686.127]
+>> endobj
+1951 0 obj <<
+/D [1948 0 R /FitH 668.127]
+>> endobj
+1952 0 obj <<
+/D [1948 0 R /FitH 632.262]
+>> endobj
+294 0 obj <<
+/D [1948 0 R /FitH 578.892]
+>> endobj
+298 0 obj <<
+/D [1948 0 R /FitH 406.2]
+>> endobj
+1953 0 obj <<
+/D [1948 0 R /FitH 385.43]
+>> endobj
+1954 0 obj <<
+/D [1948 0 R /FitH 351.889]
+>> endobj
+1947 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F70 508 0 R /F49 457 0 R /F48 455 0 R /F14 574 0 R /F83 1265 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1957 0 obj <<
+/Length 1840
+/Filter /FlateDecode
+>>
+stream
+xÚåXK“›F¾ï¯àTeafÈ%e{m×ú°vbÅ©”í+FZ ”íÆþõéÇ€@B¶×É-§y5=ÓÝ_¿½µz//ž..¿Ð‘—Y"o±òD˜i’yIšBjoQxï}¤Ál®uêÿz}ùúêúålE‘ùŒÇ7¿<¿¼z¶¸z}=û¸xõøE:àçVÜFœ2$¡»ÿñ 8:Ï;ê¹Ô°ñ7¯÷ínßÂUiäïr›oMkló#1z¾¸øëB
+
+Ò¼-ו)~v* ýKÓ,m¹k˺b=çUÁkšÖ–K<i¾ †0†ñD
+^öE5ŒLÒ1‹3¨„Ÿyù -~jëDDq¦¾ªPE­Y ¯–aè‹$°ùû Li·ZÜ¢•ôwÖ •)x‰ðBµÞÍâÄÏ7{Gµª-ï·Ýw˽“J…Ì)Þ~«îfS“Í–¸÷gp^{±†1TÑ´öâ0ˆ¿çÝ,ql™ßlPQªü}cŠ/à9–I Cñïð,d*íÅ"Ât„çPÇ'xÖBðœ%â[ðœœÁs¦áy6¾ ÿ
+œ oËjÍ_Üß–Ö[º*‘Žôø1•)×·HrCæ«-ÂJ€_äOn:³âÁÆ3ò$œP ²/…ã;Ð(ä-°J€c§NyO¯02BŠøõA܈ÄH}Q2¡?ècýáVÞ3£å²æü¬H‡:I(TötÅÙø-K…)æµ-0X)pÐqœà=°Œù›§õŠGŠA8écPx>ú(0„ðŒ50þ ŸZqRߎïoøÄÔÿ¬ú—Õ!.ƒÆ•JŽ5®T<Ô8R2`›•÷x؉Ó6î´> à|·Û|â
+\‚Ïù h}cÎ6¤iIÝŸ{$ÒB¾ކѴáíe½…˜îƒUÞðiÎËq®e¢”#àpd`Lt¬Æ $°¢l
+Ôœñ°XßÀñÞ4.©ª
+ù1LV¶ÞR-ÂÓ]„$oxóPÍÒŠQ¼1s
+r
+(¤áéͲ ü°ÃS NYQõ³Þ•`ÎÏ4\§±†|ÀÕt  'tO0ô3XºÛUŠtÇ æ
+Bãsàz‡7™Š©ÊÕÑgëzS˜jJ3")\+%ÃÎÜ!uWÖû†WCRr‰ý†;Ë—-ÏúÑp
+Ýz°&Ýw‘cH†ñÒ6mÏŽ*núÝÃW»Ô”¯ô©M±ä˜js^Ò§t=ÅËOŽ˜ß-ý¦-7ž¶Ö¸pˆ ®éqØ–`"xgd¹ìZ dqëØîö–»àº1ŽøЄÚé÷DwNKýA÷áäÔ5q—\'a¹Ž¤Sì¸Äyî.àçppBŽ–÷)—ÀØö'õ#lµáâ`Êgv)›
+=%†ªI µö¹-\@ül,rýzr~ª°YßoÚqX$_!—ÁŒOˆ‘tm^­û<OH§iš&·‡JØëãÍ X^¡ÔÜy!$ýLqµvÓɺO†…¨ì;=í²Æi”Æ0…K
+S²ë÷pÂa
+gà Ëà'ÃeNˆŽý¼:@OÆñõ’?W£1¡7-³° ¹!Bf†ª÷ã –„— ƒD‡±“Ûº+rljÿà´7üuÛÏÿJhˆ
+endstream
+endobj
+1956 0 obj <<
+/Type /Page
+/Contents 1957 0 R
+/Resources 1955 0 R
+/MediaBox [0 0 612 792]
+/Parent 1910 0 R
+>> endobj
+1958 0 obj <<
+/D [1956 0 R /FitH 686.127]
+>> endobj
+1959 0 obj <<
+/D [1956 0 R /FitH 668.127]
+>> endobj
+1960 0 obj <<
+/D [1956 0 R /FitH 634.254]
+>> endobj
+1961 0 obj <<
+/D [1956 0 R /FitH 562.465]
+>> endobj
+1962 0 obj <<
+/D [1956 0 R /FitH 526.6]
+>> endobj
+1955 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1968 0 obj <<
+/Length 1754
+/Filter /FlateDecode
+>>
+stream
+xÚíYËVÛHÝóÚ|NÜé÷#;aN€ ñ̆°0¶ Nl)‘L’“¯Ÿ*uK–dc›Ä3³a‘Hên×ãVuõ­†FwÞ ^žÚȧ¹Ž“ˆiJ´6‘¶š0n¢Á8ºŽíÝ þxyjDs¥£D8bÊ5¯?|78¹êõ…±!½¾16>½:<?ñCÇ'¯/OPÎ ÊÛšû•À>70(¼Ø<™$y’Ž’^Ÿ;Oòá<¼N |Úø¡HÆa$-Ép º¥àñÙĦ™£7ñ½ÿºá°aÌÆŸüXò}Z,Š`/•ñâ>I½xóóŸód<-²¼i
+dÕ’Ò ´gšŽ“ïø*ãlâ‡ê¹ùp”g~Îdâ´O~z”¥×b8M§éë
+ò±tZº†×FÎdåõùÑ9ìÑ÷«àhF˜­·úõŒ91ÚnLG¦I½à¦Àîódpð%ÀÁ $qÔF
+ò@Ùh4?¸¾¡Ñæ`Ëã[¹rqæÃYôþàÏÕâÆ%ÖêHiK¨ ÉôÚçï¨ó0
+%s¶i{®§˜•Y5m«¡µn–ƒ¸H¥(l„²•’b†ÆLêWXe›ÖÈ@k€hçÈ4“Âÿ`‚ݾœ K†ïWפ ~ày“lð¦MÜNC‰,»<Jƒ•b-¡?›<Þb´ ¾ÇŦSÕÔ<wœK³…7}8Ëjš\õB³df“ñ]ë4LÈvÙ$±Åï²?}ÕeéÒµÙ¿`~ ëÄصQ@uÝÏÝ~\ã¥h²ùÒHÉ”73îgù8ÉýhèñÝÂg§ç[5IZÖŸ HÛr«…¿^°ÇßÒdzwq¼õ Jþ»u°†$¤|Õ`˜/3ÌIbËƯQgêðË:Vô-äÊC0Ǫi —ïÊÉV» '³„kOE SˈÝ>1ÈÓÕΊƒ^7<Gxùq¼ŠÄ” ¶­±2›‚µpÙ<ß„¿ð~†÷—Ý´Ô‚XÑòsúÄΚC9ä˶ïãÚ[%Íÿq ц±s ± Èu·ðÐÔD…Öôñº¥xpH±Ö%Œ—Ãp˜ç­R Ÿ§x-:Lø¬.àµÎ冔e…ü–cåïÜB!—ë.¶_@)¢bO×fcþ0ì¸L'¿“/ÃY±FžÐDP»íªÚéå¦ën æð`2íHnÚ¥Iï®éM§¸@ØuvïÞð†LµÕmWst¶IÑš’ Ð-!yrâ3l^µ vê*ñ×gþ%˜”›É oØ°¶\Ö
+
+ž"ÿ%yßGÇS é ZØ ^ÆS/îx ^žrYE”íP®šI!Ñ2Ñ{e¡, Óñ3íz¦]Ï´ë™výíjüåçöÔ(
+endstream
+endobj
+1967 0 obj <<
+/Type /Page
+/Contents 1968 0 R
+/Resources 1966 0 R
+/MediaBox [0 0 612 792]
+/Parent 1910 0 R
+/Annots [ 1963 0 R 1964 0 R 1965 0 R ]
+>> endobj
+1963 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [485.671 602.221 505.375 613.069]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.46) >>
+>> endobj
+1964 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [485.671 328.593 505.375 337.504]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.46) >>
+>> endobj
+1965 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [485.671 131.141 505.375 140.052]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.46) >>
+>> endobj
+1969 0 obj <<
+/D [1967 0 R /FitH 686.127]
+>> endobj
+1970 0 obj <<
+/D [1967 0 R /FitH 640.682]
+>> endobj
+1971 0 obj <<
+/D [1967 0 R /FitH 619.044]
+>> endobj
+651 0 obj <<
+/D [1967 0 R /FitH 445.469]
+>> endobj
+1972 0 obj <<
+/D [1967 0 R /FitH 419.847]
+>> endobj
+1973 0 obj <<
+/D [1967 0 R /FitH 398.707]
+>> endobj
+1974 0 obj <<
+/D [1967 0 R /FitH 372.974]
+>> endobj
+1975 0 obj <<
+/D [1967 0 R /FitH 352.889]
+>> endobj
+1976 0 obj <<
+/D [1967 0 R /FitH 339.607]
+>> endobj
+1977 0 obj <<
+/D [1967 0 R /FitH 313.263]
+>> endobj
+1978 0 obj <<
+/D [1967 0 R /FitH 299.428]
+>> endobj
+1979 0 obj <<
+/D [1967 0 R /FitH 285.593]
+>> endobj
+1980 0 obj <<
+/D [1967 0 R /FitH 271.758]
+>> endobj
+1981 0 obj <<
+/D [1967 0 R /FitH 254.05]
+>> endobj
+1982 0 obj <<
+/D [1967 0 R /FitH 234.35]
+>> endobj
+1983 0 obj <<
+/D [1967 0 R /FitH 203.193]
+>> endobj
+1984 0 obj <<
+/D [1967 0 R /FitH 175.522]
+>> endobj
+1985 0 obj <<
+/D [1967 0 R /FitH 155.437]
+>> endobj
+1986 0 obj <<
+/D [1967 0 R /FitH 142.155]
+>> endobj
+1966 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F70 508 0 R /F83 1265 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+1992 0 obj <<
+/Length 1329
+/Filter /FlateDecode
+>>
+stream
+xÚíXMoã6½çWèV¨¸üIí-±“…‹ndÝöÍA¶eG­#¡²³»í¯ïP¤dQ’?Ò.ÈÅ¢¨ñðqæqæØ[zØûpv19{w%™¡HPáMÁ)yB D¨ô&sïÞ—H¡A ¥ò¹ÝŒ¯? Ƙ?šçíÝåh<œŒo®“ŸÞ]©†?øŽ$`µÒSi“3lׯž^@…@¡T0ð_f¬Ï‘cíÝ!Æþùz.3»ô=yÐ#îo3õe
+?^='fž´|`ÄIè„#LÌ*‡W¹ï[§Ü´ÄÍ(RŒ"¬ª]Oï&BXÖai!
+ÈBfš¦½@o
+\˜}ÚÚ¢—±8ÖðŸúàõC.]Zj„Ù<ùf@¶NóŸâ$ÊÌ’R³QËϳ<Ó‰ÛÄi–VGú k)fˆo#ýâFB%äS·U§‘ì®i!µû ‰S+á5w¿Sÿ.Y$E’ÍìëÕ@S £ául#ÚÜ06^ˆ?((ÖÓUÙ=Ï
+‚ˆ’G“»—>п(-z'>Ç«u?(M ×9,>cÂ{\b¤©ŒÞwz¶DK'ÑÇÈ'z"ùD¿OùD_+ŸÂWË'úJùd[:Íî[ò)Ú]jä1ò B)÷ª'Š˜PŽz’•z‚A¥ždU¶`®°ÍÛšXÉTþ«0ƒÚÔÕWŽq¾hÙn‹éü
+œl] 
+endstream
+endobj
+1991 0 obj <<
+/Type /Page
+/Contents 1992 0 R
+/Resources 1990 0 R
+/MediaBox [0 0 612 792]
+/Parent 2022 0 R
+/Annots [ 1987 0 R 1988 0 R 1989 0 R ]
+>> endobj
+1987 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [431.873 494.466 451.577 503.377]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.46) >>
+>> endobj
+1988 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [431.873 293.843 451.577 302.754]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.46) >>
+>> endobj
+1989 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [191.441 116.695 211.145 128.65]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.47) >>
+>> endobj
+1993 0 obj <<
+/D [1991 0 R /FitH 686.127]
+>> endobj
+1994 0 obj <<
+/D [1991 0 R /FitH 668.127]
+>> endobj
+1995 0 obj <<
+/D [1991 0 R /FitH 653.619]
+>> endobj
+1996 0 obj <<
+/D [1991 0 R /FitH 639.609]
+>> endobj
+1997 0 obj <<
+/D [1991 0 R /FitH 625.599]
+>> endobj
+1998 0 obj <<
+/D [1991 0 R /FitH 607.479]
+>> endobj
+1999 0 obj <<
+/D [1991 0 R /FitH 587.305]
+>> endobj
+2000 0 obj <<
+/D [1991 0 R /FitH 565.629]
+>> endobj
+2001 0 obj <<
+/D [1991 0 R /FitH 539.547]
+>> endobj
+2002 0 obj <<
+/D [1991 0 R /FitH 518.936]
+>> endobj
+2003 0 obj <<
+/D [1991 0 R /FitH 505.48]
+>> endobj
+2004 0 obj <<
+/D [1991 0 R /FitH 478.961]
+>> endobj
+2005 0 obj <<
+/D [1991 0 R /FitH 464.951]
+>> endobj
+2006 0 obj <<
+/D [1991 0 R /FitH 450.941]
+>> endobj
+2007 0 obj <<
+/D [1991 0 R /FitH 436.932]
+>> endobj
+2008 0 obj <<
+/D [1991 0 R /FitH 418.812]
+>> endobj
+2009 0 obj <<
+/D [1991 0 R /FitH 398.638]
+>> endobj
+2010 0 obj <<
+/D [1991 0 R /FitH 366.944]
+>> endobj
+2011 0 obj <<
+/D [1991 0 R /FitH 336.987]
+>> endobj
+2012 0 obj <<
+/D [1991 0 R /FitH 318.314]
+>> endobj
+2013 0 obj <<
+/D [1991 0 R /FitH 304.857]
+>> endobj
+2014 0 obj <<
+/D [1991 0 R /FitH 278.339]
+>> endobj
+2015 0 obj <<
+/D [1991 0 R /FitH 264.329]
+>> endobj
+2016 0 obj <<
+/D [1991 0 R /FitH 250.319]
+>> endobj
+2017 0 obj <<
+/D [1991 0 R /FitH 236.309]
+>> endobj
+2018 0 obj <<
+/D [1991 0 R /FitH 218.189]
+>> endobj
+2019 0 obj <<
+/D [1991 0 R /FitH 198.015]
+>> endobj
+2020 0 obj <<
+/D [1991 0 R /FitH 165.885]
+>> endobj
+2021 0 obj <<
+/D [1991 0 R /FitH 146.147]
+>> endobj
+1990 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F70 508 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2025 0 obj <<
+/Length 1333
+/Filter /FlateDecode
+>>
+stream
+xÚíYKsÛ6¾ëWðHMC‹7<“ƒcÉ­3éXµ5ÍAñA±i™[J%%™é¯ï‚ %R©ÈvëL§‹ }»XÀ4šE4ú¹÷vÜ{}j"K¬b*ßF (QJGÊ(LGã›h¥ý«ñ»×§šW—ZJ¸ÕÈ'_tòËñh<¼è'œóX“~¢µ‰O/ŽúOƒáÉù`èøôh!½í9÷þìi¨‘"ÌÚµ"šÙèú¡7¹¢Ñ N¾‹(ѨÁ·|éCÄ9#BßG—½ßÖiE¨a‘’š0¡¼â£ ½rjE€–G
+~Ü@ÁË
+ÚŶ‘Péþ8±ÿjB±—‹kàî×Ì'Œ†Î½°'XüÊ|°l=Xº+Xš(!Ü`ñ— ïJ*Ky#©fo§7ämÏó¤í´ÍùŠheC
+fahœ£~ËoÙ*Í‹)‹³Tð´À < V¬Ö{±b™~„+h'VX'V¤®aÅ@+¦ÀŠ¿¾\ŒÉV?5æ
+LÆgó>Ô Òå:›ÏÜÍŠ,4ÆA~øÇgqøÏóò}ˆ¯ÓÕ*`Œ»Ç1À³ùç/îžÁðøót9}H1«£à-ÂpÜûTnòN
+endstream
+endobj
+2024 0 obj <<
+/Type /Page
+/Contents 2025 0 R
+/Resources 2023 0 R
+/MediaBox [0 0 612 792]
+/Parent 2022 0 R
+>> endobj
+2026 0 obj <<
+/D [2024 0 R /FitH 686.127]
+>> endobj
+652 0 obj <<
+/D [2024 0 R /FitH 442.962]
+>> endobj
+2027 0 obj <<
+/D [2024 0 R /FitH 411.364]
+>> endobj
+2028 0 obj <<
+/D [2024 0 R /FitH 397.473]
+>> endobj
+2029 0 obj <<
+/D [2024 0 R /FitH 370.688]
+>> endobj
+2030 0 obj <<
+/D [2024 0 R /FitH 343.902]
+>> endobj
+2031 0 obj <<
+/D [2024 0 R /FitH 317.117]
+>> endobj
+2032 0 obj <<
+/D [2024 0 R /FitH 290.331]
+>> endobj
+2033 0 obj <<
+/D [2024 0 R /FitH 275.501]
+>> endobj
+2034 0 obj <<
+/D [2024 0 R /FitH 259.233]
+>> endobj
+2035 0 obj <<
+/D [2024 0 R /FitH 233.885]
+>> endobj
+2036 0 obj <<
+/D [2024 0 R /FitH 208.537]
+>> endobj
+302 0 obj <<
+/D [2024 0 R /FitH 171.719]
+>> endobj
+2037 0 obj <<
+/D [2024 0 R /FitH 151.503]
+>> endobj
+2023 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F14 574 0 R /F49 457 0 R /F11 573 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2040 0 obj <<
+/Length 1528
+/Filter /FlateDecode
+>>
+stream
+xÚµXKsÛ6¾ëWðHÍ”Þ
+ïßÜo3ÐŽã„¥jøñ‡³à†ÛÿÛ âenàD[ѹáCÈB¡lØ£} J¢$ÑZ ¥ß$Z«Î^Îö8±l ¸ñãûu…Yã“¾î ¼—Y^­½†Îz¹Îo../ŸõŸ€0@†¯ó#:•CHh’ÁŽ?Ǩ¨«ót€Ád¸Nµ{>QÊ5±DÁ7Í-áJÍúáš:·àô×m¶Jô
+&Í÷C[…¶h¡mŽBÛØç -ˆ…ræh35„¶D†Â…5Ý’{tÃ
+¢Û)é`ìQnˆÜçhm£B–
+? µgàÌNØÍŒSU²^Öp£ý‹qî©\,ü7w°fâæ€íc˜U²ºIíá(†ÍêWƒ9ÅB*ÉÊßüÇ8«2»[8cCÞØnŠÙ bœ’”}/±
+Ý•³~ê‹+]Fÿ!’õªðDãØ
+pCûxð »2¡=Š ¯²Ðûo¯-Uø¦+þö]—  ­ÛµÖþÆa&¼ýMì‚îK{€Wßt3}T ûš4õRM—ÿIUTU0Ûª*š´‡Sµ_3ÝËæ².Ì[$GÕì8ä0DºjJ¨êŽ!-Ñ» Asq-÷0ä+(;äë ¦Á`a{Iã<Ë÷°#ÄH!ÐÖí`œ–\pÞ‘ËQ;5¿Gr¦¦âÂþDí;®v´ s=ĽÈ’;ú¶ PiÂiW+ãŒA&ø û!×û1÷/pWÕ°
+endstream
+endobj
+2039 0 obj <<
+/Type /Page
+/Contents 2040 0 R
+/Resources 2038 0 R
+/MediaBox [0 0 612 792]
+/Parent 2022 0 R
+>> endobj
+2041 0 obj <<
+/D [2039 0 R /FitH 686.127]
+>> endobj
+2042 0 obj <<
+/D [2039 0 R /FitH 668.127]
+>> endobj
+2043 0 obj <<
+/D [2039 0 R /FitH 500.697]
+>> endobj
+2044 0 obj <<
+/D [2039 0 R /FitH 464.831]
+>> endobj
+2045 0 obj <<
+/D [2039 0 R /FitH 357.177]
+>> endobj
+2046 0 obj <<
+/D [2039 0 R /FitH 321.311]
+>> endobj
+2038 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F14 574 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2051 0 obj <<
+/Length 2207
+/Filter /FlateDecode
+>>
+stream
+xÚ­M—£¸ñÞ¿‚[ðËX+ $Á^òús3û2»“nßzç@ƒÚæƒx{f}ªTÛ˜íîIr1B*Jõýe¬ütqµºøá. R–j©ƒÕs 4gZ›@'š i‚U<†‚ËÅ—ÕÏ?Ü™è4å,J àq@׿ü¼º½_,£(
+ [,I»ûËO·´us{ýëÍ-â¹àþöÛÕÅ¿/,y 7kÃŒLƒ|{ñø…þpf঺ ¢8bFà‡UðpñÏ.ŒV†ÉX}¿d[»XJ¨pµIømoIˆ{FÄáCù‡Eâ‚4a<RÁR–*EßþÆ*ûžÂE Kàªc˜‡r]Ûâo€.ŠTxc»¼-w}ÙÔÄ~V´hm×·eŽ'“Ƽ¢”™èL
+qš¼.ÃÏ”™Z& ®&:wUIÊ<˜RLj5¨òcêíÚ¶‹e¬cJ`K*þÒ¸…/‰™¼©š—1àÍjK»e]دìæ¤d:’ÿ£ŠÓ
+§“'R»ƒãa¿ñ‡y³ÝU¶·Ãç 62·ÇÙ<ÓsguÑ”õšÞ=Þ\_Û‚4ìŒe)b–Æñ©Iõ€=’Ì!oPÚ¿ãÊ7ÆHò°iËuYgm#~Üý}ªÈª½íÀÍ☇W6Ïöÿ¦ì EÏDÓuåSe=þ†@³¢ l‚Ø{ UÖ®É9ø) 6¡J8-â8ñ À†…-èÕq
+‹ë›™ÂŽ3‰êqŽ f´y7_|…×ù(ÖÔK4¾)oªW(U—"bÊx1^Îòv qteW”ho߉9±ïˆÏ÷ÀƒÙwîÁ©ÚKÆj›}_•˜PP± c)§Z%VìX©ùBµ]´¸wT"Ÿ†%lê5á™ÇÅ,áê”é+ö–‹»ÿŠo£ÓΨ_
+I‹
+endstream
+endobj
+2050 0 obj <<
+/Type /Page
+/Contents 2051 0 R
+/Resources 2049 0 R
+/MediaBox [0 0 612 792]
+/Parent 2022 0 R
+/Annots [ 2047 0 R 2048 0 R ]
+>> endobj
+2047 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [288.555 384.353 311.026 393.153]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.8.1) >>
+>> endobj
+2048 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [269.46 290.076 289.163 302.031]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.46) >>
+>> endobj
+2052 0 obj <<
+/D [2050 0 R /FitH 686.127]
+>> endobj
+2053 0 obj <<
+/D [2050 0 R /FitH 516.426]
+>> endobj
+2054 0 obj <<
+/D [2050 0 R /FitH 495.253]
+>> endobj
+2055 0 obj <<
+/D [2050 0 R /FitH 479.505]
+>> endobj
+2056 0 obj <<
+/D [2050 0 R /FitH 464.309]
+>> endobj
+2057 0 obj <<
+/D [2050 0 R /FitH 449.114]
+>> endobj
+2058 0 obj <<
+/D [2050 0 R /FitH 422.835]
+>> endobj
+2059 0 obj <<
+/D [2050 0 R /FitH 406.769]
+>> endobj
+2060 0 obj <<
+/D [2050 0 R /FitH 383.729]
+>> endobj
+2061 0 obj <<
+/D [2050 0 R /FitH 367.663]
+>> endobj
+2062 0 obj <<
+/D [2050 0 R /FitH 342.687]
+>> endobj
+2063 0 obj <<
+/D [2050 0 R /FitH 328.558]
+>> endobj
+2064 0 obj <<
+/D [2050 0 R /FitH 315.536]
+>> endobj
+2065 0 obj <<
+/D [2050 0 R /FitH 289.453]
+>> endobj
+306 0 obj <<
+/D [2050 0 R /FitH 263.178]
+>> endobj
+310 0 obj <<
+/D [2050 0 R /FitH 174.492]
+>> endobj
+2049 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F70 508 0 R /F49 457 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2068 0 obj <<
+/Length 1471
+/Filter /FlateDecode
+>>
+stream
+xÚ­XÉrÛF½ó+p«Ìñì‹/)Ųå +d@$Q!
+Œu)žnÒr g%$øÖléiиÀ‚C¸Ò7ÍDÅg Öl40ÙSî eƒ
+_(åcùH˜ìØÑ¢°¤S£ùD¨³!}0€7(’ìŽiãu R m‡ÕBY‚µ  L
+ÓÙÂ÷bÈ“äÇA•Ö§—xv~U*M$³¨øŸSÆ•Y²Ø¥âßÓÇX“‚xçePãÄB4$gD‡r‡Pcš6P³5ë¡Æ¹PW(ã^€4!Ù#¤ @Ú³`&©Ï‚g£ÌБ€ç£+QÍÅ׌ ð¸ÉÛÇÖLJcqŠ¤v*âmQfß ¼ÐÔ6X ¦Y¾J¿†©y[lèiv¶ä=ÐÖê5ÅâÛ«éÁÀÒZÖÙ2 5/”?Ùi/ZíJå¨öãF
+ìñ¢|†<¶
+ÇŠ~–oðc_”íåz % ¹WyKHÌ:A¡¸ ¥†ÂO`'ß8RïÇ >kÉ‹I⤆,9v™'%É—4¼çâªðýž_:˶‡©Ú=O™~gÙö4iÙÚàÚû°W&ùæä8VÑ¢ª²E}þt¶TúŒT­.µ›¾p–Å1oyÖwVdØ 1ã{a¨œ¹Aù‹?N¡ dž&Í#Ûœmah»¶õFÔÚ¥þ8|ÛÁE8±.‹=Š£øH¨,æMÈôåîXeŒw'=>TBãx
+ÄsýÀI Æ׶°c»Ê;F]`áꕬãÄYSÃ(0Ù$Ö&i7%'Rñ ÍxCå͈ΦÛ«yÿ‡ÖhH¡k¢Ý3wc2QB=é8¨&´ë«îN~ œ§AüXw­aÂü ïÿÜünºj õÿwþãÄÊœ$ÒÊWi˜•„ÒaO®Œ:mN{r
+endstream
+endobj
+2067 0 obj <<
+/Type /Page
+/Contents 2068 0 R
+/Resources 2066 0 R
+/MediaBox [0 0 612 792]
+/Parent 2022 0 R
+>> endobj
+2069 0 obj <<
+/D [2067 0 R /FitH 686.127]
+>> endobj
+2070 0 obj <<
+/D [2067 0 R /FitH 601.924]
+>> endobj
+2071 0 obj <<
+/D [2067 0 R /FitH 601.924]
+>> endobj
+2072 0 obj <<
+/D [2067 0 R /FitH 574.091]
+>> endobj
+2073 0 obj <<
+/D [2067 0 R /FitH 540.163]
+>> endobj
+2074 0 obj <<
+/D [2067 0 R /FitH 468.374]
+>> endobj
+2075 0 obj <<
+/D [2067 0 R /FitH 432.508]
+>> endobj
+2076 0 obj <<
+/D [2067 0 R /FitH 314.884]
+>> endobj
+2077 0 obj <<
+/D [2067 0 R /FitH 291.029]
+>> endobj
+2078 0 obj <<
+/D [2067 0 R /FitH 272.543]
+>> endobj
+2079 0 obj <<
+/D [2067 0 R /FitH 230.748]
+>> endobj
+2080 0 obj <<
+/D [2067 0 R /FitH 230.748]
+>> endobj
+2081 0 obj <<
+/D [2067 0 R /FitH 194.883]
+>> endobj
+2066 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F14 574 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2084 0 obj <<
+/Length 1508
+/Filter /FlateDecode
+>>
+stream
+xÚÅXMsÛ6½ëWðVj¦Bð ²—ŽËM:“Äu4i3I´DۜҒJÒ‰_ß],H‘6íDcO{@`žÝÅ>ˆGç~›<_Lž%QÊR+m´8‹„åÌZÙÄ2!]´XEcÁõôóâ÷gGNõESÎTê`/ôâåÁñb~2)¥bǦ3ç’øèäàõœ†ç/ÞÎqŸ Úç‹É?]‰f똓i´¼œ|üÌ£Lþqæ@ÓW/z)­˜¸°ŒÞMþ³Â2«MdcR[:à›ì2ŸÎ¤q&^Leßlá+‰aLI¡ãwÅ·O .X*U4ÐC‹?qÃO‹¦†Vx)•°ðé˼+Î×ùêWØUkæõ²*¶M±Y#
+"4°-³uÞ
+‚C&Cƒš ùèªniƒ_ #¯Þt}IɼʃC‡Ù]?fJãO”g¶L¤?øûi
+ÆUEvZ‚}nmX=h2užó=ÅsA‚ëŒìçhñy—Ú.Õ¤Ôj—j‰dÆ¥C<ø^°·2Mi1ši rEýK6iáÒjïds|$Ùà¡N/ÀÓë½Ê’rœÇ
+p‚ÈŒ?LáÒDoú/_›—wj½âª%GØ äˆº´‚81Wãle`Ä,nX¾nžÖu»ÀâH¯bµ&¨`‚R-­×Á‡&¸=L¨öôƒ=íÝ^t|¨Æa­\pƒî(=v[|—Z²:þi2£j#á±Êo‘™öÕ¢¯–¡‘ÂIÈ =Lžêæɬ”@‚‡N‘` vƒÒ‘²%ÍØÙ½½îµqgÙxJz–§w;9Ã,c×!!É…FO¢në6 [ýš3uq¹-o¨¿Ül ·Ñ"sš5Å%-lÚ}»—-¾2º×-Šøºh/fB³TëÑ8
+§¨àÆWpúÜÜÎWçíÔÙ­©Vã_ ]4zÚ»Œj(õŠuÝäÙ
+à1Ü`ùÑm•AmY¢@]@]»p·ÁUVRÁeænAw™“î*AGç<èç×[ªcøŠ a£!(©~vöþüæî
+endstream
+endobj
+2083 0 obj <<
+/Type /Page
+/Contents 2084 0 R
+/Resources 2082 0 R
+/MediaBox [0 0 612 792]
+/Parent 2022 0 R
+>> endobj
+2085 0 obj <<
+/D [2083 0 R /FitH 686.127]
+>> endobj
+2086 0 obj <<
+/D [2083 0 R /FitH 440.921]
+>> endobj
+2087 0 obj <<
+/D [2083 0 R /FitH 405.055]
+>> endobj
+2088 0 obj <<
+/D [2083 0 R /FitH 333.266]
+>> endobj
+2089 0 obj <<
+/D [2083 0 R /FitH 297.401]
+>> endobj
+2082 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F14 574 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2092 0 obj <<
+/Length 1730
+/Filter /FlateDecode
+>>
+stream
+xÚÕYKsÛ6¾ûWðHMKO쥓‡Ý¦3u\[m“q| %ØâT&U’ŽL~|
+F’±„ ìb‚…™s€›=ƒ¨QP37­¸šDŒ$a½Ð0 8,õ•.u>ÓN~U¦7Í›K³ûg'VNT”î‘Äîy•ÝëeådEîd:™… '­²¹þ:׫I2ϳüz<ýn¡á,^Ð6Àù#BP"„;s^Ôf9u‡6ƒYQ–º2J%(rJ<½Ï*7j«ÛË*½Y-õ¼‘çæ— TÝ‚ªÜœ¸ÙdµLsý5ÍçíV+‹C·‡Yé9䥵°(çÖÆzl` »ÂIëÂ=Õ‹¬‘—ú:+r4v¡ˆHã6ÐNTãݵ9ç‘À8<š(æ|º¸3~šˆ8L—·Ú½·[I<`P‚ð°%ÐåçMŽ†bÊÚWeqãÔa·Ikü¾5s¶¼­²Oæú‡5:ÓeÂ
+ÎV¢ñ5é={œ³%ꉽ¿¯—ºªÖýE—Eý$"a6!¡×sÈtØw›ÌžQ [P²ómÀlMªÛù“ª€äÔôòÞk‹¤â™’*E‰’#ã2ô¸dJ=öþó2Ξ'›¾÷fSÜñG6}ïͦœðýóé½7ŸrÌwæS%ᨛÏræÛ[
+ñ˜¯'R*w%R†zü6Ï``HÃ#H·V’l¥’@ý‡è9-ÛÈ¥U±â«eëêÇø:F˜°ýƒjïDjòèü]eÿ>’ýYT"ÆÄû?=˜jÆ”Hv™ñäôð¯©A’uô=÷A;lz.Œ.|:LìŸ .Ú²]¯×Ö$äâÓã‘‘ø!wÖ·0"Éþ&–~1íaB["K$ ø¨D*‰ÝÔ©…¾‘?§Ë«è$»7œÔ¾K#æáI©çÙ¬´r
+1•¸ÅoóÕmí–¯RÓjBf«ÜGípzð÷¡H×sXLÔ³›ƒó Ìá%è„FBwvêM
+²½/É6™®¬ê@ƒf°ÚƒÒ 0x¢vƒ1rj§L©Ûö²Ë¦jœo•ê‚à­ë‘õµù ÂiH¡`¡RÇqaqC Iûl^/ÜÐ^8È6zäZÃm¶áî&[Ø¡ÃÃP”Œ`ïÒÕðÆ@lo,\›=h½½”& dI7ªãµÂü9Ìç8\èìzÑZÏømLH: ¤‚7ù›b v¥ª1ôÍ$Š¥á¹
+yY–©»;2/¡ï¥E‡j
+?  ‚lVÜ´WÄC#àrd|Șð²ª]˜Ý-Š¥ŽϘ0¼)Ì÷º-¡ ئêÙŸEÞ{Á§!@…lŽÐ²ÈH†ö·³ÄØnÞ×íRk'øÚ¶õv<Ö `ø!xOÿó,¨4¤ôùs“  ƒφ
+endstream
+endobj
+2091 0 obj <<
+/Type /Page
+/Contents 2092 0 R
+/Resources 2090 0 R
+/MediaBox [0 0 612 792]
+/Parent 2106 0 R
+>> endobj
+2093 0 obj <<
+/D [2091 0 R /FitH 686.127]
+>> endobj
+2094 0 obj <<
+/D [2091 0 R /FitH 626.339]
+>> endobj
+2095 0 obj <<
+/D [2091 0 R /FitH 604.421]
+>> endobj
+2096 0 obj <<
+/D [2091 0 R /FitH 587.928]
+>> endobj
+2097 0 obj <<
+/D [2091 0 R /FitH 571.988]
+>> endobj
+2098 0 obj <<
+/D [2091 0 R /FitH 556.047]
+>> endobj
+2099 0 obj <<
+/D [2091 0 R /FitH 538.115]
+>> endobj
+2100 0 obj <<
+/D [2091 0 R /FitH 524.167]
+>> endobj
+2101 0 obj <<
+/D [2091 0 R /FitH 510.219]
+>> endobj
+2102 0 obj <<
+/D [2091 0 R /FitH 496.825]
+>> endobj
+2103 0 obj <<
+/D [2091 0 R /FitH 454.477]
+>> endobj
+2104 0 obj <<
+/D [2091 0 R /FitH 454.477]
+>> endobj
+2105 0 obj <<
+/D [2091 0 R /FitH 418.611]
+>> endobj
+2090 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F70 508 0 R /F49 457 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2109 0 obj <<
+/Length 1948
+/Filter /FlateDecode
+>>
+stream
+xÚµX[sÛÆ~÷¯à#5'Úì•Kö¥ãÖöi:“KOf2ih‰¶9G&U’Jìüú P$eÚ‰›œq¯>|
+‚?‡¥7‘±Fx…7Ñ»£?æÌà…56J´Ƴ&¯à¿K8Ÿ/tßm¡—Æ0f´²ñ»òKZEJj®™s´ùOéäEÙµðUa•IE
+6^󮼪ŠõÏ Õ$.>)ÚUSn»²®Ð‚6Ϋ5™²)Ú®)W8Ó>béDšÜ³ƒÍÒÇí0á„„¥‘ˬ° ©ùæíé ùÃØdÖŠ$3½7è“Å2xQ¡¥ºâªhj9µÊqÓäÁ”a|.ñnb’Œ¡]¿ªCÃÅÇhŒDÁDÐ@Ù‘
+°ß¸¬WáO)õ}5•
+€È½x–ïÕÝú’¾Û¦Xƒ™ë†ºŸ H¾ÙÁèÑÒX‘t
+¨«‰¢][i—a7Œ¼xµŽUg]0ŸX¡ÿkÅÃœ:ŸˆTÚ'ûö § ÌIáéý~‘¶¦Ì/6
+–S÷G!z[Uv¤E‚’fàZhË%ôëjƒúg
+ߎm~³ %¾ÍtoÙL±¹ 1¶lXA–…™Àä…\
+Ò,ÞnòŠ.tì­Øèš"^+Š[ÀŠîfBæ†Ñ6Ðvµ4¸ož!­±5Éó°v¯2\#Å콿ê¯Û`5¼m¡ùƒh¤À8;ÉõØß‚]¨uU„66õ.ÜÔBM±¦Y:ž¡AEÈ0jIøòÁ6.LÝølÅ0u¿¶8wÏÒ \²à«ý$éÍ–­”dÅäõ ʨ.ðµË™füÔv°æ#-ã3 ÷þ!a4”¼"š„0¸_fR(¹¨›»Œ)#­û”PœÜ§(zÖ{Öã[mvmI6ûiªñn¯pd,%d– —ò¼¿‘¢;n[¸Ïèm3‘@J“ÜK\î¥ê—tÃ투‚O{'!4MöïE¿|˜Ÿ £öZÿ™‘Zý‚—ï?Ìèh¡¬>2%(<w>Æf€‰†<ð“¥–JX‡Ž‰pzdö‹‡ÌþbÎUt*´~ŠÉK>°®BNiØ_®óêQË{RËxûæ·™×<íE"Ýè5OÞ×eb8…HÙCó}Ê
+ÈPÿ_Ÿòß
+endstream
+endobj
+2108 0 obj <<
+/Type /Page
+/Contents 2109 0 R
+/Resources 2107 0 R
+/MediaBox [0 0 612 792]
+/Parent 2106 0 R
+>> endobj
+2110 0 obj <<
+/D [2108 0 R /FitH 686.127]
+>> endobj
+2111 0 obj <<
+/D [2108 0 R /FitH 668.127]
+>> endobj
+2112 0 obj <<
+/D [2108 0 R /FitH 634.254]
+>> endobj
+2113 0 obj <<
+/D [2108 0 R /FitH 562.465]
+>> endobj
+2114 0 obj <<
+/D [2108 0 R /FitH 526.6]
+>> endobj
+2115 0 obj <<
+/D [2108 0 R /FitH 188.918]
+>> endobj
+2116 0 obj <<
+/D [2108 0 R /FitH 165.536]
+>> endobj
+2117 0 obj <<
+/D [2108 0 R /FitH 148.457]
+>> endobj
+2118 0 obj <<
+/D [2108 0 R /FitH 131.932]
+>> endobj
+2107 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F14 574 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2127 0 obj <<
+/Length 1927
+/Filter /FlateDecode
+>>
+stream
+xÚåZ[WÛF~çWèQ>­7{ßUÒõMN ¸mRƒ0ÂÑ©±A24ðë;£•u±×2šszúº¬fw¾™ùæ44øykg°õêÀˆ "‘æ:\Œjbuh« ã&\§¡!éõ±áñþîÑáÉà¸ÇmøÛîàíÑaïlðîÕmˆÜ£ lP|̨Á5[´Üsþ;è J §&èsØ@ ·ü Uô~°ÖGÁi_Qnçy:š¸- mì©P›o™Ýóåc1Kl½dö5éõ…á]O©0ß–·¸½ûVF¥•¢ùÇ;Ÿ=â#"Ÿ¯øÁ##*”,¼ÿý³çŒ@—‹BZŠ¶„œß{ÎA‰¨ÕD IÉ>Ø…TAŸ)Éõdêo/=›ÕꮼZ’æàQ–ij$à Vˆ'¸J"¥ç2Ž?üâÖ0Ù>‰¦ªÖ˜Òå³W•G¢¢?º}ãU%%Ñ÷r¨ç)&ZŠ-š¼-—Ì} mÃÍl®‰bì F'y¾hñ‡$›ÖFèõY˜öXèµ£’DyÛ*kঋ
+‡
+endstream
+endobj
+2126 0 obj <<
+/Type /Page
+/Contents 2127 0 R
+/Resources 2125 0 R
+/MediaBox [0 0 612 792]
+/Parent 2106 0 R
+>> endobj
+2128 0 obj <<
+/D [2126 0 R /FitH 686.127]
+>> endobj
+2129 0 obj <<
+/D [2126 0 R /FitH 668.127]
+>> endobj
+2130 0 obj <<
+/D [2126 0 R /FitH 653.681]
+>> endobj
+2131 0 obj <<
+/D [2126 0 R /FitH 637.741]
+>> endobj
+2132 0 obj <<
+/D [2126 0 R /FitH 621.801]
+>> endobj
+2133 0 obj <<
+/D [2126 0 R /FitH 603.868]
+>> endobj
+2134 0 obj <<
+/D [2126 0 R /FitH 589.92]
+>> endobj
+2135 0 obj <<
+/D [2126 0 R /FitH 564.017]
+>> endobj
+2136 0 obj <<
+/D [2126 0 R /FitH 550.623]
+>> endobj
+2137 0 obj <<
+/D [2126 0 R /FitH 536.122]
+>> endobj
+2138 0 obj <<
+/D [2126 0 R /FitH 510.219]
+>> endobj
+2139 0 obj <<
+/D [2126 0 R /FitH 496.825]
+>> endobj
+314 0 obj <<
+/D [2126 0 R /FitH 448.458]
+>> endobj
+2140 0 obj <<
+/D [2126 0 R /FitH 428.242]
+>> endobj
+2141 0 obj <<
+/D [2126 0 R /FitH 394.701]
+>> endobj
+2125 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F70 508 0 R /F49 457 0 R /F14 574 0 R /F11 573 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2147 0 obj <<
+/Length 1461
+/Filter /FlateDecode
+>>
+stream
+xÚÕXMsÛ6½ëWðVjZ"øþè¥ãØNÚÌ$©mMg:Ž´D+œÊ’MQiã_ß]
++½E7õÝP à]^š¬‹jýó~S„ƒ–@ù÷)Y–
+ä&'šjGÉrj*ÙX(}[禫döö!«‡…,wRz!‹!örµÕ³²§gAËNñË#ÒUh PùËHW¡0ÊM8;ÞMkØŠ±Á´PG=½j Ã
+Öó1ȬøsleŠúÝ¿a‡k™‹â¶ÍsœëÊFxõ²ž³¢S
+¯ž¸ðµÅÔ“ã 8~à]ß¡~[ÙÖá»ç Sþâ×›*_„wÏ“°C>½!CÀ/
+¶§Z†Þn˜=PpA´{!rgˆ¤‘„ŒAíäU‰ý=
+®ßH8œÞiÄû×ÌÀTîN8ð0‹0|óÄÔ@°]¹¹¯‘“]®Å2µléÙkcÛ7H†•XϸiyH…Ëä~q"˜iŠ‹–LáS”*¸<”Ýð=[@϶®oå ^•b•¢û"ƒkT°Ê£‚©‡rž=äóç Úƒš¦zËX&YÊÝ·¶!zms`].ç‹xiiú‚‰}a¢µQÑ“›II€BTº¦¤7ÏÇ_
+endstream
+endobj
+2146 0 obj <<
+/Type /Page
+/Contents 2147 0 R
+/Resources 2145 0 R
+/MediaBox [0 0 612 792]
+/Parent 2106 0 R
+/Annots [ 2123 0 R 2124 0 R 2144 0 R ]
+>> endobj
+2123 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [420.568 540.064 435.29 552.562]
+/Subtype /Link
+/A << /S /GoTo /D (table.3.1) >>
+>> endobj
+2124 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [391.51 516.154 406.233 528.652]
+/Subtype /Link
+/A << /S /GoTo /D (table.2.1) >>
+>> endobj
+2144 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [376.746 324.813 391.469 337.864]
+/Subtype /Link
+/A << /S /GoTo /D (section.2.6) >>
+>> endobj
+2148 0 obj <<
+/D [2146 0 R /FitH 686.127]
+>> endobj
+2149 0 obj <<
+/D [2146 0 R /FitH 428.966]
+>> endobj
+2150 0 obj <<
+/D [2146 0 R /FitH 393.1]
+>> endobj
+2151 0 obj <<
+/D [2146 0 R /FitH 309.356]
+>> endobj
+2152 0 obj <<
+/D [2146 0 R /FitH 273.491]
+>> endobj
+2145 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F14 574 0 R /F70 508 0 R /F83 1265 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2158 0 obj <<
+/Length 2483
+/Filter /FlateDecode
+>>
+stream
+xÚíË’Û¸ñî¯Ð%UT•Å%
+ŠåŠº<,YÐiÔ\Y[Ìaká¿TƒCõC—z}¹¦FAÔô§ˆ¥E¥‘(áÂp’_—I¨úàhV ÁT›Õµ!`Û•ºÃ],V,ó8†? ó$!ÞïÛñ²@ѯ¯šM­©}WãúvŸ/ªûAd ƾÓeU UÛP«z;ÕLÔÚÂMÙ6úOÕ”Ôïôpè‹kE‘¥^F£cO$Çî<u;Ç>î<ŽÓ Q@WÕ4;GåË8¸¹'„ZuMÃmÎ × ÖG^uš¦—ÚÎ*'(?ÏE«º^×߉1»ƒlÜ€¼«÷/aP0’HÌ8È©?Ô쎂”úT@l4K[5„|GæC¾Ú4,{…\X¢†e“ :l `Ç(K rW =J6N‚Ûƒ1-!(H¶€®bˆv‡¦PƒÙ€‡–ÀŠºÈ, Xt…–B¨ï;ìí*ÊY£„°ûïÔ.«¾P] ÖM}ktÀxµÙênEnBÓ`sÔjïñŸ#`À%þÀOÛ¯Šv·¯õN“j X9oêX<â/48>¼¨‡m{Ø€8EÄKY E‘|¢Š )Z²ptï°íÀÌÞœ8
+/0n‚—r¦‚C¨Ï)ÀdÁèƒý f8¢=‚v
+¼*ØËCΉ&÷úìEùh]y
+¼Ðkµå2Œ²±š½|wu}í3·$d“ }ô)u^ßy ZÙhBŸ?FŸ ìn¦÷$Œ§
+¨ÿ¡Œ’„I<e”'‚%eò‰îp)²³|‚°Y>ÁneÿOæDòæ³bKTÆϱaI*Ã\žäí dÂÆu_2?›Lœ¿¦^½Æé­LzªÉσœŒ´³h.n(1£1ö>åÂÞ²Qeö !Ö¦®–º©xIª)êCouYø¯'[“¡Ìyd
+˜Ÿ¢$RðaOÅÍ#Þ“jî8ûñÃÇ|®2/™O†<–ú›kÒºfÉDà‚}Æm!ÑuîlÐïáµ=}f&÷œ3Çrp¬)]û$+¡¸yƒSI’Šà*Ü„(H)&+ã°Ñ,Çfv¤Ü˜NS˜ìZ:Ô ŠÕÃZ…SHtŒ1ög¿þêõÒtDFs6s–´4º;kï°9‰çüÙúËl™Ê–e×ÕÝÿ×P„É#«š×)8Y
+ »"žLñî SüéÒE"L{VíÆÿ›µ›Ïk —%; ‡ 3®â«þb{üß)þ<üÆ2}¶œU³3³JL&%)ñ¤†L˜QeÂ)”AWQw¬!æ¯!6Õ€?«!‘H3:ª!Íeˆý‘G{ÊÊ“!‡ØÙæÊçËãʼíéSžß‘¦ŽŒïiE=§D&å‚„ÀMáÂ`§`x%ŸÈxºö|O‚5Åð$¸i–/K᣻Þñ²ýŒ­ÈÈQäî~qYð×ø7Á4EùŠÁ ÝÚãhO€^ïUG7œnÞBn ñÙe"Ôj¥ÂØJOsÌ$s!
+úÖá ÿØRô+«¯)Bòø#øbÈ÷ôïôï‡Ê¼–>Q»§7éB6fÎ ]zzƒÆüéMÆ3_”1UA#N;l©[VyðQ'É31ÌSš·vž±-ÃDå½Y·:âY4êˆg Îº¦ÑÓ 3‹\LÔÝÑk–6fº-ýÛ=m¬3IÉþQáˆNÑiÕ;
+y #xo8¼¨ÑÚ#9ª§§î°íðå¥= ®¯mc&éHÒk 6¦‹~À1" 1…­Røø!ƒ~[Ý›W³X¤Á»¦þþhÐØÜ·±aŒ£7O¾Ë(4'aר¦?Ày¥´ç+˦ÖÊD.À´ãU¨ŒÞ[J‹Doûj—L-m¸«â
+endstream
+endobj
+2157 0 obj <<
+/Type /Page
+/Contents 2158 0 R
+/Resources 2156 0 R
+/MediaBox [0 0 612 792]
+/Parent 2106 0 R
+/Annots [ 2153 0 R 2154 0 R 2155 0 R ]
+>> endobj
+2153 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [360.716 503.571 383.188 514.419]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.3) >>
+>> endobj
+2154 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [359.26 402.782 381.732 413.63]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.3) >>
+>> endobj
+2155 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [374.709 339.879 389.431 351.834]
+/Subtype /Link
+/A << /S /GoTo /D (figure.2.8) >>
+>> endobj
+2159 0 obj <<
+/D [2157 0 R /FitH 686.127]
+>> endobj
+2160 0 obj <<
+/D [2157 0 R /FitH 534.047]
+>> endobj
+2161 0 obj <<
+/D [2157 0 R /FitH 488.98]
+>> endobj
+2162 0 obj <<
+/D [2157 0 R /FitH 469.206]
+>> endobj
+2163 0 obj <<
+/D [2157 0 R /FitH 450.54]
+>> endobj
+2164 0 obj <<
+/D [2157 0 R /FitH 430.767]
+>> endobj
+2165 0 obj <<
+/D [2157 0 R /FitH 388.191]
+>> endobj
+2166 0 obj <<
+/D [2157 0 R /FitH 366.979]
+>> endobj
+2167 0 obj <<
+/D [2157 0 R /FitH 339.236]
+>> endobj
+2168 0 obj <<
+/D [2157 0 R /FitH 324.001]
+>> endobj
+2169 0 obj <<
+/D [2157 0 R /FitH 299.302]
+>> endobj
+318 0 obj <<
+/D [2157 0 R /FitH 269.58]
+>> endobj
+2156 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F83 1265 0 R /F14 574 0 R /F70 508 0 R /F11 573 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2172 0 obj <<
+/Length 1938
+/Filter /FlateDecode
+>>
+stream
+xÚÕX[“ã´~Ÿ_á7œ*b,É–d^¨ag–*à6uêPÀƒÆÑ$*| ²3;ï§[-;ÎLv¹Ô¾ðI­V»»õõEÉ“]’'_]}¹¹úìµNª¬’\&›û„É<“R%RËŒq•l¶ÉO)cùê—Í7Ÿ½VbÉZ器È L¯¾¾þÏæö‡ÕZ‘ªlµVJ§¯¸þö–H7·¯¾¿¹E9Wyüúù§×L•YQŠd͉½nšÕºÈuêº×éh}k·ÎŒ–¨«²LMs´­£?v5°mã²û4¾¾s#Í·ë&6oÞ–>eF×wD¿CÂ*jYU0²¬*KÒrë†Úø­ëv`,::{·Û[¿îýÖz¢À·šUa÷ÖÅ;ßþ“ÈU÷í¡±-ê¥`?Ð^ª
+>/„N7{ÍÏUü9gEgÀ™BiÇ1Îïi´¦FY{\•)»!êèM7Ü÷¾¥¥&òìÞ°ìi440IîÅùä^œÏ·…uñôeÓ#WEÚš®³íãeú¦#âÁ›ztµý–Z¦îžÈ(,LÐí4{‡n÷ÓªŒ†& Û¬X`‘3™åª˜°ýsžsâZVgJ‹‰ÄqÁî 3~ôجX:ºCãêˆ&®à:M4ᇔŒ_s^dºTç>èïFã‚ÿ¸Ö
+W„”áW.k!BD¸IⲨŸõO´¬MS›IG`´µ=ÄC€í&@9ïðÜSô[¸Cp±Ù¯^úKeZÌûEFV Q†`?³z³G•k1,ÍwàÑ
+ØÁ|
+Þ¹Æ!¾ €IºÓK ò»>\XQM·Pè±H™U(ôlí„lŽäã`·
+­CÛ­QGò%R‚€Ö,E0ÝAŠ«×ïÏíóEÀ™}l¶4ð¢ÅÄ6!ËÉ*^Ì|Y0ê9ÓS»ÁŒG¿*YŠh†aû2fÊ"S|®±Æ»qßZÈz2Jp&hàôRÑvPó_,:d›®2U”çÆÅ´QªÙ6œÏ¶á"Ö6÷‚qB‰&1V¦Ìb½¥†éJq¸¡
+Ñ@{s&ÃCü\¨Â"gY^‰E–—ªŠ*ª‰EòœÅºÂ”gyn1åÎÒEë„(Xúu?·]ö!–zð9ÆŸ 
+iøÖ’çmx}o‡¢HoìîÓcm9Äþj‹™ÚDÈu£w±8½ß…WêçÞ(*ýaoœ]' Ó |?«4'u|ß ˆ19ø›ø¯À.v9Ïtí½9UgÅ2%Ø™?Âó‰ÇØ¿†ôŠ«kpD ‰M¯m
+A;¿¢lf±a‰iGW˜,£Œ:K©2QêsåNñ—}À· N‚åi|«°ÉEôí÷ó
+ÃÒ™»ÆÆ¿¨ðÍøùÙÿÓºýrçZb
+endstream
+endobj
+2171 0 obj <<
+/Type /Page
+/Contents 2172 0 R
+/Resources 2170 0 R
+/MediaBox [0 0 612 792]
+/Parent 2106 0 R
+>> endobj
+2173 0 obj <<
+/D [2171 0 R /FitH 686.127]
+>> endobj
+2174 0 obj <<
+/D [2171 0 R /FitH 410.641]
+>> endobj
+2175 0 obj <<
+/D [2171 0 R /FitH 410.641]
+>> endobj
+2176 0 obj <<
+/D [2171 0 R /FitH 374.776]
+>> endobj
+2177 0 obj <<
+/D [2171 0 R /FitH 302.987]
+>> endobj
+2178 0 obj <<
+/D [2171 0 R /FitH 267.121]
+>> endobj
+2179 0 obj <<
+/D [2171 0 R /FitH 195.332]
+>> endobj
+2170 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F14 574 0 R /F11 573 0 R /F70 508 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2186 0 obj <<
+/Length 1964
+/Filter /FlateDecode
+>>
+stream
+xÚ¥XO“Û¶¿ûSè(ÏÔŒ(Q¤ÔK'ÝÍf¶3/™fÝét’´m³O¶JÞ$ýôRòßN߼˚!
+™Èøq‡¾ôZ[w1ƹ<½ýkk+ç1Ç¡8XÄO®ž¥pkÌ åqï(*~ ÷Åq±Ð­ÞjÒF¤jë¶uG‡•Ù™ÝšhÆÞb"ËËS«êƒµ£<ôèË<Ïãª=hÚv+ò¸®jdÚµ‡WªZZ·f§™“¿àEÊÒäìÞ€-/Ó-i¸°Â g±îýõ_“ÜAo)¶:[ÙïgƱۗ.iúÿ…~ÊYÁ³(—¡"< ˜+ððvßš*øLä2n´‹Ò“
+ì×Þ”‚‚É\XÈMNO¶‚EgC.à©Ãø…´ì ¸PÑgñ~AƒÉË—´pqéxÀ_瑉ðV–o7¡?.EìRUÅ/¦qÑ ÄA —óAÕŠh/¦?Tí”9Àí.G_7f,ý°ÝWvèO9È5@@×ôðv[¢WîõñpSe«vq-'ZzŸ[í
+ˆ—f‹®õOkvµÕU¯}Ƭl·¥@hõÊw,Cç{A³ÞøB€j®¹çÍ.&u]Œ×Ø垺–®O|úÒþ´@ÒÙצØO§:R¯Ê]eÿ;I†¯Ì°!Žêö7Ý@CÇ)X0žåaHø”$ür’,w]cq)¦$UG×ÆÖ­³Zû}{è‰ìJ楶2‡þ¨œ´ñäRL bdÁèU)Ö¯ n¨¦’¤;¯‡É(8KJ„˜kJ¸Ï OAÔÓQ
+@ŠqÈ¢ÐU¡ÊÀ"GtO(Ž§¡åˆIX
+Nÿ¼bž´
+Ø®ã4äÇx¡ReÍ ˳4ÊX Í,]ÿS’ñËƆ1ÓR„Ý·Åyã›M90xŠô´íUG:GI
+"%håòÒW%ÄZ¦‰LŽ£KC‹Þìn\MÆe‰©Tü ÑQÄ7®'Áeþo®W0™”ÿp=T¦Å¿¹žPüúõZÓ Ã:ôbK_ÁþÓM1™_uQ”ñïÔÂP_ç›>‚•Êø "â´/Úéo“R
+"èÒvÄ6 !î`שD€j‰“” cl ôóÐ Ń•ô% EÖ¬ŸC÷?Á¿Œ×&tÅn{œâ˜þ‚Cé½R
+endstream
+endobj
+2185 0 obj <<
+/Type /Page
+/Contents 2186 0 R
+/Resources 2184 0 R
+/MediaBox [0 0 612 792]
+/Parent 2189 0 R
+/Annots [ 2180 0 R 2182 0 R 2183 0 R ]
+>> endobj
+2181 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./idct.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 2190 0 R
+/BBox [0 0 512 280]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ExtGState <<
+/R7 2191 0 R
+>>/Font << /R8 2192 0 R>>
+>>
+/Length 2193 0 R
+/Filter /FlateDecode
+>>
+stream
+xœÕ]ÍŽ$·‘¾×SÔm%ÝNþ“W/{Ù‹ÔìÌ ٿ¾Éøâ]Y^Lû’ Ó‘ Fðc0 ™¥ßïÇk¸ë?þûõÛí?·û/¿ý~;î±ÇýÛm1~»•A¬ßn¿Þrå5ßcÍqVÍ㨠ºõEK­Ó§Þè©žG:~½ýïî½å×rÿá8î?ÿ÷-††ê³Á>šˆ¾Ý~šu~yé\ý„ûóÞ7ôQM¿N,ßiÀPªèß„Nÿ“'ÂJ?<¯:.‹Ÿ-Æu—ÅÞµ®koµŠµ>(úóÄÃ̳h1OL^ÿùpÅèqA‡7Ïâ‹yP×›‡Û?×µ·z¼3Ï÷Š~È<Î:îÝÙlò
+1Å€!~d1xD‰¡‹51°Šƒ!C¢¾¨©&×1¸âˆk@5ÀJcÚ'—bŒb劊žxV¦âÇ-87C"òn®Z2“! nó]Œ¥H+q6*,*M1 mœêh׉Ã]'ÎÞÃ"eÚGhHÖŒv²iódùîÆ°Ûµ• G+›=´×T.nú¾þûÛ/ÓÉÌ·FüÍ"ç«r¿‡^Ãk/÷Qîä‡æ߯³Fˆ¯…m¸Êô0•Ì*DÖ<eç_®:kYÄRÝ(î¾~=óí¿*4rÓý07]Å®úŒñÆ‹a°u±©Àã ]–v’¹í½_“‡aý§âÕQ­¿–6@‰»Jf=‹0 ¸ûú]ôÈØ\À«2Idx<<¹Ù²›üð<0¦@›qsTNdåÕnkQà5Yjðõô¬:“¬;Ä5±žE¬:POÅ«]­/x0<×E·†›Ýé}~¿Ðüçë·ûŸ¾Üþøólùxí÷/¾!G0U¯µÌ¯Þ¿|»ýðòã—¿ÜþëË\Zßy2 0É_Œ‚)Îs:4™ë‹²· x ¡‡¥KÜFÌ~Eb]‹rŽŒîEºêR¯vm˜æágÕ%E}Ü#K½ÜpáÙýÜ‹=l™v_Ò÷afŽ.ÐúôPÕ½ï¾d²`Þ(î¾~=2^×D§Ã$ðªD 2H ¢žl6ü
+ð#ÖßcP/À8š¡‡„t„?‘”EWÂb!€QˆâÂÐ|˜4…Žî¶KYcóÕ…'¬7Þ>Åæ¶R2<a½±dÿEtÚ-Rƒô¢†Í"U "x¨f‘Úw‹´Ctµc³Õ‰(.7p׆i'8³nÄtàY2p5¹ÍñØî‘ŧÛ`¢Ëf‘P÷‚(³«ã*‚‡® õØ,2õ‹®½E˜Qˆâ²»8L8Å™uŸ,wÂz“¼D±TD ~àNX2p’Ø :ìéCzÑÇfbPÇEÙ,2ên‘ÑE×è›E†AD—¸kôœY“:p,¸\©m÷Èz»¾œ?1ˆœrŠ’(*ZÏ3~+Ÿ(®+ˆšË8=öaD/=_o uL믕†ô`RýTÞ@W=÷…Ñ}0êÇ
+:ÒBö,ìHUó1 9Å’ªæc(“GïgªšIÅåcð@/HίHý•xAÖ°CåcШÖ÷©¢«Bû•²›šš".UtÎàt(2B ›
+œ1ÞÐe͸v[|"-Ëœ¥ Þ`¬ÎªªZA_YË2ta½ÖFÀè^¤û°â3ÀÔSœÕ‡ÏX’ÜFìÀôðÃvÂz»å#k„ šÃÝ|D‹‘‡H£Y„œF1< ªeᮊ¬@˜óë!k#ë‘¡@ÄpÑÀ}˜4p£Ú1é} ÿŒÅ­s³I…ÎYsàZv˜P-#“[¶$ŽÄÉuX'×æD艦‘‘Q‘•«áSZN´0ªQ\¸O
+„ù|(m!Fu2?t³‡»*²aèB„¬€á"dÃåîÚ0màçÈ?cÉÀ!ZçfÃ6p¬)4g­Éiµœ,ƒó>Z9r²´MNÁ×’>Éi5Xù6Òƒ4œ¨§bjWê Œ×uÑÑ0¥hç¨Ý% Ï|XŠ\ È¡g 9v݈@¤}
+Î`±‘.1#x‘ ›¦±Q‘ÑE60Ú1Ð<‹(.§‹ÃÔÓSlÙXÙ°ä„›)¦›¶‡ Å–v9˜“U7ËÊž·…=˺.õé¡Ø².s"PdU/Û¢^dM—úŠÇ"k¢Ó€£XPQ¶pãÁÁF¶€¢l¡ÆcOŒ’ÞÉéêMoçÐ$½CÑôvÉÕ§JKƒätµ'ZzØA±z*¦v¥¾àÁð\Ý·Á9äÿ'ùžz]Àh¤™:¿b‹fšÁÎœçˆùº5,²TÜš«¿2mÙA&~%Y€Þ᥇_mVâêê ì±®‹îƒ#’Z§IÏóe.S—©S óY÷¤ÖI÷‚™ùœ{_3‚UŽ„¦X¨w©=X’¬•’‡«Ì 0
+×BôQËgDÅg†Ï…R-ˆ@X §Fz'VªâÀ
+X8•BŒ<œù
+ºtODèí']<-¤bPó"¢¸0pŸ
+ç N;ÌwCwö¡G,M.ÉÖž(ÛÛƒ±6ñ*‚Û݇ްtªÈP]ÛþžÝ‹tÕ%ù‡‹Ãü7Þ»{ýÜKÈCœÈ^[³¨—׸ެµ« < ·›k¥+3«¸úúUæ;“}Š‡»
+уUZÔSñðõõêâò¹×E‡Ÿ8š,2^î¬6wÅÕ×ׂÉ^ ¬§ÅÃ×>pº.:5/ÀD–^Ϭ¶gÅÕ×ןÉ^o¢§yx(¾þðaÍuÑ©ñäÃEÐ!Л¬3ãЩqìsãÉ¡"v‡MèN:T$©®´Í0†±ï8uþ^&­ƒM÷òDÆAM¶ZÈøS
+Ë+syî` .ʳ°kœLRsZ?Ö“hª¨~*oN ùTÃ…Ñ©ñ£Yvx5³Úš7xTž@Ö´ “;¼ÚDOÛàQysö–ïšèÄxœ™Ù6x¡H`Wª‡‡òì²&ÙÜà…2DÏððPÞœ€]±dã]ÏÒ ZëÄGdñ¡6¡9*/N@~Òä«ü| ZÓúEôD×¢•w'ЛK4]-!ÕÜ
+hv¡’ùá?èKav,skGŽ–Ù‹˜kŽVDR]p.ÚÍ‹lÎï3À4sòwšÕyUQå§*ØÕh£`d/bÎFèçò*¬«m8Áh^ds‡Ÿ&]HŒùƒäH>E‹üñÃM4yR´ÈÒ¾¾FþL"žR"zpý+ZäϤ¾ß—\O>î4–üóVÙ#dFõ"ö©²Ð4b&ÒTWó(™1¼Èðïâg€‰Ï¨äKŸoL³?I†º |”j44¼HT·!4‘D\6Fñ"ö}u}˜¸ÞtSÀ4"üœªm
+øWÎøë€l›‚ùàE²òBS£&’T>/ÑFˆÑ¼H‹nïò`š9ùó”ä¢4U±¢1þ¹ºá#{ Ô„Þqýª Œ 'Í‹l¡äg€Iæ<‚~
+IœC”7ÿ“ÅýXý¨_9€dx,PÄù”Í÷q=V¿¸„Ø…ÑáLÓ¤‹”æb©
+î³
+­í£˜ë¢%$H*Ž¨$">B ÷«‰¸Î«´»<œþÎ(ŽÏ¥vaìåpb}ÊkµŒËRSqF#¸ì„Â:×±; $û]&±€iý$zÒŽrÁ¥2ìV“Øìšèt‡!—nAcA—(›–zþyüèÃxfd/’uÝ.SEŠê*>”gFó"-ºPå3ÀTsÊås¢9õ(*()‰ï7ⶥdFö"v®#ô†“’’üÿ'ض•Ìh^¤©.1çÅa~ôçy×w>¯….…ëRXª÷/ÿsû!ÿø·âú§Îf3«°L’ùi±Úügµ15þß퇰Ä{}!l¾ç´”ÎÒÿ¬«8ô×2Ö¶KߨôEŠSØk—×RÒ¸¿h~AõR_s®sÕ,R;¯âã¾0écÊåu}\ô2¨:5±Iw8õ®Hï¨/±%’ËÿB÷KÈùþ’š´ŸNû–žô-÷ ÕçÒHå%£rÛ*GéòË[ƒváô(ê›3Ç™Ñ4½ê÷ÓíŸÿf5‚
+endstream
+endobj
+2190 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115428-07'00')
+/ModDate (D:20090924115428-07'00')
+/Title (idct.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+2191 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+2192 0 obj
+<<
+/BaseFont /XKVMYW#2BTimes-Roman
+/FontDescriptor 2194 0 R
+/Type /Font
+/FirstChar 45
+/LastChar 83
+/Widths [ 564 0 0 500 500 500 500 500 500 500 500 0 0 0 0 0 0 0 0 0 0 0 667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556]
+/Encoding 2195 0 R
+/Subtype /Type1
+>>
+endobj
+2193 0 obj
+4737
+endobj
+2194 0 obj
+<<
+/Type /FontDescriptor
+/FontName /XKVMYW#2BTimes-Roman
+/FontBBox [ 0 -14 633 688]
+/Flags 65568
+/Ascent 688
+/CapHeight 676
+/Descent -14
+/ItalicAngle 0
+/StemV 94
+/MissingWidth 500
+/CharSet (/C/S/five/four/minus/one/seven/six/three/two/zero)
+/FontFile3 2196 0 R
+>>
+endobj
+2195 0 obj
+<<
+/Type /Encoding
+/BaseEncoding /WinAnsiEncoding
+/Differences [ 45/minus]
+>>
+endobj
+2196 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 1309
+>>
+stream
+xœeRiPSW~/¼<¨S@4yµµj)
+("E´¢‘BˆKœÚäe1 ‰„e©¢W…7Ö kÁ„@+*…ªu©ŠV¤¶ÈŒZZ[kNïË\~4éL§?úçÌÙÏw¾spÌ‹ƒá8î-ÕèSˆÄ W¤yì`6ggrØY°¹|\qÜY˜¸šðÞðöªÉ]⛧ÁÒ7`áTŒÀñl{C¬Á˜“®Q©3èy%›ç¿ÿŸ',**ŠNÉù7BÇ1&*~×­˜Á¨gÒ2¢éXw¶N§ÙA«t9Fµ‰V¤¦2©ž²M
+£¥×ht£Ñ`¦çÅΧÃCCÃBÜ""A£OÉ4Ñÿ
+€õ°õ³­•²²AXªÛ ]½Y
+ÆÃIpÎÀ%óŽá)m…¡fåË^¶µe:XÔ©qø݃¶Wþü™l²k©ÀLîËسÇò¥ÄRFñO—+•eÚ í@nÙ™¦Öå(ÀfÝ ½‡˜K) Ì‘¼R30QkeÛbÂÅýÐW&Ì [š{’ä‹k/¯:ªöÕ¹;YÛ;
+;‚ ïéÈë¤7QÀ=ÑìAE7¸Bõ_h¿î¼­:+lÕ–ïªL¤H_¶ØÖÆ>¿ê‡F˜!þ| êö×\Ï</k¨HɺUÆ,{½R¨¯¶Ø-€Ê°ÚÌê®Ì»Ã#½¢ÞÎÆApôåö¦µfÌ>.¯¡øOîô6œ»2ãñú¯Êä­J¨7Zwe~T±/ ó¾óô7€ºé”‹UVUzºH¯7X?4¹‰*8÷»ÜáV ûóÇYÌÌa“ä$º=‘Ä]Ï hÿÕ0ŒþƒDkoP ‹à ®g‡sìÀ]w Ï~/€[ÈJPrè°½ýi@ÝjÎßkˆ!ŽòìÀþÀ½%Åe§:Šò:…§¼¼Ì£‚V.ϲØOê…ÚºŒ£f@¥Ùv§3½¦ïF‡šú.Šzœµà!Êî‘]”wKêÐäZj[3ëÕƒŸ‡%ÏVâZ)@d~RvÌ„­HD$@3Àâ¦E]²vùÓu@Á©c¿@!œóñäæ"F,j‚ÁÐ b0¬‘B)è¼`ìb,š†8© «mü.ì+kvTˆj+[œžq…öþœÝèzO0A’‰hnUa×·Õ'úA Ô“hëÄ8÷& Õ®ÙnR®Aã-œm…FÁ­‰ƒñ<ÖF—_#^ÿžxA@»û ¥@aQª“’Äh@øi4©7ùœ¼Ï4ú@WUÛÙÁþvHèCAE(| ù ‹w Fˆ‹ÄÈéˆù_0ªyNXÁ^.¿çÀ¡fŒ€Ýîhm(×Æ;^z¬¤äPµ½ªä( jXµ¢ ì,ÌÈ-°ØŠ(+ü¼‚·ì`îQðÅþêÁ
+²upø|Œ` p– ¯T)É+øÄ}ÅB.ƒqOÇÏ?ÿ`øméæÌJ¡VcÕZâj÷tüÖvê F$‘Ë·-ˆ ¡5(‰»›ÁóÍr°›Pê [&?™ÒRæíý¤ÚÛÃþþÝk·
+endstream
+endobj
+2180 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [251.415 508.073 282.603 516.874]
+/Subtype /Link
+/A << /S /GoTo /D (cite.CSF77) >>
+>> endobj
+2182 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [408.69 236.8 423.412 247.648]
+/Subtype /Link
+/A << /S /GoTo /D (figure.7.1) >>
+>> endobj
+2183 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [342.829 175.526 362.533 190.013]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.65) >>
+>> endobj
+2187 0 obj <<
+/D [2185 0 R /FitH 686.127]
+>> endobj
+2188 0 obj <<
+/D [2185 0 R /FitH 668.127]
+>> endobj
+597 0 obj <<
+/D [2185 0 R /FitH 277.4]
+>> endobj
+2184 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F14 574 0 R /F11 573 0 R /F10 668 0 R /F7 674 0 R >>
+/XObject << /Im15 2181 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2200 0 obj <<
+/Length 1361
+/Filter /FlateDecode
+>>
+stream
+xÚÕXMoã6½ûWè(£ÃïH³I‹Ŷ±Q Èæ ÛJ¬"–]IÞmþ}‡¤èX²²Q°Ž±{E ‡|3oÞHÂÑ}„£_F?OGgW:2ÈH*£é]D$FRªHj‰UÑtÝÄ„Ðñíô·³+ÅöM FÌ(ðãŒ.~=ÿczy=Nc±BãD)_]Ÿÿ~é§Þ_^|xiýŒp³{{ë$8L¨‚IæÝÞeeVŒ©ŽkpcT|_ŽIœŽo`°¬üì*µ&öFƳq7™¿YÏê4/ÒÙCæ-·U^ÀÂ{W/³´ªÖnÙ<Oëü“õ–ý8N8¡ñ|½Z)¬¬ÓVÚ‡j÷0-ÞÁ"¯ €%„ #„?]æ³mð¦‚Ç›r½ñG,ë<f"X¼¾ó6Û¢Jëm™ÖÙÂO¤w^/WÎÚ­›ÛZ`O—óùúa»*ÚÎ\ü¶„ œ¾¬ü“uá¯6=‡Èî 쳸Ì6eV5™¨ü\Zøk^äuž>ø›€låö„åëÆÌžÆ^]ÌýºÍ¶qÿþbêsŸ…ì#&rž‡ý
+"âçz…ƒ`®#€Œhè3SÇß&\“â'Îc"C òø|âmkõ¿|媮j—ÝJ¾ò¦¾3ÀÜźr³_ª½(aQÌáJ‘M‘vÁF7 õ8>¯ªü¾)÷é ¾íƧ±;ZŸ]ß÷ø5†…
+øû°B€¤™æ¹sN)èñE)’¯pÅo;` "šÚ¾$@wv´²KN¹-æÐ¥–8Œêµ½*ûN`owÙ‚)'§À0ßRü ˜Zevã4æ—`¸K‹ðN®–Ð?²Ò7)bm:¯ËEV•¶ýªµY±”}]nÝ<T±×@¾ŸcHŒÑ»Ä|ĘæÆJ­ &n£C1¥ tj—Àwïzä8+wz òÜ…m5† 7"Á
+endstream
+endobj
+2199 0 obj <<
+/Type /Page
+/Contents 2200 0 R
+/Resources 2198 0 R
+/MediaBox [0 0 612 792]
+/Parent 2189 0 R
+>> endobj
+2201 0 obj <<
+/D [2199 0 R /FitH 686.127]
+>> endobj
+653 0 obj <<
+/D [2199 0 R /FitH 475.218]
+>> endobj
+2202 0 obj <<
+/D [2199 0 R /FitH 444.355]
+>> endobj
+2203 0 obj <<
+/D [2199 0 R /FitH 424.197]
+>> endobj
+2204 0 obj <<
+/D [2199 0 R /FitH 395.128]
+>> endobj
+2205 0 obj <<
+/D [2199 0 R /FitH 373.032]
+>> endobj
+2206 0 obj <<
+/D [2199 0 R /FitH 353.428]
+>> endobj
+2207 0 obj <<
+/D [2199 0 R /FitH 324.359]
+>> endobj
+2208 0 obj <<
+/D [2199 0 R /FitH 302.263]
+>> endobj
+2209 0 obj <<
+/D [2199 0 R /FitH 282.659]
+>> endobj
+2210 0 obj <<
+/D [2199 0 R /FitH 263.054]
+>> endobj
+2211 0 obj <<
+/D [2199 0 R /FitH 243.449]
+>> endobj
+2212 0 obj <<
+/D [2199 0 R /FitH 223.845]
+>> endobj
+2213 0 obj <<
+/D [2199 0 R /FitH 204.24]
+>> endobj
+2214 0 obj <<
+/D [2199 0 R /FitH 184.636]
+>> endobj
+2215 0 obj <<
+/D [2199 0 R /FitH 165.031]
+>> endobj
+2216 0 obj <<
+/D [2199 0 R /FitH 145.426]
+>> endobj
+2198 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F11 573 0 R /F49 457 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2219 0 obj <<
+/Length 699
+/Filter /FlateDecode
+>>
+stream
+xÚÝ—MÚ0†ïü
+UñÚ^VjÑnÕv%šJ•(¶¤€TÁ*°•úïkÇ1 )„ödÇ™xfüxæ‚戠ƒéàæ^2ØH&QúQ"±–I-1e
+¥34Ž68N”ÒÑènøøð%ÅLG_‡é§Ç‡x’~¾¹×•-€i¬¤²Š)g3 ¥Ï0¢ÅB1”0ë@Bi.ñž9'‚èýf³œ¯â
+€«TI“‡)î׎j#Ú„rÀÜšì–å|(è4Öå/«Ó­ L˺m×nTÑÔ?R™<-·~ÉešÍüzž=çÙ&[¹2ÚN·ËõÊÛ<¹…?Þf–¯ŸŸ—«¹š®v¯T´XÎYž¸à½5ŠÚ¢!|àë|–åþ­ûMóö•ŸT
+endstream
+endobj
+2218 0 obj <<
+/Type /Page
+/Contents 2219 0 R
+/Resources 2217 0 R
+/MediaBox [0 0 612 792]
+/Parent 2189 0 R
+>> endobj
+2220 0 obj <<
+/D [2218 0 R /FitH 686.127]
+>> endobj
+2221 0 obj <<
+/D [2218 0 R /FitH 668.127]
+>> endobj
+2222 0 obj <<
+/D [2218 0 R /FitH 651.848]
+>> endobj
+2223 0 obj <<
+/D [2218 0 R /FitH 632.242]
+>> endobj
+2224 0 obj <<
+/D [2218 0 R /FitH 612.635]
+>> endobj
+2225 0 obj <<
+/D [2218 0 R /FitH 593.029]
+>> endobj
+2226 0 obj <<
+/D [2218 0 R /FitH 563.958]
+>> endobj
+2227 0 obj <<
+/D [2218 0 R /FitH 541.861]
+>> endobj
+2228 0 obj <<
+/D [2218 0 R /FitH 522.254]
+>> endobj
+2229 0 obj <<
+/D [2218 0 R /FitH 502.648]
+>> endobj
+2230 0 obj <<
+/D [2218 0 R /FitH 483.041]
+>> endobj
+2231 0 obj <<
+/D [2218 0 R /FitH 463.435]
+>> endobj
+2232 0 obj <<
+/D [2218 0 R /FitH 443.828]
+>> endobj
+2233 0 obj <<
+/D [2218 0 R /FitH 424.222]
+>> endobj
+2234 0 obj <<
+/D [2218 0 R /FitH 404.615]
+>> endobj
+2235 0 obj <<
+/D [2218 0 R /FitH 385.009]
+>> endobj
+2236 0 obj <<
+/D [2218 0 R /FitH 365.402]
+>> endobj
+2237 0 obj <<
+/D [2218 0 R /FitH 345.796]
+>> endobj
+2238 0 obj <<
+/D [2218 0 R /FitH 326.189]
+>> endobj
+2239 0 obj <<
+/D [2218 0 R /FitH 297.118]
+>> endobj
+2240 0 obj <<
+/D [2218 0 R /FitH 275.021]
+>> endobj
+2241 0 obj <<
+/D [2218 0 R /FitH 255.415]
+>> endobj
+2242 0 obj <<
+/D [2218 0 R /FitH 226.344]
+>> endobj
+2243 0 obj <<
+/D [2218 0 R /FitH 204.247]
+>> endobj
+2244 0 obj <<
+/D [2218 0 R /FitH 184.64]
+>> endobj
+2245 0 obj <<
+/D [2218 0 R /FitH 155.569]
+>> endobj
+2246 0 obj <<
+/D [2218 0 R /FitH 133.472]
+>> endobj
+2217 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F14 574 0 R /F11 573 0 R /F49 457 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2252 0 obj <<
+/Length 865
+/Filter /FlateDecode
+>>
+stream
+xÚå—MSÛ0†ïù:Ê }K’ÐÒ™–|h'p0‰ž'ØN;í¯ïJr2ù  ‰KdI«Õjßg™¢¢ècïCÞ;:±(#™æå7ˆiJ´6H[M7(Ÿ¢1fL&Wùç£#6M3JDfÀO0:þÔÿ–GI*„À†$©1ŸŒú_†qh0<> ½Ÿív_µÛ!¤Ì
+Â)C)70(¢{ÉÉÖZ4N¥8O¬Àõ²š­KR®9ŦǶðÀL§×eÂp»M9«Ü4ZÔnQ»ÆU ·¸-Úr^Åñk?ð;ÚOëùbQVà`Šj=Ëñm9»uu:¯§®öA"fˆap
+endstream
+endobj
+2251 0 obj <<
+/Type /Page
+/Contents 2252 0 R
+/Resources 2250 0 R
+/MediaBox [0 0 612 792]
+/Parent 2189 0 R
+/Annots [ 2249 0 R ]
+>> endobj
+2249 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [376.746 202.877 391.469 215.929]
+/Subtype /Link
+/A << /S /GoTo /D (section.2.6) >>
+>> endobj
+2253 0 obj <<
+/D [2251 0 R /FitH 686.127]
+>> endobj
+2254 0 obj <<
+/D [2251 0 R /FitH 668.127]
+>> endobj
+2255 0 obj <<
+/D [2251 0 R /FitH 642.224]
+>> endobj
+2256 0 obj <<
+/D [2251 0 R /FitH 619.808]
+>> endobj
+2257 0 obj <<
+/D [2251 0 R /FitH 599.883]
+>> endobj
+2258 0 obj <<
+/D [2251 0 R /FitH 570.493]
+>> endobj
+2259 0 obj <<
+/D [2251 0 R /FitH 548.077]
+>> endobj
+2260 0 obj <<
+/D [2251 0 R /FitH 528.152]
+>> endobj
+2261 0 obj <<
+/D [2251 0 R /FitH 498.762]
+>> endobj
+2262 0 obj <<
+/D [2251 0 R /FitH 476.346]
+>> endobj
+2263 0 obj <<
+/D [2251 0 R /FitH 456.421]
+>> endobj
+2264 0 obj <<
+/D [2251 0 R /FitH 427.031]
+>> endobj
+2265 0 obj <<
+/D [2251 0 R /FitH 404.615]
+>> endobj
+2266 0 obj <<
+/D [2251 0 R /FitH 384.69]
+>> endobj
+2267 0 obj <<
+/D [2251 0 R /FitH 355.3]
+>> endobj
+1943 0 obj <<
+/D [2251 0 R /FitH 307.03]
+>> endobj
+2268 0 obj <<
+/D [2251 0 R /FitH 307.03]
+>> endobj
+2269 0 obj <<
+/D [2251 0 R /FitH 271.164]
+>> endobj
+2270 0 obj <<
+/D [2251 0 R /FitH 187.42]
+>> endobj
+2250 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2275 0 obj <<
+/Length 1684
+/Filter /FlateDecode
+>>
+stream
+xÚíYÍsÓ8¿÷¯ðÑ™%B’õeì°-ìÀ¡ mv¦ppcÑz6±‹í´°ý¾'ɉ¸¥¥-{ádùéùé}ÿžE4úsïÙÞÓW:‰R’*®¢ÙçˆQEŒJ#ea\G³<:‰5IÉdªµ‰^î¿=<žM¸‰ÿÚŸ½~{8ù4{óô•é‰H¸!Zi8À}̘Dž=Î|9Ûû²Ç`I#¶9Ni¢yÍ—{'Ÿh”Ã曈êèʱ.£D$D3üpï½óº÷ÏeŒ#t¤¤&\(úa¶´“)—ZÆ3TúÛ¼™h g">.þµ¨(ÂHÊ“hÊà)¥ÿø#•ô´hx2Ç•bÀ)}žã⬴ùï UØf^mQ•pB"â¬Ìq‘ĵmÚº˜ãNãü1î‡$%:ÙñƒHÍÍ~éX !p´×óèåñn¨@cª‹?˜Lùu‰žjí™­Õtè•u9WºMÈJÅÀ%L7p|˜®fqã(:~nщŽ×…‰ž2©&¦N™”ò]…!ÄJt,e©8súhÐǽÎ+¯~V”EyækÏ}”§RDª¡=¹W.)r ±‚`¬Š|•-ðÍÄŸ«Ú“QŠ[ÌWumý)c:]xysäø‡\m™B¥p~笶Ԝn¼
+ORtL‘.,ø>8¬›?»Aa ¦e¢‰J†Hw+ë~¦àAÅnS€êšLCbÂÕߣ%§Ðþî^‡šŽE†b˜…Ww^|¯ ûå7Jð8ã¸TñaåàHÌD´ÆÙZ-ÀØÕ2XZ”¹ýJü!u¦áïáúAÕ©+,Ä+ÿ²Qdëè¸À&GÚÍï°çhM’Ý¥ç
+§øÇ°ë‡<šÒ°â\’¥ÐæË*ó˜{b@"û‘25/BÜšgPx eUέgs„ ›¹ãÎý['Ú™Š ãX–&¾jž€¦4ôBÇ@½+:ŒÃ:ƒ¹BAï4 Æ¿¸”êð ÐsW‹–¸ö]£ äö<k»•íä ,ÄUeÖñ5ßšÖ.ýQ̯œÊ›–ƒ#jº,"õ¼±C%$ÕÅÙ¹sóôã¤Ã~DO`]+ A žvÕÔ—0ãIξIVuNŒÁ zyQÖ aºëî+pþ—¥';cð‰ ÖiÁ`J©«¥'ŸzÍÛ¶#¸D–¶ºxâæ^rÛ5uÈÖûCŽu
+AZŠç"äÛt½1#²:`B^\Þ­
+endstream
+endobj
+2274 0 obj <<
+/Type /Page
+/Contents 2275 0 R
+/Resources 2273 0 R
+/MediaBox [0 0 612 792]
+/Parent 2189 0 R
+/Annots [ 2271 0 R 2272 0 R ]
+>> endobj
+2271 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [199.19 267.779 221.661 276.579]
+/Subtype /Link
+/A << /S /GoTo /D (section*.111) >>
+>> endobj
+2272 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [199.19 153.183 221.661 161.984]
+/Subtype /Link
+/A << /S /GoTo /D (section*.111) >>
+>> endobj
+2276 0 obj <<
+/D [2274 0 R /FitH 686.127]
+>> endobj
+2277 0 obj <<
+/D [2274 0 R /FitH 668.127]
+>> endobj
+2278 0 obj <<
+/D [2274 0 R /FitH 584.383]
+>> endobj
+2279 0 obj <<
+/D [2274 0 R /FitH 548.517]
+>> endobj
+2280 0 obj <<
+/D [2274 0 R /FitH 346.017]
+>> endobj
+2281 0 obj <<
+/D [2274 0 R /FitH 326.185]
+>> endobj
+2282 0 obj <<
+/D [2274 0 R /FitH 305.986]
+>> endobj
+2283 0 obj <<
+/D [2274 0 R /FitH 292.113]
+>> endobj
+2284 0 obj <<
+/D [2274 0 R /FitH 266.858]
+>> endobj
+2285 0 obj <<
+/D [2274 0 R /FitH 246.658]
+>> endobj
+2286 0 obj <<
+/D [2274 0 R /FitH 230.867]
+>> endobj
+2287 0 obj <<
+/D [2274 0 R /FitH 211.59]
+>> endobj
+2288 0 obj <<
+/D [2274 0 R /FitH 191.39]
+>> endobj
+2289 0 obj <<
+/D [2274 0 R /FitH 177.517]
+>> endobj
+2290 0 obj <<
+/D [2274 0 R /FitH 152.262]
+>> endobj
+2291 0 obj <<
+/D [2274 0 R /FitH 132.062]
+>> endobj
+2273 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F14 574 0 R /F70 508 0 R /F11 573 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2296 0 obj <<
+/Length 1882
+/Filter /FlateDecode
+>>
+stream
+xÚÕXMÛ6½ï¯Ð­2+¢H‘R/EºmŠ6I£h‘öÀµ¸6QYr)yƒô×w†CÚÒÆY èöЋE G3äÌ›7¤ód“äÉwß®.žßTIÕ²Éê.a2ϤT‰¬dÆ
+•¬šä}ʘ\ü±úáùâSÕ:Ïx­ÀŽWºüþÅ›ÕõÛÅ’sžªl±TªJoÞ¾øéšDW×—¯¯®ÑÎE¼?¿õÄà2Z\
+„œì®¶ T<eWøéÍ¢–iï>,x‘j×ÐäÕåŠfÏËüUß-_õn§G{Z„ =ƒ×%«2^Õdûe·?Œd`¯Þ™Ñ¸ák¿ÆëÕÅ_ >ÈvŠ
++3!e²Þ]¼ÿ#O˜›™‚5𪻄 ž)†¶É»‹ŸÏEXfR”‰ÌEVWa“¯À÷bYäªLW‹¢J?îá­JQ¦˜HßÙ¿_ÍÀƒMÀ³,é[Üñ­‡ã&y•UàkªóÎn:Ó|æj!Ò+3¬K–:»`é~´}‡)©îÊ•3Ãèìg†ÏG£¬T&”z QWGc–t2V%¥’Y®-÷W‚Û4l``Áö²Ã(fcÜ1¯“í¾pNû0úIÅ2ÅÙ,L@(hü¶
+á)Ø{ÿ[vV߶¸mäÿÃ`šG@/ò<c¥zÐCɤÿcÐsxýRÐWg0Ï%&¹MV!sù ´ðŸ ßžÈElã뺧Im;ÛmH6nÍçA}pnBþ©]zj§àùÃRô•¶$ Cº¥qk;ã ÏEVäåÜ“ʺ˜Åg)˜(âfn–O6KvG³#\õN»úÎ#È9س{UfŠ˜’Mg…,Ó;<ùÈ7$îîèËG:fPˆŸš.PMƒA@‰HµëGì
+@‚aöMÖÑ
+ŒL…R}6ÐÓøež; }-žÆ'Õ˜àGŒûF¤°™Æ´^†ƒßMCo·¸¢4þÕî·Yï6_@@F4ž.jçа?lmÄXQ‡B¯#@/¨‹‚H§½8
+RO
+á”ó,Ló¥ÀqG¸!õ°gšsñÇšCöõ=@Å@¸øð,vã…!Ža=]¸I£Dèý¹V²îÛî›ß4ü†Bk?´#u—#ÍAÏËé…*÷Ô
+ÜV ‹é©ýôÆéý–†<;꣄aá¨pÇæ³bàB¼K•ÕqxÞØÍÁùº‘Û$4xûÝEòÞ먬˜ý!
+endstream
+endobj
+2295 0 obj <<
+/Type /Page
+/Contents 2296 0 R
+/Resources 2294 0 R
+/MediaBox [0 0 612 792]
+/Parent 2189 0 R
+/Annots [ 2293 0 R ]
+>> endobj
+2293 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [465.995 201.085 480.717 211.933]
+/Subtype /Link
+/A << /S /GoTo /D (figure.7.2) >>
+>> endobj
+2297 0 obj <<
+/D [2295 0 R /FitH 686.127]
+>> endobj
+2298 0 obj <<
+/D [2295 0 R /FitH 649.24]
+>> endobj
+2299 0 obj <<
+/D [2295 0 R /FitH 649.24]
+>> endobj
+2300 0 obj <<
+/D [2295 0 R /FitH 615.865]
+>> endobj
+2301 0 obj <<
+/D [2295 0 R /FitH 544.076]
+>> endobj
+2302 0 obj <<
+/D [2295 0 R /FitH 508.21]
+>> endobj
+2303 0 obj <<
+/D [2295 0 R /FitH 436.421]
+>> endobj
+2304 0 obj <<
+/D [2295 0 R /FitH 400.556]
+>> endobj
+2294 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F7 674 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2307 0 obj <<
+/Length 979
+/Filter /FlateDecode
+>>
+stream
+xÚ½WMoÛ8½ûWho2vÅpø)õÖMê¢{h±©
+,æ Ø²-¬"¥’Ü´ÿ¾Ã¹’ã 'Lz4Î{o8¢i° hð~öw:;[h$$QLé:
+®BM2´ŽÃËwçŸ>~N/ç,¿œ§>}œ_§ÿœ-âAÎb¢•Æ ìb
+Dd¬z'ì ´Ç$`1Æôxï·ÅÒàßAXfͧe”aû®ÆŒvÛ¬r½§É¿íŠ&_‘Q“ (J«0õ% >W‘Ä=߶-v=,½¢×®kí{Û÷¹D­Ë§S$£êŒ‰Lö¸þ{<6.œ1þy$&ª69”¾>
+ŠÂð ~ ÿÜîÇñ
+endstream
+endobj
+2306 0 obj <<
+/Type /Page
+/Contents 2307 0 R
+/Resources 2305 0 R
+/MediaBox [0 0 612 792]
+/Parent 2321 0 R
+>> endobj
+2292 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./fdct.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 2322 0 R
+/BBox [0 0 512 280]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ExtGState <<
+/R7 2323 0 R
+>>/Font << /R8 2324 0 R>>
+>>
+/Length 2325 0 R
+/Filter /FlateDecode
+>>
+stream
+xœÕ]Í®¹­Þ÷Sô.“
+¥žWÉc̉,yìMýç¶öZ«z냪qO<–{ˆV÷ÄäíŸ?WŒlx÷_ÝYï©ÿÜÖ^ëñÆ=ß«ú!÷8ï¸wgóýÉ å Ñ[¿äå–üÎ+¾e›™­¶øÖ#ß¡öoÄØ×dD´NF)ø±zþ„1ž?ÆaÃ9…ù:û@Ö¹Eë?µµ×
+ËË5ß­ú÷ô5U÷5Sw?>0¤î'¿žßø¥¯I¹×7^é~ÝÍlµåÝ#ߥö‘¡3ÜØnðŒí]<Â<¶Wx¼Aà ¡ñn m4¼±µ×úv}¯êÜ“×PÊk$ÿ&ž>0¤â_ßüv•5†ÊÛ!”ý0ØÌlµå7Ãç»ÔÈiè ׊ $Ò°ƒÊuâc ýf r)V^V±Íü„1rs½',È¡'·â°Š¼1,¥ã*X¤ ¢kx Ck‰¥,gr9`q¹Zâri3vK‹9æÈV¾ƒS˜cL±iý©¦åE.^”kÛ™!MdŽ"#[¹¶Ë¥nf¬dN]•^Ø˘µ´kÉ+@Hî…
+?É ÞÂj —Ë,ÙÂjI¸ÓŸý|ë3€A¦æër¿·^z‰÷Qîô®Í¾ÜZŠÌ£²àD L¢jfEèß)!f鉫iñ…†ÖÅѨmÑFm×ΘHÏŠ18C°¡ÜTø¤ø•›(¯ È4ÛP¬µ± ebµåÁ)±ƒFÇÚ©ÖèرCÄj6?¢b(늋¢ÓnÑY³Û`”ŽyÏù´¦5ý×9ï4;Î „ÍÀDÇÆ-
+!Æù\è&(¢¾ÜÂ1" €q4§Âd‹¤˜ŽÜ*SIYm5¥´0ªS1\ÜOÏ
+7¯×
+ã;ƒ×
+5ÏÅ\¯Ê+ô×uÑq7ål{94|#ܧ ‰Î{ZQû0…3†tÆù Þ>úèL-#9<dóBoŸªŒ®¶F÷~
+e7` i«„\½ª®5r.Ó†uŸyÄÒ£1¤`¤ÚàÒ Kf:=ƒ«.—¯`9g/gpÛt"ŒàUV:_è¾y„óö°Õ¶)Œê2ú ×긋ôŽ³#ÍíìáKO.ëšçÖùÃ#–Ì!›fB®hžÌ!g™˜Z0’SÁð©&”€æ©
+¿ýlK†…V ®^U ך /ó7ΊÞÃiq¬óÐr˜‡;Á96Î_bwç/±»ó<àÌDh¦˜
+³È™8<9Üù‹@•±=L]}M-Lôˆõ*·p$ÕZø÷€õ
+/Ø5ƒºr‡
+–³Š¸f€t£6 j¸©à!›G4wh*£«-¤­’¡N0õ:îâ0­ã göYÑG¬W½ÄÜ…Žæ;î„5•ZçC{怎h^“£‘Nsx£ŠŽÉ½Éa
+3êp*x@º¡y¦2̼k•0£{•n¶¨O
+¢1ââå‹ßø^#z” “e‡×³˜íÙÃCqôòvÈ$ä¯7µÓ<</_ü¶ôºè¾ú›M©öh—¸øh½HZ£bŽ ¾uÅC%UŒ!*,à óOp å~ÊÓ½!ÜÝê0£#ŽŠ»—ïjgºðªÐø†b=ÖÝ·ên;3^åêZX·Øš)œ1^Ñd½§×WIR~‰vÒöp15Ôäé£dÜ@ù%\ßËÞ(î^¾»¹áÂè¬{^uI±s†tr_¨.ùîyǘ
+…²pɃ¬Ò ¼Òv3„3ày%ùR^>ÀÉL²i(ÌmìÔ;0ÏÅT¯É+tÏuÑ}p!Miäòp{ª÷TÝ-!Ó”Þ–áÖü[ Fq·„ð€›=BãÊ©Ðe ¹'[·‰ŒîU¶ËLÏ
+b'ñ 5û\ޜºiBŸj_> ¶ð ¸¾ù¢òùeˆú‰ SôiZåóNaT¯Rm±Všë\*Élá#S«„ë Ÿ<ÌåNùHtÛq–ª¶KÝp‚Q½Jµ½ºÒ;Îbß–±ácx••C0w^&»3$û –I9‹sJÖ³{üˆŒ|fwØÙý¤½¼]³°)4µƒÏ0Ô<'/ŸÜ*at:/›xôˆN Yæ¼M;Yf“ÎÖBE*]dÎ)Û”SdÆ1éæ×ëâ,1Ø"íÂL<Öúñ¹`úº`CŠL>Øá·rçCø& ÿì.؈y.‘W<¸Ár]tæ<¹`ÃdÙáñMþ ¦ìᡸ;ù`çiBîðø& Ûi‚ƒ·®ÿ\9Oï̓ƴªx•žª¡0ºS +¹«4O«Ke˜­áQ‚!P b¸–/ÓÜ©·Ù£ VÕ¥ò _[‡ Ã…«ò°º\ãÏ¥ÒÌÖÖé`D².\ˇ‰ïVô
+Z¢ÑX*LP˜Š/
+_@ýs¦¨Ç=Õûçèã„Õ ’J%¡¼”’æ´%¥Ÿ^¹ø“–ÏÆnâý¥ŒÅ}¢k®³Ò%½Ì5´ß?• Ù¶ÉÎfÃÆkƒmeô¨Æ›ÇÃåñxɹ†»Ùùs:‡ž@O§Ð!*ŠCM*~ê¹òRPïŸTF»ýÿ»Û‘þªó¯éb*,“~"V›Q7¢îÀU—ƒ~&/ƒ³\M±[.j™mð•âoÿFd>Ú
+endstream
+endobj
+2322 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115428-07'00')
+/ModDate (D:20090924115428-07'00')
+/Title (fdct.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+2323 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+2324 0 obj
+<<
+/BaseFont /XKVMYW#2BTimes-Roman
+/FontDescriptor 2326 0 R
+/Type /Font
+/FirstChar 45
+/LastChar 83
+/Widths [ 564 0 0 500 500 500 500 500 500 500 500 0 0 0 0 0 0 0 0 0 0 0 667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556]
+/Encoding 2327 0 R
+/Subtype /Type1
+>>
+endobj
+2325 0 obj
+4757
+endobj
+2326 0 obj
+<<
+/Type /FontDescriptor
+/FontName /XKVMYW#2BTimes-Roman
+/FontBBox [ 0 -14 633 688]
+/Flags 65568
+/Ascent 688
+/CapHeight 676
+/Descent -14
+/ItalicAngle 0
+/StemV 94
+/MissingWidth 500
+/CharSet (/C/S/five/four/minus/one/seven/six/three/two/zero)
+/FontFile3 2328 0 R
+>>
+endobj
+2327 0 obj
+<<
+/Type /Encoding
+/BaseEncoding /WinAnsiEncoding
+/Differences [ 45/minus]
+>>
+endobj
+2328 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 1309
+>>
+stream
+xœeRiPSW~/¼<¨S@4yµµj)
+("E´¢‘BˆKœÚäe1 ‰„e©¢W…7Ö kÁ„@+*…ªu©ŠV¤¶ÈŒZZ[kNïË\~4éL§?úçÌÙÏw¾spÌ‹ƒá8î-ÕèSˆÄ W¤yì`6ggrØY°¹|\qÜY˜¸šðÞðöªÉ]⛧ÁÒ7`áTŒÀñl{C¬Á˜“®Q©3èy%›ç¿ÿŸ',**ŠNÉù7BÇ1&*~×­˜Á¨gÒ2¢éXw¶N§ÙA«t9Fµ‰V¤¦2©ž²M
+£¥×ht£Ñ`¦çÅΧÃCCÃBÜ""A£OÉ4Ñÿ
+€õ°õ³­•²²AXªÛ ]½Y
+ÆÃIpÎÀ%óŽá)m…¡fåË^¶µe:XÔ©qø݃¶Wþü™l²k©ÀLîËسÇò¥ÄRFñO—+•eÚ í@nÙ™¦Öå(ÀfÝ ½‡˜K) Ì‘¼R30QkeÛbÂÅýÐW&Ì [š{’ä‹k/¯:ªöÕ¹;YÛ;
+;‚ ïéÈë¤7QÀ=ÑìAE7¸Bõ_h¿î¼­:+lÕ–ïªL¤H_¶ØÖÆ>¿ê‡F˜!þ| êö×\Ï</k¨HɺUÆ,{½R¨¯¶Ø-€Ê°ÚÌê®Ì»Ã#½¢ÞÎÆApôåö¦µfÌ>.¯¡øOîô6œ»2ãñú¯Êä­J¨7Zwe~T±/ ó¾óô7€ºé”‹UVUzºH¯7X?4¹‰*8÷»ÜáV ûóÇYÌÌa“ä$º=‘Ä]Ï hÿÕ0ŒþƒDkoP ‹à ®g‡sìÀ]w Ï~/€[ÈJPrè°½ýi@ÝjÎßkˆ!ŽòìÀþÀ½%Åe§:Šò:…§¼¼Ì£‚V.ϲØOê…ÚºŒ£f@¥Ùv§3½¦ïF‡šú.Šzœµà!Êî‘]”wKêÐäZj[3ëÕƒŸ‡%ÏVâZ)@d~RvÌ„­HD$@3Àâ¦E]²vùÓu@Á©c¿@!œóñäæ"F,j‚ÁÐ b0¬‘B)è¼`ìb,š†8© «mü.ì+kvTˆj+[œžq…öþœÝèzO0A’‰hnUa×·Õ'úA Ô“hëÄ8÷& Õ®ÙnR®Aã-œm…FÁ­‰ƒñ<ÖF—_#^ÿžxA@»û ¥@aQª“’Äh@øi4©7ùœ¼Ï4ú@WUÛÙÁþvHèCAE(| ù ‹w Fˆ‹ÄÈéˆù_0ªyNXÁ^.¿çÀ¡fŒ€Ýîhm(×Æ;^z¬¤äPµ½ªä( jXµ¢ ì,ÌÈ-°ØŠ(+ü¼‚·ì`îQðÅþêÁ
+²upø|Œ` p– ¯T)É+øÄ}ÅB.ƒqOÇÏ?ÿ`øméæÌJ¡VcÕZâj÷tüÖvê F$‘Ë·-ˆ ¡5(‰»›ÁóÍr°›Pê [&?™ÒRæíý¤ÚÛÃþþÝk·
+endstream
+endobj
+2308 0 obj <<
+/D [2306 0 R /FitH 686.127]
+>> endobj
+598 0 obj <<
+/D [2306 0 R /FitH 460.231]
+>> endobj
+2309 0 obj <<
+/D [2306 0 R /FitH 360.127]
+>> endobj
+2310 0 obj <<
+/D [2306 0 R /FitH 339.06]
+>> endobj
+2311 0 obj <<
+/D [2306 0 R /FitH 318.547]
+>> endobj
+2312 0 obj <<
+/D [2306 0 R /FitH 298.033]
+>> endobj
+2313 0 obj <<
+/D [2306 0 R /FitH 277.52]
+>> endobj
+2314 0 obj <<
+/D [2306 0 R /FitH 257.006]
+>> endobj
+2315 0 obj <<
+/D [2306 0 R /FitH 236.493]
+>> endobj
+2316 0 obj <<
+/D [2306 0 R /FitH 215.979]
+>> endobj
+2317 0 obj <<
+/D [2306 0 R /FitH 195.466]
+>> endobj
+2318 0 obj <<
+/D [2306 0 R /FitH 174.952]
+>> endobj
+2319 0 obj <<
+/D [2306 0 R /FitH 154.439]
+>> endobj
+2320 0 obj <<
+/D [2306 0 R /FitH 133.925]
+>> endobj
+2305 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R /F14 574 0 R /F11 573 0 R /F49 457 0 R >>
+/XObject << /Im16 2292 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2331 0 obj <<
+/Length 1193
+/Filter /FlateDecode
+>>
+stream
+xÚÍYÛŽâF}ç+úÑVäÞ¾_"­"Â0IVÉ&aü±<Æ3ƒÄeÖ°‰6_Ÿêns1x°'2ˆ¶]®:uNUµ1="‚~è|ŸvÞÝd±UL¡ôQE°R)£0e¥÷hQjâQúáÝ­æû¦–`n5øñF½»¿¥ýAœpÎ#ãDkݺ¿ôé›~ï×›¾óÓ!EôÍwBB ÇŒP”0 'yãÒ½h˜HB¢îj5}\„éÜJDë§,œú+–*Ͼdá|:¤£ û™pŽ…µ›L>B‚Õ>,ë±&.Ôž„
+ð¢,À”ɶh
+p¤1ÓÑ×gØtä’dTDwÓ2
+QÆÀ¹$<w;½ÿœ®W•‡*fíÛÜAoe÷ß™ zí&[MòésA4Åxqy¶›hÇ4šNür
+Kàø)2æG¤kN“R&8ƒ¢0KV@7æ,êÝõº?÷+Ú^bê]JÆÌDëì1Ë=¤à¨:ã<;ƒ¯þ¢¡XYö ¨r›0LŠK¿€2ŠÃH¤D’Ͳy¶pº¬Ã¹78v¼W¥1—¶w5ÏœŠÖìæÐ*?,ó°è:Ï=·ÖÑÄE7Qö”²Ø*MÅdš…TWa¼=8yœPyP0OÜå§â²ß×Ô¿–-û<=æÔÓ[N·ˆqE'%œº|UáÍyjÉ:µäeÔ’%µ¤ô»†Ü¨åŽ½Zná÷·¸éUAßR©­TØòàÂ-NHD¡—Œ¡§4J66¥B+kuôG4î¿Jdz
+endstream
+endobj
+2330 0 obj <<
+/Type /Page
+/Contents 2331 0 R
+/Resources 2329 0 R
+/MediaBox [0 0 612 792]
+/Parent 2321 0 R
+>> endobj
+2332 0 obj <<
+/D [2330 0 R /FitH 686.127]
+>> endobj
+2333 0 obj <<
+/D [2330 0 R /FitH 668.127]
+>> endobj
+2334 0 obj <<
+/D [2330 0 R /FitH 651.689]
+>> endobj
+2335 0 obj <<
+/D [2330 0 R /FitH 631.763]
+>> endobj
+2336 0 obj <<
+/D [2330 0 R /FitH 611.838]
+>> endobj
+2337 0 obj <<
+/D [2330 0 R /FitH 591.913]
+>> endobj
+2338 0 obj <<
+/D [2330 0 R /FitH 571.988]
+>> endobj
+2339 0 obj <<
+/D [2330 0 R /FitH 552.062]
+>> endobj
+2340 0 obj <<
+/D [2330 0 R /FitH 532.137]
+>> endobj
+2341 0 obj <<
+/D [2330 0 R /FitH 512.212]
+>> endobj
+2342 0 obj <<
+/D [2330 0 R /FitH 492.286]
+>> endobj
+2343 0 obj <<
+/D [2330 0 R /FitH 472.361]
+>> endobj
+2344 0 obj <<
+/D [2330 0 R /FitH 452.436]
+>> endobj
+2345 0 obj <<
+/D [2330 0 R /FitH 432.511]
+>> endobj
+2346 0 obj <<
+/D [2330 0 R /FitH 412.585]
+>> endobj
+2347 0 obj <<
+/D [2330 0 R /FitH 392.66]
+>> endobj
+2348 0 obj <<
+/D [2330 0 R /FitH 372.735]
+>> endobj
+2349 0 obj <<
+/D [2330 0 R /FitH 352.809]
+>> endobj
+2350 0 obj <<
+/D [2330 0 R /FitH 332.884]
+>> endobj
+2351 0 obj <<
+/D [2330 0 R /FitH 312.959]
+>> endobj
+322 0 obj <<
+/D [2330 0 R /FitH 283.078]
+>> endobj
+2352 0 obj <<
+/D [2330 0 R /FitH 262.862]
+>> endobj
+2353 0 obj <<
+/D [2330 0 R /FitH 229.321]
+>> endobj
+2329 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F14 574 0 R /F11 573 0 R /F49 457 0 R /F48 455 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2356 0 obj <<
+/Length 1595
+/Filter /FlateDecode
+>>
+stream
+xÚÍYÛrÛ6}×Wð­Ô´Bp¿<ubÇIIìÆV§“&~ %ZæŒDÙ$Ôýú.
+%Ä,ð潿\˜k±
+}5Iˆõin£\¥³´pÎã>8IQ$v£{ t‘JôÑ€42>[ºˆ_ú{F*Š˜i¸rÖ˜Gx—QáÖ¾ÏÓ€ˆ“fÉaKغµÑÝN–ùÈY; qIûUI–gù ¦2W·©\'¥‰x‘T¹´D7ìTD”ê¯xöá⇡-×ÑIÂbÀ,À˜oÇÖÖt5…ùµ:pÚ[€ÓÙ ¸Õ°œ?ÁAʉðrH:÷«‡…MÇkŸ…Ÿ±¼ñî’ܾ­BHI>³¹D5o–…ˆ8ñ÷³ì‹];ͽ?
+w™¦‘ÔzåÑ}•|æ 8Mdlê®/32@Íj›j•¹›gA6«Õ~×±2`l ðÆ· NV`Áåñm
+îqx••Öz¥>!*¯+‹eéF<–ìùÌbžþu²“œì;’Ó$'µÒÛÉ #Î[r®/¢œËÏ_C2k­=Q–áöÖÒ^-u]$¸U"Ù÷¾„càŸ›/€ÐÉÄâqëŸz:~þ%B<KCH:B àIâ/Û-$Âr¡Òm'4%H48l&²n‰ì9 ÕÅVù~nna7áJÄçùÜŠ‡R ¤¸ŸIŸ1áEYˆ vjÙ03,­Œ"Á?…¼í¶&aÌÀÉVS®B‹ØEìÙ•í@xüeÌOæüZ.!S˜|’׎K¶s(RŸ×e:Ý'³ÞŸþ°Ä6Ć´
+&¶ÁH`º£êp„é¶Ä†Í©ØgÛ
+X‹ú®€ó®_èyk³WS¾¢æ“ CïGU³ìõ"uh¸pC¿ŸJ¿œŸ1—ݾý
+VK‡bÒ7vЋ§ ØÖ=3pBPÏÑ]¢!!ÏP]Ó‘"hü³½°˜¸Ɉ½•N ­¾:°¢\üþñÏ]zÒÕ‘‘ œÆ׊PKƒ„ÖÆ5Ò4þšM«[?´)GÁ´&åé" ‡2ÚÂô±žÂ"‰Œ‚Ázdž$©­Å릂¥¶{êLº›'yÚh0Õz]Öžh CÉNoÒ"Í'©~SÀ©²ôã,•±»ìït^î…ñoÃXSߦÙì¶n:ì½×6± hÇoÃv­Ðr#о)`–ÀoEº`ÐÊ[!ë ¶Z`CÍÐ
+f H–{êîìñáÈË^‘×Mຉ¼ö“†\mr\OÁ=L %`/ìks¯×mUîØÒ™ÓHro»þ¹Dì³iÚSÚÝÔÑžºd´’Ögdô£"üÉ é@±<\’0FzIÒ¶ûdc@5"„ï
+¨‡–o‰'ƒ¡3çpñäψ'ÿÆx07ßœ¿{uqòúã>‘¼<Ì)†H[ÿ[]î‚¢Á]ho%ã>(âmE”ÃY×4ŒJŠºŠà{úÕ£ùð¢»^Ü×ûÌ~X´ñ«ßBU©JýïlcJ¼~Ùk˜î¶Cníÿ¯%`8µQ_|峋¯Â¸îò`0[Χ`¸ï®{Óo‰|ôã S¤¥ÎñbÂwpàÇíçÕp1ÒÖÑïGB±NBìÅM›IH4ùæj÷×r­žH(GÂæÎ?ÿ”@Â
+endstream
+endobj
+2355 0 obj <<
+/Type /Page
+/Contents 2356 0 R
+/Resources 2354 0 R
+/MediaBox [0 0 612 792]
+/Parent 2321 0 R
+>> endobj
+2357 0 obj <<
+/D [2355 0 R /FitH 686.127]
+>> endobj
+2354 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F14 574 0 R /F70 508 0 R /F11 573 0 R /F13 705 0 R /F10 668 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2360 0 obj <<
+/Length 1371
+/Filter /FlateDecode
+>>
+stream
+xÚíXÉrÛ8½ë+xD°ËiÊÖ’¥ÆKd•§RI4E+¬‘D‡’“Š¿~
+æqJÝ7Gç£þ0N8çHá8QJ£Áðè¤ï‡zýîY¯oçéfõþ¨óµCA$ݬ,VÌDù¬óñ3‰Æðò]D°‚•¾;ÕYÄAÕ0ò4ºè¼x¡–ÂD2U˜ é <ÍfEœ©9ÅL¡7qãŒ
+tQÞÖºˆ2³ë(¡›4õ")¹*— xR§Å5ÖŸm‹r2/ÆÄ Ä‹ ^±ÈëòfYVs€l>öB],@-똢2wb b5_¸è„£Â V|'*ÂèŸG‚p\I¦1â­~}ögoØÄœ¡îÐüJÄ
+dÖ‹ ¸¾ÇL£e1)j ÒŽÖQ]gVá‡{ T’*m…JCèY*Ñiå„ù•[æ*Ž¹b«¥‡çÝ7^‰Š-%.1¡|¥ô‰˜‰L6L…™þÚuT –¬t²:q¶'Fall¹·r.‘T£¼ò±ÈÊy9ŸØ1…–_ŠõË$ eá?"(Ð_Û'ƒï€Eã%Ý2NJ¬ÕÚËn£A"‰âÚ `‚5€¢1r×EÊ0ƒ×[J7ÓlîYŸ
+“j:Ó\×E]Ìó"äàu Ù†P$Œ LÕ*½šÜ<ö/„à_úRü£)ß°æÃücœíáHÀ¡ÍDaúqÃôã¿Ä>½bÑ¡Ô”8 íÓ`ŸÂ
+bc[$Ý6û T"Ž%mæ'ö¬%ptKë>ýô.ý3ž~`º©‹oeu»ðÃO"à=¦7tUðø©,”ûX(ÿ‹U·½û×iH˜§!¡Ójº¯ÒV¼
+ðÖ×ògUð÷ áð¾
+×UÐé"k€rÁŸey]y@Ú(ž'—ýîh/›X'Ô:Ü$î=ãìÕ/c8ù²ªÛÐß õ¶°P˜âC¬…­ä-܈zá\bÜ
+Îa"ÇV ø}½Í¼Ûå]1öC½îÈ yì
+(Ž2/7t`)à
+Õ"›ÞZ¯í«‚°Ê¬íýꮜ$wÙÄVõ¸¨ao> ÷§VKõ{m[öÒÎ_ªèf“Q¾܇ ôòê¶ùê„,v6ì;åK't¾ûh$䪷ÝÓ˃PÆ]š® ÚÅ4t•<Œ…àr‹Kž¶­õ•þÕ@‘öŠ‹õ~øµ ¹6-3ä“ôùtªÜ½æ½@ÛkZôöÙ‰Ï~+â‚-ae± v(Úk*w£m¯x„Ï
+endstream
+endobj
+2359 0 obj <<
+/Type /Page
+/Contents 2360 0 R
+/Resources 2358 0 R
+/MediaBox [0 0 612 792]
+/Parent 2321 0 R
+>> endobj
+2361 0 obj <<
+/D [2359 0 R /FitH 686.127]
+>> endobj
+2358 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F14 574 0 R /F11 573 0 R /F10 668 0 R /F13 705 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2367 0 obj <<
+/Length 1375
+/Filter /FlateDecode
+>>
+stream
+xÚÍXKsÛF ¾ëWðH¸Ù÷£—Nì$M2;µÕ$ž8Y¢mNeÉ¥è:ͯ/°»IimUã¶ã‹„¡]àLJH³«Œf¿ FƒoŒÈqšëlt™1ª‰Õ.ÓVÆM6šf_sCÆØüäõáñÑéèdÈmþÛáèÝñÑðÛèý‹7¶s„à–màÿcÆÚ h¼óõhðÇ€H3Ö^§ 1Üe“›Á×o4›ÂÃ÷%Æ™ìÞ›ÞdBSâ¸y–~ ¾wïeB«X¦•!\êpûÑø¦R[‘†ÜäÝ øàLæ§Õ½ËçpºÍ
+ƈS*üøœ*zQ5Køö1d  tmN««y9ýyX0Niþª\Nê궩s¸Aˆ|<Ÿ¡.—`“7C–×Õ ––4Â#¶àÎ>GêI”µ{c*]ŠÔîDˆùø®¹½k .@õv\ÄMY/z8eqV>êŠÄ0öHz™!~ Œ ŠònzµÓkCzm"½àˆ32¦WÿƒôêÍô:a|z1‹5d±Í²ìe¹Ù^¥qN=šÞÉÌ(‰ivÁ]¨Ï³íŠT‚p¶.HþjXh¨åwsD¬)¯ÊÚGOûäY×c©í@Õc¾¨¹ÒùÑ *nîy Ébž`Á½goƒ“ÝŽ½Æ¬Î)剓œ¶=èóvœ’¡ÕÊf¼
+gƒ zÑ6ãj^ͯ†…2<o®Kþ&`„Iâ2<Y\¶¦! ÖkE”h¹ö6¦„‰ Y(¬`3A4‹Ðíx
+ŒÔÒ€ ˆŠÍøv6žƒ?\Iï~{Q¨Kðx7iÊ)ªT~‰åIxœrÂÒ@ Ãƒ§2HïbÞAÜtt˜d”´;Ä(¡‚wNJSÇ^‚BRö)DéF;i)¤U¤k
+µôÑ:Ð'š¥éÓ:z-h=0Vázè2X]$écˆ”hÍE³ÿ‹?'Ï­=sþlµ e"@Hð´ž?Ñ,Á2ÛÅŸ}êèCÅ¿Äžô$”0æ84¸}ƒä$” TqGù4tð¯Æ3ܼ„•ùݲœ>²¤Ç¡Ù>uIáÄB<ÂrÂV˜…%…+£v-)À.ž°ƒr ,ÛØA÷ÞN„–D+¹÷vb)XøPX±b>õ°4bá›Xø…b’åœnÖòi%™Ëï«is¢õ”CUžÙ|rW×e8,("?£±GÕa*6Ú”?@h¾>ÀâBÃjW^– ™ÄçžÀA¬æÁâ¶ú^¤ÚU9[’PÝÉ+O>¾…È€½¶‡Ñó‡¢Vç×euu½òφÊG}³2èG
+ YûT'ÒÄ­M Ôú& ß­Y7›¨Xul»®š"´‡>„ìž·ÍüŠ|Á{ Ýbøv}ëXßÎä׋ºúƒÏ‚VF±šOËïAôåïìjê¥y=[àI÷øQÖŬ¼lðÕb^ÏÑ|¡Î‡ŽŠnè ˆ.f ß²'hñûc?8ÛÃUþgð¶©&
+endstream
+endobj
+2366 0 obj <<
+/Type /Page
+/Contents 2367 0 R
+/Resources 2365 0 R
+/MediaBox [0 0 612 792]
+/Parent 2321 0 R
+>> endobj
+2368 0 obj <<
+/D [2366 0 R /FitH 686.127]
+>> endobj
+2369 0 obj <<
+/D [2366 0 R /FitH 620.248]
+>> endobj
+2370 0 obj <<
+/D [2366 0 R /FitH 584.383]
+>> endobj
+2371 0 obj <<
+/D [2366 0 R /FitH 428.908]
+>> endobj
+2372 0 obj <<
+/D [2366 0 R /FitH 393.042]
+>> endobj
+2365 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F14 574 0 R /F11 573 0 R /F13 705 0 R /F10 668 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2376 0 obj <<
+/Length 1909
+/Filter /FlateDecode
+>>
+stream
+xÚµXMsÛ8½ûWðHU 1ø"@îeËÛ³;U™Íت­J%s )ØfE"ŠÊ$þõÛdR¢“x6{Øh4ѯ ðä>áÉ/gÿXžý|U$%+4Éò.†3clb
+Ä´Ér•¼K…”‹?–¿þ|eÕXµäL•ìx¥Wÿ<³¼¼^dJ©Ô²Efm‘^]Ÿ¿¾$ÑÅå«_\¢3þ~¹<ûx& Ëñôgc™•eRoÎÞýÁ“ þšpfáOzÕM¢´bVàÄursöûœ†'&·LjC ü­Ú¸E&s›§Ë…,Ò/[ø*R))tzÓ<:\]"¸`¥TI& Ísšüžçü¶vÐ
+¯¥
+V
+>0„¡ó­Õ1.Þs¢g²3;BF‚ŒU‡eøO#´ÛÞ­ôœ>?-`!Õzïv„ÒÌòrêÐÐjû#(ïül„MQi½ïûѶéôvÝùݬQöák(__Þ€¦äbB¤Í,È‚™R%caÀª
+ÒX& ×|ý0¥zý|„þ”ãÀ ^¤Fg¸ní6O|ù˜­¼$¶‚øã¾"­æ±òá‹ÿƒœ®ò#ŽŽxœia/ì¸Ê#ð€_yzñjI‶{Ï…©›ÃRp¨içðl«aßS²RiׯÜWSÇÅ+4)pšHdhøQw»@SŸµà@
+Nؼ]¿/,Iæá’}^cθº®Ú ¢ADÑp˜„õgË(Ïb6sßEŠB\ÿ(7sQD‡rAIECë݃¨ßõXä>ëX‚ò͸6ezŽ?ìSLA'†„§‹¶ª0XˆúÄ4=“l#=¿‡_¹a’ ˜ "aXñ ~åLóëöóËqW󙧔éC×7±*X“l‹ Þ§EüŠ¹Éw±‡’á‡RêöËòËJ~TÉ[ MÈô8.Å
+ìHêY"&jY´ê›Ó(ÌûÃŒm €hpìC,\C`` ¤C•]ÚW/£•X5ÅM˜R¯üyE*><@øèúˆ\ÿÌÖsÒÒ&Ï ;Ú_mÈ;å+
+endstream
+endobj
+2375 0 obj <<
+/Type /Page
+/Contents 2376 0 R
+/Resources 2374 0 R
+/MediaBox [0 0 612 792]
+/Parent 2321 0 R
+/Annots [ 2364 0 R ]
+>> endobj
+2364 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [367.891 300.961 382.613 313.459]
+/Subtype /Link
+/A << /S /GoTo /D (table.3.1) >>
+>> endobj
+2377 0 obj <<
+/D [2375 0 R /FitH 686.127]
+>> endobj
+2374 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F14 574 0 R /F70 508 0 R /F11 573 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2384 0 obj <<
+/Length 2268
+/Filter /FlateDecode
+>>
+stream
+xÚ­YKsã6¾ûWèHU8ă
+½›¢6ÍfIÝÛ¶.7ùÜ!‡Ųa8’»6åÚ,Ò9
+Pgáp*-‹ŠˆG{Å:­­„H$•@‡ÐƒÎ§€É<ÉhnYl`ƒ}Ÿˆ:fU–>­,,ÙßDY¤°R˜ÒXÝÖnÏ|Pܲá±ðæIeP—‚ySÀÒíÊ4è"Éê;ßVu 1/jêÔ ‹¾†,Û‚Ô˜¤¹Û¼ÈQvì%Ô\œcËa(9hÏÀ¡Ô<m5p‹Hx38Ê‚ºÖÞ£Æ"µ9‰ÓcÖ1o3¶VÖRKkw5P7eÞ°]–Åz—1vŠ/։܆ ãvZ¸ñç’Ž17‹Méh`KÇx0sknèÒ ƒQù4¢Î=8÷ãDĆîúü£÷´Ç„³#˜b•
+ö7õçx´œÆ‹´B&ƒuAme uÒ¥X9BiÖ µvÁ>šäè±ÞzwEßIÙõså‚’) 4;μӬBvÊš‘¡9$öÌK/~õåÍ 7õYhhÓ¨”+®°HÁ¥Q²‡=[UÎVµ³Õe¡üp@ï_Rç@˜…†ýêl²f mU§YFÝ­ñ Ö*0oË—y‰› ±¡ ­ììñ\B$jm©/ùº ¥·Jðƒ@FŠðÖ‰µ]Kk¢äE>!…!?&ýXÊ.ÓÓe1AÚ#ÛHÌ…“>r¦f*¥ °0º,“µ¡%Í Ý™© ¤—†â@v[Yw,Ñçµ…£¢ez³MMf2 Z¹]RŠ“!¡ç ÚR¤›Uô±±A„GÊ‚Œ”„šÒ,1¶Î Zù?`¸RÍŒŒ´E±_Û8žY\pþíiSÕô5#3 ¸jhE±ÕEI”Ôͯ ú^™ìÙ-T烾յg2ÐbRÖé2™×•O M­¢p¤iì=³ÁµŸõp\‚IÚgA?0ù]ã>Ó˜›0€q)LoÎã$ ï´ªÒ§œòì$@RúJ©&ÿùšû9Ó¾ X3…üäë$¯d¼Ë•ûQ6K~»~àû‚µ?Ÿ{rO—>×tb?l2/>xº«qD7'Êeºl rR‘”vî‰q
+²U8
+a&faàìã #ö•lãçl•ÐÄž]À`þ"\0ÃCR;6/2R“ôž!ÖdIîâbïÂ؇<ZÊ÷+É…ƒ¬ÈŸœ/ÖEßÄ8WÃÐÄB?Ôñ®Ù¸lFuö_lY“¡qoU”é÷&#ˈæ²tœç€A*ƒ­[Ê0ÎÁªoÐL9É̲&ú¼€T©ì.š¹ hA¬"Ÿ«°™‡
+ Ø °™ÅkÀ\/b”•œ·îuv~{qy±/H‘Ið6H‰ï–¯Ïòy÷v’mÒ#JøÒ0rÁ‘·
+÷eØʽ’‹ÃÑ8;*z¬“¹MÛxѪÚ—¶joèƒq…pÖ-ÄÇ[ƒ†Û‘cÄV„Ö0\Æ |.ÛËç׳_Á®KÅ|éC–½ 9S~ôŠ%°ív}3½?E[þà’œ×”Ì‚
+>€À%KS"ï~›lãÈ™¤ç
+ø¼&¿Ã‰pIc龦W¢†ŸÍùe“w蓯d–™Cé¬T}8ÈkËÒTô¶S@9Ùx.äTû΂9¡Úf?è-úýÞ²g pÇÊ ì*üåM¯ïn^ªCº–šâf’uU¨¹1`£¥«¸y˜#úÝ=Ü ¶·©EÕTË
++Ç1=ÿDÛwJ_lΑÓgêZ(PèMn‚€GQ·zOí¶| xÁûEké t¬_¸xï¦ÂÒ¤çu§þ›yÔË÷—Wwèýâþî°ré¹Oûàc§ÜýBJФì<Âà·ν¢Hªì°}‡3à4íë°w<¼ óžAž³)w&)Jmk9\ë0,Fä;,mïo„e€pš¿] 0¨F¢á«³ß^NO¾:Àø^èKÈ>9HÅr4_Ÿ<~F „ÚÜ×±}³S×#ÌáÇM²ÑÃÉoî7A7ëc¾
+ÓFc´™ñò=I6‚ÅÖJðHâ æGª/¹Œ£·%ïÞjdaaØÔ÷ t$˜7Xh
+?ä­n! ürC*΀´¢±s¦°ûËþ‰'ny'º7Û±÷n7Ü;?Cdú×¹Ý|ºÇîÉÚó7RÑ?Ü“¿ÖŸoÿ}A°²8æǪºÛ±÷n×ÂJáéGŽÈÚÓÂC{> %ÔáúŸ vñE½ªÄg<ý|Ã]5:ü‰Bw2Œwø¼àj÷—NxéwãrÞeóbtÙ¼ ÜÓpµ0¦ß.Å?—¯Fèø?.Ëh
+endstream
+endobj
+2383 0 obj <<
+/Type /Page
+/Contents 2384 0 R
+/Resources 2382 0 R
+/MediaBox [0 0 612 792]
+/Parent 2399 0 R
+/Annots [ 2373 0 R 2378 0 R 2379 0 R 2380 0 R 2381 0 R ]
+>> endobj
+2373 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [141.377 595.455 156.1 606.303]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.7) >>
+>> endobj
+2378 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [305.32 523.724 325.024 534.572]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.10) >>
+>> endobj
+2379 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [198.725 323.548 218.429 335.503]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.46) >>
+>> endobj
+2380 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [191.806 300.316 214.278 308.962]
+/Subtype /Link
+/A << /S /GoTo /D (section*.96) >>
+>> endobj
+2381 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [431.873 270.845 451.577 281.693]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.75) >>
+>> endobj
+2385 0 obj <<
+/D [2383 0 R /FitH 686.127]
+>> endobj
+2386 0 obj <<
+/D [2383 0 R /FitH 519.466]
+>> endobj
+2387 0 obj <<
+/D [2383 0 R /FitH 499.349]
+>> endobj
+2388 0 obj <<
+/D [2383 0 R /FitH 477.792]
+>> endobj
+2389 0 obj <<
+/D [2383 0 R /FitH 462.213]
+>> endobj
+2390 0 obj <<
+/D [2383 0 R /FitH 437.17]
+>> endobj
+2391 0 obj <<
+/D [2383 0 R /FitH 409.636]
+>> endobj
+2392 0 obj <<
+/D [2383 0 R /FitH 389.755]
+>> endobj
+2393 0 obj <<
+/D [2383 0 R /FitH 376.542]
+>> endobj
+2394 0 obj <<
+/D [2383 0 R /FitH 362.221]
+>> endobj
+2395 0 obj <<
+/D [2383 0 R /FitH 349.008]
+>> endobj
+2396 0 obj <<
+/D [2383 0 R /FitH 322.732]
+>> endobj
+2397 0 obj <<
+/D [2383 0 R /FitH 299.501]
+>> endobj
+2398 0 obj <<
+/D [2383 0 R /FitH 285.734]
+>> endobj
+654 0 obj <<
+/D [2383 0 R /FitH 145.668]
+>> endobj
+2382 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F70 508 0 R /F49 457 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2409 0 obj <<
+/Length 1808
+/Filter /FlateDecode
+>>
+stream
+xÚíZ[S7~çWìãzšUt×*™c7tJÆM“ ^`3Ä6¾¤¡¿¾GÒÞ-ÛËÔÓé%OºìñѹŸOÜ8øñàhxð²iIe0¼ ˆÄHJÈX"BU0—!¡¼s5üée_±*©Æˆi|,Q÷ÍáÙ°7èDŒ±P¡N¤Tö‡§=·uÜë¾;î>8;=ë"D„RDTÁ&sìPí§Áe$0‹ônâ8}ÿÁLx¸¼OÜÎ׎áèa•8é ¯œ"0Š)ƒ3¢Z¸3®?;B®+„
+øž)yú¾×^8ªªÌ\#©xNu™Y W((R2Î ®Óu1’‚åW™Ä8H+çXqÍÕ7Ÿ^Tˆ>ßt"Jiø c¶~*‘HâB=cÌOX`ÀN8V­ì vÙAýe;Ä>;ÄÛÌ
+¸õ“Ö<Þž<LE‚me%š! ©%ð:ù­çëY1Š1Ý.‰ ŸŽNO|l C1Ñ`S‹+æ8çqé ,#¯d­yÌü<Ö%h,ÌV O  $iAú˜b7! n®q’U ˜Ì @Ö‹†©/Qæ†!뎨Ôy
+cjGµ»’"‰ ˜›yb¸˜šgŠšg7ï·{Üu#´×‰9{™þ1²‡Y²/£å<ýækb秇˜…õNÂ!dd–¿¼í#“‘b3> „
+X¸
+·óéÇ»Á¤6$T¦úžÁæ†,¤’L›e!Ìh]†ü7¯0±f5al)£.@ºnvœ5ú©3³Ö£JÎz>ˆ£è­FÁˆ•]éÊÇcÙp¼º`8…7€JÁ«³Õi½Ê)°E£Ì$K·cæØ¡ ávX'«•ëŠ‚Èö¸¡q–±Z`Eå Ž ((WüäÜ×҉фŠuÌY­ ç'ærú8*•t ój=Ÿ5Ä'¯Ûùèy˜Òüé„~Ç”û”l¦l)ù8XŠ½RÒ]<ž…(·³Ø #«(’Å›1©`r[®×ÁòØg.çúAßµ½öŽÏ»
+ÕðGÜx Ùø*¡*÷^î•°÷^s¤éó;®¿Ü^éÎlj¼­WÒ·»%}#ª™QÑ
+îÕ¶é˜ Í•4{ ëõ˽٫Brí”4#(­cŽüµ ÕµŸíÒ[@á³íî"ÆêMr0غÏD­3JŸÙg(â¢È•ù'L¸7”IIäi5vIÖô[(R÷oºU¾ˆž?(q%Êç;ÎxþðÃÍË’™d.6;ÕW)³®¸×,Ólø
+l®’Ín4d
+)Qt qãÁñf:;³¡5ŒË䚺ñfß'æ iÙ¼üØ$ñã5èüšËgyÄ_VL+W-.ÎE‘BÞÿ6è þ°7°
+endstream
+endobj
+2408 0 obj <<
+/Type /Page
+/Contents 2409 0 R
+/Resources 2407 0 R
+/MediaBox [0 0 612 792]
+/Parent 2399 0 R
+/Annots [ 2400 0 R 2401 0 R 2402 0 R 2403 0 R 2404 0 R 2405 0 R ]
+>> endobj
+2400 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [435.891 460.959 458.363 471.808]
+/Subtype /Link
+/A << /S /GoTo /D (section*.100) >>
+>> endobj
+2401 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [377.997 423.226 400.469 434.074]
+/Subtype /Link
+/A << /S /GoTo /D (section*.104) >>
+>> endobj
+2402 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [311.403 371.669 333.874 382.518]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.3) >>
+>> endobj
+2403 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [404.066 200.187 426.537 211.036]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.9.2) >>
+>> endobj
+2404 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [262.541 176.346 285.012 184.992]
+/Subtype /Link
+/A << /S /GoTo /D (section*.115) >>
+>> endobj
+2405 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [485.671 129.204 505.375 140.052]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.75) >>
+>> endobj
+2410 0 obj <<
+/D [2408 0 R /FitH 686.127]
+>> endobj
+2411 0 obj <<
+/D [2408 0 R /FitH 668.127]
+>> endobj
+2412 0 obj <<
+/D [2408 0 R /FitH 625.039]
+>> endobj
+2413 0 obj <<
+/D [2408 0 R /FitH 582.089]
+>> endobj
+2414 0 obj <<
+/D [2408 0 R /FitH 539.858]
+>> endobj
+2415 0 obj <<
+/D [2408 0 R /FitH 496.908]
+>> endobj
+2416 0 obj <<
+/D [2408 0 R /FitH 460.088]
+>> endobj
+2417 0 obj <<
+/D [2408 0 R /FitH 422.354]
+>> endobj
+2418 0 obj <<
+/D [2408 0 R /FitH 407.978]
+>> endobj
+2419 0 obj <<
+/D [2408 0 R /FitH 358.842]
+>> endobj
+2420 0 obj <<
+/D [2408 0 R /FitH 315.699]
+>> endobj
+2421 0 obj <<
+/D [2408 0 R /FitH 290.474]
+>> endobj
+2422 0 obj <<
+/D [2408 0 R /FitH 264.142]
+>> endobj
+2423 0 obj <<
+/D [2408 0 R /FitH 252.809]
+>> endobj
+2424 0 obj <<
+/D [2408 0 R /FitH 236.496]
+>> endobj
+2425 0 obj <<
+/D [2408 0 R /FitH 199.316]
+>> endobj
+2426 0 obj <<
+/D [2408 0 R /FitH 175.474]
+>> endobj
+2427 0 obj <<
+/D [2408 0 R /FitH 155.425]
+>> endobj
+2428 0 obj <<
+/D [2408 0 R /FitH 142.155]
+>> endobj
+2407 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F14 574 0 R /F49 457 0 R /F70 508 0 R /F10 668 0 R /F11 573 0 R /F83 1265 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2432 0 obj <<
+/Length 1187
+/Filter /FlateDecode
+>>
+stream
+xÚ½WÛrÛ6}÷Wðš†0î—¼Õ•ºãÔª¢¶Î8yeJæTRr›¿ï‚ i’‚%Ûíd<c°8»gw±K¢ED¢÷'g““Ó¡æ‘ÅV1Mæ%
+e#e¦LG“»èiL ÄZtyu5Äœs4¼¸Ž&çã‹_ß¾L~9š– Î ÖJÃ5¥ʤÛsBª›ëo3m1WÜ à0÷ÛÓ4ÅýÑM, A?EºX{
+­ÕZXÛä š%w»¼Z[¤XJÖ~š®ý™Él›fëÒ¬@¢|ùÁ¸´ˆÛ €iÏT<Op†&÷iQb&]¸©³”¨HW›å77–hê—fÙÆA©³¹_­ÐKø9^:üͦÛäÎ/Þ.+•ÜÉ¿ü ¯Cëä&OÒlWÝœ'ó$OÖ³$ožOWIþ˜J¬µèùHØã‡.Ȳ\)”LKX÷~ÖöC˜‚~ejÒ
+CË œë ¼ý¶§à
+Áœ4;¾„„H,ùae¨+]•CD7‡ð½S&0È©†¤E½ŒÏDðaÈÂ0¢O8‹ðÎW´(òIK¶. ; Ç–É#Þ¢ï1äðW™8óÓ†ŒÒ]^…Ź‹ÕG¼E3yËÛži'Xš®i¿6£ÃoãÆåÊ› *p¡ßÝácèÿy" ¸úθœïö½1Ža½·9LÊżCˆKÿnºÈHâyfÓ*0)÷C‹Lx\CYžÛ¹ÿ®§ÏÄ×~¸LŠ¢‘¼
+áë«›‹P¼1x’xo›e RbÂl½%ùº›.+]¼¢Ö <)lë¨& ½ñ’ñùOŸ#Ç\4Ùÿ¦¬d„€µúì¨ã²GÇ=»®ã! 3ñ¿¥òѾs ¬…xNExBó¿Ó")Ÿ[pœSšbóHC˜)-•{Lþ´’|ˆ)AE‹©³Pm¥]¦@æL1õ¢Ô瘢ֆ™¢Xö2ª@iG•¯¤ÁB¨nåЋ«Ñ(ÖZüʉ¹ÇxSšõycÖ æx#Påf~þ$†Ê}ã }Öè}T«0}3Ë_LŸ¤aú6”¾ì «Ú†>eÌ3è£gM.src0¾€1WXhùØÖXhMÑ¥+(‚~!æÐ7 Ó%¼%®ß õ¬õ÷|Ru2´¬V#TBÕbm4[|m~tÿC §+ª£wÙÉoðW ­÷ĵȸ%³ì×;ö2®´àe Sj½^ÃtQvceõƒù[蟄„þ©ZªœRW˜~&T,›—3OŠÿy]Tô[—Ý>h–]þ )ÕD
+endstream
+endobj
+2431 0 obj <<
+/Type /Page
+/Contents 2432 0 R
+/Resources 2430 0 R
+/MediaBox [0 0 612 792]
+/Parent 2399 0 R
+/Annots [ 2406 0 R ]
+>> endobj
+2429 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./lflim.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 2445 0 R
+/BBox [0 0 291 218]
+/Resources <<
+/ProcSet [ /PDF /Text ]
+/ExtGState <<
+/R7 2446 0 R
+>>/Font << /R8 2447 0 R>>
+>>
+/Length 2448 0 R
+/Filter /FlateDecode
+>>
+stream
+xœRMkA ½çWä¨âN'3;_×B)”½hzPOŠÚ²[°=ôï7óa]­…" ;ɼ$ïñ2”‚PƯœëîæwŸp
+4ÔÁ”'5’´KU*Ç]‰Iš—ªë™×i‚w,ÏØÃËßa•ÃUüm ¿’*‰óG {™Ý}œó 3.Ù]ê»Êu®*3o'—<·NÚ³–ÿºIµ#TÒnïKFÎ2Fµ6çq®úÍuÆ•ì4ï7SƒKl©ÓÝ»Ôr>÷œsÈÂÎÝÚ­
+ìùi¥Úýl4ð­©cD!îÙªä¼Ñú´…áþóâ>vl>å¸ëï[~çž/„Çv ùñG!ÂÊÀ÷¤…¶‡ÑrT©f*—ãqûF TŽÁM›iÕdÐYAÚ˜¨+ݶ{í# †JÛÒÕLK!áC°Ç Æ
+[EJ[Q«Ñ|¼jŸà¡å…Ìà¹5»›
+endstream
+endobj
+2445 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115428-07'00')
+/ModDate (D:20090924115428-07'00')
+/Title (lflim.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+2446 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+2447 0 obj
+<<
+/BaseFont /IDVWIJ#2BTimes-Roman
+/FontDescriptor 2449 0 R
+/Type /Font
+/FirstChar 40
+/LastChar 109
+/Widths [ 333 333 0 0 250 564 0 0 500 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 611 0 0 0 0 0 667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 278 0 0 278 778]
+/Encoding 2450 0 R
+/Subtype /Type1
+>>
+endobj
+2448 0 obj
+358
+endobj
+2449 0 obj
+<<
+/Type /FontDescriptor
+/FontName /IDVWIJ#2BTimes-Roman
+/FontBBox [ 0 -177 775 683]
+/Flags 131104
+/Ascent 683
+/CapHeight 662
+/Descent -177
+/ItalicAngle 0
+/StemV 116
+/MissingWidth 500
+/XHeight 460
+/CharSet (/L/R/comma/f/i/l/m/minus/parenleft/parenright/two/zero)
+/FontFile3 2451 0 R
+>>
+endobj
+2450 0 obj
+<<
+/Type /Encoding
+/BaseEncoding /WinAnsiEncoding
+/Differences [ 45/minus]
+>>
+endobj
+2451 0 obj
+<<
+/Filter /FlateDecode
+/Subtype /Type1C
+/Length 1322
+>>
+stream
+xœe’mLSWÇïåBïE¡Nº˜B¯s‰2QÇ,sSÇÛt©LÊ«aEú–¶´µ ”RDÔyZ­@­ôÕVCÉ4qe‰ÄiDqØmY¶8çpfç6—kÍ–}XrrrÎyžó{þÿó CP*«Äº¡Z%ªí×Ó+Pze€&;p*°="¸°h…¨ð¾•Â8¼Ú–Áï Šlg2Õšºr©LO®-'¯[·þ¿“ééédeÝ¿2K¬“K«É5ÁE­X©Ö¨ÄÕú­df0[©”ï'¥Ê:LGŠªªÄU¡kE"¥XAæÈ•rF]K®ÍL&7¥¦nL Ni¹rUeŽ|©œÌU§“R(–Ö(EþA$J Ê•ªµ)ÉëS7!H
+ò!²ùÙä"‘È
+óck0 v=<>Ʀ!  ãôTÌï ± ý-ÌàÖ‹õÆzYUA;Y¦VáàöÉ“ßµã3àw[ ›X܃sÚAv£1ãÁÙc }ø̈`C?pÒIÃP4ˆ>ŸÇà ]Äe–A‚5M=×w²¹Ú•xJÛÝÜ7år–{>Þ]¤)Óò´å-Òã[‰tÅ#f–2ÌM™G #t8ñô6s˜#à,dãìÀ@ÑÏÇ TÌÂ4A4–s?DqÅm;«?g*aGܬÃÛ=20졾
+𹔪´’²¬·eI€‰ g,ùÇ7/”zj®(ºOÅmýFíÓÌéfÍ÷À3ðÂñh`fpÆ;zgš`Ó7 æ&JŸ…îÍEË.ü*,õcç˜lîÝ)¯gìâí|Ï
+Ê&!æ
+endstream
+endobj
+2406 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [402.606 614.05 425.077 624.898]
+/Subtype /Link
+/A << /S /GoTo /D (section*.100) >>
+>> endobj
+2433 0 obj <<
+/D [2431 0 R /FitH 686.127]
+>> endobj
+2434 0 obj <<
+/D [2431 0 R /FitH 668.127]
+>> endobj
+2435 0 obj <<
+/D [2431 0 R /FitH 653.569]
+>> endobj
+2436 0 obj <<
+/D [2431 0 R /FitH 638.956]
+>> endobj
+2437 0 obj <<
+/D [2431 0 R /FitH 590.415]
+>> endobj
+2438 0 obj <<
+/D [2431 0 R /FitH 561.356]
+>> endobj
+2439 0 obj <<
+/D [2431 0 R /FitH 541.428]
+>> endobj
+2440 0 obj <<
+/D [2431 0 R /FitH 526.815]
+>> endobj
+2441 0 obj <<
+/D [2431 0 R /FitH 512.755]
+>> endobj
+2442 0 obj <<
+/D [2431 0 R /FitH 498.142]
+>> endobj
+2443 0 obj <<
+/D [2431 0 R /FitH 482.976]
+>> endobj
+2444 0 obj <<
+/D [2431 0 R /FitH 458.899]
+>> endobj
+326 0 obj <<
+/D [2431 0 R /FitH 417.111]
+>> endobj
+599 0 obj <<
+/D [2431 0 R /FitH 134.074]
+>> endobj
+2430 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F70 508 0 R /F49 457 0 R /F48 455 0 R >>
+/XObject << /Im17 2429 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2455 0 obj <<
+/Length 1842
+/Filter /FlateDecode
+>>
+stream
+xÚíXÝsÓF÷_¡GyZ÷}'JÛ¡$!tÂG“Ì´àA±• ¢ÈF¶ò×w÷V’%G’‡vúbO{{»¿ý."=ýr:ºwࣄ%VÚèô<–3k]d½eBºèt½Œ…´ãק¿Þ;pªKšp¦|ѣÇ/N÷Ç¥TìØx✎>ݧ­½ýGÏ÷ö‘ψ׷÷¯žg˜6*šH›ŠØž¾Éà¼Tq1O¤ç ü+ãW\èb•Uô2_Ò3¥Ç2¿\õ¹YvŽºx:†Ÿ·yy1Äaõ&]õy¥ËlFËyIGªuYÖç7w]¦Ejš%ZÃS°Ä’?›]€ Òd•MWá8þÅëÇ"& pc>õÞ£Œ´£A¦úè”tŸ¡<øâ¬cŠGÞ ^´¤eZÎêÅì/¸b½ÜÜÚ²\䳂¸½#i±nŽŸ!׿ƒJ¼¯LŠ8Úx•. Y‚*[.È<å2ÛkiÈrÒ™ÐWH‰
+~¥¯É¡ÀàLÏ#†R’ƒä¥¯CÙ(ˆd{æ-ˆ:8ï‚Èß"±¢C¨ôx씄yñq2‘P¿¿£ÇIË¿—ï«Øuù£Áèíàü趠ÞÍbW\Ù¯€£ïÄÂBG'ksÙëóºø\^¿•<`o|¨m¬VB°Jɸ¨Kó!´GBHÈôB^ƒÜ`7>ºQÏC·é’¸È/sêæp:7:7ú›½[§-WóAçÃnbc±ƒ£'OO®
+
+°gC@˜Tœû,–)Ñ·¤Ãî¼~VUZ7·(&)k66­Éën9›æ)eP)B„ 涪DÀS/³ÕzK¿ÉÒvà¸ã¾G‰p#/gÙǬÞÜtÿ[FV3»É*»ÍÞ’€E´÷yPj¹¢KÁWKvVù§Í×…–ç󊎵æÎ3ëåVO_¥—Þ$êéF%8[„E³O@ ¶;ÜÂq-ì´Ô{èM=f¡wÚiž•ˆÄj Îk5Òê" ‹‰ïMLáºó¡@÷Љy}}¤{Û¢ªçSp[b™’ÊŠsèˆM_epïyIÂÀ`ÝŒW£úˆh%^ÁÃ4í›Î2 ”š h‡ó*ÿÀ+]ÑI˜Ô®jƒ#gªaô¤\¬C4«x‘¢àÔ2ôõ£ýÓÑ»:ÂDû=Aƒg8i¢éåèåkÍà%Làº.úH/#s˜x°ˆNF¿ }›
+endstream
+endobj
+2454 0 obj <<
+/Type /Page
+/Contents 2455 0 R
+/Resources 2453 0 R
+/MediaBox [0 0 612 792]
+/Parent 2399 0 R
+/Annots [ 2452 0 R ]
+>> endobj
+2452 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [293.973 518.244 308.695 529.092]
+/Subtype /Link
+/A << /S /GoTo /D (figure.7.3) >>
+>> endobj
+2456 0 obj <<
+/D [2454 0 R /FitH 686.127]
+>> endobj
+330 0 obj <<
+/D [2454 0 R /FitH 469.434]
+>> endobj
+2457 0 obj <<
+/D [2454 0 R /FitH 450.989]
+>> endobj
+2458 0 obj <<
+/D [2454 0 R /FitH 415.124]
+>> endobj
+2459 0 obj <<
+/D [2454 0 R /FitH 247.694]
+>> endobj
+2460 0 obj <<
+/D [2454 0 R /FitH 211.828]
+>> endobj
+2453 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F11 573 0 R /F49 457 0 R /F1 667 0 R /F14 574 0 R /F70 508 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2463 0 obj <<
+/Length 1759
+/Filter /FlateDecode
+>>
+stream
+xÚíYÛn7}÷Wìã
+©Þ/)"m¢ÔA¸¶Ð6pü°–Öö¢²¤®ä8É×w†Ü«v¥8ð¥Ü\Š;ž™9CîÐè<¢Ñ뽟Ç{OGFDŽ8Íu4>‹ÕÄji« ã&O£ãØFÉ`hŒß¾0
+!âÑþÛñøÕáþ»×ƒ“ñ›§#Û$¸%FXÆ‹
+¬;Bo+]¸Ö¶åXáOзë_ŽŸVÎÓç^L`ŸrÆY¾¸ âhXÂGó¬­ÝHÛ8;Q\×ì“”Ô³¹“«OvX/ý­Þ
+¢¼¬ €ÈLÚ”o‘9P°Q¥ò‡¯~9èË„ó
+‚ã!¼™=Fz0²Àμœñ¤gìí„™A«'}j(¢Dµ—ÑŸ=2€i+=OÂÿL6©‚8[­ñ‘RÚ•ÑRTôÈ€ìtC†èÑç<Ô-¡VÖj
++%º~ÝZ¯¥óm|Ò>vì°s؉“в$b@“5Q€S¯ªl÷üy¯Çs-[$Ñ ~A)á“—€äÕ8vÞ„ø¶¿ßÂòŒB {äŒZÿ(âœgTv‰€öYà ¼öä{´€“6¯&¼í*Æê˜S G8Ië9¼ƒ(`¿†3L¶9Ã>žªàrwÈ3.†K×*Œ¬/’yè}MóÅxÂrq²ògwt£ï€;Ž¤à†À~wǾ­ãæyÓÕÇ
+|ùqŸÖûO•áâzóÛÒ7R® D=DÆUþ0Üɸçwq1᮶g\÷>õθü3îÅÿ÷_̸ü®2®ò_½7›Ý>ãJbÅãθü¦V³Eµƒûj\–ˆdÊW{¬u*÷¬°ô#_ÉŠG™ÿRÜU?×J¥˜ýùòjÅ"/“<¹Lá­ÕŽ’‡UW·,a©dÁ5\JÞ,qÍÝfÉHp&ã#
+BUÍ·¿öœLÀS±XŸLx)#x-çJ`@하¤R|‚Ç“²<’ͳùy @à?)þ?«^ÀÒdº«ðJ°MB³œ%sÿŽ¨þ©„äé°mñqd¯ÖùÕd]–ÏÎ0˜HÏ®ý1š‹
+K´mÜ*›)ªe3UšK‡²™4ºS>±¢p†Ý¢p‰$l†pƒ>¸¤óò¶v³Jºµ¸áÌxÌ!! LùµÂ¾—mÈ:7döbhÚÓ"²{<´.B¶SSÙBèý¹S`:
+endstream
+endobj
+2462 0 obj <<
+/Type /Page
+/Contents 2463 0 R
+/Resources 2461 0 R
+/MediaBox [0 0 612 792]
+/Parent 2399 0 R
+>> endobj
+2464 0 obj <<
+/D [2462 0 R /FitH 686.127]
+>> endobj
+2465 0 obj <<
+/D [2462 0 R /FitH 668.127]
+>> endobj
+2466 0 obj <<
+/D [2462 0 R /FitH 634.254]
+>> endobj
+2467 0 obj <<
+/D [2462 0 R /FitH 514.693]
+>> endobj
+2468 0 obj <<
+/D [2462 0 R /FitH 492.775]
+>> endobj
+2469 0 obj <<
+/D [2462 0 R /FitH 427.365]
+>> endobj
+2470 0 obj <<
+/D [2462 0 R /FitH 412.52]
+>> endobj
+2471 0 obj <<
+/D [2462 0 R /FitH 396.58]
+>> endobj
+2472 0 obj <<
+/D [2462 0 R /FitH 371.175]
+>> endobj
+2473 0 obj <<
+/D [2462 0 R /FitH 352.745]
+>> endobj
+2474 0 obj <<
+/D [2462 0 R /FitH 336.804]
+>> endobj
+2475 0 obj <<
+/D [2462 0 R /FitH 320.864]
+>> endobj
+2476 0 obj <<
+/D [2462 0 R /FitH 295.459]
+>> endobj
+334 0 obj <<
+/D [2462 0 R /FitH 265.08]
+>> endobj
+2477 0 obj <<
+/D [2462 0 R /FitH 247.189]
+>> endobj
+2478 0 obj <<
+/D [2462 0 R /FitH 211.324]
+>> endobj
+2461 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F70 508 0 R /F14 574 0 R /F11 573 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2481 0 obj <<
+/Length 1765
+/Filter /FlateDecode
+>>
+stream
+xÚåYÛnÛF}÷Wðq…„›½_R …ÛM‚6q¡màø–h›¨,©¤ùúÎpIŠ”(:†´E .Éáìì™9s‘Yt±èǽÆ{OŽ\ä©7ÂD㋈F±‘q†ra£ñ4:%\¸ÑÙøÕ“#+Û¢žQé-è)…ž¿Ø?žŒb)%±t[ëÈÑÉþχáÑÁáó7‡¨gU»Ž÷þÜã°d_ïl,µÂG“ë½Ó3Má嫈Q ;},E¯#©$µ?œEo÷~é;…¥ÜºÈhK…2ÁÀ×Éu:Š…žŒG‘¿–pg <“‚+ò6ûœ¢ug‚*m¢˜s굿gšgÅ
+®¼”’Ž:ج-ó6»œ§ÓïA«ôœ¤«Iž-‹l1
+tå)Ó¢ úl
+?–Z/.ÆŬFðÅ(VŒ‘É"Ÿ£‘¸FíxEíå"i0OÀÞ“b^œÃP;ÚÀ6]ÎÕ¬HótJJ<cî%
+íE·„H EÌУ‘w#ðú¬¼«ê<™^Ve
+¹yR,òpç `ÂyB¨mFå1e‡·”ë-÷»•ªŽåehЖn­‚Ž’µŽ]ï^5lçŸzR—¤œ›Þj*ØUu'­,`€Vãj‘gŸkÚϳÚ2XV͉d–áQQz^•â ~üÇ
+w“ÅìæzÖ˜ÈZº7À,ó'WÔ+Õ .r!0igˆ¸€h#ðU¦:3ß958ø®Žà¶¹­Ø
+/Áâ탙…³ffé‹0¸È×A ›¤`ÂyÚµ.†Šè<T\7~€’:ûlždµ‚Ü´TÊëÖo}D
+¢‚C³ƒMO£º§,JêÖ¥³¿úKA…h(tÚ£D” Û=#@dbí©$ÎúthªeƒâÑï=:e®‘xÔç+\ º
+ fÍiÏzZ ˆÈu£ÛV‚«¦K=: {ÝÒ!ûÚš¶Ì
+endstream
+endobj
+2480 0 obj <<
+/Type /Page
+/Contents 2481 0 R
+/Resources 2479 0 R
+/MediaBox [0 0 612 792]
+/Parent 2399 0 R
+>> endobj
+2482 0 obj <<
+/D [2480 0 R /FitH 686.127]
+>> endobj
+2483 0 obj <<
+/D [2480 0 R /FitH 572.428]
+>> endobj
+2484 0 obj <<
+/D [2480 0 R /FitH 536.562]
+>> endobj
+2485 0 obj <<
+/D [2480 0 R /FitH 452.818]
+>> endobj
+2486 0 obj <<
+/D [2480 0 R /FitH 416.953]
+>> endobj
+2487 0 obj <<
+/D [2480 0 R /FitH 296.168]
+>> endobj
+2488 0 obj <<
+/D [2480 0 R /FitH 275.509]
+>> endobj
+2489 0 obj <<
+/D [2480 0 R /FitH 207.482]
+>> endobj
+2490 0 obj <<
+/D [2480 0 R /FitH 192.366]
+>> endobj
+2491 0 obj <<
+/D [2480 0 R /FitH 176.154]
+>> endobj
+2492 0 obj <<
+/D [2480 0 R /FitH 150.477]
+>> endobj
+2493 0 obj <<
+/D [2480 0 R /FitH 131.775]
+>> endobj
+2479 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F14 574 0 R /F70 508 0 R /F11 573 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2496 0 obj <<
+/Length 1610
+/Filter /FlateDecode
+>>
+stream
+xÚÍY[SÛF~çWèq=­6{¿ô¥ ¤d(ðL›!<[MíH¢Ióë{vW²%[6vÈdxaµÒÑÑî÷}粆DãˆDïoN4,¶Š©hpQ¢°Q6RFaÊt4E7HcJp/ÖÚ ³‹‹Ë^Ì9G'§g=ÃÑàøêôü]ïvðþ͉i8âÌ`­4|Æ» Ì:›R}¹£˜Y‹•p¡áeÌ?IÆð‡¶^ŠnbI:½ï±A—nÐ(+Ât’ÕUùLóoi>û.EIQdãiX¨°Í-sƒ-UõJ¯Žû—]ÛÁŒ-ln:Ü°ævO>®» 3Åj‹_z1¥±Û._Ôb$ÔÎþîp¦°ÕjéÌhÒ°0ØH^Ü}ípA° ¢¶¸­¡Krÿö¤DÉä)]‰ÛdÄLhÌÁWL%¶bIÜÃ&â.À{þ%+R „ƒ²{72G¤‘nçiR¦y˜.Ý“Ò¿·…JF–Fü *µ0M*ÙL¥‘r+• E·Q jàv*ÁÀ–À”Z ‡b KðÏ<¿.|üº)€»J/°*¬Yc7Û‰]p¹‘%X—Yîç%$™­$Ìuט1¶$øéíñf01r;IvÝ;Å›©âC8>TƒK\-ÓD>æ\Ä r•‹K–ÆØFzæ.Ÿ0‰ú³Çù$--ÑÙ FŠfó0=É&.°Ö @3ÀU{<ΟJxòû<É“Gð—¿yÒŸª$¢‹j!‡€`Ñðñàæ–D#xø>"X[}ñ¦w&Ô½8‰®>„ÒÓ‚‡19‹$ç˜Éj!çðmX‡d zÌ ÿæ.™#wQ®³o©;¤R
+|äiQæÙÐ=)¶à
+Ü¡Ô˜Áû”¯¤µ«ËíN,©€d@ªmVûUhàÂQ‰¾d£òÁ]
+¿3wË…ªÿ°×Hœ`e¹£ÊC”G®@sãL ¯p¬hµZ²¾Tè ˜Œâ†Ñ|’L«ÅÀ
+|F· Œ@ÕÌç’‚@‡ Í2¦£pç>¯‚‡¢lÆyö5îF:Ùë?~Ö”¡‡4?x{7çpÊ6N!,äKkÂ:‡//
+•³2™¸KükOîï]h~ò`ã+.Üù’«ÑÐçŠð0›†¾HXL$kÇSöê·½ûûGÇG/ì@Þ>×е¤ë¡5VËÃm'øŒcaÝÿ¢}ñAÂ`h´/nêÀt#ô+2A,Ð/j¹Ò±dÓQ6LÊl:†¼I •>dCçÇ¥S"€"Z·@˜áQ’§] ƒõ(íÎŇÓïnÕs­`e v#Âb*Ç´óÎu1ƒ™áÝLpÝbÂMCí]9\ièÜ—GòÏÙúWb
+ŒÛÅq·ÚÅwõ’ÇýÏ¡ËŽz±‚žTîf½áî
+! /úÙ¶NbJ,¡Äª‚
+I6õaÁ­¬º$¸¨V”á®Ï]vSO½‚â zjeº{êªVˆºVˆf­(Å‚©®b±—˜ú‡/U“zNMj5A™¥z©þ5IÊŸW“´MO]j‚ Ôb'5©Ÿ£¦ºÉ»®ÎƒÃQ`µ›tÚ¡•˜H-&ºALÒ—Šéêu¥¦×*&ùÄ´­ÕkM,(‡“ %N+)Án)™•žn©¤î_¦\N ÚãºÕÕüW,Cé
+endstream
+endobj
+2495 0 obj <<
+/Type /Page
+/Contents 2496 0 R
+/Resources 2494 0 R
+/MediaBox [0 0 612 792]
+/Parent 2503 0 R
+>> endobj
+2497 0 obj <<
+/D [2495 0 R /FitH 686.127]
+>> endobj
+2498 0 obj <<
+/D [2495 0 R /FitH 668.127]
+>> endobj
+2499 0 obj <<
+/D [2495 0 R /FitH 653.681]
+>> endobj
+2500 0 obj <<
+/D [2495 0 R /FitH 628.276]
+>> endobj
+338 0 obj <<
+/D [2495 0 R /FitH 597.897]
+>> endobj
+2501 0 obj <<
+/D [2495 0 R /FitH 577.682]
+>> endobj
+2502 0 obj <<
+/D [2495 0 R /FitH 544.141]
+>> endobj
+2494 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F70 508 0 R /F48 455 0 R /F11 573 0 R /F13 705 0 R /F10 668 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2506 0 obj <<
+/Length 1374
+/Filter /FlateDecode
+>>
+stream
+xÚí˜KsÛ6Çïú<R!x?zéزÜ4Ó&®£iê‰s %Úf+K*Eçõé» €iÃŽ×äЋ Ëåî?,–¦ÙEF³_ûÓÁ“C›9â4×Ùô<cš­M¦­&Œ›l:Ï^çLÐá›é³'‡FtM%ÂðãÆO÷Ž¦“ãáH‘2cóÃã½ß'aê`2~q0A?ßþäPºŽÃQëqÄ LŠà÷Åu³¾nÀ‡ùº¨‹«²)ëÍOÞÑd:øwÀÀÍØ.t!ˆU:›] ^¿¡Ùn>Ë(1àø7½Ê„Ä0|p‘½ü‘Á0¢Ê4D˜Ésx7ÄA-ϧCnóëá.8Ç™Ì_VKŒ*cTg$äÈS*<|J=«š \™·–X¸kó²ºX–óŸ‡ „0ùA¹™Á0¯«!Ë×MµZ¢2/–ó h]nšºšáÍ=rPE¬¾%‡tö~9zKœÙL9I¤ÑOÆ'‹®rJÎt ?Ž4pðëkÊ‹²öÉÓ¾8{u]xEýM@OÕSÆ‚Ò\éüùÊT¾ÞÜ Ò@V¶¯>>:yŒ˜ì àÚlN)å OŽXÓñóêvšHÕ[7Å6~@Áå³Õrä39C˜ºABSTËjy1)Ãóæ· cx,¨“7œeùê¼µ,c:¬»0bÄa"C…õ²k-ˆf1
+×Yw™q¢­¸vË1ýä÷Ö7¹–‘þý¿Ð³v~M‡ÕÛûPÇ}èL~¹ª«1bæ<7aX-çåû0ôÛÔÙö¤JºX¡§wø§¬G _ ÎáÜhð#•®—~Т?œó9ãDW®„6g‹•/²3´øç>ª÷O«„á*‚nªê€3QFpèãæêGÖ!qˆD8õÎê¥D„½—óÙJøZ•ØfwuYÄ©U˜9‹çlB—SÊä¢)ër~‡'Õä{²ñ]‰”üõÅPqC ‚˜¤Xž"‚«uøÙ¾(Tªþ—Å÷‰Uî¿ÂÃÅâºý1´Sšoâ]%úñpÅê}{å„NÓ ·Z\eøüÇ©¦½×ï3À¢¿µZa%¥#Tñ~¬³`>/c7¶ªçeÊ1ÍâÙß_-U®·©rRÅ©"ü\¶ I€68~¡ AÈØ`Æ3FëÏËxû¯Èö
+è’e&Õ
+endstream
+endobj
+2505 0 obj <<
+/Type /Page
+/Contents 2506 0 R
+/Resources 2504 0 R
+/MediaBox [0 0 612 792]
+/Parent 2503 0 R
+>> endobj
+2507 0 obj <<
+/D [2505 0 R /FitH 686.127]
+>> endobj
+2508 0 obj <<
+/D [2505 0 R /FitH 668.127]
+>> endobj
+2509 0 obj <<
+/D [2505 0 R /FitH 634.254]
+>> endobj
+2510 0 obj <<
+/D [2505 0 R /FitH 478.779]
+>> endobj
+2511 0 obj <<
+/D [2505 0 R /FitH 442.913]
+>> endobj
+2504 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F14 574 0 R /F11 573 0 R /F13 705 0 R /F10 668 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2517 0 obj <<
+/Length 2022
+/Filter /FlateDecode
+>>
+stream
+xÚ­XKsÛ6¾ûWðHÍD^È^:µc·î¸‰k«m<Ž”˜ʢKRI“_ß]
+#ZÓФº÷/}·¯RŽÀ@¯ØçÖôÖVKàçŸð§pŒÆ†Ê«\ZP
+”ø8ó©ü ã{ñý÷d6ŸûÑm4ËQ±‘éÙï`Š9Ä”@÷¨-Äg+Vt‹™Ì±òÇtm^Aвd/÷4c!ÉÂU^Y ‹]ý´«½âeæÛF…µPà6'LÌŒ/Û,ß®áX!•‘ƒuŒ£›0°fØ0
+ìßG“m.¥Ïpû¡Û ’MÔgNÕƒ)½ 8â¾(ýRh¾w[G„¥/KŒŠÏŽþýR^K€L$ ’yÎ)ÔW9ÈÜÎ#Jê
+
+®ÓsÑ,ç­4SaºÙWèdÒÉõ;YÜTº‹³‹ó_®'ê!'‘nëáí„­­Uóëù„–±¯©·ôîn°‘9SÌj™ƒ¨Œc'È'·{†¶ðnèä6l{ a·w -#(”oI½ŽP’ˆ¶#—³ˆ…i16¶Z׬‘´1ðÊ)þ”×~å•Ïi“ÍÛ ijÿxm&8Ô¬åDŠ‰‚FྠšŒÇ`R-ìÌiÓ–‡ ßO9NC¿Í"Ç'ïÞœ¾[QóÊ
+¸Oý}îÙ,ÀûgÀÀ¬p샙‹…Ru ÔÎ2k7­±Ð&—XÕ|Éikx,ô%û¾é¾§M÷è B¡‡¹öl* ý!°D@Dpn›ºv¸° %Ãã÷øŒ|]
+{ŒSpŠcýxÂœê[Ðøä×·ÓaGPàtÀÝ6èm¹‡£*<¾Aó˜·ÓVûîŽ" l@6°œ… XþCµ‡M#ls_;~ ÐÝ,bÑZ:÷N…˜"ûæýÍ8I KõašFéÜ
+endstream
+endobj
+2516 0 obj <<
+/Type /Page
+/Contents 2517 0 R
+/Resources 2515 0 R
+/MediaBox [0 0 612 792]
+/Parent 2503 0 R
+/Annots [ 2512 0 R 2513 0 R 2514 0 R ]
+>> endobj
+2512 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [431.873 441.914 451.577 452.762]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.85) >>
+>> endobj
+2513 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [234.756 198.013 262.209 206.813]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.10.1) >>
+>> endobj
+2514 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [234.756 119.186 262.209 127.986]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.10.2) >>
+>> endobj
+2518 0 obj <<
+/D [2516 0 R /FitH 686.127]
+>> endobj
+2519 0 obj <<
+/D [2516 0 R /FitH 526.841]
+>> endobj
+2520 0 obj <<
+/D [2516 0 R /FitH 506.799]
+>> endobj
+2521 0 obj <<
+/D [2516 0 R /FitH 485.872]
+>> endobj
+2522 0 obj <<
+/D [2516 0 R /FitH 468.041]
+>> endobj
+2523 0 obj <<
+/D [2516 0 R /FitH 454.865]
+>> endobj
+655 0 obj <<
+/D [2516 0 R /FitH 352.678]
+>> endobj
+2524 0 obj <<
+/D [2516 0 R /FitH 325.493]
+>> endobj
+2525 0 obj <<
+/D [2516 0 R /FitH 301.746]
+>> endobj
+2526 0 obj <<
+/D [2516 0 R /FitH 276.062]
+>> endobj
+2527 0 obj <<
+/D [2516 0 R /FitH 260.395]
+>> endobj
+2528 0 obj <<
+/D [2516 0 R /FitH 246.113]
+>> endobj
+2529 0 obj <<
+/D [2516 0 R /FitH 232.937]
+>> endobj
+2530 0 obj <<
+/D [2516 0 R /FitH 197.235]
+>> endobj
+2531 0 obj <<
+/D [2516 0 R /FitH 181.568]
+>> endobj
+2532 0 obj <<
+/D [2516 0 R /FitH 167.839]
+>> endobj
+2533 0 obj <<
+/D [2516 0 R /FitH 153.557]
+>> endobj
+2515 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F70 508 0 R /F49 457 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2540 0 obj <<
+/Length 2326
+/Filter /FlateDecode
+>>
+stream
+xÚ­YKs䶾ﯘ#§’¡ à÷ծäÝ”]Q)J²©µÔÁæ’£µüëÓ/pÈ¥ÝTù"  »Ñ¯£hµ[E«Þ\ܾùî*_a‘êtu{¿Ri¦i¶Jó4T:[ÝV«ÏŠõú—Û¿}w•ÅÓ­EÆE|hÓ»o¯o/oÖ›8Žƒ,\o²,®nÞþtɤ÷—ïþþþù¼‰DºÿÎUب$“<YmtĘÙ?:ί>oLï½ÎƒŸ#]|Zo´Šƒ¿àG9Яºž¿µ]oTÐËlx(Ý\ÿ‰ʦâ«&ÅÌ*EhâÜ_õoòž÷M57Q¦ò»>‹Í¢Éféh±»_Ÿ³(Â(+ü†_¦ÊÁ¶kÿÊÃ/¶³ üñÞa‘í”
+ c^¤â0örP@¢°‡ÅAl[°`T¶Ú´]e;^vMeç íýÙ‰»šl×ðç7^,«_Ë­m2ÈövÉ&:âtÕažÚ¶ÍI6l…;'E˜æñüÎÛ=äïçQ£ÂL¥°5‹$ç­oëmß»]ñ{õ ¿r]$<®M”õÑ2} >­)øà“bð1ŽÂD‘-©uñuÙÿ¯)^”}ëÚg|6Šùüžïeý³wÍXEEpsùîL%pcì…ŒéA[ô„á~Âa$
+ÂÚCÛ¹?Zö{Yó"ÇG†ñ‘a|ྟ#•Ôò¡J@Í3w:S5üE8}ËS[ídÿgÑø<æ”Fé«A§ÂØŒÉüÅ gZ:b«c'´ÊöÛÎÝÑU j*Q§¡.òùxøv;8°:ó Zu»nÈMèæ,TàÒ3>ózœ‡:1s·r¾&âè%7½ ÍC'¬úÀ·¶›FyØÚÍõ&½
+Slª¯ÁfþÁ樸aÓ˜×aSçú`S‡É6Ñ’™É›k寂 
+8æ8Ž¡d3`~,³oË8Á† –q\—Ox ÆKØò£lõx CÑ9»wƒÛZå®F#„IL„Å2}¡O2áLœaƒöÀÆHQ¸Á÷¹Œ˜ŒŠP§ñWj³Î‹9LÎT˜Á$g’)1NhY1Ý5‚˜Z…Æœ•„o@ʘ‘R/"å>mr ¬‚7a^ˆ ÿu¯7)øú]»?”ƒ»sµÖ±ž.eá©-¼Å+1¨;¸À"^±F¢b¾¸ZÙ-ç75VHqûCm÷’Ýh$›ÎöCç¶Ha“°´™Eö-„Ðãh;´]Ï„;$<ñØ6uÙí8zOK w MrŽ$‡H÷]¹·¼íî1[ÏÙNÈ© 4e‰zFs îw[SQë†_7ÃR†Ž¯ßòŒõSEp(«ŠE
+>h}¡K£%¨CÖÁ}ÛM9ÁàÐÙG×{ÏêjA³]ÔY, s,vóP‚:T”Á¹€ô±ëÐpH‘HÑ– Ü+
+ˆè©:œ”^}ª1÷ +ÓU}ø"ÊÜ’Iâ, ö¶lhˆù^LdËg>Æ23µ<§ºávÔ –{Ð
+D’²x®ç_¢#4­ÈŠŠC9§i  Ý®1I>¸lIl R×5IÇ&ÑQA|à@ácM؈ÛÉÿx Ê5´—CXÂ
+õHžî5á¬Å‘/Ï‹5Œ`xÞ‰ ’zPIS•5¾\žNq%5'\IéùÔŒ<Ÿ¤kùõ;••w-'߇žtYÐUp¨ˆX0UIðq`ZY÷-|½)"_o
+i*p[Ç©àèàE.ùÍ'ÇQ;ÀdÔ=/‚;°ÁWQËZЃqA·Úí#Vã$É 4öô“|Ïü‡$¼+~OÙ"h! +á!õàˆ“SAä:ƒÝá·u¹?ˆ”3K¦ó~0QzÞ"s¤â © _[z´Ãuk²[N-ü¦AtGb6åH%¹±/6ç‰Âæ¼xö+Kã_^:©ñ'e( Ë¿„œûNàЀë)‘8zÌ=Æ·‡Fyœå&8ò†À•“ox©¬[îy•?}jd ÿ5ãL½„´Ô~ãW
+û*
+–…Žº¯ý^
+
+&‡ºÜb'’DZšo:#_*û$ÁýF÷E·²qïSR˜—Á¤·!àbw3yîÉ ü¡† ¸§îŽ_9Öµ8I5¾
+endstream
+endobj
+2539 0 obj <<
+/Type /Page
+/Contents 2540 0 R
+/Resources 2538 0 R
+/MediaBox [0 0 612 792]
+/Parent 2503 0 R
+/Annots [ 2534 0 R 2535 0 R 2536 0 R 2537 0 R ]
+>> endobj
+2534 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [288.555 567.504 316.007 576.305]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.10.1) >>
+>> endobj
+2535 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [276.932 475.848 304.384 484.648]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.10.2) >>
+>> endobj
+2536 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [435.396 244.777 457.868 255.625]
+/Subtype /Link
+/A << /S /GoTo /D (section*.100) >>
+>> endobj
+2537 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [480.136 244.777 502.607 255.625]
+/Subtype /Link
+/A << /S /GoTo /D (section*.104) >>
+>> endobj
+2541 0 obj <<
+/D [2539 0 R /FitH 686.127]
+>> endobj
+2542 0 obj <<
+/D [2539 0 R /FitH 668.127]
+>> endobj
+2543 0 obj <<
+/D [2539 0 R /FitH 630.324]
+>> endobj
+2544 0 obj <<
+/D [2539 0 R /FitH 615.823]
+>> endobj
+2545 0 obj <<
+/D [2539 0 R /FitH 602.429]
+>> endobj
+2546 0 obj <<
+/D [2539 0 R /FitH 566.508]
+>> endobj
+2547 0 obj <<
+/D [2539 0 R /FitH 538.668]
+>> endobj
+2548 0 obj <<
+/D [2539 0 R /FitH 524.72]
+>> endobj
+2549 0 obj <<
+/D [2539 0 R /FitH 510.219]
+>> endobj
+2550 0 obj <<
+/D [2539 0 R /FitH 462.904]
+>> endobj
+342 0 obj <<
+/D [2539 0 R /FitH 182.94]
+>> endobj
+2551 0 obj <<
+/D [2539 0 R /FitH 154.289]
+>> endobj
+2538 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F70 508 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2554 0 obj <<
+/Length 1298
+/Filter /FlateDecode
+>>
+stream
+xÚÝXË’›8Ýû+XŠªè¬¦Ü~$i»“¶§f‘΂ƸMÅ6ÀÉd¾~î•À6v5.Ïf6è-ÝsΕtµž-j½ïÜL;ï†JX¡J.­éÜbTº -H—qeMgÖ¢\Æ\ÛQ* ½ûѧ»Át`;B2|莪lлïì¯Óï†ÁÞ„‚®’
+–ÓS1!°O‡V ¦ïYj±ÝâR¹Š‡V¼ê|ùJ­4~´¨«BeýÔ]W–Ô ¹ù¥5é|6Hö×……ÜÀg–ô•Ë=iVG«Äv<2µ¹"¿^l¨œyd’þ“ uãf,p‡¾o?RŸ>¥e)Ó½Dà@Ñ~ŸIú¼Nf¿Ûã”’~RÄyúR¦ÙÚ­g&“'ô!¥ÍHžÆءд4Ó!BW‰#:¼08O‡6 z€ÆÜáèæ¯cɤ÷kÅn×6H™<'¹íøÌã„I`û’Œ3ñÉtrß#?ÓY¹0ÙlnÒ²n›ç€6Z!n]#Hº6l{¡K}~Èö*ŠóÌõ´Äu£!ß
+×X|€ÎáÂs™R‡s
+§BœªÎñäfÒ§à5άÒÓ`„š2+£¥Éêa›~Ÿ´
+84nH‹Ó€²Úp/Û! BšJC„G"Sœç°G[@¿¹lDÎ(˜QA‡ü 캀?©ìrtE¯óô5Hk¿ ñða|5À¾’fyÜ’N•U]…;É£3\fy«ûW³Zrzp”T†K’Y²ÎV©sZ›uÔÊìOv(I÷ƹwÂÅ8#/éßɲÊGEuÄ%âH³3¶oU¹Cÿj¸5Ì#ÐÕ³äŒï J-¥èµÜç
+KSóÆ¥£å&i¾vÑ«z“^÷np)9~#9Ì•¡wð>;~º´gG¹Âõ4,âHûF >
+Ìœ‘ˆQê;§‘S÷90ý¼V'^H£ ÞŒ6ß#aHÌqøê¹€ ø"Äô)*ð
+ëÖi
+endstream
+endobj
+2553 0 obj <<
+/Type /Page
+/Contents 2554 0 R
+/Resources 2552 0 R
+/MediaBox [0 0 612 792]
+/Parent 2503 0 R
+>> endobj
+2555 0 obj <<
+/D [2553 0 R /FitH 686.127]
+>> endobj
+2556 0 obj <<
+/D [2553 0 R /FitH 668.127]
+>> endobj
+2552 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F70 508 0 R /F14 574 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2559 0 obj <<
+/Length 1455
+/Filter /FlateDecode
+>>
+stream
+xÚåXYoÛF~ׯà[)´Üì½Ë§Â±å8A“8²Ð"uü@Ë´L@W(ÉAúë;{"¥Õa¤NZôE\RÃÙ9¾ùf–8E8zÕy9è¼8×QŠRIe4¸ˆÄHJI-¡*ÜE×1a¼{3xóâ\±¦hŠKè±B§'—ƒ^¿›0Æb…º‰R:>í¹Gg½Ó÷g=£§ƒýî½Açs‡ÀGd½³THÑ4N:×78ºƒ?ßD)Øé‹D DSÊa=Ž®:^h…$O#)¢\:ße“¼›p©Y<èRw¸À3F ¯Š¿rc]D(í:JA©îåOXàÛb¹€+±RL# ñiÊ\£i~÷k7!ãø,_ Ëb¾,fS€lzçe¾
+a3¹:’T#0ćåCÿÊe·A- ý¼Ê-=ë&ÒùzÚ¥:^棼´AÀí ee™¯öO@T¢! §BÆïfv!âÐKXL„·-ÀXT|˜n[ º5I+æ”­­°·Ã™3:+¦‰µ+aq
+ÂX"%7ª|® W"~?ÚPªŽ'Þì„—‹e
+< 8”W°Àa²˜è=­EB›Sñ%’;‹Ú®€óˆ“ ›*Ö”U(ÝÈ?Ì&TÕjo'!
+æ D1é ³hPF¹ž*åÂVÿY&!‚Æ?› ‹‰–šê n‘0ªçá¯íbpX.V6Éüx¾ÌnÇ~«æ -,>ÉD¬q’óI^µJó¬)Ël{µgž",6æ¯Æ†¢ÚpaÖ|^>¸§«y¨Z–3g$£ÎBoBYTA³E© (I||^½ÿí¬ß;ÿø­ã¿GóÉN
+öz›‚·MU vª­û—/ÜÊ€!X€[[š`EÓ†¢?¶ýäæ[o–•Ÿ©B ^my×8Tèæ¡Âž$qCõgL¢Ïš¡[‚‡ÃµæpB–Ö§uýúI”*˜=í
+endstream
+endobj
+2558 0 obj <<
+/Type /Page
+/Contents 2559 0 R
+/Resources 2557 0 R
+/MediaBox [0 0 612 792]
+/Parent 2503 0 R
+>> endobj
+2560 0 obj <<
+/D [2558 0 R /FitH 686.127]
+>> endobj
+2557 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F14 574 0 R /F70 508 0 R /F11 573 0 R /F13 705 0 R /F10 668 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2563 0 obj <<
+/Length 958
+/Filter /FlateDecode
+>>
+stream
+xÚí˜KSÛ0€ïù:Ú ½½t ´ 2í0À!$"x’Ô1íÐ_ßµe'Nã
+ ÚÝÆ…)At¾¹ÒX3‹úד3‚ðr¬­F¿rÑkÄÁ– ˜_¡£ÆWoIu_Ê96’"%5fBùÝ÷{×.Œ„2<è†L·“0‚žqFEpÿv™vˆ2«ÝVJÿñ)‘ä<N§0Ò\ŠlÀEU™£x8rƒaD!AËMûI<IãñÈ;©7øI⦠¤! ’¸Ÿ Ls·Ô»ƒ[¬ù’;„5w»CغÀB<@¯îa§ý­ÓÞ9 š[˱3eèX+Œ ðy2¤nè’Ü dÑM›IÒËn󗀑ÒrÁG|Τ
+öÇùD›~çu5Ç\³rëÎa󓢢ʖ„òRè”V³%˜X]Yéû²¡‚`67´—D¹î‘ÕàªEëJÛ"EMÐ{WôâQ<úgé%ÄÔÍÞGu.Jÿ0„ã‹l.]a$­ègZêÖ,$RØjnr_A”(ì
+ž`Y”‹N¦Ón¿¶C%Ÿ§…ã †qvO‚±y
+ÊÈjʤ–n¦ Õ›š*V*0£Ì<)dï­ÒK´JBûŽ=WBÆáïõaÉ•½’…¿n†*2%d^2©Øú)+ÎÖÎÁ^ ó÷’ùœê“Y6®ü3sýW•LsOÉ„Óf2„–jæ=¹&^«|2_ @ñ|¾Îÿ¿×z=A’ìÄ›Nv¯ûzâi!”Ë>ºâªû ToBõ^N<–ÁÙMxåFüw£ä
+endstream
+endobj
+2562 0 obj <<
+/Type /Page
+/Contents 2563 0 R
+/Resources 2561 0 R
+/MediaBox [0 0 612 792]
+/Parent 2567 0 R
+>> endobj
+2564 0 obj <<
+/D [2562 0 R /FitH 686.127]
+>> endobj
+2565 0 obj <<
+/D [2562 0 R /FitH 500.697]
+>> endobj
+2566 0 obj <<
+/D [2562 0 R /FitH 464.831]
+>> endobj
+2561 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F14 574 0 R /F11 573 0 R /F10 668 0 R /F13 705 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2570 0 obj <<
+/Length 1533
+/Filter /FlateDecode
+>>
+stream
+xÚÕXMsÛ6½ëWðHˆà`/[–šdÆŽciÜñ$9Ð-sj‘%'ÿú.
+¤–ˆPLgÁ‡0}š¾}5V¬kš`ÄóX£áë£óéè"Šc¡BQ¬”ÇG§#÷èd4|w22ó p³úh:ø< p‹Ò®,R4 ²ÅàÃ'ÌàåÛ
+…(—ÎÁ³t‘G1—š…ÓˆªðÛ}Þ1Jx8)sã]@(…Ùu‚!ÜDZÀ×Åj Wb­˜FðéÚLŠy™Ï~bB1OòeV÷«¢*
+D;Ô7C#ÌuQ5
+
+—â[¢³mR_̧¹û`"²mnÌM›Ó \
+ThwÈN
+,
+? ª=Ýfúc2L(ž §î¦©M9t™›Ô›WÑdÇ'ªM®(¦6WfÔ/MîYQš+ ‹yü˜ÎÝêžåõ¾îp¶N&”.ýsvúïu`wžp²jý#”„[Éà
+endstream
+endobj
+2569 0 obj <<
+/Type /Page
+/Contents 2570 0 R
+/Resources 2568 0 R
+/MediaBox [0 0 612 792]
+/Parent 2567 0 R
+>> endobj
+2571 0 obj <<
+/D [2569 0 R /FitH 686.127]
+>> endobj
+2572 0 obj <<
+/D [2569 0 R /FitH 440.921]
+>> endobj
+2573 0 obj <<
+/D [2569 0 R /FitH 405.055]
+>> endobj
+2568 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F14 574 0 R /F11 573 0 R /F13 705 0 R /F10 668 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2583 0 obj <<
+/Length 2102
+/Filter /FlateDecode
+>>
+stream
+xÚ½YK“Û6¾Ï¯à‘ª2âA€ÜËV<S;cÇÒî–ËÉCr4,k$…¤<N~}ºÑ ERÔHöºr"4ïkôC
+½¥zÿºx½¸øáÆH/a‰Ú[<x<Ô,Ö‰§c͸0Þ"÷>ú†qÎf1±ùööÝ¿¯׳@Jéß¼ÿñÖ ¯®/ß^]Ï~[üüÃMÜS(EÌŒ6°UÅ¥A™‹ÐYp½¸øý‚Ã0ôø~sm˜‰—=]|ü-ôrXüÙ ™IŒ÷lEŸ<©$3?\yó‹_è$ý}¹
+NÃ[ºÞ¬¦¦XÕ,ˆ¸¾2iÿnc‘¿xDüã?—yóHÃÍ>µß<´˜·ßC O$휄ô4KŒŒQ°(™æŽ¹pÂRfTì=¡í*]HQ(¦b5$²± <U±Îì«ñ*pš–Ê5ÍmË/Ūf´û
+À]¹#ù®*hnWn5]­p |ìäkZÍ‹_C®Öx,”Áãâ³õú®ø\nvNo]dTŠà×g+^’gÀs¢Fé2CÜÓmƒ,Ê8ñ› >ÍVZH×°mNã
+×Pà첆¤SšÏ6OÛUѸ/àƒÊe܇
+S‡‰ÿ¦q»¤Ÿpcë⨻&5åz»sŸgàHéj7rkG}ϺÜÖ|p6O4¢4ƒÇ"G¨_Á›‰hûÏvcd
+†< \ÕÍG"ƒ( ý7¤Ž8‡}jlE(T—ò´I]Äî`‰ Xµ°Xƒ×ÁŸEµùÇÈ"H=3IÂÚ>
+£q9V8, ’6i
+á‚ ž6®:†OÈ+²fSÕ´ˆÐëkøvûßëËŜƪh°5câW)ç*3
+ZgçªèŒlu$l/‡­C2(0_™T$4köøB©>Ú§¬‰CQšB „†}^°*ˆ”ÕD“* uÓº‹¤¿Ot§XŽí­µ°MÈ¢ñ¾ýÜ$¡<±ôÙ" ÒN¡ ßN³ü͉>ɱÓ“CŽ!x˜Øÿj¢ÜdóUDOEƒÄ˜3¢AÜ÷!zÞ"Ž7¼¾ 4?-¦Í“!i&'î.ñÕ囟.ë`c­WÂ$ëL4ÌXYéz@[Úò¾§ÀÛÝåÛë››9½¸òv4Û•¸¼-ªù¡ëÀ\ßuhŸoÏOçU9Tc\iyª¸í¸£±=4ºð(wfoö¿ÐY«Kzn«"/ÝÏøÞ>ÝOy“Õ?~+¹°FÌbÖjáÔ⺟¡}îˆàº#‚ë¶ç6¿Îà\Ÿˆž*€>˜¢ä> 8Å\ÿsô:61ÙC¾ã«ç².†-_¿
+endstream
+endobj
+2582 0 obj <<
+/Type /Page
+/Contents 2583 0 R
+/Resources 2581 0 R
+/MediaBox [0 0 612 792]
+/Parent 2567 0 R
+/Annots [ 2574 0 R 2575 0 R 2576 0 R 2577 0 R 2578 0 R 2579 0 R 2580 0 R ]
+>> endobj
+2574 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [271.474 348.2 286.197 359.049]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.1) >>
+>> endobj
+2575 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [404.974 320.9 419.697 331.748]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.3) >>
+>> endobj
+2576 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [187.567 283.582 202.289 292.382]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.4) >>
+>> endobj
+2577 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [288.632 242.389 311.104 253.238]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.5.1) >>
+>> endobj
+2578 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [358.98 215.089 373.702 225.937]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.6) >>
+>> endobj
+2579 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [187.567 177.771 210.038 186.571]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.7.3) >>
+>> endobj
+2580 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [173.176 138.516 195.648 147.162]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.8.2) >>
+>> endobj
+2584 0 obj <<
+/D [2582 0 R /FitH 686.127]
+>> endobj
+2585 0 obj <<
+/D [2582 0 R /FitH 398.062]
+>> endobj
+2586 0 obj <<
+/D [2582 0 R /FitH 374.802]
+>> endobj
+2587 0 obj <<
+/D [2582 0 R /FitH 347.502]
+>> endobj
+2588 0 obj <<
+/D [2582 0 R /FitH 320.201]
+>> endobj
+2589 0 obj <<
+/D [2582 0 R /FitH 282.883]
+>> endobj
+2590 0 obj <<
+/D [2582 0 R /FitH 241.691]
+>> endobj
+2591 0 obj <<
+/D [2582 0 R /FitH 214.391]
+>> endobj
+2592 0 obj <<
+/D [2582 0 R /FitH 177.072]
+>> endobj
+2593 0 obj <<
+/D [2582 0 R /FitH 135.824]
+>> endobj
+2581 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F11 573 0 R /F13 705 0 R /F10 668 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2599 0 obj <<
+/Length 1726
+/Filter /FlateDecode
+>>
+stream
+xÚÕYIsG¾ëWÌq¨ò´{_r,¹,Yb—#ë€a$Q…@ä×çõtÏÍ&;‡\Do¼ý}ï=„£‡GïNÚÓ·=d$•Ñð>"#)U$µD„ªh8‰ncÂtënøþmO±úSƒ3
+èä:ç§×Ãn¿•0Æb…Z‰R:îõO/»îè¬ÛùxÖµtN°ç¾í³;<ùó„ÀG$¢#£tR!EM4~:¹½ÃÑ.ßG)àGþô „gkëY48¹qÚqS“™
+‰Œ‘
+Q.ä×=§]Ý –Bºõ¯;ŸA ]žçJ„…IÃ×…äFï²ÎšJ‚Œ9FTk'n%”b{G^—•#Âi!ëWŒ™{ÔÐ\!bdñ¦wÙþ¼©³ˆ(Q¼ q²DÄŒDÑù&£„0fvfî-ݧ";’sHE oJ:DX
+VPÿ•’¬•JYÿ/´Üø ¬‚Gd'ÞŠA
+’ MgƱ¶4‹Gßfi0ÚüÖJ8çñçédõhOy<šOÜõy:}xlQ¯Ü~qït³ÅÓÈ]ÏFótéÖ÷‹Ì=HGcûµGÿdúW:s½–æñ"{­vB˜5¬‚äMAšŠÂ¼ài|5ºMÆñér9}˜;~½á—ë®ã·zôš~o f/©;'îÔ’œÎs ÓÌëžà‰sN$FMn FBpˆF '•`ßìêæb°G®5v¬<·ŠÙøfÀëßíf±´¦^˜ádÞ§ÜëRÕ½;`%,+°¡å&µ Wÿp-L DiÎ9³oÓÍ<„X`¤xp‘çèc÷±Z¸O+f ù¸F†”ÙwÕ²˜‚²ÄÔ²„
+dQ¦|K”¥Ëg(Ç:NÇ«éw›éìo›1YpÇš^â;½Ä]^âÔëïŽ Û ³Ê7¹£ì¢Œ“¥Û»âXWO²…•î‡ÛX˜··U±°’¸Z•=DnÑÏe²ÏlY—Õ’/²,MróúÕ‚×[f1ŸLç>²§ˆUæE¨É¬Â¼ôɺi¡ú1Λ¶AÛþ¾´’lJ
+vwÕ”^ žI#òo.òÈ·o¬¸mhµ?/—µ«ÎyHm¢\Ÿä•y÷ñÃY¿Ûû²©´HH³Ûµ:å å!ßÞ¤¦ ­©:Âb“l?@–ï \Nj×ýî§-Êr@¦}Ñ[…¥'´CYÌk¦K(w­ò&Yëu©CtûAº|MJg6®Öê}–Žóå*{¯ly„·‹ñâéy–®üî>ƒh=Ù&6?ѱíqU_ ÌðŒ–Fèw;K2 º'« Y&qM4z›¡o‘´N/`9ƒ^Õ¼,o; !|¶«ŠÌ£o—ž¡æA_ÓÉKæÏ|•ö}ÐÔÒ±5æj
+v]Ì·WCKB!ƒøZyÙYï=FÉ£j·Ca™¦z.B5Àv=JÖ Î8i Ç%ÜäW5¸qû0Ü(ªU⯖` ¯vã= ¸Îá[k(iñ‘JžŸ¡kJ¨ðγ‹ÙÂuÏnû>ËG¸ü•½¼z]KœtâŽü˜g—Óy0…L?¼ÂŒÓ¢€ Ü ç
+DSäŠÐ´Ê•ŸÈÜLGbhkwçƒý‰F'¶/!ìx£×º4̈‹ü7SùÁÓ¥;²;©ÍõÙÈ]æ/Æ6}®“˜SC‡Õ¯¨¥FþúZzTPûË‘1 ÕðQ>vS€äõ‰.
+ß²ÝR#Æ_^.úèð²0µUy..KîÀÉ¿ö¯š¿¬
+endstream
+endobj
+2598 0 obj <<
+/Type /Page
+/Contents 2599 0 R
+/Resources 2597 0 R
+/MediaBox [0 0 612 792]
+/Parent 2567 0 R
+/Annots [ 2594 0 R 2595 0 R 2596 0 R ]
+>> endobj
+2594 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [456.639 436.099 476.343 446.947]
+/Subtype /Link
+/A << /S /GoTo /D (table.7.89) >>
+>> endobj
+2595 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [337.117 344.442 359.589 355.291]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.9.4) >>
+>> endobj
+2596 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [410.536 300.607 437.989 311.455]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.10.3) >>
+>> endobj
+2600 0 obj <<
+/D [2598 0 R /FitH 686.127]
+>> endobj
+656 0 obj <<
+/D [2598 0 R /FitH 594.394]
+>> endobj
+2601 0 obj <<
+/D [2598 0 R /FitH 560.576]
+>> endobj
+2602 0 obj <<
+/D [2598 0 R /FitH 546.13]
+>> endobj
+2603 0 obj <<
+/D [2598 0 R /FitH 530.19]
+>> endobj
+2604 0 obj <<
+/D [2598 0 R /FitH 514.25]
+>> endobj
+2605 0 obj <<
+/D [2598 0 R /FitH 486.853]
+>> endobj
+2606 0 obj <<
+/D [2598 0 R /FitH 453.035]
+>> endobj
+2607 0 obj <<
+/D [2598 0 R /FitH 421.155]
+>> endobj
+2608 0 obj <<
+/D [2598 0 R /FitH 341.454]
+>> endobj
+2609 0 obj <<
+/D [2598 0 R /FitH 297.618]
+>> endobj
+2610 0 obj <<
+/D [2598 0 R /FitH 253.782]
+>> endobj
+2597 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F49 457 0 R /F14 574 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2616 0 obj <<
+/Length 1482
+/Filter /FlateDecode
+>>
+stream
+xÚ•WKÛ6¾ï¯ÐQj®øÒ£·¤H‚´RZ Í+Ñ6±–dHÜõn}g8”lízÑöbRÃápžßŒ³d—dɧ›,®ï77·U™ˆŒå¹ÐÉf›ð,ge^%º/’M“|Oß«µä©í÷»B§ïV?6¿ÒeÅŠ²àx9KÖZ°\Ñ­¯»ñ¾w~ôƒ5-ÞA&Q±²,‰ëCW›ãøp0ÞõÝ,”+&U.¢ÐuáQÆWkÎ…N¿>®P§áÑÙ],“ŠU¹Èã5Q°¬tm³w#hSÊ´éWkQ¦õCk»l<‘G0Q©­Ý_W62û½¥m‘÷.\µMãºÑûW‘O»OkÜ‹àƒŒ"Æ-­›½íCû£©Qê=þXŸtÝä&ÎY¥5éoPŒ”Ñ©R¥~0]Ô¹<ÑÈË,ÜVJ ¼Œ<|7 }ÆèR?8ôK‘zÛå4Œ?ê8ÿ6X G5ù²±ÍOH¨Òƒë¬‰‡Þµv}gF’\ƶZ+%ÒÏžHÇ¡_m׳º6?ºã ²,Ÿ»zè;÷wð(<¦xž†<¼;ìD$’·ƒiÏ_vP[ÒXokŠ~š«ªt´ö>© ¯¯E 5Ã=j“K²Ò“Ò)]1%HGžºoA¿6&&Üøâ2¤OôqÎ HFOœð^k<?âîùži²®è<'dά`ýv‚P•(•_«$›qJà)Ò-fx‹v9LvgçQígâ=9¿§YŠR­7îŸÀŠXœ†ôÄÍèÁ{fhØÛ¹±ÁK‚÷§;îY?`bcˆ_ª+9!Ù³J†  ¢šuK+a
+šf]sÒu
+öU>ÃËñxpu(Öôk…‹’)­/
+·‚–=«16Îdu,Öp‡/mʪW6ñ,¶ë,"9nÈ ~Î$B˜íƒ#LûE7‰#²îí%]õ‚È V(1™’ëºý
+FÔB^ØŸ’ºp°UBë+¹^–AhÑz²F—“ñ»4ñq‚äš‹&èò0“±Q¤' A(©Ÿ¡çÊtñO
+‚Ø+e°xËžê 
+í¦Úo¤’ΙªŠÙ7ýîñµÿàŸK%øÙ4/ä‚©bm ~D „.hWMÕ°ÚË?!8Êj>I‘¶®»¥{¯e¿f²ä˸{J±WªCKb}kb½á;wSöâ |Ð}1&±r¦_vãÁnÃx.å˲1‡ÃsD¥>þw¦I¹œëaVVœþ͌㾠Qöù/ƹñþ®•àp¡™È"øpY-¸>lnþCÍÇd
+endstream
+endobj
+2615 0 obj <<
+/Type /Page
+/Contents 2616 0 R
+/Resources 2614 0 R
+/MediaBox [0 0 612 792]
+/Parent 2567 0 R
+/Annots [ 2611 0 R 2612 0 R 2613 0 R ]
+>> endobj
+2611 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [149.635 305.89 371.302 317.015]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.xiph.org/ogg/doc/oggstream.html)>>
+>> endobj
+2612 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [157.036 293.935 368.242 305.06]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.xiph.org/ogg/doc/framing.html)>>
+>> endobj
+2613 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 0]
+/Rect [200.663 284.194 226.87 293.105]
+/Subtype /Link
+/A << /S /GoTo /D (cite.rfc3533) >>
+>> endobj
+2617 0 obj <<
+/D [2615 0 R /FitH 686.127]
+>> endobj
+346 0 obj <<
+/D [2615 0 R /FitH 668.127]
+>> endobj
+350 0 obj <<
+/D [2615 0 R /FitH 453.419]
+>> endobj
+354 0 obj <<
+/D [2615 0 R /FitH 223.211]
+>> endobj
+2614 0 obj <<
+/Font << /F48 455 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2622 0 obj <<
+/Length 2287
+/Filter /FlateDecode
+>>
+stream
+xÚXYoã8~ϯðÛÈÀÆ­ƒº3ÛI:»Ó&n`€™–±h›hYòJrg²¿~ë"%;Jc^l²X,ëøª¨p±[„‹û«Ÿ×WïîŠE¹*³8[¬·‹( WY–/²"[Eq¾XW‹ßƒH…Ë?×ÿzw—'Ö8“ÄÏÍ—/·ŸÞ?ü¶¼N’$¸Y-¯ALðùþž ??¬׿ÞÞ|Ä©
+n?ýóæËã×_n–…
+ÖŸ?¡ü«P´zw§ŠE¤V‰Êb<éZŽºŽs8=‘Wñò:Šâ4¸=,“(xÉQ`ªÊ6;æi`þ×üW·;»Ñ5OžìÐѾØÔ!œ“¬Â2âs>ï@œJ£ 7GÝéÁô8 ƒao˜¾i›9Lm·LÔb°pj[¥V`Wg±º]#脨—Êœ^H1DžÑ/W«REN
+œÞÛ~ KãÁ¬ÀD½m§²Jê<¸`T®2p/pU¦)‹;©¸ à–ƒÝœjÝá¼€{ÿ÷dàŠ¼Jò‘k‰—¼†ë/çþ˜¡ç5ÝT¼uÓŽµdë³öèÛö÷¸ßÔ[fÞvíQ÷×æKÂrU¤îÞÇýKïMGw’õ³+ý sªx•—¥û¼·t¡=„‰*‚ƒÆÉ OÄÔ8É—1/ M¦yÚƒ¹kä1è`a :ÞÖmkð¨Ó!–Ñž²îœ&šž]ÐËWQ8ÊïyN²Nõ`Á ™Š‰C»3¨:f($Âzo…»7›Á¶LŽ¬ÂÆþFÊ  ÌTMN9T1<WŽc1‡3LÛiõeÀ
+kÇ=ÅI?ÊãóaÉI%=Ó*Óo:ëÌç£ þK[6毡Tü´âPF¤$¶X°+‰ViXzŒ\E‚’Œ®L×Ï⢅¬šä ècËp “Ê°-(6šWö$Çê·¼¾ákj8›(O.¥PîÐSþãn+5ÿù,‚1G½3«9ópÇeD,8
+Áʨlcd‚é;ÀüòÍ‹ ¤:âA^;+^ûøõqÍ£=bœßéúÿ#ÎÞÙ¦ùA¶鸟¸P R½sŽøîV
+§[“û{Ä6€û‡­ÈY§ý
+ç1à+"»=\¿ÍÇÚn_ø‚>°Àz:õVÄÁâ–4ó»õÑŽ*¨}²h(\
+ËImY·þm»ÝÔõk=˜,q g-n´¢ß®äeD1*E(…¢©Þ‡:¤ºò ÍŒØ6 á¦kgkµ·áeÅvïš»e© èÔ(|þNõŽ‹xŒÁ¸H\ "]À»¸~¦a¶â¿æ}cÚ¤Aµ`®}EŒÅm²0Õ<ó:úFýfÅ*h¥­Ž}¾ÄêuÓˆD‚rZE÷è %eÅ[©RÓÀ4؃,Œ½.3rÅcÀð$ÙP3 §7Ð gƒr}ùÅMÃÀ7«ø®û‚²ü-r¹pQÑ#ö£9`ÈI¡Î»NÇõ#i‰­#‚ä6W=ט%™0IÅc€Ç±Ô 1\"›€P"m 
+f<K|^ó뙦 `yüðùë/ïyiO/­ït‘H—¶ŸØâ@š·ø¤aJ& “r¹˜ø\´M…à!©<¾N‰’½?ؾ—¼V¾!óÀ.*¦i m­Ÿj!älߣ»%d€¤1ôÕiäýœº6G£ã`rÐÇ|ÅstHD …ÐÎ U˦K„¢O]gèIÍDãŸk³(N¶J¥uÅ[#{LW*ÛCh¹¨‚$•éØH5S_í“ø‘X™Ø4QðîÈej
+J¼MˈÚyÛïÙj
+—% ŸŸùn ñ;lEù˜ä‚…[ËÁÖ}ϤÞîi©|ïÓóíµ´9E°“È/;dÎÇÓÿ}‡ÔûÇwk¦à÷ÉÃì+Æ ÜåÎU8¨˜"nEgoµ‚ÉäÅ
+endstream
+endobj
+2621 0 obj <<
+/Type /Page
+/Contents 2622 0 R
+/Resources 2620 0 R
+/MediaBox [0 0 612 792]
+/Parent 2567 0 R
+/Annots [ 2619 0 R ]
+>> endobj
+2619 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [389.951 152.56 404.674 164.516]
+/Subtype /Link
+/A << /S /GoTo /D (section.6.2) >>
+>> endobj
+2623 0 obj <<
+/D [2621 0 R /FitH 686.127]
+>> endobj
+358 0 obj <<
+/D [2621 0 R /FitH 668.127]
+>> endobj
+362 0 obj <<
+/D [2621 0 R /FitH 546.463]
+>> endobj
+366 0 obj <<
+/D [2621 0 R /FitH 359.803]
+>> endobj
+370 0 obj <<
+/D [2621 0 R /FitH 224.265]
+>> endobj
+2620 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F48 455 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2626 0 obj <<
+/Length 2445
+/Filter /FlateDecode
+>>
+stream
+xÚ­YÝ“Û6Ï_á·hgbEß’÷®Û47Ùk¦ë¤¹»™Ðmó¢Ÿ(ïfÿûÃ%yWÛ¦3}2 ‚ ?
+ƒÌ/²Í*+2?ŒòÕ¶ZýË»öcÿjç…wûéÃU‘xÛ÷?ÜüvóÃÕ:ŽïnûËÍõ-ŽcïöúãÇ÷ÿ|wõŸí?ÞþXÌÇQáçYÇ’È0 ‘çU š¬ÖŽaå°)6&3I‰¿)"'ç¿ÏOŠæç V{ÿÒ@á0ò¾^E…§¯Ö¡÷¸¿
+½^54Žð r$Þ¾«ëî*ʽb­XÄ',cI-°–ŸÆÅ(6®óaé²(°ýt…?ºbô—IŠE’Jxï$¼ë¾;·b
+£øñ‰ª‹þÄ7 ]˦u. QDé¥AKðSKÈ^ƒøѵ
+ö¹;“P†Éòä¨på^j¤°Þ0øüËÍgÀÒ®'>SIŒä+9NY¸V©‹§êAäwüû%x½hýÖ° yr9«ð¾„¯á*Y€Fk%]S&ÎÑ¢Óƒ1ª,»^¢¦¬AÁ®"û*mËÞœœî°‡Åv—æ)\€,h®*9êÈè$ü%[6¬9´—âdh˜Ðåç›í©6Ó–kXx8j‘%Ï#c—Ô­4ŸzRès¦J
+¦8É"ÌU°1N|W²B± ¾F©w{®sªõ7²sžNå Œu:¡9že>E~F"î·b€:I×<ŸäNýàé”:p
+Xl ¤:Ùs­‡^·Ð¾Ð28ÑéhJñ‚=çœdîò}Mððh_NVÎ PéLÁuÍøn¡wA´`žÉBÏ2­q˜H .œqãøDÓk`:>hÄA€„"ͼŸHᇗsÒIn±sép …1§ž4‚#@o8å­ªÊ9=
+ÇÈE>ô p3ô!¤ù=â]ÝiSø—[;ŸøÑ€~"TM¾9)̽»®ÑKï,•¿
+ec ÊBRªaê@6mYŸ+Gmô \U
+á¸,»Ó”kñŽjgj.•@…‘C{b¶²±fÈAz;äˆ6~šOÐá‡?Bw v,Âê}ÞÏÅ#´.ªã¬põ@Ž¥‡eùò=yZ>Q"žP‰·Ÿî¶¼éIe.Ãtˆ8=@Ó(Áº”c‚¸3]lË‘¤-Ï}/¹“iuwÀºš'Ï]^ã¢JìΔ‹»&=¸¡\D»Á¸êõ·o]Zš•4X¸ÉÅÛjRVNGÆ ÑöL`‹Z¿Œ[nƒ7ç3
+x€žä5¡ˆsu_Ésqiì}ètQÍ2›ïÂ{n|l°Æ'šp™%O5fÿ;¸¢°2Èí’0cM ŽÕLsX‡ã§Z ‹PõzÍ~\‚[0‰J@«%~îö âysŠ¥âlÙ´’yŸ¾²8ò¹­°]‚|„b’x×xíŒÃ%¿ —lŽRL˜Beö"Ã.
+,ÂθôÆZ8ìT‡ÂÊt»T¾ròˆ#ï?}øDZWuL³ÏmÓ¹ØÄ—$W»
+I ¤÷¢W3Y³«…çÞŒ8“ERÆ´À½`PñÞ^Öt°Â~\¢pL{µ$3b ËkaX
+>êj3iPGãÃål`ü~tXŒõfºSpKvp¸`Ê<–¿ä#ùw|ç˜k¥?ô×NA×7âàY·% $Ö¸Jêë1ØÇdüÍA¡”Õ¬öÊ›p’ýEºÍá-^óä¤ô$جvý’}µrnžDÁ„éI¸™W?8}0µ[«žpóÄU2+yò ö~§3$óXý+Z¹Ñ {ªŠCÖxóÑkà•æ°ƒs‰ï(™Åw”Š­€:f_ ¢lŸßrm
+endstream
+endobj
+2625 0 obj <<
+/Type /Page
+/Contents 2626 0 R
+/Resources 2624 0 R
+/MediaBox [0 0 612 792]
+/Parent 2628 0 R
+>> endobj
+2627 0 obj <<
+/D [2625 0 R /FitH 686.127]
+>> endobj
+374 0 obj <<
+/D [2625 0 R /FitH 498.005]
+>> endobj
+378 0 obj <<
+/D [2625 0 R /FitH 380.005]
+>> endobj
+382 0 obj <<
+/D [2625 0 R /FitH 237.431]
+>> endobj
+2624 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F14 574 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2631 0 obj <<
+/Length 684
+/Filter /FlateDecode
+>>
+stream
+xÚ…TÛnÛ0 }ÏWøm6P»‘o‰Ó--:¬¬.0`0ÕVl¡ŽÉr»þýHQvb ÃžDñrD’Z:•³t®ùâürídA–†©“ï–.ƒ4]9é: X¸ròÒùî²8ô~æŸÏ/WщkžQ0Ægs¿½ýtýÍó£(r7çŒ{wuEŠ‹ëü!ÿºÝÜà5v··7÷_6Þ:vóë»[Ä_,mVó”|û®@Ñs]+<?f±Ë‡Rv$öZ ¾?ƒ ¼Ð)Rv;ë×záÚ}³J] uD²6.χCXð$£,@¬\-=æþX²¸àZv-¼ó÷0j‚z|Æ‚,I({®Þˆ”ñmdãP§k®­tš 9õu74%™ŸŽ†È=4¼sîSb„´á¦ì>0y±8ÈâxžÜf§‘–pR
+¿nåŠJ¶­l+Rb²xRè‚ôÀZ˜%ÇðZðrÄ4(&€àrZϵStÓU²àIØ/cJ §òn 19]fôTª,‘–$ÝU‚†à]ʸiµmSÉ5·4S†KCKQ ê¿|F
+­ÝgÒN³4o2 éôÁŽç6_üÙ€•å
+endstream
+endobj
+2630 0 obj <<
+/Type /Page
+/Contents 2631 0 R
+/Resources 2629 0 R
+/MediaBox [0 0 612 792]
+/Parent 2628 0 R
+>> endobj
+2632 0 obj <<
+/D [2630 0 R /FitH 686.127]
+>> endobj
+2629 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2646 0 obj <<
+/Length 1067
+/Filter /FlateDecode
+>>
+stream
+xÚÅWKsÛ6¾ëWàHv†AâAöVuä46il%‡Ú9P$daÊWHȵÓ?ß*¢šqM©3=öñíâÛÅ*D÷(D¯¡û.׋WW4AQˆ9Zo 9NxŠXa§h] [õƒ˜x².Ô#¬ó–þ§õÏV™b‘b”C° âÔ>þ¤Å1åÑ(•`ž8©%&~@HÄùÁøMÕfZmT©´~Ÿ¬™¥8åwF¢³[#ëêý€Rîõ2sžVMm7JÕkw–•¥Y¯ÙÚ ½“v!ë¼ñƒ(ñ
+Ù9Ùº°²…|È€±í$Tßïe?Ê´¯2dŸœ‘»Ä2wG.;!8eÌbÏ]´å“ŸÄöƒ$Þ*Ëhrê ÁÁ·}Þ©Í
+ËM*,”¿žÁLL¹Œ˜ß²6ÉÔ
+hCóÌrø+ü¹èqôü“´C]r€O,²¨¾{iÊß6uPüûR«¶”º)5›pû»U¹Þwî°W_’ôÏ‚
+¬›
+Ùi:}RöEâ}o?Ã/qôËdoèF§²Â‹&šÑ˜áGY\T™îŸ¥l¥ÐšÝ“™”½‘zßN8úBr‘™éûÅöàÆ93RjéXªJi›¨Ÿ™>?4f+ø¢j¡P-¢¹õr%Þï3Wï_Žj½Íº¬’úŒnD—E0·¸~Ú›®ÊtmJyl:6 @"Ûh“ùïÕykM¢OìX43£çÜV&²±­•M}t{w›± àTõý¼j0áD—$æôæízu=¯Ö‹ÏA„Óá9")Ø% åÕâöSˆ
+8„yÇi‚þD+áæÊ•èfñÞη“ÞÅ¡÷À8a,ÅÄÍŽ¿~ü†ËÄÌñá28£©Ë+Söï>\Û+ÚAý¯(ážì†}3coÿu*u—¼)íÆ0þ1·Ç ÌÎéœcB’óyºœ€Jù`ðF S½ôLU‡lTü¬þ9ø›áSÐQbÚîgÕ+ŸŸaJ/h:¿Ë®ðë{½³7·z·´¸¡nç—èÿÑs>Ô4-%ׇy¿ß.óúš‹Íõ8Ù´YQ8VÇã ãþ„Ø–õÌ£>ƒÕ0’Äÿž DâSÈ K˜§n!tª
+mào±Ì·
+endstream
+endobj
+2645 0 obj <<
+/Type /Page
+/Contents 2646 0 R
+/Resources 2644 0 R
+/MediaBox [0 0 612 792]
+/Parent 2628 0 R
+/Annots [ 2633 0 R 2634 0 R 2635 0 R 2636 0 R 2637 0 R 2638 0 R 2639 0 R 2640 0 R 2641 0 R 2642 0 R 2643 0 R ]
+>> endobj
+2633 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [252.02 396.687 258.993 408.643]
+/Subtype /Link
+/A << /S /GoTo /D (chapter.6) >>
+>> endobj
+2634 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [284.454 373.14 299.176 385.095]
+/Subtype /Link
+/A << /S /GoTo /D (section.6.2) >>
+>> endobj
+2635 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [312.687 290.179 335.158 302.134]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.1) >>
+>> endobj
+2636 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [321.708 275.325 344.18 287.28]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.2) >>
+>> endobj
+2637 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [279.865 260.472 302.337 272.427]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.6.4.4) >>
+>> endobj
+2638 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [264.667 236.924 279.389 248.879]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.1) >>
+>> endobj
+2639 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [301.833 213.377 324.304 225.332]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.2.1) >>
+>> endobj
+2640 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [379.879 189.829 402.351 201.784]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.5.2) >>
+>> endobj
+2641 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [261.669 166.281 276.392 178.236]
+/Subtype /Link
+/A << /S /GoTo /D (section.7.6) >>
+>> endobj
+2642 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [269.814 142.733 292.285 154.688]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.7.1) >>
+>> endobj
+2643 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [411.007 119.186 438.46 131.141]
+/Subtype /Link
+/A << /S /GoTo /D (subsection.7.10.3) >>
+>> endobj
+2647 0 obj <<
+/D [2645 0 R /FitH 686.127]
+>> endobj
+386 0 obj <<
+/D [2645 0 R /FitH 668.127]
+>> endobj
+390 0 obj <<
+/D [2645 0 R /FitH 491.97]
+>> endobj
+2644 0 obj <<
+/Font << /F48 455 0 R /F8 458 0 R /F77 675 0 R /F49 457 0 R /F70 508 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2650 0 obj <<
+/Length 1538
+/Filter /FlateDecode
+>>
+stream
+xÚí[]oÛ6}ϯУ L,yù© {HÚdèYk¶=(±’sìÌR¶u¿~¤HÙ–c׆/S¥EŸ,ÓWçòKâÁMnšüpt2<zqf’œä
+T2¼N˜¢D)(£ GÉo)bðÇðÇgš¯„‚¤DÛꃎ/.Nß¼zýË ãœ§'dYœôýw§ÑðÅ™0 „ $kQ2Й{¬ƒŒ1éùÌâ±tvo?´LÏÆ“ºœûãóñݸö‡ï9O‹ÉCYùy®VD-tN´
+µ oK?ÃÛb>Ê®,<˜tTŽüàÄoÒq‘þN™°4ä´“Ó†þ=Òå´¿[D–V~ø¡j±ÆSÎû Âýq1ÙG¥Ãž¶±Eå¿žMìì þ©¾õ¥ˆ|¥Ë7&É8%B_ÐùÙùëŸÞ=®[HK2oWç{ÀÄêZÑ‹€ë $7ÐþÎi@`+ÍQñÝc„N[øÞ´&±<04Lô‚1eˆa`É¥ PüPBØb6Í) Á#0< M^àô0ipbl!iä:•MsÑD³!ÛØ.„E
+s(Û…°úÉöçA£y8¤Š5](¨Ð|(4
+;
+ùdûó Ñ<H¼.ÂõB ùh>zDXp4]壘ͺ
+#Â<¸Ž€!"`0<‰ÇPad@ QjÍFaB#¹,Çσ™j‰ z¦h<¡°WAlŒÇÀˆPKÑ3#B-TGŠjÁ›P×€T‡ø©]Ž†09B
+±´RáwºëBJ<„8
+½¸/1I£éCàÿvBâ!ðúøK h}pƒ^\®ñ2š>8žVxüŸðBƒÖào ðMÀд2üÊ0ü-Ši<þùã°6.þþÂ6ùQvÕ©Ê× ©¼£# c"í¨|õF
+½Ó…aûÚ0
+ìá[ ˜ÖÇWØ ÏbM*­ì+ì„€^ v0]ä‚û<ŸqA@Æ·ÙP³è®©ü×Ùtâq¨N ?P§7“Òû¾³Ú×cGçÅô&\ÏæþäæÅ°âÊßn?W§µkàùp?È 9ÇÓ‘+ÂêÙoC:×½«Ù¤IÁez?)¦å7þØÓô
+Õ¾/I¦—EŽîŠz>þ×ÿܶÉt\ùÏ«Ù´ªÃÌüH};Ÿ=ÜÜÎê5ȦN2È„0®ÿi^6Ó¤Ý †®¥¦Ü<—«2ä^469PIÛ¦*Ù¼}7¯êîL—s¿n)pS{,*†­ZIüBx¢H®¹q!šä¹NìuƒuM§ÓŒq'še_Îb:-'>ÿìÚ¾~3|{ì '”ê.)wm˜ · }^6lðþ¬Ü‚ kèºÆìHUÚÕ ƒ¾fw²O±¾]oØÁn}r/CíPÀÀ]4‰ÈÃ,/s  (–¬Äq®§ËÉÒ‘Ü/Ù|S2¥;ÉVø®|µ ávÐÞ -¹õüs B®Yk„7­ÜD:)ªðjç8¼éÞí¬Ü_¸mº ’ã.óé[xçfÍ_w|"íi›ÈÇy•¸×T'>jµ.ÒyI¶ý<ýäWx³
+endstream
+endobj
+2649 0 obj <<
+/Type /Page
+/Contents 2650 0 R
+/Resources 2648 0 R
+/MediaBox [0 0 612 792]
+/Parent 2628 0 R
+>> endobj
+2651 0 obj <<
+/D [2649 0 R /FitH 686.127]
+>> endobj
+394 0 obj <<
+/D [2649 0 R /FitH 668.127]
+>> endobj
+398 0 obj <<
+/D [2649 0 R /FitH 477.268]
+>> endobj
+2648 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F48 455 0 R /F49 457 0 R /F14 574 0 R /F11 573 0 R /F13 705 0 R /F10 668 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2654 0 obj <<
+/Length 1398
+/Filter /FlateDecode
+>>
+stream
+xÚí\[s£6~ϯð#ÌE÷Ëtú°™Ùt·ÓÝéÅíC/$Æ6SÛ¤@šÉ¿¯°À1^cØ8±ŸÅáÓ‘¾OÒ‘ƃÉ
+Õˆ¡`j9ÁÀÅ!Á´ gýpqˆÄ´ë­ß·F ܦ¼Z\î…<&q(0µà±‡vЦð]ÃÅ¡á•´;qèCÅAvrÛZ_ ¬¯.Ft š4Zñvc°ƒ0jUQª3}Pð”ÏTM”5 ŸYt¡5‡Ëƒt ÓÝðÁMoÔ´–‡w\­àÜ28·”t€;‚ò£yÙ¢À¿O/<~øÜиúÚ—ü¢ó˪ÁiÚó KS™LJ±…èMÒj1i¼1Æ4ì›H¤»è´‹ <ŒqxhiÌ놠;!hwnû•«CBÕ!åY=¨ÞNíîµ~ûÎœÕу:8xf‘àM±ƒªó¦Äc¶{qHH…àÄœÅqÌâgq¼fÏâèIoÙ³8Îâx»%òå_ôøš‰âc8eB5‚Ñþκ´ØÏ×»%G Š{;HpÌnœˆÐpqÈW@m{„“fvã7ïîE1†Æ =RÛþeõI3ÛŸ8ÀoGz¤¶5Âi3ÛŸ84øüÐ Q[C8if76}º;¼È(x©ÀÁ3×Gp
+ÔG—þý'†ü€]x•FË°×׎aZº«qé†õцûQ÷—à•‡álöM)ìEQSwï!ΧÎ:tÛvFã$]aº£eùÉ?lT>÷Ÿo×8áì¾XT5Ù0Ìjõ’kõbÌ.g’4/Ú†±§¶)òÝ2Å&æI–»ÛY<YÄÖk~[­S–7qž¹T2v†öÙ8uYëBakÕ,¼Äz—Ϻ«x*7³«®&F’t´\01¶lxƸ÷0«¶.²-Ä£K=ÄEó&71^ä~Œ¢uù†ã4™¯vFY”ßß¹¼iÚ2Qí!ªëûáÅÿ¿Ù$
+endstream
+endobj
+2653 0 obj <<
+/Type /Page
+/Contents 2654 0 R
+/Resources 2652 0 R
+/MediaBox [0 0 612 792]
+/Parent 2628 0 R
+>> endobj
+2655 0 obj <<
+/D [2653 0 R /FitH 686.127]
+>> endobj
+402 0 obj <<
+/D [2653 0 R /FitH 230.554]
+>> endobj
+2652 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F49 457 0 R /F14 574 0 R /F11 573 0 R /F48 455 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2658 0 obj <<
+/Length 765
+/Filter /FlateDecode
+>>
+stream
+xÚ­˜MOÛ@†ïþ{´YvvöóXZhËQ5BH””´‡’¢VBýû]Ç„bp²ï¤9%qÆßùØÉLŒú®ŒzßΛƒã¤²ÎÁ5ÿ¦(BT!M6ªù­ºlÉ…îj~rpù™©õFÇbb£7ggG§ï>^t3fnu7+œöüŒû[óøÀ—¯GóæWCå­QTµ ªÜWÀY}]6—WFÝ–ïNTyVŽêÏÊr©È;mR.ïïÔçæÓ„ÑkvIµuaøáá‹!^^ÿ4¾½ïf6µ·‹òb}lç]âöþGW®-MÎûK×w‹•“b=éÝK±.§íb£©em¸¨uFÛ”µ7Ƙ!ì#ÇØjŠ´Žº}4áfk£‘ÎÞ?ñ¨Ê£,àÑ…Q“·kbœ6¯T÷™L#Q]% U"L®3Ø 8o“Ôù‹TRØ LÕ0$qh ·Ž ;`ëõoeõ(Wþ« 
+PÞ•Ÿ¨
+.n¢
+endstream
+endobj
+2657 0 obj <<
+/Type /Page
+/Contents 2658 0 R
+/Resources 2656 0 R
+/MediaBox [0 0 612 792]
+/Parent 2628 0 R
+>> endobj
+2659 0 obj <<
+/D [2657 0 R /FitH 686.127]
+>> endobj
+2656 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2662 0 obj <<
+/Length 811
+/Filter /FlateDecode
+>>
+stream
+xÚ­˜MOA †ïû+æ¸{ˆÛ³óq„Š¡µ"p¡HI{()j%Ô¿ßM&6Ùeì´§|0yòúµ=±±æ»±æ}u2«Ž¦M‚äÉ›Ù7ƒÖCôÉøè)˜Ù½¹©OÀA3 !ÖgWÓéÇã‹fÂÌõ¬‰\Ÿ|8½lngçGÓøŠÃ!øÐ}Ëš€.¬ÎTvóÅ»§³êW…ÝSkÐ  Cã}€@É|]V7·ÖÜw<7B
+æÏúèÒ`ë¹{ú`.«Ï9ž×2ZðÞø6
+(PH
+:P 0”›ŠœwŽ¤9'~Fó™¾Ä5Q6+*'3±¬“´:‡íì1YÇäÇ«"/ 5 —”$kJc5&JŠœmˆ¢‹"ª€[%.kr¡’èI¯Uä…C¸å¦ôŠzÚ`Qpϵ‡`%6x}ÖЊꖒÞáõCÙäx’æh.ëuZ½¥N©Tp†²Ì^-H Õ\Ø¢¡Äª€åܤñ –<C
+៦mL@œ 9Ú
+»þÄ€yŽîMÞn5i»únþ°È//ž–«¡{¾Ç¿óGè͵ap} dÁ¦$[ؘÆ#b‹`-ɈÔæ°V DØ[ ¬vˆgÁ’b@p¯:(y°Áï/ƒÕ
+ˆc3ÛË.‹cMÛÉe‘þey*ÛhAëëEœä W}}Š¤ ¨I””UQÒ}\vÑ÷(°rl :O«×dü­i²GmÕÔñ½¹ïBR»÷Ò¢äxdAËGyË¿€\€lÐcËæ:¥¹e"ꈂ›Å+ò$iXŒ
+'%©AÖ
+“övný»î]-r–
+endstream
+endobj
+2661 0 obj <<
+/Type /Page
+/Contents 2662 0 R
+/Resources 2660 0 R
+/MediaBox [0 0 612 792]
+/Parent 2664 0 R
+>> endobj
+2663 0 obj <<
+/D [2661 0 R /FitH 686.127]
+>> endobj
+2660 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2667 0 obj <<
+/Length 765
+/Filter /FlateDecode
+>>
+stream
+xÚ­˜Mo1†ïû+|Ü=Äõx¼þ8Rhª"¢
+©ôÒÀ„
+¤ˆ¿74)»ñ;!¹d“xŸ}çÃã™õMõ¶96'çQ%¼õjúU‘7Úû |ôšlPÓ{uÓ’‹Ýíôâä<ðÖRÛòS½ºº:»|óþS7aæöTw“Ìi¯¯øñÖÆ<=ðåûÙ´ùÙP¾4ŠòÃ6^åû28©/ËææÖ¨ûüÛ…ÊÏJAý^¯\*ê61åë…úØ|°#„|ÍÊ÷A[ç‹Äw«Ï†x9ûQ4¾~è&6¶÷ónB)õí´‹®}øÞÙÐΟ–\w‘ÛÙb5_1(¶'í“{)Ö¥¸_lp;jYŽÊ;£mŒEíɯâ÷ËØj
+´q;õO¡ÙæM6‹&D:õý3Ì5hêí†:-k†¡T•jåR¨•BëL&!éêH¿…¤zŒ‚,FDH:Ù 3ý‘
+hõr­ Þt€Þ±$Ø‘’ dBf p½Øu'8©êH+AP
+€B'P¸§à[¤àÛÖ£.Ñ‘ ·AN­'P/H ·wåŠÿL®KŽI®'‚bÄõpl/Ç5Ê˽ ”}i gÀ$¡
+endstream
+endobj
+2666 0 obj <<
+/Type /Page
+/Contents 2667 0 R
+/Resources 2665 0 R
+/MediaBox [0 0 612 792]
+/Parent 2664 0 R
+>> endobj
+2668 0 obj <<
+/D [2666 0 R /FitH 686.127]
+>> endobj
+2665 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2671 0 obj <<
+/Length 740
+/Filter /FlateDecode
+>>
+stream
+xÚµ˜Ao1…ïû+|d8~¶wlCEmÔ*4—4‡ÐеRÔ¿ßeM6@!;CÝS˜7ïøÍõMõ¶šÌª“ip*éD–Ôì«‚!))Š¤aƒšÝ«›ÑD{]Cˆ£óOÓéûÓËzìœÍêèF§“wgWõíìâd78ÎF(´¿ÒàÓjMeÖ?¼û÷lVý¬Ð¾4
+
+°Š(è`“ú²¬nnºo?¼PF‡ÔïnéR¡!í\ûòA]Us<›2`M¤¨ ÚzÊZΟ>¸åÝÅ›Çzlãè~Q‘š£zü^·ï-ÖK®WoÝ=<-ºökm )ù]­>ÅWµ¿)QíÞ{£mŒYíÜó÷öÂyíaûíuyÉnü¼h èÔ4= `1 Œ 'hg„Èa•ÖËûw2i—\ÜOÌk2‘6‰à„nƒP'D¿%•†¥î@;
+©Òa¦“1‡S”v˜á¬C’upžHkd1œo'É78UƒD9e#ñ‰¬'Vd(dFꌂaøYÁÁø}tœ$f°T¡JÖSÓÈ¡œ'§e¨—;¬7¡¬û×&iÊÖhFE¶G¡àx ˜Á%1w¸öy~æ©D#PÉ©¥FÂ8ö®–œN!ü“ÏFÒÖ%e½ÓöY×õ§‘ô–çö+íGwó‡Eþ÷òi¹²ÛóΈ/~å¯Ð« ÃÞÆ¡5Ím ±DãàŒmÍ{øC/¶@ç`“ïìnçPô”VMtBYÔ¬ÜçBôBdÙ 1#Qä>¤m&çj4xNy‘õœz*ó’¦´É/m¬:$ʶ‹œÄ@âQ8¥ ´Ì°F’f ‡gRÇ°…d*•™ÓŒeÍ(Ü‚ Fi×ۃ˻Þtq×»F—1§»ùCÑùΚZvl’¡(:ƒo#í"ŠÎ2Ëy}zñúeç·¬kD2D8®yx¶¯š›H›@%›‡°·yhø7ur2
+endstream
+endobj
+2670 0 obj <<
+/Type /Page
+/Contents 2671 0 R
+/Resources 2669 0 R
+/MediaBox [0 0 612 792]
+/Parent 2664 0 R
+>> endobj
+2672 0 obj <<
+/D [2670 0 R /FitH 686.127]
+>> endobj
+2669 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2675 0 obj <<
+/Length 758
+/Filter /FlateDecode
+>>
+stream
+xÚµ˜MoÓ@†ïþ{´ÙîÌ~)´@UV…TzHHà@BRÄßg;Uܬ½3UÈ%‰³~üÎÇÎÎD‰B‰÷Õe[]\etèDû]€SÒ9/\pЋv)j°ªylo.®½>ZŠVIŸ–¨nÑ›»»«Ûw¿43­u})›YâÔ÷wzwk¥ú¾|¿j«ß¤J@z¸—ʉt_GñmS=<*±L¿Ýˆô¬èÅßýÊ
+1}^‹ÏÕ§Œ^K¥ƒpÖK4®“øaûUÞÌuß>53 õr•ÞLˆuÛ]?ýlÒµU¿ä~wi¾Þ®öFdÅZ.š—bM Ób½É©5JbÚ…Ú½:ÇLÓ(ÁÃÁïûØg‡E3
+l™jøTB
+ 3\„¢dyÁ*5pDrrÊi‘¡TaÔ}´×3‘@Ø>š^‡{f9Ë‘åK ¤8ží„„T£ý):-£÷gi¦Ñh‰i©³—ÐuɃ¾ÚìúhSÏëU÷õv»ÙµÔ‹}³½úÓÝ&§‚ìt ÓÓC’}Žñ@›(CòÿÿžÕžc>x–{2Œ¥S#Ÿl¹n~t—iÂx 3Àñþd@u¯ B‘jùÔ2Ô°¡P ÓÔ¹wÒCNКP³:Ë*§*g”CÊ(—üh@ í ©A.‹$¨tŒh“òxv—“G1’(‘FŽ@J.ØÕ rBºÑ’jE5ÐS,kðBÊà•ïåË"I°›©²LÔÀ A!ã°ÂQùHÙ„¨9ú
+endstream
+endobj
+2674 0 obj <<
+/Type /Page
+/Contents 2675 0 R
+/Resources 2673 0 R
+/MediaBox [0 0 612 792]
+/Parent 2664 0 R
+>> endobj
+2676 0 obj <<
+/D [2674 0 R /FitH 686.127]
+>> endobj
+2673 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2679 0 obj <<
+/Length 717
+/Filter /FlateDecode
+>>
+stream
+xÚÍYMsÓ0½ûWèh¢j%Ydžièt SÓKé!! ˜Éð÷±­:íÂ2‹GyÞ§]­ÞS”ø$”xYÌ›âbáˆ2:íDóQ€r2¸(\p´ÍZ<”sie5ó>”×ï‹×—·ÕÌS6U0ååüÕÕ]õØÜ\,ÂŽÑAzçÛ§ôPC7¦PÏ>½^5Å×Ú·J€
+æzÿ^Ù-¿$/žª™åzÓ^bˆ‰ÖÓ窽·yrßÝZn÷›žÄt°5Híi°6†_ëíT´VIBŠv¥Òëç9ã%Ôz˜c­Óäl4±®G˜0iµcÌ0 ù<f2¨iˆ¥m€D;¨-P©‰yHw ™ŸGC™GÀЮI´!ÏÚ(bž4H&/†!  ÁR g23fíI¬1™Hã ˆòqHLŒ¤Ü "BD­j
+QŸž ù´+Ê\ª_Rˆ˜‰"$biOÉ7 rCØQÍR>ˆ1ž¦Ú½çPÑÚ©‡¸îß Iµí´-—«í&}¼Ýï:-½êUöæ[úIš€³~`Òèà¥SÃèhdÜ_ô‡`|Á!ÚS_ÀÙ’”Uœ:Aò4è:'ÿH{*Þ€ÓÇÅíŽõ1ÑInÄ6âI ï1y5É•U“ ¨Àl¬{Tgíþ±•¡IzÜ"¢Õõ2¿FÁeeÜ‘•Q¼F%p,·9¢¹-`q[Çòu.£HJ‘ý<
+p›Õ
+ȼ~!¯x„<Ñn`ÌÈ°þ'Ö`Ц Ö`¦œÖ`ú¯‚–Á1e
+endstream
+endobj
+2678 0 obj <<
+/Type /Page
+/Contents 2679 0 R
+/Resources 2677 0 R
+/MediaBox [0 0 612 792]
+/Parent 2664 0 R
+>> endobj
+2680 0 obj <<
+/D [2678 0 R /FitH 686.127]
+>> endobj
+2677 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2683 0 obj <<
+/Length 697
+/Filter /FlateDecode
+>>
+stream
+xÚÕYMoÓ@½ûWìÑ>d;³ß{¤Ð=TAXRé!! HŸulWIêà™f+Êɉ³~ûff=ûÞÄ7âmq^g—ADr¢þ*ÐtÎ œDåE½·%ZUÝÕWg—^ï U¤OC ôj:½¸~óþS5ÑZ—粚$œòfª›G è&<¼^ÔÅÏÓG˜&7Òº(Òƒ 9Š/ëâöÄ"ýx%ÒdÑ‹ßÛ¡k6Jhæ^‰Å‡8<HkRÖKe\KñÝæ3 ^Ï~´_ßWÊÅ2]bˆe]]Þ¯Ò½e7䦹5[m–Û †ÉZ”.šC²&†¿’õfˆ­©BhÙÎÚ¬ïÅe”Dmú¤Ç®.»`“~ÌQFk{4‡òÓ^¢Õ= šAÄnÐcD¥¨Y)•cq&yv‡t;HȤç±<ú~2/™¤Ør‰Žcj c¦¸ ÙT,@BÅ‘^ñ”EGËáØ°$TÜÓ+ÞaRPÝPÇ_uËG%,OÅÍê8Q3Nt·ö„·]KJàžI!ixˆHË„/ŽbçÈ{¹ˆŒeIêJ3‚&6¹˜„ÇŤlkŽ‹I
+LEyZžò于£<õ Pž
+Þ3ý ©}jdSÍ.ÁI²žsT‡´ªO7
+'8Χù„^¨fð ½NÍé†ÿDHül.hž
+endstream
+endobj
+2682 0 obj <<
+/Type /Page
+/Contents 2683 0 R
+/Resources 2681 0 R
+/MediaBox [0 0 612 792]
+/Parent 2664 0 R
+>> endobj
+2684 0 obj <<
+/D [2682 0 R /FitH 686.127]
+>> endobj
+2681 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2687 0 obj <<
+/Length 717
+/Filter /FlateDecode
+>>
+stream
+xÚݘMo1†ïû+|„ÎŒ?Æö1T¡QÔF­²Í%Í
+í¡Ð¨•Pÿ~ (l–ìLd.=‹yv>¼ÃûÔê}5®«‹I°*éD†Tý]!Ž”EÒh‚ªçêa0ÖNG!ÄÁõ—Éäãåípd­ÔÃh—ãWwÃÇúæbŸq¬‰:Phî²% ·›5ìnÜ~½ª«ß6oA¡B*¢ ƒIêÛªzx5o¾¼QÍW)¨¿Û¥+…>iØÜe©îªÏ9Ÿça ’®IÇmå`®×_íjú+§ñîi82q0_4/)¦œÖÓÏasm±[r¿¹4]®Û$ºƒõ¨)¹v°.ÅWƒ ®+ZÚĘ£¼,/:£Ñº}yS^qí׌uò~OÃ~Hp žñ°—‡|BgùlÐèÍg:»E/€ØÄ~ €ÈÑXIˆØÝåV^ˆäÄiA í/§A)Mì¢ íßšÔ¥c(£SVž?kÌ°ý%ˆ¢º2Ƈ‘9½÷R$ã™O¢gžÕ!$Q‡N´§Õu “7>­ŒÈ™#¥LΆ—´(Cõa¤ ¤!Yõ”"9»3H™ŒÔe}çŒ'ÉùaïÒ £äd.ª&cÁi±jÈêB emœÕfØý'«1Kæ#‘í6¢Ú ¦³å"¼]¯6úz¶UÞ‹?ù'yžô^ÁÄ  b ¯`’×1Û+„^ál¯`’Õ>Ç+tí Þ>cžô?hñç*Ê+gF½P7œCŒ§ œÑµð܇C Î r3¸´Ì}¥ºbWBm,–wp_¥õ)œ’
+endstream
+endobj
+2686 0 obj <<
+/Type /Page
+/Contents 2687 0 R
+/Resources 2685 0 R
+/MediaBox [0 0 612 792]
+/Parent 2689 0 R
+>> endobj
+2688 0 obj <<
+/D [2686 0 R /FitH 686.127]
+>> endobj
+2685 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2692 0 obj <<
+/Length 728
+/Filter /FlateDecode
+>>
+stream
+xÚå˜OsÓ0Åïþ:Ú‡¨ÚÕÿ#…è¡O‡™ÒCB:0“áë£Ä1'Þu5Ã\’8òÓ“V’ß/J|J¼-.ëââ:ˆ(£C'ꯜ’Îyá‚“€^Ô q_‚5ÕC}sqíõAS´JúÔD5^M§W·oÞª&ZëòRV“¤SÞMõöÖBí;|þ~U? H•€Ô¹‘ÖE‘nLÊQ|Y÷J,Ò7"u½ø½kº`£TÛ¾Wâcñ¡g>H‚pÖK4®±ønóY^Ï~4_?V åb™ÞPcYWA—ß«tm¹or·½4[m–»Aô›µ ]4ÏÍšΚõ¦ãVIkÒ¬%1¹Þ¹«ôjæ½32í%XÝN;Ø}iõ&m£ €ŒÖ> ° pàY‚Ñãú'Ñ mZEÕ+¸os,„º 6é:š0h˜6 SiXSI¨6"OqØ£VEÊ‚d šà½Ö¤õé…Òžöô“ª š%HY7LEÒ \MÂŽ±œZѨg=Q¤î*BÎ*jDIf#ß,œ83»†íä©ÃÊ®OyøLv£<뚺êš«J8žOcÚúR,AÂé[–dÇ"åÑî…!=’âéÄŠNËèýËâuXÑh‰­³”õ%4¹¹“´Í6Y›r6_-›¯·›õ6dÏwñ{ù«¹¥™Ó“ Ð Ú€4Êå
+€`/¨ÜI\ ›Ô„Q;ƒ …A°—kå9—UNˆBΨB%&‡dÍÐÙ0Ä`ˆÊMJ„º(ˆü°Q™Áy‚…”ÜA<¢$ÃK\¤q[®&!usÒf£I;}Ý(]ÈÁîH2Ó“0äÀš#ݼè±W…¼,NÚûÿ'¼ào’± Ð&Õ  ÐÕœ à{A!àWj÷
+endstream
+endobj
+2691 0 obj <<
+/Type /Page
+/Contents 2692 0 R
+/Resources 2690 0 R
+/MediaBox [0 0 612 792]
+/Parent 2689 0 R
+>> endobj
+2693 0 obj <<
+/D [2691 0 R /FitH 686.127]
+>> endobj
+2690 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2696 0 obj <<
+/Length 720
+/Filter /FlateDecode
+>>
+stream
+xÚå˜MoÚ@†ïþ{´lvf?f÷ªÐ(j£V!¹¤9@¡=µê߯Á˜Bbêºýš ‰Ø<~gvì}_õQõ²Ž‹³Y•t
+Ôøƒt I…4 ©ñLÝ—Cít5 ŠååíhôúüºXkËqmy>|uqS=Œ¯ÎFqc1j
+T_eC
+³½ðÓÏ‹qñ¥€úW£@M*Ò„I½_÷FÍê/¯TýU"õm³t©À'mÖWY¨›âmSϾ @Ðœ
+ž4ºÐˆ¹\½3`—“ÏM/«Ær6¯?\òë²\ùø©B*çÛ%wëJ'‹Õ|SD·X__)¹§b]Š?[kÛS A“«›ïŒÆµS³þyÞa°¤ÁcÛa„fÉpÐ.
+Is$L^ÇØI<5h"')ìÄfH
+˜¬ö1t%ÎqeÆžå~HÈdù
+Cå¢(‡´\Èé-~p!«³Øq³žÿ-5ëño˜öeHø iùߌ¶AmퟶþïF[Êm1w´F“÷­ ;Ù)r'pÈúê†çæ£ds8ã#ÊÞ,ÿ-{CÀ‹ZB•ÛÒ›¼9‹s¦ÿ""tÄ¢n‹š!!´5gBH ¡®à;U
+i©
+endstream
+endobj
+2695 0 obj <<
+/Type /Page
+/Contents 2696 0 R
+/Resources 2694 0 R
+/MediaBox [0 0 612 792]
+/Parent 2689 0 R
+>> endobj
+2697 0 obj <<
+/D [2695 0 R /FitH 686.127]
+>> endobj
+2694 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2700 0 obj <<
+/Length 743
+/Filter /FlateDecode
+>>
+stream
+xÚÅXKoÓ@¾ûWìÑ>d»³ï=Rhª ¢
+©ôÐÀ„
+¤ˆ¿Ï&k—:]Ç3éFÍÅyŒ?óÌ7+Ø&Øûê|V]zx°Ò²ÙwVpk³ÞrŽÍì¶c›»ÙÕÙ¥SOL¥ÜE‘ŒÞL§×ï>~i&J©úœ7“ˆSßLÕöÖJ´Ü¿^̪ßÄ·‚A|¸æÆoŒÈ}[W·w‚-âW,>,8öwgºf`Ûg¯ØçêSÆg¸Žt­q\j›(~Ø| Ö÷¿Ç·ÍDúz±ŒL=k¼®~6ñ»øÔ­ÙMãU}¿j Þ,w¾ä9à6è}Î:øƒœî‘Üè|-¸ô>‘ž‹øJáï9¨£ºè«Ö¤‡7éŒ&
+¸º@
+©ý*1‹‡ÌÈzEE¢–‡þ¬³,‡g€ÄÈÜæ8â¡A%ŸÉÇò+(:÷J…SæýÀ´ÁZˆ!HÌ¢ˆ`¶$® +pÊ¢y:^vyíP1mCWž»î)£ÂmN Âqí)Ã!†Sl9¯¡À§½tazKZø$ãµd½/.ë¥!B9l±OT}ÙCÏ¡’<þ\U<)Òy©Z`Sè”jÉM²›BôàZk
+endstream
+endobj
+2699 0 obj <<
+/Type /Page
+/Contents 2700 0 R
+/Resources 2698 0 R
+/MediaBox [0 0 612 792]
+/Parent 2689 0 R
+>> endobj
+2701 0 obj <<
+/D [2699 0 R /FitH 686.127]
+>> endobj
+2698 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2704 0 obj <<
+/Length 729
+/Filter /FlateDecode
+>>
+stream
+xÚ½˜OsÚ0Åïþ:Ú­þìJǤšÉ´™vBsIs€B{(4ÓÎ0ýú5ØPCL½KÕž€±øù­V’ß³Q_”Q¯‹«Iq1&§’NhQM>+0¨#&…5XR“¹z,¯´×Õˆ(–7Æã·—wÕÈ9WNªèÊË«7×÷ÕÓäöb;g£&¤ú.[ÚŒ)L{ããÏëIñ½€ú«Q 
+BÒfs—¥º/Þ7õte€äÒÖc#æfýÑ€[M¿5e¼z®F6–óEýáSØ”åË篕¥rÑyØT:]®Û"úņúNÉ‹õ)þQl­­£P“¯'ßmclÔÎŒ1/çiv?¿íÜh7h S{ôð¼ÕàüŽ—zqí˜#°F@è—xH´AD†H‹Bä°JHÃHì ‡[’Öpªv ©šU4‰ˆ  ç7Ë‘Ñj!Ì`cÜpc°K<%ôŠüvï©ÀàƳ¸À˜Y+œÙ–ÌØñp™ÁMrîð> âåÀPj¤JL1›U´
+D}ç'Ž(g3ÁfbõÙ *fòdÄáõM’š™‡3s%Íæím+ÔÉX’(êc‘;sÚ¬Zt:ý•³n½ªõNÛ´‡wNCc™L¶oLõt¶\4?ïÖ«ªöܳ­ó^ühþÒ<9Nf„Þ¬`#i41GV°)ê
+endstream
+endobj
+2703 0 obj <<
+/Type /Page
+/Contents 2704 0 R
+/Resources 2702 0 R
+/MediaBox [0 0 612 792]
+/Parent 2689 0 R
+>> endobj
+2705 0 obj <<
+/D [2703 0 R /FitH 686.127]
+>> endobj
+2702 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2708 0 obj <<
+/Length 739
+/Filter /FlateDecode
+>>
+stream
+xÚ͘OoÓ@Åïþ{´ÙÎìÿ=Rhª ¬ªRé!! H_ŸWqâÔ3aœÒ¦ëŸßîLwß[_ˆ·Åe]\\etʉú‹@Ò9/\p•õB<”hCõXß\\{½7TY> vЫéôêöÍûûj¢µ./e5Iœònª·°{ááçU]ü(0ýÓË´.Šô`"Gñy]<<‚X¤?Þˆô²èůfèZ ¶ï^‰Å‡yx+M’묗ʸVâ»Í'@½ž}o5¾~ª&*”‹eú0Ñ–uLùô­Jߥ¯°Ü »«‚.g«
+ËͲ™Ë°f‹ÒEs¨ÙÄð¢foz¢AZ“߀T!´¢ç
+endstream
+endobj
+2707 0 obj <<
+/Type /Page
+/Contents 2708 0 R
+/Resources 2706 0 R
+/MediaBox [0 0 612 792]
+/Parent 2689 0 R
+>> endobj
+2709 0 obj <<
+/D [2707 0 R /FitH 686.127]
+>> endobj
+2706 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2712 0 obj <<
+/Length 728
+/Filter /FlateDecode
+>>
+stream
+xÚµ˜Ko1…÷ó+¼„Žß^†*4ŠÚ¨UH6iPh…F­„ú÷;ƒ1dèÜ›¸+c¾9÷ÚØçŒß…ï«ñ´º˜#’L^{1ý& ¼Œ> ½„bºƒ±´r8
+!®ï'“—·Ã‘1f0F3¸¸º>Mo.&ñˆct”Á‡ú.[\jÆTjwãÓ׫iõ«BýV @É ¼2è$¾®«Ç'%õÅQ_JAüÙ]‹š+Us—•¸«>çzŽe
+f=û™Ëx÷<é8X,ë—àB.ëùÇ°þn¹òÐ|5[m–Û"ºÅ:HŸì©X›â?ÅÛRëe°µZ«¤Ž1«+¥^öVK»ïoÊ#Z´Ñ~Ìɹ¢fÑŒ\d#´Sª N¤vkÝ : F¯`ÿÁýX×õ§Xôwü.ôkµì”*žÒ~•`©Dÿ’‚cI¤íû‰‡YeÕ[†DЉ‰ì/‘‡$4’E¤Ìµa)k²Ai¤<•"cƒ²Åæ
+b/ñæ Ð¶ºjœ°÷©%sBèÌ uÛ_i:
+endstream
+endobj
+2711 0 obj <<
+/Type /Page
+/Contents 2712 0 R
+/Resources 2710 0 R
+/MediaBox [0 0 612 792]
+/Parent 2714 0 R
+>> endobj
+2713 0 obj <<
+/D [2711 0 R /FitH 686.127]
+>> endobj
+2710 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2717 0 obj <<
+/Length 742
+/Filter /FlateDecode
+>>
+stream
+xÚŘOsÓ0Åïþ:Ú‡¨»ú¯#…è¡O‡™ÒCB:0“áë£Äq¨]'ÞMÅpJë*ÏO»ªô{ñM€x[\ÖÅÅuQF§œ¨¿
+t óÂ'QyQ/Ä}™VõÍŵ×O†* Ò§!Ð z5^ݾyÿ©šh­ËKYM’Ny7ÕÛ¯°aÿóª.~˜~éåFZEúbRŽâ˺¸
+ËÍr7—aÏ¥‹¦ïÙÄpÒ³7Ó ­IÅ7 Ué9À¾úùi/Ñê¶øØ6è©Ü¤4A”ÑÚƒè%Q›V/ÊíÇôäàOY†?ÜJ¨GÃòˆÃÓî•10m"¡5n\Óu4 >=Ï縢bÍ||½9¤õ£éöH]Q†%HòéÞIŽWQqªˆ”…é#RvåxŠã5°q|§@FwŸµgôúXkº&=Ç$iƒÔLE$h¶æÖ*e)N×ÿ*¶6äôê <Þ1wN-~áŒJŒ»µ|·„ý$r½4-O“rÞ ¸ÔÈrI1Éû TóªrZFï_ÆØ ®*£¥j­%à—Ø€s·Mƒ×³ùjÙüz»YoI{¾cðå¯æ+ †M ƒ©A”\ŽÔ ­’ây©Á—ËnbŠ ³â‚6^ê`èqAQâ‚ú/qáìû$„+
+÷¨!`—<…{ƒ’YÀdð—@3äeúÁàyÑ‘ÔC‘8'°È1×éÖAðܧd?Ý€|º1Ø#s–AÒÍ…f:èAØn å([…ÏM3Ê2i†tÍåØ¢y.S\G”i€ë¶I4ÙÃÒA9OXz®œ;+!õ¾.òÝfIJ½õ€¹ƒ3¯ssþÄ+§afÍZdÍâ`dH3ø8-mÈ
+endstream
+endobj
+2716 0 obj <<
+/Type /Page
+/Contents 2717 0 R
+/Resources 2715 0 R
+/MediaBox [0 0 612 792]
+/Parent 2714 0 R
+>> endobj
+2718 0 obj <<
+/D [2716 0 R /FitH 686.127]
+>> endobj
+2715 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2721 0 obj <<
+/Length 733
+/Filter /FlateDecode
+>>
+stream
+xÚ­™OsÚ0Åïþ:Ú­þë:¡™L›i'N.iPh…fÚ¦_¿Â²Óà˜z׈ ‹Ÿßz%ù=G°ïL°÷ż..N±Àƒ•–Õß˽ ÌzËA:V¯Ùc9çšW3ç|y}¿X|¼¼­fJ©²®¼*/ç®îª§úæbá_q”ôÜYÏÒÀÂaL!Ú÷߯êâWñ£`À
+’büó>â
+€ÜfMà|£&’¼a0YYzƒj¶$šýìÎ\dŽß§‚Øäç6§ö‰3B.}ZJ¯qù“‘³=]:?>tþ5C|èìkÎø0ü?†XÁ_ o¾
+endstream
+endobj
+2720 0 obj <<
+/Type /Page
+/Contents 2721 0 R
+/Resources 2719 0 R
+/MediaBox [0 0 612 792]
+/Parent 2714 0 R
+>> endobj
+2722 0 obj <<
+/D [2720 0 R /FitH 686.127]
+>> endobj
+2719 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2725 0 obj <<
+/Length 753
+/Filter /FlateDecode
+>>
+stream
+xÚ½™OSÛ0Åïþ:Ú‡í®þXÇÒB[L:Í0ÌPФ=4)ÓÎ0ýú•ã¸$ Ä»AS8‚üóÓj¥¼gŒú®Œz_Ϊ“óVE=z5û¦Àí}P¾õ0¨Ù\ÝÔà±¹]œœÚŠÎ膘~ЛéôìòÝÇëfBDõ©n&‰S_M©»´2›>=›U¿*H?éæV;Uº0‘£úºªnnš§?^¨t³ÔŸõЕµéî½TŸ«O™yÔ­KópA£õ½Ä_ Ðêîg¯ñíC3Á¶ž/ÒKp¡ž5-Õ?šôÞb3äª{ënù¸XO"/ÖöÑ>kc{Pl°;jv6©µFcÛöjïM÷Õ~gj48êŽv³6ÛÀÉ0h £s[D` [!Æ‘ B2€$f'mQÙ²¼Í˜¼qàÆúŒ…† ˜1°è„È<t·(($l¾Ç•¢Xivv¥¶R©ãHGn­:h$•„(©$§Ñ[8' 8^ÂÈ/!«Áð·6°Î
+Á ¬³ÂŠ€œ hdDÖñã¥LŽÐ Xœ
+{>hw»È ºè‰;Þîî8Öe|ìFñ’1Î8j×I éN³’hpj ¢öç#´ß¦¢'Cx§î]*ZÒ8(K_Co–wìµíì´­ïî—‹þ×ËÇUç¬ïמ{ñ»¿„ð`:Ȧ² ­ñ%R9Ôd";%Øèúiu)!pRÂ?±RÙ ©µ™”°¯3Ó¼˜±ßŒã$~ÙØȉ9‘ ¢•a¼Ž‡<8
+RrR
+Rr¬f<íx IäH<t6çˆ&)“ If½Õ’ YpÒ‰æ%£ðÿ2ô¯‰PØ/3Í­0$°¼­Ê(š×CgŠæ-pYÇü†"ü pY+>` [ñ ¶è#ž—¹\F[EYX(›æyé;¾>*ýèè¤0XÕIapª%“Bþÿi’-hü
+endstream
+endobj
+2724 0 obj <<
+/Type /Page
+/Contents 2725 0 R
+/Resources 2723 0 R
+/MediaBox [0 0 612 792]
+/Parent 2714 0 R
+>> endobj
+2726 0 obj <<
+/D [2724 0 R /FitH 686.127]
+>> endobj
+2723 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2729 0 obj <<
+/Length 734
+/Filter /FlateDecode
+>>
+stream
+xÚݘKOÛ@…÷þ³´æÜy/¡"E¨E­HÙPPÒ.JŠZ õï׉“ȹ—N7]%(ÃçsçÎãõMõ¶:™UGÓhUÖ9PP³¯
+&è²
+)hPT³{u]Ÿh§›IŒ©>û4¾?¾h&ÖÚzÖ$[Ÿ¼;½lnfçGÓÔãXJ:†Ø>eE@°Ë1•Y?x÷ótVý¬Ð~5
+
+0:F¨¢Ž”Õ—Eu}cÔ}ûã¹jÊQý^ ](ø¬Íò)ê²úØÕÓ—‚Ñ©à£&:1gOŸ ìâöGWÆ›ÇfB©¾Ÿ·.ûeY®~üÞP¬çë!WËJožæ«"ÆÅúöIÙíŠu9½(¶ÕÖS‹ £k'ßM)ujïŒ1Ïç6jxÚÎ¯í† p“Í   ³÷[@/bèHú ÐŒòÖcvx`Tl@ 8%““qX#Öȑ(i3]‰ü®´M1œ¥H‚ÆtÌч:“T'Æ×Ðê^AåpýanxÎåôŸÄs‹}Ku(9¼f*ï
+ÚÌDfQÑ,&)óð>Ä~·JÁêã_YëµY%g5m´]}°g¸l×¹êÛ»‡y÷çÅÓ¢iM÷ÝÊzÏuÿbÝ‹!a4,PŠ:˜T",PNÚÿ0,lÅ ”­ö)< …½3/.$±ÌõÙ %VÁ¢øÁ
+4°PøPÙkèFÎî4–…`a‘I2….>E‚fßy…ÿ‹ñ°2ãQö°1ØeÃàËpJAä”Ì6µ• ™=rá4vÞpò™@‘×;}CÑ´fèÈÂ9-“Œ&Ü”×`ÞnQÊdì*íÖ%“£4‹•2®Î$‹J̗ㆵ@^ØøÕ’yÁæ…¶‚?G‹lü
+endstream
+endobj
+2728 0 obj <<
+/Type /Page
+/Contents 2729 0 R
+/Resources 2727 0 R
+/MediaBox [0 0 612 792]
+/Parent 2714 0 R
+>> endobj
+2730 0 obj <<
+/D [2728 0 R /FitH 686.127]
+>> endobj
+2727 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2733 0 obj <<
+/Length 747
+/Filter /FlateDecode
+>>
+stream
+xÚµ˜OsÓ0Åïþ:Ú‡¨Z­þXG
+-ÐC§ žNgJ HèÀL†¯ÅÔvÝx7¹¤IåŸß®då=)ñ](ñ¾8oŠ³ËZœv¢ù&À)霮v´ÍRÜ—àLõÐ\]zì ÕVI‡¨4èÍÍÍÅõ»wÕ ËsYÍ"§¼½ÁÝ¥…:Üpø~Ñ¿
+ˆ*ñæFZD¼0’ƒøº)î”XÆ^‰x³àÅŸýÐ
+§e_®úya,,ü›!, ñkó<,ä|¼Ô‘JS²‡~¤G„Iâ1w¯IùãqfZZØ5
+Ó@¤× $+,ÛAÝž¨@Èïਮ#°¡Ãù“T?°¥¦äœ]2ä ‡pæpØ%ç ‡OdÈ‘¿‡‹"Kæh…,ç](äöö4ŸksgàØHÊóÊsâ”°`xÄÌ9ŽvÐfxÄÿ`ÇógÃt\“ã< '3ïa íè _ö­bCk[sÆ?b¸En
+endstream
+endobj
+2732 0 obj <<
+/Type /Page
+/Contents 2733 0 R
+/Resources 2731 0 R
+/MediaBox [0 0 612 792]
+/Parent 2714 0 R
+>> endobj
+2734 0 obj <<
+/D [2732 0 R /FitH 686.127]
+>> endobj
+2731 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2737 0 obj <<
+/Length 730
+/Filter /FlateDecode
+>>
+stream
+xÚ½XMsÚ0½ûWèhP´+i%C'4“i3í„ä’æ
+³ÝøùçŸøU@ýÕ(P
+•ay„ÌŠÙJŽ:+hŒ2DFÔVõfÄ1h&!M`Ì '˜ÈÀœ˜^Ä“s ‘ÁѾ,\‘¬N!ü“ÊÞêVtVãŽÚÝ'«¡‘Ï‚Û5{2]Ì›Ÿ×«eUëïéF…Ï7±ñU¿pÒ7` šLÌá0Eíþ£oØ“Íà0Yí#½oÈ9ÿ˜"ß
+E>K£z1(#ö(‹6 Ȥ¨é8³Žl#çÕ‘OÈÙ´‘óú€2dU•{`ÎÙ ÁÐm$mdÈ|Àòêáͽú§8’nb½Ä%b5»ûÏ{9ñÂÜëoX®I¦¥yÓˆ„"‹F•YôB a²^æm_Ÿ&ë%Aƒ Ù]kœ;IÍ9%—ù'Èîñ8Mä^Ö°,ÄNÂæ´餅¨#ø n r¬
+endstream
+endobj
+2736 0 obj <<
+/Type /Page
+/Contents 2737 0 R
+/Resources 2735 0 R
+/MediaBox [0 0 612 792]
+/Parent 2739 0 R
+>> endobj
+2738 0 obj <<
+/D [2736 0 R /FitH 686.127]
+>> endobj
+2735 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2742 0 obj <<
+/Length 754
+/Filter /FlateDecode
+>>
+stream
+xÚ͘OoÚ@Åïþ{463ûM›´Í!¢*Š"¥9@¡=µê×ïÚˆagœ=ô‘õÏofvÍ{€ø.@¼¯.§ÕÅuQF§œ˜~è@:ç… N¢òbº5:7zœÞ\\{ýl©² }ZÝ¢7“ÉÕí»÷£±Öº¾”£qâÔwÝ\ZÁö†Ç¯WÓêW…éW˜nn¤uQ¤ 9Š¯ëêáÄ"ýóF¤›E/þ´K×m”ÐÜ{%>WŸzêðABÂY/•qÄ›/€z=ûÙi|û4«P/–éEiUOGA×O?Fé½åvÉ]óÖlµY¶Eô‹µ(]4ÇbM gÅzs ¤5©ë¤Jª[µs
+éÉ‹¤¥çÁ¡h2n‘´„Ãsx[GJ»aà"þ®ŒÅ úž\Æ »äâž´³Ð¥sÕ)ûüŸ ÷ÃùÞÏ=ôY¹÷0;”ç$&²™e¿–øo ¾ÍüÁßäµþ
+Ç$Ú£ÃÎ ]ý¦µ@fØyÖ’™{3Cªà/_»n¯
+endstream
+endobj
+2741 0 obj <<
+/Type /Page
+/Contents 2742 0 R
+/Resources 2740 0 R
+/MediaBox [0 0 612 792]
+/Parent 2739 0 R
+>> endobj
+2743 0 obj <<
+/D [2741 0 R /FitH 686.127]
+>> endobj
+2740 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2746 0 obj <<
+/Length 754
+/Filter /FlateDecode
+>>
+stream
+xÚ­XMoÚ@½ûWìÑ>°™™]ïÇ1T¡QÔF­âä’æ
+òùb»ä¡±tº\/6Fô“-ë¢=$kcx“lÍ­Ãö¶v¾M!´lg
+Üɉ»˜ÌJ$+ä :"ãx
+’§¹Hw©àÀ7ˆÈ¹KŒ%' ?{6Œ+‰¤ŒsXŠ,g<HÂÃÈID CŽÉ‚RtªïÇÅ âÂsb)¢Èñ¢‘!r ­ ÒÈÊFò–Œ’ÈprN·¬äŒŽÞ¿«¿Þv¬d¦³‡/FcÛ8ïµÚ¶m­§³å¢ýy»^uç=Ûôß‹¿í_,½©z¯„ŠÁ
+K:'4²¢˜Z°¿Š_H*ú^q1ñ$ ‹œvÐAN; è'ìA'¼’
+÷݈!Í0ë t®NÈ“¨ÏnD/u[^H,X³0‘Àá)Á´‘7þ2²f+EVFâé6~Øõ¯)õƒéÕµÿÙŽpÛ
+endstream
+endobj
+2745 0 obj <<
+/Type /Page
+/Contents 2746 0 R
+/Resources 2744 0 R
+/MediaBox [0 0 612 792]
+/Parent 2739 0 R
+>> endobj
+2747 0 obj <<
+/D [2745 0 R /FitH 686.127]
+>> endobj
+2744 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2750 0 obj <<
+/Length 800
+/Filter /FlateDecode
+>>
+stream
+xÚ­˜MoA †ïû+æ˜2=_G
+-ÐCUDT!•Z8ÐPTñ÷™dÒ*Sv2öÂióá}öµÇvìõMõv8^G§Q%¼õjùU7Úû |ôlPË;u5ç×˳£Ó€{¦Ö²‰)F¯..NÎß¼ÿ4_ âìXÏ™3»¼ÀÍ­ƒÙ=ðåõd9ü ¿4
+òÃQ£%•oÌ䤾¬‡«k£îò—g*?,õ{kºÎ¦ Ï/ïÕÇáÈ!irQy´%_$¾{ül
+Ö‹3­±¶f¢jF_€4‰ Ýx8Q{
+áߦn£e µ}Ò–W
+J²½™Ô~G™ßœlDÉäüžX‘Q1"œß|äwbàymƒL#§j¼É
+endstream
+endobj
+2749 0 obj <<
+/Type /Page
+/Contents 2750 0 R
+/Resources 2748 0 R
+/MediaBox [0 0 612 792]
+/Parent 2739 0 R
+>> endobj
+2751 0 obj <<
+/D [2749 0 R /FitH 686.127]
+>> endobj
+2748 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2754 0 obj <<
+/Length 743
+/Filter /FlateDecode
+>>
+stream
+xÚµ˜MsÚ0†ïþ:Ú­$¯¤cè„f2m¦Ð\Ò Ð
+Í´3Lÿ~mlpm¼k”0ßý°õ®”ø!”xŸLçÉÕÌd@bþ]€Bé1ô(A;1_‰§t*­Ì&ÎùôöËlöñú>›cÒyæMz=ýpó=Ïï®fþˆc´—]q—=0”kU߸ýy3O~'P|U€’Î@tÒé ¾m“§g%VÅÅ;Q\
+NüÝ/Ý
+ȃTå]6â!ù\Ås,4HtV`X‰¹Ý}U`¶‹_Uï^²‰öéj]|Ø—aÙôåg¦]º®—<–‘.6»õ>ˆn±yq§`ÛbmðgÅÚŽÔJg‹ä[%µ÷•Ú¥Rêÿü‚qrÝäWûjÉ nÒ,š
+Bs–DZ:Ôp¥½Ò@é`ñ)Í ˜’B€abSf äÐ0b.“¨H £u*E,òÅö¾¥×ÑKzˆÔ82¡«*2%8BqO«µr¡Ç‘ /E&$Ù±Á¨åVŽ°Ÿp3@H*³†·(Íy|I;³fÕ§ÌäðKÆ1U™Ó7çš9œMÏÓI(¸e%“
+endstream
+endobj
+2753 0 obj <<
+/Type /Page
+/Contents 2754 0 R
+/Resources 2752 0 R
+/MediaBox [0 0 612 792]
+/Parent 2739 0 R
+>> endobj
+2755 0 obj <<
+/D [2753 0 R /FitH 686.127]
+>> endobj
+2752 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2758 0 obj <<
+/Length 743
+/Filter /FlateDecode
+>>
+stream
+xÚ­˜OsÚ0Åïþ:Ú­´úwlÚ¤m:õd2“æ
+ÊnØCL9[UPn–M-Ú-HñP3ÆpV³Çžh%-¦ÉG%u­è¹RÝì÷êC-Áànòc·>û´ÉnÌ@Fk_q0L4^‚5;¢Fvƒ0*x"¢RñTAf`Ê„q•n\¥û‡—¨Ð>žÅƒñuÇXÚ"‡Hé<â¸FŒuBцÑÞ´§Ú°€„’‘¤, x‘Ò‘‰$´£¥/5 Œn$µ7hpÛ>ã…¦o“²ýàT
+׎sÝ1—ÐPš?·'ûª/Ù]2„v¾àq±†+– Ô3…Œ]hϪ判lP†$(T§ªvFFïÿÏ]·FU£‘z§,Y} ­eîmlõl¾Z¶ÿÞoÖ[=oÜ÷òw{ †³9a0/‰ÊåÈ ccß©yÁ[¿-ËìòB?+ …W±‚‚A/M@RPhC÷c¸Óô±»Í<€¢ú€† L$Œ"ÏíRšco5e“ÒÇÖ‘tXÎÚtg5…ë.âBŽãú˜›ù´Þç=U_Á%Ôº,ä4Y²ë
+Y-f‹Ì›èiAϲêÎôÜ^ÐË›n©Ï‘c"!ë[& ‰D1ÓË ·„ì!7ç!Z`0¹ã(™ó-e™“€@HUk^ô lŽþ´UÍvN5gRˆƒI!UðJjÐ
+endstream
+endobj
+2757 0 obj <<
+/Type /Page
+/Contents 2758 0 R
+/Resources 2756 0 R
+/MediaBox [0 0 612 792]
+/Parent 2739 0 R
+>> endobj
+2759 0 obj <<
+/D [2757 0 R /FitH 686.127]
+>> endobj
+2756 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2762 0 obj <<
+/Length 737
+/Filter /FlateDecode
+>>
+stream
+xÚ­™KsÚ0…÷þZÚ ]½®´ ™ÐL¦Í´7›4 ´‹B3í Ó¿_?€0ñ½ 6<,>Ÿ«kYç€?„²q™]MЈ(£×^”ß(/ƒÂ/A£(çâ9K+‹bÈï¾N&Ÿ®Š‘1&/‹`òëñÇÛÇ⥼¿š„Çè Ñcu–†
+‘KžÚÀ›Z‚HǺ(]r¬²)d" u{’²LÓ ´F–Äa a,øæ&Jh6£3 ’ÒíÀe¯MoN³‡çX" ¤á4H͉$•Úó¢e @Ã
+{úl$´~yÏaÛÚQÛ|:[.Ú·ëUm®gí^üi¿âÔ»¡7(è€Ò«"(è¤ ][VvbtÁ’瘚æiéxÈ´{È©­óì;Õ©}“oæ<#Ç)–M !ij%íÀ`x.A%Ù:ºÄ46sßx¤MÂ&m>¹Ž¦á¦
+Ã}ä¤i¸N‡»ä4yØ’!å[*$N 4s>q¾ €
+endstream
+endobj
+2761 0 obj <<
+/Type /Page
+/Contents 2762 0 R
+/Resources 2760 0 R
+/MediaBox [0 0 612 792]
+/Parent 2764 0 R
+>> endobj
+2763 0 obj <<
+/D [2761 0 R /FitH 686.127]
+>> endobj
+2760 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2767 0 obj <<
+/Length 751
+/Filter /FlateDecode
+>>
+stream
+xÚÅYMÓ0½çWø˜êõxüYØö°*"Z­´ì¡¥…-+*þ>nÒ”¦rÛ™`Ä)mê<?Ï8ã÷¦J|J¼-®›âê¶A§h¾pJ:ç…«íE³O%x]=7wW·†j«¤CT7èÕtzsÿæýc5AÄòZV“ˆS>Lqûh¡v_ošâGñ£'7Òº âƒ9ˆÏëâéY‰EüñNÄÉ‚¿Ú¡k6Hµ{%>ëðVšH×Y/µqÅw›O
+p=ûÞq|ýRMt].–ñb‚-›ª6åË·*Þ‹· Ü {¨j,g«
+ÊͲ]Kš³é‚9ælB}–³7ÒJZƒo”ÔuÝ‘ž+¥ºèÖ‡^‚Å>øw :„›ôƒ&
+¢ã!…&x6(…+Ô#`!…k´4=n:»1§`IÁU— »2\E
+
+MËJ$²HRö‡"``¤DñÒ§‹Èž¢ÓZÉg”Ñvs_DDÅB$ÄQ*H•4#)§Â8Ì‹gä…FíY«&UóÀ„$äÆp IÉA"!’†“nIdmÉ,‡;HsvÎB8­[µC¼ÿ;­ÝÉVmPêžYþ:=ݦ“Ù³ùjÙ}½ß¬·Š{ÞjñåÏî«Ïº†¤{@Ò(—Ã= 52hKvõvYØ»‡¡sHÙ†=Ù ¶—XºmÐÛ S¶!kõk!»˜¹¸ês§’&J™£8Zb–àÎJ¾ö8¯eFK£ ehõŽŒGÒF§d(â8ztãPG‡*!³~#õxâèDÅßû èHæÆyb« eVÛƒžß<8DÎÛ<8@†<]%—@†<ýŸiÈÛ
+endstream
+endobj
+2766 0 obj <<
+/Type /Page
+/Contents 2767 0 R
+/Resources 2765 0 R
+/MediaBox [0 0 612 792]
+/Parent 2764 0 R
+>> endobj
+2768 0 obj <<
+/D [2766 0 R /FitH 686.127]
+>> endobj
+2765 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2771 0 obj <<
+/Length 744
+/Filter /FlateDecode
+>>
+stream
+xÚµ˜MsÓ0†ïþ:Ú‡¨ÚÕÇJdžièt ÓÐKé¡! ˜Éð÷±ã$äíw8%¨_­díûʨoʨ·ÅxZ\LȪ¤SÀ ¦_˜ cH*Ä IMçê¡k§«Q,¯?M&ï/o«‘µ¶œVÑ–—ãwWwÕãôæb8£¦@õS6 ÛŒ)ÌöÁ§ŸWÓâgõW£@M*Ò„I}YFÍëoTýS"õ{3t¥À'mš§,Õ]ñ±Ï¡ @Ðœ
+ž4ºÐŠ¹^6`WO?Úi¼y®FËù¢þpÉ7Óråó÷
+©\l‡Ü73}Z®›It‹õõ“’;ëR|Ul­í@-M®.¾3clÕÎŒ1çõK<îꋶr„í
+xŒóËHpœ­^°ÚÍBs˜I°Ôf½lâŒ}nHe¿DàKdJ†¿2œ
+&¼úó1e@NïjíqÖ_E+B2€ rNr¬3ð^jiäLƒ É º—½,«Ñ?ï­•Eg5î¤Ý°ZG}äÁ]빟fËEûçízUÕ–|¶1æ‹_í¿x÷j„èŒIsD k ND%Ðb›š(9Qb/6C”Àdµ%†÷8N϶tÃܹl+™»£„ âAn›À´×½aBÞÌ,?,9LY1FÒ‘2ùŸ×'„ƒœ¥¿ýלÙÉ€a¹#39Å”˜Ö=–uÛ‚2²'çÍídÆÉÔxñ: Ó yƒð_t¦{¨óä½ÃqfÖÛLÃÐ÷úìçþì Yƒ30ƒs缆ÒÝ=§q/^ºím†t±s·9Ó…ïLõ þ
+endstream
+endobj
+2770 0 obj <<
+/Type /Page
+/Contents 2771 0 R
+/Resources 2769 0 R
+/MediaBox [0 0 612 792]
+/Parent 2764 0 R
+>> endobj
+2772 0 obj <<
+/D [2770 0 R /FitH 686.127]
+>> endobj
+2769 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2775 0 obj <<
+/Length 747
+/Filter /FlateDecode
+>>
+stream
+xÚ­˜OsÚ0Åïþ:Ú­V¬cÓ&msȤSO&3iPh…fÚ¦_¿áÄ&ï‚r!!âç§ÕJz%~
+%>—Mqq]‹ ƒÓN4?8%óÂÕN‚ö¢™‹Ç¼©žš›‹k¡Ú*é㕽»»»ºýðù¡š by)«Iä”÷w¸ùh¡vܽjŠ?Ä_•€øp#­ "~0’ƒø¾*Ÿ”˜ÇÞˆø°àÅ¿íЕ
+p5ý4¾®&º.ç‹øb‚-›ª6åó¯*¾ß‚r7쾪±œ.+(׋í\†5[.˜}Í&ÔG5{Ó­¤5±øFI]×IôLm~Rý{3D/Áb[~ívKÔNÚA
+áPÛôkXÓk¸%&,¡5SjšNÃx%ì)• ´f´A—<¾Ü ’Ç©†O%´n`/Û¸Rä*%èô<„†µ¬å¦Ö¼²<–5mJ! ‡HØŸŠ3iÒñ œ…ÒVgu˜à¸L
+´fCÇ·£f¬P.'ÏöbÍXrÒ¾á\s¤…0e<ìYµC¼?Ïg'˪ JÝ*‹¦_B2Ï=Ëm’ŞΖ‹ôçízµqÛ³­_üM±îhbLh@år$´FmÉÉA£ÞL ÛäÐO C‘áEl†È€ÆK¬ÍÛÈÕ=Þ šâž5ÉŸ|Ü;í5%|¼ÕG":rÜë]£˜å¸ë…¬'2É&h{¶M8ã
+endstream
+endobj
+2774 0 obj <<
+/Type /Page
+/Contents 2775 0 R
+/Resources 2773 0 R
+/MediaBox [0 0 612 792]
+/Parent 2764 0 R
+>> endobj
+2776 0 obj <<
+/D [2774 0 R /FitH 686.127]
+>> endobj
+2773 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2779 0 obj <<
+/Length 801
+/Filter /FlateDecode
+>>
+stream
+xÚ­—ÁNA †ïûsÜbÆžÏÌ*R„ZÔŠ” å
+QbtR9t ¤pPa3Šlq¨Ó(Ê$…×ËÁ{eð›GY+«€"nœÂ•u$šˆ”,êC”t¨0Á=Ù¥à‰dɯ”iYÿÊÓØrÒ’L¯* ‰oQ囤ƒŽ(¸~|˜%vcü§Á¢Ï†¼z‘võÁvSwo÷ÝÐ}{÷°êþ¼xZ·ó÷Ýf2_ýêþ%¤ƒ+Äà*A)Û$Z%BÇ#¢œ Šw ŸÃß]">ï®Ý%ÜÈ.±+Ø%Äöjƒ²ƒx—ì 0Ç™îÐî61Üyû@Ô
+±p.ã/;ŽXy¸8R4}No Är:¥F0ÇZý8%&è©(»Š©Lær¹>YéW¤˜ì¤dHŠ6O!—S&¤%îMŒ’ŽJ8¡.$}pl´?,YÀe5·lœW'©]ÝEu§rJvÒ„]ÆYNÒ ))’(úmv Ä權îºÓÜÈѵïLÔ8#KeÔE. úñ9V²F‡înŒýŸkD\#šþ
+endstream
+endobj
+2778 0 obj <<
+/Type /Page
+/Contents 2779 0 R
+/Resources 2777 0 R
+/MediaBox [0 0 612 792]
+/Parent 2764 0 R
+>> endobj
+2780 0 obj <<
+/D [2778 0 R /FitH 686.127]
+>> endobj
+2777 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2783 0 obj <<
+/Length 758
+/Filter /FlateDecode
+>>
+stream
+xÚµ˜OoÓ@Åïþ{tÙî›ý¤Ð=TEDRé¡¥ H_ŸÐ&qíczI“¬~3;ë¼£¾)£ÞVÇ‹êè4©¬s  _‚Ñ!DRР¨wêªF ³ëÅÙÑi´Ï–’7:–%¦]ôêââäüÍûO³¹µ¶>Ö³yáÔ—v}ie67Ü=YT?+”B¹¹Ó>dU.,䬾¬ª«k£îÊ—gªÜ,Gõ»YºRðY›õ½ïÕÇêCG1i“’
+>jr¡•øîñ³]Ýüh5¾~˜Í)ÕwËòB–êÅ,Ùúáû¬|¶Ü,¹\tsÿ¸l‚èë¡Cvûb]N½b£ÛQk´w%ëÎh*ªµ·¦üµy߉̑†uÛ´ÛÍÎ<ÇÍ·kæ€ÎÞ?ñдQÃÛ-|'q³èˆaN¦ •ÖUƒ2£D&†™‡%†-2$!3ÂÍüpÑ]‰{ñZ¾>°˜$Àဠ`0Ž†yá‰Ç!&‘Bpr9§lH¢œºq‰œ A""çì–Ñ 9'²È*ãqëE;ÔR99ð#Ô‚÷è0#ÑŒZÈòkªŒ¡šÆ©ãØbšsÜF¢‡ aLáñÎ_'š‘jDq C­xÿB­É(³ð²¯¥`uŽñßLxkkÉYM[m¥#ÐhÝõŽwkÿíê›Ûûeûöüqµ¶â·I_þj/ ¦·èl+¬ƒv&LÑVXït&ÿÛŠ¿b'h+¬‹Ú&Çk+šÊ Ž™£=¥mè9`Ä1×úš_ãá˜a¥L Cûž/@‡£ïë~è°µ`%4Êt2ˆNDd
+endstream
+endobj
+2782 0 obj <<
+/Type /Page
+/Contents 2783 0 R
+/Resources 2781 0 R
+/MediaBox [0 0 612 792]
+/Parent 2764 0 R
+>> endobj
+2784 0 obj <<
+/D [2782 0 R /FitH 686.127]
+>> endobj
+2781 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2787 0 obj <<
+/Length 742
+/Filter /FlateDecode
+>>
+stream
+xÚµ˜ÁrÓ0†ï~
+ãCT­$k¥cÃ4t:Щé¥ôÀ„Ìtx}ìȦNãÖ»Bœ’ØÊç_»+é_+ñM(ñ¶XÔÅÙ28íDýU€rÒ» œw4Šz#îf ie9Gô³ËOËåûóërnŒ™Õ¥7³óÅ»‹›ò¾¾:[úÇh/Ñaó”Û1…êüüó¢.~Ð|U€’ˆ œC‰:ˆ/ûâî^‰MsóJ4·Šß‡¡{Uª}ÊNÜã|†2@[©}3
+¥¶.Š¹|ü¬ÀìW?â4Þ<”síg›mó¡ŽÓzø^6׶ÝÛöÒj÷¸=Lb\lÒû\¬ þU±h‡jÁI´Z«Õ>ª]+u^°Z‚±}xCq›÷cæ
+h’RŽýSÉHÊÌ«i¦;bR2T±2ÔiU”Xn"yºè]’dB„Á%I¦”X•Bžæà×D[„jÓ ŠA4kH"“–OD2ˆihÊÂVIIJÝ…Õ„ºSl.Áxö¦„ _+áèEžXºðŒ2 y"Nò°ñcÊ”âT/›]íŒ ˆÿäÌ;¯«­‘ºvûÁHˆ–ûȤÛÖ”ÛÙj½ÛÆŸ×ûÖŸ¯Î}û+þÅéW{ŒÑ^C{”Nù½†QдLî?öÅfè5t0²òŽÒkŒÕÕ%çl] ¯E¦ø/Ãâ‘Žn–Ÿ&‹¡uC&ÍdX¦RšÁ0l*dí#4·ûî ™:…ì c[o7Î|öÉyê'2äöÈCtf“<@ªÃ¤¢óØÂÓú mj>E5moÃ4t&k?ŠÎlíŸÐ©uwchÈkÆèÜÝû¹}è¼/‰¯Y%A9Ÿ8ï‰+Âó46xËjKˆmθ/ÎЖô¶8g[bFÛ’f
+endstream
+endobj
+2786 0 obj <<
+/Type /Page
+/Contents 2787 0 R
+/Resources 2785 0 R
+/MediaBox [0 0 612 792]
+/Parent 2789 0 R
+>> endobj
+2788 0 obj <<
+/D [2786 0 R /FitH 686.127]
+>> endobj
+2785 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2792 0 obj <<
+/Length 741
+/Filter /FlateDecode
+>>
+stream
+xÚŘOsÓ0Åïþ:Ú‡¨ZiõïH¡zè„ÁÓa¦ôÀ„Ìdøú(qâÄŽwS œÒ¦òÏO»ªôž”ø&”x[\×ÅÕmQF§¨¿
+pJ:ç… N‚ö¢ž‰Ç|¨žê»«[o†j«¤OCT3èÕx|sÿæý§jdŒ)¯e5JœòalÖjûÂãÏ›ºøY@úQ H/Gi]éÁDŽâ˲x|Rb–þx'ÒË¢¿7C—l”jýî…øX|蘇·“\g½Ôè‰ïVŸ˜åäG£ñõs5Ò¡œÍÓF[ÖUÀòù{•¾K_A¹öPSN”«ùf.Ýš-HñX3ÆpV³Ç–h%-¦â£’:„FôT)ÕT¿5?Ô Ñ¢vcF
+ ^B¦´NëËÈÚ5\D†ÁþÙ Ö¡Ä-—
+endstream
+endobj
+2791 0 obj <<
+/Type /Page
+/Contents 2792 0 R
+/Resources 2790 0 R
+/MediaBox [0 0 612 792]
+/Parent 2789 0 R
+>> endobj
+2793 0 obj <<
+/D [2791 0 R /FitH 686.127]
+>> endobj
+2790 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2796 0 obj <<
+/Length 732
+/Filter /FlateDecode
+>>
+stream
+xÚ½˜OsÚ0Åïþ:ÚíJ^IǤšÉ´™vâæ’æ
+J¶iD†Æò<‘öD0ð%rÅðX£lÓ€pž‰ ¤KEr*/ÏCéZcÓMʘïÉŒ5‘¡‡‘+
+–µ]{0ËӀÙÆ;*hba³%˺˜–
+’¡¤a‚¨“i&—È|ˆ”=„y‹“†3C1 "îhÝ {¥²WJ`d¯”xþ7-NIÜ®tc„H.éúsÃ3Ì”¿[—vòá7@ÜÈh…ƒ ç6ò F‡±ÿ—"úBh¿ˆ[+#|oŒ¨+ø50vr
+endstream
+endobj
+2795 0 obj <<
+/Type /Page
+/Contents 2796 0 R
+/Resources 2794 0 R
+/MediaBox [0 0 612 792]
+/Parent 2789 0 R
+>> endobj
+2797 0 obj <<
+/D [2795 0 R /FitH 686.127]
+>> endobj
+2794 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2800 0 obj <<
+/Length 733
+/Filter /FlateDecode
+>>
+stream
+xÚµ˜Mo1†ïû+|Ü=Äñ·Z ‡*ˆ¨B*=$$p ¡)âïãÍnJ>¶ÝcNiﳯÇϼñM€x[]Ϊ‹ë ¢ŒN91û*ÐtÎ œDåÅl)îk Ð<Ìn.®½>ª,HŸ†@7èÕtzuûæý§f¢µ®/e3IœúnªÛG+è_xúy5«~V˜þéåFZEz0‘£ø²©î@,Ó7"½,zñ{7t#ÐF í»×âcõa`>HA8ë¥2®“ønûPoæ?:¯›‰
+õr•>”Võ¬ º~üÞ¤ïVý»ö«ùz»ÚMbX¬Eé¢9kbxQ¬7GjAZ“¢n@ª¤z§vЇýhbÚK´zuû•9ÄMöƒ&ˆ2ZûÄC
+ÑòˆÃL£$j³g†Ad?f‰ã:Qsu"eú3°87wBMj z1ðõ¶d'û,2aéä‘ šc™”*<®YvÜùÞ@JŠ˜,Í$´ËDÖÐf Ç3Ð3Ï ÂÂñ„
+E©Dê¼´•<¥H†Â°xX2SVœ<…"uü 
+‘l£a•J RŸJt9>ŒEÙ2¥Æ<2ñ|îŒLq9S}H.Ú~€)a¶Y’)aÎHJw¡ D‚Õ¿ü“Ü/æ„IöòÐXö.çE¯z4¹z;^@,z÷Ö3Ë:_â%Hdz7(kµ€´W‘·¡°i=²˜XØ•µýyñù¦·€çØ÷¼%=Gôi
+endstream
+endobj
+2799 0 obj <<
+/Type /Page
+/Contents 2800 0 R
+/Resources 2798 0 R
+/MediaBox [0 0 612 792]
+/Parent 2789 0 R
+>> endobj
+2801 0 obj <<
+/D [2799 0 R /FitH 686.127]
+>> endobj
+2798 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2804 0 obj <<
+/Length 605
+/Filter /FlateDecode
+>>
+stream
+xÚí™ÁnÛ0 †ï~
+íCT‘’EéØ ÍŠb+6Ôë¥ë!Y¼–¬Ø€`¯?9Žƒ$ukJË€|rb3ŸR¢ÀQâ›Pâm6­²‹i᥷hEõU€²ÒY/¬³DµùTYLˆ\~ýi6{y[L´ÖyU8_Nß]ÝÕÍÅÌp4:I–Â[¶pÐÄdj÷âÓëU•ýÌ |T€’D ¬%IèÅ—uöð¨Ä2<¼á‘'ñ{ºPz©š·¬Ä]ö±ÍçP ‘èB:%I4¶s½ù¬@¯ç?Ú4Þ<tù²Ôئõô½÷ê]È}sk¾ÚÔÛ$úÅ– ­7§bw¯Š%s¨¬$ÔT»VíB)õ¼¾ IB‰]}Q·!G¸I4¾,÷<èá” MÇëÇíbNpЫï˜g¢xÃú †7ŒC>Ž“­ÆÙ=Xëkøë»Eò¨6žÚ€‡É@id&§i†fŸFfhvÃdûŒ œ:ëÍœ£˜–؃9e.“$sÊœÐ$ýŠKaJÁ©„V Û¢!3:RJÀh@TihNAU3öb4š-c±Û\ìnãdy3ˆq‡%ë,ÃH$ãDˆÛPœ=Šqg90¦2bÅ9lLƒ2äù—‡^´Zz¢¿šÐw3/-±ÓuÿAKhGï£aÝ4ùÉç‹UÝ~½Ý¬›9}±àë_íOH½ê5z=:’V¹sx­ X'û=Ç^ì<z-KgGÏ1zŽÑsŒžcô£ç=Çè9FÏ1zŽÿËstCï<G7óžÓsôÿ¿2ø¸/‡'
+endstream
+endobj
+2803 0 obj <<
+/Type /Page
+/Contents 2804 0 R
+/Resources 2802 0 R
+/MediaBox [0 0 612 792]
+/Parent 2789 0 R
+>> endobj
+2805 0 obj <<
+/D [2803 0 R /FitH 686.127]
+>> endobj
+2802 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2808 0 obj <<
+/Length 754
+/Filter /FlateDecode
+>>
+stream
+xÚµYMsÓ0½ûWèh¢jõ­#…è¡O‡™ÒCB:0“áï£Xv‰'Þ5âäÄ‘ŸÞ®VÚ÷Á¾1ÁÞ×uquëYàÁJËê¯ ¬àÖ:f½å «Wì±/«§úîêÖ©ƒ¡Òî⑽šÏoîß¼ÿTÍ”Rå5¯f§|˜«ý£…h'<¾ÞÔÅÏâGÁ N®¹±Å#r`_¶Åã“`«øã‹“Ç~7C· Làb?÷†},> Äá ב®5ŽKmÅw»ÏÔvñ#q|ý\ͤ/WëxÑÁ”uåuùü½Š÷â-(Ûa•WåbSA¹[7± s6ÀmÐÇœuð9;Ý#-¸Ñ1ùZpé}"½B¤ì÷âSŽƒQ]ò¡Òƒ›uƒf
+endstream
+endobj
+2807 0 obj <<
+/Type /Page
+/Contents 2808 0 R
+/Resources 2806 0 R
+/MediaBox [0 0 612 792]
+/Parent 2789 0 R
+>> endobj
+2809 0 obj <<
+/D [2807 0 R /FitH 686.127]
+>> endobj
+2806 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2812 0 obj <<
+/Length 743
+/Filter /FlateDecode
+>>
+stream
+xÚµ˜MsÚ0†ïþ:ÂE»’VÒ1tB3™6ÓNH.i¡Ð
+Í´3Lÿ~m ‰ƒw]• ”Çûeé}mÔweÔûb<-.&Áª¤!©é7†t¤¤(’ j:Wƒ±vz8
+!®ï'“—·Ã‘µv0F;¸¸º>Mo.&±Á±u P^eC€h«5…Ù^øðýjZü* üh(
+áŸd÷VÈ¢³w±=|²j=½§À]¥¸Ýày¶\ÔÞ®W•øžmdùâwý/Á5­FcÐdb#a ”~ˆþ£‘x 6ƒ‘ÀdµÔb$ò*LÖ)!ò%,©àeÄÌ·˜©›¬:¸ffqdô†ÌìŸ8§ (È« O6¦·,<Ùù)â%>#ÿIâó0‰LYVýÏ‘¿ â±v ’9(ÖÖcA Í£ýé
+¼Í\^àhökë)2‹Ý9³Ö}%CfGø†Üæ­‰ÎìÞèÜö­‰ÎãߎЙÅI«)~hÕœŠ¼­»Næ³ÎvM›ÁRì$mNKá[-E™Á_¤Ÿxè
+endstream
+endobj
+2811 0 obj <<
+/Type /Page
+/Contents 2812 0 R
+/Resources 2810 0 R
+/MediaBox [0 0 612 792]
+/Parent 2814 0 R
+>> endobj
+2813 0 obj <<
+/D [2811 0 R /FitH 686.127]
+>> endobj
+2810 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2817 0 obj <<
+/Length 744
+/Filter /FlateDecode
+>>
+stream
+xÚµ˜KsÓ0…÷þZÚ‹¨÷ê­%…袆L‡™ÒEB :0“áï#Ûqã$n|%”U^ò§£«kåûÁ€½/®gÅÕ­cž{# ›}gh€c™q†£°l¶d%:U=Íî®n­ì ¸ C ôf:½¹÷ñK5‘R–×¼šNù0•õ¥ì&<~½™¿ oa˜\qm< ²gß6Åã°eøñŽ…ɼe›¡†Ús¨ç^³ÏŧuXÇÁ9f´åB™Vâ‡íW@¹™ÿj5¾}®&•ËUxR”³ÊÉòùg¾[í†<Ô_Í×ÛU³ˆa±¹ñêX¬òî¬X«Ô×*T]Au£vÐVý`]Jp”ª+ºßíK6éÆL¹×º£á OZŽZv<á»A'@(b…@)!Fdjc…Ž#Ý8Òô‘8¾=6nåHØq‰$¨ÔQHÐÓHj¡nR*q\#Šq¢ÙÇ»GÒ’r#B)%2¢„õŠIû¥k°4Á.bÛ{dBCÙ$Í”[ÒÈÍ>…Œ„?:×¾˜P 4);H+‡N*éZ$¢ §-¦¡ õPñäñ“MǶ¡±=1®RE©ça °5ðºÃFroíÿÙñÖà
+%¹è„…lÀ±õÙÎ\ÕN\•óÅzÕ~¼ßnjS¾hìúêO{‰5gƒÅ`À
+¹“#`H­¸ú‚ãEl†€!•åÒ©“€9û †Ûô@P³¯u® ˜C1@$ Ïy¹A$Ž#1‰9rßÞlo~ò¹œ×k^Àl’üµŠ‰yÃsƒlónžÀkNÁ˜ÙVíÁ”žÒIÅÈo#ð
+endstream
+endobj
+2816 0 obj <<
+/Type /Page
+/Contents 2817 0 R
+/Resources 2815 0 R
+/MediaBox [0 0 612 792]
+/Parent 2814 0 R
+>> endobj
+2818 0 obj <<
+/D [2816 0 R /FitH 686.127]
+>> endobj
+2815 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2821 0 obj <<
+/Length 731
+/Filter /FlateDecode
+>>
+stream
+xÚµ˜ËnÛ0E÷ú
+.¥…Î𽌋¸AÐ-¢f“fa×nµ´@Ðß/-ɆËÑaW~ÑG—Ôpt/ûÁ{_Ìëâba%óÜ4¬þÎ@îŒgÆhY½fåœ+^ͬuåõ—Åâãåm5“R–uådy9ÿpuW=Ö7 ×ãHtÜ®ÒÀéý˜Bt~ùzU¿ o ¸µÀŒ±Ü¢gßvÅã`ëðã ?yËþ6Cw ´çb•-»+>·óéË
+ŒÙ¥D+a::#Cñ*R)IkLÃï¨Õ2{9såñ—×± òÄ(3Σä,1j„ ™íò
+endstream
+endobj
+2820 0 obj <<
+/Type /Page
+/Contents 2821 0 R
+/Resources 2819 0 R
+/MediaBox [0 0 612 792]
+/Parent 2814 0 R
+>> endobj
+2822 0 obj <<
+/D [2820 0 R /FitH 686.127]
+>> endobj
+2819 0 obj <<
+/Font << /F73 507 0 R /F8 458 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2825 0 obj <<
+/Length 112
+/Filter /FlateDecode
+>>
+stream
+xÚ3PHW0Ppçr
+áÒw³P°Ô³432SIS043Ð333W0³0Ó342WIQˆÖ0´0ÓŒ ñÒw37FRjdj gTb
+endstream
+endobj
+2824 0 obj <<
+/Type /Page
+/Contents 2825 0 R
+/Resources 2823 0 R
+/MediaBox [0 0 612 792]
+/Parent 2814 0 R
+>> endobj
+2826 0 obj <<
+/D [2824 0 R /FitH 686.127]
+>> endobj
+2823 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2833 0 obj <<
+/Length 1213
+/Filter /FlateDecode
+>>
+stream
+xÚVÛŽÛ6}÷Wè­41¤$ê‚>mnmÚA±F Û­DÛìJ¢JÉ›æï;álm×IŠÖù3‡g†Ñ!ÑO~_í6/ßee”žç‰ŠvûHŠœ—y©2åYª6úÄnÆq§’é¡5ÿ€T(özûçî
+ÎxQƒEg/eFa¯mgÇ£ȵŒ*^åI•ä¥û8`פ`f¢ßC M ž"zˆé×MôÉ;|4ã‘[ÂÞmË”ÙÓÐÖ³¡ãÎ%}'djÝLþ³¥ßÑÙY7A©§IÛ¤d³©»à§=û”Jf÷¤{O>Ú‰4=*N]ŒçbeRòJ…ÊfÓëÖÔàX*¶w¶G)gu€(îêêY“õh§¹>èx®Ìpøqg2aÐ r(îÖž\ü=V ›A ýt§aßi&–‹guO2ÌC†ˆEš²‡-ž£GZéG,J»/øc<!Í Å6åZ–±[­¿yKàsï³·§™â)UØ~u}°úÎõÇÞ:rmõ\›nâ¾™ñ*Ëžî©”‰„íŽÀEYz¨PçÏGØ9„­çGÓjKbc}æ­n Ú\ vã¯ý:õ5éübï´î‚|ÚJGBÃÐ õÐ’¡5Ñ$¾–ûìÌýÉÓb«%½‚ý.¨YJCy"éÆ`MGpz¶’}>jØÅ‘£èwtæq«~x7è‚Ó}gšcƒû…¡Wyh[
+:m53`µ<ç™ZñBTOï—扟âŠÝtâìÒýþeðóóÚѬjƒ?ô>L­,YfnXüáÏu÷f
+ŠsZWºø?¯[\HAC¢’]è`™:{°=´¨›]Ýê¾vÁp'”¸‚n"s „¼À›ÏáÍábÏ.ÀŸ€œ¦|¾ñ¨ÇI’ðª’×çÐÿxËÙקÍ€ô2šS¿êÈŒ-fо£Éð[@*«Š´¤Ø’«DF @bú„}ŽDÆá9‚¢.N;Ÿžâ*U¨—Ë÷ïÛ•~¥þÈŸÖOsÜRf"yɲxâ-þ/y¾ðà
+endstream
+endobj
+2832 0 obj <<
+/Type /Page
+/Contents 2833 0 R
+/Resources 2831 0 R
+/MediaBox [0 0 612 792]
+/Parent 2814 0 R
+/Annots [ 2827 0 R 2828 0 R 2830 0 R ]
+>> endobj
+2829 0 obj <<
+/Type /XObject
+/Subtype /Form
+/FormType 1
+/PTEX.FileName (./xifish.pdf)
+/PTEX.PageNumber 1
+/PTEX.InfoDict 2835 0 R
+/BBox [0 0 199 199]
+/Resources <<
+/ProcSet [ /PDF ]
+/ExtGState <<
+/R7 2836 0 R
+>>>>
+/Length 2837 0 R
+/Filter /FlateDecode
+>>
+stream
+xœÝV»rT1 íïW¸¦X,Ù–ä/ &û ;Š¤ ü>:’ï ›…ŠL2ìY­ÇzÙ_K=Q©ø·>/Ûû;-÷߶zbfÓꬵ²¡IÊÓý6'šFåq‹|H©îß?¿s7cˆ¸‘[OeF<^8L›+[2fnÒ*'…ÞQXq¶ÞÀº
+‘nSÊì’1G/ß·Èg¹ûðfÏ[È´U”ÃóR$ÝKc"¨ñŽ¨–a03žE‚‡3ÿC‹B軇&~rêyñ3’Õ8K÷³³Wß±x/÷8£±=c釾!WµÎ8»ö05‡#¼ y“#2Û.Õ®y^.Lƒ‰Z+2Ýdù•­×½O—ʦ5qÕ÷<ýçÇôb¬ Y'§YûÀqÑ•SC'7X¥¨H¸ð.UŽ9¬´œuüL ÐHŠqÝÑ„Œ=Tg +ÏÜ|ª²ÇmNle¹ $‚úhœÃõ°á„ÁèaC;ÜÛtI©’íÊá”XçÞÞÄ-[=
+k!GíˆZ$™Á+)fÁëÈ‚Gfÿk|Ï«j^ Œ»Û­¨¬E nPÜlO?cè³›z祇ªi›k8^ßëùyGל³gÔ*¯«ŽeüŒ²»š§e!ÏY"§‰Øœ¾¡}jx.:Á¬²Ÿuèr‰`Öl ç ÿϦë,ǀŠóÇ4—Ü“û´À(y Üi$>™¯bŽ\ùÈÖZƒ¢­ÿ=}ŠÊ@8åZ¿Ñ¨×šóæXTHԕП·š¾ æ±àn"ݨBmzCÿ7Ò—ˆ9ªsÞ
+1,7´°?¯„{»¡ÿ|Þð¾HJ'ßN¾ÏO]f†ª .[7õŸi…¦q†×lÃ_1Z}\óáà²þñ5/ƒƒÏ4ï÷¿™â—Õ˜öE1a““‡òg –#ûPcö\¶!t"¼•BÞŸ ‡ë„6ÜA9ô±y€SÜýãkNƒƒÏåê;CpË¡[|gøƒ íùû†ª`;°§+žmبc‡~)®Õê7w´e¼Ö\²oí¼¦ó
+\Û2‹oø;£ï{TxÝÈìÞÔòùïÀ´ÆrÉ-»P,æºï[[·ßk»<o·½ásñ
+endstream
+endobj
+2835 0 obj
+<<
+/Producer (GPL Ghostscript 8.70)
+/CreationDate (D:20090924115427-07'00')
+/ModDate (D:20090924115427-07'00')
+/Title (xifish.fig)
+/Creator (fig2dev Version 3.2 Patchlevel 5)
+/Author (giles@snow \(Ralph Giles\))
+>>
+endobj
+2836 0 obj
+<<
+/Type /ExtGState
+/OPM 1
+>>
+endobj
+2837 0 obj
+884
+endobj
+2827 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [145.039 478.892 237.629 489.74]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.xiph.org)>>
+>> endobj
+2828 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [234.917 454.982 375.723 465.83]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.xiph.org/about.html)>>
+>> endobj
+2830 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [186.702 311.52 279.355 322.368]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.xiph.org)>>
+>> endobj
+2834 0 obj <<
+/D [2832 0 R /FitH 686.127]
+>> endobj
+406 0 obj <<
+/D [2832 0 R /FitH 668.127]
+>> endobj
+2831 0 obj <<
+/Font << /F48 455 0 R /F8 458 0 R /F77 675 0 R /F7 674 0 R >>
+/XObject << /Im18 2829 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2840 0 obj <<
+/Length 117
+/Filter /FlateDecode
+>>
+stream
+xÚ3PHW0Ppçr
+áÒw³P°Ô³432SIS043Ð333W0³0Ó342WIQˆÖ0´°ÐŒ ñÒw37FRjdh¨gb 4¬Æ1 ÀÕÏÅ3BS×ØØXÃYOShŒ†³¿€‡¿H;—ÔRtÚ5„
+endstream
+endobj
+2839 0 obj <<
+/Type /Page
+/Contents 2840 0 R
+/Resources 2838 0 R
+/MediaBox [0 0 612 792]
+/Parent 2814 0 R
+>> endobj
+2841 0 obj <<
+/D [2839 0 R /FitH 686.127]
+>> endobj
+2838 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2850 0 obj <<
+/Length 1718
+/Filter /FlateDecode
+>>
+stream
+xÚÕXMsÛ6½çWðÍ”> Â7[±7UãFŠÓ'Z‚%L$R%)Ùnûã» Y”hÇ—rˆ€»Àb÷áínH4‹Hôî ¿gã7ý ‘FL`•*ï"Jœ&:’*Å4ÑxÝ 3{»°Å¬ÌVó§è±÷müën“þEi¬–8}Å’cAS¯ysVfZ}k)D7±$&E]÷bΡinJìÄúŠìíG‰À‰” Øì÷é¢Ç4
+ôÁ<º5…')šV~zÓFv]¿bsÿv
+r`E…_æS;q›duÐùäf&væEq’bAXSŠ5Ö˜õ×Ú6Çš¥Éa+Aú­™oÌ¢ò·Úw’â˜$»;ýâ(öàDgF ƒI)4‡ÓS…¨Ö
+RP"Ñ÷h;ú
+hQ|ˆœs4ø8k¿I4ü¡'”ñ%”6ß™Um–Ρ·Î@dJ¯GµR‡H Œcgy(:¹¹Ö²
+—¹Û·6e¾ó¹¤\à²0¨æ`w¯p§æûçÆ`ž* €l¿úÎäfÓ“Ò=+7g$ˆŒîmý·)ŸøÕ#…)Û…ÈÓ‚û3Ùý)€¦iàÍ\5þä†qBh,²$ÓhT¯§¶ðŸÎs¯ÜP—uoÀé^e>êK
+‰.œÝ¡Yv„L)?
+¡"¯
+azÂó¤ƒ3ûCÈ V0ê!Øö>IÄ6|náSD7|¡äx‰M¶X›Ê›·-‰lòP¿ppËÈ÷oÇ×>U{P¤²UùÄFë‰7έû< ’6o¹û@g ]†´g\E3wµM–ÏÌ1~¸+òôûýj뀠³‡*q€*F;DÕ6f-T Í‚ˆNT íw‡Š3á…Ú*ˆDt}ÅÝ:A·¶®êÒdK/ær{Vûq–÷vuã) °É•žÜæªô+SU¯®î8UXJÝ*ïÂcM)úm;ËW~Ëõ¢¶KpP†'ýÍŠÇ(ÁVüƒ:Ú
+?øÏ0¾šØz]:ð§i(æ`’¡hezøxžÏ 3¨wWº
+²Ïîåƒeãó˜*2ÜúRP,dÛ•Gå´ÎÿúhFšRš¡mS}ê.¤Ÿ2üÚ5Ôœ>4Ó‘ùZåi£ßÇ£A«µWO…´ÛtÕ®<C3»Z¼ÜA¬õQý¢h œÂÄ!«ýiWÏT&ðeî^ªkÈB3Z¬Cºïä6ýÜt¯=5ÝZ÷ŸÀJ—îG¢ý¢Û¥xºÚñÍ4ÅûD†¨Vvüñs˜ÕACîrÛ>”c¥ê!ÇPÅlÖß47èO‹Iÿ…Ǥ5†+>CP,Å
+¶…b3BC!ê–ÐùøÍß+²¸
+endstream
+endobj
+2849 0 obj <<
+/Type /Page
+/Contents 2850 0 R
+/Resources 2848 0 R
+/MediaBox [0 0 612 792]
+/Parent 2857 0 R
+/Annots [ 2842 0 R 2853 0 R 2843 0 R 2854 0 R 2844 0 R 2845 0 R 2855 0 R 2846 0 R 2856 0 R ]
+>> endobj
+2842 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [282.213 509.6 451.577 520.725]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.ietf.org/rfc/rfc2119.txt)>>
+>> endobj
+2853 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [142.126 499.859 159.81 507.367]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.ietf.org/rfc/rfc2119.txt)>>
+>> endobj
+2843 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [423.432 272.6 451.577 284.555]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.multimedia.cx/vp3-format.txt)>>
+>> endobj
+2854 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [142.126 260.921 322.448 272.046]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.multimedia.cx/vp3-format.txt)>>
+>> endobj
+2844 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [191.652 227.923 376.706 239.048]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.ietf.org/rfc/rfc3533.txt)>>
+>> endobj
+2845 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [423.432 206.602 451.577 218.558]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.poynton.com/GammaFAQ.html)>>
+>> endobj
+2855 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [142.126 194.924 306.259 206.049]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.poynton.com/GammaFAQ.html)>>
+>> endobj
+2846 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [365.899 128.65 451.577 140.605]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.xiph.org/ogg/vorbis/doc/)>>
+>> endobj
+2856 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [142.126 116.972 243.495 128.097]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.xiph.org/ogg/vorbis/doc/)>>
+>> endobj
+2851 0 obj <<
+/D [2849 0 R /FitH 686.127]
+>> endobj
+2852 0 obj <<
+/D [2849 0 R /FitH 533.513]
+>> endobj
+691 0 obj <<
+/D [2849 0 R /FitH 536.721]
+>> endobj
+2197 0 obj <<
+/D [2849 0 R /FitH 491.767]
+>> endobj
+912 0 obj <<
+/D [2849 0 R /FitH 446.813]
+>> endobj
+911 0 obj <<
+/D [2849 0 R /FitH 389.904]
+>> endobj
+921 0 obj <<
+/D [2849 0 R /FitH 344.951]
+>> endobj
+706 0 obj <<
+/D [2849 0 R /FitH 288.042]
+>> endobj
+2618 0 obj <<
+/D [2849 0 R /FitH 255.043]
+>> endobj
+932 0 obj <<
+/D [2849 0 R /FitH 222.045]
+>> endobj
+922 0 obj <<
+/D [2849 0 R /FitH 189.046]
+>> endobj
+713 0 obj <<
+/D [2849 0 R /FitH 144.092]
+>> endobj
+2848 0 obj <<
+/Font << /F48 455 0 R /F8 458 0 R /F70 508 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2860 0 obj <<
+/Length 361
+/Filter /FlateDecode
+>>
+stream
+xÚmRËNÃ0¼÷+|´%ìø¹¶{£ˆ”RQIUÕCH“R!”•ÏÇÁ 4g³;žÝ™5G;ÄÑt4ÉFIêg$ ¬B8°0!-ʶh…çd“Ý'©UP šqëÏh2›<ÎæÓÅõÓݪCø¹Gÿ6¢ýu*mHªH²^§pÙxØ 8КÇqÚU›üPÔû#¡F*ð:àweþÉÎ3òK9Ò0¢Ÿq‘ ø&\UK®õ˜PÇ=^f)˜º«P±€óhbÎǪnÞóv_b>þƸ®º®ˆ:Ïwˆ
+Á¼1±Ûò°/:†º;¶%¡ZÙ@·íÀ³çyÌâìƒMpÃ,üÚFÓZàyÑÖ/$xD‡Œða9ØÙ¬N(Go¨‚éV_Ú°Õ?;^Ûöcœ$§Ó‰í˶bu³KšªH¢$á‚5”ªm¬ýjûŽn,3J÷]Ø¿¯á6}óà–ý
+endstream
+endobj
+2859 0 obj <<
+/Type /Page
+/Contents 2860 0 R
+/Resources 2858 0 R
+/MediaBox [0 0 612 792]
+/Parent 2857 0 R
+/Annots [ 2847 0 R 2862 0 R ]
+>> endobj
+2847 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [377.854 642.999 505.375 654.124]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.ietf.org/rfc/rfc2044.txt)>>
+>> endobj
+2862 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [195.924 633.258 255.451 641.339]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.ietf.org/rfc/rfc2044.txt)>>
+>> endobj
+2861 0 obj <<
+/D [2859 0 R /FitH 686.127]
+>> endobj
+1173 0 obj <<
+/D [2859 0 R /FitH 670.12]
+>> endobj
+2858 0 obj <<
+/Font << /F8 458 0 R /F73 507 0 R /F70 508 0 R /F74 666 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+2863 0 obj
+[300 300 450 250 800 550 500 500 450]
+endobj
+2864 0 obj
+[368.3 368.3 544.5 309.5 955.6 661.9 603.2 603.2 544.5 500.4]
+endobj
+2865 0 obj
+[591.1 591.1 591.1 591.1 591.1 591.1 591.1 591.1 591.1 591.1 355.6 355.6 386.1 885.5 591.1 591.1 885.5 865.5 816.7 826.7 875.5 756.7 727.2 895.3 896.1 471.7 610.6 895 697.8 1072.8 896.1 855 787.2 855 859.4 650 796.1 880.8 865.5 1160 865.5 865.5 708.9 356.1 620.6 356.1 591.1 355.6 355.6 591.1 532.2 532.2 591.1 532.2 400 532.2 591.1 355.6 355.6 532.2 296.7 944.4 650 591.1 591.1 532.2 501.7 486.9 385]
+endobj
+2866 0 obj
+[985.1 844.4 808.9 1011.5 1002 479.4 665.5 1003.4 773.4 1215.1 1002 968.3 878.6 968.3 959.9]
+endobj
+2867 0 obj
+[633.3 649.4 739.7 677 684 700.6 827.6 533.6 588.2 758.1 480.3 1228 880.8 702.8 739.7 658.9 671.3 670.1 563.7 846.1 722.2 1009]
+endobj
+2868 0 obj
+[892.9 339.3 892.9 585.3 892.9 585.3 892.9 892.9 892.9 892.9 892.9 892.9 892.9 1138.9 585.3 585.3 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 1138.9 1138.9 892.9 892.9 1138.9 1138.9 585.3 585.3 1138.9 1138.9 1138.9 892.9 1138.9 1138.9 708.3 708.3 1138.9 1138.9 1138.9 892.9 329.4]
+endobj
+2869 0 obj <<
+/Length 163
+/Filter /FlateDecode
+>>
+stream
+xÚ31Ô35R0P0U0V06W0¶TH1ä*ä26Š(›%’s¹œ<¹ôÃŒ ¹ô=€¢\úž¾
+%E¥©\úNÎ
+@Q…h –X.Oæö8qsƒÍ憺Ì ÿê››ÿØnÿÁÿ¸ÿóïý ÿÿ10Øÿ``à
+ä
+endstream
+endobj
+2870 0 obj <<
+/Length 149
+/Filter /FlateDecode
+>>
+stream
+xÚ31Ô35R0P0Bc3cs…C®B.c46K$çr9yré‡+pé{
+endstream
+endobj
+2871 0 obj <<
+/Length 169
+/Filter /FlateDecode
+>>
+stream
+xÚ¥Ë=
+Â@†á !uŠs7?nˆmŒà‚V"ÔRPÑÞ£å(/à â:»E¬eŠÞQjR””šËg¤r*§tÌðŠ*ãX(»ÎXk”[RÊ¥É(õŠî·Ç e½ž“© íÌÏuC
+Gûå0©ÏT–8b’ -QÂø±¥b‚”Ž7ãõc ûþ7øg35¹
+endstream
+endobj
+2872 0 obj <<
+/Length 420
+/Filter /FlateDecode
+>>
+stream
+xÚµ“ÁJÃ@†wÉaa/yƒî¾€&Z#”js(èɃõèAQ衘<Z%¾AÀKÒufv¦Þ ¡ýv73³3óÏEvœÍljÏìQvbóÜÎNíÓT¿ê<ƒÝÔæçáèñE/KÜÙ<ÓÉ5ìë¤\Û÷·g,o.íT'+{?µéƒ.WVÀS8žÈ¹. qn°rÎÕDÒµð*85=a 6ÑaÑÀwWÑí$Åh‘… ŠüH܈²ÀÏŒô‰¶>z–ápç1ôÑ…j¼ï3
+ Àäo*d‡ßø§'„Ûn
+endstream
+endobj
+675 0 obj <<
+/Type /Font
+/Subtype /Type3
+/Name /F77
+/FontMatrix [0.01204 0 0 0.01204 0 0]
+/FontBBox [ 0 -23 88 64 ]
+/Resources << /ProcSet [ /PDF /ImageB ] >>
+/FirstChar 42
+/LastChar 169
+/Widths 2873 0 R
+/Encoding 2874 0 R
+/CharProcs 2875 0 R
+>> endobj
+2873 0 obj
+[41.52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41.52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 55.36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 92.26 ]
+endobj
+2874 0 obj <<
+/Type /Encoding
+/Differences [42/a42 43/.notdef 136/a136 137/.notdef 151/a151 152/.notdef 169/a169]
+>> endobj
+2875 0 obj <<
+/a42 2869 0 R
+/a136 2870 0 R
+/a151 2871 0 R
+/a169 2872 0 R
+>> endobj
+2876 0 obj
+[569.5 569.5 569.5 569.5 569.5 569.5 569.5 569.5 569.5 569.5 323.4 323.4 323.4 877 538.7 538.7 877 843.3 798.6 815.5 860.1 767.9 737.1 883.9 843.3 412.7 583.3 874 706.4 1027.8 843.3 877 767.9 877 829.4 631 815.5 843.3 843.3 1150.8 843.3 843.3 692.5 323.4 569.5 323.4 569.5 323.4 323.4 569.5 631 507.9 631 507.9 354.2 569.5 631 323.4 354.2 600.2 323.4 938.5 631 569.5 631 600.2 446.4 452.6 446.4 631]
+endobj
+2877 0 obj
+[786.1 829.2 741.7 712.5 851.4 813.9 405.6 566.7 843.1 683.3 988.9 813.9 844.4 741.7 844.4 800 611.1 786.1 813.9 813.9 1105.5 813.9 813.9 669.4 319.4 552.8 319.4 552.8 319.4 319.4 613.3 580 591.1 624.4 557.8 535.6 641.1 613.3 302.2 424.4 635.6 513.3 746.7 613.3 635.6 557.8 635.6 602.2 457.8 591.1 613.3 613.3 835.6 613.3 613.3]
+endobj
+2878 0 obj
+[647.8 600.1 519.3 476.1 519.8 588.6 544.1 422.8 668.8 677.6 694.6 572.8 519.8 668 592.7 662 526.8 632.9 686.9 713.8 756 719.7 539.7 689.9 950 592.7 439.2 751.4 1138.9 1138.9 1138.9 1138.9 339.3 339.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 339.3 339.3 892.9 585.3 892.9 585.3 610.1 859.1 863.2 819.4 934.1 838.7 724.5 889.4 935.6 506.3 632 959.9 783.7 1089.4 904.9 868.9 727.3 899.7 860.6 701.5 674.8 778.2 674.6 1074.4 936.9 671.5 778.4 462.3 462.3 462.3 1138.9 1138.9 478.2 619.7 502.4 510.5 594.7 542 557.1 557.3 668.8 404.2 472.7 607.3 361.3 1013.7 706.2 563.9 588.9 523.6 530.4 539.2 431.6 675.4 571.4 826.4 647.8 579.4]
+endobj
+2879 0 obj
+[472.2 472.2 472.2 472.2 583.3 583.3 472.2 472.2 333.3 555.6 577.8 577.8 597.2 597.2 736.1 736.1 527.8 527.8 583.3 583.3 583.3 583.3 750 750 750 750 1044.4 1044.4 791.7 791.7 583.3 583.3 638.9 638.9 638.9 638.9 805.6 805.6 805.6 805.6 1277.8 1277.8 811.1 811.1 875 875 666.7 666.7 666.7 666.7 666.7 666.7 888.9 888.9 888.9 888.9 888.9 888.9 888.9 666.7 875 875 875 875 611.1 611.1 833.3 1111.1 472.2 555.6 1111.1 1511.1 1111.1 1511.1 1111.1 1511.1 1055.6 944.5 472.2 833.3 833.3 833.3 833.3 833.3 1444.5 1277.8 555.6 1111.1 1111.1 1111.1 1111.1 1111.1 944.5 1277.8 555.6 1000 1444.5 555.6 1000 1444.5 472.2 472.2 527.8 527.8]
+endobj
+2880 0 obj
+[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525]
+endobj
+2881 0 obj
+[777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8]
+endobj
+2882 0 obj
+[639.7 565.6 517.7 444.4 405.9 437.5 496.5 469.4 353.9 576.2 583.3 602.6 494 437.5 570 517 571.4 437.2 540.3 595.8 625.7 651.4 622.5 466.3 591.4 828.1 517 362.8 654.2 1000 1000 1000 1000 277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8 500 530.9 750 758.5 714.7 827.9 738.2 643.1 786.3 831.3 439.6 554.5 849.3 680.6 970.1 803.5 762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9 388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6 298.4 878 600.2 484.7 503.1 446.4 451.2 468.8 361.1 572.5 484.7 715.9 571.5 490.3]
+endobj
+2883 0 obj
+[562.2 587.8 881.7 894.4 306.7 332.2 511.1 511.1 511.1 511.1 511.1 831.3 460 536.7 715.6 715.6 511.1 882.8 985 766.7 255.6 306.7 514.4 817.8 769.1 817.8 766.7 306.7 408.9 408.9 511.1 766.7 306.7 357.8 306.7 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 306.7 306.7 306.7 766.7 511.1 511.1 766.7 743.3 703.9 715.6 755 678.3 652.8 773.6 743.3 385.6 525 768.9 627.2 896.7 743.3 766.7 678.3 766.7 729.4 562.2 715.6 743.3 743.3 998.9 743.3 743.3 613.3 306.7 514.4 306.7 511.1 306.7 306.7 511.1 460 460 511.1 460 306.7 460 511.1 306.7 306.7 460 255.6 817.8 562.2 511.1 511.1 460 421.7 408.9 332.2 536.7 460 664.4 463.9 485.6 408.9 511.1 1022.2]
+endobj
+2884 0 obj
+[333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750]
+endobj
+2885 0 obj
+[833.3 777.8 694.4 666.7 750 722.2 777.8 722.2 777.8 722.2 583.3 555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500 1000]
+endobj
+2886 0 obj
+[638.9 638.9 958.3 958.3 319.4 351.4 575 575 575 575 575 869.4 511.1 597.2 830.6 894.4 575 1041.7 1169.4 894.4 319.4 350 602.8 958.3 575 958.3 894.4 319.4 447.2 447.2 575 894.4 319.4 383.3 319.4 575 575 575 575 575 575 575 575 575 575 575 319.4 319.4 350 894.4 543.1 543.1 894.4 869.4 818.1 830.6 881.9 755.6 723.6 904.2 900 436.1 594.4 901.4 691.7 1091.7 900 863.9 786.1 863.9 862.5 638.9 800 884.7 869.4 1188.9 869.4 869.4 702.8 319.4 602.8 319.4 575 319.4 319.4 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 351.4 606.9 319.4 958.3 638.9 575 638.9 606.9 473.6 453.6 447.2 638.9 606.9 830.6 606.9 606.9 511.1 575]
+endobj
+2887 0 obj
+[656.2 625 625 937.5 937.5 312.5 343.7 562.5 562.5 562.5 562.5 562.5 849.5 500 574.1 812.5 875 562.5 1018.5 1143.5 875 312.5 342.6 581 937.5 562.5 937.5 875 312.5 437.5 437.5 562.5 875 312.5 375 312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 312.5 312.5 342.6 875 531.2 531.2 875 849.5 799.8 812.5 862.3 738.4 707.2 884.3 879.6 419 581 880.8 675.9 1067.1 879.6 844.9 768.5 844.9 839.1 625 782.4 864.6 849.5 1162 849.5 849.5 687.5 312.5 581 312.5 562.5 312.5 312.5 546.9 625 500 625 513.3 343.7 562.5 625 312.5 343.7 593.7 312.5 937.5 625 562.5 625 593.7 459.5 443.8 437.5 625 593.7 812.5 593.7 593.7 500]
+endobj
+2888 0 obj
+[272 326.4 272 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 272 272 272 761.6 462.4 462.4 761.6 734 693.4 707.2 747.8 666.2 639 768.3 734 353.2 503 761.2 611.8 897.2 734 761.6 666.2 761.6 720.6 544 707.2 734 734 1006 734 734 598.4 272 489.6 272 489.6 272 272 489.6 544 435.2 544 435.2 299.2 489.6 544 272 299.2 516.8 272 816 544 489.6 544 516.8 380.8 386.2 380.8 544]
+endobj
+2889 0 obj
+[499.3 499.3 748.9 748.9 249.6 275.8 458.6 458.6 458.6 458.6 458.6 693.3 406.4 458.6 667.6 719.8 458.6 837.2 941.7 719.8 249.6 249.6 458.6 772.1 458.6 772.1 719.8 249.6 354.1 354.1 458.6 719.8 249.6 301.9 249.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 249.6 249.6 249.6 719.8 432.5 432.5 719.8 693.3 654.3 667.6 706.6 628.2 602.1 726.3 693.3 327.6 471.5 719.4 576 850 693.3 719.8 628.2 719.8 680.5 510.9 667.6 693.3 693.3 954.5 693.3 693.3 563.1 249.6 458.6 249.6 458.6 249.6 249.6 458.6 510.9 406.4 510.9 406.4 275.8 458.6 510.9 249.6 275.8 484.7 249.6 772.1 510.9 458.6 510.9 484.7 354.1 359.4 354.1]
+endobj
+2890 0 obj <<
+/Length1 1737
+/Length2 12625
+/Length3 0
+/Length 13580
+/Filter /FlateDecode
+>>
+stream
+xÚ­–UX\Ý–®q'¸+ÜÝÝÝ]+Ü5Ü‚»CpînÁÝÝ]ƒ{ðSÿÞÝ;éîÛóT]¬wûƘs®*
+e5S{c ¤½  # /@LAT›…ÀÂÈÌ,Š@A!æ4r±´·7ròXxxX’@cÐèËËÁÎË̉@³wðp²4·pP‹Ñüãı:YšÙŒ\,€¶ &F6
+t²ûß®ZÀ‹µ·ù?ed\Œl,MDìÌm€
+RRÊàaçôþž&®N ™¸üëG
+ÛÕ=VGEÌ'™¥Ü\êÆjhòv?‘«Å aµ¾l„SËt×f*0Æì¤
+ ·]MëÓ5Ëუ{…£n/Ÿ>§GSа°äÁ8?ÂÒ‡é{MÊE¶É»Ú
+3f MÆ|Q)ç½’ñY¾å‹úñD¶¡¿„õ|ýðû©|û:˜E¨Bì$ÁG*ø[9 ›U¯š^ª×ȯ¦‹¬‘F°¸¼ù°Žàuù6t9׿vLb.Ý`”¸4å#’êOñÓýv‹Œá¸ió[Íñ‰B+ÔÇâQVâàgUHfõ¥4T±•á¾TN:FeªîNÞº j 'VÄ2†YDÐÓS0ö–ÌC>%kÇ~á.R9d‡Ë°ßüÙÓ5<jÕ:¸ÃAãýãöˆ;xU3W0ZUºGx£à|%q™È_“FZÖo(6U¿p¿öV`ïœg¦YÔü€~ºˆ0SB ]ðÞ᫘ïãDXá
+0£P Z§t’_^½Ÿ8Á7KÐú ½¬¡©®¡¹A›j_˜ü…ðw¨4¤¹­Ç
+¥ŠÏ›Úf”¸É}Þˆðy`·Mø Cç W«å`2¿Q_ˆ­YÅ&”—„—ºé÷7¥´±-ŒeÉêï“̬±Ÿ0‰§xìÄ Ñ1سì‰â(òõJ!òJ[ˆ¶™(ÒÑ—ïpsóö'§n'ñ= ¹ó™q´¬*[hîîÁ)­ÛQÌ9Cö]àqóE”"õ÷¤ LŽ ù;[]Q±Nh#"/a¿g ËñiBøZÚŸIÆÕ¶Knh™Gá Öæ3Ò"£x"Ðú zN!¯ ðiúsîo÷xW”¦ÔL8ÖÁ©µÁúÊ­‘\l:b€+îRÊn†=بã/à!—Ϫ^K·t?ok(GàépCÏŽçrÔ()ANéIm­8½w:úu!¥ÿ¼u‘—T°}ÙM‘yÈ)Æ#2
+˜Þº¤|á:úá-­þaEË—K§DxFÐY‚ Ù“Ychl#š9~°ý¥Ð*šc—ã †¯×öJR ½"C»#ãÃõ&7kèÉ3?Ôð®ãS-8¾"°c (˜JjJMCPw^Lw:®'ìòamLòæw’)mú$ªbð|ˆE
+°_
+ÈåË’.˜^Øf#È=Ä æfN^¼Ç­«–´,""øe¡øÍ6Ó”æ_gØÍ #¡»tHœêQ•…Q_¨í‡IªyZÃÌ›:üH¼°öB•öì®ìèmK¦O4´Ê`–¾S£Š¢)"Ëswe†ô°cF󶥜ÞZÉ䥑¶ c}‰çõn3ÆE4'Ï\øÅ Kv©*Ù«7:gZ.‹-¨-€ÑàP2ØS§Í>3Á9¡ñ!ü¨‰Ýâ£ê¯ ói¬!¬¦,3$Ö`0v²×sòÁÞGú¾¤ð™ª{´-•¥T0ƒ±²Ú„@Át4}nt´»µl‚ô¬gI#ð
+~´ÉÚ˜;7qV°(Š«â9±{ù²Ò‹I…Ò*è¯ô×`Ó&Å~E`M³~)Ô­‰Rå×6ÆÖý| ÇzV+œPÌØyÂ.LÃÜÉÛKFs\Ù7͔ϑ¸µÖ½~çûÙ@<·
+ųðó 8%…¬ AõIº_ïùv«ÌtØÜç$¡à^÷×;Z¹€©ª×¼2˜¼o3½ˆÚ¸&zK;´ã[ÌÈ“-Ùç‰àKªŸš|Ç€—¨œª„`Ū÷Ä8Ê%&Øt_áL=è=V‡=[zj¶æcÀæZÆDDh[ÆZ„ç)„)/+‡D€÷[ŠÏüµ·˜ ÓÑ|Øãc|ÒA[†\”‰ëŸûÔ˜~õãsºŒÁšŒ™£n¹ìW ó_Јžõ(F\-[ Ø®ýL٨ϭ,?`»ƒ¥ë# C1Œ»\°T:_õ¾ØWõDMåbÚ“}fÇÖŸûT,µwì¤`VÉX•No=ÝZä}Eck¨(s&¨Ü>äîø¹Î¹â*Ë;i¥£ë@³Cà„ª«ÂgúAö~‰Œí±W©ø+øPx -¿¹Í@È%ÇCG‘ËÅõnlµ÷R’tŒ±uKjâê<kÃ-ò„³ÍÜjVütLÛ î`æ¼9Ì,·ÛV´„
+fल_‡g1ŠÃ*¿·Ƶø»qw\—ÆsãÞŽþzœœ¹_óè‘\ ÀëÿUcYˆ²ë ËÕ8Áï ñ°""mÇõºtÚ°4¨Ã4õMj{ðRÑF‘æJtq<8Þiö¢úó l™Ì¸\pC]sõ…ÊU›P€ɱavê樂$á ·ˆÉĬÎeB’`˜GÌo6çæÎ.ht
+}? Ùá÷smàè›lEïÙ €Ýt«+KwU` ;Lº×¼{„Ë\+7Þ}[uKýT(°LN†p,/
+,XÓ˜áUWq¨¢Ô ÁDÆli™yeOÛæ'kšCè9‰é $N6ly=*.D/›®ÔO=á´¤[³c[į¡ãµëÆõûa \;öÙ?þô¦tÁ}™™d¼Û‰ÃW”[ÒdÕ‰¸¢Õ3v+ùýj
+NvÈî_`íðüiˆuiÔ˜ h++¡*ùLwß‹LHÖþÔ(È+·)É´kfe©¿­}³Ýb9ÅÕ9°X1º#‰¤©Ê°ð…}º5Ñïµb6ÒU@’‰í݇òIU¥ÒzF¯uÊ™‘kt‹Lë7#âH•åC|Œ}°Æ»q½«¿ò¦KºËH€XGÌ8Wy?
+©Ÿù + µkY,ÕB6Û(Ÿ{qû£¼'!PKj™ñ ØÇÛb*@çöw ñ¼¯ê™SŸÍRÈ=±ÅŠ>Ãø»Ä
+6 ÀË/ qøë
+±FŒ},IïRsD>ÓvûRÙï»D¡¾JLÞéA•©`êbñ‘™ª53µUåKÕ—h‡À%’Ê2˜W´ÄÆýÉz;‘M4h#ƒë«×¨çv5¬ÝlsÝi磛Æ6Ò‹¾9?!-ˆÖ-k!ðø(gp'vÌLOç–Š.òÒ1"&f«UµÉh²‘ãǪÍåù®âLE—`NÒ%3UpòD/Hf;ÇŠsKíwE†;ð²p- òRϵºÈù¾·qÅÿ,ú8ž¶ïà&¦ ñ5áÊ›•á=ôÈÎ"B'«¤Y»×sÂ:ŸÐ&fÐ{ óoÊCÏÿV©$#Ÿ:W¯E_—¢1Fu=ÄxUômœ¤.Ÿ­~–#×ëŸQ“…q‹a²•BªDÞ1f‡'ºvbä':bgïØ),Ì)­eÙî¼a¾þ´\ÔipÕµLþ¿ë‰±jˆ‰v1QÒ~¡Y(Ð,$ÌäísÝ ðå4"6’ÆiéKOoÌ ÕÐ w÷1ˆcÜM?GŠmú!"±»–ì¬#Û~'ðX~îë&v Ð&‡{x ^—(zÝÏå‡Qõ!Ü]Ò'ž&†þxâûÙß!¥!ÆF, F³æ8Å¿×k'–}ÏÙ,«‰´)é´M;–A"4¿Né Ó–>9Q|pÅêº&_ø&^¹ƒ<Ë9HÏfà§îÈ
+åˆêŒz;z»†x~»hnß! ±k‚׫”
+,Ô#Ïý+?B#B$}ƒ. ­/Kµ¿dÝòãâ²ÑƒÌëy1U !¶0âÍ•¢—.lh´œÊ?TñiÕˆC]êŸî°Û…tý¶8Ï‘¥ JFˆ&§+ü¾ÃãÇåÕ]d¸jI×ßÛDV
+Ý¢ ô(ÜÛ¶Æ
+p$jIÅX(ÂZðLèuÝ ü
+øÒ2.¬qß5Ê;‡c’…&â:÷ŽÅ-I¾}¢~Î)ÀJ\~µ…m_…»’bçš:æ:©KÂw»ÚíZÆÌç¦'!’–ë!šns=4º!BdžŽËtɪP!%‹Õ"„öÃD–Ê8ß%ÛX>2|uÓ‰mÂv2‹·ôã,KÚÚR6ëQP×CýÀå6çÙ\e§¯ÂAñ¼HoÍz©`Ö ,MM¦øñCïc"½ærÏý®ñ•ä­°Á´+ªiüŒ;B]žYiãCR6Ž¢ýõV¬qÔc{§|Êò¬µ­zQôMKA‚ÁŠZ¼+`ÖMRçìí˜Xõz; qQ¾üͶE(äˆÿ¥¨áÏi©X§húêhªàN GÿŒêÑ¡¼cüm­Ù2šÐð\üh
+ó=,c{ÉsÙg†ˆ­–¸oÝ3„¿YƒÉ›¹ïzLmžÒÊëìÌ{¯¦‹ÌÇ­—„>…W†—©{ZdŠ”žBY:¼ ¯éG ÙTyï¾N{•öH
+soRY)ï|š`ÁV?™¶Âu'çyTô%÷Rž
+öyÅÍù)iVUJ›ô› Z8µà=¿üÌçBnJ3íZjH¹_¯¦NŽë².Jß
+y>ÃêXOk~1í‰ÄÕæxÒC¾©ç®&°¥˜<lïòº J`™·çgeš„àunŠü,åCÅã?I±&ý¦æ…>€@y âè¦F‹A´–1ù¬×o!Vdº#p;o;bnÒ)áüÓZò­V‚VË9741ÖJcß\®ÿMƒ&›™¢> :Æs®5°{Ð!|~¥½{Ù“:I‹|C©žäò¦lqŸ,h¡ú¦a½ÑÐslnŒ—ÇSá–‡Z n’ÀžÊmÎÑÍ}g]è!À]„'¢DŠkÑe»—ÌäØéÏQ$ÄŠ.)_„–¡"0æbÙÙ*J‰kµs+ÎeÝQ>§ˆ:Ϙœ@®<`-n¨¾­ÖýâiÚÊ%GÂF7žÜHQ+µw`â£*Ï®A/%|#-~ ýy¡KïA9Ûëѽ›Äxˆ#àaÒ¿uýŽÁF
+Bü¬å‹¤ß›=vÄÂ%³§-ŸJ ì^`O…ˆYgÿôµÔ¿”­FHSL/r
+)@¥&œ´5 YE†¦@‹)_s*Wi¬,±&‘qI‚ž¢Ê}AR<²¹p‹®¬›ÒÌ¡q­w+X[ ­Hª[}ß`¬J aƒ³–qùpÎÒø¨˜Å)7SSm»U q3wkÿ]2$k¢j¡FDÝþ
+ýHíxÙÜÿ 0­C{@d<p€Žš)ïQG…'œ$ÈN wôû
+‰„"qcgµðÃ50
+N“gÕ Êáî ê'±yuÆë´’‹ A°ôzeò·!ü„ù&x|Í©V|âpæŸ_¦FéL5oãŸ!íbÊCÆ4¾ÄY„ËÜ£ÚS4ŸÄ÷ÃÂ
+ö1’UàŽ8 1mT2…}k“ ú|·t½æ<‡“ˆ…Ä,oéúà\Ñ"ÜpšO2
+Îu.Z†â¸YË÷yéâ2á%G1¢~ƒ?ú‹+x¡Z‚uY¿«EOñXX¦´°§EW±hïñžNn?€Ð-:GeƒD_f?Hkeš³½BÆ›hÐêž>¦ë>9}{pëþñ^Ú{Ô¹üD±¸671¥>íåêJBªçVÌ%Ù¹ü¬÷N.¢Õöönª«"auLk
+®ý%m<×o`˜-À
+Ýo=]J0Ê9.ë[Ô~èîXÛjàˆž»¤x ìVX;Á¦ùVBÃ& ùÛo70±oÆ 8›z8MécÔŽ¤6®Á¾Ão •G BÀo4ëT³Ç
+†iG"¬¾*Ò·¹¥8Á]íÖ#² W¢gbp³¶>Êeº†SÇ«’iÕoÙ„IÙ­C80úÍ"·/šÅÅÕ/SXÂG 7¶’e8Ô)ÃsÄ>hùX
+îÛÍ£RùÞ=ÂòŽ ü/ÎrE=<Ÿ0Ÿ Þ¡1M§ûááJ½ú¹êÓ‚kš'ÍÌ”ò"Äûƒ“à†ù_´ýaü)|z|š÷>r·6Z5–U
+‡ËÓ.ô!Y21
+w/ßDw³±³°¬µg1‚ytp—Œ¶fVÚ#Ýbi8yÌž]΢–‡›9tQ. Ê?Rƒr~ÁwI7÷²ó’ÇØäçÁ¼µ!Â$tø£ qþÒ| i™
+öÄ´æUNýšÝ ­ø*9Ã"|܆TÓ;qðÌ.S¹CC ¡,¦bƒ ˆœUGÝ™Š´ RÇwij%éäßFç#ÊMŠmuÐüj&!ÍÈ{%ÚMê®yø‹lë“Tµ‰÷÷à¼z÷ zäó&­Že„CüŒ»+ìÜ¡o;\¬êÝørÆŠx(¬¥™•1Y(d¡ñÎï^-Ë×°ÌÈ·+{?L“_Öu‡§ãŸçU•ièBõÞå…¬u³yüøâø†~¾¾°‰Œ€gTFÐ餬â²`’ –k˜µ§ý†÷7yûêaÃÈm ÕáÁ‡ÈÃ=ݾM QÓmM2›Ê Üв3éæ °üÕô‚L`sØùIÑjÀL“ßœ7`ÊÈ8fºtKtà7Ã:1²|YbÄ ËóWOÈOçݴ̦‹ËOÙŽÉR
+œìò‡ŒØ­îCQMSÉAyth^¡µÛI#÷½£ÓÐ+p+¿*ÂcúY1ºÅ¨vÛ/>1 x£í¶qââÖV.‰t‹ªrøôØ‚õ¾Aà‘ýˆÛi̬|BØÓâ±åDÜ=XÆÝw…HØ­¹¹ðáF} îvqìµÂ’Æœ”ñÁë±R‰Ûcšª|…s—êž®Y­-r£\ï¸(Ë ökvá4‘!)'áBkcÔJC"¬Ç&êPY<‡v1:WˆÌ.ÊáhqOü²©~€±¯+ÔðñÉé3‘>‹/ž¦ÎÔ™/ió5< ä tnlF!ŸéTƒÓŽMéaþú4ì*mÝݧ/@pn]R†kÃu×üÑVå-\ÜÉÄ'ü1ä[誷ü~¹ë#xTôê =ô‰ß´žÝA\#íµÖÓ`fU#]7÷œ+=L ðæ{k•‡“¿«©%±— 'ù*X7;ú},üŠwä;Ë æðøåZ¼íºí£G<Üq]ôüµÙ¥õ:¿ðŠóôšËþv]iÇ¡¦ØúËawUcµÝ”8v{ aÍä’õDgùàGV^"™x}ðiŸcÜ4M2DGó¾<x&^5²»þg:í|8‚,d
+NΩÌEßFŽI”Ú¼ÉCÈY@íU„yc³2±B•F£YÜøƒç[ ú v„fNGv?÷|¨?f˜ê@‘óÄiáz»Xä×±&[õ·hcóÌdÝ /™ß`áq£öñWÛgöj_Þس§:g±‰k•‘­ˆû4 ø‹}ÂÚÙÄD³Âô*]±ûmZàÁÍgî[†gpoÚ±äb‘Æxž«~‰?â-Z¾µO±öÁ˜PJÒ´ÆÒ.âÒœqHð⤩—{‰3›}pY…¨†ÆbLLžÊì Ð> M®ÃýêõñW "Û¨¼eò!‘ÁŒÇõÄǽ¸¾ë†$cÀesÿ‰yÑð{Îþ]=Ø@Ü ”`ê9B?اê÷ÛFÈs»Ä ´E!§®r_ÔþÈDi©jýAÌxâïníïr¹n 89‹ŽMôF“ªÚz^iÆãÞGœ˜© 0E~’ÒòpNÒeDüa6ëÞ$¾ý ¬»©Aèòž_d²Ã9pŒÿ¤ËZ8¤³;†3+Íî!®USEBÞ–(à&-kŠÚá;Ðã|7]PÉ»²±dÁÿŽ7úëpñÉm\&žGWŠÊ¥k:Eù .øg3Ø{Ж4LfÔnåäáúSëÜ9R!µÜA¶ûê[’ôNHˆ÷;N’ˆàô6]z]<ElŠ]sÒ¸¼kóà gÓúÒûìêØlBåÇz ¨o¶i&
+ÕÓ¨ Ó×/+©lÃPÓO?+Ä£`†½«:F#+ì1š¶üÞâ÷%Ø £ÇŒÿ¼MÈÍΙC¤_qú{¾+bGéð<vU453åtÅ µz¥)÷Ør*jÓ塦ÍŽ—e¡ÇÛ.‹¯Íñ¡‚: ÛüÑÑO}ƒ=x»GCer†¬‰—çS6ÑbÓ3«`åîGüŸ(í %§«`ÐjQuœÔ¿:w›7qÔšÆq¾é¥Û¡yÓîèïõ~þ¨/ÆX\36áêüqq—
+æ«ãüýT²ý“Áá2ºƒ.ßkç ÏÌscFÆýV¶+Fô¸>£ŒÔ¡Ž6'±õvÓ<B='ï5)ù«ÿ š¤‚_€µ¯=‘±ôôB(z­ë­‹Eù•i®ãâvM©4N¢t7 jå„gu]§{GpV Ïsš¸õ»oøZ0B/‡AÒ§/¶Xüêsn¿fD»UR§Lì`µP˜`ŸÄ»(§þâ¾ü[Û“@=Ýß;):w'A¹ŠË¯LÝSÙ–+õr ²—#îô…­µ¦—‰ñ •f bžôŽβg‹——|Û4|—n¨s|So–Õ"K?TDž²×JsÚ9g_ú$ qY&ž,å
+#1fQ/˜mÄÅ,=j÷lgUãU³à#×~:)ÞoØ÷c1kWñ* *>õÎHm7 pøuä=ÉçNñå— ¹øA…#´¿ûWœ’¥à_W÷r©¿xʲ)®¿=\D솥ùû;“®†:{pµè¦‚s×GŒV¾³ä¥iÉmHÈ«¦ŸYˆÖÍȺè-q‡¡Ëò( ÈÒ Š /Ä>Ï¡Ål¾ÃàZòí/ö²t¿oÓß_ÀY³xÀ™ãu 2³J8Ž“¢?û¡ò*ì|œRßbí.í«)¾Ǻנ{}¥OíþÐÁ)¥š!)œ2òãî¬ÝXɹŽáã›{1 *Ãy–_;V
+õ©ô(&D¿ìÁ± í÷A,A–ÐãÓþmšÉš —À\Ñg¥00uá¸dþ’sï“ÒË£H½j%(ÈŒPòŽí5 ŠJ0Æ©ý‘xóÝ2ÕÛìPÌ5¿RæJ p•fÁµü¢•ÝÁn°•žESQÆ>îŒk›úXÙxPQE°Ü²Iùñ¨]
+ôÜ8F:/dh/·dŒÚ‚2º•Yi  vZm[-±ÐIâß4-Påë1ŸX²n®ú`«²µà7SGêintûò¤¶ž( ñgÌê³ÖÆ‹Îêœk pðØêë'ÑÌúÅ'5ŒÔ옪º5ø
+iP ¦8cVXÎFqÅW/v³öã¾ÁäipEä*œ È2^l hàˆÐeÿ®$Â(û5~V ô<,R·âݨRú=pÀ–˜pÌiû)Ã¾Õ û%.M½‡ƒ#ê`¦ %ù-«§ˆµ&EÕºöhþQùªÌð¶ÿ=”œO{?¶4yàªáëKÖ$W«y.á´{“-ÚD¾ëùËA+°õås¤$µã¨%-ÿGF±'äµb^§ƒÀÇ´Lõ g’†À ÅŽñÈBI'õ戧Ô/jÈ8±³§í‡0èG›œdñ(x 32øç‡5‘ûÏ;›Ç†òËáÈ(Ï÷;Ò†£x>m+´îÚÍ@¸KmµTÚM±óŠ^5<Úÿª)Ê,»ÿ5QÈꛤwtº‹ËJŒ¦sÿ#óxg©‡²ÇYBÇA’õÜ;üЊ§î<’ãñÔD7Ûá—1ìR§¾qc`;ÝÏ> Óä=š"ê²- ÇE–Ö-$Ò°™;'Z§²K">häWë×¥¼üÕŒ…h°}˜ý½ÍðLŽÎ¯+ o
+TÌçŠ+´¹+äe±Q@AºÎ{/Z²A¦ý(æê4';ÿìÞK5îh™¡¨¥Jñ5çªõÍçwÕ±¨
+ÔJ,lž• ,°¤@GúûˆÔÒphýW$½°bl|À5½2³€iùñGõÔÍxl‰z®37yD’·©¶±Ùþt|
+{êDÁ®8L2S‰žx'áÍòL>³ñòä#7ª8èúH_;m?òâ"кPš“µ®¸ëÇjv-¼ÜR1túmóï1•#õ~q\ §‚þ³(;êQ’ßv‹¦,ãMäœ €Ë¤±lk;ø¹áÙɱKL§ÄQ;b¬)ýþc²®7»W[!r$±¯‡¹ —ÿÉ;Õ*¾ÐÖrv™âàÙøäQõX /oê.áDV’ ÿÅ?%\u‰*DÉ…”‚WÔW]MÐ-„O<dÊã‚ç«?€UÊö“'Bižv^µû§}²a)ÏHÛߌ/«ÔpÙ{ÝálÍF2³¹{L><obÏôÏnï“H¤:J÷ZÄ%Ѧpv¬¥ãIrФ¢ýYq»_³PÖ(Æ;#¶G·»°Î´}187Ä­’©
+T¯•êµÙ)Ž|ŠýE¹î­Þ'¹a<Ã1NzlF>¥¡ìk°•ê¥
+endstream
+endobj
+2891 0 obj <<
+/Type /FontDescriptor
+/FontName /ZRGIXZ+CMBX10
+/Flags 4
+/FontBBox [-301 -250 1164 946]
+/Ascent 694
+/CapHeight 686
+/Descent -194
+/ItalicAngle 0
+/StemV 114
+/XHeight 444
+/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/b/c/colon/d/e/eight/endash/f/ffi/fi/five/four/g/h/hyphen/i/k/l/m/n/nine/o/one/p/parenleft/parenright/r/s/seven/six/t/three/two/u/v/w/x/y/zero)
+/FontFile 2890 0 R
+>> endobj
+2892 0 obj <<
+/Length1 1752
+/Length2 11158
+/Length3 0
+/Length 12115
+/Filter /FlateDecode
+>>
+stream
+xÚ­•c|ݶöMšÆÉŠm4¶mÛ¶mmÛn;McÛ6ßõì}ÎnÏ9_ß_¾ä?ç˜ãºÆuÏû^$rŠ4üF¶Æ"¶6N4 ´ 
+`¤0°r01s°0Ã’
+ÆŽÆ.ÆF´°
+
+ÐwpÐw‡Þ ±
+‚Xî|cÿ£
+ò%׎ŒðçËÞ†ráDdàÀ`”„è#Ì‚Ôµ'«ÿ}óM¥xŒ0+öÓ&~2ÙÝθ;}©$)…-#¶–²6±šjDø ƒIÁÀ_CEÙ”
+I ‹Sá:­,¶L œ ¤Ò”/3ö
+©k_’‹L•Ú@ðmö´à;(RÎÆÒ§h„=¸Œ…üR‡´N†l“dì6•HÁ¼ŒÄáï>X»ö9ôpïj&—óË::èXÄ¿Z .
+Hæ|E¿e ×!Gûk]WV=[‰Òk›rE´Äêäøæ“V¨^zòxËxí þj9A gø]ºôÌ,Æüå­tg5ÛJ4›ç<ýs®’ï´n¡!ÖLæë¦z C
+À·¤ÃFyê÷…CuMúwgb{KÚ/ÑÛyŽT¬dÈÙ…"cŒˆÛþ—ሴÍö¨,Á¾xDL^Îvx‰¿»{ áW}e’˜NažÐ÷Fí¸|ƒÐRƒxõ³6чE9¬±©ö¾Ðœä·ÅæëÍVµùï‹RØÉç ¯Ý—sUƈÐ×~0λŸ’UV²Ë? 5ë‡qGšš};:)Ü¥*½1äˆCÂí/»<Œ ¥BÓ6ëž Ó»¸v¨ÕpOˆ¦H`
+V©ÿÅ.ñ*~oÍWs,k=Y—Aÿ<¤Ý'¡¨1ÏŒ5ŒÁ¦2ósY¸¾eÇ·q_¦6Â3uŸ4v˜Á„ï>àŒ7VÔþí÷1:‰² zö×Ö4þÙ3Ešü€¼>ÄZ·Ì±÷ÖŒ¼ÃMM ½JæžOyåò-(™ÖÑ9æ!œ¹+S‹”PghIZ£»?;®—™H6£ß Xñ,‚¢ø‚Íé‚aÞqd¦CÄ*œ÷Ž—zXêáЖÌS ù×¾8ÌtÁ˲HÁö³’½|K…˜`à¹ö5ºß=¼ð; õ$?Z!6äý5à˜C
+Óç©Æ£¤¼Â­/1B°vþâÈ#|‹à¿€¡A7WÎ×M— J }^rOŽwq„¨#‡ß)ºˆoÔ™!&`ÑhеÉIöòðÃáXŠÚYãx·~÷m%ÿaÂñ.1};©¯ÔíhMtVæNÄÂjRG]‚-ÞÏÙï –.#…Õíq·¯êUÐD®ÄQ—6É1#RSɲÇqéèÿÛ,9’ú3U‡Óf ;Wúö若䈔zi¥
+¶ ûŽ_™j“¤Mžo&uy×ÒùcŠ]EZ¡ô1ÞešxGÐé]ç~†„eWu‘jã«¥lÄޕЕôm§ ñ«pøki8.#Ñ„—Ý 5õh—«Œ©¬¯ßm‰ÒÙ^š¸¾ì•/‡­Ô=óœå‚Ž©X|ÃI3•†:
+µ*7OÂ×M>vÞ ûÅÆoWï~ÞYyž!„*SÐÝj“’|9(¿µq´‡f™<m't;¾•l[K eS€IbÇ©+Ë0 º­ÜÚ¹Ašh(S¯xjý¤`¡úèsì!gkÅûÖ2|]Äî¹RËðåóâtVISv[ª™uÓ¤*3&µO@ýwõýâï<šoÂE6†k©mhb³pãâç]Ù¿cÎÊÞ’ÀUZ¨øšÄ£Fù_\‹FÛèŸ7Þ–„6ºÛÐ
+çñ9è:ä^|žC×ð“`³Î‘ìç~\ób€…z#ÜC+ª=TËŠ×$yQÂh²Çð'›Ÿ8Šî
+åüú”•|FF™z—Ĺu‘Ðè=D\­u»UóE,ø²Hjd¾užûˆ;œú›èÂË#¹Ì€2fÕ‚ U«) ½
+¼pvkü€uk(ÔeÛ2øQßLð';{çL6+ƒ`œ¯"–äcnÉÜš\>nwoŸƒ‘o¬‘Óµæœqép¥+Ù`ŽŠ]o136ÎüϤçyç‚\L2y0›õš¢?=¸®y*O…ê nû‡Aç¿TºÑóü„/Î1ÙæË8R¿~w‘9mop
+D(Ü– Å#8«jyº0GÅŸëc¼w)ðw;üoº¡÷Ãâ’°’ÜÕ+Vv¦+¹&{8ƒßae5¦Ã7ñMûƒJãJW{"…äOî¡8ëωÅyR¦Ú¯>Š´"rŽîŸÐ(uÚ‚”ÜáiŽ8Û§d¾6fú¢Æ£švõ!³ž‹lÿô´ëD"ή¦±Ôè­YÝûHÝùq<4 UýXïΊnîÂ{ú*Ÿí†}·îä«ÏÚØ“¡¡=íÓTÑ6ú›áúF
+tSs Ä0•¤VÑ“°F䆭JŽãIËmã»w“Cžd€#B— ά}:oßoã‰O•¥ë½'>ríÒ±K*œtä,é9ÏJ®v~æsM;‘”&ÛÖÙÁ/O ÝšŸql“°³—~ß- †hüèfÿK¡ö®,«]Ö…þ<Ð-ñ¤'SbE;©×Ž[‚‡ÔdÓ¤®+ü…b# u ¢À‚†¶Ž÷áPº1)[ͬ¤bKŸÝéú7[äÆÀR&˜ÚƒõWX†4ç÷ùIE‚e¢*‡,öY(^„™w¥«Oµ†<Ê{ƪqþj­—0‚Ô%ö¡úŪ}¾>®áþáE¾ŸÈ²ÍjáâHW#‡ÒS éN·}^Wj°®Ž’â“T{êéP¾ê9AríNò¨ï{ÅyâÕש¯q@˜Ñ1ÿd~«¾Ÿ2[Êý=]öyã@5­¢ÎeEŒãÜ2o±ëŒ6A@}FÎ>‰ 3¸šQÊ,=ÇõœºÛÊ2ôySŠÏ*4„Óö[‘òn¼ðXÛe}0>–ŸCU·Æ{·ÿ‚`'Ð
+&·!ë…Ô¯ÒÌÍnÈó¼Ì®;í‘ô?Ãn¢!÷R4Ÿ3×8m}¹öã™öÖWxerg¤výQÈþì™8a£.òµ=;$[T,”hÜ("©
+f-Ñm´?©ÊyV5Ÿo›aÝȼN±¨Œ ¼^h’ëPàÚ@Îó÷:¨¡‡‰)œòu^®½ã|r({Î’íýˆƒ_Ë Ró‚dšÙ,jò#iWÛ“J|-TaËϪé”ùM|ã°®ŽŒ÷2Ϊ£òQ´™Gï]c1O÷'§
+§Èg°&Š8œç{gG’}:V0“ülyÂ×÷þ©aËó]yèïR×¾”•ú¼ƒAö…#Ij^®žL¨5fþ„ S%ºNÞ®Ýä…ö1æ^1V¡Ä_ØÖ¾×¼EÌçn“­ÂVàŸd¡Näõ1Buøóë`ó7”îð|¾i äÅ–ˆþlÆ´q–ã¥O¶¢¹JV­t–ˆ\\öbÖu›Œ~a:.ÊÂìy×D$½,öÔyfZÀö`Ó)p]íÇ¿¾Àh¯H¯ÞˆEª
+G‰p–#%ã mzñþ»ÛFÉÕ›†7$ß«W´Â²ÿŠbŒ1PÙÛÁê3—Pâ—½Þ4î­ã©Þ+IJ»i‡)žO¹à.Ÿ›ðŒ¼GŒÜhcsò~—…›ç=I+GØL¡îJs³L)·j’ã_P3ÿ,=wïß݉ 8AR?Û:.R4/&ùMP9 ª‘Vþ;jÈÜï•YUVŒØ ‘‘¶'AÊ›Å]×ÜM;zÌ-aRSïw%âqEÕ…cRVÀëiñ"2ürö=Ìúý{¹SÅA³k Ôb¹£Êî+.º6TÃ!äò‰Ï3ßÙaµàù9Q¶ƒ|¢Ä§¯šûlB¤ÅñnXcUT(°ËÆê¬?žxn‡ø¶Ý&«à’ãäå&õ¦òrE=ƒ~2œŠÖ<Y>¿Mà¥F1á°ïÊp,ƒ}©ÉîϽcoóžñš-™¦°÷äÓÕºK,¿«nÐùÍH¦†Ç Ë=Õ¬]·cáÜrÕÛEÞ3Ž* µë‘D­/Šáp+–úA…ÖÒeö#"ÒÉ[Ös–¤—×eÍCîH6¸S[!ð
+CõÂS²HÞsÕº¶‘/
+[*ú~»¼6¼¹e’žaìáS[aù¡SзPïI͉÷±dš¿ÏˆûU1$WPuÍæ}±ìc 8¤B]´ó®ÆdT³1u¸_6­¬žlÅXCö‹ >ªÚ[«Qô d­ÑÙC³!¬¹$ ì£må#AJØ;•Ò<mZ1JªX.ÿ‰»/Ôa^÷ºRWbörÛóþ§ÑÎ!™å ƒyÜLù÷Mƪ{hÞ&ô©òÚcN—A'œáõœ[Tc0Ë««øpV­d‡T&Hqf õ­xájÅf­ ½:;RjýbÔ{‘'ëK92²xán•¤ÍMÂë|ÄœŽö1ëð÷æ®ÈPF › •ñÔŠÇ¡÷[’µ½IÖ§[ì`Î
+ø PqÊf›ˆ¯ˆ‚{½øýØ…_Ÿ |dÓƒFeej~æ4(É\áòؾ(:ˆ yæMóh×îð} ̨Â\"x¤Š©%9ÁsNÐÆ6®•h9(áqkA¥ªQ°íÞUŠ XЦ¿½_,0‰Go-0òt0Ðè~¥=„‹IÖpà8÷0Ä4Wß,ƒ—åNKó¤V˜TFÁo}ö/gÝ`£´ß+šOkdÌ€X7¡’R:åqŒóe5]Fâ–ä™^Ø~*0Ï‹ÒÇpÙÏÞ•¦¼Œ8rIéT‚Wì¸i ž^cïÖåñ-QøüJe,Y¥ˆáJ¤Ž·RkU3Óz,õcàZWV~Ë·Ûï,·=O½Niqü‚ ã×…‘•Äx—­
+q§v±m{z&X·õ÷[ úß›ö»Ä“zñ0ï¼G¨³¥¦ÆEŸSL<|&„Ð=ßÞ%Ìëûº®ŠPê®®<·Ñ¾×bEòTZÉlüOΛÚÕ1$'„|*\Là¤AQÓŠµÓ½}°êÔQ{F¥cž¾,+ôìk¿_¡ãà¥ÇŒ¡<5Ö+ ÙÓ¾øàµÞKýpΓ*Nœg«!d~#2ó€jªCiËÌonÏ^ŸÏ•÷ÙæÛ‡+£À×íŠa_Mˆì;§'’ðCò‚(
+]}ß7²é›¶6PQÅÀ‰z¼zqµ5jÈ놄JQ½qâÿNXËöæ²lL‹Hr:tõSçPœ|ta*yå6“\EýÛÑm¸µqãBôæþy4™jG $˜#îvÍcI
+7ш
+#:Äž¯¿ø§âm²ÏÞõÅàuæ9äŸhðšÐQõŸ ~£ëÈ:&Õ‚í£XÞÖLw8rù™{_Wœ¡ÛCj„ÅGFóÍ·–º]ÃàÝDSDëòŠ­²ÿ¹©íšQ¯Õ}Õf†ûÃÿÇ°¤b<èϤeË—CšØ|v\Ù:TB¦CËV:= ]<el•ø°±ÉÖQf(Õ¯ùáĹgè'µ£,UŒ;Ò·
+Tû><ÏàGï·Š¢T€§Æ 1ÚC$ÿ ¨û¡Þ\"¤k((]ªÕ´‰µ"^9l¾P£'|4CFrF?óŽxB¾Ù^&ùàÚ¶ot°Á‚‰%kÓESê6F²"ä_i÷Åc½$åîÜþ ”v¸Ádv€Í÷ÙRÅ~”ÂÅçþ8]SínhG¦œQ¨H1»÷dmõpýÿÝ™¶€5ùÍ_ØDAýx«ÖèzšWrw{¢«ØKnM@×a4Þ,¯9\Gœ£—äBiôŽÙcZ¢û¥õuÁúF8=ƒt·j/ ¯‘6-ÍÚ÷ ÃH|?ËX:åN‹Éžsý«ì>7?ðT¡Oøå߯ÂM7ê>üD…¾ÍóW­+‘ö:2øÙÑÒ85“V3)a]Ú¿IMPÓ’Ñ]£®i“ŒÕ‰àæ?¡…‹Ê\‚ïÒœ/ǃä[Ë”Öʪ=kYQ:Ögø³ãî`œ&3ït»=žæ2.¹š»|gWŠ×ŠQZÄçWS—\ß|v>T1dË•'%,: Æãzß#5T]gÜ­3c‰t¨“ÛsÌỼZz^¨dcº’@Îàs5ômë~½ýó“hw›KÍ喇­8(hs§ÑÐ^‰5…(¯ÍŠ¹ÂU’à³ ÁïEîà”2ùÖv>4t …
+ê(‹ûMÍsÝ`
+|òÎ\-L¦@x½nïÏL9tGÕ‹ÓÔOj‰¡øñÎе̉*6¿›fmaòê~s¶ƒ6›µ|Mð}Y}Û1‹?Óa!7»ñô3:)^óè‹~M¼nOØOXR0i†ÈCÐ ®]pÍ»»>%ã
+õ®pb<V 3ßn¼¶§^ Ê„ÚƒÅ}«çÛ¯,ý‚‚îVmyŒ­ãÉ…„=Þó‚Ó
+Li§zãg‘ä9)EzôU@Œ(D5¸Z-”CXt&ÐÌ;’Õû¢Ã²¾~îøö¢1ÎTÉ—"a€O•Y]3 F“D“†]º7âkçyÏ*?Ú”`}ë ;g9”2]o¯Iî3§Ò ,ßq0–N¤QqF3é4£?fÝú;Tö §,Ò©²û”Ô´,Ø,â–C¾AùïÔŽ†~Ì©,us!Å1 Jþ:›±Ôõ
+œ4Åé;Ò®ô¿7%n9Ñ]‘g
+%¢Å‘ù&m£K%©†§Sß‹Éat Fß®NTdmºÙÄ×zݤä Ÿqx–]MB¸q|ªÌ…¡W0|*YÌ™4Ý‚=ókZCŒúçÆ5º
+íèëZ{wöIîÞGG¤ÖR© øÓIä|ƒ¶ Ù¯‡Óª(îL#bfà±Åì’8¶égq ¶$Ƥ6…%aœë<ÄÅSûƒO{¿²U@I„àGfTV|òÇ}@«¤`…&҈͇Kî«ø³Ö#¶}Ï .GáPA†BtšÂmçÆ(ÒzºwŸì%åR¥(ªþÖs(êxæ!Zˆñˆì&Ý­FѦð¿¢$8V…b¡Æ­Åèmd;”§²$ºXíò—¡§NõëòÞv»ìn*
+­sˆšWŸñ€~£¤Œ®ý¥ñï}ÒëZŸ¿bH¯àXÍíYœ´˜Ã»Ù™¶6Œ×;|hgì׺Z´°]ìвC¯ÝÇåš^âãWû“QRSxs"–]#¼lu=Ó
+¶:yÊV×õàȸç
+òQÃð2EÎ×u?[±gý‚{/P
+‰BB_VOÊÓ¬baÐá(üH-ùšÿˆ÷)"“WêÝ®} ;½ÖŽz°ÔiKir€²¦È÷Ü8© })Ö½hC¦ÈdBtìg§²o
+‡®ôv ,4‚À4"„etv®êElƒQb¤Ô–ÏüŒNÆØË'‡ù mbÜ QǾ°7#¬~fˆD/.D_r®Ÿ¦Ð‚¬Å±ª6 ÅŠx3ëÍNª58êLÆö½ù»£Ìµæâo)[uêŠ'Fôz’»§Œ% ¹[`Ï”&¨À-iÒÊ2?ÓI~Ô}ê ¬¡¯ÿ”1 }â’]õ±~\[nTŠƒQ[[¦’OßHó5Ñ•Y|n:#$œÌ‰Ö…„<ð!ÇÀÆ?® ‰y G|Õp/Ï0Œ\$Á¸+³ ¯Nïͳw÷IŽ”;ŸŒùñ’·5j²Ä#–·Çít}Ú\;ðâÅ=5ßPfknŸÄù¾Æ`žè­ô^5„åÑ~¬lê:0!€´€+´XƒÝ†X†‰lIáTÔSÅ¥œÒõÐàŸ6õ K¢?ìnÞ”‰™ÉBä+»k1XÏÏ•2«‹ìF„Ô ò¶n‘ôÝ„<p‚"ìâ;
+ZÙ T<Ä38`>Œ*)-‚´ qñ”eíeŶ1‚†Îû
+}㡼xvE­þj¸ú®È#¦£¦pg4‘¸H¦ÅÎpº¥Dÿ®»:CŸ¯© ˜\~ñÓ Ë±tNA%c¾‘|Œ·´²€›’QÞ²wUð¨ÚÞÞ8pŸBˆÃ›ž¯Pé+>#”åEmEd`€ž&]܌іSùAðÝTÇläxÍ(¾!kd § Æ ƒkh‹Ñ¤ÎhÎ-:—£`Ôüþý*Px\Ò%2QÐ~Ÿ\Ëü”RzÍ—`@åwg¬k翯^yñ ­kÈìû×þh{N'ÿŸ•þ ;PÝJ:íÓàl|ˆ<oª
+i!Rd0uD4< Z”¸!rKt‚Õ%Žk†Ÿ­%ùŒ–]+ðä©\¥lJí‹o¸­Í†YÕÁæ3«`ó¥Âûæ,¤ö°E-KŸáe)UÕÞ­êÝK{úƒð&»ùLçg“ÚýŒÆÝé5¿/å™ÐâBЗKéÝÐò¢–ëú‚.zzü?vÅî
+endstream
+endobj
+2893 0 obj <<
+/Type /FontDescriptor
+/FontName /RZUIOJ+CMBX12
+/Flags 4
+/FontBBox [-53 -251 1139 750]
+/Ascent 694
+/CapHeight 686
+/Descent -194
+/ItalicAngle 0
+/StemV 109
+/XHeight 444
+/CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/Z/a/b/c/colon/d/e/eight/f/ff/ffi/fi/five/four/g/h/hyphen/i/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/r/s/seven/six/slash/t/three/two/u/v/w/x/y/z/zero)
+/FontFile 2892 0 R
+>> endobj
+2894 0 obj <<
+/Length1 776
+/Length2 1619
+/Length3 0
+/Length 2157
+/Filter /FlateDecode
+>>
+stream
+xÚ­R{<“}&©žI”ätDZlffνs–ÓœB«˜íÞ̳ÝãÞEÍ9½Q« ©‡”E¥ôh**I‘Sš¨’RÎzGoÏóyëß÷sÿs_ßïõû^×ïú}uD_#•
+:±!®…±ì=ìñ
+<ÈÜ0%™A!3_6…ry(€Àd>‹'8€ÈáhŠB`0
+›Ê€$ë€3È0Læ!${!A8 0 * €±ÃhÄæJŽ
+éÝ8•5l¥TõÛå‰êYrÕÄm#¡.|C~‹ƒª‹·C`²sžÅ¥ó2ÅÑÑóµ¾Nñ$zÀsU‰•NãÉyuw*ÞìþÓûpÞIºØ;aD]sÝݺ>$Æe¶ón-«,ßXjÕÜœªzÇîµò¸Á²|ϳG‚é!uþWÅ›{ÎtC‰õÿ^á¿GSEÔv·h3éx?8Äj—¹˜Âšè¡sƒ8æ•=Y˜ˆï‹O ƒPúÆ}i¹G¬ÆC•ÌÒ/ÎÖ”Éó3´ÔˆôkÆ4²¡ÂEåp³ˆËç„›0fñ|\Ȳœò;à'þ4¿´\/%º›ìÓz~ÊÜþiäΦGÇ3FÞóÖy?m Vú£×h%<%8‡ })Ä_2-TÙPnx:Ò@J3¶ZÙ7†~öKWâõØ‘Ìl +Í_+ ÷Bõf…P³øÞÔËfå®'•nwÂQf_
+àì¢ÂIózí)7*2—÷É“¬Ó0ámxwo*òˆÚhÏ4Mv—ÿp¬zTeg¨x^÷àPSÚÌ©°ôLÅ[*Ô›Ä]åÓ§³×®t|Yë–a¸ÁÀx7¾÷椆n=_?èì+_›n“uTÈÒIn´dÛï†uó3G‚¿¾9£„“7Ò©-®:zøs‘Ú»è²ùF{­©ùù¸M¶ÔÏy=ÉßJ¾5ÎHÙºbŸWÞv“Â}Ó¯xÕª±]Št(÷¡¶DôC/5ìê5%ÎØ"fUc 6sýX*æêq~2ŃRþ8…! +dmÉ —7ãÙ`;lBmÙ¯±e¾}lâMh!i¾ "*Ì´]ÿåsÍ2U˜; ‘ŸSÌÏ|Øàºu{'%Žß²?2ãþêˆPŒVóhkk¿xï[gØÿP®¸¥ ™×¶©QTí4—öµÿæÞÈBJmOuù=ÑS£þý8 ÎöK=‚ï9¹>Ô£Õ¹V¿/©ˆ% —ÓR”Ã>´{úù¯ºfµŠ6Êèb>•
+¯¨|æq(­)…·|ªD÷ù¹]ù1µDï’å¶Ã)üÅÂÑÑ·‚=wjöÚ`›·+×9W82ƒêò™;cèᬛ;ÕôF­~Ö+D=±zú×.šÃ™Ò6[Z/|òïLZ1?×Ða¾óÀŒå®Ì‚HäˆbŸŒûÙˆŠmƒI¦}&ØäU·Ñqr•ú­BYÔCê§=Ѷk*7©(U‘ju®ý›?SÉõ}öA‰âSxE-7©îà 2
+-[oA7Âôùœ£Òzãë3°ÍBOïdÚða_רád{{×°º1k”8ófX²ÊëO/„Úý_£Ô÷1>Ñší°-w݃7ºwe+9k;*’T9òo®‡LÛ$T‡oÒL—÷|¼ ¤{h\K—%̆ßyg5JÏ8¯ªŸJd¸ÔŽ:«Ï)weÉ4í™.,Ìц–‡b"ñŠUMbµT+™„ÖvC톋§¼·}„Ôk|gM÷óû ä˜ëꦋq/û„…'‡=òJ„J‡Ç^­ ~ÍWWÐ>Y™‡;¡tA'å¥B3¹lY×ozü²b•Awüá³ZÊu€B‹\ªM|Ëk
+WÓ{úë³éGMû>~DÈWÃnâûµÅ“…Ê(½/ײŸ>[h>#Ývr¨4æ´Yimžc×ï$¦ú®v½GÃÌ
+endstream
+endobj
+2895 0 obj <<
+/Type /FontDescriptor
+/FontName /ZVAJXY+CMBX7
+/Flags 4
+/FontBBox [-55 -250 1289 751]
+/Ascent 694
+/CapHeight 686
+/Descent -194
+/ItalicAngle 0
+/StemV 127
+/XHeight 444
+/CharSet (/D/F/N/R)
+/FontFile 2894 0 R
+>> endobj
+2896 0 obj <<
+/Length1 840
+/Length2 2153
+/Length3 0
+/Length 2721
+/Filter /FlateDecode
+>>
+stream
+xÚ­U{<Óín¢b©DÔWNIìÀF4[¼’³Z 1Ûc6fs¬H”B…YMI†äPè€"‰œŠB&•aH$’ûz¿ÞŸçŸçºïë¾ïësÝÏçó¨)Û;icÈtOЂNcj#th
+:pI55,$2)tŽÈÑ
+‰HlˆLÐ_؃D¤Ntd†é
+˜ÆŽ`ç õ÷b¦í‰Ó9,
+¸Àuàp„(<ÝÜ~·—F¢“)4o
+ †`¨P3L‡Fg
+K
+f‹3fgÈ®_Š|÷ SÅÞ8¿O6Þä:­•ªÂò·EÊy*9~$ö"Ѫv¥aÚOå¶Wë&×pª5y}u
+L¯™%
+DÒÑï‚Ñ1!¾»ZçGF'õ~®òÑV‰\êR-\Ýäe/¿Éõ=ÌÉj/wŒ}“ÄÁ¯F¾Ãßؘ̈́ëɳ©-Êëðƒ™|ÅY #‚¹ã±õÁb¨Õª/·Ô(Ò9Éq%OõDLJ”¹±³pÀSÖgÖÒrôÅ™ ÙMS¥š²å‹÷õñ{2fäóƒ«ÂJ’¾¹§’hI–C1)’jQrù³x;[^gu‚È°ŠYÝÁ2œ¿iq~)g£ šŸ¼ëDuôV;™S‡ìs—þ
+½ždšã³SßêÒûqðnÙƒŽ«8.ç\d«µ/5Ì™^’4ä¼ hC”^ª‡ûG×FD3¦\¾èu4\{›€ÇðØIš@üH Ä·„‘pýŽyü‹ñÌi{]ï6k‰7¡„ºsÓ÷`<ýsÛw«wyìß%·ñAY|ì«©¼.Š¢u«ãåDïUjG”‡A&Åp<…m¶I¥?+ts¨âÄ<sÄ@ª
+a&&ERÇ]/ˆøXÕ=•¼5銣ÅMHžß©úhY÷ñôÓFC\ß9¹-ø Hmñk_Q÷¼ZÜú€I·”Û…{¢gj¾èu2Š¡p¬³ª³ÌÜCƒô¾†/X—“b˜ê‡gPIìÙ/Ífû>îkêYµ“Ó¿/)¨"®Yk¶äþÕY·‡!q «$í–(¿|ÚTÛȪX“S9±+z…¥U°°(¯2s¢P:1¾êMwÝìŠ"~É®¶Ue¼Œ(£@ËY°¦eÍymS1ÉÝZ¤“òÒ¯óö±bœ³goQVIñƒo÷¨¨Åܳ.²Ž+ó¥5g‡«0våg¾‘9Œ›k‹æ¼®ó¡Ô˜Ž9ªèsÐGšF=°êY
+¯=»rÔmN†'oΩÁœ¨ó6]ššLœNò3±´õj¬:aü–óM,‰D±óã͈F¯ûm‡]hWHž —'ðñd%nŸ‚úyEï¯ý|œ ±iwé¨ý͉T]êΩÝÇ å®U|CÝmyÑj¶\Qæ2л~ã½îüçé;iéÍßÉï¿Þ@…Á%üp}­ý‘Ȧ‹Æ ¨ðSÇ_®©º=öIŠõ¾®GÖÂVáÏ+m–ž[¨š7NÂõ"/ùXÒ Ñ±±7û"óE:eµÖ=;Ë+ßn™1Äó×Àöf…W,á–GŸ:W‡ëX‰íέ_çÍ• ª¥†ûOÍÝÚÄ‹ ¡–é*EzÊŸ*œq®9xž²¶£3§~12°
+endstream
+endobj
+2897 0 obj <<
+/Type /FontDescriptor
+/FontName /FAOYOQ+CMBXTI10
+/Flags 4
+/FontBBox [-29 -250 1274 754]
+/Ascent 694
+/CapHeight 686
+/Descent -194
+/ItalicAngle -14
+/StemV 107
+/XHeight 444
+/CharSet (/b/i/l/p/q/t/zero)
+/FontFile 2896 0 R
+>> endobj
+2898 0 obj <<
+/Length1 948
+/Length2 3439
+/Length3 0
+/Length 4056
+/Filter /FlateDecode
+>>
+stream
+xÚ­’g\S[³ÆQ¢ô^6‘")H/Ò{ïÒÁ$@ $”ÐEé"-ô¢" ‚¼‚‚”€ ] ”`¡#]±ÐÑ=÷œãõýzûËþÏ<kæY3KDÐÌRR½ŠÔÁbp’00LÐ4Ö´Ô„AJ+"¢étá°-7R€)(À
+Ž®"=PZÈOKúw, ÷Wèûw*é@6ˆ’MŠd‹,
+ î´,¹’ìäÿÃÔŸÅuÑh7ŸŸåÿÓ Ü|PèÐÿ•`}|qHÀ‹@úcþ”Ú"ÿrgŒD }þÌêãÜÐ(¸:Æ …P:¨$ …ƒ{înè
+ƒ³
+õý§îOù/†ýËä ù£B
+…‘…äïï?§?ºicàX
+ãHÉÈnþþn¡´ä×C&  0d€ ![†€1Xù@žJàŽõ§ý¹RY9
+
+ÉÅÆ'ÇsUŽÎ@ÅBÜçi¡ëA”rig‡ëèËÚ;K´E©LAÞ¥á‹ñ=ù™Ýz:1/ÛÖâ[‚‰´#l'³NøÔS‰ùž:Éò¥& ËI ðj,/UVÛ"êìÀ–ú¨8ˇ¦»ÍgKê䩹À,ÃYx‘¶Iœ„&¾
+ÓXЫÝjû¶èJœ]-ÕÛÇÆÆ5
+8¨öáÅkÒÝm–[* ú¬­uýö&M=C“½ ƒ+9¢z OfÔüŽ¼:¦V¿®u•3bëð0+ù¨'RLbûú ^žŒA/òÚYË¿ó¶ ­¸A‚|áQŽÚfd§qT?—»ù2”æHÚ,#QÆ´½òÞ°'cÓþèÔ£®þý¡ŽÌÍ+w ”7]/‡¿ÃÂú±éÔ
+ÚÚÅ«*o*éÌoj ?ÜWØf†­ ç
+’ª,:ÄÊt·›?èn÷òžˆk­úr/Õ€{Dê/1ÒÕÀJfî%¶­ þà…Qú„GOÙÁ]®Ÿ./, ßyÕ “±ÈÊ.:Q–Ÿr•QÊâ ãò\ÈfÙ:¡‡ÚYZJû¥¡ü{ŸqÅ¥»ê¹g<¢a¹Ó(Õä¬`UŽ’ïè]”h^êðg]ˆ”íç’´Í׶{­•Ÿû]H“½tZ‡WÏ?fÚà;ú„ÈÌáK o“Èpp€¤i=SOµúm²¶ W‰Ê2mߕتZϽþl(~L×±ü&­a–Ògó•ÖŒ6Öyo«ñrv u8MT_°&&/Ôb @ª¾ªÉÐh–'Šf¡•É!{ Ç£Hëµ¥žÇú:åˆM߆e¹GkQ[ð¦tU@à2¨‰®§ðÔ¦NÜà¨[ÛŒÇl\îÝò:ŸÂ§ì›+?ž9á±&ÅÑ Ia³ïÏÉÖåW Çó•¹"ò¢žÆ¸IM{'
+¤ê\Q˜«0°ÌãÿzšÝ‹»0°øyRjõ­šžÙnô‡åÇó•™qç3ø©dKé+/=%N‡~Z5ÜIÑÊ ?" ²ÌRxŸâ#õ¤
+ï?ÌaÚªe&ô(dLe&zžÚÙoÖ¼à9ÓJü÷ ÅìÕ¦æ^6#׋h«®â‚¦R;þ±OúSŸA§¢…sf K·ìN nc~(©¤µù> ha:˜WJÇ.* Šém¹3w{Eœ}ÿö2ƨº¸î ¶bÚÏ3/Zµ!1SkI—>,þh.Òü|šdOÄÑ‘*uÑÁßsEz¿DR²ˆKOÉbç%à¶uø¬¥Óš6Ë3´ˆ’¸â†ÉEs"¦I~¨n¨8k>çã™6J4·Zk_ðøФ©™ ÕÁ7'ÑÄçD”-“‹òQOä%Êø×ÍwšÇâè µ×‰’;@dNà¨P@’>lïYécžc¢þò™âäùÀ…*Óö\djX\á;N•±Ò«KöBXF®·F^>ßø>èþskûÛ”Å(”9NCô€i±t§ÆJ­Ð­PfÇÅÐ%1¨îJ€ÊcZ×ø¨-#'‘ü7®TÑ…1˜´™AÔçȵ§©M¸Z:7Wé$»­±•,Ø÷KO…;ºs¢å4lš“
+äízR¹ëY‹‰‰ÓÈï³E@Ã4½\R…NŒo::=è ¬tíáÉ"ñ=p€"èþ±ø›Go\, º½\Q>+%Á<Ïx=mÙJä³…sl¸l/Ê‘rÍUƒYÒ;²*/YÈ ßŸ'¾³Òží”iÍÎa¹v ·²6ÃwÜ;êɦófMy´x>¶8-ë_®ˆý<ÞIÊ&õ©ºäÎ9tÍ·”pí)ÍQ*æ¾ñkH9Ggõ¤Š äS‚X$h³»–}<rέ8Í” Ì&–ñõòž<¶¦X1s?µØ‚U³Ë¥µuU,¿„¿¡+ÃF@9c¢%ãBpÚÍ:R¸ýW{jþ\.}EÀüV‰iÊXc;ÕØtEP­Fom”tâÃþ]ãëu¤›fpjšˆ/ëxa^ªºé04Ñ7 FL€<ñó Á錊c VìÒzcBvìÉOb6˜efí¾¤4P¼š ÚØÏ®K|ÅUW/|áÁy‚Lc†|丂¹þÖ-JÚiJBʹ{Ð Qž9tÄ»:ÐO¸`¼‹åNgýÁ7![Ûé¦ÑövŠÚwtY‹dzꮤà:g‹ˆ0Ïäbµ¤è¯,·­aÅ·,y$cG¿0ö²ŠrjW›Ï*`u¦f
+œ710™r|ÓßÔvæ&÷A§W¬æ!)Gt¿þÓÈ}9ﶄ–9Öã ŸsÞq–ì)¹Í'Š]×âÆø­®Æh8û¿
+ðtužm—FËMl«¡š¥òò]Ò3ðž £ä0å`Z» ˆ›A¥$,M NÄ\6&ê¹ôõ¬7[Iõ”÷ùßóÆì¾Éòô–kÐöiLGÀî)›{í},XƼXÔg
+endstream
+endobj
+2899 0 obj <<
+/Type /FontDescriptor
+/FontName /KRVUOQ+CMCSC10
+/Flags 4
+/FontBBox [14 -250 1077 750]
+/Ascent 514
+/CapHeight 683
+/Descent 0
+/ItalicAngle 0
+/StemV 72
+/XHeight 431
+/CharSet (/C/K/N/a/d/e/i/n/o/r/s/t/v/w/y)
+/FontFile 2898 0 R
+>> endobj
+2900 0 obj <<
+/Length1 1296
+/Length2 3183
+/Length3 0
+/Length 3906
+/Filter /FlateDecode
+>>
+stream
+xÚ­”y<”ûÇÉ>¢BÖðØë Æ–-Œ¬‰²$eš c†1Œ-[Ù%[ˆ
+Ù÷²¯]K‹„Š2(Ù%ÙŠÄor»]uÿý½žžïyŸó9Ÿ×9ßç²°’ÕEá/¡áxQ"QôÌ l!
+
+ãíþ'5""°¤.΋þa¼à_4ÊCDº
+ƒs Ê0
+û∗0Îοˆ²ê~Bü‡)ì‹»cPÿì—"züÿÙÖ MüCJYé7²Ï–²Âod¿šâ/²wãöË)ÿŽöëA~Gû)®‘h ócý{#øET~‘¿;íCJ™'ü(:±(í‹ï¯€BûµT~¢½6ûÅ”÷ƒßÔÿ ûä({ó@иÿ6RûIþ[¤J)òòvwßû¡0^X„ßüïm?qï Ud¡j”»
+»ÿ­ƒD~ÝôðÜÒR﮿aQ<fØôŽ8g{&×ä" Ëì’ùx–ñM¤ “èðP½Ö²yy°AZ`Q¹× Ù`ŒÇ)·AìM§©²mYœ©‹5µ¿4âX’1>}Óß\”WüÎત¥¾ùùZŸ3ç‘·òZ…A3J/¼Ùôš¾Ê|­\@游Ù¬¿½K:a–´±"M·S·œtuý2[ywŸUè¬Wiu0²Hõñj>< Øü˜êç0Û¸©Çn¦:ôÕE)‹º‰Tgé£Î¸",›¿
+Ç›a­z#®kQn¶á‘þ<e»…ÔÌæú­DÞ¢„;s“0]ëÊKR…O¼yÐ ejõŒï'h§ur¤ËëÜ«4!pK°EC±Cví}Ú³ñµdÙDÅ5;€Á+¨öQëúè”Hq8œ©ü!™ÿ%¯ìº¨d“LOR`‘¡§l‹årT­ôÈÍ»¾·²Jíâ.ºl¿Ywhy²¡¤}‘ô´`ÓÄñØpËr·‡D‹Ãþñ^>³P·ïøÐáŽÛ]OØ›êÊìB!÷¯‡ÿ•«×a©çrN|ÌuºU§'†çCýÂÓ øáW³Í©wÒ¾ì:ýÍZ!ßöldµ0>í2»¢[™ú%µ#?î™"OÄ[‚ŠCÝǸ°qß »î¾Ýì8’[Ø¿d±WìdjTup¨\ú¼xHä¼Ç|y5 ¶
+sMynWŤËÁÒ–Uµ iõÙv@†.Ô ýD=(BýÓýæ{|îSE£Lk^ïÅGK¯3Ý+÷Üa­r­ñš©—ç*ãɈjmý²ˆãM™¸êÿ~ãÁÝ//c4÷‡ã™ÛcùƒYFù´­²í°“z³Íç¶Rùq¯¿çeæ³(*϶ÇËèï„• ƒ5@YÜ<,ØÑëPµH¥¬Qj3Ffòp.í´6DƒcÐ4Uó[=ß”©UPmæj1’$}UÌ–U¾~…ëÛæÀûojqŽŒNJ “²‡¹Î }®på°ì†o0*gl-$²ˆ`·­¬Ki¼Î‰Üõa_zóÍ‹v×ò;ᕈق6•bÚÄÍÞî*]½þµ©Oúžqa‡ïïÞö1¸È=¢æ]q“g“Äk·êxìP#V·nà¾ø–MPË™‰džW‹½]›rŠ5G*ÈùÌ\MøtMÉâ’í¤R¥¡\77ÛIí—‚N‘Yç.àóèš8èî.LJçæœ_7ó™“Ô'%¶mv„;ª¥}45Ö›N:ê’˜¢SÃÞ¾ÅÆпæ/üüúL‘z—$Kµ³°ÝØ;µ Ýï#MÑY_‹K·­OÝNŸ?—ÎæêcX»0g¼Ý¹BO¥z&úBsØÝY÷!‹çøl»b—Ä¬ü,¸þé AÙÇõyTôk¨¿ÇVvª=†¶¶9…ܹûáµÃTXÙ@sÁxÔìƒ>#£hp~…Ã\níòGž·\\°¹³™‰‚>ó#¢hº•‰Ã( ,˜)~¾À—K¹‚D»˪6jc0"´«nÈû¸æÖ<¥69w"!—–Ú_ôô%Cæ)…ÜÂtGÎ74nU*Ý™¼ãZ “`aM®þÊŠ¸ 3âûXIÖ¥Ô£ ×Ò›í¬ôYÏœ7
+6&A7$Ð!Oÿ:(ýElcA,·¤žä‘úYÌ1Â&Óª»²%_g”ÉS²;I?ÿÜ u!©DÜU§Ùõîuá‚ Â7ú
+¼Cå9Iãí)zø›Ë\-xm½öŽèðëçÖvº§ÉùÐ0 ëøcn­ÍËú.¢nI0ëá ÉÑ`¶7# ’#O°&¡¿ý¸s»jé廥¯ObJ‰˜¯Õ¹˜ÒØTüÆxz(ÕCW¶ìfÇÀC¾ùÆ#O®ðÖ±®A÷aaí^­k¸©‹Ëb²]ênPñ'ø¤úÚB%Õ‰[<ìò[L:úJ<Ë܆ü,/‡æjË“B¾0©í¢ÍW)k%m÷šÓ£gȤ{ì™IÏgÆ3‚ ‹Ì‘‹ÂMµ,ºO{¡.Í'öÎNümTâªßð‡`­VZ/scÎ2J`ý8”#äŽ^K¹"3®Qåõ~tÐ
+”<‹læ\Ž¹‹Šjfküæ„ô¾¼B2¼£aÈc€î9ª><ÒùB}—BÖ‘| šÐ~¸œöåÚnÖÒù”-úš‰E÷ CýV|£TýÛÆšCÙtG<?:~eMè“ÖU9*À]ˆnœ¤y¦Èül©lzÇ«9ÿK²4ºzƱkje};NH?¾Z’Y\cXÑ‘úLH£<–4¡?gTìLÎy{ºGVý%h¹=°u’£¹„šÊ~ç’l£¸ÞCëð…3#M®/¤é©åͳ·ú\c©2JñÄX‰“Ñeb9ÎÅÃ54ÝXÿª(I­×`Emçž‹å—l£…Bg®Ú> +Ë}Þ@,?ÑË}ï‘婶Þ~]wƒE1¶>µL“Û^ 롉c2RS†y…"ÛDnñ®­Ü|+ ɱ/fær†·Ê/pj4 qÌø³ññuIéÝþê1Hw2 ¥îD°þ.熌!F
+Ÿ‰ñ=éá?³~WN6S/3˜'*·Ùf‹ø°Ý¿¾#Ô˜%EýJ6U^<²?ÙVôpÐ;ï)Ë
+­¸õezo¼/3çq{ ´ñòv®©V'ZFÞ[ö}Ð¥^ýˆZÆC¼ ‡¨RºƒY&¬Sÿ¸Ԏ|Ò_:qß‘÷Tz@l}øEO ºµSL‹Ìnª~Uã¤è¿hZ7èbD¾ä”ün©ÿéhÀ7)A´O‘¸kù£ÊŒÉó·|²½ý
+é–%êýCÑrî4ª4
+øoÓ<=¸¸Ú$uDÂ&r¹ üþ«bRO{„Äîå2MjÁbvíúQe)É
+3!‡-𧾻U8S=]«FØP°þ´Î“2¹:bÃÁÇ'ÇUþ‚_Vì¡}]®Ç&+t}è¬nnëÛ2ÕD¼‚B7c_•Ô*"¤Ïz¡G–íTÏ™;óf›Šû\‰6HÎEpk AS¦­Õ¾íP«\KJ(xðÀ‰Jsƹ4—ÍÿÑÉÖ7
+endstream
+endobj
+2901 0 obj <<
+/Type /FontDescriptor
+/FontName /UTSOJX+CMEX10
+/Flags 4
+/FontBBox [-24 -2960 1454 772]
+/Ascent 40
+/CapHeight 0
+/Descent -600
+/ItalicAngle 0
+/StemV 47
+/XHeight 431
+/CharSet (/braceex/braceleftbigg/braceleftbt/braceleftmid/bracelefttp/bracketleftbt/bracketleftex/bracketlefttp/bracketrightbt/bracketrightex/bracketrighttp/ceilingleftbig/ceilingrightbig/floorleftBig/floorleftbig/floorleftbigg/floorrightBig/floorrightbig/floorrightbigg/parenleftbigg/parenrightbigg/summationdisplay)
+/FontFile 2900 0 R
+>> endobj
+2902 0 obj <<
+/Length1 1248
+/Length2 7610
+/Length3 0
+/Length 8383
+/Filter /FlateDecode
+>>
+stream
+xÚ­”eXÛ¶®ƒ»‚ÓX°@ãÐXp .Á!¤iÜ%¸»»CîÜÝÝ‚ww—ÃZûìu÷ù{ŸúSïÐoŽ9ª¨É”… ¬¾BÄ­,íY˜Xx
+ [9¹2²±Y9^÷ˆ™ûõr™ÝÿŸ@°ƒ­-ÄÒþïÃëöÿ› M^?Ä FžŸ±óú™&ÖzˆeÁÑÙ'çû ·úW'ó2,óbOÛÖ©@Hϱü±LMŠ1Ž>• 9V j…Üú\•þsX}h¸t™)Ê'àm]èþŒÞN ‹ôày²Më:†“Ê«•o­på2{,\YG!°…³3Ofž#«ó(I”[ È:M2ñÏ»+QC÷‡VÙVó¹ýï´S®pžç :Oš-¡%ƒB3da~%ó?"1Ó9® ³¤š‘Í«I+ó sNþ‘ xCÈOž¬.ÐPÿIöqc‚´AžŒ:)åãž ©&¥zMT”‰ .$2ç—È%€‚Ttj¶YXvnV(ú`›UŒ³òDZX×ÅS+}¹{¢>§
+‡½ÔyxX¾y %h;»’¿Á/ƒVcàNýø–á€n˜™
+–Xý°Ö¼åNQòïUІoK–%¿zé{6‚òNi„ñŒ
+_Õë}û-æ
+{‘ó;Ưs?3&ûžN½áü<q~!± ¥ôJ å“ÜÈ‹±,A7-P”íljô@VjéEƒÊŠC–=½žöH-Pÿ%ÏÒOúü :úTÅRá±<oq)šòêpº˜-¼
+sQ¦ ‹Í%8b>ÕJ$8à z´:t€…$Ón7hH[Àð£”c× è/}mh> G™0
+v´iJ¶c5€ÁÈß·\T—VzáZ‚À~òÒ;øÓ!S¢§|ì:‹mù¤xu8Ñ âo¿0{Fîa”Ú¯iζÆÃWj,£†?9‡"ž7‹á…P‹`gá<³ÞÃ`%B½C‹·Ðö9¾ØÇ,$Ùe2d­]º«‹#4‰ì÷<뀩@ÞÑ£’
+®ðé –YÄ¥­¿ÝoLÐù ³BÇxßÕQs©áã_í€UÆ2å5?!S9ËåDW¢ÂÍiìÇd{X¢@y¼·«–Œù%bŸXÙsñ´(ßÞIŠaÈ4-Èu"jVøYýl’ñy¦Þ<#‡¶É§}I“Y
+íe|ÞÆ#ûì鄱Òí›(¸8À—v‡÷f“\î KºmR†x4ÙÄ¢»ž‚ç½þ‘ªd:’ˇR2§P*¬Þƒ«ù&©Ü*P±öݽ×¹Q炶K#+µ?†Ðõà/¯=ŸÿÍ(0Oœ2 “8µßÒ”7á[Bï<©¦º‘’+|÷+««ÌBÖ^õý\¢²Ùü¶„ÐQ4·‹c`/õÃÃ÷¨*êùáð<þUÑÁªÔ¯£ºá™fw÷ß ú['¼êÖJ‹éϲ¸à‡>¡ö5{M¸`‚¿¨¤žr^Ø •ž¥nª™¸±oÅÎ"<^qé,wÊÒc^ C]
+ã˜XýÕ8h¤5ÛR•˜›¦ Ã|ЖýFtSÚßD- §ªÇ̘ô´­:¢—9oÂbw·ÝˆŸ7–ó‹]ç ô*ß<³‚dtÑËá¬C\t„á3ñ:‰™duJ-†49ï/U3AŸ®Ì¹¸¨b~°lVc[^6ÈîÐ1ó0Û;bÄ÷¡.¶´²Ñ(ô+yK-|íqV4߆—PWç#&ÃÔ \ÿ2×ïÓ¾K¬$HšÁåäs™Ü@ÏU˜MEûA'ŽKŠ~C ¬öm GÍä3î ɬdÆØooàÝÇE*TAiW³›@)ÕêhËU– +µv°,Qªf¿‘öaÐÀtÈ;Ñ€n^±MÿYÎKÌwÈ)ºDÆγ9õ0aÚ—¡áÛË/ì¾1Ó8áÀôwÔó¸N”çÖ(ÊF6Z>+5gl™#ß”9 ’EW@îÏ–ÀoU_ë:Gå7x#åõ¦†×j@N‚úgc6«ûï´0”8%ß‚¦CÖWús{K¡]¯kGO4xsÂSxôÃûíp;i9©Ò8CÏÒš wÜÎýW®Æe‹â£€Äk5¾æЮúhÉòúcúaQ×–a–ó™åj¼ÅÏ_cŒÞ1«WåxëyË]H×]Î \…‘¹3>ô_7.Cö0 7ÊM1KIú‹Þö?ÍEAnV Òé´YcÔæ”õ˜2 Jd`í¬׈áäò‰ÚâíQð^æ³ÅeÓc8ÁD\)":®Â açyO`óógŒ•}Øù,ë\È›0-._UÖšcÈNh-“;F†{éx(Ásq±ü“rî‚FOjhTD`ê]Ïzî„Åaêè¸Ï´†0ã2
+¼)oVg!pוün
+*õ±5ÖT²šåÍ&½°«iבR䇧ä@R3*QnvB=„ÀwÄ/šAçß›/ü¨ãš8–
+fËèÓÅÝÕ 2Ö·J=ŒŸÝ0ÓŸÓvH ¬ŒLÅeJf‰—›æLU;ñÊAyô׶òøÀªz„S‰Íûì‹Yáü/‹³͘<–¾s·VfWv;ŒÞhòºÇtçÁ®HÍø/¢Ó»ko†=›†¡8i»Adìaé฀=ÃŒý± ·¦§ZâTgóeï°Éz –·ÓBë¤du/Yù ½qqóÝV»aÜ݇kÆåÙ'—ÙÇ•4‚Þ¬qòoקÄýjN6(ÝÜ·½)
+.›;+'4P~5T™ÈæCdÌl(P­h¶%çCa1sFcÓ ©9Ø_´Îüœ`¼Õ—qõe¸p&D'*z)xL°&¾¸³òa a„°š Â.›ŸñJ·žu°2¼0ªJ> (öuw ù…œÆ¼_ÙVäP—1ŸÀ(3Qðóäܤ¡š@-Õ„ÅÉá"×ff4ÖÞWŠ‹‚¶u¢l­v
+‚J"4Ðg¢© þF°¿ÐhÆu>¥‘»Så©1¤Ñ’dh&q4šnXã
+¥ÅSzšá]è½
+¡:_ä%-*Ýyù€,#Æ=Ç6¸Æ{“?„UWŸ_9dü¶0,pñR7Øô‹öº’¶ÚIéoú‡„$ ŠÂ·”5™¾¬O Wü%w±ò«ˆÎ³ì7:¾þžз{ NŠDþ furo]Z[’!ÝpÏ”í|;ö¡rÀÛ¦»Äå<À§æËï€'\ùˆ#Ž
+Z ëû"LÕÇFdO;Ÿ¬b†Y$ÑÙΙ¥³C0B¾,ËKòéƒî{|ƒá ¨qQîšO)"2/PËìY\à¥Ñ0L)ИÒ×úùÃÏÔ3ó-UQ òƒÑÝ«3à‚ï{œü?
+‹—Üvºéæ—ÁÛÊ•µ2‡ºµú6tgÑ!V¶:ÕR£'Ú©
+½ûܸóÖ
+nÑÞE¢‰Ã „ Jv¨–3IZ¾‹ØÓ¥yu´hJ)ý…g3SÁ«•oÇdÓXª¦Ú˜xãT"©¬Ì²…R{@Í[ò"\Øhåø@í§(ï– xœ¾Í5ð#më!KíœéôÂ]û@–  áË¥ÖÙ­…ƒ+!ŸàŒª³£z;Ú µkŒ;V2k1ˆ!oP~ ZíÈ2ô§ll÷k‰¤Çd‡Ù[ê.`BϺ‚‚yAaIœ8L#´ÿ>ÒãªèãÒ–Ä•sYùŽ0aÿE´ü£¡zÏ BoóÜKü
+öXq#Ýz <’] fHO9¨;H3t¾41i3JQN*da-#¦aW²V+ID§TyiŽ‚5üÊ©;ó>fÝ­Ê£2MDѳNWK9 ( §¸×¹$¬øô&áðÞ‹°©GAãC/ÕŠJ>@C_ŒRuŠk²ÿelq®0Ç@¾"YˆNŽ©ÓÑm³¿ò½ J•Ia£ÔØ’L¥'BFýÀ…よsÝb¤I 5îÛ}‘ß=ý1ðkâ¬ó
+V§‚F’Æè»â•ïp¸ô±R¶÷†ðeÏ1*?ï+»–g¹Š°”ªˆ:¨v®£8BŸOªd«s…£-¯–r¡æK:¦3±*m’F·É'Ó;ïD h¨ N7/hMСKs„·zø_¡«Z_Ä+ÁMeÉP†xK:ÍÎì†iÒ+~×’*©ÆÛ§\œAoZZý¤à™ êPù¹1»éÂI9MùǦí~ÖO?èÏšÔ ÉLžÕˮԄAC„™D“È3€C©ÃYþš·cCðˆ¼ðSeÁbéÆxáÛ¿vŒD{–BçŠ>~¹˜£˜ ¾† çòïáõý|£èš[¯"
+ÝÖ
+þ¾MÛà, uU}g:)Ù t¼kM.ÏtHRQ²´”Ñæb VyÇ܆§©B;g™K Ú+Þ9u(ŸÕÔýƒµ¶6¥ö\…<]-A™ Ë¥yß.Ü#äêk jwBñ6ÔmY%:Òµœybz…]M‡À˲Ś>O,èð½„÷3f¡ç;LmŠ–m“¡4MÌ7yz3¼(Û9Þ‰G¤Q ÇmŽ­üHŠ´ÒG õâi׊¢­˜ÀQækTKߊ1_h~ErkƒIºzÞ‰1rc[/®HW†â½\Ð_¨¡Y¯6#5ê[L£(Õm¯JÜ_:d[w6¸ÕAµK¸ –_g„þñrØÿ‹qcb¯Ñ–}>ü ‡ú’•½Ðq3@:h×Bµ’Š+h§ÖÎõWâ!ñØ>±;˜Y ×ؾå3àpBU`¶ù.c#Ž18í–Íæ@ÐPèJOx<éÄùImhâçmá꧜ }aÈ×Vµ _*¢b±ÌæçUŒö$BnÇ—43ŠË“$…‚Û;·^4óØó窋[õ_$©¥gjÖô*À†5•W™atáBŽÌ_4ý1V2ñ‘;–ö[ø 8´@+Ëã½ø¸³1ÃʼnÀ½7½Yp4âöwêª(yNõٜ⚱Á>{,k¬ð=êOt±e-_¥X„IÓ¡ülC„fào:è‡a™c©æ·fq¡kýˆÄžBqØe4{ ðA}(ù  5¬òΩSj`ÆÐOÄ£9‰ÆܯLN)oŠ²ãÓ=I«Žý8ötNî`²{ö"3ˆŠú5Y>2>‡ü>‰VWò#Í©$oÕp’&Nµ¹ŽŸƒrRËÛ£4oý¢g
+[ë]³£­ŠÊS7ÜÀÕz _sà^5wMÐïz‹WUúáÙ$y{‚7Ô¿d¢[ܵxTôÛô(ÌG8^¹µòÀŽóMgøÛ[-†ÑkÁð )^žpðÝ…™Ñ
+U¾+tu‚àÖ{)]K5¾/¶ª]z5¥$Ý,Pa5›Sìñ§ow«¶žòäÓÐFoß2J†+cÊL÷i– ntBíLÜ3LlfX ’þ
+[ƒÃ/÷íº¬ü‡Z°ôÎ:ÑGóé%GJ—°¦%y®_rC°±nMï-žuQ£ó1ûEꢄ»{â‹OÈ9Ënüj*xÔƒõ6£YA¶ ^T8«öäoL1O¢@#Skm n±|«ÎO‚—
+&M]mþ³Œ~À£uâI4
+ºÏìE!êó••w”|'Â"ú†…hùuWƒšd7aºƒû·ÖIÙ¼maj—†µàG#Š…_˜3±zûN;+ºj«MóÚH1?=·¾à}¦ öì%kñ\ˆ š‘¦0ÝHMШì€Õ4B…m~ŽÈøò•UÌŸúÊÊcéþôykŠ«œÇG95£ŸjúŠÙl)· ~ßò(«îWη‡ –÷„5?‰½Ùy#Ñ°ë<›÷³Ø")¦íĵ×ZjË3ºâ‡g"àRX¿âäp_’ÝÕ|'k¬g)¶¥)4IgÖ øýEpfdº‰üs$½`ƒËáq 2u›½Wz_YÞ-\zW€±XþT›|˜ç‰¿’–Èò°xuîÀPEå6â«’®r’°®Ãúžp8³=ã!:bå0{ïFï뙂љSRÊ¥äí¨pÅ ίö
+º6Ü/[¾Ë=d* §"oÏjó¶%RlFtD‡TÄ~“íÔIN~N$tù„ó»ý JbòqЧmË>Oeðº`É¥Ëô ˆ1(Ôüáú‰íìj1HíØYåXßì¶=FÖ÷a-iWñ¸a¦žók3¨°µ£t¡\Y¤¤vÃéOèÖºMBo™§Õ°+Úd“D=IŇÀ12ñ³ò­,èüêaI1/Ãg&µ¨—ôöæh(XKêjèÛñZPùô‹Äpö³™ð‡-—†L~,·ŸZ]Ú`u ú™,ŸÎŒ¥4l¼î$§µjîèœë˜%õ†Ú&æ.Ú«$E‹ÎòŠG:ãýÐV­Àw÷ ‘¯=ˇßwvS†©ib‚‡›0«‰ÜtÌ¿™iíãÛ;²ež1–8?$˜*9T“P3z[<¨iäM/ƒ[ZLÇ?ÌoCrªîо] 54·láØlÇè?˜ë
+a—9H]f›½îyP™¾;zü$g ~’LîáµÁn«}y„Åá#|Òïy‰˜ñ:ü&- "ë8MŽ !ZÂ(`¯àìËM*
+0â6M¢ym«0öY${'údQ¤ïìf„iïˆÎM_n z®ÃUx¦Áøvòu{ueb1Û,Þ”°òÿ ;Õ”\{Šç5xiŠi÷×ñM
+Ï—’¡F‹2reEÀ³TsHî/ù­@dÓg÷»z!@ù
+endstream
+endobj
+2903 0 obj <<
+/Type /FontDescriptor
+/FontName /QFSTYE+CMMI10
+/Flags 4
+/FontBBox [-32 -250 1048 750]
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/ItalicAngle -14
+/StemV 72
+/XHeight 431
+/CharSet (/B/C/E/F/G/K/L/P/R/X/Y/Z/a/alpha/b/beta/c/comma/delta/epsilon1/gamma/greater/i/j/less/m/n/period/r/s/slash/x/y)
+/FontFile 2902 0 R
+>> endobj
+2904 0 obj <<
+/Length1 789
+/Length2 1905
+/Length3 0
+/Length 2458
+/Filter /FlateDecode
+>>
+stream
+xÚ­’y<”kÇ‘Š±$„¢<¶ef0–±Ž}0Ö±†Œ™Ç˜ŒÆ•å$"»LˆÔ‰9r&»æ8Ô§ÐèìK¢¼)‘l¡ÕrÞ¡÷|Îûvþ}?Ï?÷ïº~÷uïßý¨(¸zh¡Ô`ЖJ¡kÁµáHÀ
+ƒA#
+€ÁÑCÁpî <Ž xPñ$§  ÈdÀ}gGàF´  à O‚A"‰î ¡)!TÀà{™ñW+¤Eq¡
+ÐAè8 qGé À98@¢ÀX
+Ó Ä¿%\€ÒþKÐ3»òŸ÷µ´¤ÆžÓ5
+¥^Z+Ø8Ç•ÈPZ(³EùÉútå6‹â•DH;P¹~r 8ð¯m©Ø؈AÝðPþÕ*–¹„VUy“oÝ×éƛƓ~ËÔwäع4I~Y(”-ÆÈÅy4DjDb¯¯v‚SŽ“Ò€ëel©7ã-Š7¾^œ½:Á»¥`¿¨mï»Ejïu÷ æÓœ2KµÄ’§›ßübç¤Ä¦dsxtxXbnŽMÉî~)VØñä9àÙ‘¦k{ÝOëx:6 ›ë.8¶Î6Té½`(üp»Ï<fpf¥
+Ææ²
+ìøË9c‘“F®Æ ¬ô5LæDÎD^í´¼9_P`.'jºÍôŸ¦âL^ö´«áMtN«‡H¹1dÚ°¾sqÏ&¿Æö3%Êþ Â'Y¨c5²ðq$´²ƒ^O;µ€¸v¯9[3]ÁFý~Œñë!F9 ê,°ŒVÓœQˆ oÝ7Ó¬.kàЭtàçüOŽ]|\Ô<GÍßèç«xÀÏÛ¯æÒºàΆ[î·ëÉÕ ”’~ë­/¾qüƒ¬uù Wû¡¾}öW&*²×ë¬Æ‚> GG*ÈÉK|Â6úeÖf)f2‚/ÖÍâû⩃¸ƒ.–íbúµ -‘˜ÄD’ïøÖpÐÞQ—?±g4\[K¤‘³…|Eò>_Wœ¼õ˜rwiÌ
+®´"‘ç1©ƒÕ
+3anÈ£yëϳÓç•egÓ²˜göt´Îï•Wø™
+Kûæž8²iªaµdÊ$²•c®õ’;Rð„p<]kÿ¨íj}ë‘6v<®õHß‹g¢cò¹ íUZë½
+endstream
+endobj
+2905 0 obj <<
+/Type /FontDescriptor
+/FontName /BMVTZQ+CMMI5
+/Flags 4
+/FontBBox [37 -250 1349 750]
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/ItalicAngle -14
+/StemV 90
+/XHeight 431
+/CharSet (/b/g/r/w)
+/FontFile 2904 0 R
+>> endobj
+2906 0 obj <<
+/Length1 958
+/Length2 4005
+/Length3 0
+/Length 4639
+/Filter /FlateDecode
+>>
+stream
+xÚ­“y8”mûÇm!;! Ý‘-1c,c)²“}ßEc0Œ™1c‰ì&Ú1JÖ¬…ì[¶ìÙ·ìe'•-[xÕó{–÷yÿý÷õÇõ9¿çu^ßã<¯›ÿ²±¨’#ú\‰Š‹‰Ë*ººZPàt Óðó«`á8¥ê€ƒËâ²²ÒÀ-/$
+é 8Âh@zèÓÛà§^þ?lý»¸º©çàþ«ü¯FýìàŽ@úþ_Úã…ƒc]´#‹úwª9üoºpG„—û¿U-œSB9#ဨ¸¤Xò8ÂS‡; p0ÀÉé ÿ‡£ÿíä´}¿}€Œ¬ ¬tÌDþìoÍÀ™øbà
+"%ø‹”#Àñ§†Ab(4îôpÚ˜»€KókªÒP
+P
+ï* ù]¯Ãõòö³è kѹ´å¤MRoòý‹ð´Ú÷݃ÈIzz³“ávýn›QóÌŠkí—]Æâ
+T¥Ëz$W£V(†;ð†ºn{‰ÜJq0[MfÝ(ÔÔäTNvÑQV/%ùjjÖ¬üZ Š³˜Kw’}<wpØúÝúÄ»˜éÞ™,Y<nëGñ–o"ù#骹|秊ÀKZ¢‚9+©
+ñ~ìîôô”
+z®DcÛŽú~á÷,P¯á‘ÈȬ˜8’ÔáqÓâ§ÌU†.í’Âu¢‘!T͉R>ŽU¿Œ$’ÿç2–s}E•²´µÂ“¼µ…_Z3Z%úâü,—-8¬öwœ)0nsì>R™)PiYšŒ?§Ús¬"˜|t= ^ˆa´yr Ú{»¦E=L…ϳèý©{‘ÕÒ27~=Œµf¹…JEî(yWŒ3_EÞ3 •¨6Á¯=Ó™â%£ý±3”¹Y±¶]Ég§'’“ÚJ=-‡¥þ¶+Õ(Ízm‰¨—⯸µr«Mѯ´@xûä–g¦)ØD6â
+ë^Üpy³à«¯‚àéiW¶Ä¢þGg.¶JþÐI óù`ÓÎÖü‰ùaÙAß Ü0RÓ?#=ÂveëN¥•ÅˆÕC÷# …ýWÉÊø¿,“}¸†ß.Ëyž<u~Vú¼–é­:¸ß³“©…›\âh¡£™hSƽØ3•¾úL^žõ˜*»T¬í=‹ð ÂÒ²<Ëã›:¾Ä‡1Q‰‘šJ'»Ò Î…:¼ŒÊì)¢_ä»ÔíSÁ!ØîrnÕ}C›–•aôU¤ã,Mqßí$wqâ~Ù-^»é¯b`BbÁÈ·<HâÖ~¶ª‹ ÈŒG`fÒÙé¡kÅ÷PÄ㲡T+NqFßg"©YKe]ÌDGNoÛí ]ɨÃgNøˆJMä×¥Ì.òOȤ5®t}rýŽáM6Ü(¡$³OÛtUzµ'6!ráÓOž”zi©E±Ê›mýÒ¼ÐOç µ‰ì†uÙ™PÃiÌË7ÛrXP‹ç%xYåÞ#sÚ{Չؓ
+¿ó~¬¾\&É®zæÊj¾X“Ôœ¼ß=ZùYE¡U':¯h\ÏAF_U>Ô¿Äo{š¨ƒÝ^¹¤6ÓùÓ•½#L0UΉ:‡2AÛÇyããJK²† —;žøÐKÖeåkÛSo!Q“ ’»Ú½oªîhTY'½§ª(³Î ѹåQ¨=d•x!~4œP}ѹ7®qï‡ßǾN›Í*ÐêÑ`Ÿ):µG÷«ÀýéZ…BF{3ŽWÒïŠ]•:Ú#ÃXÝPîw›E ñ+ßVeµ ’hqÍÙbK~ZñÖ˜CîÁˆu‚PvÝD5$îyÕÎIÿ¸eYe[XÖ|žð¸ D?Sù£µÇa‹»ÏbXå‡k9T{"¢É±Ìó½”âºW>zf^!\ªY9P"qÊ}Ÿñ*c¢Â¾é*m6ã—j®»É±îúûþ5Æ2hФòùhŒÕRŒïºÚgyÛ«½þßsÔ»îÖ°:¼Ó¨ef ò눎ƒH@©¿šŽÑ}‹•ÊNðª;ñá³4WË‘„u؈‚ÅòwÞµ•øig€î9™.JëC@–_ $~S]iƒ÷Á› ˜ôÄÌ– ]×±H¡ êÏŠ;/„0$:·_µ³^×ÒŸ ÷CCP‡£%Q 4F
+¡Lm
+WåVîŠ3µGeKŽ…çºËŠm»i¯ßñäε]–W†bÝ Ò‰wBÒt†ÉXå;
+ÄÄÉÌ݆œÝA»wv‡G†ÑZ>O×ë¾.J{Úo6?ad¢¤¹Ífþ¢oÎ2$,E¨‡uס.cÙ•­"x–†mNgç×û“wi9[%&è.ú,ÇUEç6t¹õ‡XH4ÏN,d—³íÇy BÔ98dËdh¹æñÛRe)žÁäÛ ¥1=‚áîÀók7ÊÞù®Mj¤X‰Ò>Hxº2°Ä7Ã~2|‚;oòE²F€3~%à¤)|—ÐrC“GU†Ãšv‰·IÊ^'mÒF‹õYš_Kì7*37¾`óÑË¥Oµ‰ib–Õ½­3âY|`ÊÏsÞ›«õÓÛ%¨ó6rž»Në`èg›¬ZÌï3/Ø4bkòœ]¡ûêDæ3—cƒõÕØ­Æh½Z,Û¢V¨-êþŒá3Š.#.—(,y¬+oI½PB êLB•õì÷°˜nI—ÚzÂ=1Ÿ—ò”ôÙù\…îru_`ØM=ÙþÌ›,¥\Æ\ä'Q|ëÚ#Á6?håµäÍby3QToÎHi$¾ôŒ4)&v\XÀAH©PÅÒvÄ@5…오{»Ø‘®èjugéàKüÙì'9XÅ» ®d{®p’ý·êdFä$‹ Šb×¼^
+üºÕ:{3PÐ\鶅íëù*·Þ°w"È
+P.UÆurƒ/¾*ŽÖyÀBÄ”¸Îïf¼cuîa½)Óš(%¤Ãœä%³ÈGûH²VÉÕ®Ù3Ï·VtW­ÒžˆS=£œ)VŸ1³ÎžYv„¾»-Ò:UÙe‡öz uIås§8·b0i ¾æöì€!^YâÞ*¬I×pñüâòµiÓkv š¡uŒòF«‰3Ý+1&”.9/ÙöÒ²8¹
+>õR'r<_S+‹º»sH97-O¢$OóÎ!LÍwÚLg¥vúôXÒÃ]70ž³DBMbk•ïÝ¥ÆòÄÒ1ëw`C—ù"µ7H·~Ñiæ׌‡+ExÜfÚ¸|F¹s9¦©4Ø£c.²š8}Ì{=GhÞJÏQåLkH
+øúúþ¢½W–ÂÏt¹ðë,âSÄ–{œ[oæ…v…žþ2DÇÿcÉRžP軎a6Úã*»·òÁj¸×à±ÙÑÎÆAû©Rä§T‰NƬC]Í0A_Âr:Q³(ñ8ü8²Òi4œž½{²¿•: :¼–»˜®v¢&éhšçÒÚŒ6eY¹VÍÊÄsP¶d\’“b¼}ÔÊü\ž¶¨td×0tÑóy6³“+);‹¢°—«žéËL&™ÇSçÃd„à"xoK·¾þ*~"j}tíüÛÀœ×›öª„¶\ºÄ’Í­ËÜæéœu×|L–ä2" ´&¡SƒÁ
+ÌæßiÕão<ŽÍ% i™ÔÁ½µ¢L ·.‘ÐZ:1ç +7ðt#¦h(}ÎÜ º%![ÆC«Ñ\scõõžðQʇ!œ&k_‰½E÷ßðÍ·3‚ö)Îd‹E!o…ì‡â©­6¹hôt/U'•Z–TÑlã’Ô¾©¯ ö>ñ°à˜è*~›‚¸ºDmH4d„³°Î›}…~f Á‡ÀQ Š`Ýh«Bo˜sW΋¿0PŸ²°ˆd&u‚¿¼;~Ñ× ¸¼N£MRí=œ¦ajÅîÔÄ,º[Qõ¸Šôòp±›…Ê™m|UżæA67„=s·àüçé6͹òyã,lqööëí¿P«GK)5´³[Wrcïµ’¾ÔAp*ÂS ‰èzk5y==õ“\A˜îJó\°‚!‡“Í6+õþ<,{©åÈ÷-g@àµÕµéº¤=w;Pè°&c)«æäýøG“u®$DZ¿Ñ÷,/ÎÜ J|YLè¢ó`Tì¬r}~ˆ©i|äPîË×9Ì“üÜ{ä×.½F»6ÚKÖ©1o•.Ý0³,à²Æt²Þ94ï—¦~— Ð 9_øÔC‚Ø=-£Fyr+Ÿ mO‘•ÅïðW<]XéÈ2kèmnQ’ãE$ŠÊEÒ#>—ï :adY¥µ€Ê9ŽÜéüÔ*Á‡Oœ6˜Šú“§¶†2ðÏÌêrž¼·++«Jk¡¤²8 Ç+M‰;0$Æ—¬wƘÃè‚“zºC£,¹•‡„Û6ݱTÃ.±Y]Ý×™g‘ó?ä.·8Ì›np¶ôHfæµ5µ-%·¬}æB1–Å%ýºó´0HDûFô
+endstream
+endobj
+2907 0 obj <<
+/Type /FontDescriptor
+/FontName /RZPZLV+CMMI7
+/Flags 4
+/FontBBox [0 -250 1171 750]
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/ItalicAngle -14
+/StemV 81
+/XHeight 431
+/CharSet (/C/Y/a/b/beta/comma/g/gamma/i/j/pi/r/w/x/y)
+/FontFile 2906 0 R
+>> endobj
+2908 0 obj <<
+/Length1 2146
+/Length2 15870
+/Length3 0
+/Length 17011
+/Filter /FlateDecode
+>>
+stream
+xÚ¬·eTL²¶»‡àîîîî.A7w îîîwwÜÝÁ=¸|<3çL2çýû-X¬}UWWÝ]U½{AN¬¤J/l
+4H
+JšÃ·0¶Ð 7”¤ˆ©@_«P˜VÚµ+`§ ÚS!L^â›Þ=F,ªI'!«Ê. ºÊ/ÁÓ²¢Päº÷Á‘¡L"sUG¢ÈU•1éÀœO!5Ùž¸â3—X“âaò®tmZįäú›%? Xi ,Šd–‹™.
+•Ñ”0žoÇD)ܲ‰~dÛþÞȉÎùÑzÔ:ĈmV¤X:ß32§Ñ=™‘n³Ôq…}áHì“Þ½\„2ô…}Jœà,÷Pž¬D¨_|ᑇø”Žr°ršädU° b„®vDb<j¶õt”æ¢TPå_fåÕÀ¼{ÈÑ6P&›B*¥UªÍ¾?’܃&ÙÍð¤1ósàhB¼ŒÔC˜øª¡ÊÄ‘° \]:i2È*;jǼ<yßÊϸ<ÛªéÖwæ|ÁL5…®ÈNR·™¿„!»ÐÌ´
+ìz&”¸Ü&d¦J·ÙAñö{Öp!1S<Ç~ë‰"%yp’Âv\Ëýß"%\^æŸÀ”J$E ñv}÷…ê6æ¼=8;á ‡
+,Å q
+{Æã;¦›ÒÜ$b%o|Ê ¦ä
+áN(d~qT”9AÏâZC¢};DýöMÆR„n=#õTÚu×ÏÕ*G0ˆËbˆÃÃW>6ÿn£)£ 8ÈLu:ËÚ[µÖ˜»H¥ô 1ûEDåïyjC±Ÿ/"m3ë
+Iªÿø[²ûҰͲ.µ&Õ0ò¾ÐžYÕ×±ºBÍÞ …¦>–)[2§âä
+XfcÏè|ýÝöP»
+Y¬|¨¤Å÷ëºtßæ™(8ÄË¢œºFèóH-üüï¡2¸ÚTB\eB7R˜'LjžáBV@i†/_l¢äƒ ÚÊx­D!juš„!p·ÑGÄ©øöîõ èZ&܇< ¡¼=êa»ÚÍ!—‘{`&O²YW’uïœà’’óðì¿&4ÁªÚ‡/W²åÙV‰ìÈ„C¼Ì,qä?NQ„êÝ)QÃÔD"'Ôy1sƒàÿ5´¬k8wÒZ$¬ß³)H½ð”×4){¤žœLaPÖI–ïø\“‰;]´ƒ_UÑß‚+
+ ±öz¿C• }"P^룗u"uÖý8Ó7‰á8þí
+QS
+]0ëÐ'›Ïsþ·UùŸŠŸ,ì %Í• <ã׿Z/:éÂj]½O›ð—í¬y…Å<rçöZ>·¿jü
+`Øi9¬eI¹cÞ °EÒŸJÄC ³ÈÎL­&”}Ù°Q ,%
+
+‘uR.tz¢¦Shq"‹4ðYc#šçSªûm*+±‡Bœò€”¿,|Ëûë¤/ §æÒ‹LW™pá®Cš‚çÇ~ðó|jÁ0$¹½ÓU1Ù¥Â;j;¾˜'…W7×ò=M‘êÆ}·ùÍÖGœÂ<l±ðq9Ð+x ­HhyñT£æAñÉ:ÞvÙ?°Gõ5 ä`g§ƒÔ|“lÅôQÒªýçwªêj/C4=;/hÉÞ• m/žë‡Ø+°…„“3¤ T}¶ñe$ÕHÇšL‰êbz)G 4LY‹À™ðL\®÷<ò6Þ†Rt!VtxŠFûá™dYߘ¦ÍŠï”a€–¦ns^™–c%oðΧe™¦“"
+M¶Ô¦†Íî'ÁNβwW‚Òg­kÙ%e—“ð$ n?~:tÊÙ5¨/Ö®ŸaŽ$Ó‰N61²ÞÔ™Wx£‘Šl…P^žÐ}:,`Ê]lPŒú7¾®·÷z“†Uý˜eʇbáü Ej/{,œ«mþ ÎphP?EF7Ki½ì¾ê>bÃÜ}Û2pž¼WySãõÖpý 9}â‹Oû¼Ä­˜‡¿
+‡êCÄ<rƒj“F›³ŽÓ6ìû±?þ”ÆtFÊÞØQOv—ÍRP«3-9BÑç”#žôŸ~,ãàÚÉ™²¯¼ m¹\[¸J‰_¾Bך>áÒW.;ØåßH•.çúºåŸ=ÝÝŠ,BBRÃ2¤Àߌ[pD@i•+[%hSyïÞ Œ¥à¿hÙ
+AÝP9– jM>‹º *¤¨´ùõ_1õ»<ß 1o~½!ÖÁ7_Û&ýqg±¶¦€À¶tT¨¼“ê3Áìý)©.]‡H^I &U8E÷+fÞT†—Œ Õ=…Ö£éîÚå9}AZd¦ò*²S
+!wëNå60ì'ûXHÀ9Ã:ÎO§}‚»%TѨ¶A7Mh{œò>F—È*ãFt¢P‰Hµ/Œ.ø”¹^»¦fžG z¿~0²¦ÙÜÚ[“ÈNIàØ9ÊÀÂâ\4Í*ê>tB\_ï½ÓÜT_1Ï–H ¯¢Ü¤ÑÇåi¯C9Ëd
+ýá‹ëùoÿüˆ§t¢L˜'?ð#—’­Y¾º°\øŸ89µBQWã:R Aw™½´‚ôà¢A¥’ÐuŒ¶ù$ó U›,(;øýù2~‹]ÓÊFÑ_#6×¼ÇÛ€×µ Wl¾TÈ«»Ôe¸ß® ¾óà}#–pçžÉ·0›gVW·Còõcµ)³Ï2îJ‚ö
+ÔI^°ö¹r0©yÖ1´ŸŽlŒºfN
+vkJª!Çæã«ÝxÜŠdäÛ#$Áç+M-;
+ÑЭâ"j ÀDcl öùø"ž'œHàý:½+îbhXŠvpºÚípµ)í?Fît·«‡ £–¯äìBå-6$Ñ0€3ôLJßÖO9|È»­ðH¿¿´0{¸ŸÀ<6Í„ì
+(­yÈ<=è™– ’Ê(ƒ3…<
+¬5D{q˜)c5Ï‚îrdcw‚¼­e”@\/&¾_ ÐgÌÜcätõèÚ¼ÿ¾qþüåõ®.kï >=°
+s 4ª
+t0ö¤4^—Ÿ•‡¶ñ œš©c`½—1¤%1êjÉ,@Ñúi¾4°øxøÂÆ "ü›}'kÁÃuZcŠ˜­­oÐsá¶Â[{1Ç)<F]”/"×»?i{ƺY]Esg÷\
+ȽŽ´ ôCñ³§-‡ -Õï¼€_¿oõÄ®ýiáøu€%¨ÒÉŠ^ààsãeïÎûÒs¨Gƒ Љ¤£\_þ¨ø{îý
+¹~g?fu&MõdjÅrphï&C¬kÄ|œpÀï"P¤ÀÓ[“M꾺9Ý…Z£Cr‡ìEgú  z‡÷‹M"6û—uùÂÑï”um7PÁƒ‡:r{*ê»?$}Ù“‘†ZžÌïË2A°òÑÕ’zD HXðp¤0+h;šoAºò¬Qî!tÚ‚#÷:Š‡X jãÒ!»$“keEâý0çcíÈgŠÍq\Ç_Wâ*ADý–
+ˆÜkZ±væ9Ŭ€±F8Òÿ u[Ž2§'ÓmO½bï<ä˜Í2*x“¶Æhj–Šmøò‘g×`lÆ-» @µA“ʽÞrÛ¾Óžõ~©!Ž ë (%­U¾Ã~7¼kQ“}Á{Ùë{Ö£èµajA
+$9ª%>$'ô‘t ×Ñq°àlKíÕv`ljîjÍ/{¨2„\(§˜Çøsg‰ˆ©{/‰Ujö8p$~>Ë´Q|\h
+âÃÝ´ÂùÀížß
+í6
+ÅBÇÊi@<Çj„ï׉HŸ¶Xü>ØÅ+ß«ëx›c äWBmïM&Âó'Â,‰kôšóœŒ/M Td3ï–3]ÊÂy_ZªôáòG‘'ûYÃÓ(_î¿_l,ao€…GônW™ÿ~úÈòlëjóªBìbw¶Ôß­\F,&|Êy}ÜͱώDÌÃæ¹-O7_¤§3îEäÉ–rÌïÔÁ[¹ˆvmkPàWôë̲0¼ïm@%·æø¨/íIPEf#ÓˆÓŸOU€*iP|Ï„€‘Ä+Áä¹áɼ•. Ñ÷ðwDæ|žŠïr~iÝÄ ¶ç òÖ‚Ža€W«Cð,z)ĉ‡£d†¡š?7ÍÆZ!»…÷Ú\ÑMÕ Ò*³ õmJÉäZ¡Ô@õ츞Cæg,¤éO­D{i6œE–x]$¯xÕf[ÿfT›ÙG…»R3ª`š YßÌ
+za4˜Ïhspð~Ó<ål¤ƒR<!Èõ\;­gA¬•ú†b÷–ÌQ›Ýõ5¡HŒa8Ø1Ò©vúìmYÓ,j›ƒ´
+Ù—‹¬q÷ùf²t%ú6À¢ª.‘Ã@"4k¦® Å%Ý
++=!éáò~VhÞ–É` Ê-ʯ±e¨}
+c³FŒàz3¾‘–.¶¤üÕ56ââ,öÀÆiÓ'‘Å¢lå¡s²šuDÏ~?3²#þMBÉ>Äwvˆ^4_Lþ‹ÈI`¥|Š ÿEpTDþÊÌî‚äÍf-“·t)[¨ÚϺ•Û"æÆ|«gá¡ R{ÓU'Ðê€{|ùk¿i(–„1_2Û­F j&â(®N¾~J´÷x
+BÃKN¡Ñ[¡•ºwug6çJ;±QhýÜ \åE¸+“‘ÞÌtí‰\[XÿËZ~Ds’_üËG³.Õrõv»¶µì«4&³E›N ÖÈèåÔ¡èûPßa™X¨Áåi´d>ç|MÄ]Û±?{}U>O?ë }²K1éÕ¬’×P-„‰î ~°fHôìæ<Œ§cÛñ°­Ü€çû•cFõÚw} d׺N^óªkÚ:WÅón¢¬ÌônlC§}9©ÿ‰tí£îñe;ýJZ ï ’dD'Àæ’O5Yì ‚Td9±Ûqÿ zxåªxº.Ö–Ñ«u¡ #÷ˆTûÓ…ã4Yt¦èЮvF2ŒYõ•µ=¤nt„1»Vœub®–wý‚¤ë¬Kp}P! JÙ8Æ’U•p¬>×_¾ÞûÜi×é{}…_X)B1YñÚ…û¶çPâÛ
+f•xr0E²
+—{ø¶6s1$®UQShÍ’qR ¥¹hl p«£¿e¹0Ëi~¬Ñ†Ÿ~é§ñÛ“Ê
+!ˆjù*æn§:¿ÙósyÕ¸&o¨zkû0A??·Bª›šyžÅÕ¥ÚÓ2f¥j'+=FŠ¾¨í0ãš:+pÇYv0j;ßêÞF5–÷Á"xyŸœ~¥ä‚¼ø]¦d…GxCI+>à+ŒkP·Xé1Š2fjß/5€§îzŠ1×)€ u½í6l¢ú r¬'i'Â$ øàdªsŽ­ºS¹<£˜‚¾ö™[§¶)î)X^ÌÓO
+Lúu}Dýø±i¯–Šé œgöˆAÂï1G*Xë¨rRšZ‹ÙH!ÅG‹5ŸÐYlDHš]¯.W¨Ynò1ILƒ1;^º>þ·ŠÓ+3ªÛâMçSãÐDEÜ+ÆÏ`Ç“ÅÆ[0ô‹k½üÎ9‹þ·iŒN¨µ`*î>eœòÛSÕ‚öÐÓ…ÏÚb—š]¾Î¯±kŸDѱ0óÔcíHC“K5ï,ƒäˆ]síFNŒ·X=f ÊÄúuÀ‚$I¾ñW‚\@ý
+2CíëPÙI T0ZZ9{ÖœŒ­ñè hÃdç—ã'ÕçÅÓòÉÙHPáë!Ë«£ßrjc–ujÎÀé¸0¤Ò#C;—•\Ý÷:sÉR!õÅÛ‚*c‚sX@-tˆ ç––õßr-8TL²ÏxÕ%¨6wìs‚íf4bøÔ²šNF+ ^š/™!É2‹Uÿñ¼AI³=;øÍ F"‚pˆh6ˆfù ê­ITûÑæ —'³C‰ä²²8‡è¦ºÊÍ1£f],Nóë4XzÈâçk’3E8Kq!Ýi©¨!œ™9Â'µ—“úsœø>Ë~jÛY›~9sþ>9‰i‡Â¹!èX›ððîézlÞü{¦Ã>ò Õ¾²¤1ÐÛfX½e~3džåwe…•.ëO»yag· xH…QÙ™&4ˆFoyS=Å÷Κ°rhÜÜVýæÇb+W3PgÁå¹YA8È Q…ž%ƒ¶pÊãÖ5O»ÛŒ WhE7kr¡}y¡È3Àt™IÚ°—MîÈ°Š ëz{;kzö!|¬šT9$Ì·uÏÅv„Ýú¦z$åíTáɧwÒv8k¹M×H ”O ¼?ëÚQ
+„¼^Ⱦ?/Ää±+£5YÒ^›Ue2½ElÀ’<ÍIp )@·#›Î~ƒ 'èhôc6‡0Dk=
+¿ÀÛÖâÁõŒÏC«]tÜ+Þ¿{ŽØ§²«®› v¼\¦´8=H>Ã÷ÙvÃ"8m°IõD¦Ÿ…þnãWÀ`¥€kçØ&E€ËZDÏVsxÙ\éÃy}ýQN¨
+¨[¼/ØòrV·ðÊ@J.Na´ Î/H»úxŠ’¿úOqyÛPB
+³_ò!Y,`Úi:bš¶aÕ'eávèûPZ¯ì£ ˆHˆ„,—˜É‰Ë@z"?±w[o/õ­®™³p]³ÄlcÆ—•»óÏAWšo,ùÆ9…Kï{yŽœ`Z‹?Š×è•ÚÒwòxƒ5S5Zšk%à€ŒñV'P¨¶»év}ì%xR&‡.=ùÒl§}8l
+þöãi9Ì=,³ó´ÙtÜÉT<¼ýå;aì1šÂRäÐDÐ,ä梨ۭŸÏS.+®òg)3¾ÊXjH; uß÷vnãö” ¢¹`§%ÑÐqåy Ì/zHÊh¬Ï iøAu®#¢e¢¡3ö¡lc§Q_²ôìºÈ÷-÷œ×m™7œ‡D0”p^g*~O‡~kO%]'û³}.ˆ ÷Ü—7ݘ9nâñÖoן@ÏÌD÷Æ!ÏÆvw¯Y|`¹D’ÄsÄQØ“!ƒ+é4€r5ÚYõEY4kô1îõåægšü'úº¶ééƒÄù‹—“Ù¬Õ’¬X1ðr+¯ÍŒœq@…Ý=Ò‰3¤Œhv)zš ÜŠŸYJÄõ€/´ébÀÈO’o—ïU[WE³éé›QµŠ¡úÇ‹_T_ýšÚmt¬ ,š¢OY\©
+¾flú´¾"TÊÀ{çsa)–ÉLÚ¬÷)suIܲÄÆ{•õ;ÛcÑp#QwLìSÖ²£"¥M/…qF¥S äž°¾ë^zÑ{ l1âüËûHÐ>eòpÔKÖæ…+M ¸ïT¢kä&ºóØYg¥86·x¿{%èéfEö¾ ^xf›\̓Ñ<Ò†ŽÍƒx¢¡BWÈZâ;é›#vfÎòŒàý|VòBU-Ù_ʶ•ò`.ãy¿ib¶Cê<”§@€d•êOw3”R4lPˆAÎ<«²È÷2°òN]Ár¼¡ô»Lß´Bµ‚c¡Ž.[ê÷cúçCO–¶5<yl—³ <äq8>Í µOyß6Í•Åhf’çäŸÀ^(0}®f¼fû”–F¼æ[J™ $†S™½ó”óªÊ»øâ^î:c]»**0§V"gûF4­/†Ë°‡8¾8« ¾›BbLÃTt஘…‚cRh¥ºRªŠuÝÒ¬ÎÌwD‚I×+^–õß'gŠàÛ‘¹%âÛä¥1²ƒžóF¢9¶õ‘å¿£h :ǯÿÀ~ EYŸáE ôhûŽPK‘]Z™%¶o±•½–[Må
+O4‚?ÕìÏ,"Ö®‚ȧδþL<æ¹ìqdæv£¯Fº>3Ù²Œì·üˆý]½¿¼IL
+…®
+¹ž|”½ÅuÇßü´5ß ™ú DoYƒ3’!ŒK”¾KPŒÞѼºh‹àù¶ôÍáž“‡o!ÆïÈx }üûÿ õkï{60ò»“Ÿ~Sgƒîü­óg’²-ö‘Û´gªñîõª!íÖpp¢­åQ¸šOòc6Ûï’ˆ"epùxKèDb,³Š &Ï4N8ŽRï}³i[âƒGý­8¤{(]wùÅšInëyÕ¹‹„6·IJÂ[ âš«ÛÀ¸-‰œºÌÕ{rTB[ÌKlf<6kqXsfí@3a<L îCDfÊ¢£z¤jþòœâ‹‹öv1Wâ™] ^‰}¦{Ó'7MéKL˜&B‘F;,oX$g¬ öŽOóÚÆ1dŠ4 - ‰ãÈêNJSˆôØ1ýêRÞN£Ë
+`v&­H. Ÿ2Žº5È’pU¢C-3À’¾ôhü/&¼ÙGÄp¯áÛò6Z݇,ÄiŠ”~þŒÙK›¼’‹êÙ¶’àÑß5½1  “<ôŒÛ0Áe¼Ák(¾õùþ„&1œ5yÜeZ'@Š“‰ÅP±ìœâŹͻrsükÆSBãö±5>ëê ;²²Žù9Ë7¼Jß >ÒêT="M»Pªþ_‘q?jÔ¼]sc¾ÆàÈð1»¹/¢ýÜ€å.Co!mbZtZ{¨ÆM+ï4­uºí—?ó”Ð×l¡ˆî¯BgÑÊ™Õý–õĉ|¢1®GÎ`÷EK!.{Æìëp‡)ä+ñ‰/^Åé‡Úìïf;Âç–d¶QV©ì"QÝnçöÐMfe¿ÕyD‚¤”:F ¹ê¿Ú&ë»ÜñB6ø±I$¶üF)_¦dÛ/—W>®);tsÑ™bð°ü¦d©Æ¤ /•tÁ Ñ#‘IML[áÔÆ
+c@ÉÕŽ¦;eÑæ‹%1^Ö9Èzúîè»*9eè·úk>c5”b¥†Åwà ŸšRÀ¹÷>{‰wð€¡åxíÓ_Í2TØšèÊ»ÜáÆ@*³ªÕšÇ0(߯êV5Â;~¢¶j’‰OŽž,xÑPý¨GÓ3~Û dv{¸ò]œv Š¼“'#nE®f†sç$ð³:
+ÊŽw\È8TŠþ“åÃÛ§ù4 !˜E ËOUÿ 8þ»×pIL‡†ä~…ŒK¼±–_öŸYY3ú
+6µQ×!H¸U8®öITÚ0D`«saeŒ´£Ç°ÓMþx®ä…&2poŒlD¦ð•DŒº¸&c#ýËÄ¥Íaó¼Äœ.AB®UL²b1Ó¯7ÿÀ*ñ‹Böäç© ¢~¿ìåù<$ûîþ”œn÷9çƈµÝðÙ1¼Å¡0G/y>I+»$>»rkd°Ësæ_ul3Eª[ÍÐreùfò™2(Ç;ŠKWçØ1_s§ìNk¡`à(jXšír/ö³£o»q>'‘¨e0‰Ü2¦M=ìYò<²Ý›ÂÒŒdTȶe­<œ'å*AÖ«0’ÒE4Ù$¾0æ±m¾§½‹8äÒV
+ÛmÄ㜪ÛËþf‡ºÆ~™„VF§µ]û-,d€`ÇU_å 7˜%XŠ¯öž byÓ¶¼ûÙ¦ù``dPØqºXÀ È$È3-i©HTëÄÜ«Eðé`n6LÝ×] ¤š‡MÄo“1Ë/²
+xß· wùÍƾ–B!ìTžÊ¸¢ñã°Nˆ¬r4YŽî¸•¯$óx…æ^C†kGãÜL>éUül[\È œò^“•ë › cÏ‹+ÖbA
+Ù,=ãúÞ´½3 äK‘+ÝJ¢¡CFP„:£:€E2íUÀŽãÀKšåÙô‰H´ùçË(üŒ«2*5Xp ž0äT'
+6Ÿw³^‘~§a ùFD¹)Æéw.0¢¹ƒ¢êKÝ}µ¤ð×CÆ eª0†à.E®*”É-ß¾~Tc Ê‚f}µ´*íð(QE
+®c1„È2ÈÝW—šŸØÙ•rÑô²—ùq$ƒh—;Fm¥Ž{
+V˜ ‰¦8ßô¿–Ü+ÔwÛî€Hä‡ÅÉÕQÂó”HD
+íædPÖÕ˜±5CŠG¡=™ˆqžf‰p&Ø’‘ÜJFg€]º‚+·îÚ°t:S·–0T~ãlăon‰ŒHY£8óñrgšÕ1w÷¬`;eåó0ìÝò}¥íµj’
+ï™ÝÖ€D3pæ »RtàãA±© ˜¤± ìb(CŽ¨“n˜è27`Sø…ܬjB î³ù´V@?DoÔ8Çîí77DZ=[µ
+H ÒvÛ¨R‰r±™³ätõmŒaXÈ€Äãë*Iɾ#èÍ£hžõ¹OA`ˆ³ëøk¨`z†ùãbóÕyÂZ!,"ÑRœ@“?S—N](¨&Än˜®šx‘J$©Ä=ôÔ`©ˆ—žKXwïöm/yÓŠ–u”N.{6åý†Ñ–-‚’ŽBº­…ä´­üjfôéÉvØdc¿¡ÚnîáG óºÖYÞ/ êi»RÍ K{q_‰?õóŽàDEæ@sØÜë “#¡KrÚ=ŒßßЊevšƒC“±ˆÄæ{·Tb¶Ëà•øÄÎPè¸á«~0€
+.ÈPÇx†ŽÙ÷ƒêÑàë¼"´j„É…‰q~J Hœ™—.*µç`çO‘Ò~ ÌÓi­«²¢;/óÂ9nÎzüwù(úÊõ–R|Nu7˜KRë;}±h]" ƒfã{¼ÿVI\Ù¥!ž KÀ??y,¼.[
+ÍW~+ßÜ9×ͮ´z¶~’ñã'ISG;2
+Ž¬3õ2ËSÝko Êu]9…‹¬ù9Ãþ Ð.x
+ìváú}«°ž5i¤óäû½$9ÈLû°£W—Ðy¥E"»4… `„í{tâÖvZª ˆíÚ¼­fù®Ïµ'ºvzÃÕʹ5F¬Ó/†»Àø¦»/Ìm`ž|µÜ‚5Êq›gú\ìʌİD©Äéå'ÆsÜÐo
+ø$øu¯Fg¬Àþ EN²äܱ'¡¿«Jš•€þÇŸ¸xâ_\T‡ŠJ)Íó›®V ¶Pë º}"¡8¾Gfü>7H‚È@¶o@Cc^âè™ïéÑ›€¢³—³ ºÏª¦¡Bð›KŸ¦P¼CÙåÀ ]MU¥A±Ù¢TcH~2ÑêG“PW¹Ú$I"âÿÚþô+hÌ–šXëPP[Et£ÐÝZ±{æ
+×R~Ÿ/EZ<×¼™Tñ$«ŽGºâXð0×mIœåx8&M…«NîæN“†óï^ºœ€T`_ß•G$³~nÒSŠ‘`Ê7ÄòC#ñe~Ȩ[gjÚˆ'/:ḟ ¯ºû …åg—fØfKÜYB?c©Ü9ù’±4³ÜCámñu­(Ouha,Eü’*–ÝÅ©{&ùn|k
+XÖIcÿµ]¬ô¾Àήö¢à2Ã
+xyŒo;dšö©A²i™÷#Ø•¬¼8eg :l,Ö…­ŸA=(öDxû»éW:¶©3˜ù¬ÐT‰<ÅxîøÓ?±ñè˜NfÒ¸²ÜÞqÓ$¼¯ÝõŒù6›—+kZGuÂ|hŽFzl6 )³=q/ˆÝ¢Yaþ0è¦å'ëïRlzð}]ÝX¦ÆúʽÕû³AìŸP„C¯úà*ø¿¯¤(ÄLg 7Pa³´_ùÆ!cÝS¶ÒŸò\$¢²LT«}Íýñd6E0!èóÀÒŸyíCaé ÆVçtJ’¯«¹p‚Àž|D9ìJµ\y§Z² ߬É´"‡ô,^-/ðqnÀî`,XSÒÐ<ª¡Ô®û’›/áw†ýtT Ù* …Š¦Ýðz YÒÜ H!ªVbð¹›ÅŠÚÖÎY“¿Á¸ÊV{ÚQ-^ Ÿµ
+êõëÜdñc½"¦˜Õmz7yºhž#£0‰>Èé–‘fâÇüV{0›óÓ|Ð,°Ì%N£qEf¦@“ÒgÇOÉì„ŒQnã©@™fL¿ˆ˜ý;žËN…£%ß´i’Q”LÌÍ%ÄWÍ8EcõqpiãÎlXøãÄ›ê®}¼Ë¥Ž£³W¦P6HÜnÕo‚©½Ç?Iò胨
+Á¼¡9ÈÒêD)KÎ;§kDòR#vkɤ‚qÏs8“86ô’ÆÀ(s0ÂW+^9ö‹=°ÛÓ%Z3©‡Š Eu[t2Ì«S¥fD •²…½(9U·~)ª)uBC¢Ñ³ió梙UÜK}›Œ­ÞôòýQ¶ÞC›Æ<
+NßRð]´M_.Gý}”Éb$ˆ¢(D6ŒäZˆóþ\¶¤|Z×îSšp¬uËgªò›¢=7e—Î3FZ°Ctñwô­>3¨]_´ÍÁ@$þ©;Ì™Dh&XƒmÌü؆ÔvCSÎè»òƒáª}=HQLèRB/ÌKÆþ®ãÅxÕ‘ÅL·©Œ0˜6^‚¯Øé_G£2ƒa!Àûüñ ì¾2„“ÙP+„¢X1ÿX l¶µÀâ>úi)Œ-Ã.³-r×{\éÈA §Sü@û´}7r¨ŸDâZY<ÉêG1(º½_x¸0~ièžè9[#ÔŠ Õ#ƒøOYº-ݺ®U ¯-çê±»¡Ù‰Úwt˜ï,›ÝwAŠ%ê¢-öê!L}_y«`i)ã†í2tŠ $÷ò³bË9—jCUdr²
+8]»Pi0CWxV·›O¬øf>m@ÕÚÉYöNÕUüÎÞ³;Z?&AD•Ðæº~ƒ_¸îW’ê¢_2—É]èM>&%`dƒáŽ¶6§Þ: %+\'¾4²£ºÒÆûÝ·®h}šõ½W~u~ÐAoe YrW€Ó¿kyõ÷K".àNlj†
+hP§éuÈϾv2¼…qKQVÈ[)/ùÌþY½–òT*T…”ä÷7:g²ƒ˜ŠŽ¶¤
+Œ¦?¹Ð]Ùn©uœÝßx…
+¯Pf>
+endstream
+endobj
+2909 0 obj <<
+/Type /FontDescriptor
+/FontName /GPONVW+CMR10
+/Flags 4
+/FontBBox [-251 -250 1009 969]
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/ItalicAngle 0
+/StemV 69
+/XHeight 431
+/CharSet (/A/B/C/D/Delta/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/b/bracketleft/bracketright/c/colon/comma/d/e/eight/emdash/endash/equal/f/ff/ffi/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/question/quotedblleft/quotedblright/quoteleft/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero)
+/FontFile 2908 0 R
+>> endobj
+2910 0 obj <<
+/Length1 1075
+/Length2 4617
+/Length3 0
+/Length 5298
+/Filter /FlateDecode
+>>
+stream
+xÚ­“gXS붅•ª4¥(Å ‚I£ ˆTé½H7„„H!Dz•ÞÞAŠ"A@@©Ò‹‚"½©€tnÜûž­wŸ¿÷YÖû¹ÆÏüæâåÖ5–·ÅÙ TpX‚0¹ PÔÒ‡@ ˜†—W€Ð8¬Œ€¸ €HIA
+
+Ï+Hy¤úÀ6T\}ÅÊ6PK³ÀosB{kf‰Ä?®Ÿ
+ åÕžtØd!׈èlw%g…,ï'æt§¡@çA.ˆÔ¬(Ï÷eê“IõèÆÚ½&dx}à\ B5 „(q–Fp2&»<&p±Ú@©é¥VØ@Œn× #ö•Â!˜yDAèž“%ýÌÓso"²¾U×ëÏ÷¸¡.Å"h%u¦¨‚úTò×eÂBùÖô2k «£LŸµÿ(œ¹/CåE~ Ì“½x‡qÏGŠo +Ž£’’à®®_ñ¾±à‡8ðÙ¶ºsxSGûÖpÏ ®DTòÊmÛLÆ(I'×®á'z‘þ¥ Âf/L#Ȳãñ]¥ YGË^a|k–ªÃ QùìÝÎáâ²´»Áøýl„ð9´—øÑFûÖªN8Ï~Pvz<ï”ÑÐNlMüϳx+ ï¹Ä"7L^câ!{yÎþ-ô°kŸÅË‚Û‰'‹l*­™+àH_§á†\Áwó>ëw˜Ù²æñÔ²^íB”7¸RS
+ëªß¯ZZ) þäÕ1®À¤Nq{IjjTÜÓ9\ Ÿ44LªªåUwëþÀZ H ïB‚rK÷SO8%¼£éZ>PÛØúF9ÖB謎É^%ŸÓܲ·Ê‘|EÇá-ØÉcµzvºë^Òê’›úÍãÚÔƒé|‚6kMÑ,èb~þYoNQÉ}N{”ñ×g2BÇb .zœ¼a‚ñùö¿Œ¡¨Ï\u¹e®„äåÐ1Ð¥yMewç—èKõƒÝY6(›ÚUe:¿cÈS…¤o4<·n¸I袾r÷UjéÎúPDlÔÄqò¤ÊÖîèÍ70f}H+|¡É˜Dçû@Áˆ)nbÙ²×C¡+ía„nü¼P¹·].I‹D…CÇiòcéê
+ßÇ:æ){v™µð2²(|¦¸Þ¾oÜÆ`³¼]6ZU×J<QãŒÞc‡íáû;iÄÇòEØyδ±›^Û<%r“ ¤$¡müì
+à®þîÀ}ðˆ[ê½]áŠYý\kîn¶Iu^œÆ«öuµëzqá(â¸díV'øæ1‘qÎÓAtÕ¶Ï c¯—äi'Üda"¦Ï>ÿ>rõ´ä½ìBàx8ÂK²lZÉÈðÎÎ)Äñ|ôÔ%.náB¤Aë$YSú¹”‘%³.¨¿+á§p5–¨Yì åhóJ¬lã˜Ç>‹šŒ5ÊJ* LŠ™\l¯±0aÚµÞ
+¡µ®PÔw<Sa~Ý_cÜŸ!z?…¾diz¤|UsèDÁÏ«-,„ X„$[øÁDžùú<òZnQæ£Æ@yZ„[®PõkÊÓ2`³‚¥Ë ²,žô £À½¿‘‹ù;ôCú1gôö²EJ½ç3ÖJïUzø¿ûlQzð€Õìi™¢—³gÈPª¦P¾¯ZGU œúY|ÄíüÜR-–ò}îŒÑïg7âU°3 ßMüôÐÈ‘«(Å<¤ÃºƒÑ{ÅÜMpp@?Ö…V»Ur«»)}âWÈôÖ,§Ýax/ûƒüH¨P§9`­Ò%<¦
+.s¹ožöGdeÓsâæ¡sàÄ%@zi]x ¸¸Ó‚ô ¥©éƒ˜Ž@ÜòûÓ”óÍg±I]Љ%2g+:¡¦¶UŸ¼j—ÎwÔ?B‘küwV7F9ÈÉÇû;íÓMºöí¾ž0 >&Ï¿+Ù_yF†ž“Çþ[×Ö§ÅÔYó<3xß±ŽÐG×.ð´Qg‡1C‡áb™Y"0¢oF·Z+D³Cfu«¦{ò>†¹1Åyã MÖÇ…ƒhÝÂáþ)n^gÜ~ŽŠÍ³óÜ ëEÙ‚Çmá¦9‹±U!-¡Ã“ñ† EتԓBñ%£Õ¹ò çä²rEPC€¤YW}E¡µ’ oÌ‹Ù ×öB†¥-Ÿí­–.í³±<ÒS@Ú™§”‡&€®±7DÞYð ìH_+„w/Xw‹ –òÇ)1)ÚVùPŒgߣ÷ÝI™¯ŸÞ9o£‰ùÁ6ôi$I&h3¹6¸
+­4;û@™ò–å¢i%A”,Á‡é”oí¢ä¹¼”®–t©TJuH«¼fÑ9ÜFûÔPJ%›Ûؘcx|ë²ír_&=%/›©àjˇ‚¾EäίÐq¼æ>gYnñùòrOêx>K+‚(prB|‚H½‡Ÿh¢\êJeïÐ)#[_a¯H^6Õ´™±é#ïš”zJ”»ÂÅغÁþÑ_/ÚK ü€¡Ê"Eqp.­ÄŠlîž‘Ê*¥ip«PDM®Ñõ³\sà7ŽLS¡°Úà¼Ñ&õ•±-î ÚË^F~ÉÜÍàÛ ú #þƒd b-õR!f_žph}SZñT«š ).ƒØÑñ:ý¹ûž[‡Ùë`|Ï®DXì}ìÿÕW5¿D¢ÓRr8×ákæQK*žÎœ•*Êol#­ý ø3ƒÑõjÙ“l‡¶Ôk@­pÕÙƒJÏù=±]šR4BâlJÚ§,ê‰ àißÚþ×YJ~_µs·µ÷zǃ^ƒ
+Ïúg*?ÜÑ1gõ´ö§G„oP¾óiU/2Ì·~*ÑŸüâùC& Ae3øÅܧJ‚ðÚê6ý‰d°ñÌ*l©Ùª{<âL“)½ÛbáxF?w+
+ïÛ{ ËÇz««H>‡¥éaI>,°AÉzÒ¢ýÚ"•p¿w.0é2˜>2cØëí©óy’ŠRLàÔéÊþ^1µ»uÓd”ÇÇÚxõrÕIàáæ³D.ïdËsp‚Å[úÇ–>ª"gxl6‡ßÇn^]vª}ÀÏÒ® ž²ìz;G扳Ú2W„˜”_¨¸ÑÜppM·@ £ÖSz`TlBO?Á‡¥&ZÛô7—¼|Ö)Â9ë‘hâ=¦vm-74mõv%÷˜íÛÓõ
+Zâç6¢²>7(.Þ˜)ˆgäÛçJGTÔÀ’Û°±wþ”,mkë^æVyr<pƒqužÓÌFHêú!éÁa¢â¶à¦;•±Ôá
+é:õ”\Ã7’RÍ8jÆ#¿³Ôæ:&^UÊ ¶±ºnÂùjºªå-5—jétµFcþölBO!
+à3H¹o_¥ŸEŸXðû­êB¾5«Wn "i|rÜBÿT¶RÙ
+endstream
+endobj
+2911 0 obj <<
+/Type /FontDescriptor
+/FontName /FEVBAK+CMR12
+/Flags 4
+/FontBBox [-34 -251 988 750]
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/ItalicAngle 0
+/StemV 65
+/XHeight 431
+/CharSet (/F/S/X/a/b/comma/d/e/four/g/h/i/m/n/nine/o/p/period/r/t/two/u/zero)
+/FontFile 2910 0 R
+>> endobj
+2912 0 obj <<
+/Length1 912
+/Length2 2948
+/Length3 0
+/Length 3545
+/Filter /FlateDecode
+>>
+stream
+xÚ­’y<ÔkÆm‘)K$•Sç'ÙfÃÂؗٲ™ÁÔ˜aŒ}©ìÙ²–l‘u,I{É’ND²EemP–B!F¼S½çœÞοïç÷Ïï{ß×s=×ç¾°°éy–ä‚Ó%)20YÐ26‡)0Y( Ö"ãÐ<‰¨¦à
+ 0 Eò ãÝÜ)€„Öéo"%
+‚˜wáIþ¡~5×õ!LÐßì¿ é_m´žð_ÉÃÓ‡‚#Æ$,ŽLüUjû‘͇ÅûxüÚ5   x ŠèFÀÐ%¼·.Þ‡5ÅS0î€+šàû^DZ¿†`Ìí{ˆ•¶–ž•¶Ô}~ñDŠE€çß®ßÄßö3¦CÆûvPY(Æ2¾¿þ~¹K‡ˆ!añDƃ€+h2
+QF8˜ èu”•'Öï3ð!6%~Ö©24¦ŠV<;3¬CJ”UL»h·j"›ž‘¾ùôœ?Ùê¡®¡HTÄ°xŠˆ>~aºx´òó4¢><@¨¹"iÏ€^ʪ+hô=Toå×L\¾¨™Œh]x¯ÒÆäýäG%>EF mÚ³3; x™,ÇðA²CCàŽôË£Î\¾S:ÑÂÄ„ Y«ãpt >¿]Ve }\vöΑ¬`±³/Âsš_Æj y¤¹‚!S··3NíY²Úƒuoò„ä.¯þÄÊy²åP‘R_³º†£’À±"5êš² ¾3kYò¢Ñ)Ï]åKG þ –©£.Çž72굊õhÏBô΋ŵRêîµ]Iž®þ"7B2îy±Ê%é§HuÞ”|ô»7ò B®×îStÓOkóª°ñu꣎Í+LüÂCÊ~^›_sgƒwC’S¢—bÔªMMÝÅNt2]
+‘
+¾*w>»Þ¸µµQ°HK¼—ß±0ýúa3·Ú#R]åsí1ª0)ƒ“v½É¡3ß˾ÏìnP—}}f–µ+”I/:kQž£ÏâJ{ŸÜ×uZ-Oßsá¡iÜHµñ×ÉbTïÙ‘
+é>RÌ™3Dž a‰³°ÙÙ‹Õ{<\R8'kÖ*üGt‘’„Û<7CêZ(% 6À̧6ùª†§Lï¸á©Òí{û§ÌÓèåÇ,íÆ™-˜™¤¶N7KmŒ§úKs;otÏ…Póã«"Ù8ê Ù†’ÛáSHË­fœ—âÇ1èÔ7Vv­S“%uX]mär;ÚKØÆñûB®&ïEª%ôÉçg^TsË—Ég¿lÏ#* ëªßxëVó¶â‘‹Hõ‰ØÌ7O\r*i=š¯,1ÃC×Sl·n GÅUÀ̘#ZnÕG¯òÀÅ@iÀÆFzѹ…xuú×ñ“jïmòfW)¿A›¢›²Ù[WüOר‚ÂFWÔ2S2Å“ÆËvIƒ FböbFN4t|]ý>&Ïv£G1áF.ÂÙ'[×  9’üuMÚ¥¶§ÑCh so}}«GuaRïE'²ŒsŒÔÛV¼¡ÃŠð¾·eTY® SsýÊ8@\•ü$çlxþqáï
+.8eŠ;è¨YaaZ´ˆœÉ¶½Ë{0õÁáãÊg¸s¨ÝS'u§ö¨v`NØk¨²"†Þs>›ÈF~ÖˆmÙˆ°½þòBÒîËÉh³)HeŽÞ£Qâý'Šº4m«™ÞçØØ@c¥×µúnTØ~Ëø†G˼fˆÔ·W’taÁ« jBÍ.²/݇:<ÿ¨#Á#Ÿ˜ÔK8¬Û,§MÃ$i)
+¢³C©*?{iRc·«o4TÌk]¶öÐV -ê =n{uÂýFNBÁ'Kî8yÕØ4‰aÁ¨2S·;S2³ú6f(D¡H“&'}¼Ÿ™e¬’‹`Z‡*î}¡ø>¿¯6äÏP¼RŸ©’#Ìí³t°+ƒJ¥>Ôtñ [¨v`¯Õ _v8ž)y%Ô>–¼¸ÄÚ¯Ô¢Õ“hz%nk7uz@4÷ÛRVI¹|¥‘­·¯˜ òÀ@¦ãWÝÙº.ÿÁÖÚÀéza®èé4)8ÒM8”ýE98´H·i©±"[B³)qqå9ºÀÁ\zÉ7§ï1j½‡}GnÓr*áv[L¿ø—à>/.AŸû@¢ 4®yÔ3VPCL,¤Ní@?áïîé¹&3}׎šãÕÐÃÌ›úª¤íLDDá"0Hƒ0f>í]PÑ:rUMÅã­{Jñ³MëÄCŠñ™l”Òªbºê’Õ¹n±ù¤æôÈÎ{›{ÒùI³'#ÕÄ›
+s¹Ý±ÕZK.îL¯12‹]žá¬Ð먺hY³7^åÉcïvºNH–èÎAG|‰QºÙ$ꂘø)—AÚâþlú¥2ÃÇøˆa,AϦ ]%)n( {_ävõÎp˜˜‹Dª¾œCж•âJ­.•pä
+QÍƪzøÓoâé½GÞ)pï¹Ånê]Ãíãî^¿nRðp¾°„^õ¶í¡%³)bKýÌtßkP"ÚqÞ*›ÿ=OKZRóˆîVaõÑ9ˆ—dòjZ`{.K‡ Ð)%(žyFW(–¢õÆù®µßlÌgÒc£¢)-û”S礑҅£ïnÕ¼úÓèþùøý¼Ißò3ös§EoÖH\å‡Å}‘‡×6h5ô>Ï¡N‰cܘh½&Oõé£\ºK²](Ök5Š ”‰ùœ;O@auÑ/½ï7xHˆg{¤¼`Gì´xê~!ý Úb퀾z€=j#B dÆeì¹¾Jã"dîÓ>¨N¦¯ ÒÿDC“åÏ‘¿~ýR¹Ÿy²i©öÖ'i­¬š˜/Ž©ß«WÆðã(¿K uæé²k¦ôÞ;ø"áZýéKÀ®êó ¬°Ð/óv>§k |1•)ïÐœôµE¹ÄžT½VŠ!†Sz;«Ú{‡REPÕ¥]ÑÖUÏÿXv¦ä·e_‚¯sžU‘žå¬Oà_“âÚƒVÖ œ«ü)ÈÃ
+endstream
+endobj
+2913 0 obj <<
+/Type /FontDescriptor
+/FontName /VDCGVD+CMR17
+/Flags 4
+/FontBBox [-33 -250 945 749]
+/Ascent 694
+/CapHeight 683
+/Descent -195
+/ItalicAngle 0
+/StemV 53
+/XHeight 430
+/CharSet (/S/T/a/c/e/fi/h/i/n/o/p/r/t)
+/FontFile 2912 0 R
+>> endobj
+2914 0 obj <<
+/Length1 954
+/Length2 3046
+/Length3 0
+/Length 3673
+/Filter /FlateDecode
+>>
+stream
+xÚ­Ry<Ôû÷–¸„쥬Ù‰Y c»„¬eßwc惙˜aÌ`ì;-„pEöPY“-B–PB "²dIè7ÕïÞî·ï¿ß×çŸÏsžsžó¼Ï9b¦²š‚¨KÀ“dar0@ÛÈ Àä LbbÚDEÂðgQ$P€)+Ã
+¤š”¨1¼À€îLcµHuò¿0õ»¸.ÙËËåý]ž:£ÿbQÞX/Êÿóo2 $F HÄÿžjþ´fb°dïßYÊ ‹ÖÄ{x
+…Q©ßßN¿µÒÁ£ ,žz
+@0 Àâ1`
+„ B™Šðà/5
+X&É¡{¤8v×nš£³-:\j;zçLb0Ej‹‡>Æ”žÚ§q&Å„Òºà™œÎ:´Éäýb»&ÔµÊú†°‚ÎJº ¿ÜÃoÓ}D÷yû^$ÂÍ óñ+cÁ3SÅgÅ
+y½‚É­[q%VvuFõ·›ÎϱºáL¢;ó>¨Xˆr©*B I‰}S,³ÈþžrƆ·©QopAFWŽ]O_—h*(ˆ¬*™\Ú2ÕŽ¨aä,àÈ[âkÏÖ¨mRŒÈë”BÄë8×ÖSžßkÒM“©UÊ×;õÔŽÛKl²{ˆ#UËÔdsYVñÀ…Yð'lÏñq·²’\/>­óŒq
+VÏ7£_y‡z‹ ˆvlöÖí²ÑKò÷„“ù·&ð•š*lFUÍ7låy3:¸!Ø¡(-D[9KÙ-U·¥IeŠC¥×Á_Ö*¦¥³ké ñÊë®q%‘‚ŽÙ†aÌ&êbÖ¡;lÌSåªhÑœ‘õ)Uq€RvË× Á–iNøc¢,lü3¡-î²ËŸŠÓ¾¥§×¶§N¾°–›´:PWLèbióç2`(Cº
+W’c8"T¸ZÎ#<,¦KFe~ž0ccϸ¿ƒB5TSÛÛ~Åe@Û<*õð*ƒÇÈêâÓË ýC¯âèƒK²ç¹:.dN<¥O­Ò3[+îΣƒ=n£$Ž*…)Jˆ£Ý¾T•º…Ù˜í;#ŸK÷ZÓê‘Ȫ”ýaÁ›ÛüâæÛÕP¤ *gx._)Š²%
+ÔSâ6=à"¾¿q¼¨›X3Ò[soS¶qúö—eC«—úï ¦Ú›C÷h)Dérœ[Á>}u5¯‰£Ÿ{çÇcÞv9U²`ûjõá˽²ô×÷‰Æ|Bɺçµ÷·z÷óÔ‰Tù…%–Y¸”j6ƒ¨çGŒEçNÊóüU6«è«+¼ëô$ýÂCóÄü¦A–²‡ÓÍ–-³› UÄ`qšn‹MzÄØ&3F{qtk
+Ýáð)¸nŸ›1o÷}µ³ñ¤"«QŸÇ¨3ö#æø \2}`ór^b½ÃÆ<M)äŽ{n=b¹NŸK’9Þ·n„õøH=42a—ÍcÌDP-§|¿•ŽÏ“_yAÔ¹Úä«ÆSï©Ó3;­E®îûâ…‚Ú@î3L‚·”pfÔ½ìt{/Â÷ë­uÑ{èlñê'®’öéÊýzлŠ¾7uº%MíFXN*¿¹‚þv͆Ï@P–Á¹#$ºÇ»|™²1ÎR6œOkB^+Ý¥{´AÎâŸÇ”¸³Î
+ü±<6º•~  xg•f›%°²€ô2ìËè{]Å«H_ÖåÚT㸹ÏÅN;[* pD¶>R|«¯…9h¾,§óÔC¥øi¸À岎¥8¿¥F9§sæ*šoó®ø, ž“¡%-Zt¦×—Eó“Ã| ÉÊí4ÆßT¬ýÈ’ÛN-f›rT s²»Ÿ"FÍÕº­å»Î¥ØC®8¸p\¡ä8ß­`¿=ˆ1'èFÝÜv4Ý€æÊó¥*ŠD”Ï l˜¬zTº‰6·!.iB7Ž‘%ƒm¥´â‚Ÿôkij-Öåæ;Ü\™ïO(`~ÆÁv·¸±V¡Ø†dt†^yu¼DLÿ3¬“Á×~hIuF†¹Ÿ*Ir!QéíñÅ…JLчÂu‘7ª÷Ô¸üz蔇]Ç<àš~»ßs€ùôÖ£²Ä‚}9¸âR⊛­2¯D,j7KWâ"ÍQJð^1£ÑhžDÅÇnz"ñ9õ†:.¥)ÎKîò‘xýÚãéâld7ÉPŒQîìZª¶ªÍœ*±Ò™1ïdÌ‚GEÌ‘_ >n¾9ï©j?iáxžŸ¦þ¤ÐøuX´i/cæÛœ„ 欣©ìõ¬åuÐgøx`÷h]âïeŒ8X¥Éb®×ßÐ,UéŒ÷çiø£ ÑÄave6u þFF}æNé¯ kF2|ÿUÂý­\®ó¡
+áND#m™Vͳ’sænÛnð0W¯LX«ÂšæÞ†ÚãCúÓUç«"æQcëòÂפ –ƒ+s»ipn^q“I]]oi\0³{g¢Ç§šB|ÛK|ŠÃ»Žs,œ¬eº-ubÆ»o¸L¶ÛÞý \ËøÖ!ÛŽXÌ8#‚”ݪ†ŸS„ÈBÒÛ´4‹´ »¦ìVO`©KöµÙÞ>/,ª«óZ
+æÉhÿ*z¦ƒ…•õý–Tù§¸gnUNB­…ÏÕwâmO^(\N
+jk)Ý:|P¾¢írìjØžEú…¢ÓlWiº.¨ë+d±®nPn7_@Æ–ú©¥})¯ÌŒ]¨”ÜQ±fÜZ{ÒûzÝE}T‡ÆA‡-Ï;|©Šþ\<òÖµÔòêe-ÃcF®†„Š†‡Úm2E›q«õSÞµÍìˆ>RAE^ˆê¯jÓé…6lÏõ¼å¿ŸÍ*`^ÁÚøßÆU_"Û¶6<:Õ’Í|±zçŸÅ·]kU ©|fÍ#›bnýzîlß»+
+>Ã䮤ʕâ äûî«TM‘•®d}>ofó© áöNÒsÞ
+—Nyu+7
+}Þ IÇ«œä—zÂã9ü¡ÌWËÔ~-ë8?–Ù‚ý¿á^˜g˜}ãrŸf„®<í}7‰’å€4›‹ËŠ í¼Æßµd$È
+âŽ×äÓs¼|s™©¿“ÜM7ÑC³b|öþ@{uQš€¨ÄípkŽùè4ûrƒQN©<¦Ù[³»ß<à¿C×ë1ñ24qç>6\(¯¯Mý¹®nÐ}ŒsÿÎXLcêÑÅÑ19PkìúSÐdÞŸs,¨÷ ccJﳘÜZÞϳÅÈ—£N±œxßKÿê.ÏóÏÍ[emë"YÓ+ºÛ: ÂÞPN‡Ý¿W³ÍÈ{Wuå«•#V«+Ï¢+|Ír?~±[úqávÙ”éÓìJ]Ò“jªìÞ¦î_TœNl¥Íïà<Vø‚"
+endstream
+endobj
+2915 0 obj <<
+/Type /FontDescriptor
+/FontName /XKDASW+CMR7
+/Flags 4
+/FontBBox [-27 -250 1122 750]
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/ItalicAngle 0
+/StemV 79
+/XHeight 431
+/CharSet (/A/C/L/equal/four/i/n/o/one/six/t/three/two/u/zero)
+/FontFile 2914 0 R
+>> endobj
+2916 0 obj <<
+/Length1 1259
+/Length2 7345
+/Length3 0
+/Length 8108
+/Filter /FlateDecode
+>>
+stream
+xÚ­•eX\˶®‘ww:hp nÁ%¸Þ t†ÆÝÝÝ%8$¸ ÜÁ îî ~z­uöfß}þÞgþ™ï¨QãûjTÕœô¯Ô4Ù$€3,ÄΉ‹K ¥¬©ÄÅ àbçD£§—‚‚LÀ;iS'€KP ál à†ó ñp
+qÃ’
+67µ(›:Yla5ÌMm
+¦‚9ùÿaê¿‹Ë:Ûب˜ÚþUþï.ýŸqS[°ûÿf@lí@P€2‚Úýwª.èsÊ ØÙö¿GœLmÀæv–6
+…šº£ÁÎŒxž\
+ä?¦c»CàóXGËV-ÐvrþÍ°­p²‚‚þà ¬YN®ç²°¥y€ ÿþï9–”„¸y²ñqظa3¹¸¸ßÀ6ÓûÿI4w†BAvN(`·á_l†ÝÈ dŽ6?1ú˜ÚRæ#S0Qþ’É‘"½$h¤#¸>]˜ý`Yï'´i\ DuŽŒûü'åH±‚hÁ»JÚ(áÕï©É<‡ÛIÀô)CùÄüàƒÂ@n_7¶mvøÎ<õ¦}ËÉíÕŠKÇË*¥=.þ|Ò£ˆe³3>Ö¾£«óèi@Ú­4ÃÜV¥dÎîJÜðí¡¤
+ÿqž´ûפõfº`d®2âtºè=*'“›ÅÚ(W¦5õ¼^SËOTº¥—‰ôó?G¥/nRËrlº,-yF­ô¿ÄK¢,<öGÖ“ÝsP¼JÇi¿¤4s­r טê2DØÁÃãÅé&¢QUŒÝ!Æ+Ƽ¡5Ú çú‘¦ß¥?¯á󇵉“îù¡hR§¸‡%5Φ“ðI‚·ªÞÛR_…Û#[6Îßµû¢­DÁ™aø#ŠUF©œ[>úî|V×ÚAvÓÂkf±|Ê ­Ò%a¡á¼9ÇwðÒ+™¯ yzÑa3A)U;d¯×ߢy=ß0³G5\þa÷}õVVàbEÊÌÀÀ×~•kØb;8ÒÐÁè)]æ*6™ôßHrëT=´+‚Ý?ê $G5R;:¬U½²û¶©ú|T-¡:óHŠS› d5“^…[å9”~~Û \ȸǼăsËxk’é*ÍkÌoSÛŸ¤¹W¼k½{ Ãï(Œ¤ óL3>„Uõ ‡ç¯¹xhZ÷y¡ap·ë~RÞÎðÆôÏè\pÄE¨Ù_0¶Â9ño¨!§¯¡M9 )ÁÁ¢Fìå²·|ëî•~HÖ˜XÊK+S>s¹Â[m:¹=ò’k¨–ƒ»ò0þQŸl’’yիʯÀdž'çò[á×l’Ó<·–¤âÉ:°cÇk?¨©‹Ì—édž^nMˆÕM=õnºÙMíôi¬N‘äâ*tòî{tÐjíspt†ø&Wÿü™ïÞ,<{¼5ì Ü’ðßÌoDg~ “ws3ô"m¡‹sVaÈoófT÷Z¥Vá’lZ?EÂ]©|icî6û%ÙÂŽ‚³œ BídS>åTÂÉò4ѪS
+ÜVÄ´ª´·ÈO3Éæ—1(è¬"Öø¨JJ#v½eªƒ<¢²zŸµ¿aã—«*½ˆEg[ó'ÅENQ¼œæûTÅY Ikô¦ŠÀ¡œ+(–ÊXû{ª˜Êœ&·úÚl¬Ý^†Ó’—­JèÓæœ-ÛÕ¡œ?­“¡Æ©ù‰ž44ƒ¶û’ºmby¿…y‹³ür&䢓ìæ"E¡*Ñ:„rri`œ>*Ða_…èÙGùßæ.¿Ú¢ ïÂè• ÷ÅÅÙs¦ÛqTIOiƒð_
+üõÎß¼Ðþ(žêGíò„=“U ŒeòC#±‰¿Ô/…ÓóћʑÎ&P¦ü\ü‡­Ë˜°”ÔŽ´§WÜ6Ý"quøÊ’@ƈʛôDDÚžoÂEÚVõÈ|—CŒÐ¸‡]‹ž/–w¥4=¨5¿½Øó#rõÓw
+N]ì¾+à…&XÎÖHzK&*vâ›Oa¼ªd³u@ 3øÍóG85È/Ixdù ÓXóç5S)‚¾òM¯B ßæù\î’áÚ¥nŠd2á=™@ RÒŒ¾¡Ú¥Þ֢⎔ÏÎ+¬˜=½çôpÞ9c¥ šGD¼¦=årG ÚšŸ9±ÖÃ?1wÌb¿«onߥ©Æò,Q¯õlõ,LýøÁëåd6»êX>UC‡EäX÷Gr 6=RìmnåR¹HÒøOºG³Pïë(ë ž@£(ycmâ bìG¯‘dù3ÂKuíÚiŒßË_]ì‡ôX
+åúf2.Gˆ®¦NÙ«¯È
+î8tñw2b
+nxÅy,2 ¢ðãèý²v4×á_àHåãÜ ;î‡Zê?tÉt:“¦«=hkPNýÖN\íÇ'æ×½Ü*°Y?u-p¡5õö
+ÂÓáÅÒ…ÝÐÝôF§—h³½ËÍ Ùñcï´)A~Ï\QF«;ÛµµcÃç…W²à`FÍ%´XìN†p0Ì»®öÕ¥ìí
+©ÿ»Á$\9q×ùm
+ö *DZi%,¸§Ð°§HØ"…ïÙÃ4ówã^x¡…‹ ?,¸÷Ùu]H-#¨,Xé<܉¢¿Xÿ!e}ôu}—ü ñœ žYBZ«_ÀŒ3]Q{ ÿÚ€˜rxÓj‡+_´sŸû‘²´÷µ`-‡ÖSÐ>šÂ öœÝ{Å©¨ŸÍýW2X `ý5÷ÎИÁ÷ǘ¢A#ªÇ{Ó~´;K bßÔfÎñ;íŸx•èô2Iµíu—ÈMÑ<óa©1·-,»éÍÍ2.|5^D+Ì•<‡–d37ü'´xd–ËyäþJ­Ÿ•“ºYbF+g3.©pÞÍbÁCi'¸ù
+:% ¨‰÷Á¿*ãòjËu„Â652=­—ltß)mUˆb­ÏgåXo$ Fîl®ÊÉaezj8±è¼¬{?ÑÚ^|ÊYêÎ`ƒÜóS%II /F¤z¶ÜÙ,q¥.—{Ђßú}YL»uÅÿüÓƒ'J
+òfabkkÔÔÈÖúI;µ‚2 œü?A›»±…M;ÊÁµq$?˜š?‰¦É‡A¥ƒ¬ÞÍq)NzdÆ)ÉT‚÷§bûî™Búç¤ðæ8žZ£Ø»ÛÃo4–i¥žD’.oG{V3öú&üi«\\V’f ص'…±8†¹—кÞÚöÙ䬡ƒËÅÑÐÚý¿î¶! ñ
+ú¯'Wè á%oö}.omûW‡¶b ÎüˆOõ¡Kêážè¯ø]ûÄò¤æ
+L™—ˆ®€7/¢èúÔæ½ œÚ¼9‡Ø"=uÎûÄú ´ž²q½èFÃðÌ–pà †eY¡³;îþ•’ñ§wå¨UC%; ÎÑ&RÐ}s[qPª®ömÞÔ°@qO§[s+ÛÍ»S²·½ hCäõy³­šJšcä*þt;9Ÿ¿.äy‚µ¡1挌ˆj?ÍP1yTÑì©‚‡÷çî—¨®ºâ:WP ¸n=E,†pÙ±Bi·”LÒ²œÙR²}MÊÄŸñö (ž¾›
+g}…Ò¦
+’òØ<—ûýžxÁŠm¿ÜÒäÕ]%0ü3EÞØ®É;–’ ÒgpŽ™NxŒš®pwòK’L1‹}ÛºëÜ»Uç½{”‚ª®ÔBÀPuömëíkA)%›‡û%ÖÈš™~ß;ÓTàPÏ›@G~ss0E`뙦MC°mÂsÓXðÍ{æï´¤rä…¼Ú¿ÛWWx‘”ƒû¹x½¨
+o¦Q ÙÌdN2äZh–ËRY±=¢-èq­«é5ß-iš¿¾±:ê,û$µ8¸&ÄW´-s‹·ï:Åmû{‚s¿iVÊè"½¨1876ðãöï©/›QMf<saA>pl˜Hßhjû\]7õ*Ë~Ç ££&¥—ß…‘¡ªz°Á)+¤·*;µ*6Üf(JÒŠe…öõ#Àþ7Áóç—r‚>Pí2‹K ºø»^d,z©÷šÒ/¾K¬^·?ÂþÁÓØ…5»/;z~ )è|á>稫X#DÏ¥6P~ }EAHa­ŒúC(¦3%”ÿöäâýÐiÎG¤Pÿ²îÄÂÖ&ÁÅøÜ!ItSÅGdƒ.áo¬Ëâeö_&ß}£I]«÷üê‚+Àêê,kL$,Ftל ¶ ¢tXÿ“¦ë•”adݶ…\nDzŽ•ÖKåÀ&“¸Êè·|…Þ)¨IP®yÔ¹Ý#dç"+c†pr˜gXB^¢ŒÔ5™ø#bM¯›pÝܘ‹Î”³+=Ôë áP¢}©æ|Å5]Nd¡ŠKð‡.3ßR·ϸòS¹[%:áñ˜À¹WZôÆrƒt–óÆ´.¶i[Ë&Ñê¼XôŸ¿ªIñ΂m+óH®x¨o9ç1/F_Rèn÷ð|R¬Ðô ÀÐMÀ<\Èy8F<uÕ•£Õü â
+T ¼ÌdOÖ=|à0 Å¿»WôwWUÐ’G åzÄó?±^dçf{ÀMžMYìb¬W ×•Ï¿¹Øå.¸4¹ÿvÊåkg7tBïÀÖê5»Œÿ¹tUðíþu‹'½pÿ°•þzÊ£m†Sò—~Œb¦= Ø!ô˜\sp)6SêT¯H*'¶ò]á&sp,·Q¾¼w¿p{PÑ0ëEˆ/´¥Vt»2·¶e®ß<þút¼,ú3>`z>˜1Vû•vü#±¼ØÝœ+ÐÝú*š‚]TC¢õpÏç2g>A“âúlKÌqŠ“¦\ýƒ>øgÐ*ÒÂrºSÔÍ_E@UíÒ†<°VuÕ»~µÏW;ƒ{ƒÍeAJ E‘ú½¹½^V¡<}®|y›T—FCO-Ö·ö]}“n`᥇q·‹O)kQ´í#ÂÁ¹×¦Yc2i¼¡˜'¾×v„yÔÿ×uûD$>ú#ÙëïõÑæž7˜å”3®—µ9ŒýŒê÷RûɃ5Ô£rªú©<š¹yëßûüðð›*ÏÔ6YŸ² ZR/¹úæÇëƒý®8wê|ÚoüÔ"1Á´$)kóƒ$“gfU&y!5un>K:§›l`Óëžé×W)ÆKéQoµ¾°úƽùþ5<©¡ÚˆM)ø¹ó[š¬CG©D·!³–´V¬ÜR¸Öz ¶ŽÞ
+ù žÝ+2ˆ´‘•ú÷ëq6|Oà±×‡}+½Ì’·-
+”’s^Ç¿12´äý>9Xuÿ9iŽ¶­øUÑb$"ýÈ`p0(Ãh× ííNÑÇÓtd›†›àÝQ>Ô[bÍ õcõòôoÐ*(ÕØ*GÄê¹h3—‘Y øk/¶ünî;oæ4_lS¶o¾'ŠP«t ¦¼„þ
+D…ßœõ¥eœrœàLüú£Î½âìýóT%'Ží’yŸÅ7‘›ÓƒûÏiZ
+q¯[K¹\žÅ)ûv–«|Fô»O¨Sªª!OæömM½ä˜E|@ux½7 ®U³’ØÁ!úá7÷ÙöAä[£:új,B7zºùG&³£ôÙfæn˜4ÃÕ‘S=ÆíÔ)”èMÚpo¦½Ž³f95•°ñóiÒLÄøsɬÄ:Ìé]–|TÑ
+ý[·ŒÖÃÎø°–ÈÆÀŠî=ÛÇ£D²Ê—“+xD#&^j
+<´œ_cïýhG³¬¿ÄU†~Ça
+ &ÞÇCæ½£ÝÒVÕ‹ýœ—5»ŸÌnß U ´lgLõf]2'²8g$+„Å}UßNEŠØéÓ7)y¬‰.ôV~÷ r;´o)ýb™LNçõÊfXï8“LÊ6!ÈôŸWÁ?ÒV¯Ÿ
+áPš#ð¯î
+}Nå#5¬])îy™Z·Pð³À2ÎÎ
+wÏñKŒÜ%s3y‡®·i2‹eÖ*–?*NÙáV®ÅÉbþ¬Q4)“ëŸ0è~û­Nâbî½þ¨_ÇeÅ8ªýA¶õ y”P³ÿ>C.áJ.ýŽAp`õgŒeìñë'¯NNŒñ{Ÿ—öîµyyÉNáBUò^~Ìeh F^ì’|ß—àªéèWQ%ßHYß“K oN#·^o|1¦X .Ýþ#´XN‡˜êPm$”<¢lï<b6¦ò!Úw. i[7uO<+W5Î[¿ùs*$3€]#Z‚èÎ_ãPÚ9PØ WÂ~:óR–ÓÙÜñááq}Vrƒ8’fÕ½a–’FÔgÅöò~el¶ôE8ïŸÒqæek½³«L>mÿÛ”Íc—°æ†C
+\Ù²¹‰D%’3‚+wÜþ òÕ*n’€Ó È›4¦lÜP²€_ŠíÒÛ;åÆR_æ˜yZƒ+Šùž0„¥·Pð2ŸŠ¦¤7ÅÖ–œøØ7÷I<Õ=äFj5׺„0ìkF ˆ¤(œ)áhi»ýâl­¿CÊ›åÿ»é“ Îk9bŒ®c,éði>øªŠ{jÞ{
+Óúšæ9³ø8^ýÂî¬W!ìÙGþ`»³â$ÊOGyz|kÑàö Zúu¾Ù S´bâ׆8óž äÆçÞì]QÑæœ#M6Cü¶Yk€¢ŽÛå-‘a”B²²3†ÑSKÀÎWµ†ÃÐwõ}ª²<×9ÆÊÖ"^æô6¬…šé\ÒâÎf¯HxHíw È=:Bቇ\†CÔpUô3Ö¦ÓwÚ
+$Ê€¯6ƃ‘èÈŒ·»ÅdpD8eÜW¨‰\’ð… £ë+Ó oŠ¬û¹L¾\ˆWÊD/æEr'±Læ
+õò¶Õ¬õX—HHöLëæ+—»Š"®üÀÔo–%2âïGWx×<W]ªðH|F´“dëV©ø´“WµÇÃ’S2(Å 1=DáÔ$’UQ>LMgù?íÎÀ
+endstream
+endobj
+2917 0 obj <<
+/Type /FontDescriptor
+/FontName /FCGMFO+CMSL10
+/Flags 4
+/FontBBox [-62 -250 1123 750]
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/ItalicAngle -9
+/StemV 79
+/XHeight 431
+/CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/eight/five/four/hyphen/nine/one/period/seven/six/three/two/zero)
+/FontFile 2916 0 R
+>> endobj
+2918 0 obj <<
+/Length1 1212
+/Length2 3333
+/Length3 0
+/Length 4087
+/Filter /FlateDecode
+>>
+stream
+xÚ­“y<Ôû÷dzŒ¥.Æ}ÆŒ}¹)K”uŒ”04f>Æ 3c_Rd ‘¬)„¤$Š(kd)Úì)×’-[$ÛoZn÷v¿ÿþóϼŸ¯sÎûõ>ç|¤%PÖŠzx²3hD&Ñ‘p¤6``n}‰
+R|A<ŠDxŽ8ƒ®T難$2 ñã}¼þ–|A
+•a
+e˜”ñd1
+~ç ÿ_+Œö}7¢diebtÌPþç\¿‹(,D;àˆ¢¿Ÿ‘ÿœ]¢ü{@2¿¿ÿaþsÙ1ŽŒ'\e5u
+ÀhMàB¦@¿•ñ8%FÙOö#}“~P埔ºÐþ¡?)‰LaLKý—¤òSú1÷¿±ªúOL%ûÐÜüÀg0*cFªcÜ~q$‚‘㌥ü 0Ì8S°8ð73H„ÊOüû•HPÂ"áÛK@þ~OÑbpG= $ê/¬ù7ö"þ‹j1° ‘L¦üV\Kë'ý½²2ãJ×oß1H½}ÿK`˜$‚Têï”·Àx¹§‘FðbLû×;
+…Qúû—ÏXî¿Ï.Æ‚þ :ÐKÆéD¸§UFÞ=vóu1›Çz[ÉÇöÛªÐ,>ÄZíº•„+-:÷CEB“ Ç!œÎU>ÊCáx‹KŽ+y|w+bs
+m/‡©ÕÃû­ÂcS¹·åe¦O4yŸJ¿vñƒ¨v=e,3FJa`Eê\×uü”¾Ýͺµ‘^NÞCèäC’"EìÃL‚Ó]û—ªÎ¥µÆÍwš@ RbeÞ¸èr:¯`Wÿ‚b\|ß¼‘·šÐkìžúà'„ßÜky©ÞÞV,Z2Jz±ÙºÐÿsl¨hPßs/vÁ·Ñ3ñ¹Ÿƒ-9 õbúφ_7E´~PJ 3®3Û×6¦â¶!Ò&o‘ÊïŠQa.Ÿ¨~áþ—MY)2jgŠ]¤ ôK!ÖãÚ£1ÃÙ@ï[O¯ÙƇÀM+ÓÏ|ÊÒÄÙû†ä;Ò=`¸~ƒÃ¢«lîS±šZå–0£$8>§ÚÑûÚ8,Ìs—pv°æ4Þk´ ‰o‰{æ¥Árò¢Õ‘«êÑâ3ÍÊ/Û«åÕä$­²k%ùv‚õYkt±l;ÊÝ—G%²î\Ìb²×^Ô”è[cO½¨ C¾ÌzWjO1«d~Õ©ÚµpøÜ3þsu¯˜%ΰíiðHDQg{‚Tâ81yû`³{)@™ðc꾺F¹C£V9“ó3!:ÅA¡ïæÄï0 Ü»•Á—²>à IÕ >ê(ÁϾØô¼`øà¶WdzÆǨ +ÀQ¹š]}só)lØI”ÅêÀÁÇ~®Â:¡š¤víÕÀI&‹S2Ë|Ø^EöÈ/ˆ#aóO”û×Ï|nAB<–JiÅ&.;1 Iä›Ãèwe]ÂK ©ØÖÒWœê¤ñQÌgsXJ’OüåvA‰T\P#5z¦<{ÙÒ!Jß´ùˆ¼2}`b×@¬Ô À‡:“ãÅìäN~M4*Â÷/ôVT@¤lö~Ýy´‚á¸lø\{qfKSD„R¶BŽ ³ƒxö–˜*Í&( ž÷"ZâJˬw4\+¥ á|·qöôt<¢®«Dï¾I¤¼nýЬ°§Àülû‚Ìl¢+ˆ…éx¹×Öî(ÿÅÖûEWÑÛxO6§éñ}÷Z|8S?Sæ@ OéïVþ`Fëñ· *(iÇé½v×T8ªËf4” ¯þÐÀÄœ}„VOzÔ¡§Ýnµ)Õ¨1™>åàôÕ˜ì¨ù¢WLAeb^ÁEêÅsO
+RF³8|ITi¹ëÎéà¼7
+"`¨ÇeS"›C¥œns‡ûÙ…µà6\’ãñ¦¹J#,q9»ËF[ŽäÖÎe]àü:òz€Šv‹‚è|P‚³œböçMßlYz¼šgr,îÚXî8¹ú©i5]kAJöÐM;pϪ®¥„TDóôy'Z'¯³yì­7 ¨}ˆ¦Y;q›X
+Û½?ÍñeOu¦OLœÑdÉõ\•–š
+†K¼”›ÄÞn^ÚS•b±çEt¾ý Ì.L÷Ê L_h›ª´º /Œ­Uêõ›â?@‡<¹?O¶¹¼»ƒ¦Õ€ê(qÊkméJ¼ÝßÅÉžA;î}¾h{Wâ®!Øšë\ëj—Òʲ;¯’žÎóxMžBô_dæãkãº[ïËÏ›‹›Üo’Ç»Ú6tÃàø¡¬·”{+<9‰=ã˜6+áƬ„Í üÆÒìL«ÙqÎN˱ëö×L6úÇGÙdNÓçð«è˜=/’«s%
+-¼
+Ëd>×M™”—ÖZ­Dû½O]öÝüX,õuoõÞþñ&4†7l³Q2Åûò­ö­Æ—z¬f‚†»wÛõª,n,˜wÝÄ_ZÃ|ª{Þ5ûVLtšÏdæ>ärMA™èPÑvhq¸Kxšs¾ÝüðÌyKe=î“ÇEkYVº›†tûÕ»ù‰/Pùrk·Ñ‡ƒÏy‚\¹?«GNkÖ½v´ÍVJÄdÞ}UXÞ>ÍÔ‘Ê|‚§ÀuÇ°ýãöe§ÎÃÛÍ›½…GË- çoa[“ó¹‹4èCl+˜¬ÅÓg4cÒÀÇ›ªùÌ|üvÛ)N•yÞ2X³&rÙ™ma®Ì稊„Þ;™ÚÙzþkHä¡4ïg Ý·ÚÕY[š|­sÖ”›µùc]·’Û¼Òdµ“|³ :>­àß[Ø–Xàÿ0CJkhÇ[6X¨Ô¹Èm~ë¹ÎS‹¶œÀ{w›<1ܸV¬û^5½¯k:tßøurÕ Pbjuîèó,™˜MSÛ§&W-­Û*lç+ }ÇT¯=²ŠL +}|ðƒÝÌEœ$«ÄÞ`rš°Ñ ¹š_mE¦óÅ"ž}š ×dKŒ!Ä´½ÊŽ4ƒÜFLi¢mÏÙuæ£îB­OÓc®£jüÚÇîÆ-^wÛûaΟæÔÜW) îowàz¦^e´ïJ…É=ž’%Äs¡A‰@T¨[li"IÁ唟®°>"â übhþ }Ÿ ¾öñ#«æŽB.·Ì“¡z»Ó¹Ý ÚeGg<R…!öûTSó1ÇQXÏ5ˆmdNÈû#‰
+ÀÎÕžÿ*ÕO-‚EÄ©=•½²µ«…Ç‘ŽÎn6VØ©îÖÕùëRñ4KËÛm÷îé¾4“uhx„_Œþˆó_9ç>•ÇäZfD é³ùø8j{·ñùÒÛ°«¦ …a¶Š«^Äq>qO7ÇuöqÇÚ©rŒôÊÁqu­Ú¡lêKdKy‡åñÂéÜàtÅUzé´S¦!4Knd‰_8ÃQRóçŽË>•¼ö‚^Þó:’½ÙVØ̽\› Í8\ÊÙFù?È÷-ø€ë“Y®°éb>î. lü«S¼äì±ùŠ¥Û}ísµužäùÜŸHS=ÝdUsp–-ç*Ä»‡äAÂ|²‰F¶ÑîÀ °ÚÕÎãzÅy‰.¨‹eTU£&Élö]á(R¨– Q™ÿŠJž`[å£/¿¯ÇÌ!©
+ñmr"`ÊÙFò¤¦éE¡n”j?­¿]lÚUT}EºŸE´·{çø~ÑË–I„$ÓÚ¹vô£áGÁW1ì=Îoù-æÂ
+‹“è[3¶2=WK\ºILH–~õ.‘x”îýBGŽ‘¥X}©Á£s†5øˆ±¯p·‹xdò|”÷ã¬zÜi"!ã]2wÉÙ›CKµëH%íÊØæÈuˆ¹“õ%!•ä¸®cãBëc½S¹ªÆR±WPª;Q*;F‹Òý â? u }墻P¶ÖÇ:ÔéäÍš³}Cð0í˺Lëí‰û’rªvI.²ÃýBÐôë+5uR©wÒ
+;¼Nä¢çRõ–p¤Ž÷
+éli˜`–z(KÒ‚„œþ£î®=U?e-^OúÔ¦ójk(Ìg«…Ž?UÓ YèíÍIð%85Œ•çúÚÙŸaVg½ËÖ8Zªö)vþú¼F¢3’pähѧK¦YØ`ôd¡ÉèŸÍÕ›fÅôDÌÍy¢Oø}<žŸÿÊ°eGÔ…ÿJ…7‡RJÿ–sedÑf»™ÎRœšâ¬F¶ø=G³^^©i¤aoÞ:,KúÐ{§‡÷=”/ÚÛ¸mØKåqŠêžàjYp+ñßH”æÚu«ïÀvQ²îKù›Å‹S»2?ö)–l|*L =\É^}U,!c”Cñ“é-ÇË[Ÿä§½®™ÔRK›9m¥¸Ø©"¿wŒñö^ywi—íɸ%xïÞpcsS|™s7õÀÑ~
+)¹çEŸ? ï˜OÊì±B<PNý@2ò¿ño²ƒ»¢t9Ë“åNËï-z–­¬›§èÊ&«%%z^!:\M_ºðTn~&Ńó|îY¨¾¿t’È(]l6áDû'jŸ*l½±BUi3­áÿ
+endstream
+endobj
+2919 0 obj <<
+/Type /FontDescriptor
+/FontName /OQJFED+CMSY10
+/Flags 4
+/FontBBox [-29 -960 1116 775]
+/Ascent 750
+/CapHeight 683
+/Descent -194
+/ItalicAngle -14
+/StemV 85
+/XHeight 431
+/CharSet (/arrowdown/arrowleft/arrownortheast/arrowright/arrowsouthwest/asteriskmath/bar/braceleft/braceright/ceilingleft/ceilingright/circleminus/circleplus/floorleft/floorright/greaterequal/lessequal/minus/multiply/periodcentered/plusminus)
+/FontFile 2918 0 R
+>> endobj
+2920 0 obj <<
+/Length1 763
+/Length2 673
+/Length3 0
+/Length 1198
+/Filter /FlateDecode
+>>
+stream
+xÚ­’}PTUÆCJaÁ tìŸûq7pÈeÅmù%©—½g—“wï]îÞÝvÝ@%5RCCE0‰”ÐDHÖb§Æ™4i„00Q Ë&²»ã„ÿ6÷Ÿû>ïsÞó;Ï9!AŠ,ž§ò`
+E2<ŒI€,=ëíX€ñ…œ U ¢Èd%
+‘L¶Eð™y¶ÆžÕlF42ƒ\!_(ÄX#ûÍÿ½»`¯Õ¤šÂ©"q PѴʲ£Db1°b
+í^#òÊ×6}Vt4rÍðZM겊±Ÿ²}R¬¦Þ‡‚â½ÛG{l“V,-R_ç—•6T7¦4>p®½´¹rôGúÉþî[®;Å~W8ùm‡´M:aö›Ä«º>T*#îÕœR¢AtmàbU¥-‹ëÐع.¥Ë\ïúp›þüþpGŽl·r|[ýÚË?,ˆ¹ ×šê¿B—ŸÞ1¶OÞ–ŠÄ8§ºløÛú4ojzD[I2XÑX½ÈÃ`_¼—´E„:ÒgpfòÒ–Oüß\t›Þq¾©|_ÒXÁû?¿Rø8x[IKܨçèŠ'Ñçj+oíK´µNˆ~}qh$È´×Ôº“”ŸEnM õ¡Ž}ÅÅk„Q›„5Í X™wPým%å’i-å4uš‹¿³q;²›ÚM븉·‰sécóâ
+endstream
+endobj
+2921 0 obj <<
+/Type /FontDescriptor
+/FontName /ZQLTBN+CMSY7
+/Flags 4
+/FontBBox [-15 -951 1252 782]
+/Ascent 750
+/CapHeight 683
+/Descent -194
+/ItalicAngle -14
+/StemV 93
+/XHeight 431
+/CharSet (/minus/prime)
+/FontFile 2920 0 R
+>> endobj
+2922 0 obj <<
+/Length1 1711
+/Length2 14395
+/Length3 0
+/Length 15356
+/Filter /FlateDecode
+>>
+stream
+xÚ­·cxeßÒîÛ¶mÛ¶m­Ø¶m³ctlÛN:¶;tðfï}žÝÿóœ¯ïµÖ‡õ£ªî»jÎ9æµÈ‰•Té…ÍL
+_>þsþ7€å«ÀÎÌØÅòI_mšÿůss«¤|ñ_dgýºÿCä_ûnÎÿ¨÷bñü*øWíkR–^Ž–
+¬¸Wwâr/œY¿'÷}ôtñ”‰ršç5vɼâtÁÉlV½‰åu‰-Ø5n©pRPh’ÐÀ›6ãÛÚÓË­î-ÆcË*Œ,dú5„Zšc‡zÏYïz˜„|¦÷Ðç
+rz‚5ZååÓ|R낼ïuÃõ£eÏËâ2nª_¡Aî™yrPxC˜¸Žr°½R=°ˆsa5¥¿µ¬½ýðû£ÉÍ»QÂ]V2˜þlÄR}¾GæãwÊË{hw–ùi`[–ÆL)J“„·m´rˆ
+ž­õªnÿÀ”äÙâ‹Qn:;ÞsIi%Ö}N®u£@0½w.z½™¦Žú‹a{–»V…`KEÌþRnb_3¹ d Ò…Qµeêä´µ°p3¼áœ+R@
+÷¼Eˆôj½3õÄþºÔã{F¾yµ_8d3´q¾×½È¬Ê1V |­(³¯’ï&åy4šóÒé:æ1]æn½ôhô¼ºÑŒXqZP·º2
+B’c<Û®ÝpùõéPM&ÙÔ0„Êq²“¸%Ì9&ÕÁ‚RÛù²÷™
+»œªœ“š~ÂÍ:Æ|Ÿ³¿øñ†µÝs¾ó–²æìù©[вà(‚tCô†Í€&X-ÙÑgoÆÙÌ£â—Áyç’N“ÔËãóð‘p-ƒ¿ž@ H¦jŒAãZ%ß=R Dë]ûR´&
+¯J} R5ªˆ£4K—)f¡êGØ…‰ÔsOñŠí‘\ˆ9½&¥Ùñô>¿¢Ùø\$BÓ×Þ¶{4ìEu‹†Í™Û7d˜ÑZé©ÔZ¶E:8e3- ÙÚLãôžx,œÌ.ðoV™i¤2³KÝ™Ð;ýŽL[ÆÜß30Ûéõîa#'¦¦*”-JHScÏá™Ðƒ'™.PåDW;êw;µBÑÃ*Y?Ïgν~§ßføm³U'cU5Uûk äBŠþjLÌ|MÓ
+T„˜Ÿ&Þ
+÷ú¬ç ;§3ä‚gxÍÉT¡)1ÛÞi"i É âÊ0ß0J¢ò ½?
+1¾´âà≣”·0¡²7ä‚^D]r­ ·T—«`1™Æ‚rÄц£©î#N7r”:{³ˆÁƒz±Ç9Ô0›Èg_E£{θ1Ò«‡€ØZ9T0Ÿ{Xô±•Ìø%¥ÿzØPL+VTø•qË.§ l¡Û½¥WµíLjø]b^¼âM¸Òvn<öéåXõóÌB¬™zxüô–¥ýuLÚ” Ó‹tCY'¦3€Á‹“ ¢Â“˜
+ç@§QZc÷úÆ%>QOïOQNÅeMv*ÆâmÑdêÈ]Žf‚¾¹ ‚ô]^ÊòFE76aÐ "”f¡Ñz;îw·à@ÿ–IßWi‹„à…£³8Á­+{ãgºkD½BŠ•ÄŒDn|ÝÓ€k²xK#ιn2Koˆ!®“s{”-êU²˜¡,DúÆb6#åno3›Ãøí­ùŒ.a̬[À3_oY
+±9O¸ÅÂÌü!ÎöÌ€ÌW:ü²=3²Uí—ijNòõ/¾†¢‚‘ù$q)w”_ïüó¹Ã°4;ŠÇõø:ccƒ„nÌÒéÏfó‹öJí«=ßq¿I
+`XçÍIŒF勬ÈCÓµ˜Î¶ ‹ºÏ}(
+,Jžá«µûdÈÂXÈ'í
+3£f|ãr>,Ùøzå4Ctx, qâ™W¾ñ)(¬3"'çÒýãÃÒ4¤¢ƒrôM9…M´ØcÚ¬–£éyòl^1*†¾¢À]|Xí±¢l
+ù`v .³ù;(ÒgÛàrÅí#×wçORÞ#oƒé°þY»õ
+U®éNÌ©Ra åþáÅzµ~ɶ°h¶ò úèó¬ïû?)‚l! •ÝrìvÑè³ õ
+3òùu“pO5Î~@èZ­Žû½>ñEuÙ„ègm· ëk½tkz¬ô¡L ;LÇV
+¶dýÖ%â&èâ8èÓãîŒ5C'ƒ; óÛW¹n}ÑÒ!ç…¥3¨tß÷•ÒäÁ&pØàÓ‹…¶¨–…~àÃÛ@ ·*»2qiž“—±Â–A Â\‰+s0Qâ›4>×8ÓŽT`M#sÙ†ÞÕöºÁ«ÜQ©¡ÁæY ¨?~úœë CáìãFƒ¹‡…."ºôŒ(þ‚
+íEÿà ËÎû^,Y®’Ó!/?”qªÇé¨È©ˆ‘°¢W2 5 •€™Ž;÷­aUJЄ¹¹ÌÐ`Ò¬2Ÿ#.7 otxST(ˆd{ÍgN34³k|œÊ÷¨Vbœ”ñÛ癿.ñ7¥ï™•у¤¯¬œ YŒ,/ÒIËv‹CNM]/ᆼÀF‹üŸ0˜KÓ˜)ÍÊ”càHQÂb¨a[<^E™uF†£ŠWÎ1Æm!J¥ìûÁÉX)Uˆ¿£b2¬ôšwݲ7‡hp
+¦Hš˜2W4ŽŸrÿDüX—|ÙU(KÎC´±QÌ„LŽ„®$¥Wô5£[Ö(Ö«§ d>E°’‹É4*Uà]"MêÞ%ÐÝöœ10r†Ò‡hw‘åÙ9-Ø•ÛËÁ¸w¬¯ê÷™;_‚ƒ4’«ïê>²¥[?¶¨µ2™Qƒ5×€Á_¤8ûmŸ‹Ò_;´úCõ ªõqø–eTþÊ÷µ‰ *Ú xýÅœÄj¯ëû› ÈS»âO›¼íTEÆ8²• —áÕÒlŸ?ß•ÍÙ4cÚ3xÒ½šÙϦ×ÊÒà9¼Žÿy¦ÅBø•t¬TB7ÂÖb^r”=?…â#vºç;ÝȬ·é&Áñÿ³=û›Éáuš1?ϲ‘’ÿïöÄt „‚lsd:¡}ì3,MŒ\[–Ã]obîÛ@¡?Øk=•ìa0^á;!Y<Xa©õ1Å3AP˜úuM:uŒ³úu¸¡åsŒ"㶀­©·BÍœ"©ËÃ{SSæŽRº&ê FþUx‚”vÉsͲ¨Ê~ÌPG™¹Áæ ª!¸ÝWnyx ÉM,yˆÓ'î-4²œý‹|Þ\£J¸²u|ºø™äö…H"`èóÈÉ­–ÄÚ¸™é0d(Y
+Æ0±cgŽ-†ñ\»Éf[•XHç%RVNßNÙp©A÷~®™9,OBÙžßU!Så½>˜ÑSËÕú/5?L2»K4ê'CfWŠ8xcÈXG°»Lnw—Œ‡ª9à&¨WUôSçÉÄÏ5p~3V–èZ…oÁ‡¨M„ Šû­¹Ì$—=ÝÅv‰SÀwõ Áþiõi¦0Ôüú
+€^}s›Á¢ÞîP
+òQY`©zÓ¥KÖŒÚöº âºë"
+ hýê­ß_2q˜.Q¨ÎÀÚûIÈ2%¶å€EùYí*‡3l† µj˜ÉÃadg9£§‚B~®Õ=Û5fÍjSY9 ÒÌ-odµ…ç4}¦Û•¿¸Kž Ô™~Y× [Ã<©c
+­Ãø8¤Õ´úªúÞÑÀÅh–òâ)ò¸W€Õ RŒÚ79vþW
+ËÐk"¥
+Au$K
+?!€×a¯Š›3w|®%‚pˆ‰¶P\í—Dj†½=½(›j}Óê¦éfõ'$Ýó>°WMâ†ÿ4$ëþ¡`'ǟí@ Üá2 ëŒ `2t, W[ü8¬ËÅîê—*qžD»µõdV W&ý®Õm¯»gà&àäj‡c˜áö±E0ï7t'_éoª‚ÐanWíšøÄËz¯.iÞÆN¨žñ±-)§§Þpx·¡/²ç.'giœºi‰e³BmŸjËÖY$wýÔŠùâÀ×,O”½t¤
+Ué@‹tÝX+9ÀlQ´Í»|KíÁóžNî@êõóöÈ»pû|þyÅ®\%ô7y/ÞðGϧܟoŽIFÝaú¡´hH\còß'ì¹RE¢¸°æŒç™0ïL'2…Ï4`®Ìå}šÊÍÄŽÉØœ\ù¥:ã<ý‘Òá%XÞ÷u ãûçÁIÇ€{vÙÛg±2è#^G‹«žv¢U aZÇ-Ž­þxÂ#Ú<)ú ÆßR&ï¨'!Àµz»i[¯É<gÉq1-öàß  6^Àý¥ýéÍ«> viÕÇuŠ¶É‚ §­a‘AwÂæ(ÚëO–ÝãZ²·BÅõC87u°­àû‡]_;%"a }€—.ðØqµ£t"ë×ÿ©uó;f¸^…xv¡M냗+çCÞçýg²`“Üï€ËßENWaå{+õKʳn›@]X
+„*
+JÏ9çt5Bô±ŸXâ‘é—õÈ¡œ³K(»ÏEq¸¥ã9SËP‘>—6a{îÏ¡ux}=Fe‹ÑЭä3ŸhHk;13”IŠwêÅ`1Ô ™+m%·Ó=½¤/d‰A@AÔg=ÞÌUƒ\ aÇø8À‰¯Ö°œ6ª%\‹MJ/hcv"K³­"í~ÐäUhîN¿H-{"î’Utº’º¾ƒÄŸ¡€äˆ°¨[ý &–X%ºH¿~ù®¡M-3ǻԞï%¾ïŠîÜå¤F¡ædÇ‘„WÂ’pû™ ‚Äzr<«°„[Ô!wÄø–<R§u>ÔGY nû­¯À{²è›Õr§ª4£áèË.—RŸððõ+…Þû¨·ðWábh2¥ïH+XW¢ìÚG1‡(U=Óñåe†©g$åH£<!tk ƒ (ãÁâ)¾yØ‹ùì4ŽlÁu<Èc›¡ÜœH½"lc Z ¡½‘T3Ñ°äZP–³¿'LHfŸÈÍko‰ZyÓK*gGè*ª‰±»Ï™Mß
+šœˆqN_$ï¸Øâ1#v¢5’èÙ›±,þ¢5`¨I•€.š£o‘¨8.@¶sHÛà›Iû–K5>eEÂs˜V¡é¥ñEߨ üèœ 1äOFs3N>g›OKKÇxPoøñE+!xv±Ž£·@Ûr•GrèÝžÖªDF,û 2Yq!É!;M¦j—"NYÙ s}ÕËn÷E·¶^U²Ø)Iƒªî J·û
+û‡èF?MxÁÉ[+¾,Œ$(û^xì*ÔÀ¯xŽúGÒàUxú{qÛû&N‹)âÞšìü7qiÈéÛZRyöÃÙŸ» ºÅ¡Tvôó{0«Lb¬ÁÔD€6sddßo±j:7…v–ÅìÃïóÅ€·&cß³'þ(æܶ®¦;õõDø° ÙFs¨$!ê_ÿä0Já|V›ù\ÿšönåí‰ÞÚ²Pwñ=mjágجþÖ®ë_ ‰.ª>$oÛ¬­@†a&1dÌpqSG9kšr–iQ oÈŒž•ÓÀ|D¶þy-•.¬©Õõ›Ñ½K°­2ä–¤#œî5ŒI€Ì“oc»T©J8!ƒÍðFn‚Û܃LVã,ÉÆà:‚zï‡Y%{G\)0+ÁÝb'½8èÁH¶üÒHçùwRåorÆ2”eúÈÖˆg €ëB¨¾ÝÈg0¹Çi4\OØfVvä=K¥„ºY)ð±ÑÎâås"g 1.GM¢ÿF†SjÄŸp'¿Ga4«f©ýè’½Ù 8wd]“,ctüx‡/»€|°S¥ƒÕGF| !o?ñRº¨hTŠ–²5‘€Á´Kiå-v
+δï~¯C RÍQu4³i&D©‰êêáqÒ
+é:Žè½õ¶˜1µ±7OY¸»\÷Øšt…×3­ÊC £í’ ?bÿÃ’ÿÖJË<´ç§ ¬“!ü7Q§ëÎï™Á0å) ¥Ï"<(/o÷~8o˽J¼I¨7å‡URI8Yˆ.ÆšGäpnYŸ·\~ÞòqÒ~fcÓQˆ`R`'èůÃ{8$ñ¤?H¥UÕßkÉ¡faf¶d z|*ÛïJ¹¬£È•C§TãzCëôŸ›5Œòý}³Ñ®AÍÊs”@Ψ賀¦Vh[Ê@oñî;dQDÐS͸*Äþ>ñÁô.PZí­øúÄ¥™»l{©:.éÄù©/?¥ÀÄáåHo’ц„#éâÔÏÛ•<ãtw:’¡ ½‡«5 ;òåŸ'7©R}LlŸ²)&â€E‚{\ˆNyûÂ\òäV¸B®o–@ º
+‰Qo-aKM%µ×p}3Á‹ëÝó'ó4¾í"û˜<¹wd[I¯ËœRaÝ·k_~6Ò
+êØýz&<.«JKÁU9£“¥pAcõ \æ…›«KºØ®$;'
+2²ú3IÜ#ÇWQƒ7ݲnëe›’iRÄå¸Zrl“àì2m—yæ™a¡ÓÇ-F›ÚŠ´žTóêŒYãø<EÊœ<Y{¾;¯-ßÅ¥#Öpèä‚r£Åþ†vN&^Qö'–ÏRº‰ïü‰åÔ)´5o¯54¸iQ?x^-IM |odU“ã“2KŸÔ‰‡>ÿÞ ‡ÏªèTb¯„hk;ÒxíÒ©ç¢úŽþ
+zH»{ÎÆt¦”:IéÅ6‹¤½>–×ÓÖ³¢Âµazad.9dl¸.)=}qå¥SלÚ6Wø¶Ã¯˜”_•,˽:²ÿDäÄ{#³dÛæDzð)™¶p "¥+¥Vä(ÞY¢Éû‚+t•>
+›;‚¡[/h÷¼"ÛˆpæÓŽ7êÔÑ–W—œPóÁgÙB¥T¹½„Ôl³óý>j‡eYD}.ýÛÀõ"¯ÖvƒÆ¢•1ÓO¢DÈÖŽ7t¢W‚†O„cFYUÄ Kaj(¹)ÂlÑ~DnòÑãwûÅÈ_Ûsä –%”™¼Œ¼8+£PÔü·ÍZäõÞþ7ƒ3,ªVDÀhâbÝ`ƒš;C
+7¬Äˆ
+vXœßãoŽyc¢_¼í×xM6 åÚ 
+ÍÖU{‘#¼ ¸ öðUÍ ð«Í8?’^JPæD;t &Ì7ï²õÕäç;›ìî8„—Ô/jÍ.ò.&ŒÍI¥×pÃàþø›%åØ
+!Þö¶çÉ‚õþá¨,+V·Óè8—£3f»­V‡ü>…¹—¤ßé:“=3—‡à”‹â§‚;ñû¤ôR7üáCØóè"Ê•‘€2‹ õ$ž.½ªæ¢êÍx"Ñ9ó¦ãÜL8åE»éÏ0당Ҳ0Ãjþ™§a¢VÄ°€2ÒrªBzÎ9œÃ‹&í#Ÿ~Ñ“†QÇ#ñ®£JuÕv1½"‘%œõüïßï*ñd9Ûì>â’žªl9᫬Ás£8xõ@ÁL§‡5¯í4ø¿8½‰—ÀU\I®ãAài¯–ì{Â{ }?M(UÁtì$ÃÇ £vd¾ö±.Oa²&u.Ô¥úãÖ$qåûÒº³e‹O×—„E%Aø4c,yþgëÎÁ€@
+ž™œŸgqnœbÐÔQÆÖýZZÏ0Ç:åöØ böD¶¹€¸ƒŸ~ú½w@pöà,gàqT7L,l`‘©¼›Q>ËŸÆ¡A€üÎ=³„Sø^sŒ×ÐÌa»ðƒ½xÂqõ6~"“$Ö¾9et¾FÇ/Ø+ì'šÆ*ùVK1Í
+ ©4½v¤axxYö~"y¤J/’²bÝ6#Q¦î§—È@žd“£±°§º®®jù<úsŠ.hG$CÉýýŽÙl¹¦$ë×{/¨x0Ú1ŸRÞ”YõÀ,™’“³FB.ÿí˜bqqÈ€ù‰^– »F¡½SnꢫnQ}Š‰Ø<Ñ!©ŒcdÆ­ä*‘
+9/1¦@ŸÇZ<ijbeôósy¥Üõõw<q4/ ×iiwRÕMœ#Ÿµ2V<è=D±¡Õ©)¤2dD[Í L˜€UÞà#™\
+(r®C{_–!ÖtñµwʵšýNÑíê°iŸöH™ê„{èk‡õ÷:£QK8Ÿ¬hYYŽ
+µÕ!øãíÈ™ü•H#…éƒ1ÍÚµFq“~‰gxúzãQ=.Œ–íXEÃÄVk&s(QZ†ÀüH1IÒ·ë§p¢‚<ëüã‡ÝŽ 7…_‹¥ãoéÐæk ƒ ¿ ùn®o™0Õ[á |Ä;›0›ÅµK½éPb}oû²¨ÓÖpµÝ.¬(=]¤Yïá’”`UÉÖÂñÆ<¶µ[Bpºñýióïý¡ß§3rز0 ¦¢_iSåѽÂmoÓ•^5¬ŸóÛtKuéiºlXM~ã_†¤z¤‡È‰4à mØÛëï•V>¥-ÀþÏ2Ìý­¦‘(0d¿ ƒ J¾tHPÓ«îÖXŠÏ1£Wô NÊßÿÒI3§0ÏÞ­ò–ÒïvžQ""[zeuKi£½*;Ù›æÃp,EiXÆöhR_Ec=D^-ßÏãJ-ä_¦$.šo)ùŠdéÿ2øè¤jX€l£4—Åð2þüÆ7hŠ+
+™Ã_ pÀgiSq(–ÙÞ¯t­ª·¦ ¦½Vk>:ðS»îcYµÙíRµõÀ/ÙÁ9RJF·ÍQîžðˆïö!õyL¥_aÎÃΰí?fOÒú±·ö§O6³¨ß¨†ýÛ„æßúk*edV ¹ÿtû=RWJ²L* ÛÔƒáÎÊEIvÈc‹¶UFò‡€Êøì ýà—ç¿eÔJs'Ó8OŽò!ÊJYôôL‰ÏÛBmôdãüpç.cô¾ðq‰µ†Ð'»>+îÅe'¸º®HÜ“K‹À Eþ ¢¢ðƒé™…;Œ=(’Ί¼ì%ͼ֯î=Tx‡pòŽ«¶úY_4¥lyGi¹™t¸sY®·Þæm„¿p¶®T®e]r,mH(Îé‡~Õâf¡€s;±‘¤€ÆâþÙ×>Yw&<:jhË„9×_>2t6€9aJýÞfãÉËéOù³*7
+¾å:›VÄ
+ˆoßF²Û@j:H=¡óbÖž½îÒg˜g/±ËKNÆÄ·/A¿s/"áyh•Ú–¼¸¸²dòbiÕ(:¬ð95Œòcy÷ŸR1¯U´(m\«³€¯º1üJz%zå§2%KeÌZ?é"!âVö¶Ý8 S/yÚ“<îžw²Žö[u¼D•ôéð”Jøýî[oÕ®‰ ÃR刦=@Æ0?™’ÖŒ¯»ZÂ)X7dõç;éN-½Ü¢ ¢¬Äè¹ùìÝ]2pñüRèÌx„oiöǾàšØ¬˜‚­ÛŸ¾û´Ùn—z\KIøÔ#þF3ö_R±ƒ0›AROì3¬ôº) ¸õ·&ßƯ[,ä`üjĹKÕ«çZ úúsnaé ë:øü†Uñf Àä&ÝíA'(¥«àC°TF’Áv¦×ÚÜÀ´£{)AÎ
+¦5Iž#´2§¤Bó< ßso†÷­n{e eIÔÕ%?D¯JócÓDâ!ðÝùЬԕ:„:ƒy¹È{ ·„RœÝ컡ÑëE çs Ô87í|Å $¬lá¢3gHˆQÛiª0gE7Ô
+¿kËÅÂâçO™Ž,’å’p›Š^(£[Ú\Cx’Â:Ç#͹á Ò9õ¾‚Ƴl
+5[ÐN):¡Ó·òíÇ£àÊ¥˜S™+t22ˆ'1=®®îÚÖÛjHpYó¬`ŽÕÒ„}„ƵHd[UqUBÄçþ0pÖÜ¥šI†>‡uD|ÅhTbJ¬foóΠØxWŽëëÓ»ùñ@¦<Ÿ5&4ØN±Q†Dy‰ÃçÿDN£”Ÿµ¤ ]øc6ðSÉ•t§OpJºmü'þóí+4AÓÆíE%ìÅ: œÒøR*vFgq‰ðã2TjˆhÇ7^*Ÿ÷8?%ÝgaóœUÕŠ8[I8þf|^‹<F]Îñ‰YðøÛøìÞÚq'„bšTÀþÇ<¦2|
+ŒƒR‰OGÀ$­›É¾¥ZgK“¨ñ"—±I9÷gç?M¿ªÅ»Z”Ã[Ñ 00ö’â=2ò]똅8æO±¦\ÁþÈuÚöXù5ÂØŠN¦Å¯ÉÕ æd©þcJ¹fÀ2,ŬE›­   ;=ß+F(7_»IÙWRäñÓ¼DFį€°Ö% ÷>rômØ­r¸gRà“
+ž®t©á¶})I³\Öèa*DÚÊßÒH$)f}|ó”n³TX b„š”r åIѬ)¯š¶ ìù q[
+}g›@bÄbžÆ¤ Õ·î” 'ʉÞ2¬eìag]QóB¨0 +–„Ì‚d/±öþHŒ>ýÉÔã÷T+LA"¶%&¬e¯!XCrŒð€elMëuU‰:ù³4atècWdB=–´ù¸7U±îXBSÞ“‡×姞òo·@´£ÉɽŠ² ªuèXLP[AJÉQÚÊÄ°_Å#±œ
+KôMµ1 ÒªT »QÈЂ©dÛÕÇønaÅ)œ­aÊku^‰i~uzÊkþ‡µ©|š¥Fu‚^¯'_oýG6¹Kn©ÒK0mo!£M=ËŽQo­æ‹QêÅ õj™Ì ç!ל„ÃÁ—4ëuh^ÝQãN"7«Ï*×7ØɨÃî¤à~¹GoÛÉŒfœìËh<„Ùë½æZ/Bt{i«÷vµjCèbܬ܄7÷Ñç&$.S­xã»Òs…¾z7öFÖƒ,YÊaz&#ù%Byy†0`GoN ôh±¸ —\+N g¾Ž _/¹9žfèf¹9®t6UØâ‡a¾Qˆ„œ< !'e‚‡ ü¤‘›ÍÌÊ)cÌÛhó:¶æüŽ•hrroFMBK|y 2œ»O êÌêÒØÄË„@¿ãh[¿ÌAPžôò+P27¨9üå<ã©=*yK*»qnèYÉ«ÈÕ6¹LÞx~,‡6Ÿ™yö3ëë° «ïáÉêXÙá!&x©pÙÏãH$$µ8A3 (òsñŠaò|¦fIej 5å™å…JÛÈ^Q1CqHéÁ¸õÏaÝ=+K~æîuo”9 åÞ#JÉõ¶HѽDÛÝbî›(i4xŒnž¢˜˜Y1@,æ—H÷d'{éäì2·Ø™©Z=ãBÜ6Ùˆ·eõôu¾kïjÒà@ŽÊké¿Ý{bŒß Ûùû LL°~jlë.Ž²µmÞõ"CÎNßf/›}£²›ïåÓ€+“%Få6ƒÈ)OâµÌO(¿¹ln¾®½h÷ëÚXL½¸ò«åå BŒ—ÏB|à¸LTƒ;¯ì´6'žc?,
+éIa]zG¡*n W8Ríðó[þI\î5ÇîyHæ­¶
+joìjn•ÔG« Ö«ââ‘]s
+KxB6 (դ籒¬
+endstream
+endobj
+2923 0 obj <<
+/Type /FontDescriptor
+/FontName /BMIMZO+CMTI10
+/Flags 4
+/FontBBox [-163 -250 1146 969]
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/ItalicAngle -14
+/StemV 68
+/XHeight 431
+/CharSet (/A/B/C/D/E/F/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/a/b/c/colon/comma/d/e/eight/emdash/f/ffi/fi/five/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/period/q/r/s/seven/six/t/three/two/u/v/w/x/y/z/zero)
+/FontFile 2922 0 R
+>> endobj
+2924 0 obj <<
+/Length1 760
+/Length2 1284
+/Length3 0
+/Length 1817
+/Filter /FlateDecode
+>>
+stream
+xÚ­’{<”ùÇ+·5…48QËcå247·AͺNŒûê(lcæ1Í<ÏÜ0â§F«^l„•ûí-Z­´–e7¹S.iÖQË–œÖAå¶CÛk_Çþ{^¿žÏ÷ûù}ïçóûú`)L$tC`!–ˆ#Úδ@*Ñ â(ccg>HBìB‚ö
+¿ID…#Àæ}™ÍýЊù9`&‡Ä
+Ýv˜+Ì@˜Ì,IÖ
+1|ÖªVyhH…þÀ&nòó¦KÚX¶Ú—ŽŸ†­í®‘n-ì¼ÎTÂÈ»¾†ýþFu•#±…v*Yû}“ù}µœ eòHQZ[yüMgày)TÖñ?´¢‡ ïHùȃ«÷Ä\iE)ÇoÙÑôš†ymJP·Æþ[Ûó©ßLäòÊub=ªdžº¢§@-ÖÀa'ØØ¡ì×/sÑK³Šª¶Å×.G>fÛú 1nŒC…BÂóQ•±1é±äÏœ¾÷òž½³Á~‘ŽX$e”}\Í«ï^úø€¤xÜEÂ70sü'g\¥<¬GÛ]¼Ï!7xwˆT§ÖÇné+)hJqì–„yßÔï€ÒrV•ëý[ÖÒÜòŒyy‘RÌ´Æ×—*Šd}'JÈ`bíÙ.¿ns3}ªÝóƒÀݯ˜r´=ÁDónzîYöÖdWûQ/¿§zêk©9©”Þ°âE}•Ò“Š|ñÝ…x
+âåKSG“BTe1ý
+¶‰íó1#eaƒø\¼$Øv5p@õˆ«Ùwâ؆D¨9[_±éÒþ}Õ&'ó×_ˆýÙη­\ý—××ÊFK\{k&ÔPKŽÒ>¡FL5d„ào'[ï¡•¶{I³T ©ðiY~PØôFýræìÁðÐ÷r§Ók†þʼÁóÍuëÒF‰à)¹º ü6¿·úNWñJCˆ†óì77®¦ýííXúì;Ý!ÅõáuSM[':À1vç
+÷Pb¯c\m8Ö§ <ë±]´½ 0dq÷ët#yåbZ¤‘«‰úáß½etµ
+endstream
+endobj
+2925 0 obj <<
+/Type /FontDescriptor
+/FontName /PGSODC+CMTI12
+/Flags 4
+/FontBBox [-36 -251 1103 750]
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/ItalicAngle -14
+/StemV 63
+/XHeight 431
+/CharSet (/i/q)
+/FontFile 2924 0 R
+>> endobj
+2926 0 obj <<
+/Length1 787
+/Length2 1685
+/Length3 0
+/Length 2234
+/Filter /FlateDecode
+>>
+stream
+xÚ­’{8”ëÆ‘ŠÉ™”C|ˆ²cNƒÉ8åL,‡ŠPÓÌ7ãcÌLc†2R¡*©Cb¡¢-,,‡h¥"É\r¨T‹äصºÚ»õï¾Þ¾ûyî÷yßý¾ºZV$úQÐŽNc¢à(3ÀÆÕË  àH˜®® $° :m/š(SS`Ŧ
+Dƒ!Ö€id:€ý^&±?Za 3TìBêBDFå$ Cì£ Ï…$ÿ¨_‡Û±©Ô}„µñk!ý£M¨Ü¿ ô›2W: dÒ~µ
+†(#8Òè{
+µƒ8 Éb2
+~«ƒ4Ò¯$Âð¾q ܺ{99ìú~©ßzîˆÆòâ2@
+ Ó™°µ;E!1
+D*òcü9Þß³¸áôœ. ½FS9üÔ™Lüš¾nؼGß±cñæÝþÏ91œ×~”³YVÛ”ÚÏoŒTá`-ß
+FÛ䃒nŸjÕZª˜—ÛZr@†ã#Õ‡’nX)оÎ-Œ‰wkÊ–(X.–Ž.tú{ý¡sao…Sáh4â  ò´é'S/7ØfJËÌõÇPŒ¤” jGG•Í³½G+«jêMÞI£êP÷×/–šîáÕßûà0rë‘ïö(‡Ú‹ô– t79YF“vÈ^ÀßUîHÀù«ÄSã½'ôŒŒtú¬{Rh|3L™/9VÑdV4—¬úò¢º­L±qäÖa™À=?¨5pßbù_¥•ušË{^‰¦¼\qŒO;i±èÍðÜ<Èc_(j«}¾ŠØCS(îVú=SþHae+Ncú™šéì¾ñ208ö²½š•½2X{×-1­b'-_Ð[Þ—ôÔÓô|™ÍK…
+»Æ•©
+ p¦ü=»ÄDeŽu½ù’„ÇŸ
+v“ž…wº2 töœžJ<°Ïe¢óêƒ:¶v¡¼˜}Ww³®nQ£SaÕ·*:½Um•vá§^«¾ÜíS¶àÜüÀ*–í~·îùÕî—>/z£šu"õ¾0‰D>þª9zÚ/—";òàÍù–œô-Êÿ´ÆC
+endstream
+endobj
+2927 0 obj <<
+/Type /FontDescriptor
+/FontName /OXPTJH+CMTI7
+/Flags 4
+/FontBBox [-27 -250 1268 750]
+/Ascent 694
+/CapHeight 678
+/Descent -194
+/ItalicAngle -14
+/StemV 76
+/XHeight 431
+/CharSet (/i/j/q/r)
+/FontFile 2926 0 R
+>> endobj
+2928 0 obj <<
+/Length1 1726
+/Length2 11072
+/Length3 0
+/Length 12028
+/Filter /FlateDecode
+>>
+stream
+xÚ­¶e\ì¶ÿMwK—Cww7Ò]Ò5tÒ4HIw7ÒÝÝ¢twû̽÷9Ïþ¿}>Ëù^«~k]1P‘©¨3‰™;š¥\™Ø˜ÙøŠl¬
+ • ûlj fY›™8
+ú¿Óbwû×,ØÀ­½¥âú‡€îõÎvwßÑÿT÷ãbgâbõW
+pý·\àö\­@À¿6
+ö· GhaX»pìpÃzÌGÈMz5‚x0ƒ‹bÏ^nž²
+Ï`"àý¡/iùð#Æ€
+‘Ñ`”·’hŒ¦°3—ƒ¶©Ü‘‡×ÿxÅÑwõ_©'%~ÑW¨§¬
+î'¶ÙàÊpd¤>ÖÐg+N©4`q
+¼¦@ø¿áúgÏAŠ‘‰ï‰ÜGÀ æÅâÈüþ“ÈóçÖ eçßûñ¥û>^m@Îb£™/?{´ŸèÞ b
+|L¸¢
+•ÎM8fcO§ùµ`wH]R&áŠÀ‰!à)öxœDOÆ•üÄ+ßP„*“õdN+T®¸6©È¶oC+K. ¹-îÕAš[”wGîüÎøwYåXÛ
+#Ð7/ô“e¨ŽŸ †Å•B%j
+Ì©ËÍ® å1z0^³ãÂÕ³e8—ò©[—´ÒTÉ“ éã»î¦àÇ…©0™&½c|ð-€4P˜ºþÍb*¦àÉìHÇ"2EMщ—« å™ë¿â´ÏA˜uí¾ºŒ<Gš¯ÐYc±@èáã-–No󥎾ä‰Í¦œ[ÉÕÚ;:Z(§»úð=RÃgl•¨6¾/;
+¾ºa²ƒ^æÿ!48ûÏbª täÚĘL_˜T³›Q9‰£Â™È\ZNÄ ¶Ïá~0nÌ®\m²¼bg@ŽÃ:DÍÇ;m‰Ø#šËjCxøQ‹SµÊGýYœ\¦QŸõÍYÌŠÀ”Vl~·†P~ÂI‡‰æOœ¸zQÞß·
+ì鲞{Éåºly æ×óŽÌ’/µÂaxÞZâ[Ëä;£@?JÇžWÐ
+AýFEÖ|túœG¾g—;Ú*î®ñÅŸ3á'IM¢’üÐe³»Ês¶Zº™ŸÆ
+ª ®ÿ¼Á£®¤éº¡
+3¨Ó:ÅGÏ¢ébf Äšú¬â2'¹¿ÓFJ¹Ô\¡ùa…„(w¢æ’¡âdñìâç”·dtÈÁ’ŽÊ]>¶êˆÃ.¿ìW¹)ÑÝ’´èAqfíõÜRÏ…-÷ea™YÑËZѦ
+{¶ÑÏå©ù++Ö.Hô§!ÑRäz‰Í?¾BaV陋ãà¯Ä9¯±²»Üˆáë6f÷µð~2Ž¦DMà¿I?ZÚU‡žßÍy¨Û7Ø÷ÆÈ_ž¹ž„êû)f9g$t³W7ÒàV@äÎx,¶²Wkª2q\²3BÜÏñMJÆxC~S‚t -œ‰ô}¯6<ˆyï´
+7õå÷}¥¾ÒCqOTSŠé‘GÔ”Ð[Á„‰NÚÅŸÙ1´8íZ8˜EñYL£`ŽëŸ_àœÈ ‚aXñó`ÇÕs®~Œˆ:1] ëWe™énVÈ5O+x^ěđûS¾7À_”ÀIx¾ýÐeÑ)ê¼îÂ>8‚"£ÑJÓJ4.7„ u5ÇN‚6˜ú}N₦4WU#Qóì)Õ1hå¶Õ^÷ã|¿c¯F³à’n*ƒ±¿zµ3:ÝŠ]÷-eG ±”Îëݵ±+¯0‰ËwE"\âDgNBø$¿„¹®íe¥Q)ìý=¤“Õœê8l<9TŽnW(Äê–6­AÒ=ËRkÓ}—Î
+›&C–j€Zx uOñêX8‡Žõ£›6,;ž$k˜RF%Ì&
+ª:[w„/}m5Ód¥ ¨‹j¾kºìg×°~¦ŠÜ·^Ú¶ìAÙÖŽÙF·Û¸©µêrú¼¯;ó÷¶lÈÙ:ÈËCiOPªðEÕÌ£4“‚Í}ó¡|Öbp¥f£ãâ¹—Úk8׈nS^·!ùÛÂV&ÍÿéŸ‹Ú *òh”£ØñH0‹ý8§_3ï%]¢op®G6ÍÝ’/öõ~Æ~vy§˼‹[sÝe s„¨d?üZÄó¹¡Ü!€V·ŸP & î9…óRÛŠðÒ$f݃‹Áyág7Ù™:VÏ®*2þÀ ©:ŸGHÙRÆS:
+%$ye2„†¯–œß%1i“ì×ÑÅÅ3›WÕ¼¶½ÛžÍ"^戻҈mß$`Û [‘)”·PbÚ£)¿{QWúû]"óÞŠ@ÛyBxí&žŠÔí{4×ë!dÍ<þ¼ŠÝŽp òá—J‹óo¡è(ÎÎwÀ(}® ¿™X=þ›æeÞºOá,­ÁZ;¼Aö¯;ìšGF$Ë%Òɘ­šÅ©,Ë
+ŠI¢Ÿ¡rªÎSºžccgàxHšêÚèÊÖ@¶µ¾M.sz
+±äæ²"n‘Úƒ¸yíFã»?H‰bnÒ`´Äº6«³.ä[ZuÂå~¤š!Û¬ÅJd¼’ˆ¾¦ä%µ­Úk\U#p6§Øu¦Mdá0$"ºHdp",¡(iì¸ R«Ùúu…WClÆ"*Ky~¤bºŽÛi§Møƒæ‘å_ïLÎT¸û€¦‹iß‘¶kÏ&á±+S¾T©Î””ºÞ™I´ãc=ïNH/; þëν­º¹QÉp•"à³›©˜<,’Ò²ÑÕO
+]¿ÇN©¬å“'çaÆorÕųÕë°w^
+£ž8 ݺé#¦nKçÀýš¨Ì
+>‚P•…  Ï qš®¦‘™ävÒ@•äBdÊIzô;(TûK`,Wû¢ú•ÛiRç7baήtêå®Ø!y”Ò}7ó4 (ÔÔéul³eèfÀÖq¬$Œö#¶ \ƒ5·+QÖr#
+û ‡1Ó H‚ÊJKVj(êÁÑ–6Øël%ñLª9dÌ4*·¯ÀÉÅ$‹¬³/8¸Õk ÎœT3åÆab1b0¸ŸÑåi„ê‹Ç®+¶kP­msí¯ ²AÓR-¯´‰?²Ü0u¨O¿hÅ8[Ùz?©€²Ài¬Uï ZIK:mh…hÇ2š—¼Äö\Â-–ïw|¯ÌbzýêÕ1“€Ç ×QŠ‰,즹µg¼Â8ßûàÞG ‡ìœjпÖÉ"UhGõUDn˜‰€7ÁkÄÜ™° óèãxÌwÆp~H•ŠºüJBÒz܇úѱës@Z8UÜ䯋Ê '–+¥ÃЊhÄ»}Wù¿(Š*'àžî3bZ*žÍ>ú eDÿ²˜Hé“I _ÑéÚ¶?)†7¡L#k¡ôÔ<ŸTLÞˆ¦õª™%ÜSý¢ÒÁ¨½óXè Š©%“ÿXäφ'ɼ"—VÛ«aîÉ}CÍ!1(DD.éˆl†>ÿzKcí-;´‚oNë¯ÞO½’hÞYeO]_7¹ŽWYLžá‰/‡]É!¾IU…KÁÝÍFJH•»!šd…£Z—‚¦¹§ýVo2Yx·{ e™òoË ô‚m‹9îhçÓl#H÷Óo{È0ŠBpé]`:5¢,úV½ ¹{©ŒPÂÍá}T;øPigÿ6(R
+—ÅŽ4ÅuŠªCVRŸ oã¦Jì.ùYã£õ•Ç¾®ˆB-÷fÖGÒ!©N¹L< õ_+ô¹Á†È~eïSOåø‰¤ò`Ž¿\:M3td,+Ý—áÖ´-0}˜P½Gr1¬ÿ|#s›CÖ~0o‘¸EôBz‚¢ä¶F¸¦oOæ
+'Xˆñ»óQX¬lì(4À¥GÊÈø¾C}×þ‡|­MGºñ´]Ëkx£
+Ž<ŠEVÚ»$´°™!$ÿƒ¾1-xs,b¨ùÖ”ÅXxþâ©c×c—A@·uu¯¶¹†°Y·GY¦$–Áíù•Ç¹yÙÊùô¡ÂdDZˆÊ§&¶Xô+O¯Àµìp“­5%ã ÞWµ¡E|¦î²2{ã9ØųWþOhB“N×Å–Ó? /¸ïT ËÐŽ¸î=f' P7æ3ðoÓ×cÇõ ,Aµ€Ø—èÛÈ_5_ø¿ o8vŠ}KÅ=b÷MìQàû‘h4OEú:KoÆ?8îãZ-|õ"ò±ŠBტ|±GqÛäú×@á6R~ÂW¾eÆÕ©9Ž–'‚äƒ+õ|•õ6œL\ZÇu¦Çy4½Æ$çdšZtÅýÚ¯…†ê»vœÊªñ%¾ÂïŠ-~PMß÷ÓÈï[ç'½âîÐFê}¢;Ķ+0XÏ\&‹ U ¥à;rx‘¨©^½@Qt*„õ÷cCÖ<5‹ø°×-ýu̾E®H E0€:›˜Ne¬³^m;8Š²3ÅËFë§ï~§+*ß üB–Šй@bØ®óç.7ñi’v6l?É;‘â]y¡Ôáu\²¡5]F?qß+Šë¾9ôMÉãVeøìæ®cƒø
+MØê}Ö]wž¡¢àºµæF-1hµ„[™íc…%”êÖqm{߶ϖU–ûrªÇ
+;÷|¡Yß“PŒœ†j£nS´¢?™#Þñ3âŸLè³›ªŽê§ºü:×sDÚ8ùqã bk©úç&Ža,¦ÅËQ×ꔕ¾},Õ®–”õê‚ÖwÓ_ï<6[›ûâ&-Ù?!÷T˜’¾üù¶‹+Ö=OÞ¥§¡˜4ƪ>çÆo‘7`îcvígÜ 7wTõ³‡^½ŠP15­ ›ÚSˆÜLÝôh±¨¨Cöõ¶ø×È/¯ÓŸŸËöv’\>”ŽÿgšoäŠ5HK¶‰”Š²<ÑÉÏÝ(~ÖÈe& ÆÒãö.w`>°aûHÝÊ–cºTb¾gwÒâ=ÍU¯à³Ó;tà¡oßQÄÿ{ÁE‚P°ËVcÞˆƒE§£”ƒ>î™Ûì6´Š«’Ü•s€íUä±cŒÚ€ÀøÌZ_„}OÀ\ø)F6œª*uE&I‚»Q»™eòêå§.ÅIÜ –aVè7ŒÜYÚÝ=¡I ²ñ
+G–ÃP1Zí.ë2çàrÃobr÷W‰ÿžÊ­3ŒÔÂó;}wZ,žxÆžÁ«³}d8èpÍÔ'q5ÀÙUœï…xYÓÌ4Æ,ïý‹õöb¶ç]Áž‘­­De¡NßYÚEµó±ÑÆécpFcŽ††Þ–úv°T¥TGä
+~ÿ
+g«R-¾ DÚ˜ãµí«Y¶¡Ñ¥ÔχƒŸUG!Òw…g‚hEªÈÓîVò‡zpÀ]çÄvlT´N ÁM â«F+g
+Åw‡Ö/Û’²ÍóÈV·óï­E[†ï0¡ ¼Ï/HÞyÇNºœÂëîÙ÷¤:÷´·ÐÕ@BR§üÃÇ—¿½¦¯H¹—J1Û>ÊøÚ™23¬ÄâÖà½.šô;„¦Ô‰ÚçõUqE É¢=›WùÛJŽ<–Ž.åp°¸—‚¦5y“cu’Ái‹à0açÏ þ‹·_ž_>>t,W)qN´~yKW:Ä$·u6ùËË‚b¯A’‹.³ï‡BñÌIR²_Ó¹æ?¢{Ûzhô$ÏU¨„Ž1€Ì÷Å.>­¤û,ã¨lê[8”ä„Nõ¸xô¢^oœñ ÑfñjšqÌu1|¤øô»aK3§MÒ{ç'¤#”K ³¬­Í×6¨»e8ŽE&E´˜î™¼’ã cBl®„A£lhn«`ÿ7SÌ…k¥^ø›f,Àà–!´ª?/ÏüqÍ°а‡ý
+ïBC饮» î>kx¥7ÏÙ`Öd"³6‘)Ñͨ…çÿ–‘eWÙ@ýšÓ Â{Å’Dô¬‰ñK'¥% _ü»€3cg º‰¥Ö^ÂñªM‡é×Þêz$«$2˜hl"Ù ªEw öAâŽíÛ6}rF%~Ò§].Fn}yÎœu6¹²;åÜÞ–)bxòµÔù Û³Ž_]HôrzÝ;nýÄÃVßÖŽÛy~¬Yç;M=h>NÞÏ[­b"=ý÷äÐøpM]×8³7‹¨½T©‹þ€¶VZR¬ßs‹Bþ¬èvOÅÏ#"bc$-ì’IÉÇzë¬ú#Z,•6ÆðC ×d†Öºz¥ÅŒŽä¨¦&Ön›0ÌG°H$ôU>ÂV#¡Ú)r'ô,»!ËìD”ÏñeÌQ“ÛÑ€ÆÃÀ1ÿ™Íæ›
+bj ŒœD‚>Z6«ÐÎ9äå\ ?¤„…_ÕšRZ$P!-s¶ýšˆ¦>e:ÙaÚGlx}çªÉW¥Ó¦æ2”fë(3ö]ÙlÞtü9·IIÀÍ ®"««ëG{mÒ™ƒÈéOúæäOü»S±™‹– ÀÃYí)áÃÂŒ8‘i¾0
+Êß2•˜BŽõRÑE>[ÚÅ®à/PÝÞé¤ù ^E´Uhº“:®jŽÖf
+ÝÏ+‰£ª~j´Tž£J½È™Û“lsÔNu2kAâvmŽ%·bœ÷§¯,9Q4óó´ÅN™• (ü—H\4
+›<!7fæ)]èzøç>8þoÄGsÁ+i†wfÇn¼]…õ¤ÆF@ùMcìüð)Øs|ä(;íÕ™Á*ÃLPÚk"eΪóøžÁ„°~t¢IcºuT(ºÔ_jªê$î> 1ÉogÉ£f%\æ>WÞXê†W©l0úä™±îDÇg7”” •.ñ݃Lã´AnÉ×c<ªƒ‹Éó D*.xç÷ÉØçÔB÷æ/P¸c)fN#æ¹°cõƒïá
+Zx‹2»äæc¤ÿ°ý64:K¢y2£XO/`7KËëß[ÌséÍ=#Êá—oc2B<U5C1°Ôøí6„Ji_Ú?ˆ#œ£µXTQÄy~J¬n#yÆñ›ÀUâ<Ü&žüAß·Ìë½ÝÄÜ[5l²4{¿/Ãjýà>´FùÁ~6³Ê¦#÷ì%fÝ×ÿ(…‘ªýrIödŒ{%ÎÀëWaøÔ/³ïUÖ›#­i´ŒBš¥Ë
+;„Áôqü ñr ;°‡š8®òÝ‘¬sDpCÊ¡m”U“üìïW²}BFëZ·ªl"9ïkŒj}jôÍ”! q›?ÍYn“;¼n˜V’+Š®¯dK¶ø‡ì¿hâòæÓÚÚw@\]-0xßüfK¥„XË«`j¢É,·XS·Øï%+êdUÙ…ÈõM\ž9bgo c|Yq¢mwÚ9{¨ú¨¸`hkbõþl1Å@Hoðw9 þ\ˆŠI`Ärªë(I\Õù[s%# .
+Zu-¯*,&!wd/…¢«j„#¬Bˆ¢2èˆ`Ca­ÐY6Ï(ËaiÊA!qänl⛵A“o­
+ñÍœ’…êu"¡õá•S‚*MO i©î¾µ¡zPجèÒ’tÕäLüß„ê3çdw{Â¥ålBü¹¸¼øCär]¬"´6&Šµf 7!âoÜê¸=ê~>ˆwÇ%—ßìæØîu]áúž`­£ï^c Æòñɶvoúí¦“ò’UÇë;{™”³˜9r0,ae¬ú#Œb¨µ¨œ/³;! ¨9(ª²ŽÖt)wf?Yâ¿ÜÖà•+ÜnN ™{Sö"Ær}–´î!ÁQVÑfD3"ñ=:¸QH´¤ äÉOkçr£„Àð‰uPuà|*cÙ%Q—w§nv  M3â®ætÊpþúW[ÚÔv®[ª^™èÎè—ÊГüýƹDÑÌ穆±÷ODø'ëÐÁ’£[FüIŽB!r¯&ÌHò’ü›» úcï¿M,¿[Âs3®Wç88ô>zˆ·î4l ;¾ma±×Er¬½Zù˜@–JÜœtMA„SQ=Å0‡âX)dòi 8×/ê¡êºW{—|!èþ1Sû©¦%:Uµ?A¹¾ç[ÔÝ:¿mxé•yĪ¥tÊW8)C¸l3= ÉûÀ)ljŒsš?‰2w†ÖÂ>|Vþ)šéxS¼§ÚwtENç¬e?¯‘'öØå}7‘ÕàâªmT“½þÔèTÙÞ{ƒôÞ.K!8ò &_Pa]ÿzefiÏ ÊÞœJln3–âFí«žÔ._r<—žyÂäÎ>?Ï~G)ÇvqìSäþ‹F¥ˆ{3ºnÑFT°Ùž†÷#ãüF7i]ÁçFÂt«ƒeáÒ¼îûz; ø=u%$èjF”P_+ý° °gFèåùÅo©¾ý¾/–3ˆ¿O4AQ2Gõ›Å'
+‡‡ÙÙPNƒgâ.Éc皆BΞ½/Íg|Ñt¨&\™]t¿ž//·_¿Ó¼°û Xèpp‡í(”yȧU‘_t@ºëŠ²2Ûß壇¯Ä¤R
+×=C.̆F–
+CBœ`.äßyÆ Ü™ú ²O†q 4#6½?þ”o0ÕS]DýP|‰ËHŒ–-Ž]à·„Ÿew°]!Z'Cïê¿/H/]qw!%õß6a0pérB›P”¦sî|s¾Èg­õr;xOûŽZÍ?X|<­2¸?LAôõC%…¨¸Õ÷Œ/¶Äѳw†÷ϱÝ–ÏGHï Ze£AÜÊ´¥“~
+jKƒkÓ*¦†A™òZbïðص¡²Ç¬µHݺ(µ'µˆ¿àR•´ý¢¿"”¤éMØJ/TÙãmeÐÿ~ƒ²ñòdϘAÞ÷™ÌáÎgj*?Jà+Öô1/ÎŒárã§ÆqúÏÞXÜά« õV/ZIâ”+Vv½®&ûPûŸYàßu²¸¡šïUÔÇ…­ãŸ¾tyãÂ$­çZ:ˆ£„å8FbK¼^ÒÇ÷öy3ÄGθÀÄúÖ.˜U°t2¥ûTá nL²f±ð†ãŸÆDœúºÓ4ãË/ÁþZxšª
+endstream
+endobj
+2929 0 obj <<
+/Type /FontDescriptor
+/FontName /GSDQUN+CMTT10
+/Flags 4
+/FontBBox [-4 -235 731 800]
+/Ascent 611
+/CapHeight 611
+/Descent -222
+/ItalicAngle 0
+/StemV 69
+/XHeight 431
+/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/a/b/bar/c/colon/d/e/eight/f/five/four/g/h/hyphen/i/l/m/n/nine/o/one/p/period/plus/quoteleft/quoteright/r/s/seven/six/slash/t/three/two/u/v/w/x/y/zero)
+/FontFile 2928 0 R
+>> endobj
+457 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /ZRGIXZ+CMBX10
+/FontDescriptor 2891 0 R
+/FirstChar 12
+/LastChar 123
+/Widths 2886 0 R
+>> endobj
+455 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /RZUIOJ+CMBX12
+/FontDescriptor 2893 0 R
+/FirstChar 11
+/LastChar 122
+/Widths 2887 0 R
+>> endobj
+1102 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /ZVAJXY+CMBX7
+/FontDescriptor 2895 0 R
+/FirstChar 68
+/LastChar 82
+/Widths 2866 0 R
+>> endobj
+1265 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /FAOYOQ+CMBXTI10
+/FontDescriptor 2897 0 R
+/FirstChar 48
+/LastChar 116
+/Widths 2865 0 R
+>> endobj
+673 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /KRVUOQ+CMCSC10
+/FontDescriptor 2899 0 R
+/FirstChar 67
+/LastChar 121
+/Widths 2877 0 R
+>> endobj
+667 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /UTSOJX+CMEX10
+/FontDescriptor 2901 0 R
+/FirstChar 4
+/LastChar 107
+/Widths 2879 0 R
+>> endobj
+573 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /QFSTYE+CMMI10
+/FontDescriptor 2903 0 R
+/FirstChar 11
+/LastChar 121
+/Widths 2882 0 R
+>> endobj
+882 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /BMVTZQ+CMMI5
+/FontDescriptor 2905 0 R
+/FirstChar 98
+/LastChar 119
+/Widths 2867 0 R
+>> endobj
+668 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /RZPZLV+CMMI7
+/FontDescriptor 2907 0 R
+/FirstChar 12
+/LastChar 121
+/Widths 2878 0 R
+>> endobj
+458 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /GPONVW+CMR10
+/FontDescriptor 2909 0 R
+/FirstChar 1
+/LastChar 124
+/Widths 2885 0 R
+>> endobj
+416 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /FEVBAK+CMR12
+/FontDescriptor 2911 0 R
+/FirstChar 44
+/LastChar 117
+/Widths 2888 0 R
+>> endobj
+415 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /VDCGVD+CMR17
+/FontDescriptor 2913 0 R
+/FirstChar 12
+/LastChar 116
+/Widths 2889 0 R
+>> endobj
+674 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /XKDASW+CMR7
+/FontDescriptor 2915 0 R
+/FirstChar 48
+/LastChar 117
+/Widths 2876 0 R
+>> endobj
+507 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /FCGMFO+CMSL10
+/FontDescriptor 2917 0 R
+/FirstChar 45
+/LastChar 89
+/Widths 2884 0 R
+>> endobj
+574 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /OQJFED+CMSY10
+/FontDescriptor 2919 0 R
+/FirstChar 0
+/LastChar 106
+/Widths 2881 0 R
+>> endobj
+705 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /ZQLTBN+CMSY7
+/FontDescriptor 2921 0 R
+/FirstChar 0
+/LastChar 48
+/Widths 2868 0 R
+>> endobj
+508 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /BMIMZO+CMTI10
+/FontDescriptor 2923 0 R
+/FirstChar 12
+/LastChar 124
+/Widths 2883 0 R
+>> endobj
+1626 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /PGSODC+CMTI12
+/FontDescriptor 2925 0 R
+/FirstChar 105
+/LastChar 113
+/Widths 2863 0 R
+>> endobj
+1276 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /OXPTJH+CMTI7
+/FontDescriptor 2927 0 R
+/FirstChar 105
+/LastChar 114
+/Widths 2864 0 R
+>> endobj
+666 0 obj <<
+/Type /Font
+/Subtype /Type1
+/BaseFont /GSDQUN+CMTT10
+/FontDescriptor 2929 0 R
+/FirstChar 39
+/LastChar 124
+/Widths 2880 0 R
+>> endobj
+417 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2930 0 R
+/Kids [410 0 R 419 0 R 453 0 R 505 0 R 538 0 R 542 0 R]
+>> endobj
+576 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2930 0 R
+/Kids [569 0 R 601 0 R 629 0 R 658 0 R 662 0 R 670 0 R]
+>> endobj
+680 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2930 0 R
+/Kids [677 0 R 682 0 R 687 0 R 693 0 R 702 0 R 710 0 R]
+>> endobj
+718 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2930 0 R
+/Kids [715 0 R 720 0 R 726 0 R 732 0 R 746 0 R 757 0 R]
+>> endobj
+775 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2930 0 R
+/Kids [772 0 R 783 0 R 802 0 R 814 0 R 820 0 R 828 0 R]
+>> endobj
+841 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2930 0 R
+/Kids [835 0 R 843 0 R 848 0 R 858 0 R 864 0 R 869 0 R]
+>> endobj
+876 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2931 0 R
+/Kids [873 0 R 878 0 R 889 0 R 905 0 R 918 0 R 929 0 R]
+>> endobj
+940 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2931 0 R
+/Kids [937 0 R 951 0 R 963 0 R 986 0 R 996 0 R 1024 0 R]
+>> endobj
+1031 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2931 0 R
+/Kids [1028 0 R 1033 0 R 1037 0 R 1041 0 R 1045 0 R 1049 0 R]
+>> endobj
+1058 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2931 0 R
+/Kids [1053 0 R 1060 0 R 1073 0 R 1081 0 R 1090 0 R 1112 0 R]
+>> endobj
+1129 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2931 0 R
+/Kids [1123 0 R 1131 0 R 1149 0 R 1166 0 R 1175 0 R 1182 0 R]
+>> endobj
+1208 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2931 0 R
+/Kids [1203 0 R 1210 0 R 1233 0 R 1261 0 R 1271 0 R 1281 0 R]
+>> endobj
+1313 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2932 0 R
+/Kids [1298 0 R 1317 0 R 1332 0 R 1341 0 R 1345 0 R 1355 0 R]
+>> endobj
+1383 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2932 0 R
+/Kids [1374 0 R 1387 0 R 1404 0 R 1421 0 R 1439 0 R 1451 0 R]
+>> endobj
+1483 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2932 0 R
+/Kids [1475 0 R 1487 0 R 1498 0 R 1520 0 R 1536 0 R 1541 0 R]
+>> endobj
+1553 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2932 0 R
+/Kids [1550 0 R 1559 0 R 1583 0 R 1602 0 R 1623 0 R 1635 0 R]
+>> endobj
+1649 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2932 0 R
+/Kids [1646 0 R 1651 0 R 1658 0 R 1667 0 R 1674 0 R 1699 0 R]
+>> endobj
+1714 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2932 0 R
+/Kids [1710 0 R 1716 0 R 1748 0 R 1784 0 R 1821 0 R 1856 0 R]
+>> endobj
+1910 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2933 0 R
+/Kids [1890 0 R 1913 0 R 1922 0 R 1948 0 R 1956 0 R 1967 0 R]
+>> endobj
+2022 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2933 0 R
+/Kids [1991 0 R 2024 0 R 2039 0 R 2050 0 R 2067 0 R 2083 0 R]
+>> endobj
+2106 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2933 0 R
+/Kids [2091 0 R 2108 0 R 2126 0 R 2146 0 R 2157 0 R 2171 0 R]
+>> endobj
+2189 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2933 0 R
+/Kids [2185 0 R 2199 0 R 2218 0 R 2251 0 R 2274 0 R 2295 0 R]
+>> endobj
+2321 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2933 0 R
+/Kids [2306 0 R 2330 0 R 2355 0 R 2359 0 R 2366 0 R 2375 0 R]
+>> endobj
+2399 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2933 0 R
+/Kids [2383 0 R 2408 0 R 2431 0 R 2454 0 R 2462 0 R 2480 0 R]
+>> endobj
+2503 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2934 0 R
+/Kids [2495 0 R 2505 0 R 2516 0 R 2539 0 R 2553 0 R 2558 0 R]
+>> endobj
+2567 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2934 0 R
+/Kids [2562 0 R 2569 0 R 2582 0 R 2598 0 R 2615 0 R 2621 0 R]
+>> endobj
+2628 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2934 0 R
+/Kids [2625 0 R 2630 0 R 2645 0 R 2649 0 R 2653 0 R 2657 0 R]
+>> endobj
+2664 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2934 0 R
+/Kids [2661 0 R 2666 0 R 2670 0 R 2674 0 R 2678 0 R 2682 0 R]
+>> endobj
+2689 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2934 0 R
+/Kids [2686 0 R 2691 0 R 2695 0 R 2699 0 R 2703 0 R 2707 0 R]
+>> endobj
+2714 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2934 0 R
+/Kids [2711 0 R 2716 0 R 2720 0 R 2724 0 R 2728 0 R 2732 0 R]
+>> endobj
+2739 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2935 0 R
+/Kids [2736 0 R 2741 0 R 2745 0 R 2749 0 R 2753 0 R 2757 0 R]
+>> endobj
+2764 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2935 0 R
+/Kids [2761 0 R 2766 0 R 2770 0 R 2774 0 R 2778 0 R 2782 0 R]
+>> endobj
+2789 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2935 0 R
+/Kids [2786 0 R 2791 0 R 2795 0 R 2799 0 R 2803 0 R 2807 0 R]
+>> endobj
+2814 0 obj <<
+/Type /Pages
+/Count 6
+/Parent 2935 0 R
+/Kids [2811 0 R 2816 0 R 2820 0 R 2824 0 R 2832 0 R 2839 0 R]
+>> endobj
+2857 0 obj <<
+/Type /Pages
+/Count 2
+/Parent 2935 0 R
+/Kids [2849 0 R 2859 0 R]
+>> endobj
+2930 0 obj <<
+/Type /Pages
+/Count 36
+/Parent 2936 0 R
+/Kids [417 0 R 576 0 R 680 0 R 718 0 R 775 0 R 841 0 R]
+>> endobj
+2931 0 obj <<
+/Type /Pages
+/Count 36
+/Parent 2936 0 R
+/Kids [876 0 R 940 0 R 1031 0 R 1058 0 R 1129 0 R 1208 0 R]
+>> endobj
+2932 0 obj <<
+/Type /Pages
+/Count 36
+/Parent 2936 0 R
+/Kids [1313 0 R 1383 0 R 1483 0 R 1553 0 R 1649 0 R 1714 0 R]
+>> endobj
+2933 0 obj <<
+/Type /Pages
+/Count 36
+/Parent 2936 0 R
+/Kids [1910 0 R 2022 0 R 2106 0 R 2189 0 R 2321 0 R 2399 0 R]
+>> endobj
+2934 0 obj <<
+/Type /Pages
+/Count 36
+/Parent 2936 0 R
+/Kids [2503 0 R 2567 0 R 2628 0 R 2664 0 R 2689 0 R 2714 0 R]
+>> endobj
+2935 0 obj <<
+/Type /Pages
+/Count 26
+/Parent 2936 0 R
+/Kids [2739 0 R 2764 0 R 2789 0 R 2814 0 R 2857 0 R]
+>> endobj
+2936 0 obj <<
+/Type /Pages
+/Count 206
+/Kids [2930 0 R 2931 0 R 2932 0 R 2933 0 R 2934 0 R 2935 0 R]
+>> endobj
+2937 0 obj <<
+/Type /Outlines
+/First 7 0 R
+/Last 407 0 R
+/Count 10
+>> endobj
+407 0 obj <<
+/Title 408 0 R
+/A 405 0 R
+/Parent 2937 0 R
+/Prev 387 0 R
+>> endobj
+403 0 obj <<
+/Title 404 0 R
+/A 401 0 R
+/Parent 387 0 R
+/Prev 399 0 R
+>> endobj
+399 0 obj <<
+/Title 400 0 R
+/A 397 0 R
+/Parent 387 0 R
+/Prev 395 0 R
+/Next 403 0 R
+>> endobj
+395 0 obj <<
+/Title 396 0 R
+/A 393 0 R
+/Parent 387 0 R
+/Prev 391 0 R
+/Next 399 0 R
+>> endobj
+391 0 obj <<
+/Title 392 0 R
+/A 389 0 R
+/Parent 387 0 R
+/Next 395 0 R
+>> endobj
+387 0 obj <<
+/Title 388 0 R
+/A 385 0 R
+/Parent 2937 0 R
+/Prev 347 0 R
+/Next 407 0 R
+/First 391 0 R
+/Last 403 0 R
+/Count -4
+>> endobj
+383 0 obj <<
+/Title 384 0 R
+/A 381 0 R
+/Parent 375 0 R
+/Prev 379 0 R
+>> endobj
+379 0 obj <<
+/Title 380 0 R
+/A 377 0 R
+/Parent 375 0 R
+/Next 383 0 R
+>> endobj
+375 0 obj <<
+/Title 376 0 R
+/A 373 0 R
+/Parent 347 0 R
+/Prev 359 0 R
+/First 379 0 R
+/Last 383 0 R
+/Count -2
+>> endobj
+371 0 obj <<
+/Title 372 0 R
+/A 369 0 R
+/Parent 359 0 R
+/Prev 367 0 R
+>> endobj
+367 0 obj <<
+/Title 368 0 R
+/A 365 0 R
+/Parent 359 0 R
+/Prev 363 0 R
+/Next 371 0 R
+>> endobj
+363 0 obj <<
+/Title 364 0 R
+/A 361 0 R
+/Parent 359 0 R
+/Next 367 0 R
+>> endobj
+359 0 obj <<
+/Title 360 0 R
+/A 357 0 R
+/Parent 347 0 R
+/Prev 351 0 R
+/Next 375 0 R
+/First 363 0 R
+/Last 371 0 R
+/Count -3
+>> endobj
+355 0 obj <<
+/Title 356 0 R
+/A 353 0 R
+/Parent 351 0 R
+>> endobj
+351 0 obj <<
+/Title 352 0 R
+/A 349 0 R
+/Parent 347 0 R
+/Next 359 0 R
+/First 355 0 R
+/Last 355 0 R
+/Count -1
+>> endobj
+347 0 obj <<
+/Title 348 0 R
+/A 345 0 R
+/Parent 2937 0 R
+/Prev 235 0 R
+/Next 387 0 R
+/First 351 0 R
+/Last 375 0 R
+/Count -3
+>> endobj
+343 0 obj <<
+/Title 344 0 R
+/A 341 0 R
+/Parent 235 0 R
+/Prev 327 0 R
+>> endobj
+339 0 obj <<
+/Title 340 0 R
+/A 337 0 R
+/Parent 327 0 R
+/Prev 335 0 R
+>> endobj
+335 0 obj <<
+/Title 336 0 R
+/A 333 0 R
+/Parent 327 0 R
+/Prev 331 0 R
+/Next 339 0 R
+>> endobj
+331 0 obj <<
+/Title 332 0 R
+/A 329 0 R
+/Parent 327 0 R
+/Next 335 0 R
+>> endobj
+327 0 obj <<
+/Title 328 0 R
+/A 325 0 R
+/Parent 235 0 R
+/Prev 307 0 R
+/Next 343 0 R
+/First 331 0 R
+/Last 339 0 R
+/Count -3
+>> endobj
+323 0 obj <<
+/Title 324 0 R
+/A 321 0 R
+/Parent 307 0 R
+/Prev 319 0 R
+>> endobj
+319 0 obj <<
+/Title 320 0 R
+/A 317 0 R
+/Parent 307 0 R
+/Prev 315 0 R
+/Next 323 0 R
+>> endobj
+315 0 obj <<
+/Title 316 0 R
+/A 313 0 R
+/Parent 307 0 R
+/Prev 311 0 R
+/Next 319 0 R
+>> endobj
+311 0 obj <<
+/Title 312 0 R
+/A 309 0 R
+/Parent 307 0 R
+/Next 315 0 R
+>> endobj
+307 0 obj <<
+/Title 308 0 R
+/A 305 0 R
+/Parent 235 0 R
+/Prev 295 0 R
+/Next 327 0 R
+/First 311 0 R
+/Last 323 0 R
+/Count -4
+>> endobj
+303 0 obj <<
+/Title 304 0 R
+/A 301 0 R
+/Parent 295 0 R
+/Prev 299 0 R
+>> endobj
+299 0 obj <<
+/Title 300 0 R
+/A 297 0 R
+/Parent 295 0 R
+/Next 303 0 R
+>> endobj
+295 0 obj <<
+/Title 296 0 R
+/A 293 0 R
+/Parent 235 0 R
+/Prev 279 0 R
+/Next 307 0 R
+/First 299 0 R
+/Last 303 0 R
+/Count -2
+>> endobj
+291 0 obj <<
+/Title 292 0 R
+/A 289 0 R
+/Parent 279 0 R
+/Prev 287 0 R
+>> endobj
+287 0 obj <<
+/Title 288 0 R
+/A 285 0 R
+/Parent 279 0 R
+/Prev 283 0 R
+/Next 291 0 R
+>> endobj
+283 0 obj <<
+/Title 284 0 R
+/A 281 0 R
+/Parent 279 0 R
+/Next 287 0 R
+>> endobj
+279 0 obj <<
+/Title 280 0 R
+/A 277 0 R
+/Parent 235 0 R
+/Prev 275 0 R
+/Next 295 0 R
+/First 283 0 R
+/Last 291 0 R
+/Count -3
+>> endobj
+275 0 obj <<
+/Title 276 0 R
+/A 273 0 R
+/Parent 235 0 R
+/Prev 263 0 R
+/Next 279 0 R
+>> endobj
+271 0 obj <<
+/Title 272 0 R
+/A 269 0 R
+/Parent 263 0 R
+/Prev 267 0 R
+>> endobj
+267 0 obj <<
+/Title 268 0 R
+/A 265 0 R
+/Parent 263 0 R
+/Next 271 0 R
+>> endobj
+263 0 obj <<
+/Title 264 0 R
+/A 261 0 R
+/Parent 235 0 R
+/Prev 259 0 R
+/Next 275 0 R
+/First 267 0 R
+/Last 271 0 R
+/Count -2
+>> endobj
+259 0 obj <<
+/Title 260 0 R
+/A 257 0 R
+/Parent 235 0 R
+/Prev 255 0 R
+/Next 263 0 R
+>> endobj
+255 0 obj <<
+/Title 256 0 R
+/A 253 0 R
+/Parent 235 0 R
+/Prev 243 0 R
+/Next 259 0 R
+>> endobj
+251 0 obj <<
+/Title 252 0 R
+/A 249 0 R
+/Parent 243 0 R
+/Prev 247 0 R
+>> endobj
+247 0 obj <<
+/Title 248 0 R
+/A 245 0 R
+/Parent 243 0 R
+/Next 251 0 R
+>> endobj
+243 0 obj <<
+/Title 244 0 R
+/A 241 0 R
+/Parent 235 0 R
+/Prev 239 0 R
+/Next 255 0 R
+/First 247 0 R
+/Last 251 0 R
+/Count -2
+>> endobj
+239 0 obj <<
+/Title 240 0 R
+/A 237 0 R
+/Parent 235 0 R
+/Next 243 0 R
+>> endobj
+235 0 obj <<
+/Title 236 0 R
+/A 233 0 R
+/Parent 2937 0 R
+/Prev 183 0 R
+/Next 347 0 R
+/First 239 0 R
+/Last 343 0 R
+/Count -11
+>> endobj
+231 0 obj <<
+/Title 232 0 R
+/A 229 0 R
+/Parent 211 0 R
+/Prev 227 0 R
+>> endobj
+227 0 obj <<
+/Title 228 0 R
+/A 225 0 R
+/Parent 211 0 R
+/Prev 223 0 R
+/Next 231 0 R
+>> endobj
+223 0 obj <<
+/Title 224 0 R
+/A 221 0 R
+/Parent 211 0 R
+/Prev 219 0 R
+/Next 227 0 R
+>> endobj
+219 0 obj <<
+/Title 220 0 R
+/A 217 0 R
+/Parent 211 0 R
+/Prev 215 0 R
+/Next 223 0 R
+>> endobj
+215 0 obj <<
+/Title 216 0 R
+/A 213 0 R
+/Parent 211 0 R
+/Next 219 0 R
+>> endobj
+211 0 obj <<
+/Title 212 0 R
+/A 209 0 R
+/Parent 183 0 R
+/Prev 195 0 R
+/First 215 0 R
+/Last 231 0 R
+/Count -5
+>> endobj
+207 0 obj <<
+/Title 208 0 R
+/A 205 0 R
+/Parent 195 0 R
+/Prev 203 0 R
+>> endobj
+203 0 obj <<
+/Title 204 0 R
+/A 201 0 R
+/Parent 195 0 R
+/Prev 199 0 R
+/Next 207 0 R
+>> endobj
+199 0 obj <<
+/Title 200 0 R
+/A 197 0 R
+/Parent 195 0 R
+/Next 203 0 R
+>> endobj
+195 0 obj <<
+/Title 196 0 R
+/A 193 0 R
+/Parent 183 0 R
+/Prev 191 0 R
+/Next 211 0 R
+/First 199 0 R
+/Last 207 0 R
+/Count -3
+>> endobj
+191 0 obj <<
+/Title 192 0 R
+/A 189 0 R
+/Parent 183 0 R
+/Prev 187 0 R
+/Next 195 0 R
+>> endobj
+187 0 obj <<
+/Title 188 0 R
+/A 185 0 R
+/Parent 183 0 R
+/Next 191 0 R
+>> endobj
+183 0 obj <<
+/Title 184 0 R
+/A 181 0 R
+/Parent 2937 0 R
+/Prev 139 0 R
+/Next 235 0 R
+/First 187 0 R
+/Last 211 0 R
+/Count -4
+>> endobj
+179 0 obj <<
+/Title 180 0 R
+/A 177 0 R
+/Parent 159 0 R
+/Prev 175 0 R
+>> endobj
+175 0 obj <<
+/Title 176 0 R
+/A 173 0 R
+/Parent 159 0 R
+/Prev 171 0 R
+/Next 179 0 R
+>> endobj
+171 0 obj <<
+/Title 172 0 R
+/A 169 0 R
+/Parent 159 0 R
+/Prev 167 0 R
+/Next 175 0 R
+>> endobj
+167 0 obj <<
+/Title 168 0 R
+/A 165 0 R
+/Parent 159 0 R
+/Prev 163 0 R
+/Next 171 0 R
+>> endobj
+163 0 obj <<
+/Title 164 0 R
+/A 161 0 R
+/Parent 159 0 R
+/Next 167 0 R
+>> endobj
+159 0 obj <<
+/Title 160 0 R
+/A 157 0 R
+/Parent 139 0 R
+/Prev 143 0 R
+/First 163 0 R
+/Last 179 0 R
+/Count -5
+>> endobj
+155 0 obj <<
+/Title 156 0 R
+/A 153 0 R
+/Parent 143 0 R
+/Prev 151 0 R
+>> endobj
+151 0 obj <<
+/Title 152 0 R
+/A 149 0 R
+/Parent 143 0 R
+/Prev 147 0 R
+/Next 155 0 R
+>> endobj
+147 0 obj <<
+/Title 148 0 R
+/A 145 0 R
+/Parent 143 0 R
+/Next 151 0 R
+>> endobj
+143 0 obj <<
+/Title 144 0 R
+/A 141 0 R
+/Parent 139 0 R
+/Next 159 0 R
+/First 147 0 R
+/Last 155 0 R
+/Count -3
+>> endobj
+139 0 obj <<
+/Title 140 0 R
+/A 137 0 R
+/Parent 2937 0 R
+/Prev 95 0 R
+/Next 183 0 R
+/First 143 0 R
+/Last 159 0 R
+/Count -2
+>> endobj
+135 0 obj <<
+/Title 136 0 R
+/A 133 0 R
+/Parent 119 0 R
+/Prev 131 0 R
+>> endobj
+131 0 obj <<
+/Title 132 0 R
+/A 129 0 R
+/Parent 119 0 R
+/Prev 127 0 R
+/Next 135 0 R
+>> endobj
+127 0 obj <<
+/Title 128 0 R
+/A 125 0 R
+/Parent 119 0 R
+/Prev 123 0 R
+/Next 131 0 R
+>> endobj
+123 0 obj <<
+/Title 124 0 R
+/A 121 0 R
+/Parent 119 0 R
+/Next 127 0 R
+>> endobj
+119 0 obj <<
+/Title 120 0 R
+/A 117 0 R
+/Parent 95 0 R
+/Prev 107 0 R
+/First 123 0 R
+/Last 135 0 R
+/Count -4
+>> endobj
+115 0 obj <<
+/Title 116 0 R
+/A 113 0 R
+/Parent 107 0 R
+/Prev 111 0 R
+>> endobj
+111 0 obj <<
+/Title 112 0 R
+/A 109 0 R
+/Parent 107 0 R
+/Next 115 0 R
+>> endobj
+107 0 obj <<
+/Title 108 0 R
+/A 105 0 R
+/Parent 95 0 R
+/Prev 103 0 R
+/Next 119 0 R
+/First 111 0 R
+/Last 115 0 R
+/Count -2
+>> endobj
+103 0 obj <<
+/Title 104 0 R
+/A 101 0 R
+/Parent 95 0 R
+/Prev 99 0 R
+/Next 107 0 R
+>> endobj
+99 0 obj <<
+/Title 100 0 R
+/A 97 0 R
+/Parent 95 0 R
+/Next 103 0 R
+>> endobj
+95 0 obj <<
+/Title 96 0 R
+/A 93 0 R
+/Parent 2937 0 R
+/Prev 63 0 R
+/Next 139 0 R
+/First 99 0 R
+/Last 119 0 R
+/Count -4
+>> endobj
+91 0 obj <<
+/Title 92 0 R
+/A 89 0 R
+/Parent 83 0 R
+/Prev 87 0 R
+>> endobj
+87 0 obj <<
+/Title 88 0 R
+/A 85 0 R
+/Parent 83 0 R
+/Next 91 0 R
+>> endobj
+83 0 obj <<
+/Title 84 0 R
+/A 81 0 R
+/Parent 63 0 R
+/Prev 67 0 R
+/First 87 0 R
+/Last 91 0 R
+/Count -2
+>> endobj
+79 0 obj <<
+/Title 80 0 R
+/A 77 0 R
+/Parent 67 0 R
+/Prev 75 0 R
+>> endobj
+75 0 obj <<
+/Title 76 0 R
+/A 73 0 R
+/Parent 67 0 R
+/Prev 71 0 R
+/Next 79 0 R
+>> endobj
+71 0 obj <<
+/Title 72 0 R
+/A 69 0 R
+/Parent 67 0 R
+/Next 75 0 R
+>> endobj
+67 0 obj <<
+/Title 68 0 R
+/A 65 0 R
+/Parent 63 0 R
+/Next 83 0 R
+/First 71 0 R
+/Last 79 0 R
+/Count -3
+>> endobj
+63 0 obj <<
+/Title 64 0 R
+/A 61 0 R
+/Parent 2937 0 R
+/Prev 35 0 R
+/Next 95 0 R
+/First 67 0 R
+/Last 83 0 R
+/Count -2
+>> endobj
+59 0 obj <<
+/Title 60 0 R
+/A 57 0 R
+/Parent 35 0 R
+/Prev 55 0 R
+>> endobj
+55 0 obj <<
+/Title 56 0 R
+/A 53 0 R
+/Parent 35 0 R
+/Prev 51 0 R
+/Next 59 0 R
+>> endobj
+51 0 obj <<
+/Title 52 0 R
+/A 49 0 R
+/Parent 35 0 R
+/Prev 47 0 R
+/Next 55 0 R
+>> endobj
+47 0 obj <<
+/Title 48 0 R
+/A 45 0 R
+/Parent 35 0 R
+/Prev 43 0 R
+/Next 51 0 R
+>> endobj
+43 0 obj <<
+/Title 44 0 R
+/A 41 0 R
+/Parent 35 0 R
+/Prev 39 0 R
+/Next 47 0 R
+>> endobj
+39 0 obj <<
+/Title 40 0 R
+/A 37 0 R
+/Parent 35 0 R
+/Next 43 0 R
+>> endobj
+35 0 obj <<
+/Title 36 0 R
+/A 33 0 R
+/Parent 2937 0 R
+/Prev 7 0 R
+/Next 63 0 R
+/First 39 0 R
+/Last 59 0 R
+/Count -6
+>> endobj
+31 0 obj <<
+/Title 32 0 R
+/A 29 0 R
+/Parent 7 0 R
+/Prev 27 0 R
+>> endobj
+27 0 obj <<
+/Title 28 0 R
+/A 25 0 R
+/Parent 7 0 R
+/Prev 23 0 R
+/Next 31 0 R
+>> endobj
+23 0 obj <<
+/Title 24 0 R
+/A 21 0 R
+/Parent 7 0 R
+/Prev 19 0 R
+/Next 27 0 R
+>> endobj
+19 0 obj <<
+/Title 20 0 R
+/A 17 0 R
+/Parent 7 0 R
+/Prev 15 0 R
+/Next 23 0 R
+>> endobj
+15 0 obj <<
+/Title 16 0 R
+/A 13 0 R
+/Parent 7 0 R
+/Prev 11 0 R
+/Next 19 0 R
+>> endobj
+11 0 obj <<
+/Title 12 0 R
+/A 9 0 R
+/Parent 7 0 R
+/Next 15 0 R
+>> endobj
+7 0 obj <<
+/Title 8 0 R
+/A 5 0 R
+/Parent 2937 0 R
+/Next 35 0 R
+/First 11 0 R
+/Last 31 0 R
+/Count -6
+>> endobj
+2938 0 obj <<
+/Names [(Doc-Start) 414 0 R (Item.1) 1066 0 R (Item.10) 1097 0 R (Item.100) 1321 0 R (Item.101) 1322 0 R (Item.102) 1336 0 R]
+/Limits [(Doc-Start) (Item.102)]
+>> endobj
+2939 0 obj <<
+/Names [(Item.103) 1337 0 R (Item.104) 1338 0 R (Item.105) 1339 0 R (Item.106) 1358 0 R (Item.107) 1359 0 R (Item.108) 1360 0 R]
+/Limits [(Item.103) (Item.108)]
+>> endobj
+2940 0 obj <<
+/Names [(Item.109) 1361 0 R (Item.11) 1098 0 R (Item.110) 1362 0 R (Item.111) 1363 0 R (Item.112) 1364 0 R (Item.113) 1365 0 R]
+/Limits [(Item.109) (Item.113)]
+>> endobj
+2941 0 obj <<
+/Names [(Item.114) 1366 0 R (Item.115) 1367 0 R (Item.116) 1368 0 R (Item.117) 1369 0 R (Item.118) 1370 0 R (Item.119) 1390 0 R]
+/Limits [(Item.114) (Item.119)]
+>> endobj
+2942 0 obj <<
+/Names [(Item.12) 1099 0 R (Item.120) 1391 0 R (Item.121) 1392 0 R (Item.122) 1393 0 R (Item.123) 1394 0 R (Item.124) 1395 0 R]
+/Limits [(Item.12) (Item.124)]
+>> endobj
+2943 0 obj <<
+/Names [(Item.125) 1396 0 R (Item.126) 1397 0 R (Item.127) 1398 0 R (Item.128) 1399 0 R (Item.129) 1400 0 R (Item.13) 1100 0 R]
+/Limits [(Item.125) (Item.13)]
+>> endobj
+2944 0 obj <<
+/Names [(Item.130) 1407 0 R (Item.131) 1408 0 R (Item.132) 1409 0 R (Item.133) 1424 0 R (Item.134) 1425 0 R (Item.135) 1426 0 R]
+/Limits [(Item.130) (Item.135)]
+>> endobj
+2945 0 obj <<
+/Names [(Item.136) 1427 0 R (Item.137) 1428 0 R (Item.138) 1429 0 R (Item.139) 1430 0 R (Item.14) 1101 0 R (Item.140) 1431 0 R]
+/Limits [(Item.136) (Item.140)]
+>> endobj
+2946 0 obj <<
+/Names [(Item.141) 1432 0 R (Item.142) 1433 0 R (Item.143) 1434 0 R (Item.144) 1435 0 R (Item.145) 1436 0 R (Item.146) 1454 0 R]
+/Limits [(Item.141) (Item.146)]
+>> endobj
+2947 0 obj <<
+/Names [(Item.147) 1455 0 R (Item.148) 1456 0 R (Item.149) 1457 0 R (Item.15) 1103 0 R (Item.150) 1458 0 R (Item.151) 1459 0 R]
+/Limits [(Item.147) (Item.151)]
+>> endobj
+2948 0 obj <<
+/Names [(Item.152) 1460 0 R (Item.153) 1461 0 R (Item.154) 1462 0 R (Item.155) 1463 0 R (Item.156) 1464 0 R (Item.157) 1465 0 R]
+/Limits [(Item.152) (Item.157)]
+>> endobj
+2949 0 obj <<
+/Names [(Item.158) 1466 0 R (Item.159) 1467 0 R (Item.16) 1104 0 R (Item.160) 1468 0 R (Item.161) 1490 0 R (Item.162) 1491 0 R]
+/Limits [(Item.158) (Item.162)]
+>> endobj
+2950 0 obj <<
+/Names [(Item.163) 1492 0 R (Item.164) 1493 0 R (Item.165) 1501 0 R (Item.166) 1502 0 R (Item.167) 1503 0 R (Item.168) 1504 0 R]
+/Limits [(Item.163) (Item.168)]
+>> endobj
+2951 0 obj <<
+/Names [(Item.169) 1505 0 R (Item.17) 1115 0 R (Item.170) 1506 0 R (Item.171) 1507 0 R (Item.172) 1508 0 R (Item.173) 1509 0 R]
+/Limits [(Item.169) (Item.173)]
+>> endobj
+2952 0 obj <<
+/Names [(Item.174) 1510 0 R (Item.175) 1525 0 R (Item.176) 1526 0 R (Item.177) 1527 0 R (Item.178) 1528 0 R (Item.179) 1529 0 R]
+/Limits [(Item.174) (Item.179)]
+>> endobj
+2953 0 obj <<
+/Names [(Item.18) 1116 0 R (Item.180) 1530 0 R (Item.181) 1531 0 R (Item.182) 1532 0 R (Item.183) 1533 0 R (Item.184) 1534 0 R]
+/Limits [(Item.18) (Item.184)]
+>> endobj
+2954 0 obj <<
+/Names [(Item.185) 1562 0 R (Item.186) 1563 0 R (Item.187) 1564 0 R (Item.188) 1565 0 R (Item.189) 1566 0 R (Item.19) 1117 0 R]
+/Limits [(Item.185) (Item.19)]
+>> endobj
+2955 0 obj <<
+/Names [(Item.190) 1567 0 R (Item.191) 1568 0 R (Item.192) 1569 0 R (Item.193) 1570 0 R (Item.194) 1571 0 R (Item.195) 1572 0 R]
+/Limits [(Item.190) (Item.195)]
+>> endobj
+2956 0 obj <<
+/Names [(Item.196) 1573 0 R (Item.197) 1574 0 R (Item.198) 1575 0 R (Item.199) 1576 0 R (Item.2) 1067 0 R (Item.20) 1118 0 R]
+/Limits [(Item.196) (Item.20)]
+>> endobj
+2957 0 obj <<
+/Names [(Item.200) 1577 0 R (Item.201) 1578 0 R (Item.202) 1579 0 R (Item.203) 1580 0 R (Item.204) 1581 0 R (Item.205) 1586 0 R]
+/Limits [(Item.200) (Item.205)]
+>> endobj
+2958 0 obj <<
+/Names [(Item.206) 1587 0 R (Item.207) 1588 0 R (Item.208) 1589 0 R (Item.209) 1590 0 R (Item.21) 1119 0 R (Item.210) 1591 0 R]
+/Limits [(Item.206) (Item.210)]
+>> endobj
+2959 0 obj <<
+/Names [(Item.211) 1592 0 R (Item.212) 1593 0 R (Item.213) 1594 0 R (Item.214) 1595 0 R (Item.215) 1596 0 R (Item.216) 1597 0 R]
+/Limits [(Item.211) (Item.216)]
+>> endobj
+2960 0 obj <<
+/Names [(Item.217) 1598 0 R (Item.218) 1605 0 R (Item.219) 1606 0 R (Item.22) 1120 0 R (Item.220) 1607 0 R (Item.221) 1608 0 R]
+/Limits [(Item.217) (Item.221)]
+>> endobj
+2961 0 obj <<
+/Names [(Item.222) 1609 0 R (Item.223) 1610 0 R (Item.224) 1611 0 R (Item.225) 1612 0 R (Item.226) 1613 0 R (Item.227) 1614 0 R]
+/Limits [(Item.222) (Item.227)]
+>> endobj
+2962 0 obj <<
+/Names [(Item.228) 1615 0 R (Item.229) 1616 0 R (Item.23) 1121 0 R (Item.230) 1617 0 R (Item.231) 1618 0 R (Item.232) 1619 0 R]
+/Limits [(Item.228) (Item.232)]
+>> endobj
+2963 0 obj <<
+/Names [(Item.233) 1620 0 R (Item.234) 1638 0 R (Item.235) 1639 0 R (Item.236) 1640 0 R (Item.237) 1641 0 R (Item.238) 1642 0 R]
+/Limits [(Item.233) (Item.238)]
+>> endobj
+2964 0 obj <<
+/Names [(Item.239) 1643 0 R (Item.24) 1126 0 R (Item.240) 1677 0 R (Item.241) 1678 0 R (Item.242) 1679 0 R (Item.243) 1680 0 R]
+/Limits [(Item.239) (Item.243)]
+>> endobj
+2965 0 obj <<
+/Names [(Item.244) 1681 0 R (Item.245) 1682 0 R (Item.246) 1683 0 R (Item.247) 1684 0 R (Item.248) 1685 0 R (Item.249) 1686 0 R]
+/Limits [(Item.244) (Item.249)]
+>> endobj
+2966 0 obj <<
+/Names [(Item.25) 1127 0 R (Item.250) 1687 0 R (Item.251) 1688 0 R (Item.252) 1689 0 R (Item.253) 1690 0 R (Item.254) 1691 0 R]
+/Limits [(Item.25) (Item.254)]
+>> endobj
+2967 0 obj <<
+/Names [(Item.255) 1692 0 R (Item.256) 1693 0 R (Item.257) 1694 0 R (Item.258) 1695 0 R (Item.259) 1719 0 R (Item.26) 1139 0 R]
+/Limits [(Item.255) (Item.26)]
+>> endobj
+2968 0 obj <<
+/Names [(Item.260) 1720 0 R (Item.261) 1721 0 R (Item.262) 1722 0 R (Item.263) 1723 0 R (Item.264) 1724 0 R (Item.265) 1725 0 R]
+/Limits [(Item.260) (Item.265)]
+>> endobj
+2969 0 obj <<
+/Names [(Item.266) 1726 0 R (Item.267) 1727 0 R (Item.268) 1728 0 R (Item.269) 1729 0 R (Item.27) 1140 0 R (Item.270) 1730 0 R]
+/Limits [(Item.266) (Item.270)]
+>> endobj
+2970 0 obj <<
+/Names [(Item.271) 1731 0 R (Item.272) 1732 0 R (Item.273) 1733 0 R (Item.274) 1734 0 R (Item.275) 1735 0 R (Item.276) 1736 0 R]
+/Limits [(Item.271) (Item.276)]
+>> endobj
+2971 0 obj <<
+/Names [(Item.277) 1737 0 R (Item.278) 1738 0 R (Item.279) 1739 0 R (Item.28) 1141 0 R (Item.280) 1740 0 R (Item.281) 1741 0 R]
+/Limits [(Item.277) (Item.281)]
+>> endobj
+2972 0 obj <<
+/Names [(Item.282) 1742 0 R (Item.283) 1743 0 R (Item.284) 1744 0 R (Item.285) 1745 0 R (Item.286) 1746 0 R (Item.287) 1751 0 R]
+/Limits [(Item.282) (Item.287)]
+>> endobj
+2973 0 obj <<
+/Names [(Item.288) 1752 0 R (Item.289) 1753 0 R (Item.29) 1142 0 R (Item.290) 1754 0 R (Item.291) 1755 0 R (Item.292) 1756 0 R]
+/Limits [(Item.288) (Item.292)]
+>> endobj
+2974 0 obj <<
+/Names [(Item.293) 1757 0 R (Item.294) 1758 0 R (Item.295) 1759 0 R (Item.296) 1760 0 R (Item.297) 1761 0 R (Item.298) 1762 0 R]
+/Limits [(Item.293) (Item.298)]
+>> endobj
+2975 0 obj <<
+/Names [(Item.299) 1763 0 R (Item.3) 1077 0 R (Item.30) 1143 0 R (Item.300) 1764 0 R (Item.301) 1765 0 R (Item.302) 1766 0 R]
+/Limits [(Item.299) (Item.302)]
+>> endobj
+2976 0 obj <<
+/Names [(Item.303) 1767 0 R (Item.304) 1768 0 R (Item.305) 1769 0 R (Item.306) 1770 0 R (Item.307) 1771 0 R (Item.308) 1772 0 R]
+/Limits [(Item.303) (Item.308)]
+>> endobj
+2977 0 obj <<
+/Names [(Item.309) 1773 0 R (Item.31) 1157 0 R (Item.310) 1774 0 R (Item.311) 1775 0 R (Item.312) 1776 0 R (Item.313) 1777 0 R]
+/Limits [(Item.309) (Item.313)]
+>> endobj
+2978 0 obj <<
+/Names [(Item.314) 1778 0 R (Item.315) 1779 0 R (Item.316) 1780 0 R (Item.317) 1781 0 R (Item.318) 1782 0 R (Item.319) 1787 0 R]
+/Limits [(Item.314) (Item.319)]
+>> endobj
+2979 0 obj <<
+/Names [(Item.32) 1158 0 R (Item.320) 1788 0 R (Item.321) 1789 0 R (Item.322) 1790 0 R (Item.323) 1791 0 R (Item.324) 1792 0 R]
+/Limits [(Item.32) (Item.324)]
+>> endobj
+2980 0 obj <<
+/Names [(Item.325) 1793 0 R (Item.326) 1794 0 R (Item.327) 1795 0 R (Item.328) 1796 0 R (Item.329) 1797 0 R (Item.33) 1159 0 R]
+/Limits [(Item.325) (Item.33)]
+>> endobj
+2981 0 obj <<
+/Names [(Item.330) 1798 0 R (Item.331) 1799 0 R (Item.332) 1800 0 R (Item.333) 1801 0 R (Item.334) 1802 0 R (Item.335) 1803 0 R]
+/Limits [(Item.330) (Item.335)]
+>> endobj
+2982 0 obj <<
+/Names [(Item.336) 1804 0 R (Item.337) 1805 0 R (Item.338) 1806 0 R (Item.339) 1807 0 R (Item.34) 1160 0 R (Item.340) 1808 0 R]
+/Limits [(Item.336) (Item.340)]
+>> endobj
+2983 0 obj <<
+/Names [(Item.341) 1809 0 R (Item.342) 1810 0 R (Item.343) 1811 0 R (Item.344) 1812 0 R (Item.345) 1813 0 R (Item.346) 1814 0 R]
+/Limits [(Item.341) (Item.346)]
+>> endobj
+2984 0 obj <<
+/Names [(Item.347) 1815 0 R (Item.348) 1816 0 R (Item.349) 1817 0 R (Item.35) 1161 0 R (Item.350) 1818 0 R (Item.351) 1819 0 R]
+/Limits [(Item.347) (Item.351)]
+>> endobj
+2985 0 obj <<
+/Names [(Item.352) 1824 0 R (Item.353) 1825 0 R (Item.354) 1826 0 R (Item.355) 1827 0 R (Item.356) 1828 0 R (Item.357) 1829 0 R]
+/Limits [(Item.352) (Item.357)]
+>> endobj
+2986 0 obj <<
+/Names [(Item.358) 1830 0 R (Item.359) 1831 0 R (Item.36) 1162 0 R (Item.360) 1832 0 R (Item.361) 1833 0 R (Item.362) 1834 0 R]
+/Limits [(Item.358) (Item.362)]
+>> endobj
+2987 0 obj <<
+/Names [(Item.363) 1835 0 R (Item.364) 1836 0 R (Item.365) 1837 0 R (Item.366) 1838 0 R (Item.367) 1839 0 R (Item.368) 1840 0 R]
+/Limits [(Item.363) (Item.368)]
+>> endobj
+2988 0 obj <<
+/Names [(Item.369) 1841 0 R (Item.37) 1163 0 R (Item.370) 1842 0 R (Item.371) 1843 0 R (Item.372) 1844 0 R (Item.373) 1845 0 R]
+/Limits [(Item.369) (Item.373)]
+>> endobj
+2989 0 obj <<
+/Names [(Item.374) 1846 0 R (Item.375) 1847 0 R (Item.376) 1848 0 R (Item.377) 1849 0 R (Item.378) 1850 0 R (Item.379) 1851 0 R]
+/Limits [(Item.374) (Item.379)]
+>> endobj
+2990 0 obj <<
+/Names [(Item.38) 1169 0 R (Item.380) 1852 0 R (Item.381) 1853 0 R (Item.382) 1854 0 R (Item.383) 1859 0 R (Item.384) 1860 0 R]
+/Limits [(Item.38) (Item.384)]
+>> endobj
+2991 0 obj <<
+/Names [(Item.385) 1861 0 R (Item.386) 1862 0 R (Item.387) 1863 0 R (Item.388) 1864 0 R (Item.389) 1865 0 R (Item.39) 1170 0 R]
+/Limits [(Item.385) (Item.39)]
+>> endobj
+2992 0 obj <<
+/Names [(Item.390) 1866 0 R (Item.391) 1867 0 R (Item.392) 1868 0 R (Item.393) 1869 0 R (Item.394) 1870 0 R (Item.395) 1871 0 R]
+/Limits [(Item.390) (Item.395)]
+>> endobj
+2993 0 obj <<
+/Names [(Item.396) 1872 0 R (Item.397) 1873 0 R (Item.398) 1874 0 R (Item.399) 1875 0 R (Item.4) 1078 0 R (Item.40) 1171 0 R]
+/Limits [(Item.396) (Item.40)]
+>> endobj
+2994 0 obj <<
+/Names [(Item.400) 1876 0 R (Item.401) 1877 0 R (Item.402) 1878 0 R (Item.403) 1879 0 R (Item.404) 1880 0 R (Item.405) 1881 0 R]
+/Limits [(Item.400) (Item.405)]
+>> endobj
+2995 0 obj <<
+/Names [(Item.406) 1882 0 R (Item.407) 1883 0 R (Item.408) 1884 0 R (Item.409) 1885 0 R (Item.41) 1189 0 R (Item.410) 1886 0 R]
+/Limits [(Item.406) (Item.410)]
+>> endobj
+2996 0 obj <<
+/Names [(Item.411) 1887 0 R (Item.412) 1888 0 R (Item.413) 1893 0 R (Item.414) 1894 0 R (Item.415) 1895 0 R (Item.416) 1896 0 R]
+/Limits [(Item.411) (Item.416)]
+>> endobj
+2997 0 obj <<
+/Names [(Item.417) 1897 0 R (Item.418) 1898 0 R (Item.419) 1899 0 R (Item.42) 1190 0 R (Item.420) 1900 0 R (Item.421) 1901 0 R]
+/Limits [(Item.417) (Item.421)]
+>> endobj
+2998 0 obj <<
+/Names [(Item.422) 1902 0 R (Item.423) 1903 0 R (Item.424) 1904 0 R (Item.425) 1905 0 R (Item.426) 1906 0 R (Item.427) 1925 0 R]
+/Limits [(Item.422) (Item.427)]
+>> endobj
+2999 0 obj <<
+/Names [(Item.428) 1926 0 R (Item.429) 1927 0 R (Item.43) 1191 0 R (Item.430) 1928 0 R (Item.431) 1929 0 R (Item.432) 1930 0 R]
+/Limits [(Item.428) (Item.432)]
+>> endobj
+3000 0 obj <<
+/Names [(Item.433) 1931 0 R (Item.434) 1932 0 R (Item.435) 1933 0 R (Item.436) 1934 0 R (Item.437) 1935 0 R (Item.438) 1936 0 R]
+/Limits [(Item.433) (Item.438)]
+>> endobj
+3001 0 obj <<
+/Names [(Item.439) 1937 0 R (Item.44) 1213 0 R (Item.440) 1938 0 R (Item.441) 1939 0 R (Item.442) 1940 0 R (Item.443) 1941 0 R]
+/Limits [(Item.439) (Item.443)]
+>> endobj
+3002 0 obj <<
+/Names [(Item.444) 1942 0 R (Item.445) 1951 0 R (Item.446) 1952 0 R (Item.447) 1970 0 R (Item.448) 1971 0 R (Item.449) 1972 0 R]
+/Limits [(Item.444) (Item.449)]
+>> endobj
+3003 0 obj <<
+/Names [(Item.45) 1214 0 R (Item.450) 1973 0 R (Item.451) 1974 0 R (Item.452) 1975 0 R (Item.453) 1976 0 R (Item.454) 1977 0 R]
+/Limits [(Item.45) (Item.454)]
+>> endobj
+3004 0 obj <<
+/Names [(Item.455) 1978 0 R (Item.456) 1979 0 R (Item.457) 1980 0 R (Item.458) 1981 0 R (Item.459) 1982 0 R (Item.46) 1215 0 R]
+/Limits [(Item.455) (Item.46)]
+>> endobj
+3005 0 obj <<
+/Names [(Item.460) 1983 0 R (Item.461) 1984 0 R (Item.462) 1985 0 R (Item.463) 1986 0 R (Item.464) 1994 0 R (Item.465) 1995 0 R]
+/Limits [(Item.460) (Item.465)]
+>> endobj
+3006 0 obj <<
+/Names [(Item.466) 1996 0 R (Item.467) 1997 0 R (Item.468) 1998 0 R (Item.469) 1999 0 R (Item.47) 1216 0 R (Item.470) 2000 0 R]
+/Limits [(Item.466) (Item.470)]
+>> endobj
+3007 0 obj <<
+/Names [(Item.471) 2001 0 R (Item.472) 2002 0 R (Item.473) 2003 0 R (Item.474) 2004 0 R (Item.475) 2005 0 R (Item.476) 2006 0 R]
+/Limits [(Item.471) (Item.476)]
+>> endobj
+3008 0 obj <<
+/Names [(Item.477) 2007 0 R (Item.478) 2008 0 R (Item.479) 2009 0 R (Item.48) 1217 0 R (Item.480) 2010 0 R (Item.481) 2011 0 R]
+/Limits [(Item.477) (Item.481)]
+>> endobj
+3009 0 obj <<
+/Names [(Item.482) 2012 0 R (Item.483) 2013 0 R (Item.484) 2014 0 R (Item.485) 2015 0 R (Item.486) 2016 0 R (Item.487) 2017 0 R]
+/Limits [(Item.482) (Item.487)]
+>> endobj
+3010 0 obj <<
+/Names [(Item.488) 2018 0 R (Item.489) 2019 0 R (Item.49) 1218 0 R (Item.490) 2020 0 R (Item.491) 2021 0 R (Item.492) 2027 0 R]
+/Limits [(Item.488) (Item.492)]
+>> endobj
+3011 0 obj <<
+/Names [(Item.493) 2028 0 R (Item.494) 2029 0 R (Item.495) 2030 0 R (Item.496) 2031 0 R (Item.497) 2032 0 R (Item.498) 2033 0 R]
+/Limits [(Item.493) (Item.498)]
+>> endobj
+3012 0 obj <<
+/Names [(Item.499) 2034 0 R (Item.5) 1079 0 R (Item.50) 1219 0 R (Item.500) 2035 0 R (Item.501) 2036 0 R (Item.502) 2053 0 R]
+/Limits [(Item.499) (Item.502)]
+>> endobj
+3013 0 obj <<
+/Names [(Item.503) 2054 0 R (Item.504) 2055 0 R (Item.505) 2056 0 R (Item.506) 2057 0 R (Item.507) 2058 0 R (Item.508) 2059 0 R]
+/Limits [(Item.503) (Item.508)]
+>> endobj
+3014 0 obj <<
+/Names [(Item.509) 2060 0 R (Item.51) 1220 0 R (Item.510) 2061 0 R (Item.511) 2062 0 R (Item.512) 2063 0 R (Item.513) 2064 0 R]
+/Limits [(Item.509) (Item.513)]
+>> endobj
+3015 0 obj <<
+/Names [(Item.514) 2065 0 R (Item.515) 2076 0 R (Item.516) 2077 0 R (Item.517) 2078 0 R (Item.518) 2094 0 R (Item.519) 2095 0 R]
+/Limits [(Item.514) (Item.519)]
+>> endobj
+3016 0 obj <<
+/Names [(Item.52) 1221 0 R (Item.520) 2096 0 R (Item.521) 2097 0 R (Item.522) 2098 0 R (Item.523) 2099 0 R (Item.524) 2100 0 R]
+/Limits [(Item.52) (Item.524)]
+>> endobj
+3017 0 obj <<
+/Names [(Item.525) 2101 0 R (Item.526) 2102 0 R (Item.527) 2115 0 R (Item.528) 2116 0 R (Item.529) 2117 0 R (Item.53) 1222 0 R]
+/Limits [(Item.525) (Item.53)]
+>> endobj
+3018 0 obj <<
+/Names [(Item.530) 2118 0 R (Item.531) 2129 0 R (Item.532) 2130 0 R (Item.533) 2131 0 R (Item.534) 2132 0 R (Item.535) 2133 0 R]
+/Limits [(Item.530) (Item.535)]
+>> endobj
+3019 0 obj <<
+/Names [(Item.536) 2134 0 R (Item.537) 2135 0 R (Item.538) 2136 0 R (Item.539) 2137 0 R (Item.54) 1223 0 R (Item.540) 2138 0 R]
+/Limits [(Item.536) (Item.540)]
+>> endobj
+3020 0 obj <<
+/Names [(Item.541) 2139 0 R (Item.542) 2160 0 R (Item.543) 2161 0 R (Item.544) 2162 0 R (Item.545) 2163 0 R (Item.546) 2164 0 R]
+/Limits [(Item.541) (Item.546)]
+>> endobj
+3021 0 obj <<
+/Names [(Item.547) 2165 0 R (Item.548) 2166 0 R (Item.549) 2167 0 R (Item.55) 1236 0 R (Item.550) 2168 0 R (Item.551) 2169 0 R]
+/Limits [(Item.547) (Item.551)]
+>> endobj
+3022 0 obj <<
+/Names [(Item.552) 2202 0 R (Item.553) 2203 0 R (Item.554) 2204 0 R (Item.555) 2205 0 R (Item.556) 2206 0 R (Item.557) 2207 0 R]
+/Limits [(Item.552) (Item.557)]
+>> endobj
+3023 0 obj <<
+/Names [(Item.558) 2208 0 R (Item.559) 2209 0 R (Item.56) 1237 0 R (Item.560) 2210 0 R (Item.561) 2211 0 R (Item.562) 2212 0 R]
+/Limits [(Item.558) (Item.562)]
+>> endobj
+3024 0 obj <<
+/Names [(Item.563) 2213 0 R (Item.564) 2214 0 R (Item.565) 2215 0 R (Item.566) 2216 0 R (Item.567) 2221 0 R (Item.568) 2222 0 R]
+/Limits [(Item.563) (Item.568)]
+>> endobj
+3025 0 obj <<
+/Names [(Item.569) 2223 0 R (Item.57) 1238 0 R (Item.570) 2224 0 R (Item.571) 2225 0 R (Item.572) 2226 0 R (Item.573) 2227 0 R]
+/Limits [(Item.569) (Item.573)]
+>> endobj
+3026 0 obj <<
+/Names [(Item.574) 2228 0 R (Item.575) 2229 0 R (Item.576) 2230 0 R (Item.577) 2231 0 R (Item.578) 2232 0 R (Item.579) 2233 0 R]
+/Limits [(Item.574) (Item.579)]
+>> endobj
+3027 0 obj <<
+/Names [(Item.58) 1239 0 R (Item.580) 2234 0 R (Item.581) 2235 0 R (Item.582) 2236 0 R (Item.583) 2237 0 R (Item.584) 2238 0 R]
+/Limits [(Item.58) (Item.584)]
+>> endobj
+3028 0 obj <<
+/Names [(Item.585) 2239 0 R (Item.586) 2240 0 R (Item.587) 2241 0 R (Item.588) 2242 0 R (Item.589) 2243 0 R (Item.59) 1240 0 R]
+/Limits [(Item.585) (Item.59)]
+>> endobj
+3029 0 obj <<
+/Names [(Item.590) 2244 0 R (Item.591) 2245 0 R (Item.592) 2246 0 R (Item.593) 2254 0 R (Item.594) 2255 0 R (Item.595) 2256 0 R]
+/Limits [(Item.590) (Item.595)]
+>> endobj
+3030 0 obj <<
+/Names [(Item.596) 2257 0 R (Item.597) 2258 0 R (Item.598) 2259 0 R (Item.599) 2260 0 R (Item.6) 1093 0 R (Item.60) 1241 0 R]
+/Limits [(Item.596) (Item.60)]
+>> endobj
+3031 0 obj <<
+/Names [(Item.600) 2261 0 R (Item.601) 2262 0 R (Item.602) 2263 0 R (Item.603) 2264 0 R (Item.604) 2265 0 R (Item.605) 2266 0 R]
+/Limits [(Item.600) (Item.605)]
+>> endobj
+3032 0 obj <<
+/Names [(Item.606) 2267 0 R (Item.607) 2280 0 R (Item.608) 2281 0 R (Item.609) 2282 0 R (Item.61) 1242 0 R (Item.610) 2283 0 R]
+/Limits [(Item.606) (Item.610)]
+>> endobj
+3033 0 obj <<
+/Names [(Item.611) 2284 0 R (Item.612) 2285 0 R (Item.613) 2286 0 R (Item.614) 2287 0 R (Item.615) 2288 0 R (Item.616) 2289 0 R]
+/Limits [(Item.611) (Item.616)]
+>> endobj
+3034 0 obj <<
+/Names [(Item.617) 2290 0 R (Item.618) 2291 0 R (Item.619) 2309 0 R (Item.62) 1243 0 R (Item.620) 2310 0 R (Item.621) 2311 0 R]
+/Limits [(Item.617) (Item.621)]
+>> endobj
+3035 0 obj <<
+/Names [(Item.622) 2312 0 R (Item.623) 2313 0 R (Item.624) 2314 0 R (Item.625) 2315 0 R (Item.626) 2316 0 R (Item.627) 2317 0 R]
+/Limits [(Item.622) (Item.627)]
+>> endobj
+3036 0 obj <<
+/Names [(Item.628) 2318 0 R (Item.629) 2319 0 R (Item.63) 1244 0 R (Item.630) 2320 0 R (Item.631) 2333 0 R (Item.632) 2334 0 R]
+/Limits [(Item.628) (Item.632)]
+>> endobj
+3037 0 obj <<
+/Names [(Item.633) 2335 0 R (Item.634) 2336 0 R (Item.635) 2337 0 R (Item.636) 2338 0 R (Item.637) 2339 0 R (Item.638) 2340 0 R]
+/Limits [(Item.633) (Item.638)]
+>> endobj
+3038 0 obj <<
+/Names [(Item.639) 2341 0 R (Item.64) 1245 0 R (Item.640) 2342 0 R (Item.641) 2343 0 R (Item.642) 2344 0 R (Item.643) 2345 0 R]
+/Limits [(Item.639) (Item.643)]
+>> endobj
+3039 0 obj <<
+/Names [(Item.644) 2346 0 R (Item.645) 2347 0 R (Item.646) 2348 0 R (Item.647) 2349 0 R (Item.648) 2350 0 R (Item.649) 2351 0 R]
+/Limits [(Item.644) (Item.649)]
+>> endobj
+3040 0 obj <<
+/Names [(Item.65) 1246 0 R (Item.650) 2386 0 R (Item.651) 2387 0 R (Item.652) 2388 0 R (Item.653) 2389 0 R (Item.654) 2390 0 R]
+/Limits [(Item.65) (Item.654)]
+>> endobj
+3041 0 obj <<
+/Names [(Item.655) 2391 0 R (Item.656) 2392 0 R (Item.657) 2393 0 R (Item.658) 2394 0 R (Item.659) 2395 0 R (Item.66) 1247 0 R]
+/Limits [(Item.655) (Item.66)]
+>> endobj
+3042 0 obj <<
+/Names [(Item.660) 2396 0 R (Item.661) 2397 0 R (Item.662) 2398 0 R (Item.663) 2411 0 R (Item.664) 2412 0 R (Item.665) 2413 0 R]
+/Limits [(Item.660) (Item.665)]
+>> endobj
+3043 0 obj <<
+/Names [(Item.666) 2414 0 R (Item.667) 2415 0 R (Item.668) 2416 0 R (Item.669) 2417 0 R (Item.67) 1248 0 R (Item.670) 2418 0 R]
+/Limits [(Item.666) (Item.670)]
+>> endobj
+3044 0 obj <<
+/Names [(Item.671) 2419 0 R (Item.672) 2420 0 R (Item.673) 2421 0 R (Item.674) 2422 0 R (Item.675) 2423 0 R (Item.676) 2424 0 R]
+/Limits [(Item.671) (Item.676)]
+>> endobj
+3045 0 obj <<
+/Names [(Item.677) 2425 0 R (Item.678) 2426 0 R (Item.679) 2427 0 R (Item.68) 1249 0 R (Item.680) 2428 0 R (Item.681) 2434 0 R]
+/Limits [(Item.677) (Item.681)]
+>> endobj
+3046 0 obj <<
+/Names [(Item.682) 2435 0 R (Item.683) 2436 0 R (Item.684) 2437 0 R (Item.685) 2438 0 R (Item.686) 2439 0 R (Item.687) 2440 0 R]
+/Limits [(Item.682) (Item.687)]
+>> endobj
+3047 0 obj <<
+/Names [(Item.688) 2441 0 R (Item.689) 2442 0 R (Item.69) 1250 0 R (Item.690) 2443 0 R (Item.691) 2444 0 R (Item.692) 2467 0 R]
+/Limits [(Item.688) (Item.692)]
+>> endobj
+3048 0 obj <<
+/Names [(Item.693) 2468 0 R (Item.694) 2469 0 R (Item.695) 2470 0 R (Item.696) 2471 0 R (Item.697) 2472 0 R (Item.698) 2473 0 R]
+/Limits [(Item.693) (Item.698)]
+>> endobj
+3049 0 obj <<
+/Names [(Item.699) 2474 0 R (Item.7) 1094 0 R (Item.70) 1251 0 R (Item.700) 2475 0 R (Item.701) 2476 0 R (Item.702) 2487 0 R]
+/Limits [(Item.699) (Item.702)]
+>> endobj
+3050 0 obj <<
+/Names [(Item.703) 2488 0 R (Item.704) 2489 0 R (Item.705) 2490 0 R (Item.706) 2491 0 R (Item.707) 2492 0 R (Item.708) 2493 0 R]
+/Limits [(Item.703) (Item.708)]
+>> endobj
+3051 0 obj <<
+/Names [(Item.709) 2498 0 R (Item.71) 1252 0 R (Item.710) 2499 0 R (Item.711) 2500 0 R (Item.712) 2519 0 R (Item.713) 2520 0 R]
+/Limits [(Item.709) (Item.713)]
+>> endobj
+3052 0 obj <<
+/Names [(Item.714) 2521 0 R (Item.715) 2522 0 R (Item.716) 2523 0 R (Item.717) 2524 0 R (Item.718) 2525 0 R (Item.719) 2526 0 R]
+/Limits [(Item.714) (Item.719)]
+>> endobj
+3053 0 obj <<
+/Names [(Item.72) 1253 0 R (Item.720) 2527 0 R (Item.721) 2528 0 R (Item.722) 2529 0 R (Item.723) 2530 0 R (Item.724) 2531 0 R]
+/Limits [(Item.72) (Item.724)]
+>> endobj
+3054 0 obj <<
+/Names [(Item.725) 2532 0 R (Item.726) 2533 0 R (Item.727) 2542 0 R (Item.728) 2543 0 R (Item.729) 2544 0 R (Item.73) 1254 0 R]
+/Limits [(Item.725) (Item.73)]
+>> endobj
+3055 0 obj <<
+/Names [(Item.730) 2545 0 R (Item.731) 2546 0 R (Item.732) 2547 0 R (Item.733) 2548 0 R (Item.734) 2549 0 R (Item.735) 2585 0 R]
+/Limits [(Item.730) (Item.735)]
+>> endobj
+3056 0 obj <<
+/Names [(Item.736) 2586 0 R (Item.737) 2587 0 R (Item.738) 2588 0 R (Item.739) 2589 0 R (Item.74) 1255 0 R (Item.740) 2590 0 R]
+/Limits [(Item.736) (Item.740)]
+>> endobj
+3057 0 obj <<
+/Names [(Item.741) 2591 0 R (Item.742) 2592 0 R (Item.743) 2593 0 R (Item.744) 2601 0 R (Item.745) 2602 0 R (Item.746) 2603 0 R]
+/Limits [(Item.741) (Item.746)]
+>> endobj
+3058 0 obj <<
+/Names [(Item.747) 2604 0 R (Item.748) 2605 0 R (Item.749) 2606 0 R (Item.75) 1256 0 R (Item.750) 2607 0 R (Item.751) 2608 0 R]
+/Limits [(Item.747) (Item.751)]
+>> endobj
+3059 0 obj <<
+/Names [(Item.752) 2609 0 R (Item.753) 2610 0 R (Item.76) 1257 0 R (Item.77) 1275 0 R (Item.78) 1277 0 R (Item.79) 1278 0 R]
+/Limits [(Item.752) (Item.79)]
+>> endobj
+3060 0 obj <<
+/Names [(Item.8) 1095 0 R (Item.80) 1284 0 R (Item.81) 1285 0 R (Item.82) 1286 0 R (Item.83) 1287 0 R (Item.84) 1288 0 R]
+/Limits [(Item.8) (Item.84)]
+>> endobj
+3061 0 obj <<
+/Names [(Item.85) 1289 0 R (Item.86) 1290 0 R (Item.87) 1291 0 R (Item.88) 1302 0 R (Item.89) 1303 0 R (Item.9) 1096 0 R]
+/Limits [(Item.85) (Item.9)]
+>> endobj
+3062 0 obj <<
+/Names [(Item.90) 1304 0 R (Item.91) 1305 0 R (Item.92) 1306 0 R (Item.93) 1307 0 R (Item.94) 1308 0 R (Item.95) 1309 0 R]
+/Limits [(Item.90) (Item.95)]
+>> endobj
+3063 0 obj <<
+/Names [(Item.96) 1310 0 R (Item.97) 1311 0 R (Item.98) 1312 0 R (Item.99) 1320 0 R (appendix*.139) 2852 0 R (appendix.A) 346 0 R]
+/Limits [(Item.96) (appendix.A)]
+>> endobj
+3064 0 obj <<
+/Names [(appendix.B) 386 0 R (appendix.C) 406 0 R (chapter*.1) 456 0 R (chapter*.2) 572 0 R (chapter*.3) 632 0 R (chapter*.4) 665 0 R]
+/Limits [(appendix.B) (chapter*.4)]
+>> endobj
+3065 0 obj <<
+/Names [(chapter*.5) 690 0 R (chapter.1) 6 0 R (chapter.2) 34 0 R (chapter.3) 62 0 R (chapter.4) 94 0 R (chapter.5) 138 0 R]
+/Limits [(chapter*.5) (chapter.5)]
+>> endobj
+3066 0 obj <<
+/Names [(chapter.6) 182 0 R (chapter.7) 234 0 R (cite.CSF77) 2197 0 R (cite.Mel04) 706 0 R (cite.Poyn97) 932 0 R (cite.rec470) 911 0 R]
+/Limits [(chapter.6) (cite.rec470)]
+>> endobj
+3067 0 obj <<
+/Names [(cite.rec601) 912 0 R (cite.rec709) 921 0 R (cite.rfc2044) 1173 0 R (cite.rfc2119) 691 0 R (cite.rfc3533) 2618 0 R (cite.smpte170m) 922 0 R]
+/Limits [(cite.rec601) (cite.smpte170m)]
+>> endobj
+3068 0 obj <<
+/Names [(cite.vorbis) 713 0 R (equation.4.1) 881 0 R (equation.4.10) 895 0 R (equation.4.11) 896 0 R (equation.4.12) 897 0 R (equation.4.13) 898 0 R]
+/Limits [(cite.vorbis) (equation.4.13)]
+>> endobj
+3069 0 obj <<
+/Names [(equation.4.14) 908 0 R (equation.4.15) 909 0 R (equation.4.16) 910 0 R (equation.4.2) 883 0 R (equation.4.3) 884 0 R (equation.4.4) 885 0 R]
+/Limits [(equation.4.14) (equation.4.4)]
+>> endobj
+3070 0 obj <<
+/Names [(equation.4.5) 886 0 R (equation.4.6) 887 0 R (equation.4.7) 892 0 R (equation.4.8) 893 0 R (equation.4.9) 894 0 R (figure.2.1) 577 0 R]
+/Limits [(equation.4.5) (figure.2.1)]
+>> endobj
+3071 0 obj <<
+/Names [(figure.2.2) 578 0 R (figure.2.3) 579 0 R (figure.2.4) 580 0 R (figure.2.5) 581 0 R (figure.2.6) 582 0 R (figure.2.7) 583 0 R]
+/Limits [(figure.2.2) (figure.2.7)]
+>> endobj
+3072 0 obj <<
+/Names [(figure.2.8) 584 0 R (figure.4.1) 585 0 R (figure.4.2) 586 0 R (figure.4.3) 587 0 R (figure.4.4) 588 0 R (figure.4.5) 589 0 R]
+/Limits [(figure.2.8) (figure.4.5)]
+>> endobj
+3073 0 obj <<
+/Names [(figure.4.6) 590 0 R (figure.4.7) 591 0 R (figure.6.1) 592 0 R (figure.6.2) 593 0 R (figure.6.3) 594 0 R (figure.6.4) 595 0 R]
+/Limits [(figure.4.6) (figure.6.4)]
+>> endobj
+3074 0 obj <<
+/Names [(figure.6.5) 596 0 R (figure.7.1) 597 0 R (figure.7.2) 598 0 R (figure.7.3) 599 0 R (page.1) 704 0 R (page.10) 785 0 R]
+/Limits [(figure.6.5) (page.10)]
+>> endobj
+3075 0 obj <<
+/Names [(page.100) 2026 0 R (page.101) 2041 0 R (page.102) 2052 0 R (page.103) 2069 0 R (page.104) 2085 0 R (page.105) 2093 0 R]
+/Limits [(page.100) (page.105)]
+>> endobj
+3076 0 obj <<
+/Names [(page.106) 2110 0 R (page.107) 2128 0 R (page.108) 2148 0 R (page.109) 2159 0 R (page.11) 804 0 R (page.110) 2173 0 R]
+/Limits [(page.106) (page.110)]
+>> endobj
+3077 0 obj <<
+/Names [(page.111) 2187 0 R (page.112) 2201 0 R (page.113) 2220 0 R (page.114) 2253 0 R (page.115) 2276 0 R (page.116) 2297 0 R]
+/Limits [(page.111) (page.116)]
+>> endobj
+3078 0 obj <<
+/Names [(page.117) 2308 0 R (page.118) 2332 0 R (page.119) 2357 0 R (page.12) 816 0 R (page.120) 2361 0 R (page.121) 2368 0 R]
+/Limits [(page.117) (page.121)]
+>> endobj
+3079 0 obj <<
+/Names [(page.122) 2377 0 R (page.123) 2385 0 R (page.124) 2410 0 R (page.125) 2433 0 R (page.126) 2456 0 R (page.127) 2464 0 R]
+/Limits [(page.122) (page.127)]
+>> endobj
+3080 0 obj <<
+/Names [(page.128) 2482 0 R (page.129) 2497 0 R (page.13) 822 0 R (page.130) 2507 0 R (page.131) 2518 0 R (page.132) 2541 0 R]
+/Limits [(page.128) (page.132)]
+>> endobj
+3081 0 obj <<
+/Names [(page.133) 2555 0 R (page.134) 2560 0 R (page.135) 2564 0 R (page.136) 2571 0 R (page.137) 2584 0 R (page.138) 2600 0 R]
+/Limits [(page.133) (page.138)]
+>> endobj
+3082 0 obj <<
+/Names [(page.139) 2617 0 R (page.14) 830 0 R (page.140) 2623 0 R (page.141) 2627 0 R (page.142) 2632 0 R (page.143) 2647 0 R]
+/Limits [(page.139) (page.143)]
+>> endobj
+3083 0 obj <<
+/Names [(page.144) 2651 0 R (page.145) 2655 0 R (page.146) 2659 0 R (page.147) 2663 0 R (page.148) 2668 0 R (page.149) 2672 0 R]
+/Limits [(page.144) (page.149)]
+>> endobj
+3084 0 obj <<
+/Names [(page.15) 837 0 R (page.150) 2676 0 R (page.151) 2680 0 R (page.152) 2684 0 R (page.153) 2688 0 R (page.154) 2693 0 R]
+/Limits [(page.15) (page.154)]
+>> endobj
+3085 0 obj <<
+/Names [(page.155) 2697 0 R (page.156) 2701 0 R (page.157) 2705 0 R (page.158) 2709 0 R (page.159) 2713 0 R (page.16) 845 0 R]
+/Limits [(page.155) (page.16)]
+>> endobj
+3086 0 obj <<
+/Names [(page.160) 2718 0 R (page.161) 2722 0 R (page.162) 2726 0 R (page.163) 2730 0 R (page.164) 2734 0 R (page.165) 2738 0 R]
+/Limits [(page.160) (page.165)]
+>> endobj
+3087 0 obj <<
+/Names [(page.166) 2743 0 R (page.167) 2747 0 R (page.168) 2751 0 R (page.169) 2755 0 R (page.17) 850 0 R (page.170) 2759 0 R]
+/Limits [(page.166) (page.170)]
+>> endobj
+3088 0 obj <<
+/Names [(page.171) 2763 0 R (page.172) 2768 0 R (page.173) 2772 0 R (page.174) 2776 0 R (page.175) 2780 0 R (page.176) 2784 0 R]
+/Limits [(page.171) (page.176)]
+>> endobj
+3089 0 obj <<
+/Names [(page.177) 2788 0 R (page.178) 2793 0 R (page.179) 2797 0 R (page.18) 860 0 R (page.180) 2801 0 R (page.181) 2805 0 R]
+/Limits [(page.177) (page.181)]
+>> endobj
+3090 0 obj <<
+/Names [(page.182) 2809 0 R (page.183) 2813 0 R (page.184) 2818 0 R (page.185) 2822 0 R (page.186) 2826 0 R (page.187) 2834 0 R]
+/Limits [(page.182) (page.187)]
+>> endobj
+3091 0 obj <<
+/Names [(page.188) 2841 0 R (page.189) 2851 0 R (page.19) 866 0 R (page.190) 2861 0 R (page.2) 712 0 R (page.20) 871 0 R]
+/Limits [(page.188) (page.20)]
+>> endobj
+3092 0 obj <<
+/Names [(page.21) 875 0 R (page.22) 880 0 R (page.23) 891 0 R (page.24) 907 0 R (page.25) 920 0 R (page.26) 931 0 R]
+/Limits [(page.21) (page.26)]
+>> endobj
+3093 0 obj <<
+/Names [(page.27) 939 0 R (page.28) 953 0 R (page.29) 965 0 R (page.3) 717 0 R (page.30) 988 0 R (page.31) 998 0 R]
+/Limits [(page.27) (page.31)]
+>> endobj
+3094 0 obj <<
+/Names [(page.32) 1026 0 R (page.33) 1030 0 R (page.34) 1035 0 R (page.35) 1039 0 R (page.36) 1043 0 R (page.37) 1047 0 R]
+/Limits [(page.32) (page.37)]
+>> endobj
+3095 0 obj <<
+/Names [(page.38) 1051 0 R (page.39) 1055 0 R (page.4) 722 0 R (page.40) 1062 0 R (page.41) 1075 0 R (page.42) 1083 0 R]
+/Limits [(page.38) (page.42)]
+>> endobj
+3096 0 obj <<
+/Names [(page.43) 1092 0 R (page.44) 1114 0 R (page.45) 1125 0 R (page.46) 1133 0 R (page.47) 1151 0 R (page.48) 1168 0 R]
+/Limits [(page.43) (page.48)]
+>> endobj
+3097 0 obj <<
+/Names [(page.49) 1177 0 R (page.5) 728 0 R (page.50) 1184 0 R (page.51) 1205 0 R (page.52) 1212 0 R (page.53) 1235 0 R]
+/Limits [(page.49) (page.53)]
+>> endobj
+3098 0 obj <<
+/Names [(page.54) 1263 0 R (page.55) 1273 0 R (page.56) 1283 0 R (page.57) 1300 0 R (page.58) 1319 0 R (page.59) 1334 0 R]
+/Limits [(page.54) (page.59)]
+>> endobj
+3099 0 obj <<
+/Names [(page.6) 734 0 R (page.60) 1343 0 R (page.61) 1347 0 R (page.62) 1357 0 R (page.63) 1376 0 R (page.64) 1389 0 R]
+/Limits [(page.6) (page.64)]
+>> endobj
+3100 0 obj <<
+/Names [(page.65) 1406 0 R (page.66) 1423 0 R (page.67) 1441 0 R (page.68) 1453 0 R (page.69) 1477 0 R (page.7) 748 0 R]
+/Limits [(page.65) (page.7)]
+>> endobj
+3101 0 obj <<
+/Names [(page.70) 1489 0 R (page.71) 1500 0 R (page.72) 1522 0 R (page.73) 1538 0 R (page.74) 1543 0 R (page.75) 1552 0 R]
+/Limits [(page.70) (page.75)]
+>> endobj
+3102 0 obj <<
+/Names [(page.76) 1561 0 R (page.77) 1585 0 R (page.78) 1604 0 R (page.79) 1625 0 R (page.8) 759 0 R (page.80) 1637 0 R]
+/Limits [(page.76) (page.80)]
+>> endobj
+3103 0 obj <<
+/Names [(page.81) 1648 0 R (page.82) 1653 0 R (page.83) 1660 0 R (page.84) 1669 0 R (page.85) 1676 0 R (page.86) 1701 0 R]
+/Limits [(page.81) (page.86)]
+>> endobj
+3104 0 obj <<
+/Names [(page.87) 1712 0 R (page.88) 1718 0 R (page.89) 1750 0 R (page.9) 774 0 R (page.90) 1786 0 R (page.91) 1823 0 R]
+/Limits [(page.87) (page.91)]
+>> endobj
+3105 0 obj <<
+/Names [(page.92) 1858 0 R (page.93) 1892 0 R (page.94) 1915 0 R (page.95) 1924 0 R (page.96) 1950 0 R (page.97) 1958 0 R]
+/Limits [(page.92) (page.97)]
+>> endobj
+3106 0 obj <<
+/Names [(page.98) 1969 0 R (page.99) 1993 0 R (page.i) 413 0 R (page.ii) 421 0 R (page.iii) 540 0 R (page.iv) 544 0 R]
+/Limits [(page.98) (page.iv)]
+>> endobj
+3107 0 obj <<
+/Names [(page.ix) 664 0 R (page.v) 571 0 R (page.vi) 603 0 R (page.vii) 631 0 R (page.viii) 660 0 R (page.x) 672 0 R]
+/Limits [(page.ix) (page.x)]
+>> endobj
+3108 0 obj <<
+/Names [(page.xi) 679 0 R (page.xii) 684 0 R (page.xiii) 689 0 R (page.xiv) 695 0 R (section*.10) 851 0 R (section*.100) 2079 0 R]
+/Limits [(page.xi) (section*.100)]
+>> endobj
+3109 0 obj <<
+/Names [(section*.101) 2080 0 R (section*.102) 2086 0 R (section*.103) 2088 0 R (section*.104) 2103 0 R (section*.105) 2104 0 R (section*.106) 2111 0 R]
+/Limits [(section*.101) (section*.106)]
+>> endobj
+3110 0 obj <<
+/Names [(section*.107) 2113 0 R (section*.108) 2140 0 R (section*.109) 2149 0 R (section*.11) 852 0 R (section*.110) 2151 0 R (section*.111) 2174 0 R]
+/Limits [(section*.107) (section*.111)]
+>> endobj
+3111 0 obj <<
+/Names [(section*.112) 2175 0 R (section*.113) 2177 0 R (section*.114) 2179 0 R (section*.115) 1943 0 R (section*.116) 2268 0 R (section*.117) 2270 0 R]
+/Limits [(section*.112) (section*.117)]
+>> endobj
+3112 0 obj <<
+/Names [(section*.118) 2278 0 R (section*.119) 2298 0 R (section*.12) 853 0 R (section*.120) 2299 0 R (section*.121) 2301 0 R (section*.122) 2303 0 R]
+/Limits [(section*.118) (section*.122)]
+>> endobj
+3113 0 obj <<
+/Names [(section*.123) 2352 0 R (section*.124) 2369 0 R (section*.125) 2371 0 R (section*.126) 2457 0 R (section*.127) 2459 0 R (section*.128) 2465 0 R]
+/Limits [(section*.123) (section*.128)]
+>> endobj
+3114 0 obj <<
+/Names [(section*.129) 2477 0 R (section*.13) 854 0 R (section*.130) 2483 0 R (section*.131) 2485 0 R (section*.132) 2501 0 R (section*.133) 2508 0 R]
+/Limits [(section*.129) (section*.133)]
+>> endobj
+3115 0 obj <<
+/Names [(section*.134) 2510 0 R (section*.135) 2550 0 R (section*.136) 2551 0 R (section*.137) 2565 0 R (section*.138) 2572 0 R (section*.14) 855 0 R]
+/Limits [(section*.134) (section*.14)]
+>> endobj
+3116 0 obj <<
+/Names [(section*.15) 856 0 R (section*.16) 861 0 R (section*.17) 862 0 R (section*.18) 867 0 R (section*.19) 1056 0 R (section*.20) 1057 0 R]
+/Limits [(section*.15) (section*.20)]
+>> endobj
+3117 0 obj <<
+/Names [(section*.21) 1063 0 R (section*.22) 1065 0 R (section*.23) 1068 0 R (section*.24) 1069 0 R (section*.25) 1076 0 R (section*.26) 1128 0 R]
+/Limits [(section*.21) (section*.26)]
+>> endobj
+3118 0 obj <<
+/Names [(section*.27) 1134 0 R (section*.28) 1135 0 R (section*.29) 1137 0 R (section*.30) 1152 0 R (section*.31) 1153 0 R (section*.32) 1155 0 R]
+/Limits [(section*.27) (section*.32)]
+>> endobj
+3119 0 obj <<
+/Names [(section*.33) 1172 0 R (section*.34) 1178 0 R (section*.35) 1185 0 R (section*.36) 1187 0 R (section*.37) 1192 0 R (section*.38) 1193 0 R]
+/Limits [(section*.33) (section*.38)]
+>> endobj
+3120 0 obj <<
+/Names [(section*.39) 1194 0 R (section*.40) 1206 0 R (section*.41) 1258 0 R (section*.42) 1259 0 R (section*.43) 1266 0 R (section*.44) 1268 0 R]
+/Limits [(section*.39) (section*.44)]
+>> endobj
+3121 0 obj <<
+/Names [(section*.45) 1292 0 R (section*.46) 1293 0 R (section*.47) 1295 0 R (section*.48) 1323 0 R (section*.49) 1324 0 R (section*.50) 1325 0 R]
+/Limits [(section*.45) (section*.50)]
+>> endobj
+3122 0 obj <<
+/Names [(section*.51) 1335 0 R (section*.52) 1348 0 R (section*.53) 1349 0 R (section*.54) 1351 0 R (section*.55) 1371 0 R (section*.56) 1377 0 R]
+/Limits [(section*.51) (section*.56)]
+>> endobj
+3123 0 obj <<
+/Names [(section*.57) 1379 0 R (section*.58) 1381 0 R (section*.59) 1410 0 R (section*.6) 838 0 R (section*.60) 1411 0 R (section*.61) 1413 0 R]
+/Limits [(section*.57) (section*.61)]
+>> endobj
+3124 0 obj <<
+/Names [(section*.62) 1415 0 R (section*.63) 1437 0 R (section*.64) 1443 0 R (section*.65) 1445 0 R (section*.66) 1469 0 R (section*.67) 1479 0 R]
+/Limits [(section*.62) (section*.67)]
+>> endobj
+3125 0 obj <<
+/Names [(section*.68) 1481 0 R (section*.69) 1511 0 R (section*.7) 839 0 R (section*.70) 1513 0 R (section*.71) 1523 0 R (section*.72) 1539 0 R]
+/Limits [(section*.68) (section*.72)]
+>> endobj
+3126 0 obj <<
+/Names [(section*.73) 1545 0 R (section*.74) 1547 0 R (section*.75) 1621 0 R (section*.76) 1627 0 R (section*.77) 1629 0 R (section*.78) 1631 0 R]
+/Limits [(section*.73) (section*.78)]
+>> endobj
+3127 0 obj <<
+/Names [(section*.79) 1644 0 R (section*.8) 840 0 R (section*.80) 1661 0 R (section*.81) 1663 0 R (section*.82) 1671 0 R (section*.83) 1696 0 R]
+/Limits [(section*.79) (section*.83)]
+>> endobj
+3128 0 obj <<
+/Names [(section*.84) 1697 0 R (section*.85) 1703 0 R (section*.86) 1705 0 R (section*.87) 1907 0 R (section*.88) 1909 0 R (section*.89) 1917 0 R]
+/Limits [(section*.84) (section*.89)]
+>> endobj
+3129 0 obj <<
+/Names [(section*.9) 846 0 R (section*.90) 1953 0 R (section*.91) 1959 0 R (section*.92) 1961 0 R (section*.93) 2037 0 R (section*.94) 2043 0 R]
+/Limits [(section*.9) (section*.94)]
+>> endobj
+3130 0 obj <<
+/Names [(section*.95) 2045 0 R (section*.96) 2070 0 R (section*.97) 2071 0 R (section*.98) 2072 0 R (section*.99) 2074 0 R (section.1.1) 10 0 R]
+/Limits [(section*.95) (section.1.1)]
+>> endobj
+3131 0 obj <<
+/Names [(section.1.2) 14 0 R (section.1.3) 18 0 R (section.1.4) 22 0 R (section.1.5) 26 0 R (section.1.6) 30 0 R (section.2.1) 38 0 R]
+/Limits [(section.1.2) (section.2.1)]
+>> endobj
+3132 0 obj <<
+/Names [(section.2.2) 42 0 R (section.2.3) 46 0 R (section.2.4) 50 0 R (section.2.5) 54 0 R (section.2.6) 58 0 R (section.3.1) 66 0 R]
+/Limits [(section.2.2) (section.3.1)]
+>> endobj
+3133 0 obj <<
+/Names [(section.3.2) 82 0 R (section.4.1) 98 0 R (section.4.2) 102 0 R (section.4.3) 106 0 R (section.4.4) 118 0 R (section.5.1) 142 0 R]
+/Limits [(section.3.2) (section.5.1)]
+>> endobj
+3134 0 obj <<
+/Names [(section.5.2) 158 0 R (section.6.1) 186 0 R (section.6.2) 190 0 R (section.6.3) 194 0 R (section.6.4) 210 0 R (section.7.1) 238 0 R]
+/Limits [(section.5.2) (section.7.1)]
+>> endobj
+3135 0 obj <<
+/Names [(section.7.10) 326 0 R (section.7.11) 342 0 R (section.7.2) 242 0 R (section.7.3) 254 0 R (section.7.4) 258 0 R (section.7.5) 262 0 R]
+/Limits [(section.7.10) (section.7.5)]
+>> endobj
+3136 0 obj <<
+/Names [(section.7.6) 274 0 R (section.7.7) 278 0 R (section.7.8) 294 0 R (section.7.9) 306 0 R (section.A.1) 350 0 R (section.A.2) 358 0 R]
+/Limits [(section.7.6) (section.A.2)]
+>> endobj
+3137 0 obj <<
+/Names [(section.A.3) 374 0 R (section.B.1) 390 0 R (section.B.2) 394 0 R (section.B.3) 398 0 R (section.B.4) 402 0 R (subsection.3.1.1) 70 0 R]
+/Limits [(section.A.3) (subsection.3.1.1)]
+>> endobj
+3138 0 obj <<
+/Names [(subsection.3.1.2) 74 0 R (subsection.3.1.3) 78 0 R (subsection.3.2.1) 86 0 R (subsection.3.2.2) 90 0 R (subsection.4.3.1) 110 0 R (subsection.4.3.2) 114 0 R]
+/Limits [(subsection.3.1.2) (subsection.4.3.2)]
+>> endobj
+3139 0 obj <<
+/Names [(subsection.4.4.1) 122 0 R (subsection.4.4.2) 126 0 R (subsection.4.4.3) 130 0 R (subsection.4.4.4) 134 0 R (subsection.5.1.1) 146 0 R (subsection.5.1.2) 150 0 R]
+/Limits [(subsection.4.4.1) (subsection.5.1.2)]
+>> endobj
+3140 0 obj <<
+/Names [(subsection.5.1.3) 154 0 R (subsection.5.2.1) 162 0 R (subsection.5.2.2) 166 0 R (subsection.5.2.3) 170 0 R (subsection.5.2.4) 174 0 R (subsection.5.2.5) 178 0 R]
+/Limits [(subsection.5.1.3) (subsection.5.2.5)]
+>> endobj
+3141 0 obj <<
+/Names [(subsection.6.3.1) 198 0 R (subsection.6.3.2) 202 0 R (subsection.6.3.3) 206 0 R (subsection.6.4.1) 214 0 R (subsection.6.4.2) 218 0 R (subsection.6.4.3) 222 0 R]
+/Limits [(subsection.6.3.1) (subsection.6.4.3)]
+>> endobj
+3142 0 obj <<
+/Names [(subsection.6.4.4) 226 0 R (subsection.6.4.5) 230 0 R (subsection.7.10.1) 330 0 R (subsection.7.10.2) 334 0 R (subsection.7.10.3) 338 0 R (subsection.7.2.1) 246 0 R]
+/Limits [(subsection.6.4.4) (subsection.7.2.1)]
+>> endobj
+3143 0 obj <<
+/Names [(subsection.7.2.2) 250 0 R (subsection.7.5.1) 266 0 R (subsection.7.5.2) 270 0 R (subsection.7.7.1) 282 0 R (subsection.7.7.2) 286 0 R (subsection.7.7.3) 290 0 R]
+/Limits [(subsection.7.2.2) (subsection.7.7.3)]
+>> endobj
+3144 0 obj <<
+/Names [(subsection.7.8.1) 298 0 R (subsection.7.8.2) 302 0 R (subsection.7.9.1) 310 0 R (subsection.7.9.2) 314 0 R (subsection.7.9.3) 318 0 R (subsection.7.9.4) 322 0 R]
+/Limits [(subsection.7.8.1) (subsection.7.9.4)]
+>> endobj
+3145 0 obj <<
+/Names [(subsection.A.1.1) 354 0 R (subsection.A.2.1) 362 0 R (subsection.A.2.2) 366 0 R (subsection.A.2.3) 370 0 R (subsection.A.3.1) 378 0 R (subsection.A.3.2) 382 0 R]
+/Limits [(subsection.A.1.1) (subsection.A.3.2)]
+>> endobj
+3146 0 obj <<
+/Names [(table.2.1) 633 0 R (table.3.1) 634 0 R (table.4.1) 635 0 R (table.4.2) 636 0 R (table.6.1) 1064 0 R (table.6.10) 1156 0 R]
+/Limits [(table.2.1) (table.6.10)]
+>> endobj
+3147 0 obj <<
+/Names [(table.6.11) 1186 0 R (table.6.12) 1188 0 R (table.6.13) 1195 0 R (table.6.14) 1207 0 R (table.6.15) 1264 0 R (table.6.16) 1267 0 R]
+/Limits [(table.6.11) (table.6.16)]
+>> endobj
+3148 0 obj <<
+/Names [(table.6.17) 1274 0 R (table.6.18) 641 0 R (table.6.19) 1294 0 R (table.6.2) 1070 0 R (table.6.20) 1301 0 R (table.6.21) 1326 0 R]
+/Limits [(table.6.17) (table.6.21)]
+>> endobj
+3149 0 obj <<
+/Names [(table.6.3) 637 0 R (table.6.4) 638 0 R (table.6.5) 639 0 R (table.6.6) 640 0 R (table.6.7) 1136 0 R (table.6.8) 1138 0 R]
+/Limits [(table.6.3) (table.6.8)]
+>> endobj
+3150 0 obj <<
+/Names [(table.6.9) 1154 0 R (table.7.1) 1350 0 R (table.7.10) 1416 0 R (table.7.11) 644 0 R (table.7.12) 1442 0 R (table.7.13) 1444 0 R]
+/Limits [(table.6.9) (table.7.13)]
+>> endobj
+3151 0 obj <<
+/Names [(table.7.14) 1446 0 R (table.7.15) 1478 0 R (table.7.16) 1480 0 R (table.7.17) 1482 0 R (table.7.18) 645 0 R (table.7.19) 646 0 R]
+/Limits [(table.7.14) (table.7.19)]
+>> endobj
+3152 0 obj <<
+/Names [(table.7.2) 1352 0 R (table.7.20) 1512 0 R (table.7.21) 1514 0 R (table.7.22) 1524 0 R (table.7.23) 647 0 R (table.7.24) 1544 0 R]
+/Limits [(table.7.2) (table.7.24)]
+>> endobj
+3153 0 obj <<
+/Names [(table.7.25) 1546 0 R (table.7.26) 1548 0 R (table.7.27) 1628 0 R (table.7.28) 1630 0 R (table.7.29) 1632 0 R (table.7.3) 642 0 R]
+/Limits [(table.7.25) (table.7.3)]
+>> endobj
+3154 0 obj <<
+/Names [(table.7.30) 1662 0 R (table.7.31) 1670 0 R (table.7.32) 1672 0 R (table.7.33) 648 0 R (table.7.34) 1702 0 R (table.7.35) 1704 0 R]
+/Limits [(table.7.30) (table.7.35)]
+>> endobj
+3155 0 obj <<
+/Names [(table.7.36) 1706 0 R (table.7.37) 1713 0 R (table.7.38) 649 0 R (table.7.39) 1908 0 R (table.7.4) 1378 0 R (table.7.40) 1916 0 R]
+/Limits [(table.7.36) (table.7.40)]
+>> endobj
+3156 0 obj <<
+/Names [(table.7.41) 1918 0 R (table.7.42) 650 0 R (table.7.43) 1954 0 R (table.7.44) 1960 0 R (table.7.45) 1962 0 R (table.7.46) 651 0 R]
+/Limits [(table.7.41) (table.7.46)]
+>> endobj
+3157 0 obj <<
+/Names [(table.7.47) 652 0 R (table.7.48) 2042 0 R (table.7.49) 2044 0 R (table.7.5) 1380 0 R (table.7.50) 2046 0 R (table.7.51) 2073 0 R]
+/Limits [(table.7.47) (table.7.51)]
+>> endobj
+3158 0 obj <<
+/Names [(table.7.52) 2075 0 R (table.7.53) 2081 0 R (table.7.54) 2087 0 R (table.7.55) 2089 0 R (table.7.56) 2105 0 R (table.7.57) 2112 0 R]
+/Limits [(table.7.52) (table.7.57)]
+>> endobj
+3159 0 obj <<
+/Names [(table.7.58) 2114 0 R (table.7.59) 2141 0 R (table.7.6) 1382 0 R (table.7.60) 2150 0 R (table.7.61) 2152 0 R (table.7.62) 2176 0 R]
+/Limits [(table.7.58) (table.7.62)]
+>> endobj
+3160 0 obj <<
+/Names [(table.7.63) 2178 0 R (table.7.64) 2188 0 R (table.7.65) 653 0 R (table.7.66) 2269 0 R (table.7.67) 2277 0 R (table.7.68) 2279 0 R]
+/Limits [(table.7.63) (table.7.68)]
+>> endobj
+3161 0 obj <<
+/Names [(table.7.69) 2300 0 R (table.7.7) 643 0 R (table.7.70) 2302 0 R (table.7.71) 2304 0 R (table.7.72) 2353 0 R (table.7.73) 2370 0 R]
+/Limits [(table.7.69) (table.7.73)]
+>> endobj
+3162 0 obj <<
+/Names [(table.7.74) 2372 0 R (table.7.75) 654 0 R (table.7.76) 2458 0 R (table.7.77) 2460 0 R (table.7.78) 2466 0 R (table.7.79) 2478 0 R]
+/Limits [(table.7.74) (table.7.79)]
+>> endobj
+3163 0 obj <<
+/Names [(table.7.8) 1412 0 R (table.7.80) 2484 0 R (table.7.81) 2486 0 R (table.7.82) 2502 0 R (table.7.83) 2509 0 R (table.7.84) 2511 0 R]
+/Limits [(table.7.8) (table.7.84)]
+>> endobj
+3164 0 obj <<
+/Names [(table.7.85) 655 0 R (table.7.86) 2556 0 R (table.7.87) 2566 0 R (table.7.88) 2573 0 R (table.7.89) 656 0 R (table.7.9) 1414 0 R]
+/Limits [(table.7.85) (table.7.9)]
+>> endobj
+3165 0 obj <<
+/Kids [2938 0 R 2939 0 R 2940 0 R 2941 0 R 2942 0 R 2943 0 R]
+/Limits [(Doc-Start) (Item.13)]
+>> endobj
+3166 0 obj <<
+/Kids [2944 0 R 2945 0 R 2946 0 R 2947 0 R 2948 0 R 2949 0 R]
+/Limits [(Item.130) (Item.162)]
+>> endobj
+3167 0 obj <<
+/Kids [2950 0 R 2951 0 R 2952 0 R 2953 0 R 2954 0 R 2955 0 R]
+/Limits [(Item.163) (Item.195)]
+>> endobj
+3168 0 obj <<
+/Kids [2956 0 R 2957 0 R 2958 0 R 2959 0 R 2960 0 R 2961 0 R]
+/Limits [(Item.196) (Item.227)]
+>> endobj
+3169 0 obj <<
+/Kids [2962 0 R 2963 0 R 2964 0 R 2965 0 R 2966 0 R 2967 0 R]
+/Limits [(Item.228) (Item.26)]
+>> endobj
+3170 0 obj <<
+/Kids [2968 0 R 2969 0 R 2970 0 R 2971 0 R 2972 0 R 2973 0 R]
+/Limits [(Item.260) (Item.292)]
+>> endobj
+3171 0 obj <<
+/Kids [2974 0 R 2975 0 R 2976 0 R 2977 0 R 2978 0 R 2979 0 R]
+/Limits [(Item.293) (Item.324)]
+>> endobj
+3172 0 obj <<
+/Kids [2980 0 R 2981 0 R 2982 0 R 2983 0 R 2984 0 R 2985 0 R]
+/Limits [(Item.325) (Item.357)]
+>> endobj
+3173 0 obj <<
+/Kids [2986 0 R 2987 0 R 2988 0 R 2989 0 R 2990 0 R 2991 0 R]
+/Limits [(Item.358) (Item.39)]
+>> endobj
+3174 0 obj <<
+/Kids [2992 0 R 2993 0 R 2994 0 R 2995 0 R 2996 0 R 2997 0 R]
+/Limits [(Item.390) (Item.421)]
+>> endobj
+3175 0 obj <<
+/Kids [2998 0 R 2999 0 R 3000 0 R 3001 0 R 3002 0 R 3003 0 R]
+/Limits [(Item.422) (Item.454)]
+>> endobj
+3176 0 obj <<
+/Kids [3004 0 R 3005 0 R 3006 0 R 3007 0 R 3008 0 R 3009 0 R]
+/Limits [(Item.455) (Item.487)]
+>> endobj
+3177 0 obj <<
+/Kids [3010 0 R 3011 0 R 3012 0 R 3013 0 R 3014 0 R 3015 0 R]
+/Limits [(Item.488) (Item.519)]
+>> endobj
+3178 0 obj <<
+/Kids [3016 0 R 3017 0 R 3018 0 R 3019 0 R 3020 0 R 3021 0 R]
+/Limits [(Item.52) (Item.551)]
+>> endobj
+3179 0 obj <<
+/Kids [3022 0 R 3023 0 R 3024 0 R 3025 0 R 3026 0 R 3027 0 R]
+/Limits [(Item.552) (Item.584)]
+>> endobj
+3180 0 obj <<
+/Kids [3028 0 R 3029 0 R 3030 0 R 3031 0 R 3032 0 R 3033 0 R]
+/Limits [(Item.585) (Item.616)]
+>> endobj
+3181 0 obj <<
+/Kids [3034 0 R 3035 0 R 3036 0 R 3037 0 R 3038 0 R 3039 0 R]
+/Limits [(Item.617) (Item.649)]
+>> endobj
+3182 0 obj <<
+/Kids [3040 0 R 3041 0 R 3042 0 R 3043 0 R 3044 0 R 3045 0 R]
+/Limits [(Item.65) (Item.681)]
+>> endobj
+3183 0 obj <<
+/Kids [3046 0 R 3047 0 R 3048 0 R 3049 0 R 3050 0 R 3051 0 R]
+/Limits [(Item.682) (Item.713)]
+>> endobj
+3184 0 obj <<
+/Kids [3052 0 R 3053 0 R 3054 0 R 3055 0 R 3056 0 R 3057 0 R]
+/Limits [(Item.714) (Item.746)]
+>> endobj
+3185 0 obj <<
+/Kids [3058 0 R 3059 0 R 3060 0 R 3061 0 R 3062 0 R 3063 0 R]
+/Limits [(Item.747) (appendix.A)]
+>> endobj
+3186 0 obj <<
+/Kids [3064 0 R 3065 0 R 3066 0 R 3067 0 R 3068 0 R 3069 0 R]
+/Limits [(appendix.B) (equation.4.4)]
+>> endobj
+3187 0 obj <<
+/Kids [3070 0 R 3071 0 R 3072 0 R 3073 0 R 3074 0 R 3075 0 R]
+/Limits [(equation.4.5) (page.105)]
+>> endobj
+3188 0 obj <<
+/Kids [3076 0 R 3077 0 R 3078 0 R 3079 0 R 3080 0 R 3081 0 R]
+/Limits [(page.106) (page.138)]
+>> endobj
+3189 0 obj <<
+/Kids [3082 0 R 3083 0 R 3084 0 R 3085 0 R 3086 0 R 3087 0 R]
+/Limits [(page.139) (page.170)]
+>> endobj
+3190 0 obj <<
+/Kids [3088 0 R 3089 0 R 3090 0 R 3091 0 R 3092 0 R 3093 0 R]
+/Limits [(page.171) (page.31)]
+>> endobj
+3191 0 obj <<
+/Kids [3094 0 R 3095 0 R 3096 0 R 3097 0 R 3098 0 R 3099 0 R]
+/Limits [(page.32) (page.64)]
+>> endobj
+3192 0 obj <<
+/Kids [3100 0 R 3101 0 R 3102 0 R 3103 0 R 3104 0 R 3105 0 R]
+/Limits [(page.65) (page.97)]
+>> endobj
+3193 0 obj <<
+/Kids [3106 0 R 3107 0 R 3108 0 R 3109 0 R 3110 0 R 3111 0 R]
+/Limits [(page.98) (section*.117)]
+>> endobj
+3194 0 obj <<
+/Kids [3112 0 R 3113 0 R 3114 0 R 3115 0 R 3116 0 R 3117 0 R]
+/Limits [(section*.118) (section*.26)]
+>> endobj
+3195 0 obj <<
+/Kids [3118 0 R 3119 0 R 3120 0 R 3121 0 R 3122 0 R 3123 0 R]
+/Limits [(section*.27) (section*.61)]
+>> endobj
+3196 0 obj <<
+/Kids [3124 0 R 3125 0 R 3126 0 R 3127 0 R 3128 0 R 3129 0 R]
+/Limits [(section*.62) (section*.94)]
+>> endobj
+3197 0 obj <<
+/Kids [3130 0 R 3131 0 R 3132 0 R 3133 0 R 3134 0 R 3135 0 R]
+/Limits [(section*.95) (section.7.5)]
+>> endobj
+3198 0 obj <<
+/Kids [3136 0 R 3137 0 R 3138 0 R 3139 0 R 3140 0 R 3141 0 R]
+/Limits [(section.7.6) (subsection.6.4.3)]
+>> endobj
+3199 0 obj <<
+/Kids [3142 0 R 3143 0 R 3144 0 R 3145 0 R 3146 0 R 3147 0 R]
+/Limits [(subsection.6.4.4) (table.6.16)]
+>> endobj
+3200 0 obj <<
+/Kids [3148 0 R 3149 0 R 3150 0 R 3151 0 R 3152 0 R 3153 0 R]
+/Limits [(table.6.17) (table.7.3)]
+>> endobj
+3201 0 obj <<
+/Kids [3154 0 R 3155 0 R 3156 0 R 3157 0 R 3158 0 R 3159 0 R]
+/Limits [(table.7.30) (table.7.62)]
+>> endobj
+3202 0 obj <<
+/Kids [3160 0 R 3161 0 R 3162 0 R 3163 0 R 3164 0 R]
+/Limits [(table.7.63) (table.7.9)]
+>> endobj
+3203 0 obj <<
+/Kids [3165 0 R 3166 0 R 3167 0 R 3168 0 R 3169 0 R 3170 0 R]
+/Limits [(Doc-Start) (Item.292)]
+>> endobj
+3204 0 obj <<
+/Kids [3171 0 R 3172 0 R 3173 0 R 3174 0 R 3175 0 R 3176 0 R]
+/Limits [(Item.293) (Item.487)]
+>> endobj
+3205 0 obj <<
+/Kids [3177 0 R 3178 0 R 3179 0 R 3180 0 R 3181 0 R 3182 0 R]
+/Limits [(Item.488) (Item.681)]
+>> endobj
+3206 0 obj <<
+/Kids [3183 0 R 3184 0 R 3185 0 R 3186 0 R 3187 0 R 3188 0 R]
+/Limits [(Item.682) (page.138)]
+>> endobj
+3207 0 obj <<
+/Kids [3189 0 R 3190 0 R 3191 0 R 3192 0 R 3193 0 R 3194 0 R]
+/Limits [(page.139) (section*.26)]
+>> endobj
+3208 0 obj <<
+/Kids [3195 0 R 3196 0 R 3197 0 R 3198 0 R 3199 0 R 3200 0 R]
+/Limits [(section*.27) (table.7.3)]
+>> endobj
+3209 0 obj <<
+/Kids [3201 0 R 3202 0 R]
+/Limits [(table.7.30) (table.7.9)]
+>> endobj
+3210 0 obj <<
+/Kids [3203 0 R 3204 0 R 3205 0 R 3206 0 R 3207 0 R 3208 0 R]
+/Limits [(Doc-Start) (table.7.3)]
+>> endobj
+3211 0 obj <<
+/Kids [3209 0 R]
+/Limits [(table.7.30) (table.7.9)]
+>> endobj
+3212 0 obj <<
+/Kids [3210 0 R 3211 0 R]
+/Limits [(Doc-Start) (table.7.9)]
+>> endobj
+3213 0 obj <<
+/Dests 3212 0 R
+>> endobj
+3214 0 obj <<
+/Type /Catalog
+/Pages 2936 0 R
+/Outlines 2937 0 R
+/Names 3213 0 R
+/PageMode/None/PageLabels << /Nums [0 << /S /r >> 2 << /S /r >> 16 << /S /D >> ] >>
+/OpenAction 409 0 R
+>> endobj
+3215 0 obj <<
+/Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.3)/Keywords()
+/CreationDate (D:20090924115430-07'00')
+/ModDate (D:20090924115430-07'00')
+/Trapped /False
+/PTEX.Fullbanner (This is pdfTeX using libpoppler, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6)
+>> endobj
+xref
+0 3216
+0000000001 65535 f
+0000000002 00000 f
+0000000003 00000 f
+0000000004 00000 f
+0000001196 00000 f
+0000000015 00000 n
+0000055298 00000 n
+0000733811 00000 n
+0000000060 00000 n
+0000000090 00000 n
+0000055346 00000 n
+0000733739 00000 n
+0000000137 00000 n
+0000000170 00000 n
+0000055394 00000 n
+0000733653 00000 n
+0000000218 00000 n
+0000000250 00000 n
+0000058495 00000 n
+0000733567 00000 n
+0000000298 00000 n
+0000000331 00000 n
+0000058544 00000 n
+0000733481 00000 n
+0000000379 00000 n
+0000000409 00000 n
+0000058593 00000 n
+0000733395 00000 n
+0000000457 00000 n
+0000000509 00000 n
+0000060973 00000 n
+0000733322 00000 n
+0000000557 00000 n
+0000000594 00000 n
+0000063607 00000 n
+0000733197 00000 n
+0000000640 00000 n
+0000000680 00000 n
+0000063656 00000 n
+0000733123 00000 n
+0000000728 00000 n
+0000000759 00000 n
+0000070936 00000 n
+0000733036 00000 n
+0000000807 00000 n
+0000000840 00000 n
+0000077512 00000 n
+0000732949 00000 n
+0000000888 00000 n
+0000000930 00000 n
+0000089546 00000 n
+0000732862 00000 n
+0000000978 00000 n
+0000001009 00000 n
+0000103888 00000 n
+0000732775 00000 n
+0000001057 00000 n
+0000001103 00000 n
+0000103987 00000 n
+0000732701 00000 n
+0000001151 00000 n
+0000001186 00000 n
+0000109240 00000 n
+0000732575 00000 n
+0000001232 00000 n
+0000001268 00000 n
+0000109289 00000 n
+0000732464 00000 n
+0000001316 00000 n
+0000001356 00000 n
+0000109338 00000 n
+0000732390 00000 n
+0000001409 00000 n
+0000001448 00000 n
+0000109387 00000 n
+0000732303 00000 n
+0000001501 00000 n
+0000001541 00000 n
+0000113225 00000 n
+0000732229 00000 n
+0000001594 00000 n
+0000001630 00000 n
+0000116230 00000 n
+0000732118 00000 n
+0000001678 00000 n
+0000001722 00000 n
+0000116278 00000 n
+0000732044 00000 n
+0000001775 00000 n
+0000001807 00000 n
+0000116476 00000 n
+0000731970 00000 n
+0000001860 00000 n
+0000001895 00000 n
+0000129276 00000 n
+0000731842 00000 n
+0000001941 00000 n
+0000001973 00000 n
+0000129325 00000 n
+0000731766 00000 n
+0000002021 00000 n
+0000002064 00000 n
+0000132413 00000 n
+0000731675 00000 n
+0000002113 00000 n
+0000002171 00000 n
+0000139820 00000 n
+0000731544 00000 n
+0000002220 00000 n
+0000002262 00000 n
+0000139870 00000 n
+0000731465 00000 n
+0000002316 00000 n
+0000002408 00000 n
+0000143183 00000 n
+0000731386 00000 n
+0000002462 00000 n
+0000002557 00000 n
+0000146821 00000 n
+0000731269 00000 n
+0000002606 00000 n
+0000002639 00000 n
+0000153395 00000 n
+0000731190 00000 n
+0000002693 00000 n
+0000002730 00000 n
+0000153495 00000 n
+0000731097 00000 n
+0000002784 00000 n
+0000002821 00000 n
+0000160346 00000 n
+0000731004 00000 n
+0000002875 00000 n
+0000002912 00000 n
+0000166790 00000 n
+0000730925 00000 n
+0000002966 00000 n
+0000003020 00000 n
+0000192772 00000 n
+0000730793 00000 n
+0000003067 00000 n
+0000003108 00000 n
+0000192823 00000 n
+0000730675 00000 n
+0000003157 00000 n
+0000003185 00000 n
+0000192874 00000 n
+0000730596 00000 n
+0000003239 00000 n
+0000003275 00000 n
+0000192925 00000 n
+0000730503 00000 n
+0000003329 00000 n
+0000003369 00000 n
+0000195719 00000 n
+0000730424 00000 n
+0000003423 00000 n
+0000003452 00000 n
+0000195770 00000 n
+0000730306 00000 n
+0000003501 00000 n
+0000003543 00000 n
+0000195821 00000 n
+0000730227 00000 n
+0000003597 00000 n
+0000003627 00000 n
+0000197731 00000 n
+0000730134 00000 n
+0000003681 00000 n
+0000003717 00000 n
+0000199955 00000 n
+0000730041 00000 n
+0000003771 00000 n
+0000003807 00000 n
+0000202119 00000 n
+0000729948 00000 n
+0000003861 00000 n
+0000003904 00000 n
+0000202170 00000 n
+0000729869 00000 n
+0000003958 00000 n
+0000004003 00000 n
+0000204136 00000 n
+0000729736 00000 n
+0000004050 00000 n
+0000004087 00000 n
+0000204239 00000 n
+0000729657 00000 n
+0000004136 00000 n
+0000004176 00000 n
+0000206907 00000 n
+0000729564 00000 n
+0000004225 00000 n
+0000004273 00000 n
+0000221451 00000 n
+0000729432 00000 n
+0000004322 00000 n
+0000004356 00000 n
+0000224005 00000 n
+0000729353 00000 n
+0000004410 00000 n
+0000004451 00000 n
+0000227485 00000 n
+0000729260 00000 n
+0000004505 00000 n
+0000004546 00000 n
+0000231763 00000 n
+0000729181 00000 n
+0000004600 00000 n
+0000004639 00000 n
+0000234038 00000 n
+0000729063 00000 n
+0000004688 00000 n
+0000004720 00000 n
+0000234089 00000 n
+0000728984 00000 n
+0000004774 00000 n
+0000004824 00000 n
+0000237443 00000 n
+0000728891 00000 n
+0000004878 00000 n
+0000004928 00000 n
+0000247328 00000 n
+0000728798 00000 n
+0000004982 00000 n
+0000005033 00000 n
+0000255510 00000 n
+0000728705 00000 n
+0000005087 00000 n
+0000005131 00000 n
+0000262170 00000 n
+0000728626 00000 n
+0000005185 00000 n
+0000005224 00000 n
+0000266771 00000 n
+0000728492 00000 n
+0000005271 00000 n
+0000005303 00000 n
+0000266822 00000 n
+0000728413 00000 n
+0000005352 00000 n
+0000005391 00000 n
+0000272577 00000 n
+0000728281 00000 n
+0000005440 00000 n
+0000005490 00000 n
+0000272628 00000 n
+0000728202 00000 n
+0000005544 00000 n
+0000005590 00000 n
+0000278414 00000 n
+0000728123 00000 n
+0000005644 00000 n
+0000005691 00000 n
+0000282156 00000 n
+0000728030 00000 n
+0000005740 00000 n
+0000005784 00000 n
+0000288315 00000 n
+0000727937 00000 n
+0000005833 00000 n
+0000005877 00000 n
+0000297219 00000 n
+0000727805 00000 n
+0000005926 00000 n
+0000005960 00000 n
+0000297270 00000 n
+0000727726 00000 n
+0000006014 00000 n
+0000006054 00000 n
+0000301733 00000 n
+0000727647 00000 n
+0000006108 00000 n
+0000006160 00000 n
+0000319414 00000 n
+0000727554 00000 n
+0000006209 00000 n
+0000006250 00000 n
+0000326742 00000 n
+0000727422 00000 n
+0000006299 00000 n
+0000006335 00000 n
+0000326793 00000 n
+0000727343 00000 n
+0000006389 00000 n
+0000006425 00000 n
+0000332950 00000 n
+0000727250 00000 n
+0000006479 00000 n
+0000006523 00000 n
+0000354767 00000 n
+0000727171 00000 n
+0000006577 00000 n
+0000006619 00000 n
+0000364303 00000 n
+0000727039 00000 n
+0000006668 00000 n
+0000006709 00000 n
+0000364354 00000 n
+0000726960 00000 n
+0000006763 00000 n
+0000006809 00000 n
+0000376426 00000 n
+0000726881 00000 n
+0000006863 00000 n
+0000006918 00000 n
+0000382304 00000 n
+0000726749 00000 n
+0000006967 00000 n
+0000007001 00000 n
+0000382355 00000 n
+0000726670 00000 n
+0000007055 00000 n
+0000007085 00000 n
+0000395301 00000 n
+0000726577 00000 n
+0000007139 00000 n
+0000007173 00000 n
+0000401921 00000 n
+0000726484 00000 n
+0000007227 00000 n
+0000007262 00000 n
+0000440342 00000 n
+0000726405 00000 n
+0000007316 00000 n
+0000007373 00000 n
+0000462540 00000 n
+0000726273 00000 n
+0000007423 00000 n
+0000007457 00000 n
+0000465063 00000 n
+0000726194 00000 n
+0000007512 00000 n
+0000007549 00000 n
+0000468115 00000 n
+0000726101 00000 n
+0000007604 00000 n
+0000007639 00000 n
+0000473159 00000 n
+0000726022 00000 n
+0000007694 00000 n
+0000007734 00000 n
+0000482952 00000 n
+0000725943 00000 n
+0000007784 00000 n
+0000007825 00000 n
+0000499908 00000 n
+0000725810 00000 n
+0000007873 00000 n
+0000007920 00000 n
+0000499959 00000 n
+0000725692 00000 n
+0000007969 00000 n
+0000007997 00000 n
+0000500010 00000 n
+0000725627 00000 n
+0000008051 00000 n
+0000008080 00000 n
+0000502871 00000 n
+0000725495 00000 n
+0000008129 00000 n
+0000008181 00000 n
+0000502922 00000 n
+0000725416 00000 n
+0000008235 00000 n
+0000008262 00000 n
+0000502973 00000 n
+0000725323 00000 n
+0000008316 00000 n
+0000008346 00000 n
+0000503024 00000 n
+0000725244 00000 n
+0000008400 00000 n
+0000008436 00000 n
+0000505881 00000 n
+0000725126 00000 n
+0000008485 00000 n
+0000008531 00000 n
+0000505932 00000 n
+0000725047 00000 n
+0000008585 00000 n
+0000008620 00000 n
+0000505983 00000 n
+0000724968 00000 n
+0000008674 00000 n
+0000008709 00000 n
+0000510326 00000 n
+0000724835 00000 n
+0000008757 00000 n
+0000008780 00000 n
+0000510377 00000 n
+0000724756 00000 n
+0000008829 00000 n
+0000008866 00000 n
+0000512339 00000 n
+0000724663 00000 n
+0000008915 00000 n
+0000008959 00000 n
+0000512390 00000 n
+0000724570 00000 n
+0000009008 00000 n
+0000009051 00000 n
+0000514252 00000 n
+0000724491 00000 n
+0000009100 00000 n
+0000009134 00000 n
+0000561939 00000 n
+0000724411 00000 n
+0000009182 00000 n
+0000009210 00000 n
+0000009527 00000 n
+0000009739 00000 n
+0000009263 00000 n
+0000009639 00000 n
+0000009689 00000 n
+0000717892 00000 n
+0000717747 00000 n
+0000719201 00000 n
+0000010086 00000 n
+0000009924 00000 n
+0000009824 00000 n
+0000010036 00000 n
+0000011787 00000 n
+0000011939 00000 n
+0000012093 00000 n
+0000012247 00000 n
+0000012401 00000 n
+0000012555 00000 n
+0000012709 00000 n
+0000012863 00000 n
+0000013015 00000 n
+0000013169 00000 n
+0000013323 00000 n
+0000013477 00000 n
+0000013631 00000 n
+0000013784 00000 n
+0000013938 00000 n
+0000014089 00000 n
+0000014242 00000 n
+0000014400 00000 n
+0000014557 00000 n
+0000014716 00000 n
+0000014870 00000 n
+0000015028 00000 n
+0000015187 00000 n
+0000015338 00000 n
+0000015492 00000 n
+0000015645 00000 n
+0000015798 00000 n
+0000016116 00000 n
+0000016432 00000 n
+0000018690 00000 n
+0000016635 00000 n
+0000011415 00000 n
+0000010127 00000 n
+0000716435 00000 n
+0000016585 00000 n
+0000716289 00000 n
+0000717603 00000 n
+0000015957 00000 n
+0000016274 00000 n
+0000018849 00000 n
+0000019007 00000 n
+0000019166 00000 n
+0000019325 00000 n
+0000019477 00000 n
+0000019628 00000 n
+0000019786 00000 n
+0000019945 00000 n
+0000020104 00000 n
+0000020258 00000 n
+0000020417 00000 n
+0000020576 00000 n
+0000020735 00000 n
+0000020894 00000 n
+0000021053 00000 n
+0000021205 00000 n
+0000021359 00000 n
+0000021513 00000 n
+0000021666 00000 n
+0000021825 00000 n
+0000021984 00000 n
+0000022142 00000 n
+0000022295 00000 n
+0000022453 00000 n
+0000022611 00000 n
+0000022768 00000 n
+0000022927 00000 n
+0000023086 00000 n
+0000023236 00000 n
+0000023389 00000 n
+0000023542 00000 n
+0000023700 00000 n
+0000023859 00000 n
+0000024013 00000 n
+0000024167 00000 n
+0000024321 00000 n
+0000024480 00000 n
+0000024639 00000 n
+0000024793 00000 n
+0000024946 00000 n
+0000025105 00000 n
+0000025263 00000 n
+0000027059 00000 n
+0000025422 00000 n
+0000018222 00000 n
+0000016732 00000 n
+0000718181 00000 n
+0000718614 00000 n
+0000027213 00000 n
+0000027372 00000 n
+0000027531 00000 n
+0000027685 00000 n
+0000027844 00000 n
+0000028003 00000 n
+0000028162 00000 n
+0000028321 00000 n
+0000028475 00000 n
+0000028635 00000 n
+0000028795 00000 n
+0000028951 00000 n
+0000029105 00000 n
+0000029258 00000 n
+0000029412 00000 n
+0000029571 00000 n
+0000029725 00000 n
+0000029883 00000 n
+0000030042 00000 n
+0000030200 00000 n
+0000030354 00000 n
+0000030513 00000 n
+0000030672 00000 n
+0000030825 00000 n
+0000030978 00000 n
+0000031132 00000 n
+0000031286 00000 n
+0000031440 00000 n
+0000031643 00000 n
+0000026703 00000 n
+0000025532 00000 n
+0000031593 00000 n
+0000032079 00000 n
+0000031917 00000 n
+0000031740 00000 n
+0000032029 00000 n
+0000033677 00000 n
+0000033829 00000 n
+0000033982 00000 n
+0000034135 00000 n
+0000034288 00000 n
+0000034441 00000 n
+0000034593 00000 n
+0000034745 00000 n
+0000034898 00000 n
+0000035051 00000 n
+0000035204 00000 n
+0000035357 00000 n
+0000035662 00000 n
+0000035814 00000 n
+0000035967 00000 n
+0000036119 00000 n
+0000036272 00000 n
+0000036425 00000 n
+0000036578 00000 n
+0000036731 00000 n
+0000036884 00000 n
+0000037036 00000 n
+0000037188 00000 n
+0000037441 00000 n
+0000033361 00000 n
+0000032163 00000 n
+0000037341 00000 n
+0000037391 00000 n
+0000717167 00000 n
+0000718326 00000 n
+0000035509 00000 n
+0000719319 00000 n
+0000070985 00000 n
+0000077561 00000 n
+0000083426 00000 n
+0000089496 00000 n
+0000097082 00000 n
+0000097131 00000 n
+0000103937 00000 n
+0000106699 00000 n
+0000153445 00000 n
+0000160298 00000 n
+0000166740 00000 n
+0000174790 00000 n
+0000190155 00000 n
+0000190205 00000 n
+0000190255 00000 n
+0000204342 00000 n
+0000210486 00000 n
+0000223954 00000 n
+0000227434 00000 n
+0000236976 00000 n
+0000414928 00000 n
+0000437072 00000 n
+0000462591 00000 n
+0000037904 00000 n
+0000037742 00000 n
+0000037551 00000 n
+0000037854 00000 n
+0000039522 00000 n
+0000039673 00000 n
+0000039825 00000 n
+0000039977 00000 n
+0000040129 00000 n
+0000040281 00000 n
+0000040433 00000 n
+0000040585 00000 n
+0000040737 00000 n
+0000040889 00000 n
+0000041041 00000 n
+0000041193 00000 n
+0000041346 00000 n
+0000041499 00000 n
+0000041652 00000 n
+0000041805 00000 n
+0000041958 00000 n
+0000042110 00000 n
+0000042263 00000 n
+0000042416 00000 n
+0000042569 00000 n
+0000042721 00000 n
+0000042873 00000 n
+0000043026 00000 n
+0000043278 00000 n
+0000039206 00000 n
+0000037988 00000 n
+0000043178 00000 n
+0000043228 00000 n
+0000063705 00000 n
+0000113175 00000 n
+0000143134 00000 n
+0000146771 00000 n
+0000218077 00000 n
+0000221193 00000 n
+0000221244 00000 n
+0000221502 00000 n
+0000255303 00000 n
+0000269732 00000 n
+0000275719 00000 n
+0000281691 00000 n
+0000293564 00000 n
+0000293615 00000 n
+0000323291 00000 n
+0000329869 00000 n
+0000337822 00000 n
+0000360859 00000 n
+0000369673 00000 n
+0000375855 00000 n
+0000416754 00000 n
+0000452900 00000 n
+0000478532 00000 n
+0000496912 00000 n
+0000043732 00000 n
+0000043570 00000 n
+0000043375 00000 n
+0000043682 00000 n
+0000045928 00000 n
+0000045716 00000 n
+0000043816 00000 n
+0000045828 00000 n
+0000045878 00000 n
+0000719055 00000 n
+0000717022 00000 n
+0000717458 00000 n
+0000048539 00000 n
+0000048377 00000 n
+0000046089 00000 n
+0000048489 00000 n
+0000716875 00000 n
+0000718037 00000 n
+0000570518 00000 n
+0000049340 00000 n
+0000049178 00000 n
+0000048725 00000 n
+0000049290 00000 n
+0000719437 00000 n
+0000049817 00000 n
+0000049655 00000 n
+0000049450 00000 n
+0000049767 00000 n
+0000051506 00000 n
+0000051761 00000 n
+0000051374 00000 n
+0000049901 00000 n
+0000051661 00000 n
+0000051711 00000 n
+0000566355 00000 n
+0000052200 00000 n
+0000052038 00000 n
+0000051845 00000 n
+0000052150 00000 n
+0000054469 00000 n
+0000054636 00000 n
+0000054789 00000 n
+0000054942 00000 n
+0000055095 00000 n
+0000055443 00000 n
+0000054305 00000 n
+0000052284 00000 n
+0000055248 00000 n
+0000718471 00000 n
+0000566611 00000 n
+0000058139 00000 n
+0000058291 00000 n
+0000058642 00000 n
+0000057999 00000 n
+0000055579 00000 n
+0000058445 00000 n
+0000566816 00000 n
+0000061022 00000 n
+0000060811 00000 n
+0000058765 00000 n
+0000060923 00000 n
+0000719555 00000 n
+0000061508 00000 n
+0000061346 00000 n
+0000061145 00000 n
+0000061458 00000 n
+0000063405 00000 n
+0000070733 00000 n
+0000063755 00000 n
+0000063273 00000 n
+0000061592 00000 n
+0000063557 00000 n
+0000065250 00000 n
+0000077158 00000 n
+0000071034 00000 n
+0000065118 00000 n
+0000063904 00000 n
+0000070886 00000 n
+0000066656 00000 n
+0000066891 00000 n
+0000066938 00000 n
+0000067333 00000 n
+0000067355 00000 n
+0000067677 00000 n
+0000072799 00000 n
+0000077310 00000 n
+0000079634 00000 n
+0000083225 00000 n
+0000077611 00000 n
+0000072659 00000 n
+0000071172 00000 n
+0000077462 00000 n
+0000073566 00000 n
+0000073802 00000 n
+0000073849 00000 n
+0000074244 00000 n
+0000074265 00000 n
+0000074593 00000 n
+0000085442 00000 n
+0000083476 00000 n
+0000079502 00000 n
+0000077762 00000 n
+0000083376 00000 n
+0000080877 00000 n
+0000081115 00000 n
+0000081162 00000 n
+0000081488 00000 n
+0000081509 00000 n
+0000081817 00000 n
+0000081912 00000 n
+0000089140 00000 n
+0000090283 00000 n
+0000089293 00000 n
+0000094775 00000 n
+0000089595 00000 n
+0000085302 00000 n
+0000083640 00000 n
+0000089446 00000 n
+0000719673 00000 n
+0000086975 00000 n
+0000087214 00000 n
+0000087261 00000 n
+0000087473 00000 n
+0000087495 00000 n
+0000087804 00000 n
+0000097180 00000 n
+0000090171 00000 n
+0000089746 00000 n
+0000097032 00000 n
+0000090979 00000 n
+0000091215 00000 n
+0000091262 00000 n
+0000091661 00000 n
+0000091682 00000 n
+0000092010 00000 n
+0000095499 00000 n
+0000095735 00000 n
+0000095782 00000 n
+0000095970 00000 n
+0000095991 00000 n
+0000096269 00000 n
+0000103685 00000 n
+0000099546 00000 n
+0000106497 00000 n
+0000104036 00000 n
+0000099414 00000 n
+0000097305 00000 n
+0000103838 00000 n
+0000100478 00000 n
+0000100720 00000 n
+0000100758 00000 n
+0000100805 00000 n
+0000101102 00000 n
+0000101449 00000 n
+0000101470 00000 n
+0000101749 00000 n
+0000106749 00000 n
+0000106365 00000 n
+0000104187 00000 n
+0000106649 00000 n
+0000108886 00000 n
+0000109038 00000 n
+0000109436 00000 n
+0000108746 00000 n
+0000106885 00000 n
+0000109190 00000 n
+0000112653 00000 n
+0000112807 00000 n
+0000112966 00000 n
+0000115560 00000 n
+0000113274 00000 n
+0000112505 00000 n
+0000109572 00000 n
+0000113125 00000 n
+0000115719 00000 n
+0000115872 00000 n
+0000116026 00000 n
+0000116525 00000 n
+0000115404 00000 n
+0000113436 00000 n
+0000116180 00000 n
+0000116327 00000 n
+0000116377 00000 n
+0000116426 00000 n
+0000719791 00000 n
+0000118890 00000 n
+0000118678 00000 n
+0000116648 00000 n
+0000118790 00000 n
+0000118840 00000 n
+0000122349 00000 n
+0000121887 00000 n
+0000119026 00000 n
+0000121999 00000 n
+0000122049 00000 n
+0000122099 00000 n
+0000122149 00000 n
+0000122199 00000 n
+0000122249 00000 n
+0000122299 00000 n
+0000125662 00000 n
+0000125400 00000 n
+0000122459 00000 n
+0000125512 00000 n
+0000125562 00000 n
+0000125612 00000 n
+0000126392 00000 n
+0000126180 00000 n
+0000125785 00000 n
+0000126292 00000 n
+0000126342 00000 n
+0000126864 00000 n
+0000126702 00000 n
+0000126489 00000 n
+0000126814 00000 n
+0000129374 00000 n
+0000129114 00000 n
+0000126948 00000 n
+0000129226 00000 n
+0000719909 00000 n
+0000132762 00000 n
+0000132251 00000 n
+0000129510 00000 n
+0000132363 00000 n
+0000132463 00000 n
+0000717313 00000 n
+0000132513 00000 n
+0000132563 00000 n
+0000132613 00000 n
+0000132663 00000 n
+0000132712 00000 n
+0000135737 00000 n
+0000135225 00000 n
+0000132948 00000 n
+0000135337 00000 n
+0000135387 00000 n
+0000135437 00000 n
+0000135487 00000 n
+0000135537 00000 n
+0000135587 00000 n
+0000135637 00000 n
+0000135687 00000 n
+0000139153 00000 n
+0000139307 00000 n
+0000139466 00000 n
+0000142316 00000 n
+0000142468 00000 n
+0000139920 00000 n
+0000139005 00000 n
+0000135911 00000 n
+0000139620 00000 n
+0000139670 00000 n
+0000139720 00000 n
+0000139770 00000 n
+0000566509 00000 n
+0000566458 00000 n
+0000142625 00000 n
+0000142779 00000 n
+0000142930 00000 n
+0000145799 00000 n
+0000143233 00000 n
+0000142152 00000 n
+0000140092 00000 n
+0000143084 00000 n
+0000566560 00000 n
+0000566765 00000 n
+0000145958 00000 n
+0000146108 00000 n
+0000146262 00000 n
+0000146416 00000 n
+0000146569 00000 n
+0000146871 00000 n
+0000145627 00000 n
+0000143381 00000 n
+0000146721 00000 n
+0000566714 00000 n
+0000153192 00000 n
+0000148545 00000 n
+0000159943 00000 n
+0000153545 00000 n
+0000148413 00000 n
+0000147019 00000 n
+0000153345 00000 n
+0000720027 00000 n
+0000149224 00000 n
+0000149458 00000 n
+0000149505 00000 n
+0000149899 00000 n
+0000149920 00000 n
+0000150257 00000 n
+0000150357 00000 n
+0000155255 00000 n
+0000160096 00000 n
+0000160396 00000 n
+0000155115 00000 n
+0000153709 00000 n
+0000160248 00000 n
+0000155975 00000 n
+0000156209 00000 n
+0000156256 00000 n
+0000156650 00000 n
+0000156671 00000 n
+0000157008 00000 n
+0000157108 00000 n
+0000162029 00000 n
+0000166840 00000 n
+0000161917 00000 n
+0000160560 00000 n
+0000166690 00000 n
+0000162722 00000 n
+0000162956 00000 n
+0000163003 00000 n
+0000163397 00000 n
+0000163418 00000 n
+0000163755 00000 n
+0000163855 00000 n
+0000173522 00000 n
+0000173674 00000 n
+0000173827 00000 n
+0000173979 00000 n
+0000174131 00000 n
+0000174283 00000 n
+0000174435 00000 n
+0000174587 00000 n
+0000169148 00000 n
+0000175511 00000 n
+0000180382 00000 n
+0000185225 00000 n
+0000174840 00000 n
+0000168960 00000 n
+0000166966 00000 n
+0000174740 00000 n
+0000170063 00000 n
+0000170297 00000 n
+0000170344 00000 n
+0000170741 00000 n
+0000170762 00000 n
+0000171098 00000 n
+0000190305 00000 n
+0000175399 00000 n
+0000174966 00000 n
+0000190105 00000 n
+0000176568 00000 n
+0000176806 00000 n
+0000176845 00000 n
+0000176893 00000 n
+0000177198 00000 n
+0000177597 00000 n
+0000177619 00000 n
+0000177957 00000 n
+0000181415 00000 n
+0000181649 00000 n
+0000181688 00000 n
+0000181736 00000 n
+0000182041 00000 n
+0000182440 00000 n
+0000182462 00000 n
+0000182800 00000 n
+0000186290 00000 n
+0000186529 00000 n
+0000186568 00000 n
+0000186616 00000 n
+0000186921 00000 n
+0000187320 00000 n
+0000187342 00000 n
+0000187680 00000 n
+0000190822 00000 n
+0000190655 00000 n
+0000190446 00000 n
+0000190770 00000 n
+0000192976 00000 n
+0000192604 00000 n
+0000190907 00000 n
+0000192720 00000 n
+0000720146 00000 n
+0000195872 00000 n
+0000195551 00000 n
+0000193061 00000 n
+0000195667 00000 n
+0000197782 00000 n
+0000197563 00000 n
+0000196022 00000 n
+0000197679 00000 n
+0000200006 00000 n
+0000199787 00000 n
+0000197932 00000 n
+0000199903 00000 n
+0000202221 00000 n
+0000201951 00000 n
+0000200169 00000 n
+0000202067 00000 n
+0000202702 00000 n
+0000202534 00000 n
+0000202319 00000 n
+0000202650 00000 n
+0000204393 00000 n
+0000203968 00000 n
+0000202787 00000 n
+0000204084 00000 n
+0000204187 00000 n
+0000204290 00000 n
+0000720271 00000 n
+0000207114 00000 n
+0000206479 00000 n
+0000204504 00000 n
+0000206595 00000 n
+0000206647 00000 n
+0000206699 00000 n
+0000206751 00000 n
+0000206803 00000 n
+0000206855 00000 n
+0000206958 00000 n
+0000207010 00000 n
+0000207062 00000 n
+0000209186 00000 n
+0000209600 00000 n
+0000209049 00000 n
+0000207238 00000 n
+0000209340 00000 n
+0000209392 00000 n
+0000209444 00000 n
+0000209496 00000 n
+0000209548 00000 n
+0000210537 00000 n
+0000210318 00000 n
+0000209711 00000 n
+0000210434 00000 n
+0000213525 00000 n
+0000213679 00000 n
+0000217195 00000 n
+0000217348 00000 n
+0000217507 00000 n
+0000214456 00000 n
+0000213379 00000 n
+0000210635 00000 n
+0000213832 00000 n
+0000213884 00000 n
+0000213936 00000 n
+0000213988 00000 n
+0000214040 00000 n
+0000214092 00000 n
+0000214144 00000 n
+0000214196 00000 n
+0000214248 00000 n
+0000214300 00000 n
+0000716581 00000 n
+0000214352 00000 n
+0000214404 00000 n
+0000217667 00000 n
+0000220511 00000 n
+0000220671 00000 n
+0000220831 00000 n
+0000217820 00000 n
+0000220990 00000 n
+0000218440 00000 n
+0000217022 00000 n
+0000214581 00000 n
+0000217973 00000 n
+0000218025 00000 n
+0000218128 00000 n
+0000218180 00000 n
+0000218232 00000 n
+0000218284 00000 n
+0000218336 00000 n
+0000218388 00000 n
+0000221553 00000 n
+0000220347 00000 n
+0000218563 00000 n
+0000221141 00000 n
+0000221295 00000 n
+0000221347 00000 n
+0000221399 00000 n
+0000720396 00000 n
+0000224573 00000 n
+0000223786 00000 n
+0000221690 00000 n
+0000223902 00000 n
+0000224056 00000 n
+0000224108 00000 n
+0000224160 00000 n
+0000224212 00000 n
+0000224264 00000 n
+0000224315 00000 n
+0000224367 00000 n
+0000224419 00000 n
+0000224471 00000 n
+0000224523 00000 n
+0000226912 00000 n
+0000227066 00000 n
+0000227225 00000 n
+0000231240 00000 n
+0000228157 00000 n
+0000226757 00000 n
+0000224722 00000 n
+0000227382 00000 n
+0000227536 00000 n
+0000227588 00000 n
+0000227640 00000 n
+0000227692 00000 n
+0000227744 00000 n
+0000227796 00000 n
+0000227848 00000 n
+0000227899 00000 n
+0000227951 00000 n
+0000228003 00000 n
+0000228055 00000 n
+0000228106 00000 n
+0000231400 00000 n
+0000231864 00000 n
+0000231094 00000 n
+0000228307 00000 n
+0000231555 00000 n
+0000231607 00000 n
+0000231659 00000 n
+0000231711 00000 n
+0000231813 00000 n
+0000567987 00000 n
+0000234192 00000 n
+0000233870 00000 n
+0000232001 00000 n
+0000233986 00000 n
+0000234140 00000 n
+0000236609 00000 n
+0000236769 00000 n
+0000237647 00000 n
+0000236463 00000 n
+0000234303 00000 n
+0000236924 00000 n
+0000237027 00000 n
+0000237079 00000 n
+0000237131 00000 n
+0000237183 00000 n
+0000237235 00000 n
+0000237287 00000 n
+0000237339 00000 n
+0000237391 00000 n
+0000237494 00000 n
+0000237545 00000 n
+0000237596 00000 n
+0000001197 00000 f
+0000001198 00000 f
+0000001199 00000 f
+0000001226 00000 f
+0000239687 00000 n
+0000239840 00000 n
+0000240148 00000 n
+0000239541 00000 n
+0000237771 00000 n
+0000239993 00000 n
+0000240045 00000 n
+0000240097 00000 n
+0000720521 00000 n
+0000243458 00000 n
+0000242718 00000 n
+0000240272 00000 n
+0000242834 00000 n
+0000242886 00000 n
+0000242938 00000 n
+0000242990 00000 n
+0000243042 00000 n
+0000243094 00000 n
+0000243146 00000 n
+0000243198 00000 n
+0000243250 00000 n
+0000243302 00000 n
+0000243354 00000 n
+0000243406 00000 n
+0000245775 00000 n
+0000245926 00000 n
+0000001227 00000 f
+0000001228 00000 f
+0000001229 00000 f
+0000001470 00000 f
+0000249365 00000 n
+0000249517 00000 n
+0000247431 00000 n
+0000245629 00000 n
+0000243595 00000 n
+0000246081 00000 n
+0000246133 00000 n
+0000246185 00000 n
+0000246237 00000 n
+0000246289 00000 n
+0000246341 00000 n
+0000246393 00000 n
+0000246445 00000 n
+0000246497 00000 n
+0000246549 00000 n
+0000246601 00000 n
+0000246653 00000 n
+0000246705 00000 n
+0000246757 00000 n
+0000246809 00000 n
+0000246861 00000 n
+0000246913 00000 n
+0000246965 00000 n
+0000247017 00000 n
+0000247069 00000 n
+0000247120 00000 n
+0000247172 00000 n
+0000247224 00000 n
+0000247276 00000 n
+0000247379 00000 n
+0000249929 00000 n
+0000249219 00000 n
+0000247581 00000 n
+0000249669 00000 n
+0000249721 00000 n
+0000716726 00000 n
+0000249773 00000 n
+0000249825 00000 n
+0000249877 00000 n
+0000252259 00000 n
+0000252679 00000 n
+0000252122 00000 n
+0000250067 00000 n
+0000252419 00000 n
+0000252471 00000 n
+0000252523 00000 n
+0000718908 00000 n
+0000252575 00000 n
+0000252627 00000 n
+0000254837 00000 n
+0000255769 00000 n
+0000254700 00000 n
+0000252881 00000 n
+0000254991 00000 n
+0000255043 00000 n
+0000255095 00000 n
+0000255147 00000 n
+0000255199 00000 n
+0000255251 00000 n
+0000255354 00000 n
+0000255406 00000 n
+0000255458 00000 n
+0000255561 00000 n
+0000255613 00000 n
+0000255665 00000 n
+0000255717 00000 n
+0000258584 00000 n
+0000259409 00000 n
+0000258447 00000 n
+0000255933 00000 n
+0000258735 00000 n
+0000258787 00000 n
+0000258839 00000 n
+0000258891 00000 n
+0000258943 00000 n
+0000258995 00000 n
+0000259047 00000 n
+0000259097 00000 n
+0000259149 00000 n
+0000259201 00000 n
+0000259253 00000 n
+0000259305 00000 n
+0000259357 00000 n
+0000720646 00000 n
+0000261604 00000 n
+0000261755 00000 n
+0000262377 00000 n
+0000261458 00000 n
+0000259533 00000 n
+0000261910 00000 n
+0000261962 00000 n
+0000262014 00000 n
+0000262066 00000 n
+0000262118 00000 n
+0000262221 00000 n
+0000262273 00000 n
+0000262325 00000 n
+0000263831 00000 n
+0000263985 00000 n
+0000264144 00000 n
+0000264303 00000 n
+0000264772 00000 n
+0000263667 00000 n
+0000262514 00000 n
+0000264461 00000 n
+0000264513 00000 n
+0000264565 00000 n
+0000264617 00000 n
+0000264668 00000 n
+0000264720 00000 n
+0000265255 00000 n
+0000265087 00000 n
+0000264883 00000 n
+0000265203 00000 n
+0000267132 00000 n
+0000266603 00000 n
+0000265340 00000 n
+0000266719 00000 n
+0000266872 00000 n
+0000266924 00000 n
+0000266976 00000 n
+0000267028 00000 n
+0000267080 00000 n
+0000269423 00000 n
+0000270406 00000 n
+0000269286 00000 n
+0000267243 00000 n
+0000269576 00000 n
+0000269628 00000 n
+0000269680 00000 n
+0000269783 00000 n
+0000269835 00000 n
+0000269887 00000 n
+0000269938 00000 n
+0000269990 00000 n
+0000270042 00000 n
+0000270094 00000 n
+0000270146 00000 n
+0000270198 00000 n
+0000270250 00000 n
+0000270302 00000 n
+0000270354 00000 n
+0000272365 00000 n
+0000272991 00000 n
+0000272228 00000 n
+0000270517 00000 n
+0000272525 00000 n
+0000272679 00000 n
+0000272731 00000 n
+0000272783 00000 n
+0000272835 00000 n
+0000272887 00000 n
+0000272939 00000 n
+0000720771 00000 n
+0000275101 00000 n
+0000275254 00000 n
+0000276082 00000 n
+0000274955 00000 n
+0000273115 00000 n
+0000275407 00000 n
+0000275459 00000 n
+0000275511 00000 n
+0000275563 00000 n
+0000275615 00000 n
+0000275667 00000 n
+0000275770 00000 n
+0000275822 00000 n
+0000275874 00000 n
+0000275926 00000 n
+0000275978 00000 n
+0000276030 00000 n
+0000278004 00000 n
+0000280760 00000 n
+0000278774 00000 n
+0000277867 00000 n
+0000276206 00000 n
+0000278154 00000 n
+0000278206 00000 n
+0000278258 00000 n
+0000278310 00000 n
+0000278362 00000 n
+0000278465 00000 n
+0000278516 00000 n
+0000278568 00000 n
+0000278620 00000 n
+0000278671 00000 n
+0000278723 00000 n
+0000280920 00000 n
+0000281074 00000 n
+0000281227 00000 n
+0000282259 00000 n
+0000280596 00000 n
+0000278898 00000 n
+0000281379 00000 n
+0000281431 00000 n
+0000281483 00000 n
+0000281535 00000 n
+0000281587 00000 n
+0000281639 00000 n
+0000281742 00000 n
+0000281794 00000 n
+0000281846 00000 n
+0000281898 00000 n
+0000281950 00000 n
+0000282001 00000 n
+0000282052 00000 n
+0000282104 00000 n
+0000282207 00000 n
+0000284455 00000 n
+0000284027 00000 n
+0000282409 00000 n
+0000284143 00000 n
+0000284195 00000 n
+0000284247 00000 n
+0000284299 00000 n
+0000284351 00000 n
+0000284403 00000 n
+0000287007 00000 n
+0000287167 00000 n
+0000287326 00000 n
+0000288418 00000 n
+0000286852 00000 n
+0000284566 00000 n
+0000287485 00000 n
+0000287537 00000 n
+0000287589 00000 n
+0000287641 00000 n
+0000287693 00000 n
+0000287745 00000 n
+0000287796 00000 n
+0000287848 00000 n
+0000287900 00000 n
+0000287952 00000 n
+0000288004 00000 n
+0000288055 00000 n
+0000288107 00000 n
+0000288159 00000 n
+0000288211 00000 n
+0000288263 00000 n
+0000288366 00000 n
+0000001471 00000 f
+0000002119 00000 f
+0000290389 00000 n
+0000290542 00000 n
+0000291008 00000 n
+0000290243 00000 n
+0000288555 00000 n
+0000290696 00000 n
+0000290748 00000 n
+0000290800 00000 n
+0000290852 00000 n
+0000290904 00000 n
+0000290956 00000 n
+0000720896 00000 n
+0000293206 00000 n
+0000293359 00000 n
+0000293872 00000 n
+0000293060 00000 n
+0000291119 00000 n
+0000293512 00000 n
+0000293666 00000 n
+0000293717 00000 n
+0000293768 00000 n
+0000293820 00000 n
+0000296187 00000 n
+0000296339 00000 n
+0000296493 00000 n
+0000297529 00000 n
+0000296032 00000 n
+0000294009 00000 n
+0000296647 00000 n
+0000296699 00000 n
+0000296751 00000 n
+0000296803 00000 n
+0000296855 00000 n
+0000296907 00000 n
+0000296959 00000 n
+0000297011 00000 n
+0000297063 00000 n
+0000297115 00000 n
+0000297167 00000 n
+0000297321 00000 n
+0000297373 00000 n
+0000297425 00000 n
+0000297477 00000 n
+0000299842 00000 n
+0000299996 00000 n
+0000300156 00000 n
+0000300310 00000 n
+0000301139 00000 n
+0000299678 00000 n
+0000297653 00000 n
+0000300463 00000 n
+0000300515 00000 n
+0000300567 00000 n
+0000300619 00000 n
+0000300671 00000 n
+0000300723 00000 n
+0000300775 00000 n
+0000300827 00000 n
+0000300879 00000 n
+0000300931 00000 n
+0000300983 00000 n
+0000301035 00000 n
+0000301087 00000 n
+0000301835 00000 n
+0000301565 00000 n
+0000301263 00000 n
+0000301681 00000 n
+0000301784 00000 n
+0000303809 00000 n
+0000303381 00000 n
+0000301946 00000 n
+0000303497 00000 n
+0000303549 00000 n
+0000303601 00000 n
+0000303653 00000 n
+0000303705 00000 n
+0000303757 00000 n
+0000305903 00000 n
+0000305735 00000 n
+0000303920 00000 n
+0000305851 00000 n
+0000721021 00000 n
+0000308420 00000 n
+0000308578 00000 n
+0000308737 00000 n
+0000308896 00000 n
+0000310143 00000 n
+0000308256 00000 n
+0000306001 00000 n
+0000309055 00000 n
+0000309107 00000 n
+0000309159 00000 n
+0000309211 00000 n
+0000309263 00000 n
+0000309314 00000 n
+0000309366 00000 n
+0000309418 00000 n
+0000309470 00000 n
+0000309522 00000 n
+0000309574 00000 n
+0000309626 00000 n
+0000309678 00000 n
+0000309730 00000 n
+0000309781 00000 n
+0000309832 00000 n
+0000309884 00000 n
+0000309936 00000 n
+0000309988 00000 n
+0000310040 00000 n
+0000310092 00000 n
+0000312906 00000 n
+0000312064 00000 n
+0000310280 00000 n
+0000312180 00000 n
+0000312232 00000 n
+0000312284 00000 n
+0000312336 00000 n
+0000312388 00000 n
+0000312440 00000 n
+0000312492 00000 n
+0000312544 00000 n
+0000312596 00000 n
+0000312648 00000 n
+0000312699 00000 n
+0000312751 00000 n
+0000312802 00000 n
+0000312854 00000 n
+0000315934 00000 n
+0000316094 00000 n
+0000317186 00000 n
+0000315788 00000 n
+0000313055 00000 n
+0000316254 00000 n
+0000316306 00000 n
+0000316358 00000 n
+0000316410 00000 n
+0000316462 00000 n
+0000316514 00000 n
+0000316565 00000 n
+0000316616 00000 n
+0000316668 00000 n
+0000316719 00000 n
+0000316770 00000 n
+0000316822 00000 n
+0000316874 00000 n
+0000316926 00000 n
+0000316978 00000 n
+0000317030 00000 n
+0000317082 00000 n
+0000317134 00000 n
+0000319777 00000 n
+0000319246 00000 n
+0000317310 00000 n
+0000319362 00000 n
+0000718760 00000 n
+0000319465 00000 n
+0000319517 00000 n
+0000319569 00000 n
+0000319621 00000 n
+0000319673 00000 n
+0000319725 00000 n
+0000321539 00000 n
+0000322113 00000 n
+0000321402 00000 n
+0000319915 00000 n
+0000321698 00000 n
+0000321750 00000 n
+0000321801 00000 n
+0000321853 00000 n
+0000321905 00000 n
+0000321957 00000 n
+0000322009 00000 n
+0000322061 00000 n
+0000323342 00000 n
+0000323123 00000 n
+0000322237 00000 n
+0000323239 00000 n
+0000721146 00000 n
+0000323836 00000 n
+0000323668 00000 n
+0000323466 00000 n
+0000323784 00000 n
+0000326210 00000 n
+0000326370 00000 n
+0000326530 00000 n
+0000327000 00000 n
+0000326055 00000 n
+0000323921 00000 n
+0000326690 00000 n
+0000326844 00000 n
+0000326896 00000 n
+0000326948 00000 n
+0000329348 00000 n
+0000329502 00000 n
+0000329920 00000 n
+0000329202 00000 n
+0000327164 00000 n
+0000329661 00000 n
+0000329713 00000 n
+0000329765 00000 n
+0000329817 00000 n
+0000333053 00000 n
+0000331744 00000 n
+0000330057 00000 n
+0000331860 00000 n
+0000331912 00000 n
+0000331964 00000 n
+0000332016 00000 n
+0000332068 00000 n
+0000332120 00000 n
+0000332171 00000 n
+0000332223 00000 n
+0000332275 00000 n
+0000332327 00000 n
+0000332379 00000 n
+0000332431 00000 n
+0000332483 00000 n
+0000332535 00000 n
+0000332586 00000 n
+0000332638 00000 n
+0000332690 00000 n
+0000332742 00000 n
+0000332794 00000 n
+0000332846 00000 n
+0000332898 00000 n
+0000333001 00000 n
+0000335204 00000 n
+0000334777 00000 n
+0000333204 00000 n
+0000334893 00000 n
+0000334945 00000 n
+0000334997 00000 n
+0000335049 00000 n
+0000335101 00000 n
+0000335153 00000 n
+0000337407 00000 n
+0000337561 00000 n
+0000337873 00000 n
+0000337261 00000 n
+0000335355 00000 n
+0000337719 00000 n
+0000337771 00000 n
+0000721271 00000 n
+0000340631 00000 n
+0000339009 00000 n
+0000337997 00000 n
+0000339125 00000 n
+0000339177 00000 n
+0000339229 00000 n
+0000339281 00000 n
+0000339333 00000 n
+0000339384 00000 n
+0000339436 00000 n
+0000339488 00000 n
+0000339540 00000 n
+0000339592 00000 n
+0000339644 00000 n
+0000339696 00000 n
+0000339748 00000 n
+0000339800 00000 n
+0000339852 00000 n
+0000339904 00000 n
+0000339956 00000 n
+0000340008 00000 n
+0000340060 00000 n
+0000340112 00000 n
+0000340164 00000 n
+0000340215 00000 n
+0000340267 00000 n
+0000340319 00000 n
+0000340371 00000 n
+0000340423 00000 n
+0000340475 00000 n
+0000340527 00000 n
+0000340579 00000 n
+0000343412 00000 n
+0000341582 00000 n
+0000340769 00000 n
+0000341698 00000 n
+0000341750 00000 n
+0000341802 00000 n
+0000341854 00000 n
+0000341906 00000 n
+0000341958 00000 n
+0000342010 00000 n
+0000342062 00000 n
+0000342114 00000 n
+0000342166 00000 n
+0000342218 00000 n
+0000342270 00000 n
+0000342321 00000 n
+0000342373 00000 n
+0000342425 00000 n
+0000342477 00000 n
+0000342529 00000 n
+0000342580 00000 n
+0000342632 00000 n
+0000342684 00000 n
+0000342736 00000 n
+0000342788 00000 n
+0000342840 00000 n
+0000342892 00000 n
+0000342944 00000 n
+0000342996 00000 n
+0000343048 00000 n
+0000343100 00000 n
+0000343152 00000 n
+0000343204 00000 n
+0000343256 00000 n
+0000343308 00000 n
+0000343360 00000 n
+0000346192 00000 n
+0000344308 00000 n
+0000343537 00000 n
+0000344424 00000 n
+0000344476 00000 n
+0000344528 00000 n
+0000344580 00000 n
+0000344632 00000 n
+0000344684 00000 n
+0000344736 00000 n
+0000344788 00000 n
+0000344840 00000 n
+0000344892 00000 n
+0000344944 00000 n
+0000344996 00000 n
+0000345048 00000 n
+0000345100 00000 n
+0000345152 00000 n
+0000345204 00000 n
+0000345256 00000 n
+0000345308 00000 n
+0000345360 00000 n
+0000345412 00000 n
+0000345464 00000 n
+0000345516 00000 n
+0000345568 00000 n
+0000345620 00000 n
+0000345672 00000 n
+0000345724 00000 n
+0000345776 00000 n
+0000345828 00000 n
+0000345880 00000 n
+0000345932 00000 n
+0000345984 00000 n
+0000346036 00000 n
+0000346088 00000 n
+0000346140 00000 n
+0000349099 00000 n
+0000347323 00000 n
+0000346317 00000 n
+0000347439 00000 n
+0000347491 00000 n
+0000347543 00000 n
+0000347595 00000 n
+0000347647 00000 n
+0000347699 00000 n
+0000347750 00000 n
+0000347802 00000 n
+0000347854 00000 n
+0000347906 00000 n
+0000347958 00000 n
+0000348010 00000 n
+0000348062 00000 n
+0000348114 00000 n
+0000348166 00000 n
+0000348218 00000 n
+0000348269 00000 n
+0000348321 00000 n
+0000348371 00000 n
+0000348423 00000 n
+0000348475 00000 n
+0000348527 00000 n
+0000348579 00000 n
+0000348631 00000 n
+0000348683 00000 n
+0000348735 00000 n
+0000348787 00000 n
+0000348839 00000 n
+0000348891 00000 n
+0000348943 00000 n
+0000348995 00000 n
+0000349047 00000 n
+0000352145 00000 n
+0000350422 00000 n
+0000349237 00000 n
+0000350538 00000 n
+0000350590 00000 n
+0000350642 00000 n
+0000350693 00000 n
+0000350745 00000 n
+0000350797 00000 n
+0000350849 00000 n
+0000350901 00000 n
+0000350953 00000 n
+0000351005 00000 n
+0000351057 00000 n
+0000351108 00000 n
+0000351160 00000 n
+0000351212 00000 n
+0000351264 00000 n
+0000351316 00000 n
+0000351368 00000 n
+0000351419 00000 n
+0000351471 00000 n
+0000351523 00000 n
+0000351575 00000 n
+0000351627 00000 n
+0000351679 00000 n
+0000351731 00000 n
+0000351782 00000 n
+0000351834 00000 n
+0000351886 00000 n
+0000351938 00000 n
+0000351990 00000 n
+0000352042 00000 n
+0000352094 00000 n
+0000354974 00000 n
+0000353871 00000 n
+0000352283 00000 n
+0000353987 00000 n
+0000354039 00000 n
+0000354091 00000 n
+0000354143 00000 n
+0000354195 00000 n
+0000354247 00000 n
+0000354299 00000 n
+0000354351 00000 n
+0000354403 00000 n
+0000354455 00000 n
+0000354507 00000 n
+0000354559 00000 n
+0000354611 00000 n
+0000354663 00000 n
+0000354715 00000 n
+0000354818 00000 n
+0000354870 00000 n
+0000354922 00000 n
+0000721396 00000 n
+0000359718 00000 n
+0000357146 00000 n
+0000356822 00000 n
+0000355125 00000 n
+0000356938 00000 n
+0000356990 00000 n
+0000357042 00000 n
+0000357094 00000 n
+0000359874 00000 n
+0000363517 00000 n
+0000361066 00000 n
+0000359572 00000 n
+0000357282 00000 n
+0000360028 00000 n
+0000360080 00000 n
+0000360132 00000 n
+0000360184 00000 n
+0000360236 00000 n
+0000360288 00000 n
+0000360339 00000 n
+0000360391 00000 n
+0000360443 00000 n
+0000360495 00000 n
+0000360547 00000 n
+0000360599 00000 n
+0000360651 00000 n
+0000360703 00000 n
+0000360755 00000 n
+0000360807 00000 n
+0000360910 00000 n
+0000360962 00000 n
+0000361014 00000 n
+0000422148 00000 n
+0000363677 00000 n
+0000363837 00000 n
+0000363992 00000 n
+0000364506 00000 n
+0000363353 00000 n
+0000361215 00000 n
+0000364147 00000 n
+0000364199 00000 n
+0000364251 00000 n
+0000364403 00000 n
+0000364454 00000 n
+0000366953 00000 n
+0000366579 00000 n
+0000364657 00000 n
+0000366695 00000 n
+0000366747 00000 n
+0000366799 00000 n
+0000366851 00000 n
+0000366903 00000 n
+0000369055 00000 n
+0000369209 00000 n
+0000369363 00000 n
+0000370502 00000 n
+0000368900 00000 n
+0000367064 00000 n
+0000369517 00000 n
+0000369569 00000 n
+0000369621 00000 n
+0000369724 00000 n
+0000369776 00000 n
+0000369828 00000 n
+0000369880 00000 n
+0000369932 00000 n
+0000369984 00000 n
+0000370036 00000 n
+0000370088 00000 n
+0000370140 00000 n
+0000370192 00000 n
+0000370243 00000 n
+0000370294 00000 n
+0000370346 00000 n
+0000370398 00000 n
+0000370450 00000 n
+0000372193 00000 n
+0000372347 00000 n
+0000372501 00000 n
+0000374161 00000 n
+0000372038 00000 n
+0000370627 00000 n
+0000372654 00000 n
+0000372706 00000 n
+0000372758 00000 n
+0000372810 00000 n
+0000372862 00000 n
+0000372914 00000 n
+0000372966 00000 n
+0000373018 00000 n
+0000373070 00000 n
+0000373122 00000 n
+0000373174 00000 n
+0000373225 00000 n
+0000373277 00000 n
+0000373329 00000 n
+0000373381 00000 n
+0000373433 00000 n
+0000373485 00000 n
+0000373537 00000 n
+0000373589 00000 n
+0000373641 00000 n
+0000373693 00000 n
+0000373745 00000 n
+0000373797 00000 n
+0000373849 00000 n
+0000373901 00000 n
+0000373953 00000 n
+0000374005 00000 n
+0000374057 00000 n
+0000374109 00000 n
+0000721521 00000 n
+0000376529 00000 n
+0000375687 00000 n
+0000374272 00000 n
+0000375803 00000 n
+0000375906 00000 n
+0000375958 00000 n
+0000376010 00000 n
+0000376062 00000 n
+0000376114 00000 n
+0000376166 00000 n
+0000376218 00000 n
+0000376270 00000 n
+0000376322 00000 n
+0000376374 00000 n
+0000376477 00000 n
+0000378704 00000 n
+0000378276 00000 n
+0000376666 00000 n
+0000378392 00000 n
+0000378444 00000 n
+0000378496 00000 n
+0000378548 00000 n
+0000378600 00000 n
+0000378652 00000 n
+0000381263 00000 n
+0000381423 00000 n
+0000382406 00000 n
+0000381117 00000 n
+0000378828 00000 n
+0000381576 00000 n
+0000381628 00000 n
+0000381680 00000 n
+0000381732 00000 n
+0000381784 00000 n
+0000381836 00000 n
+0000381888 00000 n
+0000381940 00000 n
+0000381992 00000 n
+0000382044 00000 n
+0000382096 00000 n
+0000382148 00000 n
+0000382200 00000 n
+0000382252 00000 n
+0000384875 00000 n
+0000384083 00000 n
+0000382530 00000 n
+0000384199 00000 n
+0000384251 00000 n
+0000384303 00000 n
+0000384355 00000 n
+0000384407 00000 n
+0000384459 00000 n
+0000384511 00000 n
+0000384563 00000 n
+0000384615 00000 n
+0000384667 00000 n
+0000384719 00000 n
+0000384771 00000 n
+0000384823 00000 n
+0000386965 00000 n
+0000386589 00000 n
+0000384999 00000 n
+0000386705 00000 n
+0000386757 00000 n
+0000386809 00000 n
+0000386861 00000 n
+0000386913 00000 n
+0000389693 00000 n
+0000388901 00000 n
+0000387089 00000 n
+0000389017 00000 n
+0000389069 00000 n
+0000389121 00000 n
+0000389173 00000 n
+0000389225 00000 n
+0000389277 00000 n
+0000389329 00000 n
+0000389381 00000 n
+0000389433 00000 n
+0000389485 00000 n
+0000389537 00000 n
+0000389589 00000 n
+0000389641 00000 n
+0000721646 00000 n
+0000392429 00000 n
+0000391847 00000 n
+0000389817 00000 n
+0000391963 00000 n
+0000392015 00000 n
+0000392067 00000 n
+0000392119 00000 n
+0000392171 00000 n
+0000392221 00000 n
+0000392273 00000 n
+0000392325 00000 n
+0000392377 00000 n
+0000002120 00000 f
+0000002121 00000 f
+0000002122 00000 f
+0000002142 00000 f
+0000397304 00000 n
+0000397456 00000 n
+0000395456 00000 n
+0000394562 00000 n
+0000392553 00000 n
+0000394678 00000 n
+0000394730 00000 n
+0000394782 00000 n
+0000394834 00000 n
+0000394886 00000 n
+0000394938 00000 n
+0000394990 00000 n
+0000395041 00000 n
+0000395093 00000 n
+0000395145 00000 n
+0000395197 00000 n
+0000395249 00000 n
+0000395352 00000 n
+0000395404 00000 n
+0000002143 00000 f
+0000002247 00000 f
+0000397608 00000 n
+0000398021 00000 n
+0000397149 00000 n
+0000395606 00000 n
+0000397763 00000 n
+0000397815 00000 n
+0000397867 00000 n
+0000397917 00000 n
+0000397969 00000 n
+0000400879 00000 n
+0000401039 00000 n
+0000401197 00000 n
+0000401971 00000 n
+0000400724 00000 n
+0000398159 00000 n
+0000401351 00000 n
+0000401403 00000 n
+0000401455 00000 n
+0000401506 00000 n
+0000401558 00000 n
+0000401609 00000 n
+0000401661 00000 n
+0000401713 00000 n
+0000401765 00000 n
+0000401817 00000 n
+0000401869 00000 n
+0000404635 00000 n
+0000404155 00000 n
+0000402135 00000 n
+0000404271 00000 n
+0000404323 00000 n
+0000404375 00000 n
+0000404427 00000 n
+0000404479 00000 n
+0000404531 00000 n
+0000404583 00000 n
+0000414365 00000 n
+0000406973 00000 n
+0000414519 00000 n
+0000414670 00000 n
+0000414977 00000 n
+0000406818 00000 n
+0000404772 00000 n
+0000414824 00000 n
+0000414876 00000 n
+0000721771 00000 n
+0000412017 00000 n
+0000412248 00000 n
+0000412296 00000 n
+0000412562 00000 n
+0000412585 00000 n
+0000412867 00000 n
+0000412963 00000 n
+0000566406 00000 n
+0000417584 00000 n
+0000416586 00000 n
+0000415143 00000 n
+0000416702 00000 n
+0000416805 00000 n
+0000416857 00000 n
+0000416909 00000 n
+0000416961 00000 n
+0000417013 00000 n
+0000417065 00000 n
+0000417117 00000 n
+0000417169 00000 n
+0000417221 00000 n
+0000417273 00000 n
+0000417325 00000 n
+0000417377 00000 n
+0000417428 00000 n
+0000417480 00000 n
+0000417532 00000 n
+0000420008 00000 n
+0000418489 00000 n
+0000417708 00000 n
+0000418605 00000 n
+0000418657 00000 n
+0000418709 00000 n
+0000418761 00000 n
+0000418813 00000 n
+0000418865 00000 n
+0000418917 00000 n
+0000418969 00000 n
+0000419021 00000 n
+0000419073 00000 n
+0000419125 00000 n
+0000419177 00000 n
+0000419229 00000 n
+0000419281 00000 n
+0000419333 00000 n
+0000419385 00000 n
+0000419437 00000 n
+0000419489 00000 n
+0000419541 00000 n
+0000419593 00000 n
+0000419645 00000 n
+0000419697 00000 n
+0000419749 00000 n
+0000419801 00000 n
+0000419853 00000 n
+0000419904 00000 n
+0000419956 00000 n
+0000002248 00000 f
+0000002362 00000 f
+0000421216 00000 n
+0000422353 00000 n
+0000421079 00000 n
+0000420132 00000 n
+0000421371 00000 n
+0000421423 00000 n
+0000421475 00000 n
+0000421527 00000 n
+0000421579 00000 n
+0000421631 00000 n
+0000421683 00000 n
+0000421735 00000 n
+0000421787 00000 n
+0000421839 00000 n
+0000421891 00000 n
+0000421943 00000 n
+0000421995 00000 n
+0000422047 00000 n
+0000422098 00000 n
+0000422199 00000 n
+0000422250 00000 n
+0000422302 00000 n
+0000424376 00000 n
+0000424531 00000 n
+0000425516 00000 n
+0000424230 00000 n
+0000422464 00000 n
+0000424686 00000 n
+0000424738 00000 n
+0000424790 00000 n
+0000424842 00000 n
+0000424894 00000 n
+0000424946 00000 n
+0000424998 00000 n
+0000425050 00000 n
+0000425102 00000 n
+0000425154 00000 n
+0000425206 00000 n
+0000425258 00000 n
+0000425309 00000 n
+0000425360 00000 n
+0000425412 00000 n
+0000425464 00000 n
+0000429608 00000 n
+0000427754 00000 n
+0000428321 00000 n
+0000427617 00000 n
+0000425653 00000 n
+0000427908 00000 n
+0000427960 00000 n
+0000428011 00000 n
+0000428062 00000 n
+0000428114 00000 n
+0000428166 00000 n
+0000428217 00000 n
+0000428269 00000 n
+0000437745 00000 n
+0000429492 00000 n
+0000428431 00000 n
+0000437020 00000 n
+0000437123 00000 n
+0000437175 00000 n
+0000437226 00000 n
+0000437278 00000 n
+0000437330 00000 n
+0000437381 00000 n
+0000437433 00000 n
+0000437485 00000 n
+0000437537 00000 n
+0000437589 00000 n
+0000437641 00000 n
+0000437693 00000 n
+0000721896 00000 n
+0000434672 00000 n
+0000434903 00000 n
+0000434951 00000 n
+0000435217 00000 n
+0000435240 00000 n
+0000435522 00000 n
+0000435618 00000 n
+0000440497 00000 n
+0000439187 00000 n
+0000437912 00000 n
+0000439303 00000 n
+0000439355 00000 n
+0000439407 00000 n
+0000439459 00000 n
+0000439511 00000 n
+0000439563 00000 n
+0000439615 00000 n
+0000439667 00000 n
+0000439719 00000 n
+0000439771 00000 n
+0000439823 00000 n
+0000439875 00000 n
+0000439927 00000 n
+0000439979 00000 n
+0000440031 00000 n
+0000440083 00000 n
+0000440134 00000 n
+0000440186 00000 n
+0000440238 00000 n
+0000440290 00000 n
+0000440393 00000 n
+0000440445 00000 n
+0000442492 00000 n
+0000442324 00000 n
+0000440647 00000 n
+0000442440 00000 n
+0000444276 00000 n
+0000444108 00000 n
+0000442655 00000 n
+0000444224 00000 n
+0000002363 00000 f
+0000000000 00000 f
+0000448550 00000 n
+0000446272 00000 n
+0000445896 00000 n
+0000444439 00000 n
+0000446012 00000 n
+0000446064 00000 n
+0000446116 00000 n
+0000446168 00000 n
+0000446220 00000 n
+0000451402 00000 n
+0000448755 00000 n
+0000448413 00000 n
+0000446422 00000 n
+0000448703 00000 n
+0000451555 00000 n
+0000451710 00000 n
+0000451864 00000 n
+0000452019 00000 n
+0000452951 00000 n
+0000451229 00000 n
+0000448879 00000 n
+0000452173 00000 n
+0000452225 00000 n
+0000452277 00000 n
+0000452329 00000 n
+0000452381 00000 n
+0000452433 00000 n
+0000452484 00000 n
+0000452536 00000 n
+0000452588 00000 n
+0000452640 00000 n
+0000452692 00000 n
+0000452744 00000 n
+0000452796 00000 n
+0000452848 00000 n
+0000722021 00000 n
+0000455147 00000 n
+0000455303 00000 n
+0000455459 00000 n
+0000455619 00000 n
+0000455779 00000 n
+0000455935 00000 n
+0000461761 00000 n
+0000457077 00000 n
+0000454965 00000 n
+0000453075 00000 n
+0000456089 00000 n
+0000456141 00000 n
+0000456193 00000 n
+0000456245 00000 n
+0000456297 00000 n
+0000456349 00000 n
+0000456401 00000 n
+0000456453 00000 n
+0000456505 00000 n
+0000456557 00000 n
+0000456609 00000 n
+0000456661 00000 n
+0000456713 00000 n
+0000456765 00000 n
+0000456817 00000 n
+0000456869 00000 n
+0000456921 00000 n
+0000456973 00000 n
+0000457025 00000 n
+0000458647 00000 n
+0000462642 00000 n
+0000458510 00000 n
+0000457241 00000 n
+0000461916 00000 n
+0000461968 00000 n
+0000462020 00000 n
+0000462072 00000 n
+0000462124 00000 n
+0000462176 00000 n
+0000462228 00000 n
+0000462280 00000 n
+0000462332 00000 n
+0000462384 00000 n
+0000462436 00000 n
+0000462488 00000 n
+0000459313 00000 n
+0000459545 00000 n
+0000459593 00000 n
+0000459924 00000 n
+0000459946 00000 n
+0000460250 00000 n
+0000460346 00000 n
+0000464857 00000 n
+0000465322 00000 n
+0000464720 00000 n
+0000462796 00000 n
+0000465011 00000 n
+0000465114 00000 n
+0000465166 00000 n
+0000465218 00000 n
+0000465270 00000 n
+0000468269 00000 n
+0000467325 00000 n
+0000465484 00000 n
+0000467441 00000 n
+0000467493 00000 n
+0000467545 00000 n
+0000467597 00000 n
+0000467649 00000 n
+0000467701 00000 n
+0000467753 00000 n
+0000467804 00000 n
+0000467855 00000 n
+0000467907 00000 n
+0000467959 00000 n
+0000468011 00000 n
+0000468063 00000 n
+0000468165 00000 n
+0000468217 00000 n
+0000471006 00000 n
+0000470266 00000 n
+0000468419 00000 n
+0000470382 00000 n
+0000470434 00000 n
+0000470486 00000 n
+0000470538 00000 n
+0000470590 00000 n
+0000470642 00000 n
+0000470694 00000 n
+0000470746 00000 n
+0000470798 00000 n
+0000470850 00000 n
+0000470902 00000 n
+0000470954 00000 n
+0000473314 00000 n
+0000472835 00000 n
+0000471143 00000 n
+0000472951 00000 n
+0000473003 00000 n
+0000473055 00000 n
+0000473107 00000 n
+0000473210 00000 n
+0000473262 00000 n
+0000722146 00000 n
+0000475322 00000 n
+0000474946 00000 n
+0000473490 00000 n
+0000475062 00000 n
+0000475114 00000 n
+0000475166 00000 n
+0000475218 00000 n
+0000475270 00000 n
+0000477744 00000 n
+0000477898 00000 n
+0000478059 00000 n
+0000479103 00000 n
+0000477589 00000 n
+0000475485 00000 n
+0000478220 00000 n
+0000478272 00000 n
+0000478324 00000 n
+0000478376 00000 n
+0000478428 00000 n
+0000478480 00000 n
+0000478583 00000 n
+0000478635 00000 n
+0000478687 00000 n
+0000478739 00000 n
+0000478791 00000 n
+0000478843 00000 n
+0000478895 00000 n
+0000478947 00000 n
+0000478999 00000 n
+0000479051 00000 n
+0000481799 00000 n
+0000481960 00000 n
+0000482121 00000 n
+0000482277 00000 n
+0000483054 00000 n
+0000481635 00000 n
+0000479227 00000 n
+0000482433 00000 n
+0000482485 00000 n
+0000482537 00000 n
+0000482589 00000 n
+0000482641 00000 n
+0000482693 00000 n
+0000482745 00000 n
+0000482797 00000 n
+0000482848 00000 n
+0000482900 00000 n
+0000483002 00000 n
+0000484778 00000 n
+0000484558 00000 n
+0000483178 00000 n
+0000484674 00000 n
+0000484726 00000 n
+0000486607 00000 n
+0000486439 00000 n
+0000484902 00000 n
+0000486555 00000 n
+0000488082 00000 n
+0000487810 00000 n
+0000486770 00000 n
+0000487926 00000 n
+0000487978 00000 n
+0000488030 00000 n
+0000722271 00000 n
+0000490119 00000 n
+0000489847 00000 n
+0000488232 00000 n
+0000489963 00000 n
+0000490015 00000 n
+0000490067 00000 n
+0000492657 00000 n
+0000492810 00000 n
+0000492963 00000 n
+0000493118 00000 n
+0000493278 00000 n
+0000493432 00000 n
+0000493592 00000 n
+0000494272 00000 n
+0000492466 00000 n
+0000490282 00000 n
+0000493752 00000 n
+0000493804 00000 n
+0000493856 00000 n
+0000493908 00000 n
+0000493960 00000 n
+0000494012 00000 n
+0000494064 00000 n
+0000494116 00000 n
+0000494168 00000 n
+0000494220 00000 n
+0000496385 00000 n
+0000496539 00000 n
+0000496699 00000 n
+0000497480 00000 n
+0000496230 00000 n
+0000494422 00000 n
+0000496860 00000 n
+0000496963 00000 n
+0000497015 00000 n
+0000497066 00000 n
+0000497117 00000 n
+0000497168 00000 n
+0000497220 00000 n
+0000497272 00000 n
+0000497324 00000 n
+0000497376 00000 n
+0000497428 00000 n
+0000499323 00000 n
+0000499513 00000 n
+0000499701 00000 n
+0000500061 00000 n
+0000499168 00000 n
+0000497604 00000 n
+0000499856 00000 n
+0000566662 00000 n
+0000502665 00000 n
+0000503075 00000 n
+0000502528 00000 n
+0000500159 00000 n
+0000502819 00000 n
+0000506034 00000 n
+0000505713 00000 n
+0000503186 00000 n
+0000505829 00000 n
+0000722396 00000 n
+0000507079 00000 n
+0000506911 00000 n
+0000506145 00000 n
+0000507027 00000 n
+0000508540 00000 n
+0000508692 00000 n
+0000508846 00000 n
+0000509006 00000 n
+0000509164 00000 n
+0000509324 00000 n
+0000509479 00000 n
+0000509639 00000 n
+0000509799 00000 n
+0000509954 00000 n
+0000510114 00000 n
+0000510427 00000 n
+0000508313 00000 n
+0000507164 00000 n
+0000510274 00000 n
+0000512441 00000 n
+0000512171 00000 n
+0000510551 00000 n
+0000512287 00000 n
+0000514303 00000 n
+0000514084 00000 n
+0000512604 00000 n
+0000514200 00000 n
+0000515455 00000 n
+0000515287 00000 n
+0000514440 00000 n
+0000515403 00000 n
+0000516614 00000 n
+0000516446 00000 n
+0000515553 00000 n
+0000516562 00000 n
+0000722521 00000 n
+0000517727 00000 n
+0000517559 00000 n
+0000516712 00000 n
+0000517675 00000 n
+0000518815 00000 n
+0000518647 00000 n
+0000517825 00000 n
+0000518763 00000 n
+0000519921 00000 n
+0000519753 00000 n
+0000518913 00000 n
+0000519869 00000 n
+0000520986 00000 n
+0000520818 00000 n
+0000520019 00000 n
+0000520934 00000 n
+0000522031 00000 n
+0000521863 00000 n
+0000521084 00000 n
+0000521979 00000 n
+0000523096 00000 n
+0000522928 00000 n
+0000522129 00000 n
+0000523044 00000 n
+0000722646 00000 n
+0000524172 00000 n
+0000524004 00000 n
+0000523194 00000 n
+0000524120 00000 n
+0000525240 00000 n
+0000525072 00000 n
+0000524270 00000 n
+0000525188 00000 n
+0000526331 00000 n
+0000526163 00000 n
+0000525338 00000 n
+0000526279 00000 n
+0000527408 00000 n
+0000527240 00000 n
+0000526429 00000 n
+0000527356 00000 n
+0000528495 00000 n
+0000528327 00000 n
+0000527506 00000 n
+0000528443 00000 n
+0000529571 00000 n
+0000529403 00000 n
+0000528593 00000 n
+0000529519 00000 n
+0000722771 00000 n
+0000530661 00000 n
+0000530493 00000 n
+0000529669 00000 n
+0000530609 00000 n
+0000531742 00000 n
+0000531574 00000 n
+0000530759 00000 n
+0000531690 00000 n
+0000532843 00000 n
+0000532675 00000 n
+0000531840 00000 n
+0000532791 00000 n
+0000533925 00000 n
+0000533757 00000 n
+0000532941 00000 n
+0000533873 00000 n
+0000535019 00000 n
+0000534851 00000 n
+0000534023 00000 n
+0000534967 00000 n
+0000536097 00000 n
+0000535929 00000 n
+0000535117 00000 n
+0000536045 00000 n
+0000722896 00000 n
+0000537199 00000 n
+0000537031 00000 n
+0000536195 00000 n
+0000537147 00000 n
+0000538301 00000 n
+0000538133 00000 n
+0000537297 00000 n
+0000538249 00000 n
+0000539449 00000 n
+0000539281 00000 n
+0000538399 00000 n
+0000539397 00000 n
+0000540540 00000 n
+0000540372 00000 n
+0000539547 00000 n
+0000540488 00000 n
+0000541631 00000 n
+0000541463 00000 n
+0000540638 00000 n
+0000541579 00000 n
+0000542716 00000 n
+0000542548 00000 n
+0000541729 00000 n
+0000542664 00000 n
+0000723021 00000 n
+0000543815 00000 n
+0000543647 00000 n
+0000542814 00000 n
+0000543763 00000 n
+0000544907 00000 n
+0000544739 00000 n
+0000543913 00000 n
+0000544855 00000 n
+0000546002 00000 n
+0000545834 00000 n
+0000545005 00000 n
+0000545950 00000 n
+0000547151 00000 n
+0000546983 00000 n
+0000546100 00000 n
+0000547099 00000 n
+0000548257 00000 n
+0000548089 00000 n
+0000547249 00000 n
+0000548205 00000 n
+0000549347 00000 n
+0000549179 00000 n
+0000548355 00000 n
+0000549295 00000 n
+0000723146 00000 n
+0000550436 00000 n
+0000550268 00000 n
+0000549445 00000 n
+0000550384 00000 n
+0000551516 00000 n
+0000551348 00000 n
+0000550534 00000 n
+0000551464 00000 n
+0000552597 00000 n
+0000552429 00000 n
+0000551614 00000 n
+0000552545 00000 n
+0000553550 00000 n
+0000553382 00000 n
+0000552695 00000 n
+0000553498 00000 n
+0000554652 00000 n
+0000554484 00000 n
+0000553648 00000 n
+0000554600 00000 n
+0000555743 00000 n
+0000555575 00000 n
+0000554750 00000 n
+0000555691 00000 n
+0000723271 00000 n
+0000556835 00000 n
+0000556667 00000 n
+0000555841 00000 n
+0000556783 00000 n
+0000557914 00000 n
+0000557746 00000 n
+0000556933 00000 n
+0000557862 00000 n
+0000558374 00000 n
+0000558206 00000 n
+0000558012 00000 n
+0000558322 00000 n
+0000561375 00000 n
+0000561542 00000 n
+0000559909 00000 n
+0000561720 00000 n
+0000561990 00000 n
+0000559754 00000 n
+0000558459 00000 n
+0000561887 00000 n
+0000561072 00000 n
+0000561305 00000 n
+0000561353 00000 n
+0000562497 00000 n
+0000562329 00000 n
+0000562130 00000 n
+0000562445 00000 n
+0000564591 00000 n
+0000564956 00000 n
+0000565330 00000 n
+0000565514 00000 n
+0000565884 00000 n
+0000567567 00000 n
+0000566867 00000 n
+0000564382 00000 n
+0000562582 00000 n
+0000566251 00000 n
+0000566303 00000 n
+0000564773 00000 n
+0000565142 00000 n
+0000565699 00000 n
+0000566067 00000 n
+0000723396 00000 n
+0000568038 00000 n
+0000567421 00000 n
+0000566978 00000 n
+0000567935 00000 n
+0000567751 00000 n
+0000568149 00000 n
+0000568205 00000 n
+0000568285 00000 n
+0000568705 00000 n
+0000568816 00000 n
+0000568962 00000 n
+0000569289 00000 n
+0000569534 00000 n
+0000569765 00000 n
+0000570016 00000 n
+0000570771 00000 n
+0000571064 00000 n
+0000571188 00000 n
+0000571271 00000 n
+0000571689 00000 n
+0000572036 00000 n
+0000572713 00000 n
+0000573357 00000 n
+0000573721 00000 n
+0000574340 00000 n
+0000574976 00000 n
+0000575653 00000 n
+0000575906 00000 n
+0000576597 00000 n
+0000577235 00000 n
+0000577883 00000 n
+0000578290 00000 n
+0000578936 00000 n
+0000592638 00000 n
+0000593056 00000 n
+0000605293 00000 n
+0000605717 00000 n
+0000607994 00000 n
+0000608222 00000 n
+0000611063 00000 n
+0000611305 00000 n
+0000615481 00000 n
+0000615728 00000 n
+0000619755 00000 n
+0000620279 00000 n
+0000628783 00000 n
+0000629115 00000 n
+0000631693 00000 n
+0000631921 00000 n
+0000636680 00000 n
+0000636941 00000 n
+0000654074 00000 n
+0000654645 00000 n
+0000660064 00000 n
+0000660348 00000 n
+0000664013 00000 n
+0000664258 00000 n
+0000668051 00000 n
+0000668319 00000 n
+0000676548 00000 n
+0000676879 00000 n
+0000681087 00000 n
+0000681540 00000 n
+0000682857 00000 n
+0000683090 00000 n
+0000698568 00000 n
+0000698975 00000 n
+0000700912 00000 n
+0000701138 00000 n
+0000703492 00000 n
+0000703721 00000 n
+0000715871 00000 n
+0000723485 00000 n
+0000723605 00000 n
+0000723729 00000 n
+0000723855 00000 n
+0000723981 00000 n
+0000724107 00000 n
+0000724224 00000 n
+0000724334 00000 n
+0000733921 00000 n
+0000734104 00000 n
+0000734289 00000 n
+0000734473 00000 n
+0000734658 00000 n
+0000734841 00000 n
+0000735024 00000 n
+0000735209 00000 n
+0000735393 00000 n
+0000735578 00000 n
+0000735762 00000 n
+0000735947 00000 n
+0000736131 00000 n
+0000736316 00000 n
+0000736500 00000 n
+0000736685 00000 n
+0000736868 00000 n
+0000737051 00000 n
+0000737236 00000 n
+0000737417 00000 n
+0000737602 00000 n
+0000737786 00000 n
+0000737971 00000 n
+0000738155 00000 n
+0000738340 00000 n
+0000738524 00000 n
+0000738709 00000 n
+0000738893 00000 n
+0000739078 00000 n
+0000739261 00000 n
+0000739444 00000 n
+0000739629 00000 n
+0000739813 00000 n
+0000739998 00000 n
+0000740182 00000 n
+0000740367 00000 n
+0000740551 00000 n
+0000740736 00000 n
+0000740918 00000 n
+0000741103 00000 n
+0000741287 00000 n
+0000741472 00000 n
+0000741655 00000 n
+0000741838 00000 n
+0000742023 00000 n
+0000742207 00000 n
+0000742392 00000 n
+0000742576 00000 n
+0000742761 00000 n
+0000742945 00000 n
+0000743130 00000 n
+0000743314 00000 n
+0000743499 00000 n
+0000743682 00000 n
+0000743865 00000 n
+0000744050 00000 n
+0000744231 00000 n
+0000744416 00000 n
+0000744600 00000 n
+0000744785 00000 n
+0000744969 00000 n
+0000745154 00000 n
+0000745338 00000 n
+0000745523 00000 n
+0000745707 00000 n
+0000745892 00000 n
+0000746075 00000 n
+0000746258 00000 n
+0000746443 00000 n
+0000746627 00000 n
+0000746812 00000 n
+0000746996 00000 n
+0000747181 00000 n
+0000747365 00000 n
+0000747550 00000 n
+0000747732 00000 n
+0000747917 00000 n
+0000748101 00000 n
+0000748286 00000 n
+0000748469 00000 n
+0000748652 00000 n
+0000748837 00000 n
+0000749021 00000 n
+0000749206 00000 n
+0000749390 00000 n
+0000749575 00000 n
+0000749759 00000 n
+0000749944 00000 n
+0000750128 00000 n
+0000750313 00000 n
+0000750496 00000 n
+0000750679 00000 n
+0000750864 00000 n
+0000751045 00000 n
+0000751230 00000 n
+0000751414 00000 n
+0000751599 00000 n
+0000751783 00000 n
+0000751968 00000 n
+0000752152 00000 n
+0000752337 00000 n
+0000752521 00000 n
+0000752706 00000 n
+0000752889 00000 n
+0000753072 00000 n
+0000753257 00000 n
+0000753441 00000 n
+0000753626 00000 n
+0000753810 00000 n
+0000753995 00000 n
+0000754179 00000 n
+0000754364 00000 n
+0000754546 00000 n
+0000754731 00000 n
+0000754915 00000 n
+0000755100 00000 n
+0000755283 00000 n
+0000755466 00000 n
+0000755651 00000 n
+0000755835 00000 n
+0000756020 00000 n
+0000756204 00000 n
+0000756384 00000 n
+0000756559 00000 n
+0000756734 00000 n
+0000756911 00000 n
+0000757099 00000 n
+0000757294 00000 n
+0000757478 00000 n
+0000757674 00000 n
+0000757888 00000 n
+0000758102 00000 n
+0000758317 00000 n
+0000758524 00000 n
+0000758719 00000 n
+0000758914 00000 n
+0000759109 00000 n
+0000759294 00000 n
+0000759479 00000 n
+0000759662 00000 n
+0000759847 00000 n
+0000760030 00000 n
+0000760215 00000 n
+0000760398 00000 n
+0000760583 00000 n
+0000760766 00000 n
+0000760951 00000 n
+0000761133 00000 n
+0000761315 00000 n
+0000761500 00000 n
+0000761683 00000 n
+0000761868 00000 n
+0000762051 00000 n
+0000762236 00000 n
+0000762413 00000 n
+0000762584 00000 n
+0000762754 00000 n
+0000762931 00000 n
+0000763106 00000 n
+0000763283 00000 n
+0000763458 00000 n
+0000763635 00000 n
+0000763809 00000 n
+0000763983 00000 n
+0000764160 00000 n
+0000764335 00000 n
+0000764512 00000 n
+0000764687 00000 n
+0000764864 00000 n
+0000765037 00000 n
+0000765208 00000 n
+0000765398 00000 n
+0000765615 00000 n
+0000765830 00000 n
+0000766047 00000 n
+0000766262 00000 n
+0000766479 00000 n
+0000766694 00000 n
+0000766908 00000 n
+0000767113 00000 n
+0000767322 00000 n
+0000767531 00000 n
+0000767740 00000 n
+0000767949 00000 n
+0000768158 00000 n
+0000768367 00000 n
+0000768574 00000 n
+0000768783 00000 n
+0000768990 00000 n
+0000769199 00000 n
+0000769406 00000 n
+0000769615 00000 n
+0000769821 00000 n
+0000770028 00000 n
+0000770225 00000 n
+0000770422 00000 n
+0000770623 00000 n
+0000770826 00000 n
+0000771032 00000 n
+0000771235 00000 n
+0000771447 00000 n
+0000771686 00000 n
+0000771929 00000 n
+0000772172 00000 n
+0000772415 00000 n
+0000772661 00000 n
+0000772904 00000 n
+0000773147 00000 n
+0000773390 00000 n
+0000773581 00000 n
+0000773782 00000 n
+0000773981 00000 n
+0000774170 00000 n
+0000774367 00000 n
+0000774566 00000 n
+0000774764 00000 n
+0000774962 00000 n
+0000775162 00000 n
+0000775361 00000 n
+0000775560 00000 n
+0000775759 00000 n
+0000775960 00000 n
+0000776160 00000 n
+0000776360 00000 n
+0000776559 00000 n
+0000776759 00000 n
+0000776958 00000 n
+0000777155 00000 n
+0000777273 00000 n
+0000777391 00000 n
+0000777509 00000 n
+0000777627 00000 n
+0000777744 00000 n
+0000777862 00000 n
+0000777980 00000 n
+0000778098 00000 n
+0000778215 00000 n
+0000778333 00000 n
+0000778451 00000 n
+0000778569 00000 n
+0000778687 00000 n
+0000778804 00000 n
+0000778922 00000 n
+0000779040 00000 n
+0000779158 00000 n
+0000779275 00000 n
+0000779393 00000 n
+0000779511 00000 n
+0000779631 00000 n
+0000779755 00000 n
+0000779877 00000 n
+0000779995 00000 n
+0000780113 00000 n
+0000780230 00000 n
+0000780346 00000 n
+0000780462 00000 n
+0000780583 00000 n
+0000780708 00000 n
+0000780832 00000 n
+0000780956 00000 n
+0000781080 00000 n
+0000781209 00000 n
+0000781337 00000 n
+0000781458 00000 n
+0000781580 00000 n
+0000781692 00000 n
+0000781811 00000 n
+0000781929 00000 n
+0000782047 00000 n
+0000782165 00000 n
+0000782286 00000 n
+0000782408 00000 n
+0000782493 00000 n
+0000782613 00000 n
+0000782689 00000 n
+0000782773 00000 n
+0000782813 00000 n
+0000783007 00000 n
+trailer
+<< /Size 3216
+/Root 3214 0 R
+/Info 3215 0 R
+/ID [<200D38A9CFCF7E0C179520B7E57747C4> <200D38A9CFCF7E0C179520B7E57747C4>] >>
+startxref
+783339
+%%EOF
diff --git a/doc/spec/fdct.fig b/doc/spec/fdct.fig
new file mode 100644
index 0000000..e35c758
--- /dev/null
+++ b/doc/spec/fdct.fig
@@ -0,0 +1,371 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter
+100.00
+Single
+-2
+1200 2
+6 1350 4650 1650 4950
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 1500 4800 75 75 1500 4800 1500 4725
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 1450 4800 1550 4800
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 1500 4850 1500 4750
+-6
+6 1350 450 1650 750
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 1500 600 75 75 1500 600 1500 525
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 1450 600 1550 600
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 1500 650 1500 550
+-6
+6 1950 1050 2250 1350
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 2100 1200 75 75 2100 1200 2100 1125
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2050 1200 2150 1200
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2100 1250 2100 1150
+-6
+6 3150 2850 3450 3150
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 3300 3000 75 75 3300 3000 3300 2925
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 3250 3000 3350 3000
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 3300 3050 3300 2950
+-6
+6 3150 2250 3450 2550
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 3300 2400 75 75 3300 2400 3300 2325
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 3250 2400 3350 2400
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 3300 2450 3300 2350
+-6
+6 2550 3450 2850 3750
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 2700 3600 75 75 2700 3600 2700 3525
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2650 3600 2750 3600
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2700 3650 2700 3550
+-6
+6 2550 1650 2850 1950
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 2700 1800 75 75 2700 1800 2700 1725
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2650 1800 2750 1800
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2700 1850 2700 1750
+-6
+6 1950 4050 2250 4350
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 2100 4200 75 75 2100 4200 2100 4125
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2050 4200 2150 4200
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2100 4250 2100 4150
+-6
+6 2250 3600 2550 3900
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 2400 3750 75 75 2400 3750 2400 3675
+4 1 0 40 -1 0 12 0.0000 4 15 60 2400 3800 -\001
+-6
+6 1650 4200 1950 4500
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 1800 4350 75 75 1800 4350 1800 4275
+4 1 0 40 -1 0 12 0.0000 4 15 60 1800 4400 -\001
+-6
+6 1050 4800 1350 5100
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 1200 4950 75 75 1200 4950 1200 4875
+4 1 0 40 -1 0 12 0.0000 4 15 60 1200 5000 -\001
+-6
+6 2850 3000 3150 3300
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 3000 3150 75 75 3000 3150 3000 3075
+4 1 0 40 -1 0 12 0.0000 4 15 60 3000 3200 -\001
+-6
+6 4350 4050 4650 4350
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 4500 4200 75 75 4500 4200 4500 4125
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 4450 4200 4550 4200
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 4500 4250 4500 4150
+-6
+6 4350 3450 4650 3750
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 4500 3600 75 75 4500 3600 4500 3525
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 4450 3600 4550 3600
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 4500 3650 4500 3550
+-6
+6 4050 3300 4350 3600
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 4200 3450 75 75 4200 3450 4200 3375
+4 1 0 40 -1 0 12 0.0000 4 15 60 4200 3500 -\001
+-6
+6 4350 2250 4650 2550
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 4500 2400 75 75 4500 2400 4500 2325
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 4450 2400 4550 2400
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 4500 2450 4500 2350
+-6
+6 4350 450 4650 750
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 4500 600 75 75 4500 600 4500 525
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 4450 600 4550 600
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 4500 650 4500 550
+-6
+6 4050 2400 4350 2700
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 4200 2550 75 75 4200 2550 4200 2475
+4 1 0 40 -1 0 12 0.0000 4 15 60 4200 2600 -\001
+-6
+6 4950 1050 5250 1350
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 5100 1200 75 75 5100 1200 5100 1125
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 5050 1200 5150 1200
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 5100 1250 5100 1150
+-6
+6 4950 1650 5250 1950
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 5100 1800 75 75 5100 1800 5100 1725
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 5050 1800 5150 1800
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 5100 1850 5100 1750
+-6
+6 4650 1800 4950 2100
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 4800 1950 75 75 4800 1950 4800 1875
+4 1 0 40 -1 0 12 0.0000 4 15 60 4800 2000 -\001
+-6
+6 4725 3525 4875 4275
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 4800 4200 25 25 4800 4200 4800 4175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 4800 3600 25 25 4800 3600 4800 3575
+-6
+6 6150 4650 6450 4950
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6300 4800 75 75 6300 4800 6300 4725
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6250 4800 6350 4800
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6300 4850 6300 4750
+-6
+6 6150 4050 6450 4350
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6300 4200 75 75 6300 4200 6300 4125
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6250 4200 6350 4200
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6300 4250 6300 4150
+-6
+6 5850 3900 6150 4200
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6000 4050 75 75 6000 4050 6000 3975
+4 1 0 40 -1 0 12 0.0000 4 15 60 6000 4100 -\001
+-6
+6 6150 2850 6450 3150
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6300 3000 75 75 6300 3000 6300 2925
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6250 3000 6350 3000
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6300 3050 6300 2950
+-6
+6 6150 3450 6450 3750
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6300 3600 75 75 6300 3600 6300 3525
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6250 3600 6350 3600
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6300 3650 6300 3550
+-6
+6 5850 3600 6150 3900
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6000 3750 75 75 6000 3750 6000 3675
+4 1 0 40 -1 0 12 0.0000 4 15 60 6000 3800 -\001
+-6
+6 6150 1050 6450 1350
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6300 1200 75 75 6300 1200 6300 1125
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6250 1200 6350 1200
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6300 1250 6300 1150
+-6
+6 6150 450 6450 750
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6300 600 75 75 6300 600 6300 525
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6250 600 6350 600
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6300 650 6300 550
+-6
+6 6150 2250 6450 2550
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6300 2400 75 75 6300 2400 6300 2325
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6250 2400 6350 2400
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6300 2450 6300 2350
+-6
+6 6150 1650 6450 1950
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6300 1800 75 75 6300 1800 6300 1725
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6250 1800 6350 1800
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6300 1850 6300 1750
+-6
+6 5850 1200 6150 1500
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6000 1350 75 75 6000 1350 6000 1275
+4 1 0 40 -1 0 12 0.0000 4 15 60 6000 1400 -\001
+-6
+6 7350 4650 7650 4950
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 7500 4800 75 75 7500 4800 7500 4725
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 7450 4800 7550 4800
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 7500 4850 7500 4750
+-6
+6 7350 2850 7650 3150
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 7500 3000 75 75 7500 3000 7500 2925
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 7450 3000 7550 3000
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 7500 3050 7500 2950
+-6
+6 7950 4050 8250 4350
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 8100 4200 75 75 8100 4200 8100 4125
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 8050 4200 8150 4200
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 8100 4250 8100 4150
+-6
+6 7950 3450 8250 3750
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 8100 3600 75 75 8100 3600 8100 3525
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 8050 3600 8150 3600
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 8100 3650 8100 3550
+-6
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 900 4800 25 25 900 4800 900 4775
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 900 600 25 25 900 600 900 575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 1500 1200 25 25 1500 1200 1500 1175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 2700 3000 25 25 2700 3000 2700 2975
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 2700 2400 25 25 2700 2400 2700 2375
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 2100 3600 25 25 2100 3600 2100 3575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 1500 4200 25 25 1500 4200 1500 4175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 3900 4200 25 25 3900 4200 3900 4175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 3900 3600 25 25 3900 3600 3900 3575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 3900 2400 25 25 3900 2400 3900 2375
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 3900 600 25 25 3900 600 3900 575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 4500 1200 25 25 4500 1200 4500 1175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 4500 1800 25 25 4500 1800 4500 1775
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 5700 4800 25 25 5700 4800 5700 4775
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 5700 4200 25 25 5700 4200 5700 4175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 5700 3600 25 25 5700 3600 5700 3575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 5700 3000 25 25 5700 3000 5700 2975
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 5700 1200 25 25 5700 1200 5700 1175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 5700 600 25 25 5700 600 5700 575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 5700 2400 25 25 5700 2400 5700 2375
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 5725 1800 25 25 5725 1800 5725 1775
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 6900 4800 25 25 6900 4800 6900 4775
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 6900 3000 25 25 6900 3000 6900 2975
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 7500 4200 25 25 7500 4200 7500 4175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 7500 3600 25 25 7500 3600 7500 3575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 7500 1200 25 25 7500 1200 7500 1175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 7500 600 25 25 7500 600 7500 575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 2100 1800 25 25 2100 1800 2100 1775
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 600 8400 600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 2400 8400 2400
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 3000 8400 3000
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 4800 8400 4800
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 1200 8400 1200
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 3600 8400 3600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 1800 8400 1800
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 4200 8400 4200
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 900 4800 1500 600
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 900 600 1500 4800
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 1500 1200 2100 4275
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 1500 4200 2100 1200
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 2100 3600 2700 1800
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 2700 2400 3300 3000
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 2100 1800 2700 3600
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 2700 3000 3300 2400
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 3900 3600 4500 4200
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 3900 4200 4500 3600
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 3900 600 4500 2400
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 3900 2400 4500 600
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 4500 1800 5100 1200
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 4500 1200 5100 1800
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 5700 4200 6300 4800
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 5700 3600 6300 3000
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 5700 3000 6300 3600
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 5700 4800 6300 4200
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 5700 1200 6300 600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 5700 600 6300 1200
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 5700 1800 6300 2400
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 5700 2400 6300 1800
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 6900 3000 7500 4800
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 6900 4800 7500 3000
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 7500 4200 8100 3600
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 7500 3600 8100 4200
+4 1 0 40 -1 0 12 0.0000 4 135 210 4800 4125 C4\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 4800 3525 C4\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 6000 2350 C6\001
+4 1 0 40 -1 0 12 0.0000 4 135 255 6300 2275 -S6\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 6000 1750 C6\001
+4 1 0 40 -1 0 12 0.0000 4 135 195 6300 2050 S6\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 7200 2950 C7\001
+4 1 0 40 -1 0 12 0.0000 4 135 195 7500 3375 S7\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 7200 4750 C7\001
+4 1 0 40 -1 0 12 0.0000 4 135 255 7500 4575 -S7\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 7800 4150 C3\001
+4 1 0 40 -1 0 12 0.0000 4 135 255 8100 4075 -S3\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 7800 3550 C3\001
+4 1 0 40 -1 0 12 0.0000 4 135 195 8100 3850 S3\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 7500 1125 C4\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 7500 525 C4\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 8700 675 0\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 8700 1275 4\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 8700 1875 2\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 8700 2475 6\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 8700 3675 5\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 8700 4275 3\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 8700 4875 7\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 8700 3075 1\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 300 675 0\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 300 1275 1\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 300 1875 2\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 300 2475 3\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 300 3075 4\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 300 3675 5\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 300 4275 6\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 300 4875 7\001
diff --git a/doc/spec/hilbert-block.fig b/doc/spec/hilbert-block.fig
new file mode 100644
index 0000000..8316c5d
--- /dev/null
+++ b/doc/spec/hilbert-block.fig
@@ -0,0 +1,104 @@
+#FIG 3.2 Produced by xfig version 3.2.5-alpha4
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+6 675 645 3825 3795
+4 1 0 50 0 1 12 0.0000 0 150 105 900 3660 0\001
+4 1 0 50 0 1 12 0.0000 0 150 105 1800 3660 1\001
+4 1 0 50 0 1 12 0.0000 0 150 105 1800 2760 2\001
+4 1 0 50 0 1 12 0.0000 0 150 105 900 2760 3\001
+4 1 0 50 0 1 12 0.0000 0 150 105 900 1860 4\001
+4 1 0 50 0 1 12 0.0000 0 150 105 900 960 5\001
+4 1 0 50 0 1 12 0.0000 0 150 105 1800 960 6\001
+4 1 0 50 0 1 12 0.0000 0 150 105 1800 1860 7\001
+4 1 0 50 0 1 12 0.0000 0 150 105 2700 1860 8\001
+4 1 0 50 0 1 12 0.0000 0 150 105 2700 960 9\001
+4 1 0 50 0 1 12 0.0000 0 150 210 3600 960 10\001
+4 1 0 50 0 1 12 0.0000 0 150 210 3600 1860 11\001
+4 1 0 50 0 1 12 0.0000 0 150 210 3600 2760 12\001
+4 1 0 50 0 1 12 0.0000 0 150 210 2700 2760 13\001
+4 1 0 50 0 1 12 0.0000 0 150 210 2700 3660 14\001
+4 1 0 50 0 1 12 0.0000 0 150 210 3600 3660 15\001
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 1125 3600 1575 3600
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 1800 3375 1800 2925
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 1575 2700 1125 2700
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 900 2475 900 2025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 900 1575 900 1125
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 1125 900 1575 900
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 1800 1125 1800 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 2025 1800 2475 1800
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 2700 1575 2700 1125
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 2925 900 3375 900
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 3600 1125 3600 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 3600 2025 3600 2475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 3375 2700 2925 2700
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 2700 2925 2700 3375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 2925 3600 3375 3600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 450 450 1350 450 1350 1350 450 1350 450 450
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1350 450 2250 450 2250 1350 1350 1350 1350 450
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2250 450 3150 450 3150 1350 2250 1350 2250 450
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3150 450 4050 450 4050 1350 3150 1350 3150 450
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 450 1350 1350 1350 1350 2250 450 2250 450 1350
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1350 1350 2250 1350 2250 2250 1350 2250 1350 1350
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2250 1350 3150 1350 3150 2250 2250 2250 2250 1350
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3150 1350 4050 1350 4050 2250 3150 2250 3150 1350
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 450 2250 1350 2250 1350 3150 450 3150 450 2250
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1350 2250 2250 2250 2250 3150 1350 3150 1350 2250
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2250 2250 3150 2250 3150 3150 2250 3150 2250 2250
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3150 2250 4050 2250 4050 3150 3150 3150 3150 2250
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 450 3150 1350 3150 1350 4050 450 4050 450 3150
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1350 3150 2250 3150 2250 4050 1350 4050 1350 3150
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2250 3150 3150 3150 3150 4050 2250 4050 2250 3150
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3150 3150 4050 3150 4050 4050 3150 4050 3150 3150
diff --git a/doc/spec/hilbert-mb.fig b/doc/spec/hilbert-mb.fig
new file mode 100644
index 0000000..0ed12a7
--- /dev/null
+++ b/doc/spec/hilbert-mb.fig
@@ -0,0 +1,32 @@
+#FIG 3.2 Produced by xfig version 3.2.5-alpha4
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+6 810 810 1890 1890
+4 1 0 50 0 1 12 0.0000 0 150 105 900 1860 0\001
+4 1 0 50 0 1 12 0.0000 0 150 105 900 960 1\001
+4 1 0 50 0 1 12 0.0000 0 150 105 1800 960 2\001
+4 1 0 50 0 1 12 0.0000 0 150 105 1800 1860 3\001
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 900 1575 900 1125
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 1125 900 1575 900
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 1800 1125 1800 1575
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 450 450 1350 450 1350 1350 450 1350 450 450
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1350 450 2250 450 2250 1350 1350 1350 1350 450
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 450 1350 1350 1350 1350 2250 450 2250 450 1350
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1350 1350 2250 1350 2250 2250 1350 2250 1350 1350
diff --git a/doc/spec/idct.fig b/doc/spec/idct.fig
new file mode 100644
index 0000000..2d4388c
--- /dev/null
+++ b/doc/spec/idct.fig
@@ -0,0 +1,369 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter
+100.00
+Single
+-2
+1200 2
+6 3150 4650 3450 4950
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 3300 4800 75 75 3300 4800 3300 4725
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 3250 4800 3350 4800
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 3300 4850 3300 4750
+-6
+6 3150 4050 3450 4350
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 3300 4200 75 75 3300 4200 3300 4125
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 3250 4200 3350 4200
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 3300 4250 3300 4150
+-6
+6 2850 3900 3150 4200
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 3000 4050 75 75 3000 4050 3000 3975
+4 1 0 40 -1 0 12 0.0000 4 15 60 3000 4100 -\001
+-6
+6 3150 2850 3450 3150
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 3300 3000 75 75 3300 3000 3300 2925
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 3250 3000 3350 3000
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 3300 3050 3300 2950
+-6
+6 3150 3450 3450 3750
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 3300 3600 75 75 3300 3600 3300 3525
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 3250 3600 3350 3600
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 3300 3650 3300 3550
+-6
+6 2850 3600 3150 3900
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 3000 3750 75 75 3000 3750 3000 3675
+4 1 0 40 -1 0 12 0.0000 4 15 60 3000 3800 -\001
+-6
+6 1950 1050 2250 1350
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 2100 1200 75 75 2100 1200 2100 1125
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2050 1200 2150 1200
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2100 1250 2100 1150
+-6
+6 1950 450 2250 750
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 2100 600 75 75 2100 600 2100 525
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2050 600 2150 600
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2100 650 2100 550
+-6
+6 1950 2250 2250 2550
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 2100 2400 75 75 2100 2400 2100 2325
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2050 2400 2150 2400
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2100 2450 2100 2350
+-6
+6 1950 1650 2250 1950
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 2100 1800 75 75 2100 1800 2100 1725
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2050 1800 2150 1800
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2100 1850 2100 1750
+-6
+6 1650 1200 1950 1500
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 1800 1350 75 75 1800 1350 1800 1275
+4 1 0 40 -1 0 12 0.0000 4 15 60 1800 1400 -\001
+-6
+6 6150 4650 6450 4950
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6300 4800 75 75 6300 4800 6300 4725
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6250 4800 6350 4800
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6300 4850 6300 4750
+-6
+6 6150 450 6450 750
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6300 600 75 75 6300 600 6300 525
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6250 600 6350 600
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6300 650 6300 550
+-6
+6 6750 1050 7050 1350
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6900 1200 75 75 6900 1200 6900 1125
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6850 1200 6950 1200
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6900 1250 6900 1150
+-6
+6 7950 2850 8250 3150
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 8100 3000 75 75 8100 3000 8100 2925
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 8050 3000 8150 3000
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 8100 3050 8100 2950
+-6
+6 7950 2250 8250 2550
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 8100 2400 75 75 8100 2400 8100 2325
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 8050 2400 8150 2400
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 8100 2450 8100 2350
+-6
+6 7350 3450 7650 3750
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 7500 3600 75 75 7500 3600 7500 3525
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 7450 3600 7550 3600
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 7500 3650 7500 3550
+-6
+6 7350 1650 7650 1950
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 7500 1800 75 75 7500 1800 7500 1725
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 7450 1800 7550 1800
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 7500 1850 7500 1750
+-6
+6 6750 4050 7050 4350
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6900 4200 75 75 6900 4200 6900 4125
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6850 4200 6950 4200
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 6900 4250 6900 4150
+-6
+6 7050 3600 7350 3900
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 7200 3750 75 75 7200 3750 7200 3675
+4 1 0 40 -1 0 12 0.0000 4 15 60 7200 3800 -\001
+-6
+6 6450 4200 6750 4500
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6600 4350 75 75 6600 4350 6600 4275
+4 1 0 40 -1 0 12 0.0000 4 15 60 6600 4400 -\001
+-6
+6 5850 4800 6150 5100
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 6000 4950 75 75 6000 4950 6000 4875
+4 1 0 40 -1 0 12 0.0000 4 15 60 6000 5000 -\001
+-6
+6 7650 3000 7950 3300
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 7800 3150 75 75 7800 3150 7800 3075
+4 1 0 40 -1 0 12 0.0000 4 15 60 7800 3200 -\001
+-6
+6 4950 4050 5250 4350
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 5100 4200 75 75 5100 4200 5100 4125
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 5050 4200 5150 4200
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 5100 4250 5100 4150
+-6
+6 4950 3450 5250 3750
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 5100 3600 75 75 5100 3600 5100 3525
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 5050 3600 5150 3600
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 5100 3650 5100 3550
+-6
+6 4650 3300 4950 3600
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 4800 3450 75 75 4800 3450 4800 3375
+4 1 0 40 -1 0 12 0.0000 4 15 60 4800 3500 -\001
+-6
+6 4350 2250 4650 2550
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 4500 2400 75 75 4500 2400 4500 2325
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 4450 2400 4550 2400
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 4500 2450 4500 2350
+-6
+6 4350 450 4650 750
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 4500 600 75 75 4500 600 4500 525
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 4450 600 4550 600
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 4500 650 4500 550
+-6
+6 4050 2400 4350 2700
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 4200 2550 75 75 4200 2550 4200 2475
+4 1 0 40 -1 0 12 0.0000 4 15 60 4200 2600 -\001
+-6
+6 4950 1050 5250 1350
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 5100 1200 75 75 5100 1200 5100 1125
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 5050 1200 5150 1200
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 5100 1250 5100 1150
+-6
+6 4950 1650 5250 1950
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 5100 1800 75 75 5100 1800 5100 1725
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 5050 1800 5150 1800
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 5100 1850 5100 1750
+-6
+6 1950 4050 2250 4350
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 2100 4200 75 75 2100 4200 2100 4125
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2050 4200 2150 4200
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2100 4250 2100 4150
+-6
+6 1950 3450 2250 3750
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 2100 3600 75 75 2100 3600 2100 3525
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2050 3600 2150 3600
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 2100 3650 2100 3550
+-6
+6 1350 4650 1650 4950
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 1500 4800 75 75 1500 4800 1500 4725
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 1450 4800 1550 4800
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 1500 4850 1500 4750
+-6
+6 1350 2850 1650 3150
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 1500 3000 75 75 1500 3000 1500 2925
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 1450 3000 1550 3000
+2 1 0 1 0 7 40 -1 20 4.000 0 0 7 0 0 2
+ 1500 3050 1500 2950
+-6
+6 4650 1800 4950 2100
+1 3 0 1 0 7 40 -1 20 4.000 1 0.0000 4800 1950 75 75 4800 1950 4800 1875
+4 1 0 40 -1 0 12 0.0000 4 15 60 4800 2000 -\001
+-6
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 2700 4800 25 25 2700 4800 2700 4775
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 2700 4200 25 25 2700 4200 2700 4175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 2700 3600 25 25 2700 3600 2700 3575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 2700 3000 25 25 2700 3000 2700 2975
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 1500 1200 25 25 1500 1200 1500 1175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 1500 600 25 25 1500 600 1500 575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 1500 2400 25 25 1500 2400 1500 2375
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 1525 1800 25 25 1525 1800 1525 1775
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 3000 1200 25 25 3000 1200 3000 1175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 3000 600 25 25 3000 600 3000 575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 5700 4800 25 25 5700 4800 5700 4775
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 5700 600 25 25 5700 600 5700 575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 6300 1200 25 25 6300 1200 6300 1175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 7500 3000 25 25 7500 3000 7500 2975
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 7500 2400 25 25 7500 2400 7500 2375
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 6900 3600 25 25 6900 3600 6900 3575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 6300 4200 25 25 6300 4200 6300 4175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 4500 4200 25 25 4500 4200 4500 4175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 4500 3600 25 25 4500 3600 4500 3575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 4200 4200 25 25 4200 4200 4200 4175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 4200 3600 25 25 4200 3600 4200 3575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 6900 1800 25 25 6900 1800 6900 1775
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 3900 2400 25 25 3900 2400 3900 2375
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 3900 600 25 25 3900 600 3900 575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 1500 4200 25 25 1500 4200 1500 4175
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 1500 3600 25 25 1500 3600 1500 3575
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 900 4800 25 25 900 4800 900 4775
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 900 3000 25 25 900 3000 900 2975
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 4500 1800 25 25 4500 1800 4500 1775
+1 3 0 1 0 0 40 -1 20 4.000 1 0.0000 4500 1200 25 25 4500 1200 4500 1175
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 600 8400 600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 2400 8400 2400
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 3000 8400 3000
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 4800 8400 4800
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 1200 8400 1200
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 2700 4200 3300 4800
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 2700 3600 3300 3000
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 2700 3000 3300 3600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 3600 8400 3600
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 2700 4800 3300 4200
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 1800 8400 1800
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 4200 8400 4200
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 1500 1200 2100 600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 1500 600 2100 1200
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 1500 1800 2100 2400
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 1500 2400 2100 1800
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 5700 4800 6300 600
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 5700 600 6300 4800
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 6300 1200 6900 4275
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 6300 4200 6900 1200
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 6900 3600 7500 1800
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 7500 2400 8100 3000
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 6900 1800 7500 3600
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 7500 3000 8100 2400
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 4500 3600 5100 4200
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 4500 4200 5100 3600
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 3900 2400 4500 600
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 3900 600 4500 2400
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 4500 1800 5100 1200
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 4500 1200 5100 1800
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 1500 4200 2100 3600
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 1500 3600 2100 4200
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 900 4800 1500 3000
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 900 3000 1500 4800
+4 1 0 40 -1 0 12 0.0000 4 135 90 300 675 0\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 300 1275 4\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 300 1875 2\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 300 2475 6\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 300 3675 5\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 300 4275 3\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 300 4875 7\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 300 3075 1\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 1800 2350 C6\001
+4 1 0 40 -1 0 12 0.0000 4 135 195 2100 2275 S6\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 1800 1750 C6\001
+4 1 0 40 -1 0 12 0.0000 4 135 255 2100 2050 -S6\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 3000 1125 C4\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 3000 525 C4\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 8700 675 0\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 8700 1275 1\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 8700 1875 2\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 8700 2475 3\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 8700 3075 4\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 8700 3675 5\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 8700 4275 6\001
+4 1 0 40 -1 0 12 0.0000 4 135 90 8700 4875 7\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 4200 4125 C4\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 4200 3525 C4\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 1800 4150 C3\001
+4 1 0 40 -1 0 12 0.0000 4 135 195 2100 4075 S3\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 1800 3550 C3\001
+4 1 0 40 -1 0 12 0.0000 4 135 255 2100 3850 -S3\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 1200 2950 C7\001
+4 1 0 40 -1 0 12 0.0000 4 135 255 1500 3375 -S7\001
+4 1 0 40 -1 0 12 0.0000 4 135 210 1200 4750 C7\001
+4 1 0 40 -1 0 12 0.0000 4 135 195 1500 4575 S7\001
diff --git a/doc/spec/lflim.fig b/doc/spec/lflim.fig
new file mode 100644
index 0000000..c71dc7f
--- /dev/null
+++ b/doc/spec/lflim.fig
@@ -0,0 +1,23 @@
+#FIG 3.2 Produced by xfig version 3.2.5
+Landscape
+Center
+Inches
+Letter
+100.00
+Single
+-2
+1200 2
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 600 2400 5400 2400
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 3000 4200 3000 600
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 6
+ 600 2400 1200 2400 2100 3300 3900 1500 4800 2400 5400 2400
+4 1 0 50 -1 1 12 0.0000 0 195 615 1200 2325 (-2L,0)\001
+4 1 0 50 -1 1 12 0.0000 0 195 600 2100 3525 (-L,-L)\001
+4 0 0 50 -1 1 12 0.0000 0 150 360 3075 825 lflim\001
+4 1 0 50 -1 1 12 0.0000 0 195 480 3900 1425 (L,L)\001
+4 1 0 50 -1 1 12 0.0000 0 195 555 4800 2625 (2L,0)\001
+4 0 0 50 -1 1 12 0.0000 0 150 135 5250 2625 R\001
diff --git a/doc/spec/ltablex.sty b/doc/spec/ltablex.sty
new file mode 100644
index 0000000..31a0847
--- /dev/null
+++ b/doc/spec/ltablex.sty
@@ -0,0 +1,237 @@
+%%
+%% This is file ltablex.sty (v1.0, November 1995)
+%%
+%%
+%% Author: Anil K. Goel (akgoel@uwaterloo.ca)
+%%
+%%
+%% Copyright (C) QNX Software Systems Ltd. 1995
+%% All rights reserved.
+%% Please send any comments/suggetions to: latex@qnx.com
+%%
+%% This system is distributed in the hope that it will be useful
+%% to others, but WITHOUT ANY WARRANTY; without even the implied
+%% warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+%%
+%%
+%% The file modifies the tabularx environment to
+%% combine the features of the tabularx package
+%% (auto-sized columns in a fixed width table)
+%% with those of the longtable package
+%% (multi-page tables).
+%%
+%% The tables are typeset using the tabularx environment
+%% and the longtable environment is used internally to
+%% handle multi-page tables. The \setlongtables feature
+%% is used, and, therefore, the document should be
+%% run through latex twice.
+%%
+%% Another feature that has been added is to treat the X
+%% columns like 'l' columns if the table contents would allow
+%% that to happen without exceeding the specified width of
+%% the table. In other words, the specified width is
+%% treated as the maximum allowed and not the exact width
+%% of the table. This feature is the default but can be
+%% disabled (or enabled) with \keepXColumns (or \convertXColumns).
+%%
+%% Caveats:
+%% . The document needs to be latexed a couple times in general.
+%% . In general, it is necessary to remove the .aux file before
+%% the first latex run on the document.
+%% . The table should not be larger than TeX's memory capacity
+%%
+%%
+%% Here is a a simple usage example:
+%%
+%%
+%% \documentclass{article}
+%%
+%% \usepackage{ltablex}
+%%
+%% \textheight=4in
+%%
+%% \begin{document}
+%%
+%% % we want a table that is \textwidth long, has 4 columns, columns 1
+%% % and 3 are auto sized with the 3rd columns being 3 times wider than
+%% % the first column.
+%% %
+%%
+%%
+%% \begin{tabularx}{\linewidth}%
+%% {|>{\setlength{\hsize}{.5\hsize}\raggedright\arraybackslash}X| % col 1; auto-sized ragged right
+%% c| % col 2; default centered
+%% >{\setlength{\hsize}{1.5\hsize}\raggedleft\arraybackslash}X|% col 3; auto-sized ragged left
+%% l|} % col 4; default left-justified
+%%
+%% \caption*{The Table Caption}\\
+%% \hline
+%% F-Head1 & F-Head2 & F-Head3 & F-Head4\\
+%% \hline
+%% \hline
+%% \endfirsthead
+%% \hline
+%% Head1 & Head2 & Head3 & Head4\\
+%% \hline
+%% \hline
+%% \endhead
+%%
+%% \hline
+%% \hline
+%% Foot1 & Foot2 & Foot3 & Foot4\\
+%% \hline
+%% \endfoot
+%%
+%%
+%% \hline
+%% \hline
+%% L-Foot1 & L-Foot2 & L-Foot3 & L-Foot4\\
+%% \hline
+%% \endlastfoot
+%%
+%% This is a very long sentence not likely to fit&
+%% not too long&
+%% This is another very long sentence not likely to fit&
+%% not long\\
+%%
+%% \hline
+%% filler & filler & filler & filler\\
+%%
+%% \hline
+%% This is a very long sentence not likely to fit&
+%% not too long&
+%% This is another very long sentence not likely to fit&
+%% not long\\
+%%
+%% \hline
+%% This is a very long sentence not likely to fit&
+%% not too long&
+%% This is another very long sentence not likely to fit&
+%% not long\\
+%%
+%% \hline
+%% This is a very long sentence not likely to fit&
+%% not too long&
+%% This is another very long sentence not likely to fit&
+%% not long\\
+%%
+%% \end{tabularx}
+%%
+%% \begin{tabularx}{\linewidth}{|c|X|c|}
+%% \hline
+%% a &convert X to l & b\\
+%% \hline
+%% \end{tabularx}
+%%
+%% \keepXColumns
+%% \begin{tabularx}{\linewidth}{|c|X|c|}
+%% \hline
+%% a &retain X & b\\
+%% \hline
+%% \end{tabularx}
+%%
+%% \convertXColumns
+%% \begin{tabularx}{\linewidth}{|c|X|c|}
+%% \hline
+%% a &convert X to l & b\\
+%% \hline
+%% \end{tabularx}
+%%
+%%
+%% \end{document}
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{ltablex}[1995/11/06 v1.0 Modified tabularx]
+
+\RequirePackage{longtable}[1994/12/08]
+\RequirePackage{tabularx}[1994/02/03]
+
+\newif\ifTX@convertX@
+\TX@convertX@true
+
+\newcommand\keepXColumns{
+ \TX@convertX@false
+}
+
+\newcommand\convertXColumns{
+ \TX@convertX@true
+}
+
+\renewcommand\TX@endtabularx{%
+ \expandafter\TX@newcol\expandafter{\tabularxcolumn{\TX@col@width}}%
+ \let\verb\TX@verb
+ \def\@elt##1{\global\value{##1}\the\value{##1}\relax}%
+ \edef\TX@ckpt{\cl@@ckpt}%
+ \let\@elt\relax
+ \TX@old@table=\maxdimen
+ \TX@col@width=\TX@target
+ \global\TX@cols=\@ne
+ \TX@typeout@
+ {\@spaces Table Width\@spaces Column Width\@spaces X Columns}%
+
+ %
+ % define \endhead, etc. to be \\ so that in this part
+ % of the process they are just rows
+ %
+ \let\savecaption\caption
+ \def\caption{\\}
+ \let\saveendhead\endhead
+ \def\endhead{\\}
+ \let\saveendfirsthead\endfirsthead
+ \def\endfirsthead{\\}
+ \let\saveendfoot\endfoot
+ \def\endfoot{\\}
+ \let\saveendlastfoot\endlastfoot
+ \def\endlastfoot{\\}
+ %
+ %
+ \ifTX@convertX@
+ \TX@trial{\def\NC@rewrite@X{\NC@find l}}
+ \ifdim\wd\@tempboxa<\TX@target
+ \TX@newcol{l}
+ \else
+ \TX@convertX@false
+ \fi
+ \fi
+
+ \ifTX@convertX@
+ \relax
+ \else
+ \TX@trial{\def\NC@rewrite@X{%
+ \global\advance\TX@cols\@ne\NC@find p{\TX@col@width}}}%
+ \loop
+ \TX@arith
+ \ifTX@
+ \TX@trial{}%
+ \repeat
+ \fi
+ {\let\@footnotetext\TX@ftntext\let\@xfootnotenext\TX@xftntext
+ % we may as well set \LTchunksize to be \maxdimen as the whole
+ % thing is already in memory anyway so we may as well do it in one
+ % chunk. if it is too big for one chunk we are already dead..
+ \LTchunksize\maxdimen
+ %
+ % restore \endhead, etc.
+ %
+ \let\caption\savecaption
+ \let\endhead\saveendhead
+ \let\endfirsthead\saveendfirsthead
+ \let\endfoot\saveendfoot
+ \let\endlastfoot\saveendlastfoot
+ %
+ \expandafter\longtable
+ \the\toks@
+ \endlongtable
+ }%
+ \global\TX@ftn\expandafter{\expandafter}\the\TX@ftn
+ \ifnum0=`{\fi}%
+ \end{tabularx}
+}
+
+
+%
+% activate column width reading from the .aux file
+%
+
+
+\setlongtables
diff --git a/doc/spec/macroblock.fig b/doc/spec/macroblock.fig
new file mode 100644
index 0000000..3e20d93
--- /dev/null
+++ b/doc/spec/macroblock.fig
@@ -0,0 +1,37 @@
+#FIG 3.2 Produced by xfig version 3.2.5-alpha4
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 702 1540 4867 1540 4867 4828 702 4828 702 1540
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 710 4828 928 4828 928 4610 710 4610 710 4828
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 914 4610 1133 4610 1133 4391 914 4391 914 4610
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 723 4385 1133 4385 1133 4828 723 4828 723 4385
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 710 4610 928 4610 928 4391 710 4391 710 4610
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 914 4828 1133 4828 1133 4610 914 4610 914 4828
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 2068 857 6233 857 6233 4145 2068 4145 2068 857
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 1385 1198 5550 1198 5550 4487 1385 4487 1385 1198
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2089 3702 2499 3702 2499 4145 2089 4145 2089 3702
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1406 4043 1816 4043 1816 4487 1406 4487 1406 4043
+4 0 0 50 -1 0 5 0.0000 4 79 182 613 4943 (0,0)\001
+4 0 0 50 -1 0 5 0.0000 4 80 785 2055 833 Frame: chroma plane\001
+4 0 0 50 -1 0 5 0.0000 4 57 467 894 4009 Macroblock\001
+4 0 0 50 -1 0 5 0.0000 4 57 228 450 4521 Block\001
+4 0 0 50 -1 0 5 0.0000 4 57 228 450 4760 Block\001
+4 0 0 50 -1 0 5 0.0000 4 57 148 450 4863 8x8\001
+4 0 0 50 -1 0 5 0.0000 4 80 785 1235 1175 Frame: chroma plane\001
+4 0 0 50 -1 0 5 0.0000 4 80 694 621 1516 Frame: luma plane\001
diff --git a/doc/spec/pic-frame.fig b/doc/spec/pic-frame.fig
new file mode 100644
index 0000000..d99ec7e
--- /dev/null
+++ b/doc/spec/pic-frame.fig
@@ -0,0 +1,75 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+0 32 #7f7f7f
+6 250 236 5737 4724
+6 659 4520 1068 4724
+4 1 0 50 0 0 7 0.0000 0 75 450 864 4724 X Offset\001
+4 1 0 50 0 0 7 0.0000 0 90 375 864 4596 Picture\001
+-6
+6 250 3880 454 4290
+4 1 0 50 0 0 7 1.5708 0 90 375 327 4086 Picture\001
+4 1 0 50 0 0 7 1.5708 0 75 450 454 4086 Y Offset\001
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 608 301 608 454
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 5466 301 5466 454
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2
+ 1 1 1.00 34.09 68.18
+ 1 1 1.00 34.09 68.18
+ 608 378 5466 378
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 608 4392 608 4546
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 1119 4392 1119 4546
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2
+ 1 1 1.00 34.09 68.18
+ 1 1 1.00 34.09 68.18
+ 608 4468 1119 4468
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2
+ 1 1 1.00 34.09 68.18
+ 1 1 1.00 34.09 68.18
+ 1119 4468 5211 4468
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 5211 4392 5211 4546
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 404 4340 557 4340
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 404 3830 557 3830
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 404 761 557 761
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2
+ 1 1 1.00 34.09 68.18
+ 1 1 1.00 34.09 68.18
+ 480 3830 480 761
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 5517 4340 5671 4340
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 5517 506 5671 506
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2
+ 1 1 1.00 34.09 68.18
+ 1 1 1.00 34.09 68.18
+ 5594 4340 5594 506
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2
+ 1 1 1.00 34.09 68.18
+ 1 1 1.00 34.09 68.18
+ 480 4340 480 3830
+2 2 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+ 608 506 5466 506 5466 4340 608 4340 608 506
+2 2 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+ 1119 761 5211 761 5211 3830 1119 3830 1119 761
+4 1 0 50 0 0 7 0.0000 0 90 720 3165 4596 Picture Width\001
+4 1 0 50 0 0 7 1.5708 0 105 690 5722 1912 Frame Height\001
+4 1 0 50 0 0 7 0.0000 0 90 660 2782 326 Frame Width\001
+4 1 0 50 0 0 7 1.5708 0 105 750 454 2295 Picture Height\001
+4 1 0 50 0 0 7 0.0000 0 75 315 2782 685 Frame\001
+4 1 0 50 0 0 7 0.0000 0 90 375 3165 2295 Picture\001
+4 0 0 50 0 0 7 0.0000 0 105 240 659 4290 (0,0)\001
+-6
diff --git a/doc/spec/pic_even.fig b/doc/spec/pic_even.fig
new file mode 100644
index 0000000..041a43a
--- /dev/null
+++ b/doc/spec/pic_even.fig
@@ -0,0 +1,102 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+6 724 2025 945 2475
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 732 2244 945 2244 945 2025 732 2025 732 2244
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 732 2475 945 2475 945 2256 732 2256 732 2475
+-6
+6 1665 2070 1888 2475
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1673 2267 1888 2267 1888 2070 1673 2070 1673 2267
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1673 2475 1888 2475 1888 2278 1673 2278 1673 2475
+-6
+6 724 900 945 1350
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 732 1119 945 1119 945 900 732 900 732 1119
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 732 1350 945 1350 945 1131 732 1131 732 1350
+-6
+6 6300 2070 6795 2520
+6 6300 2070 6570 2295
+6 6300 2070 6570 2295
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 6335 2295 6553 2295 6553 2076 6335 2076 6335 2295
+-6
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 6335 2520 6553 2520 6553 2301 6335 2301 6335 2520
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 6560 2295 6778 2295 6778 2076 6560 2076 6560 2295
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 6560 2520 6778 2520 6778 2301 6560 2301 6560 2520
+-6
+6 4455 2070 4950 2520
+6 4455 2070 4725 2295
+6 4455 2070 4725 2295
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4490 2295 4708 2295 4708 2076 4490 2076 4490 2295
+-6
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4490 2520 4708 2520 4708 2301 4490 2301 4490 2520
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4715 2295 4933 2295 4933 2076 4715 2076 4715 2295
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4715 2520 4933 2520 4933 2301 4715 2301 4715 2520
+-6
+6 4455 945 4950 1395
+6 4455 945 4725 1170
+6 4455 945 4725 1170
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4490 1170 4708 1170 4708 951 4490 951 4490 1170
+-6
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4490 1395 4708 1395 4708 1176 4490 1176 4490 1395
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4715 1170 4933 1170 4933 951 4715 951 4715 1170
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4715 1395 4933 1395 4933 1176 4715 1176 4715 1395
+-6
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 2249 1800 3736 1800 3736 2947 2249 2947 2249 1800
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2385 1935 3600 1935 3600 2745 2385 2745 2385 1935
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2397 2745 2610 2745 2610 2526 2397 2526 2397 2745
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3375 2745 3590 2745 3590 2548 3375 2548 3375 2745
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 724 900 1888 900 1888 2475 724 2475 724 900
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 473 675 2003 675 2003 2925 473 2925 473 675
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2397 2154 2610 2154 2610 1935 2397 1935 2397 2154
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4500 945 6795 945 6795 2520 4500 2520 4500 945
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4500 945 6795 945 6795 2520 4500 2520 4500 945
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 4005 720 7020 720 7020 2970 4005 2970 4005 720
+4 0 0 50 -1 0 24 0.0000 4 30 270 2835 2655 ...\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 1080 2295 ...\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 765 1665 ...\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 2430 2385 ...\001
+4 0 0 50 -1 0 7 0.0000 4 90 210 450 3060 (0,0)\001
+4 0 0 50 -1 0 7 0.0000 4 90 210 2205 3060 (0,0)\001
+4 0 0 50 -1 0 7 0.0000 4 90 210 3943 3098 (0,0)\001
+4 0 0 50 -1 0 7 0.0000 4 75 285 4545 2655 Pixels\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 5220 2295 ...\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 4680 1755 ...\001
+4 0 0 50 -1 0 9 0.0000 4 105 1335 2205 1665 Frame: chroma (4:2:0 case)\001
+4 0 0 50 -1 0 9 0.0000 4 105 1335 450 585 Frame: chroma (4:2:2 case)\001
+4 0 0 50 -1 0 9 0.0000 4 75 615 4005 630 Frame: luma\001
diff --git a/doc/spec/pic_even_odd.fig b/doc/spec/pic_even_odd.fig
new file mode 100644
index 0000000..4b513b7
--- /dev/null
+++ b/doc/spec/pic_even_odd.fig
@@ -0,0 +1,88 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+6 724 2025 945 2475
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 732 2244 945 2244 945 2025 732 2025 732 2244
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 732 2475 945 2475 945 2256 732 2256 732 2475
+-6
+6 1665 2070 1888 2475
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1673 2267 1888 2267 1888 2070 1673 2070 1673 2267
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1673 2475 1888 2475 1888 2278 1673 2278 1673 2475
+-6
+6 4455 2070 4950 2520
+6 4455 2070 4725 2295
+6 4455 2070 4725 2295
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4490 2295 4708 2295 4708 2076 4490 2076 4490 2295
+-6
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4490 2520 4708 2520 4708 2301 4490 2301 4490 2520
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4715 2295 4933 2295 4933 2076 4715 2076 4715 2295
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4715 2520 4933 2520 4933 2301 4715 2301 4715 2520
+-6
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 2249 1800 3736 1800 3736 2947 2249 2947 2249 1800
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2385 1935 3600 1935 3600 2745 2385 2745 2385 1935
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2397 2745 2610 2745 2610 2526 2397 2526 2397 2745
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3375 2745 3590 2745 3590 2548 3375 2548 3375 2745
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 724 900 1888 900 1888 2475 724 2475 724 900
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 473 675 2003 675 2003 2925 473 2925 473 675
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2397 2154 2610 2154 2610 1935 2397 1935 2397 2154
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4500 945 6795 945 6795 2520 4500 2520 4500 945
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 4005 720 7020 720 7020 2970 4005 2970 4005 720
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4500 945 6795 945 6795 2520 4500 2520 4500 945
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4490 1170 4708 1170 4708 951 4490 951 4490 1170
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4715 1170 4933 1170 4933 951 4715 951 4715 1170
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 6560 2520 6778 2520 6778 2301 6560 2301 6560 2520
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 6560 2295 6778 2295 6778 2076 6560 2076 6560 2295
+2 2 0 1 0 11 50 -1 43 0.000 0 0 -1 0 0 5
+ 4715 945 4933 945 4933 726 4715 726 4715 945
+2 2 0 1 0 11 50 -1 43 0.000 0 0 -1 0 0 5
+ 4490 945 4708 945 4708 726 4490 726 4490 945
+2 2 0 1 0 11 50 -1 43 0.000 0 0 -1 0 0 5
+ 6785 2295 7003 2295 7003 2076 6785 2076 6785 2295
+2 2 0 1 0 11 50 -1 43 0.000 0 0 -1 0 0 5
+ 6785 2520 7003 2520 7003 2301 6785 2301 6785 2520
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 732 1125 945 1125 945 906 732 906 732 1125
+2 2 0 1 0 11 50 -1 43 0.000 0 0 -1 0 0 5
+ 732 894 945 894 945 675 732 675 732 894
+4 0 0 50 -1 0 24 0.0000 4 30 270 2835 2655 ...\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 1080 2295 ...\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 765 1665 ...\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 2430 2385 ...\001
+4 0 0 50 -1 0 7 0.0000 4 90 210 450 3060 (0,0)\001
+4 0 0 50 -1 0 7 0.0000 4 90 210 2205 3060 (0,0)\001
+4 0 0 50 -1 0 7 0.0000 4 90 210 3943 3098 (0,0)\001
+4 0 0 50 -1 0 7 0.0000 4 75 285 4545 2655 Pixels\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 5220 2295 ...\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 4680 1755 ...\001
+4 0 0 50 -1 0 9 0.0000 4 105 1335 2205 1665 Frame: chroma (4:2:0 case)\001
+4 0 0 50 -1 0 9 0.0000 4 105 1335 450 585 Frame: chroma (4:2:2 case)\001
+4 0 0 50 -1 0 9 0.0000 4 75 615 4005 630 Frame: luma\001
diff --git a/doc/spec/pic_odd.fig b/doc/spec/pic_odd.fig
new file mode 100644
index 0000000..da12601
--- /dev/null
+++ b/doc/spec/pic_odd.fig
@@ -0,0 +1,90 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+6 724 2025 945 2475
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 732 2244 945 2244 945 2025 732 2025 732 2244
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 732 2475 945 2475 945 2256 732 2256 732 2475
+-6
+6 1665 2070 1888 2475
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1673 2267 1888 2267 1888 2070 1673 2070 1673 2267
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1673 2475 1888 2475 1888 2278 1673 2278 1673 2475
+-6
+6 724 900 945 1350
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 732 1119 945 1119 945 900 732 900 732 1119
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 732 1350 945 1350 945 1131 732 1131 732 1350
+-6
+6 6300 2070 6795 2520
+6 6300 2070 6570 2295
+6 6300 2070 6570 2295
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 6335 2295 6553 2295 6553 2076 6335 2076 6335 2295
+-6
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 6335 2520 6553 2520 6553 2301 6335 2301 6335 2520
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 6560 2295 6778 2295 6778 2076 6560 2076 6560 2295
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 6560 2520 6778 2520 6778 2301 6560 2301 6560 2520
+-6
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 2249 1800 3736 1800 3736 2947 2249 2947 2249 1800
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2385 1935 3600 1935 3600 2745 2385 2745 2385 1935
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2397 2745 2610 2745 2610 2526 2397 2526 2397 2745
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3375 2745 3590 2745 3590 2548 3375 2548 3375 2745
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 724 900 1888 900 1888 2475 724 2475 724 900
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 473 675 2003 675 2003 2925 473 2925 473 675
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2397 2154 2610 2154 2610 1935 2397 1935 2397 2154
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4500 945 6795 945 6795 2520 4500 2520 4500 945
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4500 945 6795 945 6795 2520 4500 2520 4500 945
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 4005 720 7020 720 7020 2970 4005 2970 4005 720
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4490 2295 4708 2295 4708 2076 4490 2076 4490 2295
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4490 2520 4708 2520 4708 2301 4490 2301 4490 2520
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4490 1170 4708 1170 4708 951 4490 951 4490 1170
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4490 1395 4708 1395 4708 1176 4490 1176 4490 1395
+2 2 0 1 0 11 50 -1 43 0.000 0 0 -1 0 0 5
+ 4265 1170 4483 1170 4483 951 4265 951 4265 1170
+2 2 0 1 0 11 50 -1 43 0.000 0 0 -1 0 0 5
+ 4265 1395 4483 1395 4483 1176 4265 1176 4265 1395
+2 2 0 1 0 11 50 -1 43 0.000 0 0 -1 0 0 5
+ 4265 2295 4483 2295 4483 2076 4265 2076 4265 2295
+2 2 0 1 0 11 50 -1 43 0.000 0 0 -1 0 0 5
+ 4265 2520 4483 2520 4483 2301 4265 2301 4265 2520
+4 0 0 50 -1 0 24 0.0000 4 30 270 2835 2655 ...\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 1080 2295 ...\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 765 1665 ...\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 2430 2385 ...\001
+4 0 0 50 -1 0 7 0.0000 4 90 210 450 3060 (0,0)\001
+4 0 0 50 -1 0 7 0.0000 4 90 210 2205 3060 (0,0)\001
+4 0 0 50 -1 0 7 0.0000 4 90 210 3943 3098 (0,0)\001
+4 0 0 50 -1 0 7 0.0000 4 75 285 4545 2655 Pixels\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 5220 2295 ...\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 4680 1755 ...\001
+4 0 0 50 -1 0 9 0.0000 4 105 1335 2205 1665 Frame: chroma (4:2:0 case)\001
+4 0 0 50 -1 0 9 0.0000 4 105 1335 450 585 Frame: chroma (4:2:2 case)\001
+4 0 0 50 -1 0 9 0.0000 4 75 615 4005 630 Frame: luma\001
diff --git a/doc/spec/pic_odd_even.fig b/doc/spec/pic_odd_even.fig
new file mode 100644
index 0000000..f131295
--- /dev/null
+++ b/doc/spec/pic_odd_even.fig
@@ -0,0 +1,84 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+6 724 2025 945 2475
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 732 2244 945 2244 945 2025 732 2025 732 2244
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 732 2475 945 2475 945 2256 732 2256 732 2475
+-6
+6 1665 2070 1888 2475
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1673 2267 1888 2267 1888 2070 1673 2070 1673 2267
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1673 2475 1888 2475 1888 2278 1673 2278 1673 2475
+-6
+6 724 900 945 1350
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 732 1119 945 1119 945 900 732 900 732 1119
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 732 1350 945 1350 945 1131 732 1131 732 1350
+-6
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 2249 1800 3736 1800 3736 2947 2249 2947 2249 1800
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2385 1935 3600 1935 3600 2745 2385 2745 2385 1935
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2397 2745 2610 2745 2610 2526 2397 2526 2397 2745
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3375 2745 3590 2745 3590 2548 3375 2548 3375 2745
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 724 900 1888 900 1888 2475 724 2475 724 900
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 473 675 2003 675 2003 2925 473 2925 473 675
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2397 2154 2610 2154 2610 1935 2397 1935 2397 2154
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4500 945 6795 945 6795 2520 4500 2520 4500 945
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 4005 720 7020 720 7020 2970 4005 2970 4005 720
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4490 2295 4708 2295 4708 2076 4490 2076 4490 2295
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4490 2520 4708 2520 4708 2301 4490 2301 4490 2520
+2 2 0 1 0 11 50 -1 43 0.000 0 0 -1 0 0 5
+ 4265 2295 4483 2295 4483 2076 4265 2076 4265 2295
+2 2 0 1 0 11 50 -1 43 0.000 0 0 -1 0 0 5
+ 4265 2520 4483 2520 4483 2301 4265 2301 4265 2520
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4500 945 6795 945 6795 2520 4500 2520 4500 945
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 6560 2520 6778 2520 6778 2301 6560 2301 6560 2520
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 6560 2295 6778 2295 6778 2076 6560 2076 6560 2295
+2 2 0 1 0 11 50 -1 43 0.000 0 0 -1 0 0 5
+ 6785 2295 7003 2295 7003 2076 6785 2076 6785 2295
+2 2 0 1 0 11 50 -1 43 0.000 0 0 -1 0 0 5
+ 6785 2520 7003 2520 7003 2301 6785 2301 6785 2520
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4490 1170 4708 1170 4708 951 4490 951 4490 1170
+2 2 0 1 0 11 50 -1 43 0.000 0 0 -1 0 0 5
+ 4265 945 4483 945 4483 726 4265 726 4265 945
+2 2 0 1 0 11 50 -1 43 0.000 0 0 -1 0 0 5
+ 4265 1170 4483 1170 4483 951 4265 951 4265 1170
+2 2 0 1 0 11 50 -1 43 0.000 0 0 -1 0 0 5
+ 4490 945 4708 945 4708 726 4490 726 4490 945
+4 0 0 50 -1 0 24 0.0000 4 30 270 2835 2655 ...\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 1080 2295 ...\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 765 1665 ...\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 2430 2385 ...\001
+4 0 0 50 -1 0 7 0.0000 4 90 210 450 3060 (0,0)\001
+4 0 0 50 -1 0 7 0.0000 4 90 210 2205 3060 (0,0)\001
+4 0 0 50 -1 0 7 0.0000 4 90 210 3943 3098 (0,0)\001
+4 0 0 50 -1 0 7 0.0000 4 75 285 4545 2655 Pixels\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 5220 2295 ...\001
+4 0 0 50 -1 0 24 0.0000 4 30 270 4680 1755 ...\001
+4 0 0 50 -1 0 9 0.0000 4 105 1335 2205 1665 Frame: chroma (4:2:0 case)\001
+4 0 0 50 -1 0 9 0.0000 4 105 1335 450 585 Frame: chroma (4:2:2 case)\001
+4 0 0 50 -1 0 9 0.0000 4 75 615 4005 630 Frame: luma\001
diff --git a/doc/spec/pixel420.fig b/doc/spec/pixel420.fig
new file mode 100644
index 0000000..56e9191
--- /dev/null
+++ b/doc/spec/pixel420.fig
@@ -0,0 +1,56 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+6 675 4365 1170 4815
+6 675 4365 945 4590
+6 675 4365 945 4590
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 710 4590 928 4590 928 4371 710 4371 710 4590
+-6
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 710 4815 928 4815 928 4596 710 4596 710 4815
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 935 4590 1153 4590 1153 4371 935 4371 935 4590
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 935 4815 1153 4815 1153 4596 935 4596 935 4815
+-6
+6 1125 4365 1646 4815
+6 1125 4365 1420 4590
+6 1125 4365 1420 4590
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1163 4590 1401 4590 1401 4371 1163 4371 1163 4590
+-6
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1163 4815 1401 4815 1401 4596 1163 4596 1163 4815
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1409 4590 1646 4590 1646 4371 1409 4371 1409 4590
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1409 4815 1646 4815 1646 4596 1409 4596 1409 4815
+-6
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 1665 1350 4788 1350 4788 4153 1665 4153 1665 1350
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 2700 900 5823 900 5823 3703 2700 3703 2700 900
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 702 2025 3825 2025 3825 4828 702 4828 702 2025
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1800 4005 2018 4005 2018 3786 1800 3786 1800 4005
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2160 4005 2378 4005 2378 3786 2160 3786 2160 4005
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2835 3555 3053 3555 3053 3336 2835 3336 2835 3555
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3195 3555 3413 3555 3413 3336 3195 3336 3195 3555
+4 0 0 50 -1 0 8 0.0000 4 105 1215 1485 1305 Frame: chroma plane Cb\001
+4 0 0 50 -1 0 8 0.0000 4 105 1200 2565 855 Frame: chroma plane Cr\001
+4 0 0 50 -1 0 8 0.0000 4 105 1035 540 1980 Frame: luma planeY'\001
+4 0 0 50 -1 0 7 0.0000 4 75 285 765 4320 Pixels\001
+4 0 0 50 -1 0 7 0.0000 4 90 210 613 4943 (0,0)\001
diff --git a/doc/spec/pixel422.fig b/doc/spec/pixel422.fig
new file mode 100644
index 0000000..dbe008a
--- /dev/null
+++ b/doc/spec/pixel422.fig
@@ -0,0 +1,70 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+6 675 4365 1170 4815
+6 675 4365 945 4590
+6 675 4365 945 4590
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 710 4590 928 4590 928 4371 710 4371 710 4590
+-6
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 710 4815 928 4815 928 4596 710 4596 710 4815
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 935 4590 1153 4590 1153 4371 935 4371 935 4590
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 935 4815 1153 4815 1153 4596 935 4596 935 4815
+-6
+6 1125 4365 1646 4815
+6 1125 4365 1420 4590
+6 1125 4365 1420 4590
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1163 4590 1401 4590 1401 4371 1163 4371 1163 4590
+-6
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1163 4815 1401 4815 1401 4596 1163 4596 1163 4815
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1409 4590 1646 4590 1646 4371 1409 4371 1409 4590
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1409 4815 1646 4815 1646 4596 1409 4596 1409 4815
+-6
+6 1800 3690 2025 4140
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1807 3909 2025 3909 2025 3690 1807 3690 1807 3909
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1807 4140 2025 4140 2025 3921 1807 3921 1807 4140
+-6
+6 2160 3690 2385 4140
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2167 3909 2385 3909 2385 3690 2167 3690 2167 3909
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2167 4140 2385 4140 2385 3921 2167 3921 2167 4140
+-6
+6 3195 3240 3420 3690
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3202 3459 3420 3459 3420 3240 3202 3240 3202 3459
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3202 3690 3420 3690 3420 3471 3202 3471 3202 3690
+-6
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 1665 1350 4788 1350 4788 4153 1665 4153 1665 1350
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2842 3459 3060 3459 3060 3240 2842 3240 2842 3459
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 2700 900 5823 900 5823 3703 2700 3703 2700 900
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2842 3690 3060 3690 3060 3471 2842 3471 2842 3690
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 702 2025 3825 2025 3825 4828 702 4828 702 2025
+4 0 0 50 -1 0 8 0.0000 4 105 1215 1485 1305 Frame: chroma plane Cb\001
+4 0 0 50 -1 0 8 0.0000 4 105 1200 2565 855 Frame: chroma plane Cr\001
+4 0 0 50 -1 0 8 0.0000 4 105 1035 540 1980 Frame: luma planeY'\001
+4 0 0 50 -1 0 7 0.0000 4 75 285 765 4320 Pixels\001
+4 0 0 50 -1 0 7 0.0000 4 90 210 613 4943 (0,0)\001
diff --git a/doc/spec/pixel444.fig b/doc/spec/pixel444.fig
new file mode 100644
index 0000000..75655e8
--- /dev/null
+++ b/doc/spec/pixel444.fig
@@ -0,0 +1,44 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 702 2025 3825 2025 3825 4828 702 4828 702 2025
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 1665 1350 4788 1350 4788 4153 1665 4153 1665 1350
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 2700 900 5823 900 5823 3703 2700 3703 2700 900
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 710 4590 928 4590 928 4371 710 4371 710 4590
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 935 4590 1153 4590 1153 4371 935 4371 935 4590
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 935 4815 1153 4815 1153 4596 935 4596 935 4815
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 710 4815 928 4815 928 4596 710 4596 710 4815
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1700 3915 1918 3915 1918 3696 1700 3696 1700 3915
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1925 3915 2143 3915 2143 3696 1925 3696 1925 3915
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1925 4140 2143 4140 2143 3921 1925 3921 1925 4140
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1700 4140 1918 4140 1918 3921 1700 3921 1700 4140
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2735 3465 2953 3465 2953 3246 2735 3246 2735 3465
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2960 3465 3178 3465 3178 3246 2960 3246 2960 3465
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2960 3690 3178 3690 3178 3471 2960 3471 2960 3690
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2735 3690 2953 3690 2953 3471 2735 3471 2735 3690
+4 0 0 50 -1 0 8 0.0000 4 105 1215 1485 1305 Frame: chroma plane Cb\001
+4 0 0 50 -1 0 8 0.0000 4 105 1200 2565 855 Frame: chroma plane Cr\001
+4 0 0 50 -1 0 8 0.0000 4 105 1035 540 1980 Frame: luma planeY'\001
+4 0 0 50 -1 0 7 0.0000 4 75 285 765 4320 Pixels\001
+4 0 0 50 -1 0 7 0.0000 4 90 210 613 4943 (0,0)\001
diff --git a/doc/spec/raster-block.fig b/doc/spec/raster-block.fig
new file mode 100644
index 0000000..cebaf02
--- /dev/null
+++ b/doc/spec/raster-block.fig
@@ -0,0 +1,91 @@
+#FIG 3.2 Produced by xfig version 3.2.5-alpha4
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 1125 900 1575 900
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 450 450 1350 450 1350 1350 450 1350 450 450
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1350 450 2250 450 2250 1350 1350 1350 1350 450
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2250 450 3150 450 3150 1350 2250 1350 2250 450
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3150 450 4050 450 4050 1350 3150 1350 3150 450
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 450 1350 1350 1350 1350 2250 450 2250 450 1350
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1350 1350 2250 1350 2250 2250 1350 2250 1350 1350
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2250 1350 3150 1350 3150 2250 2250 2250 2250 1350
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3150 1350 4050 1350 4050 2250 3150 2250 3150 1350
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 450 2250 1350 2250 1350 3150 450 3150 450 2250
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1350 2250 2250 2250 2250 3150 1350 3150 1350 2250
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2250 2250 3150 2250 3150 3150 2250 3150 2250 2250
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3150 2250 4050 2250 4050 3150 3150 3150 3150 2250
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 450 3150 1350 3150 1350 4050 450 4050 450 3150
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1350 3150 2250 3150 2250 4050 1350 4050 1350 3150
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2250 3150 3150 3150 3150 4050 2250 4050 2250 3150
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 3150 3150 4050 3150 4050 4050 3150 4050 3150 3150
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4050 450 4950 450 4950 1350 4050 1350 4050 450
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4050 1350 4950 1350 4950 2250 4050 2250 4050 1350
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4050 2250 4950 2250 4950 3150 4050 3150 4050 2250
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4050 3150 4950 3150 4950 4050 4050 4050 4050 3150
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4950 3150 5850 3150 5850 4050 4950 4050 4950 3150
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4950 2250 5850 2250 5850 3150 4950 3150 4950 2250
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4950 1350 5850 1350 5850 2250 4950 2250 4950 1350
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4950 450 5850 450 5850 1350 4950 1350 4950 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 1125 3600 1575 3600
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 2925 3600 3375 3600
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 2025 3600 2475 3600
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 1125 2655 1575 2655
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 4770 3600 5220 3600
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 5445 3510 900 2880
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 5400 1800 855 1170
+4 1 0 50 0 1 12 0.0000 0 150 105 900 3660 0\001
+4 1 0 50 0 1 12 0.0000 0 150 105 1800 3660 1\001
+4 1 0 50 0 1 12 0.0000 0 150 105 2700 3660 2\001
+4 0 0 50 -1 0 20 0.0000 4 30 225 3555 3645 ...\001
+4 0 0 50 -1 0 20 0.0000 4 30 225 945 1845 ...\001
+4 0 0 50 -1 0 12 0.0000 4 150 330 5310 3645 m-1\001
+4 0 0 50 -1 0 12 0.0000 4 150 435 5175 2655 2m-1\001
+4 1 0 50 0 1 12 0.0000 0 105 165 900 2760 m\001
+4 1 0 50 0 1 12 0.0000 0 195 690 855 1035 (n-1)*m\001
+4 0 0 50 -1 0 12 0.0000 4 150 540 5085 900 n*m-1\001
diff --git a/doc/spec/reference-frames.fig b/doc/spec/reference-frames.fig
new file mode 100644
index 0000000..8026e56
--- /dev/null
+++ b/doc/spec/reference-frames.fig
@@ -0,0 +1,46 @@
+#FIG 3.2 Produced by xfig version 3.2.5-alpha4
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+2 2 1 2 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
+ 1980 450 2430 450 2430 900 1980 900 1980 450
+2 2 1 2 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
+ 2520 450 2970 450 2970 900 2520 900 2520 450
+2 2 1 2 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
+ 4140 450 4590 450 4590 900 4140 900 4140 450
+2 2 1 2 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
+ 1440 450 1890 450 1890 900 1440 900 1440 450
+2 2 1 2 0 7 50 -1 15 4.000 0 0 -1 0 0 5
+ 3600 450 4050 450 4050 900 3600 900 3600 450
+2 2 1 2 0 7 50 -1 41 4.000 0 0 -1 0 0 5
+ 3060 450 3510 450 3510 900 3060 900 3060 450
+2 2 0 2 0 7 50 -1 41 0.000 0 0 -1 0 0 5
+ 900 450 1350 450 1350 900 900 900 900 450
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+ 0 0 1.00 60.00 120.00
+ 3780 990 3780 1395
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+ 0 0 1.00 60.00 120.00
+ 3240 990 3240 1395
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+ 0 0 1.00 60.00 120.00
+ 1125 990 1125 1395
+4 0 0 50 -1 0 20 0.0000 4 30 225 4770 675 ...\001
+4 0 0 50 -1 0 12 0.0000 4 150 420 900 405 Intra\001
+4 0 0 50 -1 0 12 0.0000 4 150 420 1440 405 Inter\001
+4 0 0 50 -1 0 12 0.0000 4 150 420 1980 405 Inter\001
+4 0 0 50 -1 0 12 0.0000 4 150 420 2520 405 Inter\001
+4 0 0 50 -1 0 12 0.0000 4 150 420 3060 405 Inter\001
+4 0 0 50 -1 0 12 0.0000 4 150 420 3600 405 Inter\001
+4 0 0 50 -1 0 12 0.0000 4 150 420 4140 405 Inter\001
+4 0 0 50 -1 0 12 0.0000 4 120 630 3690 1575 current\001
+4 0 0 50 -1 0 12 0.0000 4 150 840 2745 1575 reference\001
+4 0 0 50 -1 0 12 0.0000 4 150 510 2925 1755 frame\001
+4 0 0 50 -1 0 12 0.0000 4 150 510 3690 1755 frame\001
+4 0 0 50 -1 0 12 0.0000 4 195 570 855 1575 golden\001
+4 0 0 50 -1 0 12 0.0000 4 150 510 900 1800 frame\001
diff --git a/doc/spec/spec.bib b/doc/spec/spec.bib
new file mode 100644
index 0000000..a1cad1a
--- /dev/null
+++ b/doc/spec/spec.bib
@@ -0,0 +1,120 @@
+@MANUAL{rfc2044,
+ author="Francois Yergeau",
+ title="{RFC} 2044: {UTF}-8, a transformation format of Unicode and {ISO}
+ 10646",
+ month=oct,
+ year=1996,
+ note="\url{http://www.ietf.org/rfc/rfc2044.txt}"
+}
+
+@ARTICLE{CSF77,
+ author="Wen-Hsiung Chen and C. Harrison Smith and S. C. Fralick",
+ title="A Fast Computational Algorithm for the Discrete Cosine Transform",
+ journal="{IEEE} Transactions on Communications",
+ volume="COM-25",
+ number=9,
+ pages="1004--1011",
+ month=sep,
+ year=1977
+}
+
+@MISC{Mel04,
+ author="Mike Melanson",
+ title="{VP3} Bitstream Format and Decoding Process",
+ howpublished="\url{http://www.multimedia.cx/vp3-format.txt}",
+ month=mar,
+ year=2004
+}
+
+@MISC{Poyn97,
+ author="Charles Poynton",
+ title="Frequently-Asked Questions about Gamma",
+ howpublished="\url{http://www.poynton.com/GammaFAQ.html}",
+ month=feb,
+ year=1997
+}
+
+@MANUAL{rec470,
+ key="ITU470",
+ title="Reccomendation {ITU-R} {BT}.470-6: Conventional Television Systems",
+ edition="1970, revised",
+ organization="International Telecommunications Union",
+ address="1211 Geneva 20, Switzerland",
+ year=1998
+}
+
+@MANUAL{rec601,
+ key="ITU601",
+ title="Reccomendation {ITU-R} {BT}.601-5: Studio Encoding Parameters of
+ Digital Television for Standard 4:3 and Wide-Screen 16:9 Aspect Ratios",
+ edition="1982, revised",
+ organization="International Telecommunications Union",
+ address="1211 Geneva 20, Switzerland",
+ year=1995
+}
+
+@MANUAL{rec709,
+ key="ITU709",
+ title="Recommendation {ITU-R} {BT}.709-5: Parameter values for the {HDTV}
+ standards for production and international programme exchange",
+ edition="1990, revised",
+ organization="International Telecommunications Union",
+ address="1211 Geneva 20, Switzerland",
+ year=2002
+}
+
+@MANUAL{smpte170m,
+ key="SMPTE170M",
+ title="{SMPTE-170M}: Television --- Composite Analog Video Signal --- {NTSC}
+ for Studio Applications",
+ organization="Society of Motion Pciture and Television Engineers",
+ year=1994
+}
+
+@MANUAL{smpte240m,
+ key="SMPTE240M",
+ title="{SMPTE-240M}: Television --- Signal Parameters --- 1125-Line
+ High-Definition Production",
+ organization="Society of Motion Pciture and Television Engineers",
+ year=1999
+}
+
+@MANUAL{vorbis,
+ title="{Vorbis~I} specification",
+ organization="{Xiph.org Foundation}",
+ year=2002,
+ note="\url{http://www.xiph.org/ogg/vorbis/doc/}"
+}
+
+@MANUAL{rfc2119,
+ author="Scott Bradner",
+ title="{RFC} 2119: Key words for use in {RFC}s to Indicate Requirement
+ Levels",
+ month=mar,
+ year=1997,
+ note="\url{http://www.ietf.org/rfc/rfc2119.txt}"
+}
+
+@MANUAL{rfc3533,
+ author="Silvia Pfeiffer",
+ title="{RFC} 3533: The {Ogg} Encapsulation Format Version 0",
+ month=may,
+ year=2003,
+ note="\url{http://www.ietf.org/rfc/rfc3533.txt}"
+}
+
+@MANUAL{rfc3534,
+ author="Linus Walleij",
+ title="{RFC} 3534: The {application/ogg} Media Type",
+ month=may,
+ year=2003,
+ note="\url{http://www.ietf.org/rfc/rfc3534.txt}"
+}
+
+@MANUAL{rfc3550,
+ author="H. Schulzrinne, S. Casner, R. Frederick, V. Jacobson",
+ title="RTP: A Transport Protocol for Real-Time Applications",
+ month=jul,
+ year=2003,
+ note="\url{http://www.ietf.org/rfc/rfc3550.txt}"
+}
diff --git a/doc/spec/spec.tex b/doc/spec/spec.tex
new file mode 100644
index 0000000..b29d4ef
--- /dev/null
+++ b/doc/spec/spec.tex
@@ -0,0 +1,8171 @@
+\documentclass[9pt,letterpaper]{book}
+
+\usepackage{latexsym}
+\usepackage{amssymb}
+\usepackage{amsmath}
+\usepackage{bm}
+\usepackage{textcomp}
+\usepackage{graphicx}
+\usepackage{booktabs}
+\usepackage{tabularx}
+\usepackage{longtable}
+\usepackage{ltablex}
+\usepackage{wrapfig}
+\usepackage[pdfpagemode=None,pdfstartview=FitH,pdfview=FitH,colorlinks=true]%
+ {hyperref}
+
+\newtheorem{theorem}{Theorem}[section]
+\newcommand{\idx}[1]{{\ensuremath{\mathit{#1}}}}
+\newcommand{\qti}{\idx{qti}}
+\newcommand{\qtj}{\idx{qtj}}
+\newcommand{\pli}{\idx{pli}}
+\newcommand{\plj}{\idx{plj}}
+\newcommand{\qi}{\idx{qi}}
+\newcommand{\ci}{\idx{ci}}
+\newcommand{\bmi}{\idx{bmi}}
+\newcommand{\bmj}{\idx{bmj}}
+\newcommand{\qri}{\idx{qri}}
+\newcommand{\qrj}{\idx{qrj}}
+\newcommand{\hti}{\idx{hti}}
+\newcommand{\sbi}{\idx{sbi}}
+\newcommand{\bi}{\idx{bi}}
+\newcommand{\bj}{\idx{bj}}
+\newcommand{\mbi}{\idx{mbi}}
+\newcommand{\mbj}{\idx{mbj}}
+\newcommand{\mi}{\idx{mi}}
+\newcommand{\cbi}{\idx{cbi}}
+\newcommand{\qii}{\idx{qii}}
+\newcommand{\ti}{\idx{ti}}
+\newcommand{\tj}{\idx{tj}}
+\newcommand{\rfi}{\idx{rfi}}
+\newcommand{\zzi}{\idx{zzi}}
+\newcommand{\ri}{\idx{ri}}
+%This somewhat odd construct ensures that \bitvar{\qi}, etc., will set the
+% qi in bold face, even though it is in a \mathit font, yet \bitvar{VAR} will
+% set VAR in a bold, roman font.
+\newcommand{\bitvar}[1]{\ensuremath{\mathbf{\bm{#1}}}}
+\newcommand{\locvar}[1]{\ensuremath{\mathrm{#1}}}
+\newcommand{\term}[1]{{\em #1}}
+\newcommand{\bin}[1]{\ensuremath{\mathtt{b#1}}}
+\newcommand{\hex}[1]{\ensuremath{\mathtt{0x#1}}}
+\newcommand{\ilog}{\ensuremath{\mathop{\mathrm{ilog}}\nolimits}}
+\newcommand{\round}{\ensuremath{\mathop{\mathrm{round}}\nolimits}}
+\newcommand{\sign}{\ensuremath{\mathop{\mathrm{sign}}\nolimits}}
+\newcommand{\lflim}{\ensuremath{\mathop{\mathrm{lflim}}\nolimits}}
+
+%Section-based table, figure, and equation numbering.
+\numberwithin{equation}{chapter}
+\numberwithin{figure}{chapter}
+\numberwithin{table}{chapter}
+
+\keepXColumns
+
+\pagestyle{headings}
+\bibliographystyle{alpha}
+
+\title{Theora Specification}
+\author{Xiph.org Foundation}
+\date{\today}
+
+
+\begin{document}
+
+\frontmatter
+
+\begin{titlepage}
+\maketitle
+\end{titlepage}
+\thispagestyle{empty}
+\cleardoublepage
+
+\pagenumbering{roman}
+
+\thispagestyle{plain}
+\tableofcontents
+\cleardoublepage
+
+\thispagestyle{plain}
+\listoffigures
+\cleardoublepage
+
+\thispagestyle{plain}
+\listoftables
+\cleardoublepage
+
+\thispagestyle{plain}
+\markboth{{\sc Notation and Conventions}}{{\sc Notation and Conventions}}
+\chapter*{Notation and Conventions}
+
+All parameters either passed in or out of a decoding procedure are given in
+ \bitvar{bold\ face}.
+
+The prefix \bin{} indicates that the following value is to be interpreted as a
+ binary number (base 2).
+\begin{verse}
+{\bf Example:} The value \bin{1110100} is equal to the decimal value 116.
+\end{verse}
+
+The prefix \hex{} indicates the the following value is to be interpreted as a
+ hexadecimal number (base 16).
+\begin{verse}
+{\bf Example:} The value \hex{74} is equal to the decimal value 116.
+\end{verse}
+
+All arithmetic defined by this specification is exact.
+However, any real numbers that do arise will always be converted back to
+ integers again in short order.
+The entire specification can be implemented using only normal integer
+ operations.
+All operations are to be implemented with sufficiently large integers so that
+ overflow cannot occur.
+Where the result of a computation is to be truncated to a fixed-sized binary
+ representation, this will be explicitly noted.
+The size given for all variables is the maximum number of bits needed to store
+ any value in that variable.
+Intermediate computations involving that variable may require more bits.
+
+The following operators are defined:
+
+\begin{description}
+\item[$|a|$]
+The absolute value of a number $a$.
+\begin{align*}
+|a| & = \left\{\begin{array}{ll}
+-a, & a < 0 \\
+a, & a \ge 0
+\end{array}\right.
+\end{align*}
+
+\item[$a*b$]
+Multiplication of a number $a$ by a number $b$.
+\item[$\frac{a}{b}$]
+Exact division of a number $a$ by a number $b$, producing a potentially
+ non-integer result.
+
+\item[$\left\lfloor a\right\rfloor$]
+The largest integer less than or equal to a real number $a$.
+
+\item[$\left\lceil a\right\rceil$]
+The smallest integer greater than or equal to a real number $a$.
+
+\item[$a//b$]
+Integer division of $a$ by $b$.
+\begin{align*}
+a//b & = \left\{\begin{array}{ll}
+\left\lceil\frac{a}{b}\right\rceil, & a < 0 \\
+\left\lfloor\frac{a}{b}\right\rfloor, & a \ge 0
+\end{array}\right.
+\end{align*}
+
+\item[$a\%b$]
+The remainder from the integer division of $a$ by $b$.
+\begin{align*}
+a\%b & = a-|b|*\left\lfloor\frac{a}{|b|}\right\rfloor
+\end{align*}
+Note that with this definition, the result is always non-negative and less than
+ $|b|$.
+
+\item[$a<<b$]
+The value obtained by left-shifting the two's complement integer $a$ by $b$
+ bits.
+For purposes of this specification, overflow is ignored, and so this is
+ equivalent to integer multiplication of $a$ by $2^b$.
+
+\item[$a>>b$]
+The value obtained by right-shifting the two's complement integer $a$ by $b$
+ bits, filling in the leftmost bits of the new value with $0$ if $a$ is
+ non-negative and $1$ if $a$ is negative.
+This is {\em not} equivalent to integer division of $a$ by $2^b$.
+Instead,
+\begin{align*}
+a>>b & = \left\lfloor\frac{a}{2^b}\right\rfloor.
+\end{align*}
+
+\item[$\round(a)$]
+Rounds a number $a$ to the nearest integer, with ties rounded away from $0$.
+\begin{align*}
+\round(a) = \left\{\begin{array}{ll}
+\lceil a-\frac{1}{2}\rceil & a \le 0 \\
+\lfloor a+\frac{1}{2}\rfloor & a > 0
+\end{array}\right.
+\end{align*}
+
+\item[$\sign(a)$]
+Returns the sign of a given number.
+\begin{align*}
+\sign(a) = \left\{\begin{array}{ll}
+-1 & a < 0 \\
+0 & a = 0 \\
+1 & a > 0
+\end{array}\right.
+\end{align*}
+
+\item[$\ilog(a)$]
+The minimum number of bits required to store a positive integer $a$ in
+ two's complement notation, or $0$ for a non-positive integer $a$.
+\begin{align*}
+\ilog(a) = \left\{\begin{array}{ll}
+0, & a \le 0 \\
+\left\lfloor\log_2{a}\right\rfloor+1, & a > 0
+\end{array}\right.
+\end{align*}
+
+\begin{verse}
+{\bf Examples:}
+\begin{itemize}
+\item $\ilog(-1)=0$
+\item $\ilog(0)=0$
+\item $\ilog(1)=1$
+\item $\ilog(2)=2$
+\item $\ilog(3)=2$
+\item $\ilog(4)=3$
+\item $\ilog(7)=3$
+\end{itemize}
+\end{verse}
+
+\item[$\min(a,b)$]
+The minimum of two numbers $a$ and $b$.
+
+\item[$\max(a,b)$]
+The maximum of two numbers $a$ and $b$.
+
+\end{description}
+\cleardoublepage
+
+
+\thispagestyle{plain}
+\markboth{{\sc Key words}}{{\sc Key words}}
+\chapter*{Key words}
+
+%We can't rewrite this, because this is text required by RFC 2119, so we use
+% some emergency stretching to get it typeset properly.
+\setlength{\emergencystretch}{2em}
+The key words ``MUST'', ``MUST NOT'', ``REQUIRED'', ``SHALL'', ``SHALL NOT'',
+ ``SHOULD'', ``SHOULD NOT'', ``RECOMMENDED'', ``MAY'', and ``OPTIONAL'' in this
+ document are to be intrepreted as described in RFC 2119 \cite{rfc2119}.\par
+\setlength{\emergencystretch}{0em}
+
+Where such assertions are placed on the contents of a Theora bitstream itself,
+ implementations should be prepared to encounter bitstreams that do not follow
+ these requirements.
+An application's behavior in the presecence of such non-conforming bitstreams
+ is not defined by this specification, but any reasonable method of handling
+ them MAY be used.
+By way of example, applications MAY discard the current frame, retain the
+ current output thus far, or attempt to continue on by assuming some default
+ values for the erroneous bits.
+When such an error occurs in the bitstream headers, an application MAY refuse
+ to decode the entire stream.
+An application SHOULD NOT allow such non-conformant bitstreams to overflow
+ buffers and potentially execute arbitrary code, as this represents a serious
+ security risk.
+
+An application MUST, however, ensure any bits marked as reserved have the value
+ zero, and refuse to decode the stream if they do not.
+These are used as place holders for future bitstream features with which the
+ current bitstream is forward-compatible.
+Such features may not increment the bitstream version number, and can only be
+ recognized by checking the value of these reserved bits.
+
+\cleardoublepage
+
+
+
+\mainmatter
+
+\pagenumbering{arabic}
+\setcounter{page}{1}
+
+\chapter{Introduction}
+
+Theora is a general purpose, lossy video codec.
+It is based on the VP3 video codec produced by On2 Technologies
+ (\url{http://www.on2.com/}).
+On2 donated the VP3.1 source code to the Xiph.org Foundation and released it
+ under a BSD-like license.
+On2 also made an irrevocable, royalty-free license grant for any patent claims
+ it might have over the software and any derivatives.
+No formal specification exists for the VP3 format beyond this source code,
+ however Mike Melanson maintains a detailed description \cite{Mel04}.
+Portions of this specification were adopted from that text with permission.
+
+\section{VP3 and Theora}
+
+Theora contains a superset of the features that were available in the original
+ VP3 codec.
+Content encoded with VP3.1 can be losslessly transcoded into the Theora format.
+Theora content cannot, in general, be losslessly transcoded into the VP3
+ format.
+If a feature is not available in the original VP3 format, this is mentioned
+ when that feature is defined.
+A complete list of these features appears in Appendix~\ref{app:vp3-compat}.
+%TODO: VP3 - theora comparison in appendix
+
+\section{Video Formats}
+
+Theora currently supports progressive video data of arbitrary dimensions at a
+ constant frame rate in one of several $Y'C_bC_r$ color spaces.
+The precise definition the supported color spaces appears in
+ Section~\ref{sec:colorspaces}.
+Three different chroma subsampling formats are supported: 4:2:0, 4:2:2,
+ and 4:4:4.
+The precise details of each of these formats and their sampling locations are
+ described in Section~\ref{sec:pixfmts}.
+
+The Theora format does not support interlaced material, variable frame rates,
+ bit-depths larger than 8 bits per component, nor alternate color spaces such
+ as RGB or arbitrary multi-channel spaces.
+Black and white content can be efficiently encoded, however, because the
+ uniform chroma planes compress well.
+Support for interlaced material is planned for a future version.
+\begin{verse}
+{\bf Note:} Infrequently changing frame rates---as when film and video
+ sequences are cut together---can be supported in the Ogg container format by
+ chaining several Theora streams together.
+\end{verse}
+Support for increased bit depths or additional color spaces is not planned.
+
+\section{Classification}
+
+Theora is a block-based lossy transform codec that utilizes an
+ $8\times 8$ Type-II Discrete Cosine Transform and block-based motion
+ compensation.
+This places it in the same class of codecs as MPEG-1, -2, -4, and H.263.
+The details of how individual blocks are organized and how DCT coefficients are
+ stored in the bitstream differ substantially from these codecs, however.
+Theora supports only intra frames (I frames in MPEG) and inter frames (P frames
+ in MPEG).
+There is no equivalent to the bi-predictive frames (B frames) found in MPEG
+ codecs.
+
+\section{Assumptions}
+
+The Theora codec design assumes a complex, psychovisually-aware encoder and a
+ simple, low-complexity decoder.
+%TODO: Talk more about implementation complexity.
+
+Theora provides none of its own framing, synchronization, or protection against
+ transmission errors.
+An encoder is solely a method of accepting input video frames and
+ compressing these frames into raw, unformatted `packets'.
+The decoder then accepts these raw packets in sequence, decodes them, and
+ synthesizes a fascimile of the original video frames.
+Theora is a free-form variable bit rate (VBR) codec, and packets have no
+ minimum size, maximum size, or fixed/expected size.
+
+Theora packets are thus intended to be used with a transport mechanism that
+ provides free-form framing, synchronization, positioning, and error correction
+ in accordance with these design assumptions, such as Ogg (for file transport)
+ or RTP (for network multicast).
+For the purposes of a few examples in this document, we will assume that Theora
+ is embedded in an Ogg stream specifically, although this is by no means a
+ requirement or fundamental assumption in the Theora design.
+
+The specification for embedding Theora into an Ogg transport stream is given in
+ Appendix~\ref{app:oggencapsulation}.
+
+\section{Codec Setup and Probability Model}
+
+Theora's heritage is the proprietary commerical codec VP3, and it retains a
+ fair amount of inflexibility when compared to Vorbis \cite{vorbis}, the first
+ Xiph.org codec, which began as a research codec.
+However, to provide additional scope for encoder improvement, Theora adopts
+ some of the configurable aspects of decoder setup that are present in Vorbis.
+This configuration data is not available in VP3, which uses hardcoded values
+ instead.
+
+Theora makes the same controversial design decision that Vorbis made to include
+ the entire probability model for the DCT coefficients and all the quantization
+ parameters in the bitstream headers.
+This is often several hundred fields.
+It is therefore impossible to decode any frame in the stream without
+ having previously fetched the codec info and codec setup headers.
+
+\begin{verse}
+{\bf Note:} Theora {\em can} initiate decode at an arbitrary intra-frame packet
+ within a bitstream so long as the codec has been initialized with the setup
+ headers.
+\end{verse}
+
+Thus, Theora headers are both required for decode to begin and relatively large
+ as bitstream headers go.
+The header size is unbounded, although as a rule-of-thumb less than 16kB is
+ recommended, and Xiph.org's reference encoder follows this suggestion.
+%TODO: Is 8kB enough? My setup header is 7.4kB, that doesn't leave much room
+% for comments.
+%RG: the lesson from vorbis is that as small as possible is really
+% important in some applications. Practically, what's acceptable
+% depends a great deal on the target bitrate. I'd leave 16 kB in the
+% spec for now. fwiw more than 1k of comments is quite unusual.
+
+Our own design work indicates that the primary liability of the required header
+ is in mindshare; it is an unusual design and thus causes some amount of
+ complaint among engineers as this runs against current design trends and
+ points out limitations in some existing software/interface designs.
+However, we find that it does not fundamentally limit Theora's suitable
+ application space.
+
+%silvia: renamed
+%\subsection{Format Specification}
+\section{Format Conformance}
+
+The Theora format is well-defined by its decode specification; any encoder that
+ produces packets that are correctly decoded by an implementation following
+ this specification may be considered a proper Theora encoder.
+A decoder must faithfully and completely implement the specification defined
+ herein %, except where noted,
+ to be considered a conformant Theora decoder.
+A decoder need not be implemented strictly as described, but the
+ actual decoder process MUST be {\em entirely mathematically equivalent}
+ to the described process.
+Where appropriate, a non-normative description of encoder processes is
+ included.
+These sections will be marked as such, and a proper Theora encoder is not
+ bound to follow them.
+
+%TODO: \subsection{Hardware Profile}
+
+
+\chapter{Coded Video Structure}
+
+Theora's encoding and decoding process is based on $8\times 8$ blocks of
+ pixels.
+This sections describes how a video frame is laid out, divided into
+ blocks, and how those blocks are organized.
+
+\section{Frame Layout}
+
+A video frame in Theora is a two-dimensional array of pixels.
+Theora, like VP3, uses a right-handed coordinate system, with the origin in the
+ lower-left corner of the frame.
+This is contrary to many video formats which use a left-handed coordinate
+ system with the origin in the upper-left corner of the frame.
+%INT: This means that for interlaced material, the definition of `even fields'
+%INT: and `odd fields' may be reversed between Theora and other video codecs.
+%INT: This document will always refer to them as `top fields' and `bottom
+%INT: fields'.
+
+Theora divides the pixel array up into three separate \term{color planes}, one
+ for each of the $Y'$, $C_b$, and $C_r$ components of the pixel.
+The $Y'$ plane is also called the \term{luma plane}, and the $C_b$ and $C_r$
+ planes are also called the \term{chroma planes}.
+Each plane is assigned a numerical value, as shown in
+ Table~\ref{tab:color-planes}.
+
+\begin{table}[htbp]
+\begin{center}
+\begin{tabular}{cl}\toprule
+Index & Color Plane \\\midrule
+$0$ & $Y'$ \\
+$1$ & $C_b$ \\
+$2$ & $C_r$ \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Color Plane Indices}
+\label{tab:color-planes}
+\end{table}
+
+In some pixel formats, the chroma planes are subsampled by a factor of two
+ in one or both directions.
+This means that the width or height of the chroma planes may be half that of
+ the total frame width and height.
+The luma plane is never subsampled.
+
+\section{Picture Region}
+
+An encoded video frame in Theora is required to have a width and height that
+ are multiples of sixteen, making an integral number of blocks even when the
+ chroma planes are subsampled.
+However, inside a frame a smaller \term{picture region} may be defined
+ to present material whose dimensions are not a multiple of sixteen pixels, as
+ shown in Figure~\ref{fig:pic-frame}.
+The picture region can be offset from the lower-left corner of the frame by up
+ to 255 pixels in each direction, and may have an arbitrary width and height,
+ provided that it is contained entirely within the coded frame.
+It is this picture region that contains the actual video data.
+The portions of the frame which lie outside the picture region may contain
+ arbitrary image data, so the frame must be cropped to the picture region
+ before display.
+The picture region plays no other role in the decode process, which operates on
+ the entire video frame.
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics{pic-frame}
+\end{center}
+\caption{Location of frame and picture regions}
+\label{fig:pic-frame}
+\end{figure}
+
+\section{Blocks and Super Blocks}
+\label{sec:blocks-and-sbs}
+
+Each color plane is subdivided into \term{blocks} of $8\times 8$ pixels.
+Blocks are grouped into $4\times 4$ arrays called \term{super blocks} as
+ shown in Figure~\ref{fig:superblock}.
+Each color plane has its own set of blocks and super blocks.
+If the chroma planes are subsampled, they are still divided into $8\times 8$
+ blocks of pixels; there are just fewer blocks than in the luma plane.
+The boundaries of blocks and super blocks in the luma plane do not necessarily
+ coincide with those of the chroma planes, if the chroma planes have been
+ subsampled.
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics{superblock}
+\end{center}
+\caption{Subdivision of a frame into blocks and super blocks}
+\label{fig:superblock}
+\end{figure}
+
+Blocks are accessed in two different orders in the various decoder processes.
+The first is \term{raster order}, illustrated in Figure~\ref{fig:raster-block}.
+This accesses each block in row-major order, starting in the lower left of the
+ frame and continuing along the bottom row of the entire frame, followed by the
+ next row up, starting on the left edge of the frame, etc.
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics{raster-block}
+\end{center}
+\caption{Raster ordering of $n\times m$ blocks}
+\label{fig:raster-block}
+\end{figure}
+
+The second is \term{coded order}.
+In coded order, blocks are accessed by super block.
+Within each frame, super blocks are traversed in raster order,
+ similar to raster order for blocks.
+Within each super block, however, blocks are accessed in a Hilbert curve
+ pattern, illustrated in Figure~\ref{fig:hilbert-block}.
+If a color plane does not contain a complete super block on the top or right
+ sides, the same ordering is still used, simply with any blocks outside the
+ frame boundary ommitted.
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics{hilbert-block}
+\end{center}
+\caption{Hilbert curve ordering of blocks within a super block}
+\label{fig:hilbert-block}
+\end{figure}
+
+To illustrate this ordering, consider a frame that is 240 pixels wide and
+ 48 pixels high.
+Each row of the luma plane has 30 blocks and 8 super blocks, and there are 6
+ rows of blocks and two rows of super blocks.
+
+%When accessed in raster order, each block in the luma plane is assigned the
+% following indices:
+
+%\vspace{\baselineskip}
+%\begin{center}
+%\begin{tabular}{|ccccccc|}\hline
+%150 & 151 & 152 & 153 & $\ldots$ & 178 & 179 \\
+%120 & 121 & 122 & 123 & $\ldots$ & 148 & 149 \\\hline
+% 90 & 91 & 92 & 93 & $\ldots$ & 118 & 119 \\
+% 60 & 61 & 62 & 63 & $\ldots$ & 88 & 89 \\
+% 30 & 31 & 32 & 33 & $\ldots$ & 58 & 59 \\
+% 0 & 1 & 2 & 3 & $\ldots$ & 28 & 29 \\\hline
+%\end{tabular}
+%\end{center}
+%\vspace{\baselineskip}
+
+When accessed in coded order, each block in the luma plane is assigned the
+ following indices:
+
+\vspace{\baselineskip}
+\begin{center}
+\begin{tabular}{|cccc|c|cc|}\hline
+123 & 122 & 125 & 124 & $\ldots$ & 179 & 178 \\
+120 & 121 & 126 & 127 & $\ldots$ & 176 & 177 \\\hline
+ 5 & 6 & 9 & 10 & $\ldots$ & 117 & 118 \\
+ 4 & 7 & 8 & 11 & $\ldots$ & 116 & 119 \\
+ 3 & 2 & 13 & 12 & $\ldots$ & 115 & 114 \\
+ 0 & 1 & 14 & 15 & $\ldots$ & 112 & 113 \\\hline
+\end{tabular}
+\end{center}
+\vspace{\baselineskip}
+
+Here the index values specify the order in which the blocks would be accessed.
+The indices of the blocks are numbered continuously from one color plane to the
+ next.
+They do not reset to zero at the start of each plane.
+Instead, the numbering increases continuously from the $Y'$ plane to the $C_b$
+ plane to the $C_r$ plane.
+The implication is that the blocks from all planes are treated as a unit during
+ the various processing steps.
+
+Although blocks are sometimes accessed in raster order, in this document the
+ index associated with a block is {\em always} its index in coded order.
+
+\section{Macro Blocks}
+\label{sec:mbs}
+
+A macro block contains a $2\times 2$ array of blocks in the luma plane
+ {\em and} the co-located blocks in the chroma planes, as shown in
+ Figure~\ref{fig:macroblock}.
+Thus macro blocks can represent anywhere from six to twelve blocks, depending
+ on how the chroma planes are subsampled.
+This is in contrast to super blocks, which only contain blocks from a single
+ color plane.
+% the whole super vs. macro blocks thing is a little confusing, and it can be
+% hard to remember which is what initially. A figure would/will help here,
+% but I tried to add some text emphasizing the difference in terms of
+% functionality.
+%TBT: At this point we haven't described any functionality yet.
+%TBT: As far as the reader knows, the only purpose of the blocks, macro blocks
+%TBT: and super blocks is for data organization---and for blocks and super
+%TBT: blocks, this is essentially true.
+%TBT: So lets restrict the differences we emphasize to those of data
+%TBT: organization, which the sentence I just added above does.
+Macro blocks contain information about coding mode and motion vectors for the
+ corresponding blocks in all color planes.
+
+\begin{figure}[htbp]
+ \begin{center}
+ \includegraphics{macroblock}
+ \end{center}
+ \caption{Subdivision of a frame into macro blocks}
+ \label{fig:macroblock}
+\end{figure}
+
+Macro blocks are also accessed in a \term{coded order}.
+This coded order proceeds by examining each super block in the luma plane in
+ raster order, and traversing the four macro blocks inside using a smaller
+ Hilbert curve, as shown in Figure~\ref{fig:hilbert-mb}.
+%r: I rearranged the wording to make a more formal idiom here
+If the luma plane does not contain a complete super block on the top or right
+ sides, the same ordering is still used, with any macro blocks outside
+ the frame boundary simply omitted.
+Because the frame size is constrained to be a multiple of 16, there are never
+ any partial macro blocks.
+Unlike blocks, macro blocks need never be accessed in a pure raster order.
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics{hilbert-mb}
+\end{center}
+\caption{Hilbert curve ordering of macro blocks within a super block}
+\label{fig:hilbert-mb}
+\end{figure}
+
+Using the same frame size as the example above, there are 15 macro blocks in
+ each row and 3 rows of macro blocks.
+The macro blocks are assigned the following indices:
+
+\vspace{\baselineskip}
+\begin{center}
+\begin{tabular}{|cc|cc|c|cc|c|}\hline
+30 & 31 & 32 & 33 & $\cdots$ & 42 & 43 & 44 \\\hline
+ 1 & 2 & 5 & 6 & $\cdots$ & 25 & 26 & 29 \\
+ 0 & 3 & 4 & 7 & $\cdots$ & 24 & 27 & 28 \\\hline
+\end{tabular}
+\end{center}
+\vspace{\baselineskip}
+
+\section{Coding Modes and Prediction}
+
+Each block is coded using one of a small, fixed set of \term{coding modes} that
+ define how the block is predicted from previous frames.
+A block is predicted using one of two \term{reference frames}, selected
+ according to the coding mode.
+A reference frame is the fully decoded version of a previous frame in the
+ stream.
+The first available reference frame is the previous intra frame, called the
+ \term{golden frame}.
+The second available reference frame is the previous frame, whether it was an
+ intra frame or an inter frame.
+If the previous frame was an intra frame, then both reference frames are the
+ same.
+See Figure~\ref{fig:reference-frames} for an illustration of the reference
+ frames used for an intra frame that does not follow an intra frame.
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics{reference-frames}
+\end{center}
+\caption{Example of reference frames for an inter frame}
+\label{fig:reference-frames}
+\end{figure}
+
+Two coding modes in particular are worth mentioning here.
+The INTRA mode is used for blocks that are not predicted from either reference
+ frame.
+This is the only coding mode allowed in intra frames.
+The INTER\_NOMV coding mode uses the co-located contents of the block in the
+ previous frame as the predictor.
+This is the default coding mode.
+
+\section{DCT Coefficients}
+\label{sec:dct-coeffs}
+
+A \term{residual} is added to the predicted contents of a block to form the
+ final reconstruction.
+The residual is stored as a set of quantized coefficients from an integer
+ approximation of a two-dimensional Type II Discrete Cosine Transform.
+The DCT takes an $8\times 8$ array of pixel values as input and returns an
+ $8\times 8$ array of coefficient values.
+The \term{natural ordering} of these coefficients is defined to be row-major
+ order, from lowest to highest frequency.
+They are also often indexed in \term{zig-zag order}, as shown in
+ Figure~\ref{tab:zig-zag}.
+
+\begin{figure}[htbp]
+\begin{center}
+\begin{tabular}[c]{rr|c@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c}
+ &\multicolumn{1}{r}{} & && &&&&&$c$&&& && && \\
+ &\multicolumn{1}{r}{} &0&&1&&2&&3&&4&&5&&6&&7 \\\cline{3-17}
+ &0 & 0 &$\rightarrow$& 1 && 5 &$\rightarrow$& 6 && 14 &$\rightarrow$& 15 && 27 &$\rightarrow$& 28 \\[-0.5\defaultaddspace]
+ & & &$\swarrow$&&$\nearrow$& &$\swarrow$&&$\nearrow$& &$\swarrow$&&$\nearrow$& &$\swarrow$& \\
+ &1 & 2 & & 4 && 7 & & 13 && 16 & & 26 && 29 & & 42 \\[-0.5\defaultaddspace]
+ & &$\downarrow$&$\nearrow$&&$\swarrow$&&$\nearrow$&&$\swarrow$&&$\nearrow$&&$\swarrow$&&$\nearrow$&$\downarrow$ \\
+ &2 & 3 & & 8 && 12 & & 17 && 25 & & 30 && 41 & & 43 \\[-0.5\defaultaddspace]
+ & & &$\swarrow$&&$\nearrow$& &$\swarrow$&&$\nearrow$& &$\swarrow$&&$\nearrow$& &$\swarrow$& \\
+ &3 & 9 & & 11 && 18 & & 24 && 31 & & 40 && 44 & & 53 \\[-0.5\defaultaddspace]
+$r$&&$\downarrow$&$\nearrow$&&$\swarrow$&&$\nearrow$&&$\swarrow$&&$\nearrow$&&$\swarrow$&&$\nearrow$&$\downarrow$ \\
+ &4 & 10 & & 19 && 23 & & 32 && 39 & & 45 && 52 & & 54 \\[-0.5\defaultaddspace]
+ & & &$\swarrow$&&$\nearrow$& &$\swarrow$&&$\nearrow$& &$\swarrow$&&$\nearrow$& &$\swarrow$& \\
+ &5 & 20 & & 22 && 33 & & 38 && 46 & & 51 && 55 & & 60 \\[-0.5\defaultaddspace]
+ & &$\downarrow$&$\nearrow$&&$\swarrow$&&$\nearrow$&&$\swarrow$&&$\nearrow$&&$\swarrow$&&$\nearrow$&$\downarrow$ \\
+ &6 & 21 & & 34 && 37 & & 47 && 50 & & 56 && 59 & & 61 \\[-0.5\defaultaddspace]
+ & & &$\swarrow$&&$\nearrow$& &$\swarrow$&&$\nearrow$& &$\swarrow$&&$\nearrow$& &$\swarrow$& \\
+ &7 & 35 &$\rightarrow$& 36 && 48 &$\rightarrow$& 49 && 57 &$\rightarrow$& 58 && 62 &$\rightarrow$& 63
+\end{tabular}
+\end{center}
+\caption{Zig-zag order}
+\label{tab:zig-zag}
+\end{figure}
+
+\begin{verse}
+{\bf Note:} the row and column indices refer to {\em frequency number} and not
+ pixel locations.
+The frequency numbers are defined independently of the memory organization of
+ the pixels.
+They have been written from top to bottom here to follow conventional notation,
+ despite the right-handed coordinate system Theora uses for pixel locations.
+%RG: I'd rather we were internally consistent and put dc at the lower left.
+Many implementations of the DCT operate `in-place'.
+That is, they return DCT coefficients in the same memory buffer that the
+ initial pixel values were stored in.
+Due to the right-handed coordinate system used for pixel locations in Theora,
+ one must note carefully how both pixel values and DCT coefficients are
+ organized in memory in such a system.
+\end{verse}
+
+DCT coefficient $(0,0)$ is called the \term{DC coefficient}.
+All the other coefficients are called \term{AC coefficients}.
+
+
+\chapter{Decoding Overview}
+
+This section provides a high level description of the Theora codec's
+ construction.
+A bit-by-bit specification appears beginning in Section~\ref{sec:bitpacking}.
+The later sections assume a high-level understanding of the Theora decode
+ process, which is provided below.
+
+\section{Decoder Configuration}
+
+Decoder setup consists of configuration of the quantization matrices and the
+ Huffman codebooks for the DCT coefficients, and a table of limit values for
+ the deblocking filter.
+The remainder of the decoding pipeline is not configurable.
+
+\subsection{Global Configuration}
+
+The global codec configuration consists of a few video related fields, such as
+ frame rate, frame size, picture size and offset, aspect ratio, color space,
+ pixel format, and a version number.
+The version number is divided into a major version, a minor version, amd a
+ minor revision number.
+%r: afaik the released vp3 codec called itself 3.1 and is compatible w/ theora
+%r: even though we received the in-progress 3.2 codebase
+For the format defined in this specification, these are `3', `2', and
+ `1', respectively, in reference to Theora's origin as a successor to
+ the VP3.1 format.
+
+\subsection{Quantization Matrices}
+
+Theora allows up to 384 different quantization matrices to be defined, one for
+ each \term{quantization type}, \term{color plane} ($Y'$, $C_b$, or $C_r$), and
+ \term{quantization index}, \qi, which ranges from zero to 63, inclusive.
+There are currently two quantization types defined, which depend on the coding
+ mode of the block being dequantized, as shown in Table~\ref{tab:quant-types}.
+
+\begin{table}[htbp]
+\begin{center}
+\begin{tabular}{cl}\toprule
+Quantization Type & Usage \\\midrule
+$0$ & INTRA-mode blocks \\
+$1$ & Blocks in any other mode. \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Quantization Type Indices}
+\label{tab:quant-types}
+\end{table}
+
+%r: I think 'nominally' is more specific than 'generally' here
+The quantization index, on the other hand, nominally represents a progressive
+ range of quality levels, from low quality near zero to high quality near 63.
+However, the interpretation is arbitrary, and it is possible, for example, to
+ partition the scale into two completely separate ranges with 32 levels each
+ that are meant to represent different classes of source material, or any
+ other arrangement that suits the encoder's requirements.
+
+Each quantization matrix is an $8\times 8$ matrix of 16-bit values, which is
+ used to quantize the output of the $8\times 8$ DCT\@.
+Quantization matrices are specified using three components: a
+ \term{base matrix} and two \term{scale values}.
+The first scale value is the \term{DC scale}, which is applied to the DC
+ component of the base matrix.
+The second scale value is the \term{AC scale}, which is applied to all the
+ other components of the base matrix.
+There are 64 DC scale values and 64 AC scale values, one for each \qi\ value.
+
+There are 64 elements in each base matrix, one for each DCT coefficient.
+They are stored in natural order (cf. Section~\ref{sec:dct-coeffs}).
+There is a separate set of base matrices for each quantization type and each
+ color plane, with up to 64 possible base matrices in each set, one for each
+ \qi\ value.
+%r: we will mention that the given matricies must bound the \qi range
+%r: in the detailed section. it's not important at this level.
+Typically the bitstream contains matrices for only a sparse subset of the
+ possible \qi\ values.
+The base matrices for the remainder of the \qi\ values are computed using
+ linear interpolation.
+This configuration allows the encoder to adjust the quantization matrices to
+ approximate the complex, non-linear response of the human visual system to
+ different quantization errors.
+
+Finally, because the in-loop deblocking filter strength depends on the strength
+ of the quantization matrices defined in this header, a table of 64 \term{loop
+ filter limit values} is defined, one for each \qi\ value.
+
+The precise specification of how all of this information is decoded appears in
+ Section~\ref{sub:loop-filter-limits} and Section~\ref{sub:quant-params}.
+
+\subsection{Huffman Codebooks}
+
+Theora uses 80 configurable binary Huffman codes to represent the 32 tokens
+ used to encode DCT coefficients.
+Each of the 32 token values has a different semantic meaning and is used to
+ represent single coefficient values, zero runs, combinations of the two, and
+ \term{End-Of-Block markers}.
+
+The 80 codes are divided up into five groups of 16, with each group
+ corresponding to a set of DCT coefficient indices.
+The first group corresponds to the DC coefficient, while the remaining four
+ groups correspond to different subsets of the AC coefficients.
+Within each frame, two pairs of 4-bit codebook indices are stored.
+The first pair selects which codebooks to use from the DC coefficient group for
+ the $Y'$ coefficients and the $C_b$ and $C_r$ coefficients.
+The second pair selects which codebooks to use from {\em all four} of the AC
+ coefficient groups for the $Y'$ coefficients and the $C_b$ and $C_r$
+ coefficients.
+
+The precise specification of how the codebooks are decoded appears in
+ Section~\ref{sub:huffman-tables}.
+
+\section{High-Level Decode Process}
+
+\subsection{Decoder Setup}
+
+Before decoding can begin, a decoder MUST be initialized using the bitstream
+ headers corresponding to the stream to be decoded.
+Theora uses three header packets; all are required, in order, by this
+ specification.
+Once set up, decode may begin at any intra-frame packet---or even inter-frame
+ packets, provided the appropriate decoded reference frames have already been
+ decoded and cached---belonging to the Theora stream.
+In Theora I, all packets after the three initial headers are intra-frame or
+ inter-frame packets.
+
+The header packets are, in order, the identification header, the comment
+ header, and the setup header.
+
+\paragraph{Identification Header}
+
+The identification header identifies the stream as Theora, provides a version
+ number, and defines the characteristics of the video stream such as frame
+ size.
+A complete description of the identification header appears in
+ Section~\ref{sec:idheader}.
+
+\paragraph{Comment Header}
+
+The comment header includes user text comments (`tags') and a vendor string
+ for the application/library that produced the stream.
+The format of the comment header is the same as that used in the Vorbis I and
+ Speex codecs, with slight modifications due to the use of a different bit
+ packing mechanism.
+A complete description of how the comment header is coded appears in
+ Section~\ref{sec:commentheader}, along with a suggested set of tags.
+
+\paragraph{Setup Header}
+
+The setup header includes extensive codec setup information, including the
+ complete set of quantization matrices and Huffman codebooks needed to decode
+ the DCT coefficients.
+A complete description of the setup header appears in
+ Section~\ref{sec:setupheader}.
+
+\subsection{Decode Procedure}
+
+The decoding and synthesis procedure for all video packets is fundamentally the
+ same, with some steps omitted for intra frames.
+\begin{itemize}
+\item
+Decode packet type flag.
+\item
+Decode frame header.
+\item
+Decode coded block information (inter frames only).
+\item
+Decode macro block mode information (inter frames only).
+\item
+Decode motion vectors (inter frames only).
+\item
+Decode block-level \qi\ information.
+\item
+Decode DC coefficient for each coded block.
+\item
+Decode 1st AC coefficient for each coded block.
+\item
+Decode 2nd AC coefficient for each coded block.
+\item
+$\ldots$
+\item
+Decode 63rd AC coefficient for each coded block.
+\item Perform DC coefficient prediction.
+\item Reconstruct coded blocks.
+\item Copy uncoded bocks.
+\item Perform loop filtering.
+\end{itemize}
+
+\begin{verse}
+{\bf Note:} clever rearrangement of the steps in this process is possible.
+As an example, in a memory-constrained environment, one can make multiple
+ passes through the DCT coefficients to avoid buffering them all in memory.
+On the first pass, the starting location of each coefficient is identified, and
+ then 64 separate get pointers are used to read in the 64 DCT coefficients
+ required to reconstruct each coded block in sequence.
+This operation produces entirely equivalent output and is naturally perfectly
+ legal.
+It may even be a benefit in non-memory-constrained environments due to a
+ reduced cache footprint.
+\end{verse}
+
+Theora makes equivalence easy to check by defining all decoding operations in
+ terms of exact integer operations.
+No floating-point math is required, and in particular, the implementation of
+ the iDCT transform MUST be followed precisely.
+This prevents the decoder mismatch problem commonly associated with codecs that
+ provide a less rigorous transform specification.
+Such a mismatch problem would be devastating to Theora, since a single rounding
+ error in one frame could propagate throughout the entire succeeding frame due
+ to DC prediction.
+
+\paragraph{Packet Type Decode}
+
+Theora uses four packet types.
+The first three packet types mark each of the three Theora headers described
+ above.
+The fourth packet type marks a video packet.
+All other packet types are reserved; packets marked with a reserved type should
+ be ignored.
+
+Additionally, zero-length packets are treated as if they were an inter
+frame with no blocks coded. That is, as a duplicate frame.
+
+\paragraph{Frame Header Decode}
+
+The frame header contains some global information about the current frame.
+The first is the frame type field, which specifies if this is an intra frame or
+ an inter frame.
+Inter frames predict their contents from previously decoded reference frames.
+Intra frames can be independently decoded with no established reference frames.
+
+The next piece of information in the frame header is the list of \qi\ values
+ allowed in the frame.
+Theora allows from one to three different \qi\ values to be used in a single
+ frame, each of which selects a set of six quantization matrices, one for each
+ quantization type (inter or intra), and one for each color plane.
+The first \qi\ value is {\em always} used when dequantizing DC coefficients.
+The \qi\ value used when dequantizing AC coefficients, however, can vary from
+ block to block.
+VP3, in contrast, only allows a single \qi\ value per frame for both the DC and
+ AC coefficients.
+
+\paragraph{Coded Block Information}
+
+This stage determines which blocks in the frame are coded and which are
+ uncoded.
+A \term{coded block list} is constructed which lists all the coded blocks in
+ coded order.
+For intra frames, every block is coded, and so no data needs to be read from
+ the packet.
+
+\paragraph{Macro Block Mode Information}
+
+For intra frames, every block is coded in INTRA mode, and this stage is
+ skipped.
+In inter frames a \term{coded macro block list} is constructed from the coded
+ block list.
+Any macro block which has at least one of its luma blocks coded is considered
+ coded; all other macro blocks are uncoded, even if they contain coded chroma
+ blocks.
+A coding mode is decoded for each coded macro block, and assigned to all its
+ constituent coded blocks.
+All coded chroma blocks in uncoded macro blocks are assigned the INTER\_NOMV
+ coding mode.
+
+\paragraph{Motion Vectors}
+
+Intra frames are coded entirely in INTRA mode, and so this stage is skipped.
+Some inter coding modes, however, require one or more motion vectors to be
+ specified for each macro block.
+These are decoded in this stage, and an appropriate motion vector is assigned
+ to each coded block in the macro block.
+
+\paragraph{Block-Level \qi\ Information}
+
+If a frame allows multiple \qi\ values, the \qi\ value assigned to each block
+ is decoded here.
+Frames that use only a single \qi\ value have nothing to decode.
+
+\paragraph{DCT Coefficients}
+
+Finally, the quantized DCT coefficients are decoded.
+A list of DCT coefficients in zig-zag order for a single block is represented
+ by a list of tokens.
+A token can take on one of 32 different values, each with a different semantic
+ meaning.
+A single token can represent a single DCT coefficient, a run of zero
+ coefficients within a single block, a combination of a run of zero
+ coefficients followed by a single non-zero coefficient, an
+ \term{End-Of-Block marker}, or a run of EOB markers.
+EOB markers signify that the remainder of the block is one long zero run.
+Unlike JPEG and MPEG, there is no requirement for each block to end with
+ a special marker.
+If non-EOB tokens yield values for all 64 of the coefficients in a block, then
+ no EOB marker occurs.
+
+Each token is associated with a specific \term{token index} in a block.
+For single-coefficient tokens, this index is the zig-zag index of the token in
+ the block.
+For zero-run tokens, this index is the zig-zag index of the {\em first}
+ coefficient in the run.
+For combination tokens, the index is again the zig-zag index of the first
+ coefficient in the zero run.
+For EOB markers, which signify that the remainder of the block is one long zero
+ run, the index is the zig-zag index of the first zero coefficient in that run.
+For EOB runs, the token index is that of the first EOB marker in the run.
+Due to zero runs and EOB markers, a block does not have to have a token for
+ every zig-zag index.
+
+Tokens are grouped in the stream by token index, not by the block they
+ originate from.
+This means that for each zig-zag index in turn, the tokens with that index from
+ {\em all} the coded blocks are coded in coded block order.
+When decoding, a current token index is maintained for each coded block.
+This index is advanced by the number of coefficients that are added to the
+ block as each token is decoded.
+After fully decoding all the tokens with token index \ti, the current token
+ index of every coded block will be \ti\ or greater.
+
+If an EOB run of $n$ blocks is decoded at token index \ti, then it ends the
+ next $n$ blocks in coded block order whose current token index is equal to
+ \ti, but not greater.
+If there are fewer than $n$ blocks with a current token index of \ti, then the
+ decoder goes through the coded block list again from the start, ending blocks
+ with a current token index of $\ti+1$, and so on, until $n$ blocks have been
+ ended.
+
+Tokens are read by parsing a Huffman code that depends on \ti\ and the color
+ plane of the next coded block whose current token index is equal to \ti, but
+ not greater.
+The Huffman codebooks are selected on a per-frame basis from the 80 codebooks
+ defined in the setup header.
+Many tokens have a fixed number of \term{extra bits} associated with them.
+These bits are read from the packet immediately after the token is decoded.
+These are used to define things such as coefficient magnitude, sign, and the
+ length of runs.
+
+\paragraph{DC Prediction}
+
+After the coefficients for each block are decoded, the quantized DC value of
+ each block is adjusted based on the DC values of its neighbors.
+This adjustment is performed by scanning the blocks in raster order, not coded
+ block order.
+
+\paragraph{Reconstruction}
+
+Finally, using the coding mode, motion vector (if applicable), quantized
+ coefficient list, and \qi\ value defined for each block, all the coded blocks
+ are reconstructed.
+The DCT coefficients are dequantized, an inverse DCT transform is applied, and
+ the predictor is formed from the coding mode and motion vector and added to
+ the result.
+
+\paragraph{Loop Filtering}
+
+To complete the reconstructed frame, an ``in-loop'' deblocking filter is
+ applied to the edges of all coded blocks.
+
+
+\chapter{Video Formats}
+
+This section gives a precise description of the video formats that Theora is
+ capable of storing.
+The Theora bitstream is capable of handling video at any arbitrary resolution
+ up to $1048560\times 1048560$.
+Such video would require almost three terabytes of storage per frame for
+ uncompressed data, so compliant decoders MAY refuse to decode images with
+ sizes beyond their capabilities.
+%TODO: What MUST a "compliant" decoder accept?
+%TODO: What SHOULD a decoder use for an upper bound? (derive from total amount
+%TODO: of memory and memory bandwidth)
+%TODO: Any lower limits?
+%TODO: We really need hardware device profiles, but such things should be
+%TODO: developed with input from the hardware community.
+%TODO: And even then sometimes they're useless
+
+The remainder of this section talks about two specific aspects of the video
+ format: the color space and the pixel format.
+The first describes how color is represented and how to transform that color
+ representation into a device independent color space such as CIE $XYZ$ (1931).
+The second describes the various schemes for sampling the color values in time
+ and space.
+
+\section{Color Space Conventions}
+
+There are a large number of different color standards used in digital video.
+Since Theora is a lossy codec, it restricts itself to only a few of them to
+ simplify playback.
+Unlike the alternate method of describing all the parameters of the color
+ model, this allows a few dedicated routines for color conversion to be written
+ and heavily optimized in a decoder.
+More flexible conversion functions should instead be specified in an encoder,
+ where additional computational complexity is more easily tolerated.
+The color spaces were selected to give a fair representation of color standards
+ in use around the world today.
+Most of the standards that do not exactly match one of these can be converted
+ to one fairly easily.
+
+All Theora color spaces are $Y'C_bC_r$ color spaces with one luma channel and
+ two chroma channels.
+Each channel contains 8-bit discrete values in the range $0\ldots255$, which
+ represent non-linear gamma pre-corrected signals.
+The Theora identification header contains an 8-bit value that describes the
+ color space.
+This merely selects one of the color spaces available from an enumerated list.
+Currently, only two color spaces are defined, with a third possibility that
+ indicates the color space is ``unknown".
+
+\section{Color Space Conversions and Parameters}
+\label{sec:color-xforms}
+
+The parameters which describe the conversions between each color space are
+ listed below.
+These are the parameters needed to map colors from the encoded $Y'C_bC_r$
+ representation to the device-independent color space CIE $XYZ$ (1931).
+These parameters define abstract mathematical conversion functions which are
+ infinitely precise.
+The accuracy and precision with which the conversions are performed in a real
+ system is determined by the quality of output desired and the available
+ processing power.
+Exact decoder output is defined by this specification only in the original
+ $Y'C_bC_r$ space.
+
+\begin{description}
+\item[$Y'C_bC_r$ to $Y'P_bP_r$:]
+\vspace{\baselineskip}\hfill
+
+This conversion takes 8-bit discrete values in the range $[0\ldots255]$ and
+ maps them to real values in the range $[0\ldots1]$ for Y and
+ $[-\frac{1}{2}\ldots\frac{1}{2}]$ for $P_b$ and $P_r$.
+Because some values may fall outside the offset and excursion defined for each
+ channel in the $Y'C_bC_r$ space, the results may fall outside these ranges in
+ $Y'P_bP_r$ space.
+No clamping should be done at this stage.
+
+\begin{align}
+Y'_\mathrm{out} & =
+ \frac{Y'_\mathrm{in}-\mathrm{Offset}_Y}{\mathrm{Excursion}_Y} \\
+P_b & =
+ \frac{C_b-\mathrm{Offset}_{C_b}}{\mathrm{Excursion}_{C_b}} \\
+P_r & =
+ \frac{C_r-\mathrm{Offset}_{C_r}}{\mathrm{Excursion}_{C_r}}
+\end{align}
+
+Parameters: $\mathrm{Offset}_{Y,C_b,C_r}$, $\mathrm{Excursion}_{Y,C_b,C_r}$.
+
+\item[$Y'P_bP_r$ to $R'G'B'$:]
+\vspace{\baselineskip}\hfill
+
+This conversion takes the one luma and two chroma channel representation and
+ maps it to the non-linear $R'G'B'$ space used to drive actual output devices.
+Values should be clamped into the range $[0\ldots1]$ after this stage.
+
+\begin{align}
+R' & = Y'+2(1-K_r)P_r \\
+G' & = Y'-2\frac{(1-K_b)K_b}{1-K_b-K_r}P_b-2\frac{(1-K_r)K_r}{1-K_b-K_r}P_r\\
+B' & = Y'+2(1-K_b)P_b
+\end{align}
+
+Parameters: $K_b,K_r$.
+
+\item[$R'G'B'$ to $RGB$ (Output device gamma correction):]
+\vspace{\baselineskip}\hfill
+
+This conversion takes the non-linear $R'G'B'$ voltage levels and maps them to
+ linear light levels produced by the actual output device.
+Note that this conversion is only that of the output device, and its inverse is
+ {\em not} that used by the input device.
+Because a dim viewing environment is assumed in most television standards, the
+ overall gamma between the input and output devices is usually around $1.1$ to
+ $1.2$, and not a strict $1.0$.
+
+For calibration with actual output devices, the model
+\begin{align}
+L & =(E'+\Delta)^\gamma
+\end{align}
+ should be used, with $\Delta$ the free parameter and $\gamma$ held fixed to
+ the value specified in this document.
+The conversion function presented here is an idealized version with $\Delta=0$.
+
+\begin{align}
+R & = R'^\gamma \\
+G & = G'^\gamma \\
+B & = B'^\gamma
+\end{align}
+
+Parameters: $\gamma$.
+
+\item[$RGB$ to $R'G'B'$ (Input device gamma correction):]
+\vspace{\baselineskip}\hfill
+
+%TODO: Tag section as non-normative
+
+This conversion takes linear light levels and maps them to the non-linear
+ voltage levels produced in the actual input device.
+This information is merely informative.
+It is not required for building a decoder or for converting between the various
+ formats and the actual output capabilities of a particular device.
+
+A linear segment is introduced on the low end to reduce noise in dark areas of
+ the image.
+The rest of the scale is adjusted so that the power segment of the curve
+ intersects the linear segment with the proper slope, and so that it still maps
+ 0 to 0 and 1 to 1.
+
+\begin{align}
+R' & = \left\{
+\begin{array}{ll}
+\alpha R, & 0\le R<\delta \\
+(1+\epsilon)R^\beta-\epsilon, & \delta\le R\le1
+\end{array}\right. \\
+G' & = \left\{
+\begin{array}{ll}
+\alpha G, & 0\le G<\delta \\
+(1+\epsilon)G^\beta-\epsilon, & \delta\le G\le1
+\end{array}\right. \\
+B' & = \left\{
+\begin{array}{ll}
+\alpha B, & 0\le B<\delta \\
+(1+\epsilon)B^\beta-\epsilon, & \delta\le B\le1
+\end{array}\right.
+\end{align}
+
+Parameters: $\beta$, $\alpha$, $\delta$, $\epsilon$.
+
+\item[$RGB$ to CIE $XYZ$ (1931):]
+\vspace{\baselineskip}\hfill
+
+This conversion maps a device-dependent linear RGB space to the
+ device-independent linear CIE $XYZ$ space.
+The parameters are the CIE chromaticity coordinates of the three
+ primaries---red, green, and blue---as well as the chromaticity coordinates
+ of the white point of the device.
+This is how hardware manufacturers and standards typically describe a
+ particular $RGB$ space.
+The math required to convert these parameters into a useful transformation
+ matrix is reproduced below.
+
+\begin{align}
+F & =
+\left[\begin{array}{ccc}
+\frac{x_r}{y_r} & \frac{x_g}{y_g} & \frac{x_b}{y_b} \\
+1 & 1 & 1 \\
+\frac{1-x_r-y_r}{y_r} & \frac{1-x_g-y_g}{y_g} & \frac{1-x_b-y_b}{y_b}
+\end{array}\right] \\
+\left[\begin{array}{c}
+s_r \\
+s_g \\
+s_b
+\end{array}\right] & =
+F^{-1}\left[\begin{array}{c}
+\frac{x_w}{y_w} \\
+1 \\
+\frac{1-x_w-y_w}{y_w}
+\end{array}\right] \\
+\left[\begin{array}{c}
+X \\
+Y \\
+Z
+\end{array}\right] & =
+F\left[\begin{array}{c}
+s_rR \\
+s_gG \\
+s_bB
+\end{array}\right]
+\end{align}
+Parameters: $x_r,x_g,x_b,x_w, y_r,y_g,y_b,y_w$.
+
+\end{description}
+
+\section{Available Color Spaces}
+\label{sec:colorspaces}
+
+These are the color spaces currently defined for use by Theora video.
+Each one has a short name, with which it is referred to in this document, and
+ a more detailed specification of the standards from which its parameters are
+ derived.
+Some standards do not specify all the parameters necessary.
+For these unspecified parameters, this document serves as the definition of
+ what should be used when encoding or decoding Theora video.
+
+\subsection{Rec.~470M (Rec.~ITU-R~BT.470-6 System M/NTSC with
+ Rec.~ITU-R~BT.601-5)}
+\label{sec:470m}
+
+This color space is used by broadcast television and DVDs in much of the
+ Americas, Japan, Korea, and the Union of Myanmar \cite{rec470}.
+This color space may also be used for System M/PAL (Brazil), with an
+ appropriate conversion supplied by the encoder to compensate for the
+ different gamma value.
+See Section~\ref{sec:470bg} for an appropriate gamma value to assume for M/PAL
+ input.
+
+In the US, studio monitors are adjusted to a D65 white point
+ ($x_w,y_w=0.313,0.329$).
+In Japan, studio monitors are adjusted to a D white of 9300K
+ ($x_w,y_w=0.285,0.293$).
+
+Rec.~470 does not specify a digital encoding of the color signals.
+For Theora, Rec.~ITU-R~BT.601-5 \cite{rec601} is used, starting from the
+ $R'G'B'$ signals specified by Rec.~470.
+
+Rec.~470 does not specify an input gamma function.
+For Theora, the Rec.~709 \cite{rec709} input function is assumed.
+This is the same as that specified by SMPTE 170M \cite{smpte170m}, which claims
+ to reflect modern practice in the creation of NTSC signals circa 1994.
+
+The parameters for all the color transformations defined in
+ Section~\ref{sec:color-xforms} are given in Table~\ref{tab:470m}.
+
+\begin{table}[htb]
+\begin{align*}
+\mathrm{Offset}_{Y,C_b,C_r} & = (16, 128, 128) \\
+\mathrm{Excursion}_{Y,C_b,C_r} & = (219, 224, 224) \\
+K_r & = 0.299 \\
+K_b & = 0.114 \\
+\gamma & = 2.2 \\
+\beta & = 0.45 \\
+\alpha & = 4.5 \\
+\delta & = 0.018 \\
+\epsilon & = 0.099 \\
+x_r,y_r & = 0.67, 0.33 \\
+x_g,y_g & = 0.21, 0.71 \\
+x_b,y_b & = 0.14, 0.08 \\
+\text{(Illuminant C) } x_w,y_w & = 0.310, 0.316 \\
+\end{align*}
+\caption{Rec.~470M Parameters}
+\label{tab:470m}
+\end{table}
+
+\subsection{Rec.~470BG (Rec.~ITU-R~BT.470-6 Systems B and G with
+ Rec.~ITU-R~BT.601-5)}
+\label{sec:470bg}
+
+This color space is used by the PAL and SECAM systems in much of the rest of
+ the world \cite{rec470}
+This can be used directly by systems (B, B1, D, D1, G, H, I, K, N)/PAL and (B,
+ D, G, H, K, K1, L)/SECAM\@.
+
+\begin{verse}
+{\bf Note:} the Rec.~470BG chromaticity values are different from those
+ specified in Rec.~470M\@.
+When PAL and SECAM systems were first designed, they were based upon the same
+ primaries as NTSC\@.
+However, as methods of making color picture tubes have changed, the primaries
+ used have changed as well.
+The U.S. recommends using correction circuitry to approximate the existing,
+ standard NTSC primaries.
+Current PAL and SECAM systems have standardized on primaries in accord with
+ more recent technology.
+\end{verse}
+
+Rec.~470 provisionally permits the use of the NTSC chromaticity values (given
+ in Section~\ref{sec:470m}) with legacy PAL and SECAM equipment.
+In Theora, material must be decoded assuming the new PAL and SECAM primaries.
+Material intended for display on old legacy devices should be converted by the
+ decoder.
+
+The official Rec.~470BG specifies a gamma value of $\gamma=2.8$.
+However, in practice this value is unrealistically high \cite{Poyn97}.
+Rec.~470BG states that the overall system gamma should be approximately
+ $\gamma\beta=1.2$.
+Since most cameras pre-correct with a gamma value of $\beta=0.45$,
+ this suggests an output device gamma of approximately $\gamma=2.67$.
+This is the value recommended for use with PAL systems in Theora.
+
+Rec.~470 does not specify a digital encoding of the color signals.
+For Theora, Rec.~ITU-R~BT.601-5 \cite{rec601} is used, starting from the
+ $R'G'B'$ signals specified by Rec.~470.
+
+Rec.~470 does not specify an input gamma function.
+For Theora, the Rec 709 \cite{rec709} input function is assumed.
+
+The parameters for all the color transformations defined in
+ Section~\ref{sec:color-xforms} are given in Table~\ref{tab:470bg}.
+
+\begin{table}[htb]
+\begin{align*}
+\mathrm{Offset}_{Y,C_b,C_r} & = (16, 128, 128) \\
+\mathrm{Excursion}_{Y,C_b,C_r} & = (219, 224, 224) \\
+K_r & = 0.299 \\
+K_b & = 0.114 \\
+\gamma & = 2.67 \\
+\beta & = 0.45 \\
+\alpha & = 4.5 \\
+\delta & = 0.018 \\
+\epsilon & = 0.099 \\
+x_r,y_r & = 0.64, 0.33 \\
+x_g,y_g & = 0.29, 0.60 \\
+x_b,y_b & = 0.15, 0.06 \\
+\text{(D65) } x_w,y_w & = 0.313, 0.329 \\
+\end{align*}
+\caption{Rec.~470BG Parameters}
+\label{tab:470bg}
+\end{table}
+
+\section{Pixel Formats}
+\label{sec:pixfmts}
+
+Theora supports several different pixel formats, each of which uses different
+ subsampling for the chroma planes relative to the luma plane.
+A decoder may need to recover a full resolution chroma plane with samples
+ co-sited with the luma plane in order to convert to RGB for display or perform
+ other processing.
+Decoders can assume that the chroma signal satisfies the Nyquist-Shannon
+ sampling theorem.
+The ideal low-pass reconstruction filter this implies is not practical, but any
+ suitable approximation can be used, depending on the available computing
+ power.
+Decoders MAY simply use a box filter, assigning to each luma sample the chroma
+ sample closest to it.
+Encoders would not go wrong in assuming that this will be the most common
+ approach.
+
+\subsection{4:4:4 Subsampling}
+\label{sec:444}
+
+All three color planes are stored at full resolution---each pixel has a $Y'$,
+ a $C_b$ and a $C_r$ value (see Figure~\ref{fig:pixel444}).
+The samples in the different planes are all at co-located sites.
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics{pixel444}
+\end{center}
+\caption{Pixels encoded 4:4:4}
+\label{fig:pixel444}
+\end{figure}
+
+% Figure.
+%YRB YRB
+%
+%
+%
+%YRB YRB
+%
+%
+%
+
+
+\subsection{4:2:2 Subsampling}
+\label{sec:422}
+
+The $C_b$ and $C_r$ planes are stored with half the horizontal resolution of
+ the $Y'$ plane.
+Thus, each of these planes has half the number of horizontal blocks as the luma
+ plane (see Figure~\ref{fig:pixel422}).
+Similarly, they have half the number of horizontal super blocks, rounded up.
+Macro blocks are defined across color planes, and so their number does not
+ change, but each macro block contains half as many chroma blocks.
+
+The chroma samples are vertically aligned with the luma samples, but
+ horizontally centered between two luma samples.
+Thus, each luma sample has a unique closest chroma sample.
+A horizontal phase shift may be required to produce signals which use different
+ horizontal chroma sampling locations for compatibility with different systems.
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics{pixel422}
+\end{center}
+\caption{Pixels encoded 4:2:2}
+\label{fig:pixel422}
+\end{figure}
+
+% Figure.
+%Y RB Y Y RB Y
+%
+%
+%
+%Y RB Y Y RB Y
+%
+%
+%
+
+\subsection{4:2:0 Subsampling}
+\label{sec:420}
+
+The $C_b$ and $C_r$ planes are stored with half the horizontal and half the
+ vertical resolution of the $Y'$ plane.
+Thus, each of these planes has half the number of horizontal blocks and half
+ the number of vertical blocks as the luma plane, for a total of one quarter
+ the number of blocks (see Figure~\ref{fig:pixel420}).
+Similarly, they have half the number of horizontal super blocks and half the
+ number of vertical super blocks, rounded up.
+Macro blocks are defined across color planes, and so their number does not
+ change, but each macro block contains within it one quarter as many
+ chroma blocks.
+
+The chroma samples are vertically and horizontally centered between four luma
+ samples.
+Thus, each luma sample has a unique closest chroma sample.
+This is the same sub-sampling pattern used with JPEG, MJPEG, and MPEG-1, and
+ was inherited from VP3.
+A horizontal or vertical phase shift may be required to produce signals which
+ use different chroma sampling locations for compatibility with different
+ systems.
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics{pixel420}
+\end{center}
+\caption{Pixels encoded 4:2:0}
+\label{fig:pixel420}
+\end{figure}
+
+% Figure.
+%Y Y Y Y
+%
+% RB RB
+%
+%Y Y Y Y
+%
+%
+%
+%Y Y Y Y
+%
+% RB RB
+%
+%Y Y Y Y
+%
+%
+%
+
+\subsection{Subsampling and the Picture Region}
+
+Although the frame size must be an integral number of macro blocks, and thus
+ both the number of pixels and the number of blocks in each direction must be
+ even, no such requirement is made of the picture region.
+Thus, when using subsampled pixel formats, careful attention must be paid to
+ which chroma samples correspond to which luma samples.
+
+As mentioned above, for each pixel format, there is a unique chroma sample that
+ is the closest to each luma sample.
+When cropping the chroma planes to the picture region, all the chroma samples
+ corresponding to a luma sample in the cropped picture region must be included.
+Thus, when dividing the width or height of the picture region by two to obtain
+ the size of the subsampled chroma planes, they must be rounded up.
+
+Furthermore, the sampling locations are defined relative to the frame,
+ {\em not} the picture region.
+When using the 4:2:2 and 4:2:0 formats, the locations of chroma samples
+ relative to the luma samples depends on whether or not the X offset of the
+ picture region is odd.
+If the offset is even, each column of chroma samples corresponds to two columns
+ of luma samples (see Figure~\ref{fig:pic_even} for an example).
+The only exception is if the width is odd, in which case the last column
+ corresponds to only one column of luma samples (see Figure~\ref{fig:pic_even_odd}).
+If the offset is odd, then the first column of chroma samples corresponds to
+ only one column of luma samples, while the remaining columns each correspond
+ to two (see Figure~\ref{fig:pic_odd}).
+In this case, if the width is even, the last column again corresponds to only
+ one column of luma samples (see Figure~\ref{fig:pic_odd_even}).
+
+A similar process is followed with the rows of a picture region of odd height
+ encoded in the 4:2:0 format.
+If the Y offset is even, each row of chroma samples corresponds to two rows of
+ luma samples (see Figure~\ref{fig:pic_even}), except with an odd height, where
+ the last row corresponds to one row of chroma luna samples only (see
+ Figure~\ref{fig:pic_even_odd}).
+If the offset is odd, then it is the first row of chroma samples which
+ corresponds to only one row of luma samples, while the remaining rows each
+ correspond to two (Figure~\ref{fig:pic_odd}), except with an even height,
+ where the last row also corresponds to one (Figure~\ref{fig:pic_odd_even}).
+
+Encoders should be aware of these differences in the subsampling when using an
+ even or odd offset.
+In the typical case, with an even width and height, where one expects two rows
+ or columns of luma samples for every row or column of chroma samples, the
+ encoder must take care to ensure that the offsets used are both even.
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics[width=\textwidth]{pic_even}
+\end{center}
+\caption{Pixel correspondence between color planes with even picture
+ offset and even picture size}
+\label{fig:pic_even}
+\end{figure}
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics[width=\textwidth]{pic_even_odd}
+\end{center}
+\caption{Pixel correspondence with even picture offset and
+ odd picture size}
+\label{fig:pic_even_odd}
+\end{figure}
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics[width=\textwidth]{pic_odd}
+\end{center}
+\caption{Pixel correspondence with odd picture offset and
+ odd picture size}
+\label{fig:pic_odd}
+\end{figure}
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics[width=\textwidth]{pic_odd_even}
+\end{center}
+\caption{Pixel correspondence with odd picture offset and
+ even picture size}
+\label{fig:pic_odd_even}
+\end{figure}
+
+
+\chapter{Bitpacking Convention}
+\label{sec:bitpacking}
+
+\section{Overview}
+
+The Theora codec uses relatively unstructured raw packets containing
+ binary integer fields of arbitrary width.
+Logically, each packet is a bitstream in which bits are written one-by-one by
+ the encoder and then read one-by-one in the same order by the decoder.
+Most current binary storage arrangements group bits into a native storage unit
+ of eight bits (octets), sixteen bits, thirty-two bits, or less commonly other
+ fixed sizes.
+The Theora bitpacking convention specifies the correct mapping of the logical
+ packet bitstream into an actual representation in fixed-width units.
+
+\subsection{Octets and Bytes}
+
+In most contemporary architectures, a `byte' is synonymous with an `octect',
+ that is, eight bits.
+For purposes of the bitpacking convention, a byte implies the smallest native
+ integer storage representation offered by a platform.
+Modern file systems invariably offer bytes as the fundamental atom of storage.
+
+The most ubiquitous architectures today consider a `byte' to be an octet.
+Note, however, that the Theora bitpacking convention is still well defined for
+ any native byte size; an implementation can use the native bit-width of a
+ given storage system.
+This document assumes that a byte is one octet for purposes of example only.
+
+\subsection{Words and Byte Order}
+
+A `word' is an integer size that is a grouped multiple of the byte size.
+Most architectures consider a word to be a group of two, four, or eight bytes.
+Each byte in the word can be ranked by order of `significance', e.g.\ the
+ significance of the bits in each byte when storing a binary integer in the
+ word.
+Several byte orderings are possible in a word.
+The common ones are
+\begin{itemize}
+\item{Big-endian:}
+in which the most significant byte comes first, e.g.\ 3-2-1-0,
+\item{Little-endian:}
+in which the least significant byte comes first, e.g.\ 0-1-2-3, and
+\item{Mixed-endian:}
+one of the less-common orderings that cannot be put into the above two
+ categories, e.g.\ 3-1-2-0 or 0-2-1-3.
+\end{itemize}
+
+The Theora bitpacking convention specifies storage and bitstream manipulation
+ at the byte, not word, level.
+Thus host word ordering is of a concern only during optimization, when writing
+ code that operates on a word of storage at a time rather than a byte.
+Logically, bytes are always encoded and decoded in order from byte zero through
+ byte $n$.
+
+\subsection{Bit Order}
+
+A byte has a well-defined `least significant' bit (LSb), which is the only bit
+ set when the byte is storing the two's complement integer value $+1$.
+A byte's `most significant' bit (MSb) is at the opposite end.
+Bits in a byte are numbered from zero at the LSb to $n$ for the MSb, where
+ $n=7$ in an octet.
+
+\section{Coding Bits into Bytes}
+
+The Theora codec needs to encode arbitrary bit-width integers from zero to 32
+ bits wide into packets.
+These integer fields are not aligned to the boundaries of the byte
+ representation; the next field is read at the bit position immediately
+ after the end of the previous field.
+
+The decoder logically unpacks integers by first reading the MSb of a binary
+ integer from the logical bitstream, followed by the next most significant
+ bit, etc., until the required number of bits have been read.
+When unpacking the bytes into bits, the decoder begins by reading the MSb of
+ the integer to be read from the most significant unread bit position of the
+ source byte, followed by the next-most significant bit position of the
+ destination integer, and so on up to the requested number of bits.
+Note that this differs from the Vorbis I codec, which
+ begins decoding with the LSb of the source integer, reading it from the
+ LSb of the source byte.
+When all the bits of the current source byte are read, decoding continues with
+ the MSb of the next byte.
+Any unfilled bits in the last byte of the packet MUST be cleared to zero by the
+ encoder.
+
+\subsection{Signedness}
+
+The binary integers decoded by the above process may be either signed or
+ unsigned.
+This varies from integer to integer, and this specification
+ indicates how each value should be interpreted as it is read.
+That is, depending on context, the three bit binary pattern \bin{111} can be
+ taken to represent either `$7$' as an unsigned integer or `$-1$' as a signed,
+ two's complement integer.
+
+\subsection{Encoding Example}
+
+The following example shows the state of an (8-bit) byte stream after several
+ binary integers are encoded, including the location of the put pointer for the
+ next bit to write to and the total length of the stream in bytes.
+
+Encode the 4 bit unsigned integer value `12' (\bin{1100}) into an empty byte
+ stream.
+
+\begin{tabular}{r|ccccccccl}
+\multicolumn{1}{r}{}& &&&&$\downarrow$&&&& \\
+ & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 & \\\cline{1-9}
+byte 0 & \textbf{1} & \textbf{1} & \textbf{0} & \textbf{0} &
+ 0 & 0 & 0 & 0 & $\leftarrow$ \\
+byte 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \\
+byte 2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \\
+byte 3 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \\
+\multicolumn{1}{c|}{$\vdots$}&\multicolumn{8}{c}{$\vdots$}& \\
+byte $n$ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &
+byte stream length: 1 byte
+\end{tabular}
+\vspace{\baselineskip}
+
+Continue by encoding the 3 bit signed integer value `-1' (\bin{111}).
+
+\begin{tabular}{r|ccccccccl}
+\multicolumn{1}{r}{} &&&&&&&&$\downarrow$& \\
+ & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 & \\\cline{1-9}
+byte 0 & \textbf{1} & \textbf{1} & \textbf{0} & \textbf{0} &
+ \textbf{1} & \textbf{1} & \textbf{1} & 0 & $\leftarrow$ \\
+byte 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \\
+byte 2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \\
+byte 3 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \\
+\multicolumn{1}{c|}{$\vdots$}&\multicolumn{8}{c}{$\vdots$}& \\
+byte $n$ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &
+byte stream length: 1 byte
+\end{tabular}
+\vspace{\baselineskip}
+
+Continue by encoding the 7 bit integer value `17' (\bin{0010001}).
+
+\begin{tabular}{r|ccccccccl}
+\multicolumn{1}{r}{} &&&&&&&$\downarrow$&& \\
+ & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 & \\\cline{1-9}
+byte 0 & \textbf{1} & \textbf{1} & \textbf{0} & \textbf{0} &
+ \textbf{1} & \textbf{1} & \textbf{1} & \textbf{0} & \\
+byte 1 & \textbf{0} & \textbf{1} & \textbf{0} & \textbf{0} &
+ \textbf{0} & \textbf{1} & 0 & 0 & $\leftarrow$ \\
+byte 2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \\
+byte 3 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \\
+\multicolumn{1}{c|}{$\vdots$}&\multicolumn{8}{c}{$\vdots$}& \\
+byte $n$ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &
+byte stream length: 2 bytes
+\end{tabular}
+\vspace{\baselineskip}
+
+Continue by encoding the 13 bit integer value `6969' (\bin{11011\ 00111001}).
+
+\begin{tabular}{r|ccccccccl}
+\multicolumn{1}{r}{} &&&&$\downarrow$&&&&& \\
+ & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 & \\\cline{1-9}
+byte 0 & \textbf{1} & \textbf{1} & \textbf{0} & \textbf{0} &
+ \textbf{1} & \textbf{1} & \textbf{1} & \textbf{0} & \\
+byte 1 & \textbf{0} & \textbf{1} & \textbf{0} & \textbf{0} &
+ \textbf{0} & \textbf{1} & \textbf{1} & \textbf{1} & \\
+byte 2 & \textbf{0} & \textbf{1} & \textbf{1} & \textbf{0} &
+ \textbf{0} & \textbf{1} & \textbf{1} & \textbf{1} & \\
+byte 3 & \textbf{0} & \textbf{0} & \textbf{1} &
+ 0 & 0 & 0 & 0 & 0 & $\leftarrow$ \\
+\multicolumn{1}{c|}{$\vdots$}&\multicolumn{8}{c}{$\vdots$}& \\
+byte $n$ & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 &
+byte stream length: 4 bytes
+\end{tabular}
+\vspace{\baselineskip}
+
+\subsection{Decoding Example}
+
+The following example shows the state of the (8-bit) byte stream encoded in the
+ previous example after several binary integers are decoded, including the
+ location of the get pointer for the next bit to read.
+
+Read a two bit unsigned integer from the example encoded above.
+
+\begin{tabular}{r|ccccccccl}
+\multicolumn{1}{r}{} &&&$\downarrow$&&&&&& \\
+ & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 & \\\cline{1-9}
+byte 0 & \textbf{1} & \textbf{1} & 0 & 0 & 1 & 1 & 1 & 0 & $\leftarrow$ \\
+byte 1 & 0 & 1 & 0 & 0 & 0 & 1 & 1 & 1 & \\
+byte 2 & 0 & 1 & 1 & 0 & 0 & 1 & 1 & 1 & \\
+byte 3 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 &
+byte stream length: 4 bytes
+\end{tabular}
+\vspace{\baselineskip}
+
+Value read: 3 (\bin{11}).
+
+Read another two bit unsigned integer from the example encoded above.
+
+\begin{tabular}{r|ccccccccl}
+\multicolumn{1}{r}{} &&&&&$\downarrow$&&&& \\
+ & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 & \\\cline{1-9}
+byte 0 & \textbf{1} & \textbf{1} & \textbf{0} & \textbf{0} &
+ 1 & 1 & 1 & 0 & $\leftarrow$ \\
+byte 1 & 0 & 1 & 0 & 0 & 0 & 1 & 1 & 1 & \\
+byte 2 & 0 & 1 & 1 & 0 & 0 & 1 & 1 & 1 & \\
+byte 3 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 &
+byte stream length: 4 bytes
+\end{tabular}
+\vspace{\baselineskip}
+
+Value read: 0 (\bin{00}).
+
+Two things are worth noting here.
+\begin{itemize}
+\item
+Although these four bits were originally written as a single four-bit integer,
+ reading some other combination of bit-widths from the bitstream is well
+ defined.
+No artificial alignment boundaries are maintained in the bitstream.
+\item
+The first value is the integer `$3$' only because the context stated we were
+ reading an unsigned integer.
+Had the context stated we were reading a signed integer, the returned value
+ would have been the integer `$-1$'.
+\end{itemize}
+
+\subsection{End-of-Packet Alignment}
+
+The typical use of bitpacking is to produce many independent byte-aligned
+ packets which are embedded into a larger byte-aligned container structure,
+ such as an Ogg transport bitstream.
+Externally, each bitstream encoded as a byte stream MUST begin and end on a
+ byte boundary.
+Often, the encoded packet bitstream is not an integer number of bytes, and so
+ there is unused space in the last byte of a packet.
+
+%r: I think the generality here is necessary to be consistent with our assertions
+%r: elsewhere about being independent of transport and byte width
+When a Theora encoder produces packets for embedding in a byte-aligned
+ container, unused space in the last byte of a packet is always zeroed during
+ the encoding process.
+Thus, should this unused space be read, it will return binary zeroes.
+There is no marker pattern or stuffing bits that will allow the decoder to
+ obtain the exact size, in bits, of the original bitstream.
+This knowledge is not required for decoding.
+
+Attempting to read past the end of an encoded packet results in an
+ `end-of-packet' condition.
+Any further read operations after an `end-of-packet' condition shall also
+ return `end-of-packet'.
+Unlike Vorbis, Theora does not use truncated packets as a normal mode of
+ operation.
+Therefore if a decoder encounters the `end-of-packet' condition during normal
+ decoding, it may attempt to use the bits that were read to recover as much of
+ encoded data as possible, signal a warning or error, or both.
+
+\subsection{Reading Zero Bit Integers}
+
+Reading a zero bit integer returns the value `$0$' and does not increment
+ the stream pointer.
+Reading to the end of the packet, but not past the end, so that an
+ `end-of-packet' condition is not triggered, and then reading a zero bit
+ integer shall succeed, returning `$0$', and not trigger an `end-of-packet'
+ condition.
+Reading a zero bit integer after a previous read sets the `end-of-packet'
+ condition shall fail, also returning `end-of-packet'.
+
+\chapter{Bitstream Headers}
+\label{sec:headers}
+
+A Theora bitstream begins with three header packets.
+The header packets are, in order, the identification header, the comment
+ header, and the setup header.
+All are required for decode compliance.
+An end-of-packet condition encountered while decoding the identification or
+ setup header packets renders the stream undecodable.
+An end-of-packet condition encountered while decode the comment header is a
+ non-fatal error condition, and MAY be ignored by a decoder.
+
+\paragraph{VP3 Compatibility}
+
+VP3 relies on the headers provided by its container, usually either AVI or
+ Quicktime.
+As such, several parameters available in these headers are not available to VP3
+ streams.
+These are indicated as they appear in the sections below.
+
+\section{Common Header Decode}
+\label{sub:common-header}
+
+\begin{figure}[Htbp]
+\begin{center}
+\begin{verbatim}
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | header type | `t' | `h' | `e' |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | `o' | `r' | `a' | data... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... header-specific data ... |
+ | ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+\end{verbatim}
+\end{center}
+\caption{Common Header Packet Layout}
+\label{fig:commonheader}
+\end{figure}
+
+
+\paragraph{Input parameters:} None.
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{HEADERTYPE} & Integer & 8 & No & The type of the header being
+ decoded. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:} None.
+\medskip
+
+Each header packet begins with the same header fields, which are decoded as
+ follows:
+
+\begin{enumerate}
+\item
+Read an 8-bit unsigned integer as \bitvar{HEADERTYPE}.
+If the most significant bit of this integer is not set, then stop.
+This is not a header packet.
+\item
+Read 6 8-bit unsigned integers.
+If these do not have the values \hex{74}, \hex{68}, \hex{65}, \hex{6F},
+ \hex{72}, and \hex{61}, respectively, then stop.
+This stream is not decodable by this specification.
+These values correspond to the ASCII values of the characters `t', `h', `e',
+ `o', `r', and `a'.
+\end{enumerate}
+
+Decode continues according to \bitvar{HEADERTYPE}.
+The identification header is type \hex{80}, the comment header is type
+ \hex{81}, and the setup header is type \hex{82}.
+These packets must occur in the order: identification, comment, setup.
+%r: I clarified the initial-bit scheme here
+%TBT: Dashes let the reader know they'll have to pick up the rest of the
+%TBT: sentence after the explanatory phrase.
+%TBT: Otherwise it just sounds like the bit must exist.
+All header packets have the most significant bit of the type
+ field---which is the initial bit in the packet---set.
+This distinguishes them from video data packets in which the first bit
+ is unset.
+% extra header packets are a feature Dan argued for way back when for
+% backward-compatible extensions (and icc colourspace for example)
+% I think it's reasonable
+%TBT: You can always just stick more stuff in the setup header.
+Packets with other header types (\hex{83}--\hex{FF}) are reserved and MUST be
+ ignored.
+
+\section{Identification Header Decode}
+\label{sec:idheader}
+
+\begin{figure}[Htbp]
+\begin{center}
+\begin{verbatim}
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 0x80 | `t' | `h' | `e' |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | `o' | `r' | `a' | VMAJ |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | VMIN | VREV | FMBW |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | FMBH | PICW... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ...PICW | PICH |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | PICX | PICY | FRN... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ...FRN | FRD... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ...FRD | PARN... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ...PARN | PARD |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | CS | NOMBR |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | QUAL | KFGSHIFT| PF| Res |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+\end{verbatim}
+\end{center}
+\caption{Identification Header Packet}
+\label{fig:idheader}
+\end{figure}
+
+\paragraph{Input parameters:} None.
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{VMAJ} & Integer & 8 & No & The major version number. \\
+\bitvar{VMIN} & Integer & 8 & No & The minor version number. \\
+\bitvar{VREV} & Integer & 8 & No & The version revision number. \\
+\bitvar{FMBW} & Integer & 16 & No & The width of the frame in macro
+ blocks. \\
+\bitvar{FMBH} & Integer & 16 & No & The height of the frame in macro
+ blocks. \\
+\bitvar{NSBS} & Integer & 32 & No & The total number of super blocks in a
+ frame. \\
+\bitvar{NBS} & Integer & 36 & No & The total number of blocks in a
+ frame. \\
+\bitvar{NMBS} & Integer & 32 & No & The total number of macro blocks in a
+ frame. \\
+\bitvar{PICW} & Integer & 20 & No & The width of the picture region in
+ pixels. \\
+\bitvar{PICH} & Integer & 20 & No & The height of the picture region in
+ pixels. \\
+\bitvar{PICX} & Integer & 8 & No & The X offset of the picture region in
+ pixels. \\
+\bitvar{PICY} & Integer & 8 & No & The Y offset of the picture region in
+ pixels. \\
+\bitvar{FRN} & Integer & 32 & No & The frame-rate numerator. \\
+\bitvar{FRD} & Integer & 32 & No & The frame-rate denominator. \\
+\bitvar{PARN} & Integer & 24 & No & The pixel aspect-ratio numerator. \\
+\bitvar{PARD} & Integer & 24 & No & The pixel aspect-ratio denominator. \\
+\bitvar{CS} & Integer & 8 & No & The color space. \\
+\bitvar{PF} & Integer & 2 & No & The pixel format. \\
+\bitvar{NOMBR} & Integer & 24 & No & The nominal bitrate of the stream, in
+ bits per second. \\
+\bitvar{QUAL} & Integer & 6 & No & The quality hint. \\
+\bitvar{KFGSHIFT} & Integer & 5 & No & The amount to shift the key frame
+ number by in the granule position. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:} None.
+\medskip
+
+The identification header is a short header with only a few fields used to
+ declare the stream definitively as Theora and provide detailed information
+ about the format of the fully decoded video data.
+The identification header is decoded as follows:
+
+\begin{enumerate}
+\item
+Decode the common header fields according to the procedure described in
+ Section~\ref{sub:common-header}.
+If \bitvar{HEADERTYPE} returned by this procedure is not \hex{80}, then stop.
+This packet is not the identification header.
+\item
+Read an 8-bit unsigned integer as \bitvar{VMAJ}.
+If \bitvar{VMAJ} is not $3$, then stop.
+This stream is not decodable according to this specification.
+\item
+Read an 8-bit unsigned integer as \bitvar{VMIN}.
+If \bitvar{VMIN} is not $2$, then stop.
+This stream is not decodable according to this specification.
+\item
+Read an 8-bit unsigned integer as \bitvar{VREV}.
+If \bitvar{VREV} is greater than $1$, then this stream
+may contain optional features or interpretational changes
+documented in a future version of this specification.
+Regardless of the value of \bitvar{VREV}, the stream is decodable
+according to this specification.
+\item
+Read a 16-bit unsigned integer as \bitvar{FMBW}.
+This MUST be greater than zero.
+This specifies the width of the coded frame in macro blocks.
+The actual width of the frame in pixels is $\bitvar{FMBW}*16$.
+\item
+Read a 16-bit unsigned integer as \bitvar{FMBH}.
+This MUST be greater than zero.
+This specifies the height of the coded frame in macro blocks.
+The actual height of the frame in pixels is $\bitvar{FMBH}*16$.
+\item
+Read a 24-bit unsigned integer as \bitvar{PICW}.
+This MUST be no greater than $(\bitvar{FMBW}*16)$.
+Note that 24 bits are read, even though only 20 bits are sufficient to specify
+ any value of the picture width.
+This is done to preserve octet alignment in this header, to allow for a
+ simplified parser implementation.
+\item
+Read a 24-bit unsigned integer as \bitvar{PICH}.
+This MUST be no greater than $(\bitvar{FMBH}*16)$.
+Together with \bitvar{PICW}, this specifies the size of the displayable picture
+ region within the coded frame.
+See Figure~\ref{fig:pic-frame}.
+Again, 24 bits are read instead of 20.
+\item
+Read an 8-bit unsigned integer as \bitvar{PICX}.
+This MUST be no greater than $(\bitvar{FMBW}*16-\bitvar{PICX})$.
+\item
+Read an 8-bit unsigned integer as \bitvar{PICY}.
+This MUST be no greater than $(\bitvar{FMBH}*16-\bitvar{PICY})$.
+Together with \bitvar{PICX}, this specifies the location of the lower-left
+ corner of the displayable picture region.
+See Figure~\ref{fig:pic-frame}.
+\item
+Read a 32-bit unsigned integer as \bitvar{FRN}.
+This MUST be greater than zero.
+\item
+Read a 32-bit unsigned integer as \bitvar{FRD}.
+This MUST be greater than zero.
+Theora is a fixed-frame rate video codec.
+Frames are sampled at the constant rate of $\frac{\bitvar{FRN}}{\bitvar{FRD}}$
+ frames per second.
+The presentation time of the first frame is at zero seconds.
+No mechanism is provided to specify a non-zero offset for the initial
+ frame.
+\item
+Read a 24-bit unsigned integer as \bitvar{PARN}.
+\item
+Read a 24-bit unsigned integer as \bitvar{PARD}.
+Together with \bitvar{PARN}, these specify the aspect ratio of the pixels
+ within a frame, defined as the ratio of the physical width of a pixel to its
+ physical height.
+This is given by the ratio $\bitvar{PARN}:\bitvar{PARD}$.
+If either of these fields are zero, this indicates that pixel aspect ratio
+ information was not available to the encoder.
+In this case it MAY be specified by the application via an external means, or
+ a default value of $1:1$ MAY be used.
+\item
+Read an 8-bit unsigned integer as \bitvar{CS}.
+This is a value from an enumerated list of the available color spaces, given in
+ Table~\ref{tab:colorspaces}.
+The `Undefined' value indicates that color space information was not available
+ to the encoder.
+It MAY be specified by the application via an external means.
+If a reserved value is given, a decoder MAY refuse to decode the stream.
+\begin{table}[htbp]
+\begin{center}
+\begin{tabular*}{215pt}{cl@{\extracolsep{\fill}}c}\toprule
+Value & Color Space \\\midrule
+$0$ & Undefined. \\
+$1$ & Rec.~470M (see Section~\ref{sec:470m}). \\
+$2$ & Rec.~470BG (see Section~\ref{sec:470bg}). \\
+$3$ & Reserved. \\
+$\vdots$ & \\
+$255$ & \\
+\bottomrule\end{tabular*}
+\end{center}
+\caption{Enumerated List of Color Spaces}
+\label{tab:colorspaces}
+\end{table}
+\item
+Read a 24-bit unsigned integer as \bitvar{NOMBR} signifying a rate in bits
+per second. Rates equal to or greater than $2^{24}-1$ bits per second are
+represented as $2^{24}-1$.
+The \bitvar{NOMBR} field is used only as a hint.
+For pure VBR streams, this value may be considerably off.
+The field MAY be set to zero to indicate that the encoder did not care to
+speculate.
+\item
+Read a 6-bit unsigned integer as \bitvar{QUAL}.
+This value is used to provide a hint as to the relative quality of the stream
+ when compared to others produced by the same encoder.
+Larger values indicate higher quality.
+This can be used, for example, to select among several streams containing the
+ same material encoded with different settings.
+\item
+Read a 5-bit unsigned integer as \bitvar{KFGSHIFT}.
+The \bitvar{KFGSHIFT} is used to partition the granule position associated with
+ each packet into two different parts.
+The frame number of the last key frame, starting from zero, is stored in the
+ upper $64-\bitvar{KFGSHIFT}$ bits, while the lower \bitvar{KFGSHIFT} bits
+ contain the number of frames since the last keyframe.
+Complete details on the granule position mapping are specified in Section~REF.
+\item
+Read a 2-bit unsigned integer as \bitvar{PF}.
+The \bitvar{PF} field contains a value from an enumerated list of the available
+ pixel formats, given in Table~\ref{tab:pixel-formats}.
+If the reserved value $1$ is given, stop.
+This stream is not decodable according to this specification.
+
+\begin{table}[htbp]
+\begin{center}
+\begin{tabular*}{215pt}{cl@{\extracolsep{\fill}}c}\toprule
+Value & Pixel Format \\\midrule
+$0$ & 4:2:0 (see Section~\ref{sec:420}). \\
+$1$ & Reserved. \\
+$2$ & 4:2:2 (see Section~\ref{sec:422}). \\
+$3$ & 4:4:4 (see Section~\ref{sec:444}). \\
+\bottomrule\end{tabular*}
+\end{center}
+\caption{Enumerated List of Pixel Formats}
+\label{tab:pixel-formats}
+\end{table}
+
+\item
+Read a 3-bit unsigned integer.
+These bits are reserved.
+If this value is not zero, then stop.
+This stream is not decodable according to this specification.
+\item
+Assign \bitvar{NSBS} a value according to \bitvar{PF}, as given by
+ Table~\ref{tab:nsbs-for-pf}.
+
+\begin{table}[bt]
+\begin{center}
+\begin{tabular}{cc}\toprule
+\bitvar{PF} & \bitvar{NSBS} \\\midrule
+$0$ & $\begin{aligned}
+&((\bitvar{FMBW}+1)//2)*((\bitvar{FMBH}+1)//2)\\
+& +2*((\bitvar{FMBW}+3)//4)*((\bitvar{FMBH}+3)//4)
+\end{aligned}$ \\\midrule
+$2$ & $\begin{aligned}
+&((\bitvar{FMBW}+1)//2)*((\bitvar{FMBH}+1)//2)\\
+& +2*((\bitvar{FMBW}+3)//4)*((\bitvar{FMBH}+1)//2)
+\end{aligned}$ \\\midrule
+$3$ & $3*((\bitvar{FMBW}+1)//2)*((\bitvar{FMBH}+1)//2)$ \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Number of Super Blocks for each Pixel Format}
+\label{tab:nsbs-for-pf}
+\end{table}
+
+\item
+Assign \bitvar{NBS} a value according to \bitvar{PF}, as given by
+ Table~\ref{tab:nbs-for-pf}.
+
+\begin{table}[tb]
+\begin{center}
+\begin{tabular}{cc}\toprule
+\bitvar{PF} & \bitvar{NBS} \\\midrule
+$0$ & $6*\bitvar{FMBW}*\bitvar{FMBH}$ \\\midrule
+$2$ & $8*\bitvar{FMBW}*\bitvar{FMBH}$ \\\midrule
+$3$ & $12*\bitvar{FMBW}*\bitvar{FMBH}$ \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Number of Blocks for each Pixel Format}
+\label{tab:nbs-for-pf}
+\end{table}
+
+\item
+Assign \bitvar{NMBS} the value $(\bitvar{FMBW}*\bitvar{FMBH})$.
+
+\end{enumerate}
+
+\paragraph{VP3 Compatibility}
+
+VP3 does not correctly handle frame sizes that are not a multiple of 16.
+Thus, \bitvar{PICW} and \bitvar{PICH} should be set to the frame width and
+ height in pixels, respectively, and \bitvar{PICX} and \bitvar{PICY} should be
+ set to zero.
+VP3 headers do not specify a color space.
+VP3 only supports the 4:2:0 pixel format.
+
+\section{Comment Header}
+\label{sec:commentheader}
+
+The Theora comment header is the second of three header packets that begin a
+ Theora stream.
+It is meant for short text comments, not aribtrary metadata; arbitrary metadata
+ belongs in a separate logical stream that provides greater structure and
+ machine parseability.
+
+%r: I tried to morph this a little more in the direction of our
+% application space
+The comment field is meant to be used much like someone jotting a quick note on
+ the label of a video.
+It should be a little information to remember the disc or tape by and explain it to
+ others; a short, to-the-point text note that can be more than a couple words,
+ but isn't going to be more than a short paragraph.
+The essentials, in other words, whatever they turn out to be, e.g.:
+
+%TODO: Example
+
+The comment header is stored as a logical list of eight-bit clean vectors; the
+ number of vectors is bounded at $2^{32}-1$ and the length of each vector is
+ limited to $2^{32}-1$ bytes.
+The vector length is encoded; the vector contents themselves are not null
+ terminated.
+In addition to the vector list, there is a single vector for a vendor name,
+ also eight-bit clean with a length encoded in 32 bits.
+%TODO: The 1.0 release of libtheora sets the vendor string to ...
+
+\subsection{Comment Length Decode}
+\label{sub:comment-len}
+
+\begin{figure}
+\begin{center}
+\begin{tabular}{ | c | c | }
+ \hline
+ 4 byte length &
+ UTF-8 encoded string ...\\
+ \hline
+\end{tabular}
+\end{center}
+\caption{Length encoded string layout}
+\label{fig:comment-len}
+\end{figure}
+
+\paragraph{Input parameters:} None.
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{LEN} & Integer & 32 & No & A single 32-bit length value. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{LEN0} & Integer & 8 & No & The first octet of the string length. \\
+\locvar{LEN1} & Integer & 8 & No & The second octet of the string length. \\
+\locvar{LEN2} & Integer & 8 & No & The third octet of the string length. \\
+\locvar{LEN3} & Integer & 8 & No & The fourth octet of the string
+ length. \\
+\bottomrule\end{tabularx}
+\medskip
+
+A single comment vector is decoded as follows:
+
+\begin{enumerate}
+\item
+Read an 8-bit unsigned integer as \locvar{LEN0}.
+\item
+Read an 8-bit unsigned integer as \locvar{LEN1}.
+\item
+Read an 8-bit unsigned integer as \locvar{LEN2}.
+\item
+Read an 8-bit unsigned integer as \locvar{LEN3}.
+\item
+Assign \bitvar{LEN} the value $(\locvar{LEN0}+(\locvar{LEN1}<<8)+
+ (\locvar{LEN2}<<16)+(\locvar{LEN3}<<24))$.
+This construction is used so that on platforms with 8-bit bytes, the memory
+ organization of the comment header is identical with that of Vorbis I,
+ allowing for common parsing code despite the different bit packing
+ conventions.
+\end{enumerate}
+
+\subsection{Comment Header Decode}
+
+\begin{figure}
+\begin{center}
+\begin{tabular}{ | c | }
+ \hline
+ vendor string \\ \hline
+ number of comments \\ \hline
+ comment string \\ \hline
+ comment string \\ \hline
+ ... \\
+ \hline
+\end{tabular}
+\end{center}
+\caption{Comment Header Layout}
+\label{fig:commentheader}
+\end{figure}
+
+\paragraph{Input parameters:} None.
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{VENDOR} & \multicolumn{3}{l}{String} & The vendor string. \\
+\bitvar{NCOMMENTS} & Integer & 32 & No & The number of user
+ comments. \\
+\bitvar{COMMENTS} & \multicolumn{3}{l}{String Array} & A list of
+ \bitvar{NCOMMENTS} user comment values. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{\ci} & Integer & 32 & No & The index of the current user
+ comment. \\
+\bottomrule\end{tabularx}
+\medskip
+
+The complete comment header is decoded as follows:
+
+\begin{enumerate}
+\item
+Decode the common header fields according to the procedure described in
+ Section~\ref{sub:common-header}.
+If \bitvar{HEADERTYPE} returned by this procedure is not \hex{81}, then stop.
+This packet is not the comment header.
+\item
+Decode the length of the vendor string using the procedure given in
+ Section~\ref{sub:comment-len} into \bitvar{LEN}.
+\item
+Read \bitvar{LEN} 8-bit unsigned integers.
+\item
+Set the string \bitvar{VENDOR} to the contents of these octets.
+\item
+Decode the number of user comments using the procedure given in
+ Section~\ref{sub:comment-len} into \bitvar{LEN}.
+\item
+Assign \bitvar{NCOMMENTS} the value stored in \bitvar{LEN}.
+\item
+For each consecutive value of \locvar{\ci} from $0$ to
+ $(\bitvar{NCOMMENTS}-1)$, inclusive:
+\begin{enumerate}
+\item
+Decode the length of the current user comment using the procedure given in
+ Section~\ref{sub:comment-len} into \bitvar{LEN}.
+\item
+Read \bitvar{LEN} 8-bit unsigned integers.
+\item
+Set the string $\bitvar{COMMENTS}[\locvar{\ci}]$ to the contents of these
+ octets.
+\end{enumerate}
+\end{enumerate}
+
+The comment header comprises the entirety of the second header packet.
+Unlike the first header packet, it is not generally the only packet on the
+ second page and may span multiple pages.
+The length of the comment header packet is (practically) unbounded.
+The comment header packet is not optional; it must be present in the stream
+ even if it is logically empty.
+
+%TODO: \paragraph{VP3 Compatibility}
+
+\subsection{User Comment Format}
+
+The user comment vectors are structured similarly to a UNIX environment
+ variable.
+That is, comment fields consist of a field name and a corresponding value and
+ look like:
+\begin{center}
+\begin{tabular}{rcl}
+$\bitvar{COMMENTS}[0]$ & = & ``TITLE=the look of Theora" \\
+$\bitvar{COMMENTS}[1]$ & = & ``DIRECTOR=me"
+\end{tabular}
+\end{center}
+
+The field name is case-insensitive and MUST consist of ASCII characters
+ \hex{20} through \hex{7D}, \hex{3D} (`=') excluded.
+ASCII \hex{41} through \hex{5A} inclusive (characters `A'--`Z') are to be
+ considered equivalent to ASCII \hex{61} through \hex{7A} inclusive
+ (characters `a'--`z').
+An entirely empty field name---one that is zero characters long---is not
+ disallowed.
+
+The field name is immediately followed by ASCII \hex{3D} (`='); this equals
+ sign is used to terminate the field name.
+
+The data immediately after \hex{3D} until the end of the vector is the eight-bit
+ clean value of the field contents encoded as a UTF-8 string~\cite{rfc2044}.
+
+Field names MUST NOT be `internationalized'; this is a concession to
+ simplicity, not an attempt to exclude the majority of the world that doesn't
+ speak English.
+Applications MAY wish to present internationalized versions of the standard
+ field names listed below to the user, but they are not to be stored in the
+ bitstream.
+Field {\em contents}, however, use the UTF-8 character encoding to allow easy
+ representation of any language.
+
+Individual `vendors' MAY use non-standard field names within reason.
+The proper use of comment fields as human-readable notes has already been
+ explained.
+Abuse will be discouraged.
+
+There is no vendor-specific prefix to `non-standard' field names.
+Vendors SHOULD make some effort to avoid arbitrarily polluting the common
+ namespace.
+%"and other bodies"?
+%If you're going to be that vague, you might as well not say anything at all.
+Xiph.org and other bodies will generally collect and rationalize the more
+ useful tags to help with standardization.
+
+Field names are not restricted to occur only once within a comment header.
+%TODO: Example
+
+\paragraph{Field Names}
+
+%r should this be an appendix?
+
+Below is a proposed, minimal list of standard field names with a description of
+ their intended use.
+No field names are mandatory; a comment header may contain one or more, all, or
+ none of the names in this list.
+
+\begin{description}
+\item{TITLE:} Video name.
+\item{ARTIST:} Filmmaker or other creator name.
+\item{VERSION:} Subtitle, remix info, or other text distinguishing
+ versions of a video.
+\item{DATE:} Date associated with the video. Implementations SHOULD attempt
+ to parse this field as an ISO 8601 date for machine interpretation and
+ conversion.
+\item{LOCATION:} Location associated with the video. This is usually the
+ filming location for non-fiction works.
+\item{COPYRIGHT:} Copyright statement.
+\item{LICENSE:} Copyright and other licensing information.
+ Implementations wishing to do automatic parsing of e.g
+ of distribution terms SHOULD look here for a URL uniquely defining
+ the license. If no instance of this field is present, or if no
+ instance contains a parseable URL, and implementation MAY look
+ in the COPYRIGHT field for such a URL.
+\item{ORGANIZATION:} Studio name, Publisher, or other organization
+ involved in the creation of the video.
+
+\item{DIRECTOR:} Director or Filmmaker credit, similar to ARTIST.
+\item{PRODUCER:} Producer credit for the video.
+\item{COMPOSER:} Music credit for the video.
+\item{ACTOR:} Acting credit for the video.
+
+\item{TAG:} subject or category tag, keyword, or other content
+ classification labels. The value of each instance of this
+ field SHOULD be treated as a single label, with multiple
+ instances of the field for multiple tags. The value of
+ a single field SHOULD NOT be parsed into multiple tags
+ based on some internal delimeter.
+\item{DESCRIPTION:} General description, summary, or blurb.
+\end{description}
+
+\section{Setup Header}
+\label{sec:setupheader}
+
+The Theora setup header contains the limit values used to drive the loop
+ filter, the base matrices and scale values used to build the dequantization
+ tables, and the Huffman tables used to unpack the DCT tokens.
+Because the contents of this header are specific to Theora, no concessions have
+ been made to keep the fields octet-aligned for easy parsing.
+
+\begin{figure}
+\begin{center}
+\begin{tabular}{ | c | }
+ \hline
+ common header block \\ \hline
+ loop filter table resolution \\ \hline
+ loop filter table \\ \hline
+ scale table resolution \\ \hline
+ AC scale table \\ \hline
+ DC scale table \\ \hline
+ number of base matricies \\ \hline
+ base quatization matricies \\ \hline
+ ... \\ \hline
+ quant range interpolation table \\ \hline
+ DCT token Huffman tables \\
+ \hline
+\end{tabular}
+\end{center}
+\caption{Setup Header structure}
+\label{fig:setupheader}
+\end{figure}
+
+\subsection{Loop Filter Limit Table Decode}
+\label{sub:loop-filter-limits}
+
+\paragraph{Input parameters:} None.
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{LFLIMS} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 7 & No & A 64-element array of loop filter limit
+ values. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{\qi} & Integer & 6 & No & The quantization index. \\
+\locvar{NBITS} & Integer & 3 & No & The size of values being read in the
+ current table. \\
+\bottomrule\end{tabularx}
+\medskip
+
+This procedure decodes the table of loop filter limit values used to drive the
+ loop filter, which is described in Section~\ref{sub:loop-filter-limits}.
+It is decoded as follows:
+
+\begin{enumerate}
+\item
+Read a 3-bit unsigned integer as \locvar{NBITS}.
+\item
+For each consecutive value of \locvar{\qi} from $0$ to $63$, inclusive:
+\begin{enumerate}
+\item
+Read an \locvar{NBITS}-bit unsigned integer as $\bitvar{LFLIMS}[\locvar{\qi}]$.
+\end{enumerate}
+\end{enumerate}
+
+\paragraph{VP3 Compatibility}
+
+The loop filter limit values are hardcoded in VP3.
+The values used are given in Appendix~\ref{app:vp3-loop-filter-limits}.
+
+\subsection{Quantization Parameters Decode}
+\label{sub:quant-params}
+
+\paragraph{Input parameters:} None.
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{ACSCALE} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 16 & No & A 64-element array of scale values for
+ AC coefficients for each \qi\ value. \\
+\bitvar{DCSCALE} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 16 & No & A 64-element array of scale values for
+ the DC coefficient for each \qi\ value. \\
+\bitvar{NBMS} & Integer & 10 & No & The number of base matrices. \\
+\bitvar{BMS} & \multicolumn{1}{p{50pt}}{2D Integer array} &
+ 8 & No & A $\bitvar{NBMS}\times 64$ array
+ containing the base matrices. \\
+\bitvar{NQRS} & \multicolumn{1}{p{50pt}}{2D Integer array} &
+ 6 & No & A $2\times 3$ array containing the
+ number of quant ranges for a given \qti\ and \pli, respectively.
+This is at most $63$. \\
+\bitvar{QRSIZES} & \multicolumn{1}{p{50pt}}{3D Integer array} &
+ 6 & No & A $2\times 3\times 63$ array of the
+ sizes of each quant range for a given \qti\ and \pli, respectively.
+Only the first $\bitvar{NQRS}[\qti][\pli]$ values are used. \\
+\bitvar{QRBMIS} & \multicolumn{1}{p{50pt}}{3D Integer array} &
+ 9 & No & A $2\times 3\times 64$ array of the
+ \bmi's used for each quant range for a given \qti\ and \pli, respectively.
+Only the first $(\bitvar{NQRS}[\qti][\pli]+1)$ values are used. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{\qti} & Integer & 1 & No & A quantization type index.
+See Table~\ref{tab:quant-types}.\\
+\locvar{\qtj} & Integer & 1 & No & A quantization type index. \\
+\locvar{\pli} & Integer & 2 & No & A color plane index.
+See Table~\ref{tab:color-planes}.\\
+\locvar{\plj} & Integer & 2 & No & A color plane index. \\
+\locvar{\qi} & Integer & 6 & No & The quantization index. \\
+\locvar{\ci} & Integer & 6 & No & The DCT coefficient index. \\
+\locvar{\bmi} & Integer & 9 & No & The base matrix index. \\
+\locvar{\qri} & Integer & 6 & No & The quant range index. \\
+\locvar{NBITS} & Integer & 5 & No & The size of fields to read. \\
+\locvar{NEWQR} & Integer & 1 & No & Flag that indicates a new set of quant
+ ranges will be defined. \\
+\locvar{RPQR} & Integer & 1 & No & Flag that indicates the quant ranges to
+ copy will come from the same color plane. \\
+\bottomrule\end{tabularx}
+\medskip
+
+The AC scale and DC scale values are defined in two simple tables with 64
+ values each, one for each \qi\ value.
+The same scale values are used for every quantization type and color plane.
+
+The base matrices for all quantization types and color planes are stored in a
+ single table.
+These are then referenced by index in several sets of \term{quant ranges}.
+The purpose of the quant ranges is to specify which base matrices are used for
+ which \qi\ values.
+
+A set of quant ranges is defined for each quantization type and color plane.
+To save space in the header, bit flags allow a set of quant ranges to be copied
+ from a previously defined set instead of being specified explicitly.
+Every set except the first one can be copied from the immediately preceding
+ set.
+Similarly, if the quantization type is not $0$, the set can be copied from the
+ set defined for the same color plane for the preceding quantization type.
+This formulation allows compact representation of, for example, the same
+ set of quant ranges in both chroma channels, as is done in the original VP3,
+ or the same set of quant ranges in INTRA and INTER modes.
+
+Each quant range is defined by a size and two base matrix indices, one for each
+ end of the range.
+The base matrix for the end of one range is used as the start of the next
+ range, so that for $n$ ranges, $n+1$ base matrices are specified.
+The base matrices for the \qi\ values between the two endpoints of the range
+ are generated by linear interpolation.
+
+%TODO: figure
+
+The location of the endpoints of each range is encoded by their size.
+The \qi\ value for the left end-point is the sum of the sizes of all preceding
+ ranges, and the \qi\ value for the right end-point adds the size of the
+ current range.
+Thus the sum of the sizes of all the ranges MUST be 63, so that the last range
+ falls on the last possible \qi\ value.
+
+The complete set of quantization parameters are decoded as follows:
+
+\begin{enumerate}
+\item
+Read a 4-bit unsigned integer.
+Assign \locvar{NBITS} the value read, plus one.
+\item
+For each consecutive value of \locvar{\qi} from $0$ to $63$, inclusive:
+\begin{enumerate}
+\item
+Read an \locvar{NBITS}-bit unsigned integer as
+ $\bitvar{ACSCALE}[\locvar{\qi}]$.
+\end{enumerate}
+\item
+Read a 4-bit unsigned integer.
+Assign \locvar{NBITS} the value read, plus one.
+\item
+For each consecutive value of \locvar{\qi} from $0$ to $63$, inclusive:
+\begin{enumerate}
+\item
+Read an \locvar{NBITS}-bit unsigned integer as
+ $\bitvar{DCSCALE}[\locvar{\qi}]$.
+\end{enumerate}
+\item
+Read a 9-bit unsigned integer.
+Assign \bitvar{NBMS} the value decoded, plus one.
+\bitvar{NBMS} MUST be no greater than 384.
+\item
+For each consecutive value of \locvar{\bmi} from $0$ to $(\bitvar{NBMS}-1)$,
+ inclusive:
+\begin{enumerate}
+\item
+For each consecutive value of \locvar{\ci} from $0$ to $63$, inclusive:
+\begin{enumerate}
+\item
+Read an 8-bit unsigned integer as $\bitvar{BMS}[\locvar{\bmi}][\locvar{\ci}]$.
+\end{enumerate}
+\end{enumerate}
+\item
+For each consecutive value of \locvar{\qti} from $0$ to $1$, inclusive:
+\begin{enumerate}
+\item
+For each consecutive value of \locvar{\pli} from $0$ to $2$, inclusive:
+\begin{enumerate}
+\item
+If $\locvar{\qti}>0$ or $\locvar{\pli}>0$, read a 1-bit unsigned integer as
+ \locvar{NEWQR}.
+\item
+Else, assign \locvar{NEWQR} the value one.
+\item
+If \locvar{NEWQR} is zero, then we are copying a previously defined set of
+ quant ranges.
+In that case:
+\begin{enumerate}
+\item
+If $\locvar{\qti}>0$, read a 1-bit unsigned integer as \locvar{RPQR}.
+\item
+Else, assign \locvar{RPQR} the value zero.
+\item
+If \locvar{RPQR} is one, assign \locvar{\qtj} the value $(\locvar{\qti}-1)$
+ and assign \locvar{\plj} the value \locvar{\pli}.
+This selects the set of quant ranges defined for the same color plane as this
+ one, but for the previous quantization type.
+\item
+Else assign \locvar{\qtj} the value $(3*\locvar{\qti}+\locvar{\pli}-1)//3$ and
+ assign \locvar{\plj} the value $(\locvar{\pli}+2)\%3$.
+This selects the most recent set of quant ranges defined.
+\item
+Assign $\bitvar{NQRS}[\locvar{\qti}][\locvar{\pli}]$ the value
+ $\bitvar{NQRS}[\locvar{\qtj}][\locvar{\plj}]$.
+\item
+Assign $\bitvar{QRSIZES}[\locvar{\qti}][\locvar{\pli}]$ the values in
+ $\bitvar{QRSIZES}[\locvar{\qtj}][\locvar{\plj}]$.
+\item
+Assign $\bitvar{QRBMIS}[\locvar{\qti}][\locvar{\pli}]$ the values in
+ $\bitvar{QRBMIS}[\locvar{\qtj}][\locvar{\plj}]$.
+\end{enumerate}
+\item
+Else, \locvar{NEWQR} is one, which indicates that we are defining a new set of
+ quant ranges.
+In that case:
+\begin{enumerate}
+\item
+Assign $\locvar{\qri}$ the value zero.
+\item
+Assign $\locvar{\qi}$ the value zero.
+\item
+Read an $\ilog(\bitvar{NBMS}-1)$-bit unsigned integer as\\
+ $\bitvar{QRBMIS}[\locvar{\qti}][\locvar{\pli}][\locvar{\qri}]$.
+If this is greater than or equal to \bitvar{NBMS}, stop.
+The stream is undecodable.
+\item
+\label{step:qr-loop}
+Read an $\ilog(62-\locvar{\qi})$-bit unsigned integer.
+Assign\\ $\bitvar{QRSIZES}[\locvar{\qti}][\locvar{\pli}][\locvar{\qri}]$ the value
+ read, plus one.
+\item
+Assign \locvar{\qi} the value $\locvar{\qi}+
+ \bitvar{QRSIZES}[\locvar{\qti}][\locvar{\pli}][\locvar{\qri}]$.
+\item
+Assign \locvar{\qri} the value $\locvar{\qri}+1$.
+\item
+Read an $\ilog(\bitvar{NBMS}-1)$-bit unsigned integer as\\
+ $\bitvar{QRBMIS}[\locvar{\qti}][\locvar{\pli}][\locvar{\qri}]$.
+\item
+If \locvar{\qi} is less than 63, go back to step~\ref{step:qr-loop}.
+\item
+If \locvar{\qi} is greater than 63, stop.
+The stream is undecodable.
+\item
+Assign $\bitvar{NQRS}[\locvar{\qti}][\locvar{\pli}]$ the value \locvar{\qri}.
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+
+\paragraph{VP3 Compatibility}
+
+The quantization parameters are hardcoded in VP3.
+The values used are given in Appendix~\ref{app:vp3-quant-params}.
+
+\subsection{Computing a Quantization Matrix}
+\label{sub:quant-mat}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{ACSCALE} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 16 & No & A 64-element array of scale values for
+ AC coefficients for each \qi\ value. \\
+\bitvar{DCSCALE} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 16 & No & A 64-element array of scale values for
+ the DC coefficient for each \qi\ value. \\
+\bitvar{BMS} & \multicolumn{1}{p{50pt}}{2D Integer array} &
+ 8 & No & A $\bitvar{NBMS}\times 64$ array
+ containing the base matrices. \\
+\bitvar{NQRS} & \multicolumn{1}{p{50pt}}{2D Integer array} &
+ 6 & No & A $2\times 3$ array containing the
+ number of quant ranges for a given \qti\ and \pli, respectively.
+This is at most $63$. \\
+\bitvar{QRSIZES} & \multicolumn{1}{p{50pt}}{3D Integer array} &
+ 6 & No & A $2\times 3\times 63$ array of the
+ sizes of each quant range for a given \qti\ and \pli, respectively.
+Only the first $\bitvar{NQRS}[\qti][\pli]$ values are used. \\
+\bitvar{QRBMIS} & \multicolumn{1}{p{50pt}}{3D Integer array} &
+ 9 & No & A $2\times 3\times 64$ array of the
+ \bmi's used for each quant range for a given \qti\ and \pli, respectively.
+Only the first $(\bitvar{NQRS}[\qti][\pli]+1)$ values are used. \\
+\bitvar{\qti} & Integer & 1 & No & A quantization type index.
+See Table~\ref{tab:quant-types}.\\
+\bitvar{\pli} & Integer & 2 & No & A color plane index.
+See Table~\ref{tab:color-planes}.\\
+\bitvar{\qi} & Integer & 6 & No & The quantization index. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{QMAT} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 16 & No & A 64-element array of quantization
+ values for each DCT coefficient in natural order. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{\ci} & Integer & 6 & No & The DCT coefficient index. \\
+\locvar{\bmi} & Integer & 9 & No & The base matrix index. \\
+\locvar{\bmj} & Integer & 9 & No & The base matrix index. \\
+\locvar{\qri} & Integer & 6 & No & The quant range index. \\
+\locvar{QISTART} & Integer & 6 & No & The left end-point of the \qi\ range. \\
+\locvar{QIEND } & Integer & 6 & No & The right end-point of the \qi\ range. \\
+\locvar{BM} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 8 & No & A 64-element array containing the
+ interpolated base matrix. \\
+\locvar{QMIN} & Integer & 16 & No & The minimum quantization value allowed
+ for the current coefficient. \\
+\locvar{QSCALE} & Integer & 16 & No & The current scale value. \\
+\bottomrule\end{tabularx}
+\medskip
+
+The following procedure can be used to generate a single quantization matrix
+ for a given quantization type, color plane, and \qi\ value, given the
+ quantization parameters decoded in Section~\ref{sub:quant-params}.
+
+Note that the product of the scale value and the base matrix value is in units
+ of $100$ths of a pixel value, and thus is divided by $100$ to return it to
+ units of a single pixel value.
+This value is then scaled by four, to match the scaling of the DCT output,
+ which is also a factor of four larger than the orthonormal version of the
+ transform.
+
+\begin{enumerate}
+\item
+Assign \locvar{\qri} the index of a quant range such that
+\begin{displaymath}
+\bitvar{\qi} \ge \sum_{\qrj=0}^{\locvar{\qri}-1}
+ \bitvar{QRSIZES}[\bitvar{\qti}][\bitvar{\pli}][\qrj],
+\end{displaymath}
+ and
+\begin{displaymath}
+\bitvar{\qi} \le \sum_{\qrj=0}^{\locvar{\qri}}
+ \bitvar{QRSIZES}[\bitvar{\qti}][\bitvar{\pli}][\qrj],
+\end{displaymath}
+ where summation from $0$ to $-1$ is defined to be zero.
+If there is more than one such value of $\locvar{\qri}$, i.e., if \bitvar{\qi}
+ lies on the boundary between two quant ranges, then the output will be the
+ same regardless of which one is chosen.
+\item
+Assign \locvar{QISTART} the value
+\begin{displaymath}
+\sum_{\qrj=0}^{\qri-1} \bitvar{QRSIZES}[\bitvar{\qti}][\bitvar{\pli}][\qrj].
+\end{displaymath}
+\item
+Assign \locvar{QIEND} the value
+\begin{displaymath}
+\sum_{\qrj=0}^{\qri} \bitvar{QRSIZES}[\bitvar{\qti}][\bitvar{\pli}][\qrj].
+\end{displaymath}
+\item
+Assign \locvar{\bmi} the value
+ $\bitvar{QRBMIS}[\bitvar{\qti}][\bitvar{\pli}][\qri]$.
+\item
+Assign \locvar{\bmj} the value
+ $\bitvar{QRBMIS}[\bitvar{\qti}][\bitvar{\pli}][\qri+1]$.
+\item
+For each consecutive value of \locvar{\ci} from $0$ to $63$, inclusive:
+\begin{enumerate}
+\item
+Assign $\locvar{BM}[\locvar{\ci}]$ the value
+\begin{displaymath}
+\begin{split}
+(&2*(\locvar{QIEND}-\bitvar{\qi})*\bitvar{BMS}[\locvar{\bmi}][\locvar{\ci}]\\
+ &+2*(\bitvar{\qi}-
+ \locvar{QISTART})*\bitvar{BMS}[\locvar{\bmj}][\locvar{\ci}]\\
+ &+\bitvar{QRSIZES}[\bitvar{\qti}][\bitvar{\pli}][\locvar{\qri}])//
+ (2*\bitvar{QRSIZES}[\bitvar{\qti}][\bitvar{\pli}][\locvar{\qri}])
+\end{split}
+\end{displaymath}
+\item
+Assign \locvar{QMIN} the value given by Table~\ref{tab:qmin} according to
+ \bitvar{\qti} and \locvar{\ci}.
+
+\begin{table}[htbp]
+\begin{center}
+\begin{tabular}{clr}\toprule
+Coefficient & \multicolumn{1}{c}{\bitvar{\qti}}
+ & \locvar{QMIN} \\\midrule
+$\locvar{\ci}=0$ & $0$ (Intra) & $16$ \\
+$\locvar{\ci}>0$ & $0$ (Intra) & $8$ \\
+$\locvar{\ci}=0$ & $1$ (Inter) & $32$ \\
+$\locvar{\ci}>0$ & $1$ (Inter) & $16$ \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Minimum Quantization Values}
+\label{tab:qmin}
+\end{table}
+
+\item
+If \locvar{\ci} equals zero, assign $\locvar{QSCALE}$ the value
+ $\bitvar{DCSCALE}[\bitvar{\qi}]$.
+\item
+Else, assign $\locvar{QSCALE}$ the value
+ $\bitvar{ACSCALE}[\bitvar{\qi}]$.
+\item
+Assign $\bitvar{QMAT}[\locvar{\ci}]$ the value
+\begin{displaymath}
+\max(\locvar{QMIN},
+ \min((\locvar{QSCALE}*\locvar{BM}[\locvar{\ci}]//100)*4,4096)).
+\end{displaymath}
+\end{enumerate}
+\end{enumerate}
+
+\subsection{DCT Token Huffman Tables}
+\label{sub:huffman-tables}
+
+\paragraph{Input parameters:} None.
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{HTS} & \multicolumn{3}{l}{Huffman table array}
+ & An 80-element array of Huffman tables
+ with up to 32 entries each. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{HBITS} & Bit string & 32 & No & A string of up to 32 bits. \\
+\locvar{TOKEN} & Integer & 5 & No & A single DCT token value. \\
+\locvar{ISLEAF} & Integer & 1 & No & Flag that indicates if the current
+ node of the tree being decoded is a leaf node. \\
+\bottomrule\end{tabularx}
+\medskip
+
+The Huffman tables used to decode DCT tokens are stored in the setup header in
+ the form of a binary tree.
+This enforces the requirements that the code be full---so that any sequence of
+ bits will produce a valid sequence of tokens---and that the code be
+ prefix-free so that there is no ambiguity when decoding.
+
+One more restriction is placed on the tables that is not explicitly enforced by
+ the bitstream syntax, but nevertheless must be obeyed by compliant encoders.
+There must be no more than 32 entries in a single table.
+Note that this restriction along with the fullness requirement limit the
+ maximum size of a single Huffman code to 32 bits.
+It is probably a good idea to enforce this latter consequence explicitly when
+ implementing the decoding procedure as a recursive algorithm, so as to prevent
+ a possible stack overflow given an invalid bitstream.
+
+Although there are 32 different DCT tokens, and thus a normal table will have
+ exactly 32 entries, this is not explicitly required.
+It is allowable to use a Huffman code that omits some---but not all---of the
+ possible token values.
+It is also allowable, if not particularly useful, to specify multiple codes for
+ the same token value in a single table.
+Note also that token values may appear in the tree in any order.
+In particular, it is not safe to assume that token value zero (which ends a
+ single block), has a Huffman code of all zeros.
+
+The tree is decoded as follows:
+
+\begin{enumerate}
+\item
+For each consecutive value of \locvar{\hti} from $0$ to $79$, inclusive:
+\begin{enumerate}
+\item
+Set \locvar{HBITS} to the empty string.
+\item
+\label{step:huff-tree-loop}
+If \locvar{HBITS} is longer than 32 bits in length, stop.
+The stream is undecodable.
+\item
+Read a 1-bit unsigned integer as \locvar{ISLEAF}.
+\item
+If \locvar{ISLEAF} is one:
+\begin{enumerate}
+\item
+If the number of entries in table $\bitvar{HTS}[\locvar{\hti}]$ is already 32,
+ stop.
+The stream is undecodable.
+\item
+Read a 5-bit unsigned integer as \locvar{TOKEN}.
+\item
+Add the pair $(\locvar{HBITS},\locvar{TOKEN})$ to Huffman table
+ $\bitvar{HTS}[\locvar{\hti}]$.
+\end{enumerate}
+\item
+Otherwise:
+\begin{enumerate}
+\item
+Add a `0' to the end of \locvar{HBITS}.
+\item
+Decode the `0' sub-tree using this procedure, starting from
+ step~\ref{step:huff-tree-loop}.
+\item
+Remove the `0' from the end of \locvar{HBITS} and add a `1' to the end of
+ \locvar{HBITS}.
+\item
+Decode the `1' sub-tree using this procedure, starting from
+ step~\ref{step:huff-tree-loop}.
+\item
+Remove the `1' from the end of \locvar{HBITS}.
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+
+\paragraph{VP3 Compatibility}
+
+The DCT token Huffman tables are hardcoded in VP3.
+The values used are given in Appendix~\ref{app:vp3-huffman-tables}.
+
+\subsection{Setup Header Decode}
+
+\paragraph{Input parameters:} None.
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{LFLIMS} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 7 & No & A 64-element array of loop filter limit
+ values. \\
+\bitvar{ACSCALE} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 16 & No & A 64-element array of scale values for
+ AC coefficients for each \qi\ value. \\
+\bitvar{DCSCALE} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 16 & No & A 64-element array of scale values for
+ the DC coefficient for each \qi\ value. \\
+\bitvar{NBMS} & Integer & 10 & No & The number of base matrices. \\
+\bitvar{BMS} & \multicolumn{1}{p{50pt}}{2D Integer array} &
+ 8 & No & A $\bitvar{NBMS}\times 64$ array
+ containing the base matrices. \\
+\bitvar{NQRS} & \multicolumn{1}{p{50pt}}{2D Integer array} &
+ 6 & No & A $2\times 3$ array containing the
+ number of quant ranges for a given \qti\ and \pli, respectively.
+This is at most $63$. \\
+\bitvar{QRSIZES} & \multicolumn{1}{p{50pt}}{3D Integer array} &
+ 6 & No & A $2\times 3\times 63$ array of the
+ sizes of each quant range for a given \qti\ and \pli, respectively.
+Only the first $\bitvar{NQRS}[\qti][\pli]$ values will be used. \\
+\bitvar{QRBMIS} & \multicolumn{1}{p{50pt}}{3D Integer array} &
+ 9 & No & A $2\times 3\times 64$ array of the
+ \bmi's used for each quant range for a given \qti\ and \pli, respectively.
+Only the first $(\bitvar{NQRS}[\qti][\pli]+1)$ values will be used. \\
+\bitvar{HTS} & \multicolumn{3}{l}{Huffman table array}
+ & An 80-element array of Huffman tables
+ with up to 32 entries each. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:} None.
+\medskip
+
+The complete setup header is decoded as follows:
+
+\begin{enumerate}
+\item
+Decode the common header fields according to the procedure described in
+ Section~\ref{sub:common-header}.
+If \bitvar{HEADERTYPE} returned by this procedure is not \hex{82}, then stop.
+This packet is not the setup header.
+\item
+Decode the loop filter limit value table using the procedure given in
+ Section~\ref{sub:loop-filter-limits} into \bitvar{LFLIMS}.
+\item
+Decode the quantization parameters using the procedure given in
+ Section~\ref{sub:quant-params}.
+The results are stored in \bitvar{ACSCALE}, \bitvar{DCSCALE}, \bitvar{NBMS},
+ \bitvar{BMS}, \bitvar{NQRS}, \bitvar{QRSIZES}, and \bitvar{QRBMIS}.
+\item
+Decode the DCT token Huffman tables using the procedure given in
+ Section~\ref{sub:huffman-tables} into \bitvar{HTS}.
+\end{enumerate}
+
+\chapter{Frame Decode}
+
+This section describes the complete procedure necessary to decode a single
+ frame.
+This begins with the frame header, followed by coded block flags, macro block
+ modes, motion vectors, block-level \qi\ values, and finally the DCT residual
+ tokens, which are used to reconstruct the frame.
+
+\section{Frame Header Decode}
+\label{sub:frame-header}
+
+\paragraph{Input parameters:} None.
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{FTYPE} & Integer & 1 & No & The frame type. \\
+\bitvar{NQIS} & Integer & 2 & No & The number of \qi\ values. \\
+\bitvar{QIS} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 6 & No & An \bitvar{NQIS}-element array of
+ \qi\ values. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{MOREQIS} & Integer & 1 & No & A flag indicating there are more
+ \qi\ values to be decoded. \\
+\bottomrule\end{tabularx}
+\medskip
+
+The frame header selects which type of frame is being decoded, intra or inter,
+ and contains the list of \qi\ values that will be used in this frame.
+The first \qi\ value will be used for {\em all} DC coefficients in all blocks.
+This is done to ensure that DC prediction, which is done in the quantized
+ domain, works as expected.
+The AC coefficients, however, can be dequantized using any \qi\ value on the
+ list, selected on a block-by-block basis.
+
+\begin{enumerate}
+\item
+Read a 1-bit unsigned integer.
+If the value read is not zero, stop.
+This is not a data packet.
+\item
+Read a 1-bit unsigned integer as \bitvar{FTYPE}.
+This is the type of frame being decoded, as given in
+ Table~\ref{tab:frame-type}.
+If this is the first frame being decoded, this MUST be zero.
+
+\begin{table}[htbp]
+\begin{center}
+\begin{tabular}{cl}\toprule
+\bitvar{FTYPE} & Frame Type \\\midrule
+$0$ & Intra frame \\
+$1$ & Inter frame \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Frame Type Values}
+\label{tab:frame-type}
+\end{table}
+
+\item
+Read in a 6-bit unsigned integer as $\bitvar{QIS}[0]$.
+\item
+Read a 1-bit unsigned integer as \locvar{MOREQIS}.
+\item
+If \locvar{MOREQIS} is zero, set \bitvar{NQIS} to 1.
+\item
+Otherwise:
+\begin{enumerate}
+\item
+Read in a 6-bit unsigned integer as $\bitvar{QIS}[1]$.
+\item
+Read a 1-bit unsigned integer as \locvar{MOREQIS}.
+\item
+If \locvar{MOREQIS} is zero, set \bitvar{NQIS} to 2.
+\item
+Otherwise:
+\begin{enumerate}
+\item
+Read in a 6-bit unsigned integer as $\bitvar{QIS}[2]$.
+\item
+Set \bitvar{NQIS} to 3.
+\end{enumerate}
+\end{enumerate}
+\item
+If \bitvar{FTYPE} is 0, read a 3-bit unsigned integer.
+These bits are reserved.
+If this value is not zero, stop.
+This frame is not decodable according to this specification.
+\end{enumerate}
+
+\paragraph{VP3 Compatibility}
+
+The precise format of the frame header is substantially different in Theora
+ than in VP3.
+The original VP3 format includes a larger number of unused, reserved bits that
+ are required to be zero.
+The original VP3 frame header also can contain only a single \qi\ value,
+ because VP3 does not support block-level \qi\ values and uses the same
+ \qi\ value for all the coefficients in a frame.
+
+\section{Run-Length Encoded Bit Strings}
+
+Two variations of run-length encoding are used to store sequences of bits for
+ the block coded flags and the block-level \qi\ values.
+The procedures to decode these bit sequences are specified in the following two
+ sections.
+
+\subsection{Long-Run Bit String Decode}
+\label{sub:long-run}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{NBITS} & Integer & 36 & No & The number of bits to decode. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{BITS} & Bit string & & & The decoded bits. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{LEN} & Integer & 36 & No & The number of bits decoded so far. \\
+\locvar{BIT} & Integer & 1 & No & The value associated with the current
+ run. \\
+\locvar{RLEN} & Integer & 13 & No & The length of the current run. \\
+\locvar{RBITS} & Integer & 4 & No & The number of extra bits needed to
+ decode the run length. \\
+\locvar{RSTART} & Integer & 6 & No & The start of the possible run-length
+ values for a given Huffman code. \\
+\locvar{ROFFS} & Integer & 12 & No & The offset from \locvar{RSTART} of the
+ run-length. \\
+\bottomrule\end{tabularx}
+\medskip
+
+There is no practical limit to the number of consecutive 0's and 1's that can
+ be decoded with this procedure.
+In reality, the run length is limited by the number of blocks in a single
+ frame, because more will never be requested.
+A separate procedure described in Section~\ref{sub:short-run} is used when
+ there is a known limit on the maximum size of the runs.
+
+For the first run, a single bit value is read, and then a Huffman-coded
+ representation of a run length is decoded, and that many copies of the bit
+ value are appended to the bit string.
+For each consecutive run, the value of the bit is toggled instead of being read
+ from the bitstream.
+
+The only exception is if the length of the previous run was 4129, the maximum
+ possible length encodable by the Huffman-coded representation.
+In this case another bit value is read from the stream, to allow for
+ consecutive runs of 0's or 1's longer than this maximum.
+
+Note that in both cases---for the first run and after a run of length 4129---if
+ no more bits are needed, then no bit value is read.
+
+The complete decoding procedure is as follows:
+
+\begin{enumerate}
+\item
+Assign \locvar{LEN} the value 0.
+\item
+Assign \bitvar{BITS} the empty string.
+\item
+If \locvar{LEN} equals \bitvar{NBITS}, return the completely decoded string
+ \bitvar{BITS}.
+\item
+Read a 1-bit unsigned integer as \locvar{BIT}.
+\item
+\label{step:long-run-loop}
+Read a bit at a time until one of the Huffman codes given in
+ Table~\ref{tab:long-run} is recognized.
+
+\begin{table}[htbp]
+\begin{center}
+\begin{tabular}{lrrl}\toprule
+Huffman Code & \locvar{RSTART} & \locvar{RBITS} & Run Lengths \\\midrule
+\bin{0} & $1$ & $0$ & $1$ \\
+\bin{10} & $2$ & $1$ & $2\ldots 3$ \\
+\bin{110} & $4$ & $1$ & $4\ldots 5$ \\
+\bin{1110} & $6$ & $2$ & $6\ldots 9$ \\
+\bin{11110} & $10$ & $3$ & $10\ldots 17$ \\
+\bin{111110} & $18$ & $4$ & $18\ldots 33$ \\
+\bin{111111} & $34$ & $12$ & $34\ldots 4129$ \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Huffman Codes for Long Run Lengths}
+\label{tab:long-run}
+\end{table}
+
+\item
+Assign \locvar{RSTART} and \locvar{RBITS} the values given in
+ Table~\ref{tab:long-run} according to the Huffman code read.
+\item
+Read an \locvar{RBITS}-bit unsigned integer as \locvar{ROFFS}.
+\item
+Assign \locvar{RLEN} the value $(\locvar{RSTART}+\locvar{ROFFS})$.
+\item
+Append \locvar{RLEN} copies of \locvar{BIT} to \bitvar{BITS}.
+\item
+Add \locvar{RLEN} to the value \locvar{LEN}.
+\locvar{LEN} MUST be less than or equal to \bitvar{NBITS}.
+\item
+If \locvar{LEN} equals \bitvar{NBITS}, return the completely decoded string
+ \bitvar{BITS}.
+\item
+If \locvar{RLEN} equals 4129, read a 1-bit unsigned integer as \locvar{BIT}.
+\item
+Otherwise, assign \locvar{BIT} the value $(1-\locvar{BIT})$.
+\item
+Continue decoding runs from step~\ref{step:long-run-loop}.
+\end{enumerate}
+
+\paragraph{VP3 Compatibility}
+
+VP3 does not read a new bit value after decoding a run length of 4129.
+This limits the maximum number of consecutive 0's or 1's to 4129 in
+ VP3-compatible streams.
+For reasonable video sizes of $1920\times 1080$ or less in 4:2:0 format---the
+ only pixel format VP3 supports---this does not pose any problems because runs
+ longer than 4129 are not needed.
+
+\subsection{Short-Run Bit String Decode}
+\label{sub:short-run}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{NBITS} & Integer & 36 & No & The number of bits to decode. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{BITS} & Bit string & & & The decoded bits. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{LEN} & Integer & 36 & No & The number of bits decoded so far. \\
+\locvar{BIT} & Integer & 1 & No & The value associated with the current
+ run. \\
+\locvar{RLEN} & Integer & 13 & No & The length of the current run. \\
+\locvar{RBITS} & Integer & 4 & No & The number of extra bits needed to
+ decode the run length. \\
+\locvar{RSTART} & Integer & 6 & No & The start of the possible run-length
+ values for a given Huffman code. \\
+\locvar{ROFFS} & Integer & 12 & No & The offset from \locvar{RSTART} of the
+ run-length. \\
+\bottomrule\end{tabularx}
+\medskip
+
+This procedure is similar to the procedure outlined in
+ Section~\ref{sub:long-run}, except that the maximum number of consecutive 0's
+ or 1's is limited to 30.
+This is the maximum run length needed when encoding a bit for each of the 16
+ blocks in a super block when it is known that not all the bits in a super
+ block are the same.
+
+The complete decoding procedure is as follows:
+
+\begin{enumerate}
+\item
+Assign \locvar{LEN} the value 0.
+\item
+Assign \bitvar{BITS} the empty string.
+\item
+If \locvar{LEN} equals \bitvar{NBITS}, return the completely decoded string
+ \bitvar{BITS}.
+\item
+Read a 1-bit unsigned integer as \locvar{BIT}.
+\item
+\label{step:short-run-loop}
+Read a bit at a time until one of the Huffman codes given in
+ Table~\ref{tab:short-run} is recognized.
+
+\begin{table}[htbp]
+\begin{center}
+\begin{tabular}{lrrl}\toprule
+Huffman Code & \locvar{RSTART} & \locvar{RBITS} & Run Lengths \\\midrule
+\bin{0} & $1$ & $1$ & $1\ldots 2$ \\
+\bin{10} & $3$ & $1$ & $3\ldots 4$ \\
+\bin{110} & $5$ & $1$ & $5\ldots 6$ \\
+\bin{1110} & $7$ & $2$ & $7\ldots 10$ \\
+\bin{11110} & $11$ & $2$ & $11\ldots 14$ \\
+\bin{11111} & $15$ & $4$ & $15\ldots 30$ \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Huffman Codes for Short Run Lengths}
+\label{tab:short-run}
+\end{table}
+
+\item
+Assign \locvar{RSTART} and \locvar{RBITS} the values given in
+ Table~\ref{tab:short-run} according to the Huffman code read.
+\item
+Read an \locvar{RBITS}-bit unsigned integer as \locvar{ROFFS}.
+\item
+Assign \locvar{RLEN} the value $(\locvar{RSTART}+\locvar{ROFFS})$.
+\item
+Append \locvar{RLEN} copies of \locvar{BIT} to \bitvar{BITS}.
+\item
+Add \locvar{RLEN} to the value \locvar{LEN}.
+\locvar{LEN} MUST be less than or equal to \bitvar{NBITS}.
+\item
+If \locvar{LEN} equals \bitvar{NBITS}, return the completely decoded string
+ \bitvar{BITS}.
+\item
+Assign \locvar{BIT} the value $(1-\locvar{BIT})$.
+\item
+Continue decoding runs from step~\ref{step:short-run-loop}.
+\end{enumerate}
+
+\section{Coded Block Flags Decode}
+\label{sub:coded-blocks}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{FTYPE} & Integer & 1 & No & The frame type. \\
+\bitvar{NSBS} & Integer & 32 & No & The total number of super blocks in a
+ frame. \\
+\bitvar{NBS} & Integer & 36 & No & The total number of blocks in a
+ frame. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{BCODED} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 1 & No & An \bitvar{NBS}-element array of flags
+ indicating which blocks are coded. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{NBITS} & Integer & 36 & No & The length of a bit string to decode. \\
+\locvar{BITS} & Bit string & & & A decoded set of flags. \\
+\locvar{SBPCODED} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 1 & No & An \bitvar{NSBS}-element array of flags
+ indicating whether or not each super block is partially coded. \\
+\locvar{SBFCODED} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 1 & No & An \bitvar{NSBS}-element array of flags
+ indicating whether or not each non-partially coded super block is fully
+ coded. \\
+\locvar{\sbi} & Integer & 32 & No & The index of the current super
+ block. \\
+\locvar{\bi} & Integer & 36 & No & The index of the current block in coded
+ order. \\
+\bottomrule\end{tabularx}
+\medskip
+
+This procedure determines which blocks are coded in a given frame.
+In an intra frame, it marks all blocks coded.
+In an inter frame, however, any or all of the blocks may remain uncoded.
+The output is a list of bit flags, one for each block, marking it coded or not
+ coded.
+
+It is important to note that flags are still decoded for any blocks which lie
+ entirely outside the picture region, even though they are not displayed.
+Encoders MAY choose to code such blocks.
+Decoders MUST faithfully reconstruct such blocks, because their contents can be
+ used for predictors in future frames.
+Flags are \textit{not} decoded for portions of a super block which lie outside
+ the full frame, as there are no blocks in those regions.
+
+The complete procedure is as follows:
+
+\begin{enumerate}
+\item
+If \bitvar{FTYPE} is zero (intra frame):
+\begin{enumerate}
+\item
+For each consecutive value of \locvar{\bi} from 0 to $(\locvar{NBS}-1)$, assign
+ $\bitvar{BCODED}[\locvar{\bi}]$ the value one.
+\end{enumerate}
+\item
+Otherwise (inter frame):
+\begin{enumerate}
+\item
+Assign \locvar{NBITS} the value \bitvar{NSBS}.
+\item
+Read an \locvar{NBITS}-bit bit string into \locvar{BITS}, using the procedure
+ described in Section~\ref{sub:long-run}.
+This represents the list of partially coded super blocks.
+\item
+For each consecutive value of \locvar{\sbi} from 0 to $(\locvar{NSBS}-1)$,
+ remove the bit at the head of the string \locvar{BITS} and assign it to
+ $\locvar{SBPCODED}[\locvar{\sbi}]$.
+\item
+Assign \locvar{NBITS} the total number of super blocks such that \\
+ $\locvar{SBPCODED}[\locvar{\sbi}]$ equals zero.
+\item
+Read an \locvar{NBITS}-bit bit string into \locvar{BITS}, using the procedure
+ described in Section~\ref{sub:long-run}.
+This represents the list of fully coded super blocks.
+\item
+For each consecutive value of \locvar{\sbi} from 0 to $(\locvar{NSBS}-1)$ such
+ that $\locvar{SBPCODED}[\locvar{\sbi}]$ equals zero, remove the bit at the
+ head of the string \locvar{BITS} and assign it to
+ $\locvar{SBFCODED}[\locvar{\sbi}]$.
+\item
+Assign \locvar{NBITS} the number of blocks contained in super blocks where
+ $\locvar{SBPCODED}[\locvar{\sbi}]$ equals one.
+Note that this might {\em not} be equal to 16 times the number of partially
+ coded super blocks, since super blocks which overlap the edge of the frame
+ will have fewer than 16 blocks in them.
+\item
+Read an \locvar{NBITS}-bit bit string into \locvar{BITS}, using the procedure
+ described in Section~\ref{sub:short-run}.
+\item
+For each block in coded order---indexed by \locvar{\bi}:
+\begin{enumerate}
+\item
+Assign \locvar{\sbi} the index of the super block containing block
+ \locvar{\bi}.
+\item
+If $\locvar{SBPCODED}[\locvar{\sbi}]$ is zero, assign
+ $\bitvar{BCODED}[\locvar{\bi}]$ the value $\locvar{SBFCODED}[\locvar{\sbi}]$.
+\item
+Otherwise, remove the bit at the head of the string \locvar{BITS} and assign it
+ to $\bitvar{BCODED}[\locvar{\bi}]$.
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+
+\section{Macro Block Coding Modes}
+\label{sub:mb-modes}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{FTYPE} & Integer & 1 & No & The frame type. \\
+\bitvar{NMBS} & Integer & 32 & No & The total number of macro blocks in a
+ frame. \\
+\bitvar{NBS} & Integer & 36 & No & The total number of blocks in a
+ frame. \\
+\bitvar{BCODED} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 1 & No & An \bitvar{NBS}-element array of flags
+ indicating which blocks are coded. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{MBMODES} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 3 & No & An \bitvar{NMBS}-element array of coding
+ modes for each macro block. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{MSCHEME} & Integer & 3 & No & The mode coding scheme. \\
+\locvar{MALPHABET} & \multicolumn{1}{p{40pt}}{Integer array}
+ & 3 & No & The list of modes corresponding to each
+ Huffman code. \\
+\locvar{\mbi} & Integer & 32 & No & The index of the current macro
+ block. \\
+\locvar{\bi} & Integer & 36 & No & The index of the current block in
+ coded order. \\
+\locvar{\mi} & Integer & 3 & No & The index of a Huffman code from
+ Table~\ref{tab:mode-codes}, starting from $0$. \\
+\bottomrule\end{tabularx}
+\medskip
+
+In an intra frame, every macro block marked as coded in INTRA mode.
+In an inter frame, however, a macro block can be coded in one of eight coding
+ modes, given in Table~\ref{tab:coding-modes}.
+All of the blocks in all color planes contained in a macro block will be
+ assigned the coding mode of that macro block.
+
+\begin{table}[htbp]
+\begin{center}
+\begin{tabular}{cl}\toprule
+Index & Coding Mode \\\midrule
+$0$ & INTER\_NOMV \\
+$1$ & INTRA \\
+$2$ & INTER\_MV \\
+$3$ & INTER\_MV\_LAST \\
+$4$ & INTER\_MV\_LAST2 \\
+$5$ & INTER\_GOLDEN\_NOMV \\
+$6$ & INTER\_GOLDEN\_MV \\
+$7$ & INTER\_MV\_FOUR \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Macro Block Coding Modes}
+\label{tab:coding-modes}
+\end{table}
+
+An important thing to note is that a coding mode is only stored in the
+ bitstream for a macro block if it has at least one {\em luma} block coded.
+A macro block that contains coded blocks in the chroma planes, but not in the
+ luma plane, MUST be coded in INTER\_NOMV mode.
+Thus, no coding mode needs to be decoded for such a macro block.
+
+Coding modes are encoded using one of eight different schemes.
+Schemes 0 through 6 use the same simple Huffman code to represent the mode
+ numbers, as given in Table~\ref{tab:mode-codes}.
+The difference in the schemes is the mode number assigned to each code.
+Scheme 0 uses an assignment specified in the bitstream, while schemes 1--6 use
+ a fixed assignment, also given in Table~\ref{tab:mode-codes}.
+Scheme 7 simply codes each mode directly in the bitstream using three bits.
+
+\begin{table}[htbp]
+\begin{center}
+\begin{tabular}{lccccccc}\toprule
+Scheme & $1$ & $2$ & $3$ & $4$ & $5$ & $6$ & $7$ \\\cmidrule{2-7}
+Huffman Code & \multicolumn{6}{c}{Coding Mode} & \locvar{\mi} \\\midrule
+\bin{0} & $3$ & $3$ & $3$ & $3$ & $0$ & $0$ & $0$ \\
+\bin{10} & $4$ & $4$ & $2$ & $2$ & $3$ & $5$ & $1$ \\
+\bin{110} & $2$ & $0$ & $4$ & $0$ & $4$ & $3$ & $2$ \\
+\bin{1110} & $0$ & $2$ & $0$ & $4$ & $2$ & $4$ & $3$ \\
+\bin{11110} & $1$ & $1$ & $1$ & $1$ & $1$ & $2$ & $4$ \\
+\bin{111110} & $5$ & $5$ & $5$ & $5$ & $5$ & $1$ & $5$ \\
+\bin{1111110} & $6$ & $6$ & $6$ & $6$ & $6$ & $6$ & $6$ \\
+\bin{1111111} & $7$ & $7$ & $7$ & $7$ & $7$ & $7$ & $7$ \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Macro Block Mode Schemes}
+\label{tab:mode-codes}
+\end{table}
+
+\begin{enumerate}
+\item
+If \bitvar{FTYPE} is 0 (intra frame):
+\begin{enumerate}
+\item
+For each consecutive value of \locvar{\mbi} from 0 to $(\bitvar{NMBS}-1)$,
+ inclusive, assign $\bitvar{MBMODES}[\mbi]$ the value 1 (INTRA).
+\end{enumerate}
+\item
+Otherwise (inter frame):
+\begin{enumerate}
+\item
+Read a 3-bit unsigned integer as \locvar{MSCHEME}.
+\item
+If \locvar{MSCHEME} is 0:
+\begin{enumerate}
+\item
+For each consecutive value of \locvar{MODE} from 0 to 7, inclusive:
+\begin{enumerate}
+\item
+Read a 3-bit unsigned integer as \locvar{\mi}.
+\item
+Assign $\locvar{MALPHABET}[\mi]$ the value \locvar{MODE}.
+\end{enumerate}
+\end{enumerate}
+\item
+Otherwise, if \locvar{MSCHEME} is not 7, assign the entries of
+ \locvar{MALPHABET} the values in the corresponding column of
+ Table~\ref{tab:mode-codes}.
+\item
+For each consecutive macro block in coded order (cf.
+ Section~\ref{sec:mbs})---indexed by \locvar{\mbi}:
+\begin{enumerate}
+\item
+If a block \locvar{\bi} in the luma plane of macro block \locvar{\mbi} exists
+ such that $\bitvar{BCODED}[\locvar{\bi}]$ is 1:
+\begin{enumerate}
+\item
+If \locvar{MSCHEME} is not 7, read one bit at a time until one of the Huffman
+ codes in Table~\ref{tab:mode-codes} is recognized, and assign
+ $\bitvar{MBMODES}[\locvar{\mbi}]$ the value
+ $\locvar{MALPHABET}[\locvar{\mi}]$, where \locvar{\mi} is the index of the
+ Huffman code decoded.
+\item
+Otherwise, read a 3-bit unsigned integer as $\bitvar{MBMODES}[\locvar{\mbi}]$.
+\end{enumerate}
+\item
+Otherwise, if no luma-plane blocks in the macro block are coded, assign
+ $\bitvar{MBMODES}[\locvar{\mbi}]$ the value 0 (INTER\_NOMV).
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+
+\section{Motion Vectors}
+
+In an intra frame, no motion vectors are used, and so motion vector decoding is
+ skipped.
+In an inter frame, however, many of the inter coding modes require a motion
+ vector in order to specify an offset into the reference frame from which to
+ predict a block.
+These procedures assigns such a motion vector to every block.
+
+\subsection{Motion Vector Decode}
+\label{sub:mv-decode}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{MVMODE} & Integer & 1 & No & The motion vector decoding method. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{MVX} & Integer & 6 & Yes & The X component of the motion
+ vector. \\
+\bitvar{MVY} & Integer & 6 & Yes & The Y component of the motion
+ vector. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{MVSIGN} & Integer & 1 & No & The sign of the motion vector component
+ just decoded. \\
+\bottomrule\end{tabularx}
+\medskip
+
+The individual components of a motion vector can be coded using one of two
+ methods.
+The first uses a variable length Huffman code, given in
+ Table~\ref{tab:mv-huff-codes}.
+The second encodes the magnitude of the component directly in 5 bits, and the
+ sign in one bit.
+Note that in this case there are two representations for the value zero.
+For compatibility with VP3, a sign bit is read even if the magnitude read is
+ zero.
+One scheme is chosen and used for the entire frame.
+
+Each component can take on integer values from $-31\ldots 31$, inclusive, at
+ half-pixel resolution, i.e. $-15.5\ldots 15.5$ pixels in the luma plane.
+For each subsampled axis in the chroma planes, the corresponding motion vector
+ component is interpreted as being at quarter-pixel resolution, i.e.
+ $-7.75\ldots 7.75$ pixels.
+The precise details of how these vectors are used to compute predictors for
+ each block are described in Section~\ref{sec:predictors}.
+
+\begin{table}[ht]
+\begin{center}
+\begin{tabular}{lrlr}\toprule
+Huffman Code & Value & Huffman Code & Value \\\midrule
+\bin{000} & $0$ \\
+\bin{001} & $1$ & \bin{010} & $-1$ \\
+\bin{0110} & $2$ & \bin{0111} & $-2$ \\
+\bin{1000} & $3$ & \bin{1001} & $-3$ \\
+\bin{101000} & $4$ & \bin{101001} & $-4$ \\
+\bin{101010} & $5$ & \bin{101011} & $-5$ \\
+\bin{101100} & $6$ & \bin{101101} & $-6$ \\
+\bin{101110} & $7$ & \bin{101111} & $-7$ \\
+\bin{1100000} & $8$ & \bin{1100001} & $-8$ \\
+\bin{1100010} & $9$ & \bin{1100011} & $-9$ \\
+\bin{1100100} & $10$ & \bin{1100101} & $-10$ \\
+\bin{1100110} & $11$ & \bin{1100111} & $-11$ \\
+\bin{1101000} & $12$ & \bin{1101001} & $-12$ \\
+\bin{1101010} & $13$ & \bin{1101011} & $-13$ \\
+\bin{1101100} & $14$ & \bin{1101101} & $-14$ \\
+\bin{1101110} & $15$ & \bin{1101111} & $-15$ \\
+\bin{11100000} & $16$ & \bin{11100001} & $-16$ \\
+\bin{11100010} & $17$ & \bin{11100011} & $-17$ \\
+\bin{11100100} & $18$ & \bin{11100101} & $-18$ \\
+\bin{11100110} & $19$ & \bin{11100111} & $-19$ \\
+\bin{11101000} & $20$ & \bin{11101001} & $-20$ \\
+\bin{11101010} & $21$ & \bin{11101011} & $-21$ \\
+\bin{11101100} & $22$ & \bin{11101101} & $-22$ \\
+\bin{11101110} & $23$ & \bin{11101111} & $-23$ \\
+\bin{11110000} & $24$ & \bin{11110001} & $-24$ \\
+\bin{11110010} & $25$ & \bin{11110011} & $-25$ \\
+\bin{11110100} & $26$ & \bin{11110101} & $-26$ \\
+\bin{11110110} & $27$ & \bin{11110111} & $-27$ \\
+\bin{11111000} & $28$ & \bin{11111001} & $-28$ \\
+\bin{11111010} & $29$ & \bin{11111011} & $-29$ \\
+\bin{11111100} & $30$ & \bin{11111101} & $-30$ \\
+\bin{11111110} & $31$ & \bin{11111111} & $-31$ \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Huffman Codes for Motion Vector Components}
+\label{tab:mv-huff-codes}
+\end{table}
+
+A single motion vector is decoded is follows:
+
+\begin{enumerate}
+\item
+If \bitvar{MVMODE} is 0:
+\begin{enumerate}
+\item
+Read 1 bit at a time until one of the Huffman codes in
+ Table~\ref{tab:mv-huff-codes} is recognized, and assign the value to
+ \locvar{MVX}.
+\item
+Read 1 bit at a time until one of the Huffman codes in
+ Table~\ref{tab:mv-huff-codes} is recognized, and assign the value to
+ \locvar{MVY}.
+\end{enumerate}
+\item
+Otherwise:
+\begin{enumerate}
+\item
+Read a 5-bit unsigned integer as \bitvar{MVX}.
+\item
+Read a 1-bit unsigned integer as \locvar{MVSIGN}.
+\item
+If \locvar{MVSIGN} is 1, assign \bitvar{MVX} the value $-\bitvar{MVX}$.
+\item
+Read a 5-bit unsigned integer as \bitvar{MVY}.
+\item
+Read a 1-bit unsigned integer as \locvar{MVSIGN}.
+\item
+If \locvar{MVSIGN} is 1, assign \bitvar{MVY} the value $-\bitvar{MVY}$.
+\end{enumerate}
+\end{enumerate}
+
+\subsection{Macro Block Motion Vector Decode}
+\label{sub:mb-mv-decode}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{PF} & Integer & 2 & No & The pixel format. \\
+\bitvar{NMBS} & Integer & 32 & No & The total number of macro blocks in a
+ frame. \\
+\bitvar{MBMODES} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 3 & No & An \bitvar{NMBS}-element array of coding
+ modes for each macro block. \\
+\bitvar{NBS} & Integer & 36 & No & The total number of blocks in a
+ frame. \\
+\bitvar{BCODED} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 1 & No & An \bitvar{NBS}-element array of flags
+ indicating which blocks are coded. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{MVECTS} & \multicolumn{1}{p{50pt}}{Array of 2D Integer Vectors} &
+ 6 & Yes & An \bitvar{NBS}-element array of
+ motion vectors for each block. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{LAST1} & \multicolumn{1}{p{50pt}}{2D Integer Vector} &
+ 6 & Yes & The last motion vector. \\
+\locvar{LAST2} & \multicolumn{1}{p{50pt}}{2D Integer Vector} &
+ 6 & Yes & The second to last motion vector. \\
+\locvar{MVX} & Integer & 6 & Yes & The X component of a motion vector. \\
+\locvar{MVY} & Integer & 6 & Yes & The Y component of a motion vector. \\
+\locvar{\mbi} & Integer & 32 & No & The index of the current macro
+ block. \\
+\locvar{A} & Integer & 36 & No & The index of the lower-left luma block
+ in the macro block. \\
+\locvar{B} & Integer & 36 & No & The index of the lower-right luma
+ block in the macro block. \\
+\locvar{C} & Integer & 36 & No & The index of the upper-left luma block
+ in the macro block. \\
+\locvar{D} & Integer & 36 & No & The index of the upper-right luma
+ block in the macro block. \\
+\locvar{E} & Integer & 36 & No & The index of a chroma block in the
+ macro block, depending on the pixel format. \\
+\locvar{F} & Integer & 36 & No & The index of a chroma block in the
+ macro block, depending on the pixel format. \\
+\locvar{G} & Integer & 36 & No & The index of a chroma block in the
+ macro block, depending on the pixel format. \\
+\locvar{H} & Integer & 36 & No & The index of a chroma block in the
+ macro block, depending on the pixel format. \\
+\locvar{I} & Integer & 36 & No & The index of a chroma block in the
+ macro block, depending on the pixel format. \\
+\locvar{J} & Integer & 36 & No & The index of a chroma block in the
+ macro block, depending on the pixel format. \\
+\locvar{K} & Integer & 36 & No & The index of a chroma block in the
+ macro block, depending on the pixel format. \\
+\locvar{L} & Integer & 36 & No & The index of a chroma block in the
+ macro block, depending on the pixel format. \\
+\bottomrule\end{tabularx}
+\medskip
+
+Motion vectors are stored for each macro block.
+In every mode except for INTER\_MV\_FOUR, every block in all the color planes
+ are assigned the same motion vector.
+In INTER\_MV\_FOUR mode, all four blocks in the luma plane are assigned their
+ own motion vector, and motion vectors for blocks in the chroma planes are
+ computed from these, using averaging appropriate to the pixel format.
+
+For INTER\_MV and INTER\_GOLDEN\_MV modes, a single motion vector is decoded
+ and applied to each block.
+For INTER\_MV\_FOUR macro blocks, a motion vector is decoded for each coded
+ luma block.
+Uncoded luma blocks receive the default $(0,0)$ vector for the purposes of
+ computing the chroma motion vectors.
+
+None of the remaining macro block coding modes require decoding motion vectors
+ from the stream.
+INTRA mode does not use a motion-compensated predictor, and so requires no
+ motion vector, and INTER\_NOMV and INTER\_GOLDEN\_NOMV modes use the default
+ vector $(0,0)$ for each block.
+This also includes all macro blocks with no coded luma blocks, as they are
+ coded in INTER\_NOMV mode by definition.
+
+The modes INTER\_MV\_LAST and INTER\_MV\_LAST2 use the motion vector from the
+ last macro block (in coded order) and the second to last macro block,
+ respectively, that contained a motion vector pointing to the previous frame.
+Thus no explicit motion vector needs to be decoded for these modes.
+Macro blocks coded in INTRA mode or one of the GOLDEN modes are not considered
+ in this process.
+If an insufficient number of macro blocks have been coded in one of the INTER
+ modes, then the $(0,0)$ vector is used instead.
+For macro blocks coded in INTER\_MV\_FOUR mode, the vector from the upper-right
+ luma block is used, even if the upper-right block is not coded.
+
+The motion vectors are decoded from the stream as follows:
+
+\begin{enumerate}
+\item
+Assign \locvar{LAST1} and \locvar{LAST2} both the value $(0,0)$.
+\item
+Read a 1-bit unsigned integer as \locvar{MVMODE}.
+Note that this value is read even if no macro blocks require a motion vector to
+ be decoded.
+\item
+For each consecutive value of \locvar{\mbi} from 0 to $(\bitvar{NMBS}-1)$:
+\begin{enumerate}
+\item
+If $\bitvar{MBMODES}[\locvar{\mbi}]$ is 7 (INTER\_MV\_FOUR):
+\begin{enumerate}
+\item
+Let \locvar{A}, \locvar{B}, \locvar{C}, and \locvar{D} be the indices in coded
+ order \locvar{\bi} of the luma blocks in macro block \locvar{\mbi}, arranged
+ into raster order.
+Thus, \locvar{A} is the index in coded order of the block in the lower left,
+ \locvar{B} the lower right, \locvar{C} the upper left, and \locvar{D} the
+ upper right. % TODO: as shown in Figure~REF.
+\item If $\bitvar{BCODED}[\locvar{A}]$ is non-zero:
+\begin{enumerate}
+\item Decode a single motion vector into \locvar{MVX} and \locvar{MVY} using
+ the procedure described in Section~\ref{sub:mv-decode}.
+\item Assign $\bitvar{MVECTS}[\locvar{A}]$ the value
+ $(\locvar{MVX},\locvar{MVY})$.
+\end{enumerate}
+\item Otherwise, assign $\bitvar{MVECTS}[\locvar{A}]$ the value $(0,0)$.
+\item If $\bitvar{BCODED}[\locvar{B}]$ is non-zero:
+\begin{enumerate}
+\item Decode a single motion vector into \locvar{MVX} and \locvar{MVY} using
+ the procedure described in Section~\ref{sub:mv-decode}.
+\item Assign $\bitvar{MVECTS}[\locvar{B}]$ the value
+ $(\locvar{MVX},\locvar{MVY})$.
+\end{enumerate}
+\item
+Otherwise assign $\bitvar{MVECTS}[\locvar{B}]$ the value $(0,0)$.
+\item If $\bitvar{BCODED}[\locvar{C}]$ is non-zero:
+\begin{enumerate}
+\item Decode a single motion vector into \locvar{MVX} and \locvar{MVY} using
+ the procedure described in Section~\ref{sub:mv-decode}.
+\item Assign $\bitvar{MVECTS}[\locvar{C}]$ the value
+ $(\locvar{MVX},\locvar{MVY})$.
+\end{enumerate}
+\item Otherwise assign $\bitvar{MVECTS}[\locvar{C}]$ the value $(0,0)$.
+\item If $\bitvar{BCODED}[\locvar{D}]$ is non-zero:
+\begin{enumerate}
+\item Decode a single motion vector into \locvar{MVX} and \locvar{MVY} using
+ the procedure described in Section~\ref{sub:mv-decode}.
+\item Assign $\bitvar{MVECTS}[\locvar{D}]$ the value
+ $(\locvar{MVX},\locvar{MVY})$.
+\end{enumerate}
+\item
+Otherwise, assign $\bitvar{MVECTS}[\locvar{D}]$ the value $(0,0)$.
+\item
+If \bitvar{PF} is 0 (4:2:0):
+\begin{enumerate}
+\item
+Let \locvar{E} and \locvar{F} be the index in coded order of the one block in
+ the macro block from the $C_b$ and $C_r$ planes, respectively.
+\item
+Assign $\bitvar{MVECTS}[\locvar{E}]$ and $\bitvar{MVECTS}[\locvar{F}]$ the
+ value
+\begin{multline*}
+(\round\biggl(\frac{\begin{aligned}
+ \bitvar{MVECTS}[\locvar{A}]_x+\bitvar{MVECTS}[\locvar{B}]_x+\\
+ \bitvar{MVECTS}[\locvar{C}]_x+\bitvar{MVECTS}[\locvar{D}]_x
+ \end{aligned}}{4}\biggr), \\
+ \round\biggl(\frac{\begin{aligned}
+ \bitvar{MVECTS}[\locvar{A}]_y+\bitvar{MVECTS}[\locvar{B}]_y+\\
+ \bitvar{MVECTS}[\locvar{C}]_y+\bitvar{MVECTS}[\locvar{D}]_y
+ \end{aligned}}{4}\biggr))
+\end{multline*}
+\end{enumerate}
+\item
+If \bitvar{PF} is 2 (4:2:2):
+\begin{enumerate}
+\item
+Let \locvar{E} and \locvar{F} be the indices in coded order of the bottom and
+ top blocks in the macro block from the $C_b$ plane, respectively, and
+ \locvar{G} and \locvar{H} be the indices in coded order of the bottom and top
+ blocks in the $C_r$ plane, respectively. %TODO: as shown in Figure~REF.
+\item
+Assign $\bitvar{MVECTS}[\locvar{E}]$ and $\bitvar{MVECTS}[\locvar{G}]$ the
+ value
+\begin{multline*}
+(\round\left(\frac{
+ \bitvar{MVECTS}[\locvar{A}]_x+\bitvar{MVECTS}[\locvar{B}]_x}{2}\right), \\
+ \round\left(\frac{
+ \bitvar{MVECTS}[\locvar{A}]_y+\bitvar{MVECTS}[\locvar{B}]_y}{2}\right))
+\end{multline*}
+\item
+Assign $\bitvar{MVECTS}[\locvar{F}]$ and $\bitvar{MVECTS}[\locvar{H}]$ the
+ value
+\begin{multline*}
+(\round\left(\frac{
+ \bitvar{MVECTS}[\locvar{C}]_x+\bitvar{MVECTS}[\locvar{D}]_x}{2}\right), \\
+ \round\left(\frac{
+ \bitvar{MVECTS}[\locvar{C}]_y+\bitvar{MVECTS}[\locvar{D}]_y}{2}\right))
+\end{multline*}
+\end{enumerate}
+\item
+If \bitvar{PF} is 3 (4:4:4):
+\begin{enumerate}
+\item
+Let \locvar{E}, \locvar{F}, \locvar{G}, and \locvar{H} be the indices
+ \locvar{\bi} in coded order of the $C_b$ plane blocks in macro block
+ \locvar{\mbi}, arranged into raster order, and \locvar{I}, \locvar{J},
+ \locvar{K}, and \locvar{L} be the indices \locvar{\bi} in coded order of the
+ $C_r$ plane blocks in macro block \locvar{\mbi}, arranged into raster order.
+ %TODO: as shown in Figure~REF.
+\item
+Assign $\bitvar{MVECTS}[\locvar{E}]$ and $\bitvar{MVECTS}[\locvar{I}]$ the
+ value \\ $\bitvar{MVECTS}[\locvar{A}]$.
+\item
+Assign $\bitvar{MVECTS}[\locvar{F}]$ and $\bitvar{MVECTS}[\locvar{J}]$ the
+ value \\ $\bitvar{MVECTS}[\locvar{B}]$.
+\item
+Assign $\bitvar{MVECTS}[\locvar{G}]$ and $\bitvar{MVECTS}[\locvar{K}]$ the
+ value \\ $\bitvar{MVECTS}[\locvar{C}]$.
+\item
+Assign $\bitvar{MVECTS}[\locvar{H}]$ and $\bitvar{MVECTS}[\locvar{L}]$ the
+ value \\ $\bitvar{MVECTS}[\locvar{D}]$.
+\end{enumerate}
+\item
+Assign \locvar{LAST2} the value \locvar{LAST1}.
+\item
+Assign \locvar{LAST1} the value $(\locvar{MVX},\locvar{MVY})$.
+This is the value of the motion vector decoded from the last coded luma block
+ in raster order.
+There must always be at least one, since macro blocks with no coded luma blocks
+ must use mode 0:~INTER\_NOMV.
+\end{enumerate}
+\item
+Otherwise, if $\bitvar{MBMODES}[\locvar{\mbi}]$ is 6 (INTER\_GOLDEN\_MV),
+ decode a single motion vector into \locvar{MVX} and \locvar{MVY} using the
+ procedure described in Section~\ref{sub:mv-decode}.
+\item
+Otherwise, if $\bitvar{MBMODES}[\locvar{\mbi}]$ is 4 (INTER\_MV\_LAST2):
+\begin{enumerate}
+\item
+Assign $(\locvar{MVX},\locvar{MVY})$ the value \locvar{LAST2}.
+\item
+Assign \locvar{LAST2} the value \locvar{LAST1}.
+\item
+Assign \locvar{LAST1} the value $(\locvar{MVX},\locvar{MVY})$.
+\end{enumerate}
+\item
+Otherwise, if $\bitvar{MBMODES}[\locvar{\mbi}]$ is 3 (INTER\_MV\_LAST), assign
+ $(\locvar{MVX},\locvar{MVY})$ the value \locvar{LAST1}.
+\item
+Otherwise, if $\bitvar{MBMODES}[\locvar{\mbi}]$ is 2 (INTER\_MV):
+\begin{enumerate}
+\item
+Decode a single motion vector into \locvar{MVX} and \locvar{MVY} using the
+ procedure described in Section~\ref{sub:mv-decode}.
+\item
+Assign \locvar{LAST2} the value \locvar{LAST1}.
+\item
+Assign \locvar{LAST1} the value $(\locvar{MVX},\locvar{MVY})$.
+\end{enumerate}
+\item
+Otherwise ($\bitvar{MBMODES}[\locvar{\mbi}]$ is 5:~INTER\_GOLDEN\_NOMV,
+ 1:~INTRA, or 0:~INTER\_NOMV), assign \locvar{MVX} and \locvar{MVY} the value
+ zero.
+\item
+If $\bitvar{MBMODES}[\locvar{\mbi}]$ is not 7 (not INTER\_MV\_FOUR), then for
+ each coded block \locvar{\bi} in macro block \locvar{\mbi}:
+\begin{enumerate}
+\item
+Assign $\bitvar{MVECTS}[\locvar{\bi}]$ the value $(\locvar{MVX},\locvar{MVY})$.
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+
+\paragraph{VP3 Compatibility}
+
+Unless all four luma blocks in the macro block are coded, the VP3 encoder does
+ not select mode INTER\_MV\_FOUR.
+Theora removes this restriction by treating the motion vector for an uncoded
+ luma block as the default $(0,0)$ vector.
+This is consistent with the premise that the block has not changed since the
+ previous frame and that chroma information can be largely ignored when
+ estimating motion.
+
+No modification is required for INTER\_MV\_FOUR macro blocks in VP3 streams to
+ be decoded correctly by a Theora decoder.
+However, regardless of how many of the luma blocks are actually coded, the VP3
+ decoder always reads four motion vectors from the stream for INTER\_MV\_FOUR
+ mode.
+The motion vectors read are used to calculate the motion vectors for the chroma
+ blocks, but are otherwise ignored.
+Thus, care should be taken when creating Theora streams meant to be backwards
+ compatible with VP3 to only use INTER\_MV\_FOUR mode when all four luma
+ blocks are coded.
+
+\section{Block-Level \qi\ Decode}
+\label{sub:block-qis}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{NBS} & Integer & 36 & No & The total number of blocks in a
+ frame. \\
+\bitvar{BCODED} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 1 & No & An \bitvar{NBS}-element array of flags
+ indicating which blocks are coded. \\
+\bitvar{NQIS} & Integer & 2 & No & The number of \qi\ values. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{QIIS} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 2 & No & An \bitvar{NBS}-element array of
+ \locvar{\qii} values for each block. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{NBITS} & Integer & 36 & No & The length of a bit string to decode. \\
+\locvar{BITS} & Bit string & & & A decoded set of flags. \\
+\locvar{\bi} & Integer & 36 & No & The index of the current block in
+ coded order. \\
+\locvar{\qii} & Integer & 2 & No & The index of \qi\ value in the list of
+ \qi\ values defined for this frame. \\
+\bottomrule\end{tabularx}
+\medskip
+
+This procedure selects the \qi\ value to be used for dequantizing the AC
+ coefficients of each block.
+DC coefficients all use the same \qi\ value, so as to avoid interference with
+ the DC prediction mechanism, which occurs in the quantized domain.
+
+The value is actually represented by an index \locvar{\qii} into the list of
+ \qi\ values defined for the frame.
+The decoder makes multiple passes through the list of coded blocks, one for
+ each \qi\ value except the last one.
+In each pass, an RLE-coded bitmask is decoded to divide the blocks into two
+ groups: those that use the current \qi\ value in the list, and those that use
+ a value from later in the list.
+Each subsequent pass is restricted to the blocks in the second group.
+
+\begin{enumerate}
+\item
+For each value of \locvar{\bi} from 0 to $(\bitvar{NBS}-1)$, assign
+ $\bitvar{QIIS}[\locvar{\bi}]$ the value zero.
+\item
+For each consecutive value of \locvar{\qii} from 0 to $(\bitvar{NQIS}-2)$:
+\begin{enumerate}
+\item
+Assign \locvar{NBITS} be the number of blocks \locvar{\bi} such that
+ $\bitvar{BCODED}[\locvar{\bi}]$ is non-zero and $\bitvar{QIIS}[\locvar{\bi}]$
+ equals $\locvar{\qii}$.
+\item
+Read an \locvar{NBITS}-bit bit string into \locvar{BITS}, using the procedure
+ described in Section~\ref{sub:long-run}.
+This represents the list of blocks that use \qi\ value \locvar{\qii} or higher.
+\item
+For each consecutive value of \locvar{\bi} from 0 to $(\bitvar{NBS}-1)$ such
+ that $\bitvar{BCODED}[\locvar{\bi}]$ is non-zero and
+ $\bitvar{QIIS}[\locvar{\bi}]$ equals $\locvar{\qii}$:
+\begin{enumerate}
+\item
+Remove the bit at the head of the string \locvar{BITS} and add its value to
+ $\bitvar{QIIS}[\locvar{\bi}]$.
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+
+\paragraph{VP3 Compatibility}
+
+For VP3 compatible streams, only one \qi\ value can be specified in the frame
+ header, so the main loop of the above procedure, which would iterate from $0$
+ to $-1$, is never executed.
+Thus, no bits are read, and each block uses the one \qi\ value defined for the
+ frame.
+
+\cleardoublepage
+
+\section{DCT Coefficients}
+\label{sec:dct-decode}
+
+The quantized DCT coefficients are decoded by making 64 passes through the list
+ of coded blocks, one for each token index in zig-zag order.
+For the DC tokens, two Huffman tables are chosen from among the first 16, one
+ for the luma plane and one for the chroma planes.
+The AC tokens, however, are divided into four different groups.
+Again, two 4-bit indices are decoded, one for the luma plane, and one for the
+ chroma planes, but these select the codebooks for {\em all four} groups.
+AC coefficients in group one use codebooks $16\ldots 31$, while group two uses
+ $32\ldots 47$, etc.
+Note that this second set of indices is decoded even if there are no non-zero
+ AC coefficients in the frame.
+
+Tokens are divided into two major types: EOB tokens, which fill the remainder
+ of one or more blocks with zeros, and coefficient tokens, which fill in one or
+ more coefficients within a single block.
+A decoding procedure for the first is given in Section~\ref{sub:eob-token}, and
+ for the second in Section~\ref{sub:coeff-token}.
+The decoding procedure for the complete set of quantized coefficients is given
+ in Section~\ref{sub:dct-coeffs}.
+
+\subsection{EOB Token Decode}
+\label{sub:eob-token}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{TOKEN} & Integer & 5 & No & The token being decoded.
+This must be in the range $0\ldots 6$. \\
+\bitvar{NBS} & Integer & 36 & No & The total number of blocks in a
+ frame. \\
+\bitvar{TIS} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 7 & No & An \bitvar{NBS}-element array of the
+ current token index for each block. \\
+\bitvar{NCOEFFS} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 7 & No & An \bitvar{NBS}-element array of the
+ coefficient count for each block. \\
+\bitvar{COEFFS} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 16 & Yes & An $\bitvar{NBS}\times 64$ array of
+ quantized DCT coefficient values for each block in zig-zag order. \\
+\bitvar{\bi} & Integer & 36 & No & The index of the current block in
+ coded order. \\
+\bitvar{\ti} & Integer & 6 & No & The current token index. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{TIS} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 7 & No & An \bitvar{NBS}-element array of the
+ current token index for each block. \\
+\bitvar{COEFFS} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 16 & Yes & An $\bitvar{NBS}\times 64$ array of
+ quantized DCT coefficient values for each block in zig-zag order. \\
+\bitvar{EOBS} & Integer & 36 & No & The remaining length of the current
+ EOB run. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{\bj} & Integer & 36 & No & Another index of a block in coded
+ order. \\
+\locvar{\tj} & Integer & 6 & No & Another token index. \\
+\bottomrule\end{tabularx}
+\medskip
+
+A summary of the EOB tokens is given in Table~\ref{tab:eob-tokens}.
+An important thing to note is that token 6 does not add an offset to the
+ decoded run value, even though in general it should only be used for runs of
+ size 32 or longer.
+If a value of zero is decoded for this run, it is treated as an EOB run the
+ size of the remaining coded blocks.
+
+\begin{table}[htbp]
+\begin{center}
+\begin{tabular}{ccl}\toprule
+Token Value & Extra Bits & EOB Run Lengths \\\midrule
+$0$ & $0$ & $1$ \\
+$1$ & $0$ & $2$ \\
+$2$ & $0$ & $3$ \\
+$3$ & $2$ & $4\ldots 7$ \\
+$4$ & $3$ & $8\ldots 15$ \\
+$5$ & $4$ & $16\ldots 31$ \\
+$6$ & $12$ & $1\ldots 4095$, or all remaining blocks \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{EOB Token Summary}
+\label{tab:eob-tokens}
+\end{table}
+
+There is no restriction that one EOB token cannot be immediately followed by
+ another, so no special cases are necessary to extend the range of the maximum
+ run length as were required in Section~\ref{sub:long-run}.
+Indeed, depending on the lengths of the Huffman codes, it may even cheaper to
+ encode, by way of example, an EOB run of length 31 followed by an EOB run of
+ length 1 than to encode an EOB run of length 32 directly.
+There is also no restriction that an EOB run stop at the end of a color plane
+ or a token index.
+The run MUST, however, end at or before the end of the frame.
+
+\begin{enumerate}
+\item
+If \bitvar{TOKEN} is 0, assign \bitvar{EOBS} the value 1.
+\item
+Otherwise, if \bitvar{TOKEN} is 1, assign \bitvar{EOBS} the value 2.
+\item
+Otherwise, if \bitvar{TOKEN} is 2, assign \bitvar{EOBS} the value 3.
+\item
+Otherwise, if \bitvar{TOKEN} is 3:
+\begin{enumerate}
+\item
+Read a 2-bit unsigned integer as \bitvar{EOBS}.
+\item
+Assign \bitvar{EOBS} the value $(\bitvar{EOBS}+4)$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 4:
+\begin{enumerate}
+\item
+Read a 3-bit unsigned integer as \bitvar{EOBS}.
+\item
+Assign \bitvar{EOBS} the value $(\bitvar{EOBS}+8)$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 5:
+\begin{enumerate}
+\item
+Read a 4-bit unsigned integer as \bitvar{EOBS}.
+\item
+Assign \bitvar{EOBS} the value $(\bitvar{EOBS}+16)$.
+\end{enumerate}
+\item
+Otherwise, \bitvar{TOKEN} is 6:
+\begin{enumerate}
+\item
+Read a 12-bit unsigned integer as \bitvar{EOBS}.
+\item
+If \bitvar{EOBS} is zero, assign \bitvar{EOBS} to be the number of coded blocks
+ \locvar{\bj} such that $\bitvar{TIS}[\locvar{\bj}]$ is less than 64.
+\end{enumerate}
+\item
+For each value of \locvar{\tj} from $\bitvar{\ti}$ to 63, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\locvar{\tj}]$ the value zero.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value 64.
+\item
+Assign \bitvar{EOBS} the value $(\bitvar{EOBS}-1)$.
+\end{enumerate}
+
+\paragraph{VP3 Compatibility}
+
+The VP3 encoder does not use the special interpretation of a zero-length EOB
+ run, though its decoder {\em does} support it.
+That may be due more to a happy accident in the way the decoder was written
+ than intentional design, however, and other VP3 implementations might not
+ reproduce it faithfully.
+For backwards compatibility, it may be wise to avoid it, especially as for most
+ frame sizes there are fewer than 4095 blocks, making it unnecessary.
+
+\subsection{Coefficient Token Decode}
+\label{sub:coeff-token}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{TOKEN} & Integer & 5 & No & The token being decoded.
+This must be in the range $7\ldots 31$. \\
+\bitvar{NBS} & Integer & 36 & No & The total number of blocks in a
+ frame. \\
+\bitvar{TIS} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 7 & No & An \bitvar{NBS}-element array of the
+ current token index for each block. \\
+\bitvar{COEFFS} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 16 & Yes & An $\bitvar{NBS}\times 64$ array of
+ quantized DCT coefficient values for each block in zig-zag order. \\
+\bitvar{\bi} & Integer & 36 & No & The index of the current block in
+ coded order. \\
+\bitvar{\ti} & Integer & 6 & No & The current token index. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{TIS} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 7 & No & An \bitvar{NBS}-element array of the
+ current token index for each block. \\
+\bitvar{NCOEFFS} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 7 & No & An \bitvar{NBS}-element array of the
+ coefficient count for each block. \\
+\bitvar{COEFFS} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 16 & Yes & An $\bitvar{NBS}\times 64$ array of
+ quantized DCT coefficient values for each block in zig-zag order. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{SIGN} & Integer & 1 & No & A flag indicating the sign of the
+ current coefficient. \\
+\locvar{MAG} & Integer & 10 & No & The magnitude of the current
+ coefficient. \\
+\locvar{RLEN} & Integer & 6 & No & The length of the current zero run. \\
+\locvar{\tj} & Integer & 6 & No & Another token index. \\
+\bottomrule\end{tabularx}
+\medskip
+
+Each of these tokens decodes one or more coefficients in the current block.
+A summary of the meanings of the token values is presented in
+ Table~\ref{tab:coeff-tokens}.
+There are often several different ways to tokenize a given coefficient list.
+Which one is optimal depends on the exact lengths of the Huffman codes used to
+ represent each token.
+Note that we do not update the coefficient count for the block if we decode a
+ pure zero run.
+
+\begin{table}[htbp]
+\begin{center}
+\begin{tabularx}{\textwidth}{cclX}\toprule
+Token Value & Extra Bits & \multicolumn{1}{p{55pt}}{Number of Coefficients}
+ & Description \\\midrule
+$7$ & $3$ & $1\ldots 8$ & Short zero run. \\
+$8$ & $6$ & $1\ldots 64$ & Zero run. \\
+$9$ & $0$ & $1$ & $1$. \\
+$10$ & $0$ & $1$ & $-1$. \\
+$11$ & $0$ & $1$ & $2$. \\
+$12$ & $0$ & $1$ & $-2$. \\
+$13$ & $1$ & $1$ & $\pm 3$. \\
+$14$ & $1$ & $1$ & $\pm 4$. \\
+$15$ & $1$ & $1$ & $\pm 5$. \\
+$16$ & $1$ & $1$ & $\pm 6$. \\
+$17$ & $2$ & $1$ & $\pm 7\ldots 8$. \\
+$18$ & $3$ & $1$ & $\pm 9\ldots 12$. \\
+$19$ & $4$ & $1$ & $\pm 13\ldots 20$. \\
+$20$ & $5$ & $1$ & $\pm 21\ldots 36$. \\
+$21$ & $6$ & $1$ & $\pm 37\ldots 68$. \\
+$22$ & $10$ & $1$ & $\pm 69\ldots 580$. \\
+$23$ & $1$ & $2$ & One zero followed by $\pm 1$. \\
+$24$ & $1$ & $3$ & Two zeros followed by $\pm 1$. \\
+$25$ & $1$ & $4$ & Three zeros followed by
+ $\pm 1$. \\
+$26$ & $1$ & $5$ & Four zeros followed by
+ $\pm 1$. \\
+$27$ & $1$ & $6$ & Five zeros followed by
+ $\pm 1$. \\
+$28$ & $3$ & $7\ldots 10$ & $6\ldots 9$ zeros followed by
+ $\pm 1$. \\
+$29$ & $4$ & $11\ldots 18$ & $10\ldots 17$ zeros followed by
+ $\pm 1$.\\
+$30$ & $2$ & $2$ & One zero followed by
+ $\pm 2\ldots 3$. \\
+$31$ & $3$ & $3\ldots 4$ & $2\ldots 3$ zeros followed by
+ $\pm 2\ldots 3$. \\
+\bottomrule\end{tabularx}
+\end{center}
+\caption{Coefficient Token Summary}
+\label{tab:coeff-tokens}
+\end{table}
+
+For tokens which represent more than one coefficient, they MUST NOT bring the
+ total number of coefficients in the block to more than 64.
+Care should be taken in a decoder to check for this, as otherwise it may permit
+ buffer overflows from invalidly formed packets.
+\begin{verse}
+{\bf Note:} One way to achieve this efficiently is to combine the inverse
+ zig-zag mapping (described later in Section~\ref{sub:dequant}) with
+ coefficient decode, and use a table look-up to map zig-zag indices greater
+ than 63 to a safe location.
+\end{verse}
+
+\begin{enumerate}
+\item
+If \bitvar{TOKEN} is 7:
+\begin{enumerate}
+\item
+Read in a 3-bit unsigned integer as \locvar{RLEN}.
+\item
+Assign \locvar{RLEN} the value $(\locvar{RLEN}+1)$.
+\item
+For each value of \locvar{\tj} from \bitvar{\ti} to
+ $(\bitvar{\ti}+\locvar{RLEN}-1)$, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\locvar{\tj}]$ the value zero.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value
+ $\bitvar{TIS}[\bitvar{\bi}]+\locvar{RLEN}$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 8:
+\begin{enumerate}
+\item
+Read in a 6-bit unsigned integer as \locvar{RLEN}.
+\item
+Assign \locvar{RLEN} the value $(\locvar{RLEN}+1)$.
+\item
+For each value of \locvar{\tj} from \bitvar{\ti} to
+ $(\bitvar{\ti}+\locvar{RLEN}-1)$, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\locvar{\tj}]$ the value zero.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value
+ $\bitvar{TIS}[\bitvar{\bi}]+\locvar{RLEN}$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 9:
+\begin{enumerate}
+\item
+Assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$ the value $1$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+1$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 10:
+\begin{enumerate}
+\item
+Assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$ the value $-1$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+1$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 11:
+\begin{enumerate}
+\item
+Assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$ the value $2$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+1$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 12:
+\begin{enumerate}
+\item
+Assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$ the value $-2$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+1$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 13:
+\begin{enumerate}
+\item
+Read a 1-bit unsigned integer as \locvar{SIGN}.
+\item
+If \locvar{SIGN} is zero, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$
+ the value $3$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$ the value $-3$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+1$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 14:
+\begin{enumerate}
+\item
+Read a 1-bit unsigned integer as \locvar{SIGN}.
+\item
+If \locvar{SIGN} is zero, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$
+ the value $4$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$ the value $-4$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+1$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 15:
+\begin{enumerate}
+\item
+Read a 1-bit unsigned integer as \locvar{SIGN}.
+\item
+If \locvar{SIGN} is zero, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$
+ the value $5$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$ the value $-5$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+1$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 16:
+\begin{enumerate}
+\item
+Read a 1-bit unsigned integer as \locvar{SIGN}.
+\item
+If \locvar{SIGN} is zero, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$
+ the value $6$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$ the value $-6$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+1$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 17:
+\begin{enumerate}
+\item
+Read a 1-bit unsigned integer as \locvar{SIGN}.
+\item
+Read a 1-bit unsigned integer as \locvar{MAG}.
+\item
+Assign \locvar{MAG} the value $(\locvar{MAG}+7)$.
+\item
+If \locvar{SIGN} is zero, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$
+ the value $\locvar{MAG}$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$ the value
+ $-\locvar{MAG}$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+1$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 18:
+\begin{enumerate}
+\item
+Read a 1-bit unsigned integer as \locvar{SIGN}.
+\item
+Read a 2-bit unsigned integer as \locvar{MAG}.
+\item
+Assign \locvar{MAG} the value $(\locvar{MAG}+9)$.
+\item
+If \locvar{SIGN} is zero, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$
+ the value $\locvar{MAG}$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$ the value
+ $-\locvar{MAG}$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+1$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 19:
+\begin{enumerate}
+\item
+Read a 1-bit unsigned integer as \locvar{SIGN}.
+\item
+Read a 3-bit unsigned integer as \locvar{MAG}.
+\item
+Assign \locvar{MAG} the value $(\locvar{MAG}+13)$.
+\item
+If \locvar{SIGN} is zero, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$
+ the value $\locvar{MAG}$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$ the value
+ $-\locvar{MAG}$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+1$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 20:
+\begin{enumerate}
+\item
+Read a 1-bit unsigned integer as \locvar{SIGN}.
+\item
+Read a 4-bit unsigned integer as \locvar{MAG}.
+\item
+Assign \locvar{MAG} the value $(\locvar{MAG}+21)$.
+\item
+If \locvar{SIGN} is zero, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$
+ the value $\locvar{MAG}$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$ the value
+ $-\locvar{MAG}$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+1$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 21:
+\begin{enumerate}
+\item
+Read a 1-bit unsigned integer as \locvar{SIGN}.
+\item
+Read a 5-bit unsigned integer as \locvar{MAG}.
+\item
+Assign \locvar{MAG} the value $(\locvar{MAG}+37)$.
+\item
+If \locvar{SIGN} is zero, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$
+ the value $\locvar{MAG}$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$ the value
+ $-\locvar{MAG}$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+1$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 22:
+\begin{enumerate}
+\item
+Read a 1-bit unsigned integer as \locvar{SIGN}.
+\item
+Read a 9-bit unsigned integer as \locvar{MAG}.
+\item
+Assign \locvar{MAG} the value $(\locvar{MAG}+69)$.
+\item
+If \locvar{SIGN} is zero, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$
+ the value $\locvar{MAG}$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$ the value
+ $-\locvar{MAG}$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+1$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 23:
+\begin{enumerate}
+\item
+Assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}]$ the value zero.
+\item
+Read a 1-bit unsigned integer as SIGN.
+\item
+If \locvar{SIGN} is zero, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+1]$ the value $1$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+1]$ the value
+ $-1$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+2$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 24:
+\begin{enumerate}
+\item
+For each value of \locvar{\tj} from \bitvar{\ti} to $(\bitvar{\ti}+1)$, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\locvar{\tj}]$ the value zero.
+\item
+Read a 1-bit unsigned integer as SIGN.
+\item
+If \locvar{SIGN} is zero, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+2]$ the value $1$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+2]$ the value
+ $-1$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+3$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 25:
+\begin{enumerate}
+\item
+For each value of \locvar{\tj} from \bitvar{\ti} to $(\bitvar{\ti}+2)$, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\locvar{\tj}]$ the value zero.
+\item
+Read a 1-bit unsigned integer as SIGN.
+\item
+If \locvar{SIGN} is zero, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+3]$ the value $1$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+3]$ the value
+ $-1$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+4$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 26:
+\begin{enumerate}
+\item
+For each value of \locvar{\tj} from \bitvar{\ti} to $(\bitvar{\ti}+3)$, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\locvar{\tj}]$ the value zero.
+\item
+Read a 1-bit unsigned integer as SIGN.
+\item
+If \locvar{SIGN} is zero, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+4]$ the value $1$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+4]$ the value
+ $-1$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+5$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 27:
+\begin{enumerate}
+\item
+For each value of \locvar{\tj} from \bitvar{\ti} to $(\bitvar{\ti}+4)$, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\locvar{\tj}]$ the value zero.
+\item
+Read a 1-bit unsigned integer as SIGN.
+\item
+If \locvar{SIGN} is zero, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+5]$ the value $1$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+5]$ the value
+ $-1$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+6$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 28:
+\begin{enumerate}
+\item
+Read a 1-bit unsigned integer as \locvar{SIGN}.
+\item
+Read a 2-bit unsigned integer as \locvar{RLEN}.
+\item
+Assign \locvar{RLEN} the value $(\locvar{RLEN}+6)$.
+\item
+For each value of \locvar{\tj} from \bitvar{\ti} to
+ $(\bitvar{\ti}+\locvar{RLEN}-1)$, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\locvar{\tj}]$ the value zero.
+\item
+If \locvar{SIGN} is zero, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+\locvar{RLEN}]$ the value $1$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+\locvar{RLEN}]$
+ the value $-1$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value
+ $\bitvar{TIS}[\bitvar{\bi}]+\locvar{RLEN}+1$.
+\item
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 29:
+\begin{enumerate}
+\item
+Read a 1-bit unsigned integer as \locvar{SIGN}.
+\item
+Read a 3-bit unsigned integer as \locvar{RLEN}.
+\item
+Assign \locvar{RLEN} the value $(\locvar{RLEN}+10)$.
+\item
+For each value of \locvar{\tj} from \bitvar{\ti} to
+ $(\bitvar{\ti}+\locvar{RLEN}-1)$, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\locvar{\tj}]$ the value zero.
+\item
+If \locvar{SIGN} is zero, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+\locvar{RLEN}]$ the value $1$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+\locvar{RLEN}]$
+ the value $-1$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value
+ $\bitvar{TIS}[\bitvar{\bi}]+\locvar{RLEN}+1$.
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 30:
+\begin{enumerate}
+\item
+Assign $\bitvar{COEFFS}[\bitvar{\bi}][\locvar{\ti}]$ the value zero.
+\item
+Read a 1-bit unsigned integer as \locvar{SIGN}.
+\item
+Read a 1-bit unsigned integer as \locvar{MAG}.
+\item
+Assign \locvar{MAG} the value $(\locvar{MAG}+2)$.
+\item
+If \locvar{SIGN} is zero, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+1]$ the value $\locvar{MAG}$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+1]$ the value
+ $-\locvar{MAG}$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]+2$.
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\item
+Otherwise, if \bitvar{TOKEN} is 31:
+\begin{enumerate}
+\item
+Read a 1-bit unsigned integer as \locvar{SIGN}.
+\item
+Read a 1-bit unsigned integer as \locvar{MAG}.
+\item
+Assign \locvar{MAG} the value $(\locvar{MAG}+2)$.
+\item
+Read a 1-bit unsigned integer as \locvar{RLEN}.
+\item
+Assign \locvar{RLEN} the value $(\locvar{RLEN}+2)$.
+\item
+For each value of \locvar{\tj} from \bitvar{\ti} to
+ $(\bitvar{\ti}+\locvar{RLEN}-1)$, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\locvar{\tj}]$ the value zero.
+\item
+If \locvar{SIGN} is zero, assign
+ $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+\locvar{RLEN}]$ the value
+ $\locvar{MAG}$.
+\item
+Otherwise, assign $\bitvar{COEFFS}[\bitvar{\bi}][\bitvar{\ti}+\locvar{RLEN}]$
+ the value $-\locvar{MAG}$.
+\item
+Assign $\bitvar{TIS}[\bitvar{\bi}]$ the value
+ $\bitvar{TIS}[\bitvar{\bi}]+\locvar{RLEN}+1$.
+Assign $\bitvar{NCOEFFS}[\bitvar{\bi}]$ the value $\bitvar{TIS}[\bitvar{\bi}]$.
+\end{enumerate}
+\end{enumerate}
+
+\subsection{DCT Coefficient Decode}
+\label{sub:dct-coeffs}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{NBS} & Integer & 36 & No & The total number of blocks in a
+ frame. \\
+\bitvar{BCODED} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 1 & No & An \bitvar{NBS}-element array of flags
+ indicating which blocks are coded. \\
+\bitvar{NMBS} & Integer & 32 & No & The total number of macro blocks in a
+ frame. \\
+\bitvar{HTS} & \multicolumn{3}{l}{Huffman table array}
+ & An 80-element array of Huffman tables
+ with up to 32 entries each. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{COEFFS} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 16 & Yes & An $\bitvar{NBS}\times 64$ array of
+ quantized DCT coefficient values for each block in zig-zag order. \\
+\bitvar{NCOEFFS} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 7 & No & An \bitvar{NBS}-element array of the
+ coefficient count for each block. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{NLBS} & Integer & 34 & No & The number of blocks in the luma
+ plane. \\
+\locvar{TIS} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 7 & No & An \bitvar{NBS}-element array of the
+ current token index for each block. \\
+\locvar{EOBS} & Integer & 36 & No & The remaining length of the current
+ EOB run. \\
+\locvar{TOKEN} & Integer & 5 & No & The current token being decoded. \\
+\locvar{HG} & Integer & 3 & No & The current Huffman table group. \\
+\locvar{\cbi} & Integer & 36 & No & The index of the current block in the
+ coded block list. \\
+\locvar{\bi} & Integer & 36 & No & The index of the current block in
+ coded order. \\
+\locvar{\bj} & Integer & 36 & No & Another index of a block in coded
+ order. \\
+\locvar{\ti} & Integer & 6 & No & The current token index. \\
+\locvar{\tj} & Integer & 6 & No & Another token index. \\
+\locvar{\hti_L} & Integer & 4 & No & The index of the current Huffman table
+ to use for the luma plane within a group. \\
+\locvar{\hti_C} & Integer & 4 & No & The index of the current Huffman table
+ to use for the chroma planes within a group. \\
+\locvar{\hti} & Integer & 7 & No & The index of the current Huffman table
+ to use. \\
+\bottomrule\end{tabularx}
+\medskip
+
+This procedure puts the above two procedures to work to decode the entire set
+ of DCT coefficients for the frame.
+At the end of this procedure, \locvar{EOBS} MUST be zero, and
+ $\locvar{TIS}[\locvar{\bi}]$ MUST be 64 for every coded \locvar{\bi}.
+
+Note that we update the coefficient count of every block before continuing an
+ EOB run or decoding a token, despite the fact that it is already up to date
+ unless the previous token was a pure zero run.
+This is done intentionally to mimic the VP3 accounting rules.
+Thus the only time the coefficient count does not include the coefficients in a
+ pure zero run is when when that run reaches all the way to coefficient 63.
+Note, however, that regardless of the coefficient count, any additional
+ coefficients are still set to zero.
+The only use of the count is in determining if a special case of the inverse
+ DCT can be used in Section~\ref{sub:2d-idct}.
+
+\begin{enumerate}
+\item
+Assign \locvar{NLBS} the value $(\bitvar{NMBS}*4)$.
+\item
+For each consecutive value of \locvar{\bi} from 0 to $(\bitvar{NBS}-1)$,
+ assign $\locvar{TIS}[\locvar{\bi}]$ the value zero.
+\item
+Assign \locvar{EOBS} the value 0.
+\item
+For each consecutive value of \locvar{\ti} from 0 to 63:
+\begin{enumerate}
+\item
+If \locvar{\ti} is $0$ or $1$:
+\begin{enumerate}
+\item
+Read a 4-bit unsigned integer as \locvar{\hti_L}.
+\item
+Read a 4-bit unsigned integer as \locvar{\hti_C}.
+\end{enumerate}
+\item
+For each consecutive value of \locvar{\bi} from 0 to $(\bitvar{NBS}-1)$ for
+ which $\bitvar{BCODED}[\locvar{\bi}]$ is non-zero and
+ $\locvar{TIS}[\locvar{\bi}]$ equals \locvar{\ti}:
+\begin{enumerate}
+\item
+Assign $\bitvar{NCOEFFS}[\locvar{\bi}]$ the value \locvar{\ti}.
+\item
+If \locvar{EOBS} is greater than zero:
+\begin{enumerate}
+\item
+For each value of \locvar{\tj} from $\locvar{\ti}$ to 63, assign
+ $\bitvar{COEFFS}[\locvar{\bi}][\locvar{\tj}]$ the value zero.
+\item
+Assign $\locvar{TIS}[\locvar{\bi}]$ the value 64.
+\item
+Assign \locvar{EOBS} the value $(\locvar{EOBS}-1)$.
+\end{enumerate}
+\item
+Otherwise:
+\begin{enumerate}
+\item
+Assign \locvar{HG} a value based on \locvar{\ti} from
+ Table~\ref{tab:huff-groups}.
+
+\begin{table}[htbp]
+\begin{center}
+\begin{tabular}{lc}\toprule
+\locvar{\ti} & \locvar{HG} \\\midrule
+$0$ & $0$ \\
+$1\ldots 5$ & $1$ \\
+$6\ldots 14$ & $2$ \\
+$15\ldots 27$ & $3$ \\
+$28\ldots 63$ & $4$ \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Huffman Table Groups}
+\label{tab:huff-groups}
+\end{table}
+
+\item
+If \locvar{\bi} is less than \locvar{NLBS}, assign \locvar{\hti} the value
+ $(16*\locvar{HG}+\locvar{\hti_L})$.
+\item
+Otherwise, assign \locvar{\hti} the value
+ $(16*\locvar{HG}+\locvar{\hti_C})$.
+\item
+Read one bit at a time until one of the codes in $\bitvar{HTS}[\locvar{\hti}]$
+ is recognized, and assign the value to \locvar{TOKEN}.
+\item
+If \locvar{TOKEN} is less than 7, expand an EOB token using the procedure given
+ in Section~\ref{sub:eob-token} to update $\locvar{TIS}[\locvar{\bi}]$,
+ $\bitvar{COEFFS}[\locvar{\bi}]$, and \locvar{EOBS}.
+\item
+Otherwise, expand a coefficient token using the procedure given in
+ Section~\ref{sub:coeff-token} to update $\locvar{TIS}[\locvar{\bi}]$,
+ $\bitvar{COEFFS}[\locvar{\bi}]$, and $\bitvar{NCOEFFS}[\locvar{\bi}]$.
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+
+\section{Undoing DC Prediction}
+
+The actual value of a DC coefficient decoded by Section~\ref{sec:dct-decode} is
+ the residual from a predicted value computed by the encoder.
+This prediction is only applied to DC coefficients.
+Quantized AC coefficients are encoded directly.
+
+This section describes how to undo this prediction to recover the original
+ DC coefficients.
+The predicted DC value for a block is computed from the DC values of its
+ immediate neighbors which precede the block in raster order.
+Thus, reversing this prediction must procede in raster order, instead of coded
+ order.
+
+Note that this step comes before dequantizing the coefficients.
+For this reason, DC coefficients are all quantized with the same \qi\ value,
+ regardless of the block-level \qi\ values decoded in
+ Section~\ref{sub:block-qis}.
+Those \qi\ values are applied only to the AC coefficients.
+
+\subsection{Computing the DC Predictor}
+\label{sub:dc-pred}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{BCODED} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 1 & No & An \bitvar{NBS}-element array of flags
+ indicating which blocks are coded. \\
+\bitvar{MBMODES} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 3 & No & An \bitvar{NMBS}-element array of
+ coding modes for each macro block. \\
+\bitvar{LASTDC} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 16 & Yes & A 3-element array containing the
+ most recently decoded DC value, one for inter mode and for each reference
+ frame. \\
+\bitvar{COEFFS} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 16 & Yes & An $\bitvar{NBS}\times 64$ array of
+ quantized DCT coefficient values for each block in zig-zag order. \\
+\bitvar{\bi} & Integer & 36 & No & The index of the current block in
+ coded order. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{DCPRED} & Integer & 16 & Yes & The predicted DC value for the current
+ block. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{P} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 1 & No & A 4-element array indicating which
+ neighbors can be used for DC prediction. \\
+\locvar{PBI} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 36 & No & A 4-element array containing the
+ coded-order block index of the current block's neighbors. \\
+\locvar{W} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 7 & Yes & A 4-element array of the weights to
+ apply to each neighboring DC value. \\
+\locvar{PDIV} & Integer & 8 & No & The valud to divide the weighted sum
+ by. \\
+\locvar{\bj} & Integer & 36 & No & The index of a neighboring block in
+ coded order. \\
+\locvar{\mbi} & Integer & 32 & No & The index of the macro block
+ containing block \locvar{\bi}. \\
+\locvar{\mbi} & Integer & 32 & No & The index of the macro block
+ containing block \locvar{\bj}. \\
+\locvar{\rfi} & Integer & 2 & No & The index of the reference frame
+ indicated by the coding mode for macro block \locvar{\mbi}. \\
+\bottomrule\end{tabularx}
+\medskip
+
+This procedure outlines how a predictor is formed for a single block.
+
+The predictor is computed as a weighted sum of the neighboring DC values from
+ coded blocks which use the same reference frame.
+This latter condition is determined only by checking the coding mode for the
+ block.
+Even if the golden frame and the previous frame are in fact the same, e.g. for
+ the first inter frame after an intra frame, they are still treated as being
+ different for the purposes of DC prediction.
+The weighted sum is divided by a power of two, with truncation towards zero,
+ and the result is checked for outranging if necessary.
+
+If there are no neighboring coded blocks which use the same reference frame as
+ the current block, then the most recent DC value of any block that used that
+ reference frame is used instead.
+If no such block exists, then the predictor is set to zero.
+
+\begin{enumerate}
+\item
+Assign \locvar{\mbi} the index of the macro block containing block
+ \bitvar{\bi}.
+\item
+Assign \locvar{\rfi} the value of the Reference Frame Index column of
+ Table~\ref{tab:cm-refs} corresponding to $\bitvar{MBMODES}[\locvar{\mbi}]$.
+
+\begin{table}[htpb]
+\begin{center}
+\begin{tabular}{ll}\toprule
+Coding Mode & Reference Frame Index \\\midrule
+$0$ (INTER\_NOMV) & $1$ (Previous) \\
+$1$ (INTRA) & $0$ (None) \\
+$2$ (INTER\_MV) & $1$ (Previous) \\
+$3$ (INTER\_MV\_LAST) & $1$ (Previous) \\
+$4$ (INTER\_MV\_LAST2) & $1$ (Previous) \\
+$5$ (INTER\_GOLDEN\_NOMV) & $2$ (Golden) \\
+$6$ (INTER\_GOLDEN\_MV) & $2$ (Golden) \\
+$7$ (INTER\_MV\_FOUR) & $1$ (Previous) \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Reference Frames for Each Coding Mode}
+\label{tab:cm-refs}
+\end{table}
+
+\item
+If block \locvar{\bi} is not along the left edge of the coded frame:
+\begin{enumerate}
+\item
+Assign \locvar{\bj} the coded-order index of block \locvar{\bi}'s left
+ neighbor, i.e., in the same row but one column to the left.
+\item
+If $\bitvar{BCODED}[\bj]$ is not zero:
+\begin{enumerate}
+\item
+Assign \locvar{\mbj} the index of the macro block containing block
+ \locvar{\bj}.
+\item
+If the value of the Reference Frame Index column of Table~\ref{tab:cm-refs}
+ corresonding to $\bitvar{MBMODES}[\locvar{\mbj}]$ equals \locvar{\rfi}:
+\begin{enumerate}
+\item
+Assign $\locvar{P}[0]$ the value $1$.
+\item
+Assign $\locvar{PBI}[0]$ the value \locvar{\bj}.
+\end{enumerate}
+\item
+Otherwise, assign $\locvar{P}[0]$ the value zero.
+\end{enumerate}
+\item
+Otherwise, assign $\locvar{P}[0]$ the value zero.
+\end{enumerate}
+\item
+Otherwise, assign $\locvar{P}[0]$ the value zero.
+
+\item
+If block \locvar{\bi} is not along the left edge nor the bottom edge of the
+ coded frame:
+\begin{enumerate}
+\item
+Assign \locvar{\bj} the coded-order index of block \locvar{\bi}'s lower-left
+ neighbor, i.e., one row down and one column to the left.
+\item
+If $\bitvar{BCODED}[\bj]$ is not zero:
+\begin{enumerate}
+\item
+Assign \locvar{\mbj} the index of the macro block containing block
+ \locvar{\bj}.
+\item
+If the value of the Reference Frame Index column of Table~\ref{tab:cm-refs}
+ corresonding to $\bitvar{MBMODES}[\locvar{\mbj}]$ equals \locvar{\rfi}:
+\begin{enumerate}
+\item
+Assign $\locvar{P}[1]$ the value $1$.
+\item
+Assign $\locvar{PBI}[1]$ the value \locvar{\bj}.
+\end{enumerate}
+\item
+Otherwise, assign $\locvar{P}[1]$ the value zero.
+\end{enumerate}
+\item
+Otherwise, assign $\locvar{P}[1]$ the value zero.
+\end{enumerate}
+\item
+Otherwise, assign $\locvar{P}[1]$ the value zero.
+
+\item
+If block \locvar{\bi} is not along the the bottom edge of the coded frame:
+\begin{enumerate}
+\item
+Assign \locvar{\bj} the coded-order index of block \locvar{\bi}'s lower
+ neighbor, i.e., in the same column but one row down.
+\item
+If $\bitvar{BCODED}[\bj]$ is not zero:
+\begin{enumerate}
+\item
+Assign \locvar{\mbj} the index of the macro block containing block
+ \locvar{\bj}.
+\item
+If the value of the Reference Frame Index column of Table~\ref{tab:cm-refs}
+ corresonding to $\bitvar{MBMODES}[\locvar{\mbj}]$ equals \locvar{\rfi}:
+\begin{enumerate}
+\item
+Assign $\locvar{P}[2]$ the value $1$.
+\item
+Assign $\locvar{PBI}[2]$ the value \locvar{\bj}.
+\end{enumerate}
+\item
+Otherwise, assign $\locvar{P}[2]$ the value zero.
+\end{enumerate}
+\item
+Otherwise, assign $\locvar{P}[2]$ the value zero.
+\end{enumerate}
+\item
+Otherwise, assign $\locvar{P}[2]$ the value zero.
+
+\item
+If block \locvar{\bi} is not along the right edge nor the bottom edge of the
+ coded frame:
+\begin{enumerate}
+\item
+Assign \locvar{\bj} the coded-order index of block \locvar{\bi}'s lower-right
+ neighbor, i.e., one row down and one column to the right.
+\item
+If $\bitvar{BCODED}[\bj]$ is not zero:
+\begin{enumerate}
+\item
+Assign \locvar{\mbj} the index of the macro block containing block
+ \locvar{\bj}.
+\item
+If the value of the Reference Frame Index column of Table~\ref{tab:cm-refs}
+ corresonding to $\bitvar{MBMODES}[\locvar{\mbj}]$ equals \locvar{\rfi}:
+\begin{enumerate}
+\item
+Assign $\locvar{P}[3]$ the value $1$.
+\item
+Assign $\locvar{PBI}[3]$ the value \locvar{\bj}.
+\end{enumerate}
+\item
+Otherwise, assign $\locvar{P}[3]$ the value zero.
+\end{enumerate}
+\item
+Otherwise, assign $\locvar{P}[3]$ the value zero.
+\end{enumerate}
+\item
+Otherwise, assign $\locvar{P}[3]$ the value zero.
+
+\item
+If none of the values $\locvar{P}[0]$, $\locvar{P}[1]$, $\locvar{P}[2]$, nor
+ $\locvar{P}[3]$ are non-zero, then assign \bitvar{DCPRED} the value
+ $\bitvar{LASTDC}[\locvar{\rfi}]$.
+\item
+Otherwise:
+\begin{enumerate}
+\item
+Assign the array \locvar{W} and the variable \locvar{PDIV} the values from the
+ row of Table~\ref{tab:dc-weights} corresonding to the values of each
+ $\locvar{P}[\idx{i}]$.
+
+\begin{table}[htb]
+\begin{center}
+\begin{tabular}{ccccrrrrr}\toprule
+\multicolumn{1}{p{25pt}}{\centering$\locvar{P}[0]$ (L)} &
+\multicolumn{1}{p{25pt}}{\centering$\locvar{P}[1]$ (DL)} &
+\multicolumn{1}{p{25pt}}{\centering$\locvar{P}[2]$ (D)} &
+\multicolumn{1}{p{25pt}}{\centering$\locvar{P}[3]$ (DR)} &
+\multicolumn{1}{p{25pt}}{\centering$\locvar{W}[3]$ (L)} &
+\multicolumn{1}{p{25pt}}{\centering$\locvar{W}[1]$ (DL)} &
+\multicolumn{1}{p{25pt}}{\centering$\locvar{W}[2]$ (D)} &
+\multicolumn{1}{p{25pt}}{\centering$\locvar{W}[3]$ (DR)} &
+\locvar{PDIV} \\\midrule
+$1$ & $0$ & $0$ & $0$ & $1$ & $0$ & $0$ & $0$ & $1$ \\
+$0$ & $1$ & $0$ & $0$ & $0$ & $1$ & $0$ & $0$ & $1$ \\
+$1$ & $1$ & $0$ & $0$ & $1$ & $0$ & $0$ & $0$ & $1$ \\
+$0$ & $0$ & $1$ & $0$ & $0$ & $0$ & $1$ & $0$ & $1$ \\
+$1$ & $0$ & $1$ & $0$ & $1$ & $0$ & $1$ & $0$ & $2$ \\
+$0$ & $1$ & $1$ & $0$ & $0$ & $0$ & $1$ & $0$ & $1$ \\
+$1$ & $1$ & $1$ & $0$ & $29$ & $-26$ & $29$ & $0$ & $32$ \\
+$0$ & $0$ & $0$ & $1$ & $0$ & $0$ & $0$ & $1$ & $1$ \\
+$1$ & $0$ & $0$ & $1$ & $75$ & $0$ & $0$ & $53$ & $128$ \\
+$0$ & $1$ & $0$ & $1$ & $0$ & $1$ & $0$ & $1$ & $2$ \\
+$1$ & $1$ & $0$ & $1$ & $75$ & $0$ & $0$ & $53$ & $128$ \\
+$0$ & $0$ & $1$ & $1$ & $0$ & $0$ & $1$ & $0$ & $1$ \\
+$1$ & $0$ & $1$ & $1$ & $75$ & $0$ & $0$ & $53$ & $128$ \\
+$0$ & $1$ & $1$ & $1$ & $0$ & $3$ & $10$ & $3$ & $16$ \\
+$1$ & $1$ & $1$ & $1$ & $29$ & $-26$ & $29$ & $0$ & $32$ \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Weights and Divisors for Each Set of Available DC Predictors}
+\label{tab:dc-weights}
+\end{table}
+
+\item
+Assign \bitvar{DCPRED} the value zero.
+\item
+If $\locvar{P}[0]$ is non-zero, assign \bitvar{DCPRED} the value
+ $(\bitvar{DCPRED}+\locvar{W}[0]*\bitvar{COEFFS}[\locvar{PBI}[0]][0])$.
+\item
+If $\locvar{P}[1]$ is non-zero, assign \bitvar{DCPRED} the value
+ $(\bitvar{DCPRED}+\locvar{W}[1]*\bitvar{COEFFS}[\locvar{PBI}[1]][0])$.
+\item
+If $\locvar{P}[2]$ is non-zero, assign \bitvar{DCPRED} the value
+ $(\bitvar{DCPRED}+\locvar{W}[2]*\bitvar{COEFFS}[\locvar{PBI}[2]][0])$.
+\item
+If $\locvar{P}[3]$ is non-zero, assign \bitvar{DCPRED} the value
+ $(\bitvar{DCPRED}+\locvar{W}[3]*\bitvar{COEFFS}[\locvar{PBI}[3]][0])$.
+\item
+Assign \bitvar{DCPRED} the value $(\bitvar{DCPRED}//\locvar{PDIV})$.
+\item
+If $\locvar{P}[0]$, $\locvar{P}[1]$, and $\locvar{P}[2]$ are all non-zero:
+\begin{enumerate}
+\item
+If $|\bitvar{DCPRED}-\bitvar{COEFFS}[\locvar{PBI}[2]][0]|$ is greater than
+ $128$, assign \bitvar{DCPRED} the value $\bitvar{COEFFS}[\locvar{PBI}[2]][0]$.
+\item
+Otherwise, if $|\bitvar{DCPRED}-\bitvar{COEFFS}[\locvar{PBI}[0]][0]|$ is
+ greater than $128$, assign \bitvar{DCPRED} the value
+ $\bitvar{COEFFS}[\locvar{PBI}[0]][0]$.
+\item
+Otherwise, if $|\bitvar{DCPRED}-\bitvar{COEFFS}[\locvar{PBI}[1]][0]|$ is
+ greater than $128$, assign \bitvar{DCPRED} the value
+ $\bitvar{COEFFS}[\locvar{PBI}[1]][0]$.
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+
+\subsection{Inverting the DC Prediction Process}
+\label{sub:dc-pred-undo}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{BCODED} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 1 & No & An \bitvar{NBS}-element array of flags
+ indicating which blocks are coded. \\
+\bitvar{MBMODES} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 3 & No & An \bitvar{NMBS}-element array of
+ coding modes for each macro block. \\
+\bitvar{COEFFS} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 16 & Yes & An $\bitvar{NBS}\times 64$ array of
+ quantized DCT coefficient values for each block in zig-zag order. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{COEFFS} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 16 & Yes & An $\bitvar{NBS}\times 64$ array of
+ quantized DCT coefficient values for each block in zig-zag order. The DC
+ value of each block will be updated. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{LASTDC} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 16 & Yes & A 3-element array containing the
+ most recently decoded DC value, one for inter mode and for each reference
+ frame. \\
+\locvar{DCPRED} & Integer & 11 & Yes & The predicted DC value for the current
+ block. \\
+\locvar{DC} & Integer & 17 & Yes & The actual DC value for the current
+ block. \\
+\locvar{\bi} & Integer & 36 & No & The index of the current block in
+ coded order. \\
+\locvar{\mbi} & Integer & 32 & No & The index of the macro block
+ containing block \locvar{\bi}. \\
+\locvar{\rfi} & Integer & 2 & No & The index of the reference frame
+ indicated by the coding mode for macro block \locvar{\mbi}. \\
+\locvar{\pli} & Integer & 2 & No & A color plane index. \\
+\bottomrule\end{tabularx}
+\medskip
+
+This procedure describes the complete process of undoing the DC prediction to
+ recover the original DC values.
+Because it is possible to add a value as large as $580$ to the predicted DC
+ coefficient value at every block, which will then be used to increase the
+ predictor for the next block, the reconstructed DC value could overflow a
+ 16-bit integer.
+This is handled by truncating the result to a 16-bit signed representation,
+ simply throwing away any higher bits in the two's complement representation of
+ the number.
+
+\begin{enumerate}
+\item
+For each consecutive value of \locvar{\pli} from $0$ to $2$:
+\begin{enumerate}
+\item
+Assign $\locvar{LASTDC}[0]$ the value zero.
+\item
+Assign $\locvar{LASTDC}[1]$ the value zero.
+\item
+Assign $\locvar{LASTDC}[2]$ the value zero.
+\item
+For each block of color plane \locvar{\pli} in {\em raster} order, with
+ coded-order index \locvar{\bi}:
+\begin{enumerate}
+\item
+If $\bitvar{BCODED}[\locvar{\bi}]$ is non-zero:
+\begin{enumerate}
+\item
+Compute the value \locvar{DCPRED} using the procedure outlined in
+ Section~\ref{sub:dc-pred}.
+\item
+Assign \locvar{DC} the value
+ $(\bitvar{COEFFS}[\locvar{\bi}][0]+\locvar{DCPRED})$.
+\item
+Truncate \locvar{DC} to a 16-bit representation by dropping any higher-order
+ bits.
+\item
+Assign $\bitvar{COEFFS}[\locvar{\bi}][0]$ the value \locvar{DC}.
+\item
+Assign \locvar{\mbi} the index of the macro block containing block
+ \locvar{\bi}.
+\item
+Assign \locvar{\rfi} the value of the Reference Frame Index column of
+ Table~\ref{tab:cm-refs} corresponding to $\bitvar{MBMODES}[\locvar{\mbi}]$.
+\item
+Assign $\locvar{LASTDC}[\rfi]$ the value $\locvar{DC}$.
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+
+\section{Reconstruction}
+
+At this stage, the complete contents of the data packet have been decoded.
+All that remains is to reconstruct the contents of the new frame.
+This is applied on a block by block basis, and as each block is independent,
+ the order they are processed in does not matter.
+
+\subsection{Predictors}
+\label{sec:predictors}
+
+For each block, a predictor is formed based on its coding mode and motion
+ vector.
+There are three basic types of predictors: the intra predictor, the whole-pixel
+ predictor, and the half-pixel predictor.
+The former is used for all blocks coded in INTRA mode, while all other blocks
+ use one of the latter two.
+The whole-pixel predictor is used if the fractional part of both motion vector
+ components is zero, otherwise the half-pixel predictor is used.
+
+\subsubsection{The Intra Predictor}
+\label{sub:predintra}
+
+\paragraph{Input parameters:} None.
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{PRED} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & An $8\times 8$ array of predictor
+ values to use for INTRA coded blocks. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{\idx{bx}} & Integer & 3 & No & The horizontal pixel index in the
+ block. \\
+\locvar{\idx{by}} & Integer & 3 & No & The vertical pixel index in the
+ block. \\
+\bottomrule\end{tabularx}
+\medskip
+
+The intra predictor is nothing more than the constant value $128$.
+This is applied for the sole purpose of centering the range of possible DC
+ values for INTRA blocks around zero.
+
+\begin{enumerate}
+\item
+For each value of \locvar{\idx{by}} from $0$ to $7$, inclusive:
+\begin{enumerate}
+\item
+For each value of \locvar{\idx{bx}} from $0$ to $7$, inclusive:
+\begin{enumerate}
+\item
+Assign $\bitvar{PRED}[\locvar{\idx{by}}][\locvar{\idx{bx}}]$ the value $128$.
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+
+\subsubsection{The Whole-Pixel Predictor}
+\label{sub:predfullpel}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{RPW} & Integer & 20 & No & The width of the current plane of the
+ reference frame in pixels. \\
+\bitvar{RPH} & Integer & 20 & No & The height of the current plane of the
+ reference frame in pixels. \\
+\bitvar{REFP} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPH}\times\bitvar{RPW}$
+ array containing the contents of the current plane of the reference frame. \\
+\bitvar{BX} & Integer & 20 & No & The horizontal pixel index of the
+ lower-left corner of the current block. \\
+\bitvar{BY} & Integer & 20 & No & The vertical pixel index of the
+ lower-left corner of the current block. \\
+\bitvar{MVX} & Integer & 5 & No & The horizontal component of the block
+ motion vector.
+This is always a whole-pixel value. \\
+\bitvar{MVY} & Integer & 5 & No & The vertical component of the block
+ motion vector.
+This is always a whole-pixel value. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{PRED} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & An $8\times 8$ array of predictor
+ values to use for INTER coded blocks. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{\idx{bx}} & Integer & 3 & Yes & The horizontal pixel index in the
+ block. \\
+\locvar{\idx{by}} & Integer & 3 & Yes & The vertical pixel index in the
+ block. \\
+\locvar{\idx{rx}} & Integer & 20 & No & The horizontal pixel index in the
+ reference frame. \\
+\locvar{\idx{ry}} & Integer & 20 & No & The vertical pixel index in the
+ reference frame. \\
+\bottomrule\end{tabularx}
+\medskip
+
+The whole pixel predictor simply copies verbatim the contents of the reference
+ frame pointed to by the block's motion vector.
+If the vector points outside the reference frame, then the closest value on the
+ edge of the reference frame is used instead.
+In practice, this is usually implemented by expanding the size of the reference
+ frame by $8$ or $16$ pixels on each side---depending on whether or not the
+ corresponding axis is subsampled in the current plane---and copying the border
+ pixels into this region.
+
+\begin{enumerate}
+\item
+For each value of \locvar{\idx{by}} from $0$ to $7$, inclusive:
+\begin{enumerate}
+\item
+Assign \locvar{\idx{ry}} the value
+ $(\bitvar{BY}+\bitvar{MVY}+\locvar{\idx{by}})$.
+\item
+If \locvar{\idx{ry}} is greater than $(\bitvar{RPH}-1)$, assign
+ \locvar{\idx{ry}} the value $(\bitvar{RPH}-1)$.
+\item
+If \locvar{\idx{ry}} is less than zero, assign \locvar{\idx{ry}} the value
+ zero.
+\item
+For each value of \locvar{\idx{bx}} from $0$ to $7$, inclusive:
+\begin{enumerate}
+\item
+Assign \locvar{\idx{rx}} the value
+ $(\bitvar{BX}+\bitvar{MVX}+\locvar{\idx{bx}})$.
+\item
+If \locvar{\idx{rx}} is greater than $(\bitvar{RPW}-1)$, assign
+ \locvar{\idx{rx}} the value $(\bitvar{RPW}-1)$.
+\item
+If \locvar{\idx{rx}} is less than zero, assign \locvar{\idx{rx}} the value
+ zero.
+\item
+Assign $\bitvar{PRED}[\locvar{\idx{by}}][\locvar{\idx{bx}}]$ the value
+ $\bitvar{REFP}[\locvar{\idx{ry}}][\locvar{\idx{rx}}]$.
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+
+\subsubsection{The Half-Pixel Predictor}
+\label{sub:predhalfpel}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{RPW} & Integer & 20 & No & The width of the current plane of the
+ reference frame in pixels. \\
+\bitvar{RPH} & Integer & 20 & No & The height of the current plane of the
+ reference frame in pixels. \\
+\bitvar{REFP} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPH}\times\bitvar{RPW}$
+ array containing the contents of the current plane of the reference frame. \\
+\bitvar{BX} & Integer & 20 & No & The horizontal pixel index of the
+ lower-left corner of the current block. \\
+\bitvar{BY} & Integer & 20 & No & The vertical pixel index of the
+ lower-left corner of the current block. \\
+\bitvar{MVX} & Integer & 5 & No & The horizontal component of the first
+ whole-pixel motion vector. \\
+\bitvar{MVY} & Integer & 5 & No & The vertical component of the first
+ whole-pixel motion vector. \\
+\bitvar{MVX2} & Integer & 5 & No & The horizontal component of the second
+ whole-pixel motion vector. \\
+\bitvar{MVY2} & Integer & 5 & No & The vertical component of the second
+ whole-pixel motion vector. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{PRED} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & An $8\times 8$ array of predictor
+ values to use for INTER coded blocks. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{\idx{bx}} & Integer & 3 & Yes & The horizontal pixel index in the
+ block. \\
+\locvar{\idx{by}} & Integer & 3 & Yes & The vertical pixel index in the
+ block. \\
+\locvar{\idx{rx1}} & Integer & 20 & No & The first horizontal pixel index in
+ the reference frame. \\
+\locvar{\idx{ry1}} & Integer & 20 & No & The first vertical pixel index in the
+ reference frame. \\
+\locvar{\idx{rx2}} & Integer & 20 & No & The second horizontal pixel index in
+ the reference frame. \\
+\locvar{\idx{ry2}} & Integer & 20 & No & The second vertical pixel index in
+ the reference frame. \\
+\bottomrule\end{tabularx}
+\medskip
+
+If one or both of the components of the block motion vector is not a
+ whole-pixel value, then the half-pixel predictor is used.
+The half-pixel predictor converts the fractional motion vector into two
+ whole-pixel motion vectors.
+The first is formed by truncating the values of each component towards zero,
+ and the second is formed by truncating them away from zero.
+The contributions from the reference frame at the locations pointed to by each
+ vector are averaged, truncating towards negative infinity.
+
+Only two samples from the reference frame contribute to each predictor value,
+ even if both components of the motion vector have non-zero fractional
+ components.
+Motion vector components with quarter-pixel accuracy in the chroma planes are
+ treated exactly the same as those with half-pixel accuracy.
+Any non-zero fractional part gets rounded one way in the first vector, and the
+ other way in the second.
+
+\begin{enumerate}
+\item
+For each value of \locvar{\idx{by}} from $0$ to $7$, inclusive:
+\begin{enumerate}
+\item
+Assign \locvar{\idx{ry1}} the value
+ $(\bitvar{BY}+\bitvar{MVY1}+\locvar{\idx{by}})$.
+\item
+If \locvar{\idx{ry1}} is greater than $(\bitvar{RPH}-1)$, assign
+ \locvar{\idx{ry1}} the value $(\bitvar{RPH}-1)$.
+\item
+If \locvar{\idx{ry1}} is less than zero, assign \locvar{\idx{ry1}} the value
+ zero.
+\item
+Assign \locvar{\idx{ry2}} the value
+ $(\bitvar{BY}+\bitvar{MVY2}+\locvar{\idx{by}})$.
+\item
+If \locvar{\idx{ry2}} is greater than $(\bitvar{RPH}-1)$, assign
+ \locvar{\idx{ry2}} the value $(\bitvar{RPH}-1)$.
+\item
+If \locvar{\idx{ry2}} is less than zero, assign \locvar{\idx{ry2}} the value
+ zero.
+\item
+For each value of \locvar{\idx{bx}} from $0$ to $7$, inclusive:
+\begin{enumerate}
+\item
+Assign \locvar{\idx{rx1}} the value
+ $(\bitvar{BX}+\bitvar{MVX1}+\locvar{\idx{bx}})$.
+\item
+If \locvar{\idx{rx1}} is greater than $(\bitvar{RPW}-1)$, assign
+ \locvar{\idx{rx1}} the value $(\bitvar{RPW}-1)$.
+\item
+If \locvar{\idx{rx1}} is less than zero, assign \locvar{\idx{rx1}} the value
+ zero.
+\item
+Assign \locvar{\idx{rx2}} the value
+ $(\bitvar{BX}+\bitvar{MVX2}+\locvar{\idx{bx}})$.
+\item
+If \locvar{\idx{rx2}} is greater than $(\bitvar{RPW}-1)$, assign
+ \locvar{\idx{rx2}} the value $(\bitvar{RPW}-1)$.
+\item
+If \locvar{\idx{rx2}} is less than zero, assign \locvar{\idx{rx2}} the value
+ zero.
+\item
+Assign $\bitvar{PRED}[\locvar{\idx{by}}][\locvar{\idx{bx}}]$ the value
+\begin{equation*}
+ (\bitvar{REFP}[\locvar{\idx{ry1}}][\locvar{\idx{rx1}}]+
+ \bitvar{REFP}[\locvar{\idx{ry2}}][\locvar{\idx{rx2}}])>>1.
+\end{equation*}
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+
+\subsection{Dequantization}
+\label{sub:dequant}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{COEFFS} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 16 & Yes & An $\bitvar{NBS}\times 64$ array of
+ quantized DCT coefficient values for each block in zig-zag order. \\
+\bitvar{ACSCALE} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 16 & No & A 64-element array of scale values for
+ AC coefficients for each \qi\ value. \\
+\bitvar{DCSCALE} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 16 & No & A 64-element array of scale values for
+ the DC coefficient for each \qi\ value. \\
+\bitvar{BMS} & \multicolumn{1}{p{50pt}}{2D Integer array} &
+ 8 & No & A $\bitvar{NBMS}\times 64$ array
+ containing the base matrices. \\
+\bitvar{NQRS} & \multicolumn{1}{p{50pt}}{2D Integer array} &
+ 6 & No & A $2\times 3$ array containing the
+ number of quant ranges for a given \qti\ and \pli, respectively.
+This is at most $63$. \\
+\bitvar{QRSIZES} & \multicolumn{1}{p{50pt}}{3D Integer array} &
+ 6 & No & A $2\times 3\times 63$ array of the
+ sizes of each quant range for a given \qti\ and \pli, respectively.
+Only the first $\bitvar{NQRS}[\qti][\pli]$ values are used. \\
+\bitvar{QRBMIS} & \multicolumn{1}{p{50pt}}{3D Integer array} &
+ 9 & No & A $2\times 3\times 64$ array of the
+ \bmi's used for each quant range for a given \qti\ and \pli, respectively.
+Only the first $(\bitvar{NQRS}[\qti][\pli]+1)$ values are used. \\
+\bitvar{\qti} & Integer & 1 & No & A quantization type index.
+See Table~\ref{tab:quant-types}.\\
+\bitvar{\pli} & Integer & 2 & No & A color plane index.
+See Table~\ref{tab:color-planes}.\\
+\bitvar{\idx{qi0}} & Integer & 6 & No & The quantization index of the DC
+ coefficient. \\
+\bitvar{\qi} & Integer & 6 & No & The quantization index of the AC
+ coefficients. \\
+\bitvar{\bi} & Integer & 36 & No & The index of the current block in
+ coded order. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{DQC} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 14 & Yes & A $64$-element array of dequantized
+ DCT coefficients in natural order (cf. Section~\ref{sec:dct-coeffs}). \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{QMAT} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 16 & No & A 64-element array of quantization
+ values for each DCT coefficient in natural order. \\
+\locvar{\ci} & Integer & 6 & No & The DCT coefficient index in natural
+ order. \\
+\locvar{\zzi} & Integer & 6 & No & The DCT coefficient index in zig-zag
+ order. \\
+\locvar{C} & Integer & 29 & Yes & A single dequantized coefficient. \\
+\bottomrule\end{tabularx}
+\medskip
+
+This procedure takes the quantized DCT coefficient values in zig-zag order for
+ a single block---after DC prediction has been undone---and returns the
+ dequantized values in natural order.
+If large coefficient values are decoded for coarsely quantized coefficients,
+ the resulting dequantized value can be significantly larger than 16 bits.
+Such a coefficient is truncated to a signed 16-bit representation by discarding
+ the higher-order bits of its twos-complement representation.
+
+Although this procedure recomputes the quantization matrices from the
+ parameters in the setup header for each block, there are at most six different
+ ones used for each color plane.
+An efficient implementation could compute them once in advance.
+
+\begin{enumerate}
+\item
+Using \bitvar{ACSCALE}, \bitvar{DCSCALE}, \bitvar{BMS}, \bitvar{NQRS},
+ \bitvar{QRSIZES}, \bitvar{QRBMIS}, \bitvar{\qti}, \bitvar{\pli}, and
+ \bitvar{\idx{qi0}}, use the procedure given in Section~\ref{sub:quant-mat} to
+ compute the DC quantization matrix \locvar{QMAT}.
+\item
+Assign \locvar{C} the value
+ $\bitvar{COEFFS}[\bitvar{\bi}][0]*\locvar{QMAT}[0]$.
+\item
+Truncate \locvar{C} to a 16-bit representation by dropping any higher-order
+ bits.
+\item
+Assign $\bitvar{DQC}[0]$ the value \locvar{C}.
+\item
+Using \bitvar{ACSCALE}, \bitvar{DCSCALE}, \bitvar{BMS}, \bitvar{NQRS},
+ \bitvar{QRSIZES}, \bitvar{QRBMIS}, \bitvar{\qti}, \bitvar{\pli}, and
+ \bitvar{\qi}, use the procedure given in Section~\ref{sub:quant-mat} to
+ compute the AC quantization matrix \locvar{QMAT}.
+\item
+For each value of \locvar{\ci} from 1 to 63, inclusive:
+\begin{enumerate}
+\item
+Assign \locvar{\zzi} the index in zig-zag order corresponding to \locvar{\ci}.
+E.g., the value at row $(\locvar{\ci}//8)$ and column $(\locvar{\ci}\%8)$ in
+ Figure~\ref{tab:zig-zag}
+\item
+Assign \locvar{C} the value
+ $\bitvar{COEFFS}[\bitvar{\bi}][\locvar{\zzi}]*\locvar{QMAT}[\locvar{\ci}]$.
+\item
+Truncate \locvar{C} to a 16-bit representation by dropping any higher-order
+ bits.
+\item
+Assign $\bitvar{DQC}[\locvar{\ci}]$ the value \locvar{C}.
+\end{enumerate}
+\end{enumerate}
+
+\subsection{The Inverse DCT}
+
+The 2D inverse DCT is separated into two applications of the 1D inverse DCT.
+The transform is first applied to each row, and then applied to each column of
+ the result.
+
+Each application of the 1D inverse DCT scales the values by a factor of two
+ relative to the orthonormal version of the transform, for a total scale factor
+ of four for the 2D transform.
+It is assumed that a similar scale factor is applied during the forward DCT
+ used in the encoder, so that a division by 16 is required after the transform
+ has been applied in both directions.
+The inclusion of this scale factor allows the integerized transform to operate
+ with increased precision.
+All divisions throughout the transform are implemented with right shifts.
+Only the final division by $16$ is rounded, with ties rounded towards positive
+ infinity.
+
+All intermediate values are truncated to a 32-bit signed representation by
+ discarding any higher-order bits in their two's complement representation.
+The final output of each 1D transform is truncated to a 16-bit signed value in
+ the same manner.
+In practice, if the high word of a $16\times 16$ bit multiplication can be
+ obtained directly, 16 bits is sufficient for every calculation except scaling
+ by $C4$.
+Thus we truncate to 16 bits before that multiplication to allow an
+ implementation entirely in 16-bit registers.
+Implementations using larger registers must sign-extend the 16-bit value to
+ maintain compatibility.
+
+Note that if 16-bit register are used, overflow in the additions and
+ subtractions should be handled using \textit{unsaturated} arithmetic.
+That is, the high-order bits should be discarded and the low-order bits
+ retained, instead of clamping the result to the maximum or minimum value.
+This allows the maximum flexibility in re-ordering these instructions without
+ deviating from this specification.
+
+The 1D transform can only overflow if input coefficients larger than $\pm 6201$
+ are present.
+However, the result of applying the 2D forward transform on pixel values in the
+ range $-255\ldots 255$ can be as large as $\pm 8157$ due to the scale factor
+ of four that is applied, and quantization errors could make this even larger.
+Therefore, the coefficients cannot simply be clamped into a valid range before
+ the transform.
+
+\subsubsection{The 1D Inverse DCT}
+\label{sub:1d-idct}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{Y} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 16 & Yes & An 8-element array of DCT
+ coefficients. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{X} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 16 & Yes & An 8-element array of output values. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{T} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 32 & Yes & An 8-element array containing the
+ current value of each signal line. \\
+\locvar{R} & Integer & 32 & Yes & A temporary value. \\
+\bottomrule\end{tabularx}
+\medskip
+
+A compliant decoder MUST use the exact implementation of the inverse DCT
+ defined in this specification.
+Some operations may be re-ordered, but the result must be precisely equivalent.
+This is a design decision that limits some avenues of decoder optimization, but
+ prevents any drift in the prediction loop.
+Theora uses a 16-bit integerized approximation of of the 8-point 1D inverse DCT
+ based on the Chen factorization \cite{CSF77}.
+It requires 16 multiplications and 26 additions and subtractions.
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics[width=\textwidth]{idct}
+\end{center}
+\caption{Signal Flow Graph for the 1D Inverse DCT}
+\label{fig:idct}
+\end{figure}
+
+A signal flow graph of the transformation is presented in
+ Figure~\ref{fig:idct}.
+This graph provides a good visualization of which parts of the transform are
+ parallelizable.
+Time increases from left to right.
+
+Each signal line is involved in an operation where the line is marked with a
+ dot $\cdot$ or a circled plus sign $\oplus$.
+The constants $\locvar{C}i$ and $\locvar{S}j$ are the 16-bit integer
+ approximations of $\cos(\frac{i\pi}{16})$ and $\sin(\frac{j\pi}{16})$ listed
+ in Table~\ref{tab:dct-consts}.
+When they appear next to a signal line, the value on that line is scaled by the
+ given constant.
+A circled minus sign $\ominus$ next to a signal line indicates that the value
+ on that line is negated.
+
+Operations on a single signal path through the graph cannot be reordered, but
+ operations on different paths may be, or may be executed in parallel.
+Different graphs may be obtainable using the associative, commutative, and
+ distributive properties of unsaturated arithmetic.
+The column of numbers on the left represents an initial permutation of the
+ input DCT coefficients.
+The column on the right represents the unpermuted output.
+One can be obtained by bit-reversing the 3-bit binary representation of the
+ other.
+
+\begin{table}[htbp]
+\begin{center}
+\begin{tabular}{llr}\toprule
+$\locvar{C}i$ & $\locvar{S}j$ & Value \\\midrule
+$\locvar{C1}$ & $\locvar{S7}$ & $64277$ \\
+$\locvar{C2}$ & $\locvar{S6}$ & $60547$ \\
+$\locvar{C3}$ & $\locvar{S5}$ & $54491$ \\
+$\locvar{C4}$ & $\locvar{S4}$ & $46341$ \\
+$\locvar{C5}$ & $\locvar{S3}$ & $36410$ \\
+$\locvar{C6}$ & $\locvar{S2}$ & $25080$ \\
+$\locvar{C7}$ & $\locvar{S1}$ & $12785$ \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{16-bit Approximations of Sines and Cosines}
+\label{tab:dct-consts}
+\end{table}
+
+\begin{enumerate}
+\item
+Assign $\locvar{T}[0]$ the value $\bitvar{Y}[0]+\bitvar{Y}[4]$.
+\item
+Truncate $\locvar{T}[0]$ to a 16-bit signed representation by dropping any
+ higher-order bits.
+\item
+Assign $\locvar{T}[0]$ the value
+ $\locvar{C4}*\locvar{T}[0]>>16$.
+\item
+Assign $\locvar{T}[1]$ the value $\bitvar{Y}[0]-\bitvar{Y}[4]$.
+\item
+Truncate $\locvar{T}[1]$ to a 16-bit signed representation by dropping any
+ higher-order bits.
+\item
+Assign $\locvar{T}[1]$ the value $\locvar{C4}*\locvar{T}[1]>>16$.
+\item
+Assign $\locvar{T}[2]$ the value $(\locvar{C6}*\bitvar{Y}[2]>>16)-
+ (\locvar{S6}*\bitvar{Y}[6]>>16)$.
+\item
+Assign $\locvar{T}[3]$ the value $(\locvar{S6}*\bitvar{Y}[2]>>16)+
+ (\locvar{C6}*\bitvar{Y}[6]>>16)$.
+\item
+Assign $\locvar{T}[4]$ the value $(\locvar{C7}*\bitvar{Y}[1]>>16)-
+ (\locvar{S7}*\bitvar{Y}[7]>>16)$.
+\item
+Assign $\locvar{T}[5]$ the value $(\locvar{C3}*\bitvar{Y}[5]>>16)-
+ (\locvar{S3}*\bitvar{Y}[3]>>16)$.
+\item
+Assign $\locvar{T}[6]$ the value $(\locvar{S3}*\bitvar{Y}[5]>>16)+
+ (\locvar{C3}*\bitvar{Y}[3]>>16)$.
+\item
+Assign $\locvar{T}[7]$ the value $(\locvar{S7}*\bitvar{Y}[1]>>16)+
+ (\locvar{C7}*\bitvar{Y}[7]>>16)$.
+\item
+Assign \locvar{R} the value $\locvar{T}[4]+\locvar{T}[5]$.
+\item
+Assign $\locvar{T}[5]$ the value $\locvar{T}[4]-\locvar{T}[5]$.
+\item
+Truncate $\locvar{T}[5]$ to a 16-bit signed representation by dropping any
+ higher-order bits.
+\item
+Assign $\locvar{T}[5]$ the value $\locvar{C4}*\locvar{T}[5]>>16$.
+\item
+Assign $\locvar{T}[4]$ the value $\locvar{R}$.
+\item
+Assign \locvar{R} the value $\locvar{T}[7]+\locvar{T}[6]$.
+\item
+Assign $\locvar{T}[6]$ the value $\locvar{T}[7]-\locvar{T}[6]$.
+\item
+Truncate $\locvar{T}[6]$ to a 16-bit signed representation by dropping any
+ higher-order bits.
+\item
+Assign $\locvar{T}[6]$ the value $\locvar{C4}*\locvar{T}[6]>>16$.
+\item
+Assign $\locvar{T}[7]$ the value $\locvar{R}$.
+\item
+Assign \locvar{R} the value $\locvar{T}[0]+\locvar{T}[3]$.
+\item
+Assign $\locvar{T}[3]$ the value $\locvar{T}[0]-\locvar{T}[3]$.
+\item
+Assign $\locvar{T}[0]$ the value \locvar{R}.
+\item
+Assign \locvar{R} the value $\locvar{T}[1]+\locvar{T}[2]$
+\item
+Assign $\locvar{T}[2]$ the value $\locvar{T}[1]-\locvar{T}[2]$
+\item
+Assign $\locvar{T}[1]$ the value \locvar{R}.
+\item
+Assign \locvar{R} the value $\locvar{T}[6]+\locvar{T}[5]$.
+\item
+Assign $\locvar{T}[5]$ the value $\locvar{T}[6]-\locvar{T}[5]$.
+\item
+Assign $\locvar{T}[6]$ the value \locvar{R}.
+\item
+Assign \locvar{R} the value $\locvar{T}[0]+\locvar{T}[7]$.
+\item
+Truncate \locvar{R} to a 16-bit signed representation by dropping any
+ higher-order bits.
+\item
+Assign $\bitvar{X}[0]$ the value \locvar{R}.
+\item
+Assign \locvar{R} the value $\locvar{T}[1]+\locvar{T}[6]$.
+\item
+Truncate \locvar{R} to a 16-bit signed representation by dropping any
+ higher-order bits.
+\item
+Assign $\bitvar{X}[1]$ the value \locvar{R}.
+\item
+Assign \locvar{R} the value $\locvar{T}[2]+\locvar{T}[5]$.
+\item
+Truncate \locvar{R} to a 16-bit signed representation by dropping any
+ higher-order bits.
+\item
+Assign $\bitvar{X}[2]$ the value \locvar{R}.
+\item
+Assign \locvar{R} the value $\locvar{T}[3]+\locvar{T}[4]$.
+\item
+Truncate \locvar{R} to a 16-bit signed representation by dropping any
+ higher-order bits.
+\item
+Assign $\bitvar{X}[3]$ the value \locvar{R}.
+\item
+Assign \locvar{R} the value $\locvar{T}[3]-\locvar{T}[4]$.
+\item
+Truncate \locvar{R} to a 16-bit signed representation by dropping any
+ higher-order bits.
+\item
+Assign $\bitvar{X}[4]$ the value \locvar{R}.
+\item
+Assign \locvar{R} the value $\locvar{T}[2]-\locvar{T}[5]$.
+\item
+Truncate \locvar{R} to a 16-bit signed representation by dropping any
+ higher-order bits.
+\item
+Assign $\bitvar{X}[5]$ the value \locvar{R}.
+\item
+Assign \locvar{R} the value $\locvar{T}[1]-\locvar{T}[6]$.
+\item
+Truncate \locvar{R} to a 16-bit signed representation by dropping any
+ higher-order bits.
+\item
+Assign $\bitvar{X}[6]$ the value \locvar{R}.
+\item
+Assign \locvar{R} the value $\locvar{T}[0]-\locvar{T}[7]$.
+\item
+Truncate \locvar{R} to a 16-bit signed representation by dropping any
+ higher-order bits.
+\item
+Assign $\bitvar{X}[7]$ the value \locvar{R}.
+\end{enumerate}
+
+\subsubsection{The 2D Inverse DCT}
+\label{sub:2d-idct}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{DQC} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 14 & Yes & A $64$-element array of dequantized
+ DCT coefficients in natural order (cf. Section~\ref{sec:dct-coeffs}). \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{RES} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 16 & Yes & An $8\times 8$ array containing the
+ decoded residual for the current block. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{\ci} & Integer & 3 & No & The column index. \\
+\locvar{\ri} & Integer & 3 & No & The row index. \\
+\locvar{Y} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 16 & Yes & An 8-element array of 1D iDCT input
+ values. \\
+\locvar{X} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 16 & Yes & An 8-element array of 1D iDCT output
+ values. \\
+\bottomrule\end{tabularx}
+\medskip
+
+This procedure applies the 1D inverse DCT transform 16 times to a block of
+ dequantized coefficients: once for each of the 8 rows, and once for each of
+ the 8 columns of the result.
+Note that the coordinate system used for the columns is the same right-handed
+ coordinate system used by the rest of Theora.
+Thus, the column is indexed from bottom to top, not top to bottom.
+The final values are divided by sixteen, rounding with ties rounded towards
+ postive infinity.
+
+\begin{enumerate}
+\item
+For each value of \locvar{\ri} from 0 to 7:
+\begin{enumerate}
+\item
+For each value of \locvar{\ci} from 0 to 7:
+\begin{enumerate}
+\item
+Assign $\locvar{Y}[\locvar{\ci}]$ the value
+ $\bitvar{DQC}[\locvar{\ri}*8+\locvar{\ci}]$.
+\end{enumerate}
+\item
+Compute \locvar{X}, the 1D inverse DCT of \locvar{Y} using the procedure
+ described in Section~\ref{sub:1d-idct}.
+\item
+For each value of $\locvar{\ci}$ from 0 to 7:
+\begin{enumerate}
+\item
+Assign $\bitvar{RES}[\locvar{\ri}][\locvar{\ci}]$ the value
+ $\locvar{X}[\locvar{\ci}]$.
+\end{enumerate}
+\end{enumerate}
+\item
+For each value of \locvar{\ci} from 0 to 7:
+\begin{enumerate}
+\item
+For each value of \locvar{\ri} from 0 to 7:
+\begin{enumerate}
+\item
+Assign $\locvar{Y}[\locvar{\ri}]$ the value
+ $\bitvar{RES}[\locvar{\ri}][\locvar{\ci}]$.
+\end{enumerate}
+\item
+Compute \locvar{X}, the 1D inverse DCT of \locvar{Y} using the procedure
+ described in Section~\ref{sub:1d-idct}.
+\item
+For each value of \locvar{\ri} from 0 to 7:
+\begin{enumerate}
+\item
+Assign $\bitvar{RES}[\locvar{\ri}][\locvar{\ci}]$ the value
+ $(\locvar{X}[\locvar{\ri}]+8)>>4$.
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+
+\subsubsection{The 1D Forward DCT (Non-Normative)}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{X} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 14 & Yes & An 8-element array of input values. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{Y} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 16 & Yes & An 8-element array of DCT
+ coefficients. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{T} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 16 & Yes & An 8-element array containing the
+ current value of each signal line. \\
+\locvar{R} & Integer & 16 & Yes & A temporary value. \\
+\bottomrule\end{tabularx}
+\medskip
+
+The forward transform used in the encoder is not mandated by this standard as
+ the inverse one is.
+Precise equivalence in the inverse transform alone is all that is required to
+ guarantee that there is no mismatch in the prediction loop between encoder and
+ any compliant decoder implementation.
+However, a forward transform is provided here as a convenience for implementing
+ an encoder.
+This is the version of the transform used by Xiph.org's Theora encoder, which
+ is the same as that used by VP3.
+Like the inverse DCT, it is first applied to each row, and then applied to each
+ column of the result.
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics[width=\textwidth]{fdct}
+\end{center}
+\caption{Signal Flow Graph for the 1D Forward DCT}
+\label{fig:fdct}
+\end{figure}
+
+The signal flow graph for the forward transform is given in
+ Figure~\ref{fig:fdct}.
+It is largely the reverse of the flow graph given for the inverse DCT.
+It is important to note that the signs on the constants in the rotations have
+ changed, and the \locvar{C4} scale factors on one of the lower butterflies now
+ appear on the opposite side.
+The column of numbers on the left represents the unpermuted input, and the
+ column on the right the permuted output DCT coefficients.
+
+A proper division by $2^{16}$ is done after the multiplications instead of a
+ shift in the forward transform.
+This can be implemented quickly by adding an offset of $\hex{FFFF}$ if the
+ number is negative, and then shifting as before.
+This slightly increases the computational complexity of the transform.
+Unlike the inverse DCT, 16-bit registers and a $16\times16\rightarrow32$ bit
+ multiply are sufficient to avoid any overflow, so long as the input is in the
+ range $-6270\ldots 6270$, which is larger than required.
+
+\begin{enumerate}
+\item
+Assign $\locvar{T}[0]$ the value $\bitvar{X}[0]+\bitvar{X}[7]$.
+\item
+Assign $\locvar{T}[1]$ the value $\bitvar{X}[1]+\bitvar{X}[6]$.
+\item
+Assign $\locvar{T}[2]$ the value $\bitvar{X}[2]+\bitvar{X}[5]$.
+\item
+Assign $\locvar{T}[3]$ the value $\bitvar{X}[3]+\bitvar{X}[4]$.
+\item
+Assign $\locvar{T}[4]$ the value $\bitvar{X}[3]-\bitvar{X}[4]$.
+\item
+Assign $\locvar{T}[5]$ the value $\bitvar{X}[2]-\bitvar{X}[5]$.
+\item
+Assign $\locvar{T}[6]$ the value $\bitvar{X}[1]-\bitvar{X}[6]$.
+\item
+Assign $\locvar{T}[7]$ the value $\bitvar{X}[0]-\bitvar{X}[7]$.
+\item
+Assign \locvar{R} the value $\locvar{T}[0]+\locvar{T}[3]$.
+\item
+Assign $\locvar{T}[3]$ the value $\locvar{T}[0]-\locvar{T}[3]$.
+\item
+Assign $\locvar{T}[0]$ the value \locvar{R}.
+\item
+Assign \locvar{R} the value $\locvar{T}[1]+\locvar{T}[2]$.
+\item
+Assign $\locvar{T}[2]$ the value $\locvar{T}[1]-\locvar{T}[2]$.
+\item
+Assign $\locvar{T}[1]$ the value \locvar{R}.
+\item
+Assign \locvar{R} the value $\locvar{T}[6]-\locvar{T}[5]$.
+\item
+Assign $\locvar{T}[6]$ the value
+ $(\locvar{C4}*(\locvar{T}[6]+\locvar{T}[5]))//16$.
+\item
+Assign $\locvar{T}[5]$ the value $(\locvar{C4}*\locvar{R})//16$.
+\item
+Assign \locvar{R} the value $\locvar{T}[4]+\locvar{T}[5]$.
+\item
+Assign $\locvar{T}[5]$ the value $\locvar{T}[4]-\locvar{T}[5]$.
+\item
+Assign $\locvar{T}[4]$ the value \locvar{R}.
+\item
+Assign \locvar{R} the value $\locvar{T}[7]+\locvar{T}[6]$.
+\item
+Assign $\locvar{T}[6]$ the value $\locvar{T}[7]-\locvar{T}[6]$.
+\item
+Assign $\locvar{T}[7]$ the value \locvar{R}.
+\item
+Assign $\bitvar{Y}[0]$ the value
+ $(\locvar{C4}*(\locvar{T}[0]+\locvar{T}[1]))//16$.
+\item
+Assign $\bitvar{Y}[4]$ the value
+ $(\locvar{C4}*(\locvar{T}[0]-\locvar{T}[1]))//16$.
+\item
+Assign $\bitvar{Y}[2]$ the value
+ $((\locvar{S6}*\locvar{T}[3])//16)+
+ ((\locvar{C6}*\locvar{T}[2])//16)$.
+\item
+Assign $\bitvar{Y}[6]$ the value
+ $((\locvar{C6}*\locvar{T}[3])//16)-
+ ((\locvar{S6}*\locvar{T}[2])//16)$.
+\item
+Assign $\bitvar{Y}[1]$ the value
+ $((\locvar{S7}*\locvar{T}[7])//16)+
+ ((\locvar{C7}*\locvar{T}[4])//16)$.
+\item
+Assign $\bitvar{Y}[5]$ the value
+ $((\locvar{S3}*\locvar{T}[6])//16)+
+ ((\locvar{C3}*\locvar{T}[5])//16)$.
+\item
+Assign $\bitvar{Y}[3]$ the value
+ $((\locvar{C3}*\locvar{T}[6])//16)-
+ ((\locvar{S3}*\locvar{T}[5])//16)$.
+\item
+Assign $\bitvar{Y}[7]$ the value
+ $((\locvar{C7}*\locvar{T}[7])//16)-
+ ((\locvar{S7}*\locvar{T}[4])//16)$.
+\end{enumerate}
+
+\subsection{The Complete Reconstruction Algorithm}
+\label{sub:recon}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{ACSCALE} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 16 & No & A 64-element array of scale values
+ for AC coefficients for each \qi\ value. \\
+\bitvar{DCSCALE} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 16 & No & A 64-element array of scale values
+ for the DC coefficient for each \qi\ value. \\
+\bitvar{BMS} & \multicolumn{1}{p{50pt}}{2D Integer array} &
+ 8 & No & A $\bitvar{NBMS}\times 64$ array
+ containing the base matrices. \\
+\bitvar{NQRS} & \multicolumn{1}{p{50pt}}{2D Integer array} &
+ 6 & No & A $2\times 3$ array containing the
+ number of quant ranges for a given \qti\ and \pli, respectively.
+This is at most $63$. \\
+\bitvar{QRSIZES} & \multicolumn{1}{p{50pt}}{3D Integer array} &
+ 6 & No & A $2\times 3\times 63$ array of the
+ sizes of each quant range for a given \qti\ and \pli, respectively.
+Only the first $\bitvar{NQRS}[\qti][\pli]$ values are used. \\
+\bitvar{QRBMIS} & \multicolumn{1}{p{50pt}}{3D Integer array} &
+ 9 & No & A $2\times 3\times 64$ array of the
+ \bmi's used for each quant range for a given \qti\ and \pli, respectively.
+Only the first $(\bitvar{NQRS}[\qti][\pli]+1)$ values are used. \\
+\bitvar{RPYW} & Integer & 20 & No & The width of the $Y'$ plane of the
+ reference frames in pixels. \\
+\bitvar{RPYH} & Integer & 20 & No & The height of the $Y'$ plane of the
+ reference frames in pixels. \\
+\bitvar{RPCW} & Integer & 20 & No & The width of the $C_b$ and $C_r$
+ planes of the reference frames in pixels. \\
+\bitvar{RPCH} & Integer & 20 & No & The height of the $C_b$ and $C_r$
+ planes of the reference frames in pixels. \\
+\bitvar{GOLDREFY} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPYH}\times\bitvar{RPYW}$
+ array containing the contents of the $Y'$ plane of the golden reference
+ frame. \\
+\bitvar{GOLDREFCB} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_b$ plane of the golden reference
+ frame. \\
+\bitvar{GOLDREFCR} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_r$ plane of the golden reference
+ frame. \\
+\bitvar{PREVREFY} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPYH}\times\bitvar{RPYW}$
+ array containing the contents of the $Y'$ plane of the previous reference
+ frame. \\
+\bitvar{PREVREFCB} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_b$ plane of the previous reference
+ frame. \\
+\bitvar{PREVREFCR} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_r$ plane of the previous reference
+ frame. \\
+\bitvar{NBS} & Integer & 36 & No & The total number of blocks in a
+ frame. \\
+\bitvar{BCODED} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 1 & No & An \bitvar{NBS}-element array of
+ flags indicating which blocks are coded. \\
+\bitvar{MBMODES} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 3 & No & An \bitvar{NMBS}-element array of
+ coding modes for each macro block. \\
+\bitvar{MVECTS} & \multicolumn{1}{p{50pt}}{Array of 2D Integer Vectors} &
+ 6 & Yes & An \bitvar{NBS}-element array of
+ motion vectors for each block. \\
+\bitvar{COEFFS} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 16 & Yes & An $\bitvar{NBS}\times 64$ array of
+ quantized DCT coefficient values for each block in zig-zag order. \\
+\bitvar{NCOEFFS} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 7 & No & An \bitvar{NBS}-element array of the
+ coefficient count for each block. \\
+\bitvar{QIS} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 6 & No & An \bitvar{NQIS}-element array of
+ \qi\ values. \\
+\bitvar{QIIS} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 2 & No & An \bitvar{NBS}-element array of
+ \locvar{\qii} values for each block. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{RECY} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPYH}\times\bitvar{RPYW}$
+ array containing the contents of the $Y'$ plane of the reconstructed frame. \\
+\bitvar{RECCB} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_b$ plane of the reconstructed frame. \\
+\bitvar{RECCR} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_r$ plane of the reconstructed frame. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{RPW} & Integer & 20 & No & The width of the current plane of the
+ current reference frame in pixels. \\
+\locvar{RPH} & Integer & 20 & No & The height of the current plane of
+ the current reference frame in pixels. \\
+\locvar{REFP} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPH}\times\bitvar{RPW}$
+ array containing the contents of the current plane of the current reference
+ frame. \\
+\locvar{BX} & Integer & 20 & No & The horizontal pixel index of the
+ lower-left corner of the current block. \\
+\locvar{BY} & Integer & 20 & No & The vertical pixel index of the
+ lower-left corner of the current block. \\
+\locvar{MVX} & Integer & 5 & No & The horizontal component of the first
+ whole-pixel motion vector. \\
+\locvar{MVY} & Integer & 5 & No & The vertical component of the first
+ whole-pixel motion vector. \\
+\locvar{MVX2} & Integer & 5 & No & The horizontal component of the second
+ whole-pixel motion vector. \\
+\locvar{MVY2} & Integer & 5 & No & The vertical component of the second
+ whole-pixel motion vector. \\
+\locvar{PRED} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & An $8\times 8$ array of predictor
+ values to use for the current block. \\
+\locvar{RES} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 16 & Yes & An $8\times 8$ array containing the
+ decoded residual for the current block. \\
+\locvar{QMAT} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 16 & No & A 64-element array of quantization
+ values for each DCT coefficient in natural order. \\
+\locvar{DC} & Integer & 29 & Yes & The dequantized DC coefficient of a
+ block. \\
+\locvar{P} & Integer & 17 & Yes & A reconstructed pixel value. \\
+\locvar{\bi} & Integer & 36 & No & The index of the current block in
+ coded order. \\
+\locvar{\mbi} & Integer & 32 & No & The index of the macro block
+ containing block \locvar{\bi}. \\
+\locvar{\pli} & Integer & 2 & No & The color plane index of the current
+ block. \\
+\locvar{\rfi} & Integer & 2 & No & The index of the reference frame
+ indicated by the coding mode for macro block \locvar{\mbi}. \\
+\locvar{\idx{bx}} & Integer & 3 & No & The horizontal pixel index in the
+ block. \\
+\locvar{\idx{by}} & Integer & 3 & No & The vertical pixel index in the
+ block. \\
+\locvar{\qti} & Integer & 1 & No & A quantization type index.
+See Table~\ref{tab:quant-types}.\\
+\locvar{\idx{qi0}} & Integer & 6 & No & The quantization index of the DC
+ coefficient. \\
+\locvar{\qi} & Integer & 6 & No & The quantization index of the AC
+ coefficients. \\
+\bottomrule\end{tabularx}
+\medskip
+
+This section takes the decoded packet data and uses the previously defined
+ procedures to reconstruct each block of the current frame.
+For coded blocks, a predictor is formed using the coding mode and, if
+ applicable, the motion vector, and then the residual is computed from the
+ quantized DCT coefficients.
+For uncoded blocks, the contents of the co-located block are copied from the
+ previous frame and the residual is cleared to zero.
+Then the predictor and residual are added, and the result clamped to the range
+ $0\ldots 255$ and stored in the current frame.
+
+In the special case that a block contains only a DC coefficient, the
+ dequantization and inverse DCT transform is skipped.
+Instead the constant pixel value for the entire block is computed in one step.
+Note that the truncation of intermediate operations is omitted and the final
+ rounding is slightly different in this case.
+The check for whether or not the block contains only a DC coefficient is based
+ on the coefficient count returned from the token decode procedure of
+ Section~\ref{sec:dct-decode}, and not by checking to see if the remaining
+ coefficient values are zero.
+Also note that even when the coefficient count indicates the block contains
+ zero coefficients, the DC coefficient is still processed, as undoing DC
+ prediction might have made it non-zero.
+
+After this procedure, the frame is completely reconstructed, but before it can
+ be used as a reference frame, a loop filter must be run over it to help reduce
+ blocking artifacts.
+This is detailed in Section~\ref{sec:loopfilter}.
+
+\begin{enumerate}
+\item
+Assign \locvar{\idx{qi0}} the value $\bitvar{QIS}[0]$.
+\item
+For each value of \locvar{\bi} from 0 to $(\bitvar{NBS}-1)$:
+\begin{enumerate}
+\item
+Assign \locvar{\pli} the index of the color plane block \locvar{\bi} belongs
+ to.
+\item
+Assign \locvar{BX} the horizontal pixel index of the lower-left corner of block
+ \locvar{\bi}.
+\item
+Assign \locvar{BY} the vertical pixel index of the lower-left corner of block
+ \locvar{\bi}.
+\item
+If $\bitvar{BCODED}[\locvar{\bi}]$ is non-zero:
+\begin{enumerate}
+\item
+Assign \locvar{\mbi} the index of the macro block containing block
+ \locvar{\bi}.
+\item
+If $\bitvar{MBMODES}[\locvar{\mbi}]$ is 1 (INTRA), assign \locvar{\qti} the
+ value $0$.
+\item
+Otherwise, assign \locvar{\qti} the value $1$.
+\item
+Assign \locvar{\rfi} the value of the Reference Frame Index column of
+ Table~\ref{tab:cm-refs} corresponding to $\bitvar{MBMODES}[\locvar{\mbi}]$.
+\item
+If \locvar{\rfi} is zero, compute \locvar{PRED} using the procedure given in
+ Section~\ref{sub:predintra}.
+\item
+Otherwise:
+\begin{enumerate}
+\item
+Assign \locvar{REFP}, \locvar{RPW}, and \locvar{RPH} the values given in
+ Table~\ref{tab:refp} corresponding to current value of \locvar{\rfi} and
+ \locvar{\pli}.
+
+\begin{table}[htbp]
+\begin{center}
+\begin{tabular}{cclll}\toprule
+\locvar{\rfi} & \locvar{\pli} &
+\locvar{REFP} & \locvar{RPW} & \locvar{RPH} \\\midrule
+$1$ & $0$ & \bitvar{PREVREFY} & \bitvar{RPYW} & \bitvar{RPYH} \\
+$1$ & $1$ & \bitvar{PREVREFCB} & \bitvar{RPCW} & \bitvar{RPCH} \\
+$1$ & $2$ & \bitvar{PREVREFCR} & \bitvar{RPCW} & \bitvar{RPCH} \\
+$2$ & $0$ & \bitvar{GOLDREFY} & \bitvar{RPYW} & \bitvar{RPYH} \\
+$2$ & $1$ & \bitvar{GOLDREFCB} & \bitvar{RPCW} & \bitvar{RPCH} \\
+$2$ & $2$ & \bitvar{GOLDREFCR} & \bitvar{RPCW} & \bitvar{RPCH} \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Reference Planes and Sizes for Each \locvar{\rfi} and \locvar{\pli}}
+\label{tab:refp}
+\end{table}
+
+\item
+Assign \locvar{MVX} the value
+\begin{equation*}
+ \left\lfloor\lvert\bitvar{MVECTS}[\locvar{\bi}]_x\rvert\right\rfloor*
+ \sign(\bitvar{MVECTS}[\locvar{\bi}]_x).
+\end{equation*}
+\item
+Assign \locvar{MVY} the value
+\begin{equation*}
+ \left\lfloor\lvert\bitvar{MVECTS}[\locvar{\bi}]_y\rvert\right\rfloor*
+ \sign(\bitvar{MVECTS}[\locvar{\bi}]_y).
+\end{equation*}
+\item
+Assign \locvar{MVX2} the value
+\begin{equation*}
+ \left\lceil\lvert\bitvar{MVECTS}[\locvar{\bi}]_x\rvert\right\rceil*
+ \sign(\bitvar{MVECTS}[\locvar{\bi}]_x).
+\end{equation*}
+\item
+Assign \locvar{MVY2} the value
+\begin{equation*}
+ \left\lceil\lvert\bitvar{MVECTS}[\locvar{\bi}]_y\rvert\right\rceil*
+ \sign(\bitvar{MVECTS}[\locvar{\bi}]_y).
+\end{equation*}
+\item
+If \locvar{MVX} equals \locvar{MVX2} and \locvar{MVY} equals \locvar{MVY2},
+ use the values \locvar{REFP}, \locvar{RPW}, \locvar{RPH}, \locvar{BX},
+ \locvar{BY}, \locvar{MVX}, and \locvar{MVY}, compute \locvar{PRED} using the
+ procedure given in Section~\ref{sub:predfullpel}.
+\item
+Otherwise, use the values \locvar{REFP}, \locvar{RPW}, \locvar{RPH},
+ \locvar{BX}, \locvar{BY}, \locvar{MVX}, \locvar{MVY}, \locvar{MVX2}, and
+ \locvar{MVY2} to compute \locvar{PRED} using the procedure given in
+ Section~\ref{sub:predhalfpel}.
+\end{enumerate}
+\item
+If $\bitvar{NCOEFFS}[\locvar{\bi}]$ is less than 2:
+\begin{enumerate}
+\item
+Using \bitvar{ACSCALE}, \bitvar{DCSCALE}, \bitvar{BMS}, \bitvar{NQRS}, \\
+ \bitvar{QRSIZES}, \bitvar{QRBMIS}, \locvar{\qti}, \locvar{\pli}, and
+ \locvar{\idx{qi0}}, use the procedure given in Section~\ref{sub:quant-mat} to
+ compute the DC quantization matrix \locvar{QMAT}.
+\item
+Assign \locvar{DC} the value
+\begin{equation*}
+ (\bitvar{COEFFS}[\bitvar{\bi}][0]*\locvar{QMAT}[0]+15)>>5.
+\end{equation*}
+\item
+Truncate \locvar{DC} to a 16-bit signed representation by dropping any
+ higher-order bits.
+\item
+For each value of \locvar{\idx{by}} from 0 to 7, and each value of
+ \locvar{\idx{bx}} from 0 to 7, assign
+ $\locvar{RES}[\locvar{\idx{by}}][\locvar{\idx{bx}}]$ the value \locvar{DC}.
+\end{enumerate}
+\item
+Otherwise:
+\begin{enumerate}
+\item
+Assign \locvar{\qi} the value $\bitvar{QIS}[\bitvar{QIIS}[\locvar{\bi}]]$.
+\item
+Using \bitvar{ACSCALE}, \bitvar{DCSCALE}, \bitvar{BMS}, \bitvar{NQRS}, \\
+ \bitvar{QRSIZES}, \bitvar{QRBMIS}, \locvar{\qti}, \locvar{\pli},
+ \locvar{\idx{qi0}}, and \locvar{\qi}, compute \locvar{DQC} using the procedure
+ given in Section~\ref{sub:dequant}.
+\item
+Using \locvar{DQC}, compute \locvar{RES} using the procedure given in
+ Section~\ref{sub:2d-idct}.
+\end{enumerate}
+\end{enumerate}
+\item
+Otherwise:
+\begin{enumerate}
+\item
+Assign \locvar{\rfi} the value 1.
+\item
+Assign \locvar{REFP}, \locvar{RPW}, and \locvar{RPH} the values given in
+ Table~\ref{tab:refp} corresponding to current value of \locvar{\rfi} and
+ \locvar{\pli}.
+\item
+Assign \locvar{MVX} the value 0.
+\item
+Assign \locvar{MVY} the value 0.
+\item
+Using the values \locvar{REFP}, \locvar{RPW}, \locvar{RPH}, \locvar{BX},
+ \locvar{BY}, \locvar{MVX}, and \locvar{MVY}, compute \locvar{PRED} using the
+ procedure given in Section~\ref{sub:predfullpel}.
+This is simply a copy of the co-located block in the previous reference frame.
+\item
+For each value of \locvar{\idx{by}} from 0 to 7, and each value of
+ \locvar{\idx{bx}} from 0 to 7, assign
+ $\locvar{RES}[\locvar{\idx{by}}][\locvar{\idx{bx}}]$ the value 0.
+\end{enumerate}
+\item
+For each value of \locvar{\idx{by}} from 0 to 7, and each value of
+ \locvar{\idx{bx}} from 0 to 7:
+\begin{enumerate}
+\item
+Assign \locvar{P} the value
+ $(\locvar{PRED}[\locvar{\idx{by}}][\locvar{\idx{bx}}]+
+ \locvar{RES}[\locvar{\idx{by}}][\locvar{\idx{bx}}])$.
+\item
+If \locvar{P} is greater than $255$, assign \locvar{P} the value $255$.
+\item
+If \locvar{P} is less than $0$, assign \locvar{P} the value $0$.
+\item
+If \locvar{\pli} equals 0, assign
+ $\bitvar{RECY}[\locvar{BY}+\locvar{\idx{by}}][\locvar{BX}+\locvar{\idx{bx}}]$
+ the value \locvar{P}.
+\item
+Otherwise, if \locvar{\pli} equals 1, assign
+ $\bitvar{RECB}[\locvar{BY}+\locvar{\idx{by}}][\locvar{BX}+\locvar{\idx{bx}}]$
+ the value \locvar{P}.
+\item
+Otherwise, \locvar{\pli} equals 2, so assign
+ $\bitvar{RECR}[\locvar{BY}+\locvar{\idx{by}}][\locvar{BX}+\locvar{\idx{bx}}]$
+ the value \locvar{P}.
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+
+\section{Loop Filtering}
+\label{sec:loopfilter}
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics{lflim}
+\end{center}
+\caption{The loop filter response function.}
+\label{fig:lflim}
+\end{figure}
+
+The loop filter is a simple deblocking filter that is based on running a small
+ edge detecting filter over the coded block edges and adjusting the pixel
+ values by a tapered response.
+The filter response is modulated by the following non-linear function:
+\begin{align*}
+\lflim(\locvar{R},\bitvar{L})&=\left\{\begin{array}{ll}
+0, & \locvar{R}\le-2*\bitvar{L} \\
+-\locvar{R}-2*\bitvar{L}, & -2*\bitvar{L}<\locvar{R}\le-\bitvar{L} \\
+\locvar{R}, & -\bitvar{L}<\locvar{R}<\bitvar{L} \\
+-\locvar{R}+2*\bitvar{L}, & \bitvar{L}\le\locvar{R}<2*\bitvar{L} \\
+0, & 2*\bitvar{L}\le\locvar{R}
+\end{array}\right.
+\end{align*}
+Here \bitvar{L} is a limiting value equal to $\bitvar{LFLIMS}[\idx{qi0}]$.
+It defines the peaks of the function, illustrated in Figure~\ref{fig:lflim}.
+\bitvar{LFLIMS} is an array of values specified in the setup header and is
+ indexed by \idx{qi0}, the first quantization index for the frame, the one used
+ for all the DC coefficients.
+Larger values of \bitvar{L} indicate a stronger filter.
+
+\subsection{Horizontal Filter}
+\label{sub:filth}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{RECP} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPH}\times\bitvar{RPW}$
+ array containing the contents of a plane of the reconstructed frame. \\
+\bitvar{FX} & Integer & 20 & No & The horizontal pixel index of the
+ lower-left corner of the area to be filtered. \\
+\bitvar{FY} & Integer & 20 & No & The vertical pixel index of the
+ lower-left corner of the area to be filtered. \\
+\bitvar{L} & Integer & 7 & No & The loop filter limit value. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{RECP} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPH}\times\bitvar{RPW}$
+ array containing the contents of a plane of the reconstructed frame. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{R} & Integer & 9 & Yes & The edge detector response. \\
+\locvar{P} & Integer & 9 & Yes & A filtered pixel value. \\
+\locvar{\idx{by}} & Integer & 20 & No & The vertical pixel index in the
+ block. \\
+\bottomrule\end{tabularx}
+\medskip
+
+This procedure applies a $4$-tap horizontal filter to each row of a vertical
+ block edge.
+
+\begin{enumerate}
+\item
+For each value of \locvar{\idx{by}} from $0$ to $7$:
+\begin{enumerate}
+\item
+Assign \locvar{R} the value
+\begin{multline*}
+(\bitvar{RECP}[\bitvar{FY}+\locvar{\idx{by}}][\bitvar{FX}]-
+ 3*\bitvar{RECP}[\bitvar{FY}+\locvar{\idx{by}}][\bitvar{FX}+1]+\\
+ 3*\bitvar{RECP}[\bitvar{FY}+\locvar{\idx{by}}][\bitvar{FX}+2]-
+ \bitvar{RECP}[\bitvar{FY}+\locvar{\idx{by}}][\bitvar{FX}+3]+4)>>3
+\end{multline*}
+\item
+Assign \locvar{P} the value
+ $(\bitvar{RECP}[\bitvar{FY}+\locvar{\idx{by}}][\bitvar{FX}+1]+
+ \lflim(\locvar{R},\bitvar{L}))$.
+\item
+If \locvar{P} is less than zero, assign
+ $\bitvar{RECP}[\bitvar{FY}+\locvar{\idx{by}}][\bitvar{FX}+1]$ the value zero.
+\item
+Otherwise, if \locvar{P} is greater than $255$, assign
+ $\bitvar{RECP}[\bitvar{FY}+\locvar{\idx{by}}][\bitvar{FX}+1]$ the value $255$.
+\item
+Otherwise, assign
+ $\bitvar{RECP}[\bitvar{FY}+\locvar{\idx{by}}][\bitvar{FX}+1]$ the value
+ \locvar{P}.
+\item
+Assign \locvar{P} the value
+ $(\bitvar{RECP}[\bitvar{FY}+\locvar{\idx{by}}][\bitvar{FX}+2]-
+ \lflim(\locvar{R},\bitvar{L}))$.
+\item
+If \locvar{P} is less than zero, assign
+ $\bitvar{RECP}[\bitvar{FY}+\locvar{\idx{by}}][\bitvar{FX}+2]$ the value zero.
+\item
+Otherwise, if \locvar{P} is greater than $255$, assign
+ $\bitvar{RECP}[\bitvar{FY}+\locvar{\idx{by}}][\bitvar{FX}+2]$ the value $255$.
+\item
+Otherwise, assign
+ $\bitvar{RECP}[\bitvar{FY}+\locvar{\idx{by}}][\bitvar{FX}+2]$ the value
+ \locvar{P}.
+\end{enumerate}
+\end{enumerate}
+
+\subsection{Vertical Filter}
+\label{sub:filtv}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{RECP} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPH}\times\bitvar{RPW}$
+ array containing the contents of a plane of the reconstructed frame. \\
+\bitvar{FX} & Integer & 20 & No & The horizontal pixel index of the
+ lower-left corner of the area to be filtered. \\
+\bitvar{FY} & Integer & 20 & No & The vertical pixel index of the
+ lower-left corner of the area to be filtered. \\
+\bitvar{L} & Integer & 7 & No & The loop filter limit value. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{RECP} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPH}\times\bitvar{RPW}$
+ array containing the contents of a plane of the reconstructed frame. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{R} & Integer & 9 & Yes & The edge detector response. \\
+\locvar{P} & Integer & 9 & Yes & A filtered pixel value. \\
+\locvar{\idx{bx}} & Integer & 20 & No & The horizontal pixel index in the
+ block. \\
+\bottomrule\end{tabularx}
+\medskip
+
+This procedure applies a $4$-tap vertical filter to each column of a horizontal
+ block edge.
+
+\begin{enumerate}
+\item
+For each value of \locvar{\idx{bx}} from $0$ to $7$:
+\begin{enumerate}
+\item
+Assign \locvar{R} the value
+\begin{multline*}
+(\bitvar{RECP}[\bitvar{FY}][\bitvar{FX}+\locvar{\idx{bx}}]-
+ 3*\bitvar{RECP}[\bitvar{FY}+1][\bitvar{FX}+\locvar{\idx{bx}}]+\\
+ 3*\bitvar{RECP}[\bitvar{FY}+2][\bitvar{FX}+\locvar{\idx{bx}}]-
+ \bitvar{RECP}[\bitvar{FY}+3][\bitvar{FX}+\locvar{\idx{bx}}]+4)>>3
+\end{multline*}
+\item
+Assign \locvar{P} the value
+ $(\bitvar{RECP}[\bitvar{FY}+1][\bitvar{FX}+\locvar{\idx{bx}}]+
+ \lflim(\locvar{R},\bitvar{L}))$.
+\item
+If \locvar{P} is less than zero, assign
+ $\bitvar{RECP}[\bitvar{FY}+1][\bitvar{FX}+\locvar{\idx{bx}}]$ the value zero.
+\item
+Otherwise, if \locvar{P} is greater than $255$, assign
+ $\bitvar{RECP}[\bitvar{FY}+1][\bitvar{FX}+\locvar{\idx{bx}}]$ the value $255$.
+\item
+Otherwise, assign
+ $\bitvar{RECP}[\bitvar{FY}+1][\bitvar{FX}+\locvar{\idx{bx}}]$ the value
+ \locvar{P}.
+\item
+Assign \locvar{P} the value
+ $(\bitvar{RECP}[\bitvar{FY}+2][\bitvar{FX}+\locvar{\idx{bx}}]-
+ \lflim(\locvar{R},\bitvar{L}))$.
+\item
+If \locvar{P} is less than zero, assign
+ $\bitvar{RECP}[\bitvar{FY}+2][\bitvar{FX}+\locvar{\idx{bx}}]$ the value zero.
+\item
+Otherwise, if \locvar{P} is greater than $255$, assign
+ $\bitvar{RECP}[\bitvar{FY}+2][\bitvar{FX}+\locvar{\idx{bx}}]$ the value $255$.
+\item
+Otherwise, assign
+ $\bitvar{RECP}[\bitvar{FY}+2][\bitvar{FX}+\locvar{\idx{bx}}]$ the value
+ \locvar{P}.
+\end{enumerate}
+\end{enumerate}
+
+\subsection{Complete Loop Filter}
+\label{sub:loop-filt}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{LFLIMS} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 7 & No & A 64-element array of loop filter limit
+ values. \\
+\bitvar{RPYW} & Integer & 20 & No & The width of the $Y'$ plane of the
+ reconstruced frame in pixels. \\
+\bitvar{RPYH} & Integer & 20 & No & The height of the $Y'$ plane of the
+ reconstruced frame in pixels. \\
+\bitvar{RPCW} & Integer & 20 & No & The width of the $C_b$ and $C_r$
+ planes of the reconstruced frame in pixels. \\
+\bitvar{RPCH} & Integer & 20 & No & The height of the $C_b$ and $C_r$
+ planes of the reconstruced frame in pixels. \\
+\bitvar{NBS} & Integer & 36 & No & The total number of blocks in a
+ frame. \\
+\bitvar{BCODED} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 1 & No & An \bitvar{NBS}-element array of
+ flags indicating which blocks are coded. \\
+\bitvar{QIS} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 6 & No & An \bitvar{NQIS}-element array of
+ \qi\ values. \\
+\bitvar{RECY} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPYH}\times\bitvar{RPYW}$
+ array containing the contents of the $Y'$ plane of the reconstructed frame. \\
+\bitvar{RECCB} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_b$ plane of the reconstructed frame. \\
+\bitvar{RECCR} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_r$ plane of the reconstructed frame. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{RECY} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPYH}\times\bitvar{RPYW}$
+ array containing the contents of the $Y'$ plane of the reconstructed frame. \\
+\bitvar{RECCB} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_b$ plane of the reconstructed frame. \\
+\bitvar{RECCR} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_r$ plane of the reconstructed frame. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{RPW} & Integer & 20 & No & The width of the current plane of the
+ reconstructed frame in pixels. \\
+\locvar{RPH} & Integer & 20 & No & The height of the current plane of
+ the reconstructed frame in pixels. \\
+\locvar{RECP} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPH}\times\bitvar{RPW}$
+ array containing the contents of the current plane of the reconstruced
+ frame. \\
+\locvar{BX} & Integer & 20 & No & The horizontal pixel index of the
+ lower-left corner of the current block. \\
+\locvar{BY} & Integer & 20 & No & The vertical pixel index of the
+ lower-left corner of the current block. \\
+\locvar{FX} & Integer & 20 & No & The horizontal pixel index of the
+ lower-left corner of the area to be filtered. \\
+\locvar{FY} & Integer & 20 & No & The vertical pixel index of the
+ lower-left corner of the area to be filtered. \\
+\locvar{L} & Integer & 7 & No & The loop filter limit value. \\
+\locvar{\bi} & Integer & 36 & No & The index of the current block in
+ coded order. \\
+\locvar{\bj} & Integer & 36 & No & The index of a neighboring block in
+ coded order. \\
+\locvar{\pli} & Integer & 2 & No & The color plane index of the current
+ block. \\
+\bottomrule\end{tabularx}
+\medskip
+
+This procedure defines the order that the various block edges are filtered.
+Because each application of one of the two filters above destructively modifies
+ the contents of the reconstructed image, the precise output obtained differs
+ depending on the order that horizontal and vertical filters are applied to the
+ edges of a single block.
+The order defined here conforms to that used by VP3.
+
+\begin{enumerate}
+\item
+Assign \locvar{L} the value $\bitvar{LFLIMS}[\bitvar{QIS}[0]]$.
+\item
+For each block in {\em raster} order, with coded-order index \locvar{\bi}:
+\begin{enumerate}
+\item
+If $\bitvar{BCODED}[\locvar{\bi}]$ is non-zero:
+\begin{enumerate}
+\item
+Assign \locvar{\pli} the index of the color plane block \locvar{\bi} belongs
+ to.
+\item
+Assign \locvar{RECP}, \locvar{RPW}, and \locvar{RPH} the values given in
+ Table~\ref{tab:recp} corresponding to the value of \locvar{\pli}.
+
+\begin{table}[htbp]
+\begin{center}
+\begin{tabular}{clll}\toprule
+\locvar{\pli} & \locvar{RECP} & \locvar{RPW} & \locvar{RPH} \\\midrule
+$0$ & \bitvar{RECY} & \bitvar{RPYW} & \bitvar{RPYH} \\
+$1$ & \bitvar{RECCB} & \bitvar{RPCW} & \bitvar{RPCH} \\
+$2$ & \bitvar{RECCR} & \bitvar{RPCW} & \bitvar{RPCH} \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Reconstructed Planes and Sizes for Each \locvar{\pli}}
+\label{tab:recp}
+\end{table}
+
+\item
+Assign \locvar{BX} the horizontal pixel index of the lower-left corner of the
+ block \locvar{\bi}.
+\item
+Assign \locvar{BY} the vertical pixel index of the lower-left corner of the
+ block \locvar{\bi}.
+\item
+If \locvar{BX} is greater than zero:
+\begin{enumerate}
+\item
+Assign \locvar{FX} the value $(\locvar{BX}-2)$.
+\item
+Assign \locvar{FY} the value \locvar{BY}.
+\item
+Using \locvar{RECP}, \locvar{FX}, \locvar{FY}, and \locvar{L}, apply the
+ horizontal block filter to the left edge of block \locvar{\bi} with the
+ procedure described in Section~\ref{sub:filth}.
+\end{enumerate}
+\item
+If \locvar{BY} is greater than zero:
+\begin{enumerate}
+\item
+Assign \locvar{FX} the value \locvar{BX}.
+\item
+Assign \locvar{FY} the value $(\locvar{BY}-2)$
+\item
+Using \locvar{RECP}, \locvar{FX}, \locvar{FY}, and \locvar{L}, apply the
+ vertical block filter to the bottom edge of block \locvar{\bi} with the
+ procedure described in Section~\ref{sub:filtv}.
+\end{enumerate}
+\item
+If $(\locvar{BX}+8)$ is less than \locvar{RPW} and
+ $\bitvar{BCODED}[\locvar{\bj}]$ is zero, where \locvar{\bj} is the coded-order
+ index of the block adjacent to \locvar{\bi} on the right:
+\begin{enumerate}
+\item
+Assign \locvar{FX} the value $(\locvar{BX}+6)$.
+\item
+Assign \locvar{FY} the value \locvar{BY}.
+\item
+Using \locvar{RECP}, \locvar{FX}, \locvar{FY}, and \locvar{L}, apply the
+ horizontal block filter to the right edge of block \locvar{\bi} with the
+ procedure described in Section~\ref{sub:filth}.
+\end{enumerate}
+\item
+If $(\locvar{BY}+8)$ is less than \locvar{RPH} and
+ $\bitvar{BCODED}[\locvar{\bj}]$ is zero, where \locvar{\bj} is the coded-order
+ index of the block adjacent to \locvar{\bi} above:
+\begin{enumerate}
+\item
+Assign \locvar{FX} the value \locvar{BX}.
+\item
+Assign \locvar{FY} the value $(\locvar{BY}+6)$
+\item
+Using \locvar{RECP}, \locvar{FX}, \locvar{FY}, and \locvar{L}, apply the
+ vertical block filter to the top edge of block \locvar{\bi} with the
+ procedure described in Section~\ref{sub:filtv}.
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+\end{enumerate}
+
+\paragraph{VP3 Compatibility}
+
+The original VP3 decoder implemented unrestricted motion vectors by enlarging
+ the reconstructed frame buffers and repeating the pixels on its edges into the
+ padding region.
+However, for the previous reference frame this padding ocurred before the loop
+ filter was applied, but for the golden reference frame it occurred afterwards.
+
+This means that for the previous reference frame, the padding values were
+ required to be stored separately from the main image values.
+Furthermore, even if the previous and golden reference frames were in fact the
+ same frame, they could have different padding values.
+Finally, the encoder did not apply the loop filter at all, which resulted in
+ artifacts, particularly in near-static scenes, due to prediction-loop
+ mismatch.
+This last can only be considered a bug in the VP3 encoder.
+
+Given all these things, Theora now uniformly applies the loop filter before
+ the reference frames are padded.
+This means it is possible to use the same buffer for the previous and golden
+ reference frames when they do indeed refer to the same frame.
+It also means that on architectures where memory bandwidth is limited, it is
+ possible to avoid storing padding values, and simply clamp the motion vectors
+ applied to each pixel as described in Sections~\ref{sub:predfullpel}
+ and~\ref{sub:predhalfpel}.
+This means that the predicted pixel values along the edges of the frame might
+ differ slightly between VP3 and Theora, but since the VP3 encoder did not
+ apply the loop filter in the first place, this is not likely to impose any
+ serious compatibility issues.
+
+\section{Complete Frame Decode}
+
+\paragraph{Input parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{FMBW} & Integer & 16 & No & The width of the frame in macro
+ blocks. \\
+\bitvar{FMBH} & Integer & 16 & No & The height of the frame in macro
+ blocks. \\
+\bitvar{NSBS} & Integer & 32 & No & The total number of super blocks in a
+ frame. \\
+\bitvar{NBS} & Integer & 36 & No & The total number of blocks in a
+ frame. \\
+\bitvar{NMBS} & Integer & 32 & No & The total number of macro blocks in a
+ frame. \\
+\bitvar{FRN} & Integer & 32 & No & The frame-rate numerator. \\
+\bitvar{FRD} & Integer & 32 & No & The frame-rate denominator. \\
+\bitvar{PARN} & Integer & 24 & No & The pixel aspect-ratio numerator. \\
+\bitvar{PARD} & Integer & 24 & No & The pixel aspect-ratio
+ denominator. \\
+\bitvar{CS} & Integer & 8 & No & The color space. \\
+\bitvar{PF} & Integer & 2 & No & The pixel format. \\
+\bitvar{NOMBR} & Integer & 24 & No & The nominal bitrate of the stream, in
+ bits per second. \\
+\bitvar{QUAL} & Integer & 6 & No & The quality hint. \\
+\bitvar{KFGSHIFT} & Integer & 5 & No & The amount to shift the key frame
+ number by in the granule position. \\
+\bitvar{LFLIMS} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 7 & No & A 64-element array of loop filter
+ limit values. \\
+\bitvar{ACSCALE} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 16 & No & A 64-element array of scale values
+ for AC coefficients for each \qi\ value. \\
+\bitvar{DCSCALE} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 16 & No & A 64-element array of scale values
+ for the DC coefficient for each \qi\ value. \\
+\bitvar{NBMS} & Integer & 10 & No & The number of base matrices. \\
+\bitvar{BMS} & \multicolumn{1}{p{50pt}}{2D Integer array} &
+ 8 & No & A $\bitvar{NBMS}\times 64$ array
+ containing the base matrices. \\
+\bitvar{NQRS} & \multicolumn{1}{p{50pt}}{2D Integer array} &
+ 6 & No & A $2\times 3$ array containing the
+ number of quant ranges for a given \qti\ and \pli, respectively.
+This is at most $63$. \\
+\bitvar{QRSIZES} & \multicolumn{1}{p{50pt}}{3D Integer array} &
+ 6 & No & A $2\times 3\times 63$ array of the
+ sizes of each quant range for a given \qti\ and \pli, respectively.
+Only the first $\bitvar{NQRS}[\qti][\pli]$ values will be used. \\
+\bitvar{QRBMIS} & \multicolumn{1}{p{50pt}}{3D Integer array} &
+ 9 & No & A $2\times 3\times 64$ array of the
+ \bmi's used for each quant range for a given \qti\ and \pli, respectively.
+Only the first $(\bitvar{NQRS}[\qti][\pli]+1)$ values will be used. \\
+\bitvar{HTS} & \multicolumn{3}{l}{Huffman table array}
+ & An 80-element array of Huffman tables
+ with up to 32 entries each. \\
+\bitvar{GOLDREFY} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPYH}\times\bitvar{RPYW}$
+ array containing the contents of the $Y'$ plane of the golden reference
+ frame. \\
+\bitvar{GOLDREFCB} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_b$ plane of the golden reference
+ frame. \\
+\bitvar{GOLDREFCR} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_r$ plane of the golden reference
+ frame. \\
+\bitvar{PREVREFY} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPYH}\times\bitvar{RPYW}$
+ array containing the contents of the $Y'$ plane of the previous reference
+ frame. \\
+\bitvar{PREVREFCB} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_b$ plane of the previous reference
+ frame. \\
+\bitvar{PREVREFCR} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_r$ plane of the previous reference
+ frame. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Output parameters:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\bitvar{RECY} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPYH}\times\bitvar{RPYW}$
+ array containing the contents of the $Y'$ plane of the reconstructed frame. \\
+\bitvar{RECCB} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_b$ plane of the reconstructed
+ frame. \\
+\bitvar{RECCR} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_r$ plane of the reconstructed
+ frame. \\
+\bitvar{GOLDREFY} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPYH}\times\bitvar{RPYW}$
+ array containing the contents of the $Y'$ plane of the golden reference
+ frame. \\
+\bitvar{GOLDREFCB} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_b$ plane of the golden reference
+ frame. \\
+\bitvar{GOLDREFCR} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_r$ plane of the golden reference
+ frame. \\
+\bitvar{PREVREFY} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPYH}\times\bitvar{RPYW}$
+ array containing the contents of the $Y'$ plane of the previous reference
+ frame. \\
+\bitvar{PREVREFCB} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_b$ plane of the previous reference
+ frame. \\
+\bitvar{PREVREFCR} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 8 & No & A $\bitvar{RPCH}\times\bitvar{RPCW}$
+ array containing the contents of the $C_r$ plane of the previous reference
+ frame. \\
+\bottomrule\end{tabularx}
+
+\paragraph{Variables used:}\hfill\\*
+\begin{tabularx}{\textwidth}{@{}llrcX@{}}\toprule
+\multicolumn{1}{c}{Name} &
+\multicolumn{1}{c}{Type} &
+\multicolumn{1}{p{30pt}}{\centering Size (bits)} &
+\multicolumn{1}{c}{Signed?} &
+\multicolumn{1}{c}{Description and restrictions} \\\midrule\endhead
+\locvar{FTYPE} & Integer & 1 & No & The frame type. \\
+\locvar{NQIS} & Integer & 2 & No & The number of \qi\ values. \\
+\locvar{QIS} & \multicolumn{1}{p{40pt}}{Integer array} &
+ 6 & No & An \locvar{NQIS}-element array of
+ \qi\ values. \\
+\locvar{BCODED} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 1 & No & An \bitvar{NBS}-element array of flags
+ indicating which blocks are coded. \\
+\locvar{MBMODES} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 3 & No & An \bitvar{NMBS}-element array of
+ coding modes for each macro block. \\
+\locvar{MVECTS} & \multicolumn{1}{p{50pt}}{Array of 2D Integer Vectors} &
+ 6 & Yes & An \bitvar{NBS}-element array of motion
+ vectors for each block. \\
+\locvar{QIIS} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 2 & No & An \bitvar{NBS}-element array of
+ \locvar{\qii} values for each block. \\
+\locvar{COEFFS} & \multicolumn{1}{p{50pt}}{2D Integer Array} &
+ 16 & Yes & An $\bitvar{NBS}\times 64$ array of
+ quantized DCT coefficient values for each block in zig-zag order. \\
+\locvar{NCOEFFS} & \multicolumn{1}{p{40pt}}{Integer Array} &
+ 7 & No & An \bitvar{NBS}-element array of the
+ coefficient count for each block. \\
+\bitvar{RPYW} & Integer & 20 & No & The width of the $Y'$ plane of the
+ reference frames in pixels. \\
+\bitvar{RPYH} & Integer & 20 & No & The height of the $Y'$ plane of the
+ reference frames in pixels. \\
+\bitvar{RPCW} & Integer & 20 & No & The width of the $C_b$ and $C_r$
+ planes of the reference frames in pixels. \\
+\bitvar{RPCH} & Integer & 20 & No & The height of the $C_b$ and $C_r$
+ planes of the reference frames in pixels. \\
+\locvar{\bi} & Integer & 36 & No & The index of the current block in coded
+ order. \\
+\bottomrule\end{tabularx}
+\medskip
+
+This procedure uses all the procedures defined in the previous section of this
+ chapter to decode and reconstruct a complete frame.
+It takes as input values decoded from the headers, as well as the current
+ reference frames.
+As output, it gives the uncropped, reconstructed frame.
+This should be cropped to picture region before display.
+As a special case, a 0-byte packet is treated exactly like an inter frame with
+ no coded blocks.
+
+\begin{enumerate}
+\item
+If the size of the data packet is non-zero:
+\begin{enumerate}
+\item
+Decode the frame header values \locvar{FTYPE}, \locvar{NQIS}, and \locvar{QIS}
+ using the procedure given in Section~\ref{sub:frame-header}.
+\item
+Using \locvar{FTYPE}, \bitvar{NSBS}, and \bitvar{NBS}, decode the list of coded
+ block flags into \locvar{BCODED} using the procedure given in
+ Section~\ref{sub:coded-blocks}.
+\item
+Using \locvar{FTYPE}, \bitvar{NMBS}, \bitvar{NBS}, and \bitvar{BCODED}, decode
+ the macro block coding modes into \locvar{MBMODES} using the procedure given
+ in Section~\ref{sub:mb-modes}.
+\item
+If \locvar{FTYPE} is non-zero (inter frame), using \bitvar{PF}, \bitvar{NMBS},
+ \locvar{MBMODES}, \bitvar{NBS}, and \locvar{BCODED}, decode the motion vectors
+ into \locvar{MVECTS} using the procedure given in Section~\ref{sub:mv-decode}.
+\item
+Using \bitvar{NBS}, \locvar{BCODED}, and \locvar{NQIS}, decode the block-level
+ \qi\ values into \locvar{QIIS} using the procedure given in
+ Section~\ref{sub:block-qis}.
+\item
+Using \bitvar{NBS}, \bitvar{NMBS}, \locvar{BCODED}, and \bitvar{HTS}, decode
+ the DCT coefficients into \locvar{NCOEFFS} and \locvar{NCOEFFS} using the
+ procedure given in Section~\ref{sub:dct-coeffs}.
+\item
+Using \locvar{BCODED} and \locvar{MBMODES}, undo the DC prediction on the DC
+ coefficients stored in \locvar{COEFFS} using the procedure given in
+ Section~\ref{sub:dc-pred-undo}.
+\end{enumerate}
+\item
+Otherwise:
+\begin{enumerate}
+\item
+Assign \locvar{FTYPE} the value 1 (inter frame).
+\item
+Assign \locvar{NQIS} the value 1.
+\item
+Assign $\locvar{QIS}[0]$ the value 63.
+\item
+For each value of \locvar{\bi} from 0 to $(\bitvar{NBS}-1)$, assign
+ $\locvar{BCODED}[\locvar{\bi}]$ the value zero.
+\end{enumerate}
+\item
+Assign \locvar{RPYW} and \locvar{RPYH} the values $(16*\bitvar{FMBW})$ and
+ $(16*\bitvar{FMBH})$, respectively.
+\item
+Assign \locvar{RPCW} and \locvar{RPCH} the values from the row of
+ Table~\ref{tab:rpcwh-for-pf} corresponding to \bitvar{PF}.
+
+\begin{table}[tb]
+\begin{center}
+\begin{tabular}{crr}\toprule
+\bitvar{PF} & \multicolumn{1}{c}{\locvar{RPCW}}
+ & \multicolumn{1}{c}{\locvar{RPCH}} \\\midrule
+$0$ & $8*\bitvar{FMBW}$ & $8*\bitvar{FMBH}$ \\
+$2$ & $8*\bitvar{FMBW}$ & $16*\bitvar{FMBH}$ \\
+$3$ & $16*\bitvar{FMBW}$ & $16*\bitvar{FMBH}$ \\
+\bottomrule\end{tabular}
+\end{center}
+\caption{Width and Height of Chroma Planes for each Pixel Format}
+\label{tab:rpcwh-for-pf}
+\end{table}
+
+\item
+Using \bitvar{ACSCALE}, \bitvar{DCSCALE}, \bitvar{BMS}, \bitvar{NQRS},
+ \bitvar{QRSIZES}, \bitvar{QRBMIS}, \bitvar{NBS}, \locvar{BCODED},
+ \locvar{MBMODES}, \locvar{MVECTS}, \locvar{COEFFS}, \locvar{NCOEFFS},
+ \locvar{QIS}, \locvar{QIIS}, \locvar{RPYW}, \locvar{RPYH}, \locvar{RPCW},
+ \locvar{RPCH}, \bitvar{GOLDREFY}, \bitvar{GOLDREFCB}, \bitvar{GOLDREFCR},
+ \bitvar{PREVREFY}, \bitvar{PREVREFCB}, and \bitvar{PREVREFCR}, reconstruct the
+ complete frame into \bitvar{RECY}, \bitvar{RECCB}, and \bitvar{RECCR} using
+ the procedure given in Section~\ref{sub:recon}.
+\item
+Using \bitvar{LFLIMS}, \locvar{RPYW}, \locvar{RPYH}, \locvar{RPCW},
+ \locvar{RPCH}, \bitvar{NBS}, \locvar{BCODED}, and \locvar{QIS}, apply the loop
+ filter to the reconstructed frame in \bitvar{RECY}, \bitvar{RECCB}, and
+ \bitvar{RECCR} using the procedure given in Section~\ref{sub:loop-filt}.
+\item
+If \locvar{FTYPE} is zero (intra frame), assign \bitvar{GOLDREFY},
+ \bitvar{GOLDREFCB}, and \bitvar{GOLDREFCR} the values \bitvar{RECY},
+ \bitvar{RECCB}, and \bitvar{RECCR}, respectively.
+\item
+Assign \bitvar{PREVREFY}, \bitvar{PREVREFCB}, and \bitvar{PREVREFCR} the values
+ \bitvar{RECY}, \bitvar{RECCB}, and \bitvar{RECCR}, respectively.
+\end{enumerate}
+
+%\backmatter
+\appendix
+
+\chapter{Ogg Bitstream Encapsulation}
+\label{app:oggencapsulation}
+
+\section{Overview}
+
+This document specifies the embedding or encapsulation of Theora packets
+ in an Ogg transport stream.
+
+Ogg is a stream oriented wrapper for coded, linear time-based data.
+It provides syncronization, multiplexing, framing, error detection and
+ seeking landmarks for the decoder and complements the raw packet format
+ used by the Theora codec.
+
+This document assumes familiarity with the details of the Ogg standard.
+The Xiph.org documentation provides an overview of the Ogg transport stream
+ format at \url{http://www.xiph.org/ogg/doc/oggstream.html} and a detailed
+ description at \url{http://www.xiph.org/ogg/doc/framing.html}.
+The format is also defined in RFC~3533 \cite{rfc3533}.
+While Theora packets can be embedded in a wide variety of media
+ containers and streaming mechanisms, the Xiph.org Foundation
+ recommends Ogg as the native format for Theora video in file-oriented
+ storage and transmission contexts.
+
+\subsection{MIME type}
+
+The generic MIME type of any Ogg file is {\tt application/ogg}.
+The specific MIME type for the Ogg Theora profile documented here
+is {\tt video/ogg}. This is the MIME type recommended for files
+conforming to this appendix. The recommended filename extension
+is {\tt .ogv}.
+
+Outside of an encapsulation, the mime type {\tt video/theora} may
+ be used to refer specifically to the Theora compressed video stream.
+
+\section{Embedding in a logical bitstream}
+
+Ogg separates the concept of a {\em logical bitstream} consisting of the
+ framing of a particular sequence of packets and complete within itself
+ from the {\em physical bitstream} which may consist either of a single
+ logical bitstream or a number of logical bitstreams multiplexed
+ together.
+This section specifies the embedding of Theora packets in a logical Ogg
+ bitstream.
+The mapping of Ogg Theora logical bitstreams into a multiplexed physical Ogg
+ stream is described in the next section.
+
+\subsection{Headers}
+
+The initial identification header packet appears by itself in a
+ single Ogg page.
+This page defines the start of the logical stream and MUST have
+ the `beginning of stream' flag set.
+
+The second and third header packets (comment metadata and decoder
+ setup data) can together span one or more Ogg pages.
+If there are additional non-normative header packets, they MUST be
+ included in this sequence of pages as well.
+The comment header packet MUST begin the second Ogg page in the logical
+ bitstream, and there MUST be a page break between the last header
+ packet and the first frame data packet.
+
+These two page break requirements facilitate stream identification and
+ simplify header acquisition for seeking and live streaming applications.
+
+All header pages MUST have their granule position field set to zero.
+
+\subsection{Frame data}
+
+The first frame data packet in a logical bitstream MUST begin a new Ogg
+ page.
+All other data packets are placed one at a time into Ogg pages
+ until the end of the stream.
+Packets can span pages and multiple packets can be placed within any
+ one page.
+The last page in the logical bitstream SHOULD have its
+ 'end of stream' flag set to indicate complete transmission
+ of the available video.
+
+Frame data pages MUST be marked with a granule position corresponding to
+ the end of the display interval of the last frame/packet that finishes
+ in that page. See the next section for details.
+
+\subsection{Granule position}
+
+Data packets are marked by a granulepos derived from the count of decodable
+frames after that packet is processed. The field itself is divided into two
+sections, the width of the less significant section being given by the KFGSHIFT
+parameter decoded from the identification header
+(Section~\ref{sec:idheader}).
+The more significant portion of the field gives the count of coded
+frames after the coding of the last keyframe in stream, and the less
+significant portion gives the count of frames since the last keyframe.
+Thus a stream would begin with a split granulepos of $1|0$ (a keyframe),
+followed by $1|1$, $1|2$, $1|3$, etc. Around a keyframe in the
+middle of the stream the granulepos sequence might be $1234|35$,
+$1234|36$, $1234|37$, $1271|0$ (for the keyframe), $1271|1$, and so
+on. In this way the granulepos field increased monotonically as required
+by the Ogg format, but contains information necessary to efficiently
+find the previous keyframe to continue decoding after a seek.
+
+Prior to bitstream version 3.2.1, data packets were marked by a
+granulepos derived from the index of the frame being decoded,
+rather than the count. That is they marked the beginning of the
+display interval of a frame rather than the end. Such streams
+have the VREV field of the identification header set to `0'
+instead of `1'. They can be interpreted according to the description
+above by adding 1 to the more signification field of the split
+granulepos when VREV is less than 1.
+
+\section{Multiplexed stream mapping}
+
+Applications supporting Ogg Theora must support Theora bitstreams
+ multiplexed with compressed audio data in the Vorbis I and Speex
+ formats, and should support Ogg-encapsulated MNG graphics for overlays.
+
+Multiple audio and video bitstreams may be multiplexed together.
+How playback of multiple/alternate streams is handled is up to the
+ application.
+Some conventions based on included metadata aide interoperability
+ in this respect.
+%TODO: describe multiple vs. alternate streams, language mapping
+% and reference metadata descriptions.
+
+\subsection{Chained streams}
+
+Ogg Theora decoders and playback applications MUST support both grouped
+ streams (multiplexed concurrent logical streams) and chained streams
+ (sequential concatenation of independent physical bitstreams).
+
+The number and codec data types of multiplexed streams and the decoder
+ parameters for those stream types that re-occur can all change at a
+ chaining boundary.
+A playback application MUST be prepared to handle such changes and
+ SHOULD do so smoothly with the minimum possible visible disruption.
+The specification of grouped streams below applies independently to each
+ segment of a chained bitstream.
+
+\subsection{Grouped streams}
+
+At the beginning of a multiplexed stream, the `beginning of stream'
+ pages for each logical bitstream will be grouped together.
+Within these, the first page to occur MUST be the Theora page.
+This facilitates identification of Ogg Theora files among other
+ Ogg-encapsulated content.
+A playback application must nevertheless handle streams where this
+ arrangement is not correct.
+%TBT: Then what's the point of requiring it in the spec?
+
+If there is more than one Theora logical stream, the first page should
+ be from the primary stream.
+That is, the best choice for the stream a generic player should begin
+ displaying without special user direction.
+If there is more than one audio stream, or of any other stream
+ type, the identification page of the primary stream of that type
+ should be placed before the others.
+%TBT: That's all pretty vague.
+
+After the `beginning of stream' pages, the header pages of each of
+ the logical streams MUST be grouped together before any data pages
+ occur.
+
+After all the header pages have been placed,
+ the data pages are multiplexed together.
+They should be placed in the stream in increasing order by the
+ time equivalents of their granule position fields.
+This facilitates seeking while limiting the buffering requirements of the
+ playback demultiplexer.
+%TODO: A lot of this language is encoder-oriented.
+%TODO: We define a decoder-oriented specification.
+%TODO: The language should be changed to match.
+
+\cleardoublepage
+\chapter{VP3}
+
+\section{VP3 Compatibility}
+\label{app:vp3-compat}
+This section lists all of the encoder and decoder issues that may affect VP3
+ compatibly.
+Each is described in more detail in the text itself.
+This list is provided merely for reference.
+
+\begin{itemize}
+\item
+Bitstream headers (Section~\ref{sec:headers}).
+\begin{itemize}
+\item
+Identification header (Section~\ref{sec:idheader}).
+\begin{itemize}
+\item
+Non-multiple of 16 picture sizes.
+\item
+Standardized color spaces.
+\item
+Support for $4:4:4$ and $4:2:2$ pixel formats.
+\end{itemize}
+\item
+Setup header
+\begin{itemize}
+\item
+Loop filter limit values (Section~\ref{sub:loop-filter-limits}).
+\item
+Quantization parameters (Section~\ref{sub:quant-params}).
+\item
+Huffman tables (Section~\ref{sub:huffman-tables}).
+\end{itemize}
+\end{itemize}
+\item
+Frame header format (Section~\ref{sub:frame-header}).
+\item
+Extended long-run bit strings (Section~\ref{sub:long-run}).
+\item
+INTER\_MV\_FOUR handling of uncoded blocks (Section~\ref{sub:mb-mv-decode}).
+\item
+Block-level \qi\ values (Section~\ref{sub:block-qis}).
+\item
+Zero-length EOB runs (Section~\ref{sub:eob-token}).
+\item
+Unrestricted motion vector padding and the loop filter
+ (Section~\ref{sub:loop-filt}).
+\end{itemize}
+
+\section{Loop Filter Limit Values}
+\label{app:vp3-loop-filter-limits}
+
+The hard-coded loop filter limit values used in VP3 are defined as follows:
+\begin{align*}
+\bitvar{LFLIMS} = & \begin{array}[t]{r@{}rrrrrrrr@{}l}
+\{ & 30, & 25, & 20, & 20, & 15, & 15, & 14, & 14, & \\
+ & 13, & 13, & 12, & 12, & 11, & 11, & 10, & 10, & \\
+ & 9, & 9, & 8, & 8, & 7, & 7, & 7, & 7, & \\
+ & 6, & 6, & 6, & 6, & 5, & 5, & 5, & 5, & \\
+ & 4, & 4, & 4, & 4, & 3, & 3, & 3, & 3, & \\
+ & 2, & 2, & 2, & 2, & 2, & 2, & 2, & 2, & \\
+ & 0, & 0, & 0, & 0, & 0, & 0, & 0, & 0, & \\
+ & 0, & 0, & 0, & 0, & 0, & 0, & 0, & 0\;\ & \!\} \\
+\end{array}
+\end{align*}
+
+\section{Quantization Parameters}
+\label{app:vp3-quant-params}
+
+The hard-coded quantization parameters used by VP3 are defined as follows:
+
+\begin{align*}
+\bitvar{ACSCALE} = & \begin{array}[t]{r@{}rrrrrrrr@{}l}
+\{ & 500, & 450, & 400, & 370, & 340, & 310, & 285, & 265, & \\
+ & 245, & 225, & 210, & 195, & 185, & 180, & 170, & 160, & \\
+ & 150, & 145, & 135, & 130, & 125, & 115, & 110, & 107, & \\
+ & 100, & 96, & 93, & 89, & 85, & 82, & 75, & 74, & \\
+ & 70, & 68, & 64, & 60, & 57, & 56, & 52, & 50, & \\
+ & 49, & 45, & 44, & 43, & 40, & 38, & 37, & 35, & \\
+ & 33, & 32, & 30, & 29, & 28, & 25, & 24, & 22, & \\
+ & 21, & 19, & 18, & 17, & 15, & 13, & 12, & 10\;\ & \!\} \\
+\end{array} \\
+\bitvar{DCSCALE} = & \begin{array}[t]{r@{}rrrrrrrr@{}l}
+\{ & 220, & 200, & 190, & 180, & 170, & 170, & 160, & 160, & \\
+ & 150, & 150, & 140, & 140, & 130, & 130, & 120, & 120, & \\
+ & 110, & 110, & 100, & 100, & 90, & 90, & 90, & 80, & \\
+ & 80, & 80, & 70, & 70, & 70, & 60, & 60, & 60, & \\
+ & 60, & 50, & 50, & 50, & 50, & 40, & 40, & 40, & \\
+ & 40, & 40, & 30, & 30, & 30, & 30, & 30, & 30, & \\
+ & 30, & 20, & 20, & 20, & 20, & 20, & 20, & 20, & \\
+ & 20, & 10, & 10, & 10, & 10, & 10, & 10, & 10\;\ & \!\} \\
+\end{array}
+\end{align*}
+
+VP3 defines only a single quantization range for each quantization type and
+ color plane, and the base matrix used is constant throughout the range.
+There are three base matrices defined.
+The first is used for the $Y'$ channel of INTRA mode blocks, and the second for
+ both the $C_b$ and $C_r$ channels of INTRA mode blocks.
+The last is used for INTER mode blocks of all channels.
+
+\begin{align*}
+\bitvar{BMS} = \{ & \begin{array}[t]{r@{}rrrrrrrr@{}l}
+\{ & 16, & 11, & 10, & 16, & 24, & 40, & 51, & 61, & \\
+ & 12, & 12, & 14, & 19, & 26, & 58, & 60, & 55, & \\
+ & 14, & 13, & 16, & 24, & 40, & 57, & 69, & 56, & \\
+ & 14, & 17, & 22, & 29, & 51, & 87, & 80, & 62, & \\
+ & 18, & 22, & 37, & 58, & 68, & 109, & 103, & 77, & \\
+ & 24, & 35, & 55, & 64, & 81, & 104, & 113, & 92, & \\
+ & 49, & 64, & 78, & 87, & 103, & 121, & 120, & 101, & \\
+ & 72, & 92, & 95, & 98, & 112, & 100, & 103, & 99\;\ & \!\}, \\
+%\end{array} \\
+%& \begin{array}[t]{r@{}rrrrrrrr@{}l}
+\{ & 17, & 18, & 24, & 47, & 99, & 99, & 99, & 99, & \\
+ & 18, & 21, & 26, & 66, & 99, & 99, & 99, & 99, & \\
+ & 24, & 26, & 56, & 99, & 99, & 99, & 99, & 99, & \\
+ & 47, & 66, & 99, & 99, & 99, & 99, & 99, & 99, & \\
+ & 99, & 99, & 99, & 99, & 99, & 99, & 99, & 99, & \\
+ & 99, & 99, & 99, & 99, & 99, & 99, & 99, & 99, & \\
+ & 99, & 99, & 99, & 99, & 99, & 99, & 99, & 99, & \\
+ & 99, & 99, & 99, & 99, & 99, & 99, & 99, & 99\;\ & \!\}, \\
+%\end{array} \\
+%& \begin{array}[t]{r@{}rrrrrrrr@{}l}
+\{ & 16, & 16, & 16, & 20, & 24, & 28, & 32, & 40, & \\
+ & 16, & 16, & 20, & 24, & 28, & 32, & 40, & 48, & \\
+ & 16, & 20, & 24, & 28, & 32, & 40, & 48, & 64, & \\
+ & 20, & 24, & 28, & 32, & 40, & 48, & 64, & 64, & \\
+ & 24, & 28, & 32, & 40, & 48, & 64, & 64, & 64, & \\
+ & 28, & 32, & 40, & 48, & 64, & 64, & 64, & 96, & \\
+ & 32, & 40, & 48, & 64, & 64, & 64, & 96, & 128, & \\
+ & 40, & 48, & 64, & 64, & 64, & 96, & 128, & 128\;\ & \!\}\;\;\} \\
+\end{array}
+\end{align*}
+
+The remaining parameters simply assign these matrices to the proper quant
+ ranges.
+
+\begin{align*}
+\bitvar{NQRS} = & \{ \{1, 1, 1\}, \{1, 1, 1\} \} \\
+\bitvar{QRSIZES} = &
+ \{ \{ \{1\}, \{1\}, \{1\} \}, \{ \{1\}, \{1\}, \{1\} \} \} \\
+\bitvar{QRBMIS} = &
+ \{ \{ \{0, 0\}, \{1, 1\}, \{1, 1\} \}, \{ \{2, 2\}, \{2, 2\}, \{2, 2\} \} \} \\
+\end{align*}
+
+\section{Huffman Tables}
+\label{app:vp3-huffman-tables}
+
+The following tables contain the hard-coded Huffman codes used by VP3.
+There are 80 tables in all, each with a Huffman code for all 32 token values.
+The tokens are sorted by the most significant bits of their Huffman code.
+This is the same order in which they will be decoded from the setup header.
+
+\include{vp3huff}
+
+\cleardoublepage
+\chapter{Colophon}
+
+Ogg is a \href{http://www.xiph.org}{Xiph.org Foundation} effort to protect
+ essential tenets of Internet multimedia from corporate hostage-taking; Open
+ Source is the net's greatest tool to keep everyone honest.
+See \href{http://www.xiph.org/about.html}{About the Xiph.org Foundation} for
+ details.
+
+Ogg Theora is the first Ogg video codec.
+Anyone may freely use and distribute the Ogg and Theora specifications, whether
+ in private, public, or corporate capacity.
+However, the Xiph.org Foundation and the Ogg project reserve the right to set
+ the Ogg Theora specification and certify specification compliance.
+
+Xiph.org's Theora software codec implementation is distributed under a BSD-like
+ license.
+This does not restrict third parties from distributing independent
+ implementations of Theora software under other licenses.
+
+\begin{wrapfigure}{l}{0pt}
+\includegraphics[width=2.5cm]{xifish}
+\end{wrapfigure}
+
+These pages are Copyright \textcopyright{} 2004-2007 Xiph.org Foundation.
+All rights reserved.
+Ogg, Theora, Vorbis, Xiph.org Foundation and their logos are trademarks
+ (\texttrademark) of the \href{http://www.xiph.org}{Xiph.org Foundation}.
+
+This document is set in \LaTeX.
+
+
+
+\cleardoublepage
+\bibliography{spec}
+
+\end{document}
diff --git a/doc/spec/superblock.fig b/doc/spec/superblock.fig
new file mode 100644
index 0000000..082c31f
--- /dev/null
+++ b/doc/spec/superblock.fig
@@ -0,0 +1,72 @@
+#FIG 3.2 Produced by xfig version 3.2.5-alpha4
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+6 270 180 5905 4860
+6 387 3531 1542 4687
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 387 4687 675 4687 675 4397 387 4397 387 4687
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 675 4687 963 4687 963 4397 675 4397 675 4687
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 963 4687 1252 4687 1252 4397 963 4397 963 4687
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1252 4397 1542 4397 1542 4109 1252 4109 1252 4397
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 387 4397 675 4397 675 4109 387 4109 387 4397
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 387 4109 675 4109 675 3820 387 3820 387 4109
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 963 4109 1252 4109 1252 3820 963 3820 963 4109
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1252 4109 1542 4109 1542 3820 1252 3820 1252 4109
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1252 3820 1542 3820 1542 3531 1252 3531 1252 3820
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 675 3820 963 3820 963 3531 675 3531 675 3820
+-6
+6 387 3531 1542 4687
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1252 4687 1542 4687 1542 4397 1252 4397 1252 4687
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 963 4397 1252 4397 1252 4109 963 4109 963 4397
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 963 3820 1252 3820 1252 3531 963 3531 963 3820
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 387 3820 675 3820 675 3531 387 3531 387 3820
+-6
+6 357 3502 1570 4715
+6 675 3820 963 4397
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 675 4397 963 4397 963 4109 675 4109 675 4397
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 675 4109 963 4109 963 3820 675 3820 675 4109
+-6
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 387 3531 1542 3531 1542 4687 387 4687 387 3531
+-6
+2 2 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 5
+ 387 353 5876 353 5876 4687 387 4687 387 353
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1542 3531 2697 3531 2697 4687 1542 4687 1542 3531
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 2697 3531 3854 3531 3854 4687 2697 4687 2697 3531
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 387 2375 1542 2375 1542 3531 387 3531 387 2375
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1542 2375 2697 2375 2697 3531 1542 3531 1542 2375
+2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 387 1220 1542 1220 1542 2375 387 2375 387 1220
+4 0 0 50 -1 0 7 0.0000 4 125 270 270 4831 (0,0)\001
+4 0 0 50 -1 0 7 0.0000 4 96 367 473 297 Frame\001
+4 0 0 50 -1 0 7 0.0000 4 125 1002 501 3474 Super Block (4x4)\001
+4 0 0 50 -1 0 7 0.0000 4 96 203 415 4657 8x8\001
+4 0 0 50 -1 0 7 0.0000 4 96 318 357 4513 Block\001
+4 0 0 50 -1 0 13 0.0000 4 20 145 4085 4081 ...\001
+4 0 0 50 -1 0 13 4.7124 4 20 145 848 815 ...\001
+-6
diff --git a/doc/spec/vp3huff.c b/doc/spec/vp3huff.c
new file mode 100644
index 0000000..b425205
--- /dev/null
+++ b/doc/spec/vp3huff.c
@@ -0,0 +1,918 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2007 *
+ * by the Xiph.Org Foundation http://www.xiph.org/ *
+ * *
+ ********************************************************************
+ function: dump the VP3.1 huffman tables in a form suitable for
+ inclusion in the spec.
+ last mod: $Id: vp3huff.c 14078 2007-10-31 21:24:44Z giles $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+
+
+typedef struct{
+ unsigned long pattern;
+ int nbits;
+}theora_huff_code;
+
+
+
+/*The default Huffman codes used for VP3.1.
+ These tables were generated by /experimental/derf/theora-exp/tools/huffgen.c
+ using the same algorithm and sampled frequency counts used by VP3.*/
+const theora_huff_code TH_VP31_HUFF_CODES[80][32]={
+ {
+ {0x002D, 6},{0x0026, 7},{0x0166, 9},{0x004E, 8},
+ {0x02CE,10},{0x059E,11},{0x027D,11},{0x0008, 5},
+ {0x04F9,12},{0x000F, 4},{0x000E, 4},{0x001B, 5},
+ {0x0006, 4},{0x0008, 4},{0x0005, 4},{0x001A, 5},
+ {0x0015, 5},{0x0007, 4},{0x000C, 4},{0x0001, 3},
+ {0x0000, 3},{0x0009, 4},{0x0017, 5},{0x0029, 6},
+ {0x0028, 6},{0x00B2, 8},{0x04F8,12},{0x059F,11},
+ {0x009E, 9},{0x013F,10},{0x0012, 6},{0x0058, 7}
+ },
+ {
+ {0x0010, 5},{0x0047, 7},{0x01FF, 9},{0x008C, 8},
+ {0x03FC,10},{0x046A,11},{0x0469,11},{0x0022, 6},
+ {0x11A1,13},{0x000E, 4},{0x000D, 4},{0x0004, 4},
+ {0x0005, 4},{0x0009, 4},{0x0006, 4},{0x001E, 5},
+ {0x0016, 5},{0x0007, 4},{0x000C, 4},{0x0001, 3},
+ {0x0000, 3},{0x000A, 4},{0x0017, 5},{0x007D, 7},
+ {0x007E, 7},{0x011B, 9},{0x08D1,12},{0x03FD,10},
+ {0x046B,11},{0x11A0,13},{0x007C, 7},{0x00FE, 8}
+ },
+ {
+ {0x0016, 5},{0x0020, 6},{0x0086, 8},{0x0087, 8},
+ {0x0367,10},{0x06CC,11},{0x06CB,11},{0x006E, 7},
+ {0x366D,14},{0x000F, 4},{0x000E, 4},{0x0004, 4},
+ {0x0005, 4},{0x000A, 4},{0x0006, 4},{0x001A, 5},
+ {0x0011, 5},{0x0007, 4},{0x000C, 4},{0x0001, 3},
+ {0x0000, 3},{0x0009, 4},{0x0017, 5},{0x006F, 7},
+ {0x006D, 7},{0x0364,10},{0x0D9A,12},{0x06CA,11},
+ {0x1B37,13},{0x366C,14},{0x0042, 7},{0x00D8, 8}
+ },
+ {
+ {0x0000, 4},{0x002D, 6},{0x00F7, 8},{0x0058, 7},
+ {0x0167, 9},{0x02CB,10},{0x02CA,10},{0x000E, 6},
+ {0x1661,13},{0x0003, 3},{0x0002, 3},{0x0008, 4},
+ {0x0009, 4},{0x000D, 4},{0x0002, 4},{0x001F, 5},
+ {0x0017, 5},{0x0001, 4},{0x000C, 4},{0x000E, 4},
+ {0x000A, 4},{0x0006, 5},{0x0078, 7},{0x000F, 6},
+ {0x007A, 7},{0x0164, 9},{0x0599,11},{0x02CD,10},
+ {0x0B31,12},{0x1660,13},{0x0079, 7},{0x00F6, 8}
+ },
+ {
+ {0x0003, 4},{0x003C, 6},{0x000F, 7},{0x007A, 7},
+ {0x001D, 8},{0x0020, 9},{0x0072,10},{0x0006, 6},
+ {0x0399,13},{0x0004, 3},{0x0005, 3},{0x0005, 4},
+ {0x0006, 4},{0x000E, 4},{0x0004, 4},{0x0000, 4},
+ {0x0019, 5},{0x0002, 4},{0x000D, 4},{0x0007, 4},
+ {0x001F, 5},{0x0030, 6},{0x0011, 8},{0x0031, 6},
+ {0x0005, 6},{0x0021, 9},{0x00E7,11},{0x0038, 9},
+ {0x01CD,12},{0x0398,13},{0x007B, 7},{0x0009, 7}
+ },
+ {
+ {0x0009, 4},{0x0002, 5},{0x0074, 7},{0x0007, 6},
+ {0x00EC, 8},{0x00D1, 9},{0x01A6,10},{0x0006, 6},
+ {0x0D21,13},{0x0005, 3},{0x0006, 3},{0x0008, 4},
+ {0x0007, 4},{0x000F, 4},{0x0004, 4},{0x0000, 4},
+ {0x001C, 5},{0x0002, 4},{0x0005, 4},{0x0003, 4},
+ {0x000C, 5},{0x0035, 7},{0x01A7,10},{0x001B, 6},
+ {0x0077, 7},{0x01A5,10},{0x0349,11},{0x00D0, 9},
+ {0x0691,12},{0x0D20,13},{0x0075, 7},{0x00ED, 8}
+ },
+ {
+ {0x000A, 4},{0x000C, 5},{0x0012, 6},{0x001B, 6},
+ {0x00B7, 8},{0x016C, 9},{0x0099, 9},{0x005A, 7},
+ {0x16D8,13},{0x0007, 3},{0x0006, 3},{0x0009, 4},
+ {0x0008, 4},{0x0000, 3},{0x0005, 4},{0x0017, 5},
+ {0x000E, 5},{0x0002, 4},{0x0003, 4},{0x000F, 5},
+ {0x001A, 6},{0x004D, 8},{0x2DB3,14},{0x002C, 6},
+ {0x0011, 6},{0x02DA,10},{0x05B7,11},{0x0098, 9},
+ {0x0B6D,12},{0x2DB2,14},{0x0010, 6},{0x0027, 7}
+ },
+ {
+ {0x000D, 4},{0x000F, 5},{0x001D, 6},{0x0008, 5},
+ {0x0051, 7},{0x0056, 8},{0x00AF, 9},{0x002A, 7},
+ {0x148A,13},{0x0007, 3},{0x0000, 2},{0x0008, 4},
+ {0x0009, 4},{0x000C, 4},{0x0006, 4},{0x0017, 5},
+ {0x000B, 5},{0x0016, 5},{0x0015, 5},{0x0009, 5},
+ {0x0050, 7},{0x00AE, 9},{0x2917,14},{0x001C, 6},
+ {0x0014, 6},{0x0290,10},{0x0523,11},{0x0149, 9},
+ {0x0A44,12},{0x2916,14},{0x0053, 7},{0x00A5, 8}
+ },
+ {
+ {0x0001, 4},{0x001D, 6},{0x00F5, 8},{0x00F4, 8},
+ {0x024D,10},{0x0499,11},{0x0498,11},{0x0001, 5},
+ {0x0021, 6},{0x0006, 3},{0x0005, 3},{0x0006, 4},
+ {0x0005, 4},{0x0002, 4},{0x0007, 5},{0x0025, 6},
+ {0x007B, 7},{0x001C, 6},{0x0020, 6},{0x000D, 6},
+ {0x0048, 7},{0x0092, 8},{0x0127, 9},{0x000E, 4},
+ {0x0004, 4},{0x0011, 5},{0x000C, 6},{0x003C, 6},
+ {0x000F, 5},{0x0000, 5},{0x001F, 5},{0x0013, 5}
+ },
+ {
+ {0x0005, 4},{0x003C, 6},{0x0040, 7},{0x000D, 7},
+ {0x0031, 9},{0x0061,10},{0x0060,10},{0x0002, 5},
+ {0x00F5, 8},{0x0006, 3},{0x0005, 3},{0x0007, 4},
+ {0x0006, 4},{0x0002, 4},{0x0009, 5},{0x0025, 6},
+ {0x0007, 6},{0x0021, 6},{0x0024, 6},{0x0010, 6},
+ {0x0041, 7},{0x00F4, 8},{0x0019, 8},{0x000E, 4},
+ {0x0003, 4},{0x0011, 5},{0x0011, 6},{0x003F, 6},
+ {0x003E, 6},{0x007B, 7},{0x0000, 4},{0x0013, 5}
+ },
+ {
+ {0x000A, 4},{0x0007, 5},{0x0001, 6},{0x0009, 6},
+ {0x0131, 9},{0x0261,10},{0x0260,10},{0x0015, 6},
+ {0x0001, 7},{0x0007, 3},{0x0006, 3},{0x0008, 4},
+ {0x0007, 4},{0x0006, 4},{0x0012, 5},{0x002F, 6},
+ {0x0014, 6},{0x0027, 6},{0x002D, 6},{0x0016, 6},
+ {0x004D, 7},{0x0099, 8},{0x0000, 7},{0x0004, 4},
+ {0x0001, 4},{0x0005, 5},{0x0017, 6},{0x002E, 6},
+ {0x002C, 6},{0x0008, 6},{0x0006, 5},{0x0001, 5}
+ },
+ {
+ {0x0000, 3},{0x000E, 5},{0x0017, 6},{0x002A, 6},
+ {0x0010, 7},{0x00F9,10},{0x00F8,10},{0x001E, 7},
+ {0x003F, 8},{0x0007, 3},{0x0006, 3},{0x0009, 4},
+ {0x0008, 4},{0x0006, 4},{0x000F, 5},{0x0005, 5},
+ {0x0016, 6},{0x0029, 6},{0x002B, 6},{0x0015, 6},
+ {0x0050, 7},{0x0011, 7},{0x007D, 9},{0x0004, 4},
+ {0x0017, 5},{0x0006, 5},{0x0014, 6},{0x002C, 6},
+ {0x002D, 6},{0x000E, 6},{0x0009, 6},{0x0051, 7}
+ },
+ {
+ {0x0002, 3},{0x0018, 5},{0x002F, 6},{0x000D, 5},
+ {0x0053, 7},{0x0295,10},{0x0294,10},{0x00A4, 8},
+ {0x007C, 8},{0x0000, 2},{0x0007, 3},{0x0009, 4},
+ {0x0008, 4},{0x001B, 5},{0x000C, 5},{0x0028, 6},
+ {0x006A, 7},{0x001E, 6},{0x001D, 6},{0x0069, 7},
+ {0x00D7, 8},{0x007D, 8},{0x014B, 9},{0x0019, 5},
+ {0x0016, 5},{0x002E, 6},{0x001C, 6},{0x002B, 6},
+ {0x002A, 6},{0x0068, 7},{0x003F, 7},{0x00D6, 8}
+ },
+ {
+ {0x0002, 3},{0x001B, 5},{0x000C, 5},{0x0018, 5},
+ {0x0029, 6},{0x007F, 8},{0x02F0,10},{0x0198, 9},
+ {0x0179, 9},{0x0000, 2},{0x0007, 3},{0x0009, 4},
+ {0x0008, 4},{0x001A, 5},{0x000D, 5},{0x002A, 6},
+ {0x0064, 7},{0x001E, 6},{0x0067, 7},{0x005F, 7},
+ {0x00CD, 8},{0x007E, 8},{0x02F1,10},{0x0016, 5},
+ {0x000E, 5},{0x002E, 6},{0x0065, 7},{0x002B, 6},
+ {0x0028, 6},{0x003E, 7},{0x00BD, 8},{0x0199, 9}
+ },
+ {
+ {0x0002, 3},{0x0007, 4},{0x0016, 5},{0x0006, 4},
+ {0x0036, 6},{0x005C, 7},{0x015D, 9},{0x015C, 9},
+ {0x02BF,10},{0x0000, 2},{0x0007, 3},{0x0009, 4},
+ {0x0008, 4},{0x0018, 5},{0x0034, 6},{0x002A, 6},
+ {0x005E, 7},{0x006A, 7},{0x0064, 7},{0x005D, 7},
+ {0x00CB, 8},{0x00AD, 8},{0x02BE,10},{0x0014, 5},
+ {0x0033, 6},{0x006E, 7},{0x005F, 7},{0x006F, 7},
+ {0x006B, 7},{0x00CA, 8},{0x00AC, 8},{0x015E, 9}
+ },
+ {
+ {0x000F, 4},{0x001D, 5},{0x0018, 5},{0x000B, 4},
+ {0x0019, 5},{0x0029, 6},{0x00D6, 8},{0x0551,11},
+ {0x0AA1,12},{0x0001, 2},{0x0000, 2},{0x0009, 4},
+ {0x0008, 4},{0x001B, 5},{0x0038, 6},{0x0028, 6},
+ {0x0057, 7},{0x006A, 7},{0x0068, 7},{0x0056, 7},
+ {0x00E5, 8},{0x0155, 9},{0x0AA0,12},{0x0073, 7},
+ {0x0069, 7},{0x00D7, 8},{0x00AB, 8},{0x00E4, 8},
+ {0x00A9, 8},{0x0151, 9},{0x0150, 9},{0x02A9,10}
+ },
+ {
+ {0x0008, 5},{0x0025, 7},{0x017A, 9},{0x02F7,10},
+ {0x0BDB,12},{0x17B4,13},{0x2F6B,14},{0x001D, 5},
+ {0x2F6A,14},{0x0008, 4},{0x0007, 4},{0x0001, 4},
+ {0x0002, 4},{0x000A, 4},{0x0006, 4},{0x0000, 4},
+ {0x001C, 5},{0x0009, 4},{0x000D, 4},{0x000F, 4},
+ {0x000C, 4},{0x0003, 4},{0x000A, 5},{0x0016, 5},
+ {0x0013, 6},{0x005D, 7},{0x0024, 7},{0x00BC, 8},
+ {0x005C, 7},{0x05EC,11},{0x000B, 5},{0x005F, 7}
+ },
+ {
+ {0x000F, 5},{0x0010, 6},{0x004B, 8},{0x00C6, 8},
+ {0x031D,10},{0x0C71,12},{0x0C70,12},{0x0001, 4},
+ {0x0C73,12},{0x0008, 4},{0x0009, 4},{0x0002, 4},
+ {0x0003, 4},{0x000B, 4},{0x0006, 4},{0x0000, 4},
+ {0x001C, 5},{0x0005, 4},{0x000D, 4},{0x000F, 4},
+ {0x000A, 4},{0x0019, 5},{0x0013, 6},{0x001D, 5},
+ {0x0030, 6},{0x0062, 7},{0x0024, 7},{0x004A, 8},
+ {0x018F, 9},{0x0C72,12},{0x000E, 5},{0x0011, 6}
+ },
+ {
+ {0x001B, 5},{0x0003, 6},{0x008D, 8},{0x0040, 7},
+ {0x0239,10},{0x0471,11},{0x08E0,12},{0x0003, 4},
+ {0x11C3,13},{0x000A, 4},{0x0009, 4},{0x0004, 4},
+ {0x0005, 4},{0x000E, 4},{0x0007, 4},{0x0001, 4},
+ {0x001E, 5},{0x0006, 4},{0x000C, 4},{0x000B, 4},
+ {0x0002, 4},{0x0000, 5},{0x0041, 7},{0x001F, 5},
+ {0x0022, 6},{0x0002, 6},{0x008F, 8},{0x008C, 8},
+ {0x011D, 9},{0x11C2,13},{0x001A, 5},{0x0021, 6}
+ },
+ {
+ {0x001F, 5},{0x0003, 6},{0x0003, 7},{0x0043, 7},
+ {0x000B, 9},{0x0015,10},{0x0051,12},{0x0003, 4},
+ {0x0050,12},{0x000D, 4},{0x000C, 4},{0x0004, 4},
+ {0x0006, 4},{0x000E, 4},{0x000A, 4},{0x0001, 4},
+ {0x001E, 5},{0x0005, 4},{0x0009, 4},{0x0007, 4},
+ {0x0011, 5},{0x0002, 6},{0x0004, 8},{0x0002, 4},
+ {0x002D, 6},{0x0020, 6},{0x0042, 7},{0x0001, 7},
+ {0x0000, 7},{0x0029,11},{0x0017, 5},{0x002C, 6}
+ },
+ {
+ {0x0003, 4},{0x001F, 6},{0x003A, 7},{0x005D, 7},
+ {0x0173, 9},{0x02E4,10},{0x172D,13},{0x0004, 4},
+ {0x172C,13},{0x000F, 4},{0x000E, 4},{0x0009, 4},
+ {0x0008, 4},{0x000C, 4},{0x000A, 4},{0x0001, 4},
+ {0x0016, 5},{0x0002, 4},{0x0005, 4},{0x001A, 5},
+ {0x002F, 6},{0x0038, 7},{0x05CA,11},{0x0006, 4},
+ {0x0037, 6},{0x001E, 6},{0x003B, 7},{0x0039, 7},
+ {0x00B8, 8},{0x0B97,12},{0x0000, 4},{0x0036, 6}
+ },
+ {
+ {0x0006, 4},{0x0037, 6},{0x005D, 7},{0x000C, 6},
+ {0x00B9, 8},{0x02E3,10},{0x05C4,11},{0x0004, 4},
+ {0x1715,13},{0x0000, 3},{0x000F, 4},{0x0008, 4},
+ {0x0007, 4},{0x000C, 4},{0x0009, 4},{0x001D, 5},
+ {0x0016, 5},{0x001C, 5},{0x001A, 5},{0x000B, 5},
+ {0x005E, 7},{0x0170, 9},{0x1714,13},{0x000A, 4},
+ {0x000A, 5},{0x0036, 6},{0x005F, 7},{0x001B, 7},
+ {0x001A, 7},{0x0B8B,12},{0x0002, 4},{0x0007, 5}
+ },
+ {
+ {0x000C, 4},{0x000B, 5},{0x0079, 7},{0x0022, 6},
+ {0x00F0, 8},{0x0119, 9},{0x0230,10},{0x001D, 5},
+ {0x08C4,12},{0x0001, 3},{0x0000, 3},{0x000A, 4},
+ {0x0009, 4},{0x000B, 4},{0x0007, 4},{0x001C, 5},
+ {0x003D, 6},{0x000D, 5},{0x0008, 5},{0x0015, 6},
+ {0x008D, 8},{0x118B,13},{0x118A,13},{0x000D, 4},
+ {0x0010, 5},{0x0009, 5},{0x0014, 6},{0x0047, 7},
+ {0x00F1, 8},{0x0463,11},{0x001F, 5},{0x000C, 5}
+ },
+ {
+ {0x0000, 3},{0x001A, 5},{0x0033, 6},{0x000C, 5},
+ {0x0046, 7},{0x01E3, 9},{0x03C5,10},{0x0017, 5},
+ {0x1E21,13},{0x0002, 3},{0x0001, 3},{0x0009, 4},
+ {0x000A, 4},{0x0007, 4},{0x001B, 5},{0x003D, 6},
+ {0x001B, 6},{0x0022, 6},{0x0079, 7},{0x00F0, 8},
+ {0x1E20,13},{0x1E23,13},{0x1E22,13},{0x000E, 4},
+ {0x0016, 5},{0x0018, 5},{0x0032, 6},{0x001A, 6},
+ {0x0047, 7},{0x0789,11},{0x001F, 5},{0x0010, 5}
+ },
+ {
+ {0x001D, 5},{0x0061, 7},{0x004E, 8},{0x009E, 9},
+ {0x027C,11},{0x09F5,13},{0x09F4,13},{0x0003, 4},
+ {0x0060, 7},{0x0000, 3},{0x000F, 4},{0x000B, 4},
+ {0x000A, 4},{0x0009, 4},{0x0005, 4},{0x000D, 5},
+ {0x0031, 6},{0x0008, 5},{0x0038, 6},{0x0012, 6},
+ {0x0026, 7},{0x013F,10},{0x04FB,12},{0x000D, 4},
+ {0x0002, 4},{0x000C, 5},{0x0039, 6},{0x001C, 6},
+ {0x000F, 5},{0x001D, 6},{0x0008, 4},{0x0019, 5}
+ },
+ {
+ {0x0007, 4},{0x0019, 6},{0x00AB, 8},{0x00AA, 8},
+ {0x0119,10},{0x0461,12},{0x0460,12},{0x001B, 5},
+ {0x0047, 8},{0x0001, 3},{0x0000, 3},{0x000C, 4},
+ {0x000B, 4},{0x0009, 4},{0x0005, 4},{0x000D, 5},
+ {0x0035, 6},{0x003D, 6},{0x003C, 6},{0x0018, 6},
+ {0x0022, 7},{0x008D, 9},{0x0231,11},{0x000E, 4},
+ {0x001F, 5},{0x0009, 5},{0x002B, 6},{0x0010, 6},
+ {0x0034, 6},{0x0054, 7},{0x0008, 4},{0x0014, 5}
+ },
+ {
+ {0x000C, 4},{0x0005, 5},{0x0008, 6},{0x005B, 7},
+ {0x004D, 9},{0x0131,11},{0x0261,12},{0x001A, 5},
+ {0x0012, 7},{0x0000, 3},{0x000F, 4},{0x000A, 4},
+ {0x0009, 4},{0x0006, 4},{0x001B, 5},{0x0006, 5},
+ {0x001C, 6},{0x002C, 6},{0x0015, 6},{0x005A, 7},
+ {0x0027, 8},{0x0099,10},{0x0260,12},{0x000E, 4},
+ {0x0004, 4},{0x000F, 5},{0x0007, 5},{0x001D, 6},
+ {0x000B, 5},{0x0014, 6},{0x0008, 4},{0x0017, 5}
+ },
+ {
+ {0x000F, 4},{0x0013, 5},{0x0075, 7},{0x0024, 6},
+ {0x0095, 8},{0x0251,10},{0x04A0,11},{0x0010, 5},
+ {0x00C8, 8},{0x0002, 3},{0x0001, 3},{0x0001, 4},
+ {0x0000, 4},{0x001A, 5},{0x0011, 5},{0x002C, 6},
+ {0x0065, 7},{0x0074, 7},{0x004B, 7},{0x00C9, 8},
+ {0x0129, 9},{0x0943,12},{0x0942,12},{0x0003, 3},
+ {0x000A, 4},{0x001C, 5},{0x0018, 5},{0x0033, 6},
+ {0x0017, 5},{0x002D, 6},{0x001B, 5},{0x003B, 6}
+ },
+ {
+ {0x0003, 3},{0x001A, 5},{0x002D, 6},{0x0038, 6},
+ {0x0028, 7},{0x0395,10},{0x0E51,12},{0x0037, 6},
+ {0x00E4, 8},{0x0001, 3},{0x0000, 3},{0x001F, 5},
+ {0x001E, 5},{0x0017, 5},{0x003A, 6},{0x0073, 7},
+ {0x002A, 7},{0x002B, 7},{0x0029, 7},{0x01CB, 9},
+ {0x0729,11},{0x1CA1,13},{0x1CA0,13},{0x0004, 3},
+ {0x000A, 4},{0x0004, 4},{0x0018, 5},{0x0036, 6},
+ {0x000B, 5},{0x002C, 6},{0x0019, 5},{0x003B, 6}
+ },
+ {
+ {0x0004, 3},{0x0004, 4},{0x003F, 6},{0x0017, 5},
+ {0x0075, 7},{0x01F5, 9},{0x07D1,11},{0x0017, 6},
+ {0x01F6, 9},{0x0001, 3},{0x0000, 3},{0x001B, 5},
+ {0x001A, 5},{0x000A, 5},{0x0032, 6},{0x0074, 7},
+ {0x00F8, 8},{0x00F9, 8},{0x01F7, 9},{0x03E9,10},
+ {0x0FA0,12},{0x1F43,13},{0x1F42,13},{0x0003, 3},
+ {0x000A, 4},{0x001E, 5},{0x001C, 5},{0x003B, 6},
+ {0x0018, 5},{0x0016, 6},{0x0016, 5},{0x0033, 6}
+ },
+ {
+ {0x0004, 3},{0x0007, 4},{0x0018, 5},{0x001E, 5},
+ {0x0036, 6},{0x0031, 7},{0x0177, 9},{0x0077, 7},
+ {0x0176, 9},{0x0001, 3},{0x0000, 3},{0x001A, 5},
+ {0x0019, 5},{0x003A, 6},{0x0019, 6},{0x005C, 7},
+ {0x00BA, 8},{0x0061, 8},{0x00C1, 9},{0x0180,10},
+ {0x0302,11},{0x0607,12},{0x0606,12},{0x0002, 3},
+ {0x000A, 4},{0x001F, 5},{0x001C, 5},{0x0037, 6},
+ {0x0016, 5},{0x0076, 7},{0x000D, 5},{0x002F, 6}
+ },
+ {
+ {0x0000, 3},{0x000A, 4},{0x001A, 5},{0x000C, 4},
+ {0x001D, 5},{0x0039, 6},{0x0078, 7},{0x005E, 7},
+ {0x0393,11},{0x0002, 3},{0x0001, 3},{0x0016, 5},
+ {0x000F, 5},{0x002E, 6},{0x005F, 7},{0x0073, 8},
+ {0x00E5, 9},{0x01C8,10},{0x0E4A,13},{0x1C97,14},
+ {0x1C96,14},{0x0E49,13},{0x0E48,13},{0x0004, 3},
+ {0x0006, 4},{0x001F, 5},{0x001B, 5},{0x001D, 6},
+ {0x0038, 6},{0x0038, 7},{0x003D, 6},{0x0079, 7}
+ },
+ {
+ {0x000B, 5},{0x002B, 7},{0x0054, 8},{0x01B7, 9},
+ {0x06D9,11},{0x0DB1,12},{0x0DB0,12},{0x0002, 4},
+ {0x00AB, 9},{0x0009, 4},{0x000A, 4},{0x0007, 4},
+ {0x0008, 4},{0x000F, 4},{0x000C, 4},{0x0003, 4},
+ {0x001D, 5},{0x0004, 4},{0x000B, 4},{0x0006, 4},
+ {0x001A, 5},{0x0003, 6},{0x00AA, 9},{0x0001, 4},
+ {0x0000, 5},{0x0014, 6},{0x006C, 7},{0x00DA, 8},
+ {0x0002, 6},{0x036D,10},{0x001C, 5},{0x0037, 6}
+ },
+ {
+ {0x001D, 5},{0x0004, 6},{0x00B6, 8},{0x006A, 8},
+ {0x05B9,11},{0x16E1,13},{0x16E0,13},{0x0007, 4},
+ {0x016F, 9},{0x000C, 4},{0x000D, 4},{0x0009, 4},
+ {0x0008, 4},{0x000F, 4},{0x000A, 4},{0x0003, 4},
+ {0x0017, 5},{0x0002, 4},{0x0004, 4},{0x001C, 5},
+ {0x002C, 6},{0x006B, 8},{0x0B71,12},{0x0005, 4},
+ {0x0003, 5},{0x001B, 6},{0x005A, 7},{0x0034, 7},
+ {0x0005, 6},{0x02DD,10},{0x0000, 4},{0x000C, 5}
+ },
+ {
+ {0x0003, 4},{0x007F, 7},{0x00A1, 8},{0x00A0, 8},
+ {0x020C,10},{0x0834,12},{0x106B,13},{0x0007, 4},
+ {0x0082, 8},{0x000E, 4},{0x000D, 4},{0x000B, 4},
+ {0x000C, 4},{0x0000, 3},{0x0009, 4},{0x0002, 4},
+ {0x0011, 5},{0x001E, 5},{0x0015, 5},{0x003E, 6},
+ {0x0040, 7},{0x041B,11},{0x106A,13},{0x0006, 4},
+ {0x000A, 5},{0x0029, 6},{0x007E, 7},{0x0051, 7},
+ {0x0021, 6},{0x0107, 9},{0x0004, 4},{0x000B, 5}
+ },
+ {
+ {0x0007, 4},{0x001B, 6},{0x00F6, 8},{0x00E9, 8},
+ {0x03A1,10},{0x0740,11},{0x0E82,12},{0x001F, 5},
+ {0x01EF, 9},{0x0001, 3},{0x0002, 3},{0x000B, 4},
+ {0x000C, 4},{0x000D, 4},{0x0008, 4},{0x001C, 5},
+ {0x0003, 5},{0x0012, 5},{0x0002, 5},{0x0075, 7},
+ {0x01D1, 9},{0x1D07,13},{0x1D06,13},{0x000A, 4},
+ {0x0013, 5},{0x003B, 6},{0x001A, 6},{0x007A, 7},
+ {0x003C, 6},{0x01EE, 9},{0x0000, 4},{0x000C, 5}
+ },
+ {
+ {0x000D, 4},{0x003D, 6},{0x0042, 7},{0x0037, 7},
+ {0x00D9, 9},{0x0362,11},{0x06C6,12},{0x001F, 5},
+ {0x0086, 8},{0x0001, 3},{0x0002, 3},{0x000C, 4},
+ {0x000B, 4},{0x000A, 4},{0x0001, 4},{0x000F, 5},
+ {0x0025, 6},{0x003C, 6},{0x001A, 6},{0x0087, 8},
+ {0x01B0,10},{0x0D8F,13},{0x0D8E,13},{0x000E, 4},
+ {0x0013, 5},{0x000C, 5},{0x0024, 6},{0x0020, 6},
+ {0x0011, 5},{0x006D, 8},{0x0000, 4},{0x000E, 5}
+ },
+ {
+ {0x0000, 3},{0x0012, 5},{0x0076, 7},{0x0077, 7},
+ {0x014D, 9},{0x0533,11},{0x14C9,13},{0x0013, 5},
+ {0x00A5, 8},{0x0002, 3},{0x0003, 3},{0x000B, 4},
+ {0x000C, 4},{0x0008, 4},{0x001A, 5},{0x002B, 6},
+ {0x0075, 7},{0x0074, 7},{0x00A7, 8},{0x0298,10},
+ {0x14C8,13},{0x14CB,13},{0x14CA,13},{0x000F, 4},
+ {0x001C, 5},{0x0007, 5},{0x002A, 6},{0x0028, 6},
+ {0x001B, 5},{0x00A4, 8},{0x0002, 4},{0x0006, 5}
+ },
+ {
+ {0x0002, 3},{0x001A, 5},{0x002B, 6},{0x003A, 6},
+ {0x00ED, 8},{0x0283,10},{0x0A0A,12},{0x0004, 5},
+ {0x00A1, 8},{0x0004, 3},{0x0003, 3},{0x000B, 4},
+ {0x000C, 4},{0x001F, 5},{0x0006, 5},{0x0077, 7},
+ {0x00A3, 8},{0x00A2, 8},{0x0140, 9},{0x1417,13},
+ {0x1416,13},{0x0A09,12},{0x0A08,12},{0x0000, 3},
+ {0x001E, 5},{0x0007, 5},{0x002A, 6},{0x0029, 6},
+ {0x001C, 5},{0x00EC, 8},{0x001B, 5},{0x0005, 5}
+ },
+ {
+ {0x0002, 3},{0x0002, 4},{0x0018, 5},{0x001D, 5},
+ {0x0035, 6},{0x00E4, 8},{0x01CF,11},{0x001D, 7},
+ {0x0072, 9},{0x0004, 3},{0x0005, 3},{0x0006, 4},
+ {0x0007, 4},{0x0006, 5},{0x0073, 7},{0x0038, 8},
+ {0x01CE,11},{0x039B,12},{0x0398,12},{0x0733,13},
+ {0x0732,13},{0x0735,13},{0x0734,13},{0x0000, 3},
+ {0x001F, 5},{0x001B, 5},{0x0034, 6},{0x000F, 6},
+ {0x001E, 5},{0x00E5, 8},{0x0019, 5},{0x0038, 6}
+ },
+ {
+ {0x0016, 5},{0x0050, 7},{0x0172, 9},{0x02E7,10},
+ {0x1732,13},{0x2E67,14},{0x2E66,14},{0x0006, 4},
+ {0x0051, 7},{0x0001, 3},{0x0000, 3},{0x000D, 4},
+ {0x000C, 4},{0x0009, 4},{0x001C, 5},{0x0009, 5},
+ {0x001C, 6},{0x001D, 6},{0x005D, 7},{0x00B8, 8},
+ {0x05CD,11},{0x1731,13},{0x1730,13},{0x000F, 4},
+ {0x0005, 4},{0x000F, 5},{0x0008, 5},{0x0029, 6},
+ {0x001D, 5},{0x002F, 6},{0x0008, 4},{0x0015, 5}
+ },
+ {
+ {0x0009, 4},{0x0021, 6},{0x0040, 7},{0x00AD, 8},
+ {0x02B0,10},{0x1589,13},{0x1588,13},{0x001C, 5},
+ {0x005F, 7},{0x0000, 3},{0x000F, 4},{0x000D, 4},
+ {0x000C, 4},{0x0006, 4},{0x0011, 5},{0x002A, 6},
+ {0x0057, 7},{0x005E, 7},{0x0041, 7},{0x0159, 9},
+ {0x0563,11},{0x158B,13},{0x158A,13},{0x0001, 3},
+ {0x0005, 4},{0x0014, 5},{0x003B, 6},{0x002E, 6},
+ {0x0004, 4},{0x003A, 6},{0x0007, 4},{0x0016, 5}
+ },
+ {
+ {0x000E, 4},{0x0007, 5},{0x0046, 7},{0x0045, 7},
+ {0x0064, 9},{0x032A,12},{0x0657,13},{0x0018, 5},
+ {0x000D, 6},{0x0000, 3},{0x000F, 4},{0x000A, 4},
+ {0x000B, 4},{0x001A, 5},{0x0036, 6},{0x0047, 7},
+ {0x0044, 7},{0x0018, 7},{0x0033, 8},{0x00CB,10},
+ {0x0656,13},{0x0329,12},{0x0328,12},{0x0002, 3},
+ {0x0006, 4},{0x0019, 5},{0x000E, 5},{0x0037, 6},
+ {0x0009, 4},{0x000F, 5},{0x0002, 4},{0x0010, 5}
+ },
+ {
+ {0x0003, 3},{0x0018, 5},{0x0023, 6},{0x0077, 7},
+ {0x0194, 9},{0x1956,13},{0x32AF,14},{0x003A, 6},
+ {0x0076, 7},{0x0002, 3},{0x0001, 3},{0x001F, 5},
+ {0x001E, 5},{0x0014, 5},{0x0022, 6},{0x0064, 7},
+ {0x0197, 9},{0x0196, 9},{0x032B,10},{0x0654,11},
+ {0x32AE,14},{0x1955,13},{0x1954,13},{0x0000, 3},
+ {0x0009, 4},{0x001C, 5},{0x0015, 5},{0x0010, 5},
+ {0x000D, 4},{0x0017, 5},{0x0016, 5},{0x0033, 6}
+ },
+ {
+ {0x0005, 3},{0x0006, 4},{0x003E, 6},{0x0010, 5},
+ {0x0048, 7},{0x093F,12},{0x24FA,14},{0x0032, 6},
+ {0x0067, 7},{0x0002, 3},{0x0001, 3},{0x001B, 5},
+ {0x001E, 5},{0x0034, 6},{0x0066, 7},{0x0092, 8},
+ {0x0126, 9},{0x024E,10},{0x049E,11},{0x49F7,15},
+ {0x49F6,15},{0x24F9,14},{0x24F8,14},{0x0000, 3},
+ {0x0007, 4},{0x0018, 5},{0x0011, 5},{0x003F, 6},
+ {0x000E, 4},{0x0013, 5},{0x0035, 6},{0x0025, 6}
+ },
+ {
+ {0x0005, 3},{0x0008, 4},{0x0012, 5},{0x001C, 5},
+ {0x001C, 6},{0x00EA, 9},{0x1D75,14},{0x001E, 6},
+ {0x0066, 7},{0x0001, 3},{0x0002, 3},{0x001B, 5},
+ {0x001A, 5},{0x001F, 6},{0x003B, 7},{0x0074, 8},
+ {0x01D6,10},{0x03AF,11},{0x1D74,14},{0x1D77,14},
+ {0x1D76,14},{0x0EB9,13},{0x0EB8,13},{0x000F, 4},
+ {0x0006, 4},{0x0013, 5},{0x003B, 6},{0x003A, 6},
+ {0x0000, 3},{0x0018, 5},{0x0032, 6},{0x0067, 7}
+ },
+ {
+ {0x0004, 3},{0x000A, 4},{0x001B, 5},{0x000C, 4},
+ {0x000D, 5},{0x00E6, 8},{0x0684,11},{0x0072, 7},
+ {0x00E7, 8},{0x0002, 3},{0x0001, 3},{0x0017, 5},
+ {0x0016, 5},{0x0018, 6},{0x00D1, 8},{0x01A0, 9},
+ {0x0686,11},{0x0D0F,12},{0x0D0A,12},{0x1A17,13},
+ {0x1A16,13},{0x1A1D,13},{0x1A1C,13},{0x000F, 4},
+ {0x001D, 5},{0x000E, 5},{0x0035, 6},{0x0038, 6},
+ {0x0000, 3},{0x000F, 5},{0x0019, 6},{0x0069, 7}
+ },
+ {
+ {0x0003, 3},{0x000C, 4},{0x001B, 5},{0x0000, 3},
+ {0x0003, 4},{0x002E, 6},{0x0051, 9},{0x00BC, 8},
+ {0x0053, 9},{0x0004, 3},{0x0002, 3},{0x0016, 5},
+ {0x0015, 5},{0x0015, 7},{0x0050, 9},{0x00A4,10},
+ {0x0294,12},{0x052B,13},{0x052A,13},{0x052D,13},
+ {0x052C,13},{0x052F,13},{0x052E,13},{0x000E, 4},
+ {0x001A, 5},{0x0004, 5},{0x0028, 6},{0x0029, 6},
+ {0x000F, 4},{0x000B, 6},{0x005F, 7},{0x00BD, 8}
+ },
+ {
+ {0x0003, 4},{0x0009, 6},{0x00D0, 8},{0x01A3, 9},
+ {0x0344,10},{0x0D14,12},{0x1A2B,13},{0x0004, 4},
+ {0x0015, 7},{0x0000, 3},{0x000F, 4},{0x000B, 4},
+ {0x000C, 4},{0x000E, 4},{0x0009, 4},{0x001B, 5},
+ {0x000A, 5},{0x0014, 5},{0x000D, 5},{0x002A, 6},
+ {0x0014, 7},{0x068B,11},{0x1A2A,13},{0x0008, 4},
+ {0x000B, 5},{0x002B, 6},{0x000B, 6},{0x0069, 7},
+ {0x0035, 6},{0x0008, 6},{0x0007, 4},{0x000C, 5}
+ },
+ {
+ {0x000A, 4},{0x003C, 6},{0x0032, 7},{0x0030, 7},
+ {0x00C5, 9},{0x0621,12},{0x0620,12},{0x001F, 5},
+ {0x0033, 7},{0x0001, 3},{0x0000, 3},{0x000E, 4},
+ {0x000D, 4},{0x000C, 4},{0x0004, 4},{0x000D, 5},
+ {0x0026, 6},{0x0027, 6},{0x0014, 6},{0x0063, 8},
+ {0x0189,10},{0x0623,12},{0x0622,12},{0x000B, 4},
+ {0x0012, 5},{0x003D, 6},{0x0022, 6},{0x0015, 6},
+ {0x000B, 5},{0x0023, 6},{0x0007, 4},{0x0010, 5}
+ },
+ {
+ {0x000F, 4},{0x000C, 5},{0x0043, 7},{0x0010, 6},
+ {0x0044, 8},{0x0114,10},{0x0455,12},{0x0018, 5},
+ {0x0023, 7},{0x0001, 3},{0x0000, 3},{0x000E, 4},
+ {0x000D, 4},{0x0009, 4},{0x0019, 5},{0x0009, 5},
+ {0x0017, 6},{0x0016, 6},{0x0042, 7},{0x008B, 9},
+ {0x0454,12},{0x0457,12},{0x0456,12},{0x000B, 4},
+ {0x0015, 5},{0x000A, 5},{0x0029, 6},{0x0020, 6},
+ {0x000D, 5},{0x0028, 6},{0x0007, 4},{0x0011, 5}
+ },
+ {
+ {0x0001, 3},{0x001A, 5},{0x0029, 6},{0x002A, 6},
+ {0x00A0, 8},{0x0285,10},{0x1425,13},{0x0002, 5},
+ {0x0000, 7},{0x0002, 3},{0x0003, 3},{0x000C, 4},
+ {0x000B, 4},{0x0008, 4},{0x0012, 5},{0x0001, 6},
+ {0x0051, 7},{0x0001, 7},{0x0143, 9},{0x0508,11},
+ {0x1424,13},{0x1427,13},{0x1426,13},{0x000F, 4},
+ {0x001C, 5},{0x0003, 5},{0x0037, 6},{0x002B, 6},
+ {0x0013, 5},{0x0036, 6},{0x001D, 5},{0x0001, 5}
+ },
+ {
+ {0x0004, 3},{0x001F, 5},{0x003D, 6},{0x0006, 5},
+ {0x0016, 7},{0x0053, 9},{0x014A,11},{0x0034, 6},
+ {0x002A, 8},{0x0002, 3},{0x0003, 3},{0x000B, 4},
+ {0x000C, 4},{0x001C, 5},{0x0037, 6},{0x0017, 7},
+ {0x002B, 8},{0x0028, 8},{0x00A4,10},{0x052D,13},
+ {0x052C,13},{0x052F,13},{0x052E,13},{0x0000, 3},
+ {0x001D, 5},{0x0007, 5},{0x0004, 5},{0x0035, 6},
+ {0x0014, 5},{0x0036, 6},{0x0015, 5},{0x003C, 6}
+ },
+ {
+ {0x0004, 3},{0x000A, 4},{0x0007, 5},{0x001D, 5},
+ {0x0009, 6},{0x01F3, 9},{0x07C7,11},{0x0008, 6},
+ {0x01F0, 9},{0x0003, 3},{0x0002, 3},{0x000D, 4},
+ {0x000C, 4},{0x0017, 5},{0x007D, 7},{0x01F2, 9},
+ {0x07C6,11},{0x07C5,11},{0x1F12,13},{0x3E27,14},
+ {0x3E26,14},{0x1F11,13},{0x1F10,13},{0x0000, 3},
+ {0x001E, 5},{0x0006, 5},{0x0039, 6},{0x0038, 6},
+ {0x003F, 6},{0x002C, 6},{0x0005, 5},{0x002D, 6}
+ },
+ {
+ {0x0002, 3},{0x0007, 4},{0x0018, 5},{0x0003, 4},
+ {0x0005, 5},{0x0035, 7},{0x004F, 9},{0x0012, 7},
+ {0x04E5,13},{0x0005, 3},{0x0004, 3},{0x000D, 4},
+ {0x000E, 4},{0x0033, 6},{0x0026, 8},{0x009D,10},
+ {0x04E4,13},{0x04E7,13},{0x04E6,13},{0x04E1,13},
+ {0x04E0,13},{0x04E3,13},{0x04E2,13},{0x0000, 3},
+ {0x001F, 5},{0x000C, 5},{0x003D, 6},{0x003C, 6},
+ {0x0032, 6},{0x0034, 7},{0x001B, 6},{0x0008, 6}
+ },
+ {
+ {0x0000, 3},{0x0004, 4},{0x001C, 5},{0x000F, 4},
+ {0x0002, 4},{0x0007, 5},{0x0075, 7},{0x00E8, 8},
+ {0x1D2A,13},{0x0005, 3},{0x0004, 3},{0x000D, 4},
+ {0x000C, 4},{0x0077, 7},{0x0E96,12},{0x3A57,14},
+ {0x3A56,14},{0x3A5D,14},{0x3A5C,14},{0x3A5F,14},
+ {0x3A5E,14},{0x1D29,13},{0x1D28,13},{0x0003, 3},
+ {0x0006, 5},{0x000A, 5},{0x002C, 7},{0x0017, 6},
+ {0x0076, 7},{0x01D3, 9},{0x03A4,10},{0x002D, 7}
+ },
+ {
+ {0x000A, 4},{0x0024, 6},{0x00BF, 8},{0x0085, 8},
+ {0x0211,10},{0x0842,12},{0x1087,13},{0x0018, 5},
+ {0x0020, 6},{0x0001, 3},{0x0002, 3},{0x000E, 4},
+ {0x000D, 4},{0x0007, 4},{0x0013, 5},{0x0025, 6},
+ {0x005E, 7},{0x0043, 7},{0x00BE, 8},{0x0109, 9},
+ {0x1086,13},{0x0841,12},{0x0840,12},{0x000F, 4},
+ {0x0001, 4},{0x0011, 5},{0x0000, 5},{0x002E, 6},
+ {0x0019, 5},{0x0001, 5},{0x0006, 4},{0x0016, 5}
+ },
+ {
+ {0x0002, 3},{0x000F, 5},{0x006F, 7},{0x0061, 7},
+ {0x0374,10},{0x1BA8,13},{0x3753,14},{0x0012, 5},
+ {0x0036, 6},{0x0000, 3},{0x0001, 3},{0x000A, 4},
+ {0x000B, 4},{0x001A, 5},{0x0031, 6},{0x0060, 7},
+ {0x00DC, 8},{0x01BB, 9},{0x06EB,11},{0x1BAB,13},
+ {0x3752,14},{0x3755,14},{0x3754,14},{0x000E, 4},
+ {0x0006, 4},{0x0013, 5},{0x000E, 5},{0x003E, 6},
+ {0x0008, 4},{0x001E, 5},{0x0019, 5},{0x003F, 6}
+ },
+ {
+ {0x0003, 3},{0x001C, 5},{0x0025, 6},{0x0024, 6},
+ {0x01DA, 9},{0x1DBD,13},{0x3B7C,14},{0x003C, 6},
+ {0x003D, 6},{0x0000, 3},{0x0001, 3},{0x000B, 4},
+ {0x000A, 4},{0x000B, 5},{0x0077, 7},{0x00EC, 8},
+ {0x03B6,10},{0x076E,11},{0x1DBF,13},{0x76FB,15},
+ {0x76FA,15},{0x3B79,14},{0x3B78,14},{0x000D, 4},
+ {0x001F, 5},{0x0013, 5},{0x000A, 5},{0x0008, 5},
+ {0x000C, 4},{0x0008, 4},{0x0009, 5},{0x003A, 6}
+ },
+ {
+ {0x0005, 3},{0x0003, 4},{0x0004, 5},{0x0010, 5},
+ {0x008F, 8},{0x0475,11},{0x11D1,13},{0x0079, 7},
+ {0x0027, 6},{0x0002, 3},{0x0003, 3},{0x0001, 4},
+ {0x0000, 4},{0x0026, 6},{0x0046, 7},{0x011C, 9},
+ {0x0477,11},{0x08ED,12},{0x11D0,13},{0x11D3,13},
+ {0x11D2,13},{0x11D9,13},{0x11D8,13},{0x000D, 4},
+ {0x001F, 5},{0x0012, 5},{0x0005, 5},{0x003D, 6},
+ {0x000C, 4},{0x000E, 4},{0x0022, 6},{0x0078, 7}
+ },
+ {
+ {0x0005, 3},{0x000C, 4},{0x001B, 5},{0x0000, 4},
+ {0x0006, 6},{0x03E2,10},{0x3E3D,14},{0x000F, 7},
+ {0x0034, 6},{0x0003, 3},{0x0002, 3},{0x001E, 5},
+ {0x001D, 5},{0x007D, 7},{0x01F0, 9},{0x07C6,11},
+ {0x3E3C,14},{0x3E3F,14},{0x3E3E,14},{0x3E39,14},
+ {0x3E38,14},{0x3E3B,14},{0x3E3A,14},{0x0008, 4},
+ {0x001C, 5},{0x0002, 5},{0x003F, 6},{0x0035, 6},
+ {0x0009, 4},{0x0001, 3},{0x000E, 7},{0x00F9, 8}
+ },
+ {
+ {0x0004, 3},{0x000B, 4},{0x0001, 4},{0x000A, 4},
+ {0x001E, 6},{0x00E0, 9},{0x0E1E,13},{0x0071, 8},
+ {0x0039, 7},{0x0007, 3},{0x0006, 3},{0x000D, 5},
+ {0x000C, 5},{0x0020, 7},{0x01C2,10},{0x1C3F,14},
+ {0x1C3E,14},{0x0E19,13},{0x0E18,13},{0x0E1B,13},
+ {0x0E1A,13},{0x0E1D,13},{0x0E1C,13},{0x0000, 4},
+ {0x0009, 5},{0x001D, 6},{0x001F, 6},{0x0011, 6},
+ {0x0005, 4},{0x0001, 3},{0x0043, 8},{0x0042, 8}
+ },
+ {
+ {0x0004, 3},{0x000D, 4},{0x0007, 4},{0x0002, 3},
+ {0x0014, 5},{0x016C, 9},{0x16D1,13},{0x02DF,10},
+ {0x016E, 9},{0x0000, 2},{0x0007, 3},{0x002C, 6},
+ {0x002B, 6},{0x02DE,10},{0x16D0,13},{0x16D3,13},
+ {0x16D2,13},{0x2DB5,14},{0x2DB4,14},{0x2DB7,14},
+ {0x2DB6,14},{0x16D9,13},{0x16D8,13},{0x000C, 5},
+ {0x002A, 6},{0x005A, 7},{0x001B, 6},{0x001A, 6},
+ {0x0017, 5},{0x000C, 4},{0x05B7,11},{0x05B5,11}
+ },
+ {
+ {0x0002, 2},{0x000F, 4},{0x001C, 5},{0x000C, 4},
+ {0x003B, 6},{0x01AC, 9},{0x1AD8,13},{0x35B3,14},
+ {0x35B2,14},{0x0001, 2},{0x0000, 2},{0x0069, 7},
+ {0x0068, 7},{0x35BD,14},{0x35BC,14},{0x35BF,14},
+ {0x35BE,14},{0x35B9,14},{0x35B8,14},{0x35BB,14},
+ {0x35BA,14},{0x35B5,14},{0x35B4,14},{0x01A9, 9},
+ {0x01A8, 9},{0x035A,10},{0x00D7, 8},{0x00D5, 8},
+ {0x003A, 6},{0x001B, 5},{0x35B7,14},{0x35B6,14}
+ },
+ {
+ {0x0000, 3},{0x0010, 5},{0x0072, 7},{0x0071, 7},
+ {0x0154, 9},{0x0AAB,12},{0x0AA8,12},{0x0014, 5},
+ {0x0070, 7},{0x0002, 3},{0x0003, 3},{0x000C, 4},
+ {0x000B, 4},{0x0003, 4},{0x0011, 5},{0x0073, 7},
+ {0x0054, 7},{0x00AB, 8},{0x02AB,10},{0x1553,13},
+ {0x1552,13},{0x1555,13},{0x1554,13},{0x000D, 4},
+ {0x001E, 5},{0x0012, 5},{0x003E, 6},{0x002B, 6},
+ {0x0002, 4},{0x003F, 6},{0x001D, 5},{0x0013, 5}
+ },
+ {
+ {0x0003, 3},{0x001F, 5},{0x0029, 6},{0x003D, 6},
+ {0x000C, 7},{0x0069,10},{0x0345,13},{0x0002, 5},
+ {0x0028, 6},{0x0002, 3},{0x0001, 3},{0x000E, 4},
+ {0x000C, 4},{0x0015, 5},{0x0007, 6},{0x001B, 8},
+ {0x006B,10},{0x006A,10},{0x0344,13},{0x0347,13},
+ {0x0346,13},{0x01A1,12},{0x01A0,12},{0x000B, 4},
+ {0x001A, 5},{0x0012, 5},{0x0000, 5},{0x003C, 6},
+ {0x0008, 4},{0x001B, 5},{0x0013, 5},{0x0001, 5}
+ },
+ {
+ {0x0004, 3},{0x0004, 4},{0x003F, 6},{0x0014, 5},
+ {0x0056, 7},{0x015C, 9},{0x15D5,13},{0x003C, 6},
+ {0x002A, 6},{0x0000, 3},{0x0001, 3},{0x000E, 4},
+ {0x000D, 4},{0x000C, 5},{0x00AF, 8},{0x02BB,10},
+ {0x15D4,13},{0x15D7,13},{0x15D6,13},{0x15D1,13},
+ {0x15D0,13},{0x15D3,13},{0x15D2,13},{0x000B, 4},
+ {0x0019, 5},{0x000D, 5},{0x003E, 6},{0x0031, 6},
+ {0x0007, 4},{0x0005, 4},{0x003D, 6},{0x0030, 6}
+ },
+ {
+ {0x0005, 3},{0x0008, 4},{0x001A, 5},{0x0000, 4},
+ {0x0036, 6},{0x0011, 8},{0x0106,12},{0x000A, 7},
+ {0x006E, 7},{0x0002, 3},{0x0003, 3},{0x0003, 4},
+ {0x0002, 4},{0x006F, 7},{0x0021, 9},{0x020F,13},
+ {0x020E,13},{0x0101,12},{0x0100,12},{0x0103,12},
+ {0x0102,12},{0x0105,12},{0x0104,12},{0x000C, 4},
+ {0x001E, 5},{0x0003, 5},{0x003E, 6},{0x003F, 6},
+ {0x0009, 4},{0x000E, 4},{0x000B, 7},{0x0009, 7}
+ },
+ {
+ {0x0002, 3},{0x000E, 4},{0x001E, 5},{0x000C, 4},
+ {0x001F, 5},{0x006E, 7},{0x00AD,10},{0x00AF,10},
+ {0x0014, 7},{0x0004, 3},{0x0003, 3},{0x001A, 5},
+ {0x0017, 5},{0x002A, 8},{0x0576,13},{0x0AEF,14},
+ {0x0AEE,14},{0x0571,13},{0x0570,13},{0x0573,13},
+ {0x0572,13},{0x0575,13},{0x0574,13},{0x0003, 4},
+ {0x0016, 5},{0x0004, 5},{0x0036, 6},{0x000B, 6},
+ {0x000A, 4},{0x0000, 3},{0x006F, 7},{0x00AC,10}
+ },
+ {
+ {0x0004, 3},{0x0005, 4},{0x0003, 3},{0x0001, 3},
+ {0x0004, 4},{0x002F, 6},{0x0526,11},{0x1495,13},
+ {0x00A6, 8},{0x0007, 3},{0x0006, 3},{0x002D, 6},
+ {0x002C, 6},{0x1494,13},{0x1497,13},{0x1496,13},
+ {0x1491,13},{0x1490,13},{0x1493,13},{0x1492,13},
+ {0x293D,14},{0x293C,14},{0x293F,14},{0x0000, 3},
+ {0x0028, 6},{0x00A5, 8},{0x0148, 9},{0x00A7, 8},
+ {0x002E, 6},{0x0015, 5},{0x0A4E,12},{0x293E,14}
+ },
+ {
+ {0x0004, 3},{0x0005, 4},{0x0003, 3},{0x0001, 3},
+ {0x0004, 4},{0x002F, 6},{0x0526,11},{0x1495,13},
+ {0x00A6, 8},{0x0007, 3},{0x0006, 3},{0x002D, 6},
+ {0x002C, 6},{0x1494,13},{0x1497,13},{0x1496,13},
+ {0x1491,13},{0x1490,13},{0x1493,13},{0x1492,13},
+ {0x293D,14},{0x293C,14},{0x293F,14},{0x0000, 3},
+ {0x0028, 6},{0x00A5, 8},{0x0148, 9},{0x00A7, 8},
+ {0x002E, 6},{0x0015, 5},{0x0A4E,12},{0x293E,14}
+ },
+ {
+ {0x0004, 3},{0x0005, 4},{0x0003, 3},{0x0001, 3},
+ {0x0004, 4},{0x002F, 6},{0x0526,11},{0x1495,13},
+ {0x00A6, 8},{0x0007, 3},{0x0006, 3},{0x002D, 6},
+ {0x002C, 6},{0x1494,13},{0x1497,13},{0x1496,13},
+ {0x1491,13},{0x1490,13},{0x1493,13},{0x1492,13},
+ {0x293D,14},{0x293C,14},{0x293F,14},{0x0000, 3},
+ {0x0028, 6},{0x00A5, 8},{0x0148, 9},{0x00A7, 8},
+ {0x002E, 6},{0x0015, 5},{0x0A4E,12},{0x293E,14}
+ },
+ {
+ {0x0003, 3},{0x0011, 5},{0x0020, 6},{0x0074, 7},
+ {0x010D, 9},{0x0863,12},{0x0860,12},{0x000A, 5},
+ {0x0075, 7},{0x0001, 3},{0x0000, 3},{0x000B, 4},
+ {0x000A, 4},{0x0018, 5},{0x0038, 6},{0x0042, 7},
+ {0x010F, 9},{0x010E, 9},{0x0219,10},{0x10C3,13},
+ {0x10C2,13},{0x10C5,13},{0x10C4,13},{0x000F, 4},
+ {0x0004, 4},{0x0019, 5},{0x000B, 5},{0x0039, 6},
+ {0x0009, 4},{0x001B, 5},{0x001A, 5},{0x003B, 6}
+ },
+ {
+ {0x0005, 3},{0x0001, 4},{0x003E, 6},{0x0001, 5},
+ {0x00E2, 8},{0x1C6F,13},{0x38D9,14},{0x0039, 6},
+ {0x001F, 6},{0x0002, 3},{0x0001, 3},{0x0009, 4},
+ {0x0008, 4},{0x0000, 5},{0x0070, 7},{0x01C7, 9},
+ {0x038C,10},{0x071A,11},{0x38D8,14},{0x38DB,14},
+ {0x38DA,14},{0x38DD,14},{0x38DC,14},{0x000D, 4},
+ {0x001D, 5},{0x000E, 5},{0x003F, 6},{0x003C, 6},
+ {0x000C, 4},{0x0006, 4},{0x003D, 6},{0x001E, 6}
+ },
+ {
+ {0x0006, 3},{0x000B, 4},{0x0011, 5},{0x001E, 5},
+ {0x0074, 7},{0x03AA,10},{0x1D5C,13},{0x0001, 6},
+ {0x0021, 6},{0x0001, 3},{0x0002, 3},{0x0007, 4},
+ {0x0006, 4},{0x003E, 6},{0x00EB, 8},{0x01D4, 9},
+ {0x0EAF,12},{0x3ABB,14},{0x3ABA,14},{0x1D59,13},
+ {0x1D58,13},{0x1D5B,13},{0x1D5A,13},{0x000A, 4},
+ {0x001C, 5},{0x0001, 5},{0x003F, 6},{0x003B, 6},
+ {0x0001, 4},{0x0009, 4},{0x0020, 6},{0x0000, 6}
+ },
+ {
+ {0x0004, 3},{0x000A, 4},{0x0017, 5},{0x0004, 4},
+ {0x0016, 6},{0x016A, 9},{0x16B1,13},{0x0017, 7},
+ {0x005B, 7},{0x0006, 3},{0x0007, 3},{0x0001, 4},
+ {0x0000, 4},{0x000A, 6},{0x02D7,10},{0x0B5A,12},
+ {0x16B0,13},{0x16B3,13},{0x16B2,13},{0x2D6D,14},
+ {0x2D6C,14},{0x2D6F,14},{0x2D6E,14},{0x0006, 4},
+ {0x000A, 5},{0x0004, 5},{0x002C, 6},{0x0017, 6},
+ {0x0003, 4},{0x0007, 4},{0x0016, 7},{0x00B4, 8}
+ },
+ {
+ {0x0005, 3},{0x000D, 4},{0x0005, 4},{0x0009, 4},
+ {0x0033, 6},{0x0193, 9},{0x192C,13},{0x0061, 8},
+ {0x0031, 7},{0x0000, 2},{0x0007, 3},{0x0010, 5},
+ {0x0011, 5},{0x00C8, 8},{0x192F,13},{0x325B,14},
+ {0x325A,14},{0x1929,13},{0x1928,13},{0x192B,13},
+ {0x192A,13},{0x325D,14},{0x325C,14},{0x0018, 5},
+ {0x001A, 6},{0x001B, 6},{0x0065, 7},{0x0019, 6},
+ {0x0004, 4},{0x0007, 4},{0x0060, 8},{0x0324,10}
+ },
+ {
+ {0x0006, 3},{0x0000, 3},{0x0002, 4},{0x000F, 4},
+ {0x0039, 6},{0x01D9, 9},{0x1D82,13},{0x0761,11},
+ {0x03BE,10},{0x0001, 2},{0x0002, 2},{0x000F, 6},
+ {0x000E, 6},{0x0762,11},{0x3B07,14},{0x3B06,14},
+ {0x3B1D,14},{0x3B1C,14},{0x3B1F,14},{0x3B1E,14},
+ {0x3B19,14},{0x3B18,14},{0x3B1B,14},{0x0038, 6},
+ {0x01DE, 9},{0x00ED, 8},{0x03BF,10},{0x00EE, 8},
+ {0x003A, 6},{0x0006, 5},{0x0EC0,12},{0x3B1A,14}
+ },
+ {
+ {0x0000, 2},{0x0002, 3},{0x000F, 5},{0x0006, 4},
+ {0x001C, 6},{0x01D0,10},{0x0E8C,13},{0x1D1B,14},
+ {0x1D1A,14},{0x0003, 2},{0x0002, 2},{0x00EA, 9},
+ {0x00E9, 9},{0x0E89,13},{0x0E88,13},{0x0E8B,13},
+ {0x0E8A,13},{0x1D65,14},{0x1D64,14},{0x1D67,14},
+ {0x1D66,14},{0x1D61,14},{0x1D60,14},{0x03AD,11},
+ {0x1D63,14},{0x1D62,14},{0x1D1D,14},{0x1D1C,14},
+ {0x003B, 7},{0x01D7,10},{0x1D1F,14},{0x1D1E,14}
+ },
+ {
+ {0x0002, 2},{0x000F, 4},{0x001C, 5},{0x000C, 4},
+ {0x003B, 6},{0x01AC, 9},{0x1AD8,13},{0x35B3,14},
+ {0x35B2,14},{0x0001, 2},{0x0000, 2},{0x0069, 7},
+ {0x0068, 7},{0x35BD,14},{0x35BC,14},{0x35BF,14},
+ {0x35BE,14},{0x35B9,14},{0x35B8,14},{0x35BB,14},
+ {0x35BA,14},{0x35B5,14},{0x35B4,14},{0x01A9, 9},
+ {0x01A8, 9},{0x035A,10},{0x00D7, 8},{0x00D5, 8},
+ {0x003A, 6},{0x001B, 5},{0x35B7,14},{0x35B6,14}
+ }
+};
+
+
+
+/*A description of a Huffman code value used when encoding the tree.*/
+typedef struct{
+ /*The bit pattern, left-shifted so that the MSB of all patterns is
+ aligned.*/
+ unsigned long pattern;
+ /*The amount the bit pattern was shifted.*/
+ int shift;
+ /*The token this bit pattern represents.*/
+ int token;
+}th_huff_entry;
+
+
+
+/*Compares two th_huff_entry structures by their bit patterns.
+ _c1: The first entry to compare.
+ _c2: The second entry to compare.
+ Return: <0 if _c1<_c2, >0 if _c1>_c2.*/
+static int huff_entry_cmp(const void *_c1,const void *_c2){
+ unsigned long b1;
+ unsigned long b2;
+ b1=((const th_huff_entry *)_c1)->pattern;
+ b2=((const th_huff_entry *)_c2)->pattern;
+ return b1<b2?-1:b1>b2?1:0;
+}
+
+int th_huff_codes2latex(const theora_huff_code _codes[80][32]){
+ int i;
+ printf("\\twocolumn\n");
+ for(i=0;i<80;i++){
+ th_huff_entry entries[32];
+ int maxlen;
+ int mask;
+ int j;
+ /*First, find the maximum code length so we can align all the bit
+ patterns.*/
+ maxlen=_codes[i][0].nbits;
+ for(j=1;j<32;j++)if(maxlen<_codes[i][j].nbits)maxlen=_codes[i][j].nbits;
+ mask=(1<<maxlen)-1;
+ /*Copy over the codes into our temporary workspace.
+ The bit patterns are aligned, and the original entry each code is from
+ is stored as well.*/
+ for(j=0;j<32;j++){
+ entries[j].shift=maxlen-_codes[i][j].nbits;
+ entries[j].pattern=_codes[i][j].pattern<<entries[j].shift&mask;
+ entries[j].token=j;
+ }
+ /*Sort the codes into ascending order.
+ This is the order they will be presented in.*/
+ qsort(entries,32,sizeof(entries[0]),huff_entry_cmp);
+ printf("\\begin{center}\n");
+ printf("\\begin{tabular}{lr}\\toprule\n");
+ printf("\\multicolumn{1}{c}{Huffman Code} & Token Value \\\\\\midrule\n");
+ for(j=0;j<32;j++){
+ int k;
+ printf("\\bin{");
+ for(k=maxlen;k-->entries[j].shift;){
+ printf("%c",(int)(entries[j].pattern>>k&1)+'0');
+ }
+ printf("}");
+ for(;k>=0;k--)printf(" ");
+ printf(" & ");
+ if(entries[j].token<10)printf(" ");
+ printf("$%i$ \\\\\n",entries[j].token);
+ }
+ printf("\\bottomrule\n");
+ printf("\\\\\n");
+ printf("\\multicolumn{2}{c}{VP3.1 Huffman Table Number $%i$}\n",i);
+ printf("\\end{tabular}\n");
+ printf("\\end{center}\n");
+ printf("\\vfill\n");
+ printf("\n");
+ }
+ printf("\\onecolumn\n");
+ return 0;
+}
+
+int main(int _argc,char **_argv){
+ th_huff_codes2latex(TH_VP31_HUFF_CODES);
+ return 0;
+}
diff --git a/doc/spec/xifish.fig b/doc/spec/xifish.fig
new file mode 100644
index 0000000..f044a2b
--- /dev/null
+++ b/doc/spec/xifish.fig
@@ -0,0 +1,85 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter
+100.00
+Single
+-2
+1200 2
+0 32 #496d9e
+0 33 #304d71
+0 34 #8eb2cf
+1 4 0 6 0 7 1 0 20 0.000 1 0.0000 1470 3255 270 270 1200 3255 1740 3255
+1 3 0 0 0 0 0 0 20 0.000 1 0.0000 1485 3255 75 75 1485 3255 1560 3255
+2 1 0 7 0 3 8 0 20 0.000 0 0 -1 0 0 6
+ 2445 4140 2505 4350 2385 4425 2145 4425 2025 4380 1890 4320
+2 1 0 7 0 3 8 0 20 0.000 0 0 -1 0 0 20
+ 2445 3480 2775 3450 2955 3390 3090 3315 3285 3285 3555 3285
+ 3615 3390 3540 3675 3465 3720 3315 3765 3105 3810 3330 3765
+ 3420 3825 3540 3900 3480 4260 3330 4320 3165 4305 2910 4260
+ 2715 4185 2520 4185
+2 1 0 7 0 3 11 0 20 0.000 0 0 -1 0 0 9
+ 1575 3150 1755 2985 2040 2820 2355 2760 2670 2850 2850 2985
+ 3165 3270 3435 3420 2835 3780
+2 1 0 7 0 6 6 0 20 0.000 0 0 -1 0 0 15
+ 900 3570 1020 3450 1095 3360 1395 3150 1545 3090 1725 3075
+ 2025 3090 2205 3150 2295 3225 2385 3300 2445 3375 2550 3465
+ 2655 3540 2775 3600 2865 3600
+2 1 0 7 0 3 4 0 20 0.000 0 0 -1 0 0 7
+ 1515 4080 1770 4080 1875 3945 1965 3870 2025 3780 1995 3780
+ 1665 3780
+2 1 0 0 -1 6 7 0 20 0.000 0 0 -1 0 0 11
+ 2865 3615 2850 3735 2775 3945 2685 4080 2595 4155 2010 4185
+ 1185 4170 1035 3990 1035 3870 975 3540 1155 3435
+2 1 0 0 0 3 5 0 20 0.000 0 0 -1 0 0 7
+ 1035 3885 1005 4020 1095 4065 1245 4065 1245 3870 1050 3870
+ 1065 3870
+2 1 0 7 0 3 0 0 20 0.000 0 0 -1 0 0 11
+ 1245 3915 1245 3840 1170 3750 1005 3585 930 3510 750 3510
+ 630 3600 645 3690 765 3780 885 3825 1035 3975
+2 1 0 7 0 3 0 0 20 0.000 0 0 -1 0 0 8
+ 1095 3990 945 3990 855 4050 795 4140 885 4200 1095 4200
+ 1155 4140 1245 4050
+2 1 0 7 0 6 6 0 20 0.000 0 0 -1 0 0 8
+ 2685 4185 2400 4185 2220 4215 1920 4305 1695 4335 1485 4320
+ 1245 4215 1155 4125
+2 2 0 0 0 0 3 0 20 0.000 0 0 0 0 0 5
+ 2250 3900 2250 3825 2175 3825 2175 3900 2250 3900
+2 2 0 0 0 0 3 0 20 0.000 0 0 0 0 0 5
+ 2250 3750 2250 3675 2175 3675 2175 3750 2250 3750
+2 1 0 0 -1 3 5 0 20 0.000 0 0 -1 0 0 9
+ 1650 3780 1590 3975 1485 4035 1530 4080 1770 4065 1845 3960
+ 1920 3900 1965 3795 1695 3780
+2 2 0 0 0 0 3 0 20 0.000 0 0 0 0 0 5
+ 1950 3450 1950 3375 1875 3375 1875 3450 1950 3450
+2 2 0 0 0 0 3 0 20 0.000 0 0 0 0 0 5
+ 2400 3900 2400 3825 2325 3825 2325 3900 2400 3900
+2 2 0 0 0 0 3 0 20 0.000 0 0 0 0 0 5
+ 2550 3975 2550 3900 2475 3900 2475 3975 2550 3975
+2 2 0 0 0 0 3 0 20 0.000 0 0 0 0 0 5
+ 2700 3900 2700 3825 2625 3825 2625 3900 2700 3900
+2 2 0 0 0 0 3 0 20 0.000 0 0 0 0 0 5
+ 2700 3750 2700 3675 2625 3675 2625 3750 2700 3750
+2 2 0 0 0 0 3 0 20 0.000 0 0 0 0 0 5
+ 2550 3675 2550 3600 2475 3600 2475 3675 2550 3675
+2 2 0 0 0 0 3 0 20 0.000 0 0 0 0 0 5
+ 2400 3750 2400 3675 2325 3675 2325 3750 2400 3750
+2 2 0 0 0 0 3 0 20 0.000 0 0 0 0 0 5
+ 2400 3600 2400 3525 2325 3525 2325 3600 2400 3600
+2 2 0 0 0 0 3 0 20 0.000 0 0 0 0 0 5
+ 2250 3600 2250 3525 2175 3525 2175 3600 2250 3600
+2 2 0 0 0 0 3 0 20 0.000 0 0 0 0 0 5
+ 2250 3450 2250 3375 2175 3375 2175 3450 2250 3450
+2 2 0 0 0 0 3 0 20 0.000 0 0 0 0 0 5
+ 2100 3525 2100 3450 2025 3450 2025 3525 2100 3525
+2 2 0 0 0 0 3 0 20 0.000 0 0 0 0 0 5
+ 2100 3375 2100 3300 2025 3300 2025 3375 2100 3375
+2 2 0 0 0 0 3 0 20 0.000 0 0 0 0 0 5
+ 2550 3825 2550 3750 2475 3750 2475 3825 2550 3825
+2 3 0 0 -1 32 13 0 20 0.000 0 0 7 0 0 5
+ 2160 2055 3810 3705 2160 5355 510 3705 2160 2055
+2 1 0 0 32 34 12 0 20 0.000 0 0 -1 0 0 3
+ 2160 2055 2160 3705 510 3705
+2 1 0 0 32 33 12 0 20 0.000 0 0 -1 0 0 3
+ 3810 3705 2160 3705 2160 5355
diff --git a/doc/vp3-format.txt b/doc/vp3-format.txt
new file mode 100644
index 0000000..990f417
--- /dev/null
+++ b/doc/vp3-format.txt
@@ -0,0 +1,1305 @@
+VP3 Bitstream Format and Decoding Process
+by Mike Melanson (mike at multimedia.cx)
+v0.5: December 8, 2004
+
+
+[December 8, 2004: Note that this document is not complete and likely
+will never be completed. However, it helped form the basis of Theora I
+specification available at
+ http://www.theora.org/doc/Theora_I_spec.pdf ]
+
+
+Contents
+--------
+ * Introduction
+ * Underlying Coding Concepts
+ * VP3 Coding Overview
+ * VP3 Chunk Format
+ * Decoding The Frame Header
+ * Initializing The Quantization Matrices
+ * Hilbert Coding Pattern
+ * Unpacking The Block Coding Information
+ * Unpacking The Macroblock Coding Mode Information
+ * Unpacking The Macroblock Motion Vectors
+ * Unpacking The DCT Coefficients
+ * Reversing The DC Prediction
+ * Reconstructing The Frame
+ * Theora Specification
+ * Appendix A: Quantization Matrices And Scale Factors
+ * Appendix B: Macroblock Coding Mode Alphabets
+ * Appendix C: DCT Coefficient VLC Tables
+ * Appendix D: The VP3 IDCT
+ * Acknowledgements
+ * References
+ * Changelog
+
+
+Introduction
+------------
+A company named On2 (http://www.on2.com) created a video codec named
+VP3. Eventually, they decided to open source it. Like any body of code
+that was produced on a deadline, the source code was not particularly
+clean or well-documented. This makes it difficult to understand the
+fundamental operation of the codec.
+
+This document describes the VP3 bitstream format and decoding process at
+a higher level than source code.
+
+
+Underlying Coding Concepts
+--------------------------
+In order to understand the VP3 coding method it is necessary to
+understand the individual steps in the process. Like many multimedia
+compression algorithms VP3 does not consist of a single coding method.
+Rather, it uses a chain of methods to achieve compression.
+
+If you are acquainted with the MPEG video clique then many of VP3's
+coding concepts should look familiar as well. What follows is a list of
+the coding methods used in VP3 and a brief description of each.
+
+* Discrete Cosine Transform (DCT): This is a magical mathematical
+function that takes a group of numbers and turns it into another group
+of numbers. The transformed group of numbers exhibits some curious
+properties. Notably, larger numbers are concentrated in certain areas of
+the transformed group.
+
+A video codec like VP3 often operates on 8x8 blocks of numbers. When
+these 8x8 blocks are transformed using a DCT the larger numbers occur
+mostly in the up and left areas of the block with the largest number
+occurring as the first in the block (up-left corner). This number is
+called the DC coefficient. The other 63 numbers are called the AC
+coefficients.
+
+The DCT and its opposite operation, the inverse DCT, require a lot of
+multiplications. Much research and experimentation is focused of
+optimizing this phase of the coding/decoding process.
+
+* Quantization: This coding step tosses out information by essentially
+dividing a number to be coded by a factor and throwing away the
+remainder. The inverse process (dequantization) involves multiplying by
+the same factor to obtain a number that is close enough to the original.
+
+* Run Length Encoding (RLE): The concept behind RLE is to shorten runs
+of numbers that are the same. For example, the string "88888" is encoded
+as (5, 8), indicating a run of 5 '8' numbers. In VP3 (and MPEG/JPEG),
+RLE is used to record the number of zero-value coefficients that occur
+before a non-zero coefficient. For example:
+
+ 0 0 0 0 5 0 2 0 0 0 9
+
+is encoded as:
+
+ (4, 5), (1, 2), (3, 9)
+
+This indicates that a run of 4 zeroes is followed by a coefficient of 5;
+then a run of 1 zero is followed by 2; then a run of 3 zeroes is
+followed by 9.
+
+* Zigzag Ordering: After transforming and quantizing a block of samples,
+the samples are not in an optimal order for run length encoding. Zigzag
+ordering rearranges the samples to put more zeros between non-zero
+samples.
+
+* Differential (or Delta) Pulse Code Modulation (DPCM): 1 + 1 = 2. Got
+that? Seriously, that is what DPCM means. Rather than encoding absolute
+values, encode the differences between successive values. For example:
+
+ 82 84 81 80 86 88 85
+
+Can be delta-encoded as:
+
+ 82 +2 -3 -1 +6 +2 -3
+
+Most of the numbers turn into smaller numbers which require less
+information to encode.
+
+* Motion Compensation: Simply, this coding method specifies that a block
+from a certain position in the previous frame is to be copied into a new
+position in the current frame. This technique is often combined with DCT
+and DPCM coding, as well as fractional pixel motion.
+
+* Entropy Coding (a.k.a. Huffman Coding): This is the process of coding
+frequently occurring symbols with fewer bits than symbols that are not
+likely to occur as frequently.
+
+* Variable Length Run Length Booleans: An initial Boolean bit is
+extracted from the bitstream. A variable length code (VLC) is extracted
+from the bitstream and converted to a count. This count indicates that
+the next (count) elements are to be set to the Boolean value.
+Afterwards, the Boolean value is toggled, the next VLC is extracted and
+converted to a count, and the process continues until all elements are
+set to either 0 or 1.
+
+* YUV Colorspace: Like many modern video codecs, VP3 operates on a YUV
+colorspace rather than a RGB colorspace. Specifically, VP3 uses YUV
+4:2:0, alias YUV420P, YV12. Note: Throughout the course of this
+document, the U and V planes (a.k.a., Cb and Cr planes) will be
+collectively referred to as C planes (color or chrominance planes).
+
+* Frame Types: VP3 has intra-coded frames, a.k.a. intraframes, I-frames,
+or keyframes. VP3 happens to call these golden frames. VP3 has
+interframes, a.k.a. predicted frames or P-frames. These frames can use
+information from either the previous interframe or from the previous
+golden frame.
+
+
+VP3 Overview
+------------
+The first thing to understand about the VP3 coding method is that it
+encodes all 3 planes upside down. That is, the data is encoded from
+bottom-to-top rather than top-to-bottom as is done with many video
+codecs.
+
+VP3 codes a video frame by first breaking each of the 3 planes (Y, U,
+and V) into a series of 8x8 blocks called fragments. VP3 also has a
+notion of superblocks. Superblocks encapsulate 16 fragments arranged in
+a 4x4 matrix. Each plane has its own set of superblocks. Further, VP3
+also uses the notion of macroblocks which is the same as that found in
+JPEG/MPEG. One macroblock encompasses 4 blocks from the Y plane arranged
+in a 2x2 matrix, 1 block from the U plane, and 1 block from the V plane.
+While a fragment or a superblock applies to 1 and only 1 plane, a
+macroblock extends over all 3 planes.
+
+VP3 compresses golden frames by transforming each fragment with a
+discrete cosine transform. Each transformed sample is then quantized and
+the DC coefficient is reduced via DPCM using a combination of DC
+coefficients from surrounding fragments as predictors. Then, each
+fragment's DC coefficient is entropy-coded in the output bitstream,
+followed by each fragment's first AC coefficient, then each second AC
+coefficient, and so on.
+
+An interframe, naturally, is more complicated. While there is only one
+coding mode available for a golden frame (intra coding), there are 8
+coding modes that the VP3 coder can choose from for interframe
+macroblocks. Intra coding as seen in the keyframe is still available.
+The rest of the modes involve encoding a fragment diff, either from the
+previous frame or the golden frame, from the same coordinate or from the
+same coordinate plus a motion vector. All of the macroblock coding modes
+and motion vectors are encoded in an interframe bitstream.
+
+
+VP3 Chunk Format
+----------------
+The high-level format of a compressed VP3 frame is laid out as:
+
+ * chunk header
+ * block coding information
+ * macroblock coding mode information
+ * motion vectors
+ * DC coefficients
+ * 1st AC coefficients
+ * 2nd AC coefficients
+ * ...
+ * 63rd AC coefficients
+
+
+Decoding The Frame Header
+-------------------------
+The chunk header always contains at least 1 byte which has the following
+format:
+
+ bit 7: 0 = golden frame, 1 = interframe
+ bit 6: unused
+ bits 5-0: Quality index (0..63)
+
+Further, if the frame is a golden frame, there are 2 more bytes in the
+header:
+
+ byte 0: version byte 0
+ byte 1:
+ bits 7-3: VP3 version number (stored)
+ bit 2: key frame coding method (0 = DCT key frame, only type
+ supported)
+ bits 1-0: unused, spare bits
+
+All frame headers are encoded with a quality index. This 6-bit value is
+used to index into 2 dequantizer scaling tables, 1 for DC values and 1
+for AC values. Each of the 3 dequantization tables is modified per these
+scaling values.
+
+
+Initializing The Quantization Matrices
+--------------------------------------
+VP3 has three static matrices for quantizing and dequantizing fragments.
+One matrix is for quantizing golden frame Y fragments, one matrix is for
+quantizing golden frame C fragments, and one matrix is for quantizing both
+golden frame and interframe Y or C fragments. While these matrices are
+static, they are adjusted according to quality index coded in the header.
+
+The quality index is an index into 2 64-element tables:
+dc_scale_factor[] and ac_scale_factor[]. Each quantization factor from
+each of the three quantization matrices is adjusted by the appropriate
+scale factor according to this formula:
+
+ base quantizer * scale factor
+ quantizer = -----------------------------
+ 100
+
+ where scale factor =
+ dc_scale_factor[quality_index] for DC dequantizer
+ ac_scale_factor[quality_index] for AC dequantizer
+
+The quantization matrices need to be recalculated at the beginning of a
+frame decode if the current frame's quality index is different from the
+previous frame's quality index.
+
+See Appendix A for the complete VP3 quantization matrices and scale factor
+tables.
+
+As an example, this is the base quantization matrix for golden frame Y
+fragments:
+
+ 16 11 10 16 24 40 51 61
+ 12 12 14 19 26 58 60 55
+ 14 13 16 24 40 57 69 56
+ 14 17 22 29 51 87 80 62
+ 18 22 37 58 68 109 103 77
+ 24 35 55 64 81 104 113 92
+ 49 64 78 87 103 121 120 101
+ 72 92 95 98 112 100 103 99
+
+If a particular coded frame specifies a quality index of 54. Element 54
+of the dc_scale_factor table is 20, thus:
+
+ 16 * 20
+ DC coefficient quantizer = ------- = 3
+ 100
+
+Element 54 of the ac_scale_factor table is 24. The AC coefficient
+quantizers are each scaled using this factor, e.g.:
+
+ 11 * 24
+ ------- = 2
+ 100
+
+ 100 * 24
+ -------- = 24
+ 100
+
+[not complete; still need to explain how these quantizers are saturated
+and scaled with respect to the DCT process]
+
+
+Hilbert Coding Pattern
+----------------------
+VP3 uses a Hilbert pattern to code fragments within a superblock. A
+Hilbert pattern is a recursive pattern that can grow quite complicated.
+The coding pattern that VP3 uses is restricted to this pattern subset,
+where each fragment in a superblock is represented by a 'X':
+
+ X -> X X -> X
+ | ^
+ v |
+ X <- X X <- X
+ | ^
+ v |
+ X X -> X X
+ | ^ | ^
+ v | v |
+ X -> X X -> X
+
+As an example of this pattern, consider a plane that is 256 samples wide
+and 64 samples high. Each fragment row will be 32 fragments wide. The
+first superblock in the plane will be comprised of these 16 fragments:
+
+ 0 1 2 3 ... 31
+ 32 33 34 35 ... 63
+ 64 65 66 67 ... 95
+ 96 97 98 99 ... 127
+
+The order in which these 16 fragments are coded is:
+
+ 0 | 0 1 14 15
+ 32 | 3 2 13 12
+ 64 | 4 7 8 11
+ 96 | 5 6 9 10
+
+All of the image coding information, including the block coding status
+and modes, the motion vectors, and the DCT coefficients, are all coded
+and decoded using this pattern. Thus, it is rather critical to have the
+pattern and all of its corner cases handled correctly. In the above
+example, if the bottom row and left column were not present due to the
+superblock being in a corner, the pattern proceeds as if the missing
+fragments were present, but the missing fragments are omitted in the
+final coding list. The coding order would be:
+
+ 0, 1, 2, 3, 4, 7, 8, 13, 14
+
+
+Unpacking The Block Coding Information
+--------------------------------------
+After unpacking the frame header, the decoder unpacks the block coding
+information. The only information determined in this phase is whether a
+particular superblock and its fragments are coded in the current frame
+or unchanged from the previous frame. The actual coding method is
+determined in the next phase.
+
+If the frame is a golden frame then every superblock, macroblock, and
+fragment is marked as coded.
+
+If the frame is an interframe, then the block coding information must be
+decoded. This is the phase where a decoder will build a list of coded
+fragments for which coding mode, motion vector, and DCT coefficient data
+must be decoded.
+
+First, a list of partially-coded superblocks is unpacked from the
+stream. This list is coded as a series of variable-length run length
+codes (VLRLC). First, the code is initialized by reading the next bit in
+the stream. Then, while there are still superblocks remaining in the
+list, fetch a VLC from the stream according to this table:
+
+ Codeword Run Length
+ 0 1
+ 10x 2-3
+ 110x 4-5
+ 1110xx 6-9
+ 11110xxx 10-17
+ 111110xxxx 18-33
+ 111111xxxxxxxxxxxx 34-4129
+
+For example, a VLC of 1101 represents a run length of 5. If the VLRLC
+was initialized to 1, then the next 5 superblocks would be set to 1,
+indicating that they are partially coded in the current frame. Then the
+bit value is toggled to 0, another VLC is fetched from the stream and
+the process continues until each superblock has been marked either
+partially coded (1) or not (0).
+
+If any of the superblocks were marked as not partially coded in the
+previous step, then a list of fully-coded superblocks is unpacked next
+using the same VLRLC as the list of partially-coded superblocks.
+Initialize the VLRLC with the next bit in the stream. For each
+superblock that was not marked as partially coded, mark it with either a
+0 or 1 according to the current VLRLC. By the end of this step, each
+superblock will be marked as either not coded, partially coded, or fully
+coded.
+
+Let's work through an example with an image frame that is 256x64 pixels.
+This means that the Y plane contains 4x2 superblocks and each of the C
+planes contains 2 superblocks each. The superblocks are numbered as
+follows:
+
+ Y: 0 1 2 3 U: 8 9
+ 4 5 6 7 V: 10 11
+
+This is the state of the bitstream:
+
+ 1100011001101
+
+Which is interpreted as:
+
+ initial 2 1's 1 0 4 1's 5 0's
+ 1 100 0 1100 1101
+
+Superblocks 0-1 and 3-6 are marked as partially coded. Since there were
+blocks that were not marked, proceed to unpack the list of fully-coded
+superblocks. This is the state of the bitstream:
+
+ 1101101
+
+Which is interpreted as:
+
+ initial 3 1's 3 0's
+ 1 101 100
+
+Superblocks 2, 7, and 8 are marked as fully coded while superblocks 9,
+10, and 11 are marked as not coded.
+
+If any of the superblocks were marked as partially coded, the next data
+in the bitstream will define which fragments inside each partially-coded
+superblock are coded. This is the first place where the Hilbert pattern
+comes into play.
+
+For each partially-coded superblock, iterate through each fragment
+according to the Hilbert pattern. Use the VLRLC method, only with a
+different table, to determine which fragments are coded. The VLRLC table
+for fragment coding runs is:
+
+ Codeword Run Length
+ 0x 1-2
+ 10x 3-4
+ 110x 5-6
+ 1110xx 7-10
+ 11110xx 11-14
+ 11111xxxx 15-30
+
+Continuing with the contrived example, superblocks 0 and 1 are both
+partially coded. This is the state of the bitstream:
+
+ 0011001111010001111010...(not complete)
+
+Which is interpreted as:
+ initial 2 0's 3 1's 13 0's 1 1 13 0's
+ 0 01 100 1111010 00 1111010 ...
+
+This indicates that fragments 2-4 in superblock 0 are coded, while
+fragments 0, 1, and 5-15 are not. Note that the run of 12 0's cascades
+over into the next fragment, indicating that fragment 0 of superblock 1
+is not coded. Fragment 1 of superblock 1 is coded, while the rest of the
+superblock's fragments are not coded. The example ends there (a real
+bitstream should have enough data to describe all of the partially-coded
+superblocks). Superblock 2 is fully coded which means all 16 fragments
+are coded. Thus, superblocks 0-2 have the following coded fragments:
+
+ 0 | x x x x x x x x 0 1 14 15
+ 32 | 3 2 x x x 2 x x 3 2 13 12
+ 64 | 4 x x x x x x x 4 7 8 11
+ 96 | x x x x x x x x 5 6 9 10
+
+This is a good place to generate the list of coded fragment numbers for
+this frame. In this case, the list will begin as:
+
+ 33 32 64 37 8 9 41 40 72 104 105 73 ...
+
+and so on through the remaining 8 fragments of superblock 2 and onto the
+fragments for the remaining superblocks that are either fully or
+partially coded.
+
+
+Unpacking The Macroblock Coding Mode Information
+------------------------------------------------
+After unpacking the block coding information, the decoder unpacks the
+macroblock coding mode information. This process is simple when
+decoding a golden frame-- since the only possible decoding mode is INTRA,
+no macroblock coding mode information is transmitted. However, in an
+interframe, each coded macroblock is encoded with one of 8 methods:
+
+0, INTER_NO_MV:
+ current fragment =
+ (fragment from previous frame @ same coordinates) +
+ (DCT-encoded residual)
+
+1, INTRA:
+ current fragment = DCT-encoded block, just like in a golden frame
+
+2, INTER_PLUS_MV:
+ current fragment =
+ (fragment from previous frame @ (same coords + motion vector)) +
+ (DCT-encoded residual)
+
+3, INTER_LAST_MV:
+ same as INTER_PLUS_MV but using the last motion vector decoded from
+ the bitstream
+
+4, INTER_PRIOR_LAST;
+ same as INTER_PLUS_MV but using the second-to-last motion vector
+ decoded from the bitstream
+
+5, USING_GOLDEN:
+ same as INTER_NO_MV but referencing the golden frame instead of
+ previous interframe
+
+6, GOLDEN_MV:
+ same as INTER_PLUS_MV but referencing the golden frame instead of
+ previous interframe
+
+7, INTER_FOURMV:
+ same as INTER_PLUS_MV except that each of the 4 Y fragments gets its
+ own motion vector, and the U and V fragments share the same motion
+ vector which is the average of the 4 Y fragment vectors
+
+The MB coding mode information is encoded using one of 8 alphabets. The
+first 3 bits of the MB coding mode stream indicate which of the 8
+alphabets, 0..7, to use to decode the MB coding information in this frame.
+The reason for the different alphabets is to minimize the number of bits
+needed to encode this section of information. Each alphabet arranges the
+coding modes in a different order, indexing the 8 modes into 8 index
+slots. Index 0 is encoded with 1 bit (0), index 1 is encoded with 2 bits
+(10), index 2 is encoded with 3 bits (110), and so on up to indices 6 and
+7 which are encoded with 6 bits each (1111110 and 1111111, respectively):
+
+ index encoding
+ ----- --------
+ 0 0
+ 1 10
+ 2 110
+ 3 1110
+ 4 11110
+ 5 111110
+ 6 1111110
+ 7 1111111
+
+For example, the coding modes are arranged in alphabet 1 as follows:
+
+ index coding mode
+ ----- -----------
+ 0 MODE_INTER_LAST_MV
+ 1 MODE_INTER_PRIOR_LAST
+ 2 MODE_INTER_PLUS_MV
+ 3 MODE_INTER_NO_MV
+ 4 MODE_INTRA
+ 5 MODE_USING_GOLDEN,
+ 6 MODE_GOLDEN_MV
+ 7 MODE_INTER_FOURMV
+
+This alphabet arrangement is designed for frames in which motion vectors
+based off of the previous interframe dominate.
+
+When unpacking MB coding mode information for a frame, the decoder first
+reads 3 bits from the stream to determine the alphabet. In this example,
+the 3 bits would be 001 to indicate alphabet 1. Consider this contrived
+bitstream following the alphabet number:
+
+ 1010000011000011111110...
+
+The bits are read as follows:
+
+ 10 10 0 0 0 0 110 0 0 0 1111111 0
+ index: 1 1 0 0 0 0 2 0 0 0 7 0
+
+This arrangement of indices translates to this series of coding modes:
+
+ index coding mode
+ ----- -----------
+ 1 MODE_INTER_PRIOR_LAST
+ 1 MODE_INTER_PRIOR_LAST
+ 0 MODE_INTER_LAST_MV
+ 0 MODE_INTER_LAST_MV
+ 0 MODE_INTER_LAST_MV
+ 0 MODE_INTER_LAST_MV
+ 2 MODE_INTER_PLUS_MV
+ 0 MODE_INTER_LAST_MV
+ 0 MODE_INTER_LAST_MV
+ 0 MODE_INTER_LAST_MV
+ 7 MODE_INTER_FOURMV
+ 0 MODE_INTER_LAST_MV
+
+There are 6 pre-defined alphabets. Consult Appendix B for the complete
+alphabets. What happens if none of the 6 pre-defined alphabets fit? The
+VP3 encoder can choose to use alphabet 0 which indicates a custom
+alphabet. The 3-bit coding mode numbers for each index, 0..7, are stored
+after the alphabet number in the bitstream. For example, the sequence:
+
+ 000 111 110 101 100 011 010 001 000
+
+would indicate coding alphabet 0 (custom alphabet), index 0 corresponds to
+coding mode 7 (INTER_FOURMV), index 1 corresponds to coding mode 6
+(GOLDEN_MV), and so on down to index 7 which would correspond to coding
+mode 0 (INTER_NO_MV).
+
+There is one more possible alphabet: Alphabet 7. This alphabet is
+reserved for when there is such a mixture of coding modes used in a frame
+that using any variable-length coding mode would result in more bits than
+a fixed-length representation. When alphabet 7 is specified, the decoder
+reads 3 bits at a time from the bitstream, and uses those directly as the
+macroblock coding modes.
+
+To recap, this is the general algorithm for decoding macroblock coding
+mode information:
+
+ if (golden frame)
+ all frames are intracoded, there is no MB coding mode information
+ else
+ read 3 bits from bitstream to determine alphabet
+ if alphabet = 0
+ this is a custom alphabet, populate index table with 8 3-bit coding
+ modes read from bitstream
+ foreach coded macroblock, unpack a coding mode:
+ if alphabet = 7
+ read 3 bits from the bitstream as the coding mode for the
+ macroblock
+ else
+ read a VLC from the bitstream
+ use the decoded VLC value to index into the coding mode alphabet
+ selected for this frame and assign the indexed coding mode to
+ this macroblock
+
+
+Unpacking The Macroblock Motion Vectors
+---------------------------------------
+After unpacking the macroblock coding mode information, the decoder
+unpacks the macroblock motion vectors. This phase essentially assigns a
+motion vector to each of the 6 constituent fragments of any coded
+macroblock that requires motion vectors.
+
+If the frame is a golden frame then there is no motion compensation and
+no motion vectors are encoded in the bitstream.
+
+If the frame is an interframe, the next bit is read from the bitstream
+to determine the vector entropy coding method used. If the coding method
+is zero then all of the vectors will be unpacked using a VLC method. If
+the coding method is 1 then all of the vectors will be unpacked using a
+fixed length method.
+
+The VLC unpacking method reads 3 bits from the bitstream. These 3 bits
+comprise a number ranging from 0..7 which indicate the next action:
+
+0, MV component = 0
+1, MV component = 1
+2, MV component = -1
+3, MV component = 2, read next bit for sign
+4, MV component = 3, read next bit for sign
+5, MV component = 4 + (read next 2 bits), read next bit for sign
+ range: (4..7, -4..-7)
+6, MV component = 8 + (read next 3 bits), read next bit for sign
+ range: (8..15, -8..-15)
+7, MV component = 16 + (read next 4 bits), read next bit for sign
+ range: (16..31, -16..-31)
+
+The fixed length vector unpacking method simply reads the next 5 bits
+from the bitstream, reads the next bit for sign, and calls the whole
+thing a motion vector component. This gives a range of (-31..31), which
+is the same range as the VLC method.
+
+For example, consider the following contrived motion vector bitstream:
+
+ 000001011011111000...
+
+The stream is read as:
+
+ 0 (000 010) (110 111 1 100 0)
+
+The first bit indicates the entropy method which, in this example, is
+variable length as opposed to fixed length. The next 3 bits are 0 which
+indicate a X MV component of 0. The next 3 bits are 2 which indicate a Y
+MV component of -1. The first motion vector encoded in this stream is
+(0, -1). The next 3 bits are 6 which indicate 8 + next 3 bits (7) with
+another bit indicating sign (1 in this case, which is negative). Thus,
+the X MV component is -15. The next 3 bits are 4 which indicate a Y MV
+component of 3 with one more bit for the sign (0 is positive). So the
+second motion vector encoded in this stream is (-15, 3).
+
+As an example of the fixed-length entropy method, consider the following
+contrived bitstream:
+
+ 1010101101010...
+
+The stream is read as:
+
+ 1 01010 1 10101 0
+
+The first bit indicates the fixed length entropy method. The first 5 bits
+are 10 followed by a negative sign bit. The next 5 bits are 21 followed by
+a positive sign bit. The first motion vector in this stream is (-10, 21).
+
+During this phase of the decoding process, it is traditional to assign all
+motion vectors for all coded macroblocks that require them, whether they
+are unpacked from the motion vector bitstream or copied from previous
+coded macroblocks. It is necessary to track the motion vectors for both
+the previous macroblock as well as the next-to-last (prior) macroblock.
+The general algorithm for this phase is as follows:
+
+ foreach coded macroblock
+ last MV = 0
+ prior last MV = 0
+ if coding mode = MODE_INTER_PLUS_MV or MODE_GOLDEN_MV
+ read current MV pair from the bitstream and set all fragment motion
+ vectors to that pair
+ prior last MV = last MV
+ last MV = current MV
+
+ if coding mode = MODE_INTER_FOURMV
+ read MV for first Y fragment in macroblock
+ read MV for second Y fragment in macroblock
+ read MV for third Y fragment in macroblock
+ read MV for fourth Y fragment in macroblock
+ set U & V fragment motion vectors to average of 4 Y vectors,
+ calculated as follows:
+ if sum of all 4 X motion components is positive, the X
+ motion component for the U & V fragments is (sum + 2) / 4,
+ otherwise, it is (sum - 2) / 4; repeat the same process for the
+ Y components
+ prior last MV = last MV
+ last MV = MV for fourth Y fragment from this macroblock
+
+ if coding mode = MODE_INTER_LAST_MV
+ motion vectors for this macroblock are the same as last MV; note
+ that in this case, the last MV remains the last MV and the prior
+ last MV remains the prior last MV
+
+ if coding mode = MODE_INTER_PRIOR_LAST
+ motion vectors for this macroblock are the same as prior last MV
+ prior last MV = last MV
+ last MV = current MV (effectively, swap last and prior last vectors)
+
+
+Unpacking The DCT Coefficients
+------------------------------
+After unpacking the macroblock motion vectors, the decoder unpacks the
+fragment DCT coefficient data. Each coded fragment has 64 DCT
+coefficients. Some of the coefficients will be non-zero. Many of the
+coefficients will, or should be 0 as this is where the coding method
+derives much of its compression.
+
+During this phase, the decoder will be unpacking DCT coefficients, zero
+runs, and end-of-block (EOB) codes. The decoder unpacks the the DC
+coefficients for all fragments, then all of the first AC coefficients,
+and so on until all of the 64 DCT coefficients are unpacked from the
+bitstream.
+
+To obtain the DCT coefficients, the decoder unpacks a series of VLCs
+from the bitstream which turn into a series of tokens ranging from
+0..31. Each of these tokens specifies which action to take next. VP3
+defines 80 different 32-element histograms for VLC decoding:
+
+ 16 histograms for DC token decoding
+ 16 histograms for group 1 AC token decoding
+ 16 histograms for group 2 AC token decoding
+ 16 histograms for group 3 AC token decoding
+ 16 histograms for group 4 AC token decoding
+
+The decoder fetches 4 bits from the bitstream that will be used to
+select a DC histogram and 4 bits that will be used to select 4 AC
+histograms, one for each AC group.
+
+The meaning of each of the 32 possible tokens follows. 'EB' stands for
+extra bits read from bitstream directly after the VLC token:
+
+0, DCT_EOB_TOKEN
+set the current block to EOB, meaning that the block is marked as being
+fully unpacked
+
+1, DCT_EOB_PAIR_TOKEN
+set the next 2 blocks to EOB
+
+2. DCT_EOB_TRIPLE_TOKEN
+set the next 3 blocks to EOB
+
+3, DCT_REPEAT_RUN_TOKEN
+set the next (2 EBs + 4) blocks to EOB
+
+4, DCT_REPEAT_RUN2_TOKEN
+set the next (3 EBs + 8) blocks to EOB
+
+5, DCT_REPEAT_RUN3_TOKEN
+set the next (4 EBs + 16) blocks to EOB
+
+6, DCT_REPEAT_RUN4_TOKEN
+set the next (12 EBs) blocks to EOB
+
+7, DCT_SHORT_ZRL_TOKEN
+skip (3 EBs + 1) positions in the output matrix
+
+8, DCT_ZRL_TOKEN
+skip (6 EBs + 1) positions in the output matrix
+
+9, ONE_TOKEN
+output 1 as coefficient
+
+10, MINUS_ONE_TOKEN
+output -1 as coefficient
+
+11, TWO_TOKEN
+output 2 as coefficient
+
+12, MINUS_TWO_TOKEN
+output -2 as coefficient
+
+13, 14, 15, 16, LOW_VAL_TOKENS
+next EB determines coefficient sign; coeff = DCT_VAL_CAT2_MIN (3) +
+(token - 13) (this gives a range of +/- 3..6)
+
+17, DCT_VAL_CATEGORY3
+next EB determines coefficient sign; coeff = DCT_VAL_CAT3_MIN (7) + next
+EB (this gives a range of +/- 7..8)
+
+18, DCT_VAL_CATEGORY4
+next EB determines coefficient sign; coeff = DCT_VAL_CAT4_MIN (9) + next
+2 EBs (this gives a range of +/- 9..12)
+
+19, DCT_VAL_CATEGORY5
+next EB determines coefficient sign; coeff = DCT_VAL_CAT5_MIN (13) +
+next 3 EBs (this gives a range of +/- 13..20)
+
+20, DCT_VAL_CATEGORY6
+next EB determines coefficient sign; coeff = DCT_VAL_CAT6_MIN (21) +
+next 4 EBs (this gives a range of +/- 21..36)
+
+21, DCT_VAL_CATEGORY7
+next EB determines coefficient sign; coeff = DCT_VAL_CAT7_MIN (37) +
+next 5 EBs (this gives a range of +/- 37..68)
+
+22, DCT_VAL_CATEGORY8
+next EB determines coefficient sign; coeff = DCT_VAL_CAT8_MIN (69) +
+next 9 EBs (this gives a range of +/- 69..580)
+
+23, 24, 25, 26, 27, DCT_RUN_CATEGORY1
+coefficient of +/- 1 preceded by a number of 0s; next EB determines sign
+of coefficient; skip (token - 22) 0s in the output matrix before
+placing the final coefficient (this gives a range of 1..5 0s)
+
+28, DCT_RUN_CATEGORY1B
+coefficient of +/- 1 preceded by a number of 0s; next EB determines sign
+of coefficient; skip (next 2 EBs + 6) 0s in the output matrix before
+placing the final coefficient (this gives a range of 6..9 0s)
+
+29, DCT_RUN_CATEGORY1C
+coefficient of +/- 1 preceded by a number of 0s; next EB determines sign
+of coefficient; skip (next 3 EBs + 10) 0s in the output matrix before
+placing the final coefficient (this gives a range of 10..17 0s)
+
+30, DCT_RUN_CATEGORY2
+coefficient of +/- 2..3 preceded by a single zero; next EB determines
+sign of coefficient; coefficient = (next EB + 2)
+
+31, DCT_RUN_CATEGORY2B (not specifically named in VP3 source)
+coefficient of +/- 2..3 preceded by 2 or 3 0s; next EB determines
+sign of coefficient; coefficient = (next EB + 2); skip (next EB + 2) 0s
+before placing coefficient in output matrix
+
+Note: EOB runs can, and often do, cross threshold stages and plane
+boundaries. For example, a decoder may have decoded all of the AC #2
+coefficients for all fragments and still have an EOB run of 2. That
+means that during the AC #3 decode process, the first 2 coded fragments
+that are not already EOB will be set to EOB.
+
+Let's work through a highly contrived example to illustrate the
+coefficient decoding process.
+
+
+
+[not finished]
+
+
+
+
+When the decoder is finished unpacking the DCT coefficients, the entire
+encoded VP3 frame bitstream should be consumed.
+
+
+Reversing The DC Prediction
+---------------------------
+Now that all of the DCT coefficient data has been unpacked, the DC
+coefficients need to be fully reconstructed before the IDCT can be
+performed.
+
+VP3 uses a somewhat involved process for DC prediction which uses up to
+four DC coefficients from surrounding fragments. For each fragment to be
+transformed with the IDCT, the DC coefficient is predicted from weighted
+sum of the DC coefficients in the left (l), up-left (ul), up (u), and
+up-right (ur) fragments, if they are coded (not unchanged from the
+previous frame) in a compatible frame (current, previous, or golden).
+
+In a golden frame, the prediction is quite straightforward since all
+fragments will be coded. A fragment's DC prediction will fall into 1 of
+5 groups:
+
+ abbbbbbbbb
+ cdddddddde
+ cdddddddde
+ cdddddddde
+ cdddddddde
+
+* Group a is the top left corner fragment. There is nothing to predict
+from. This DC coefficient has a lot of energy and requires many bits to
+code.
+
+* Group b is the remainder of the top row of fragments. These fragments
+can only predict from the left fragment.
+
+* Group c is the left column of fragments, not including the top left
+fragment. These fragments have the top and top-right fragments from
+which to predict.
+
+* Group d is the main body of fragments. These fragments have access to
+all 4 predictors.
+
+* Group e is the right column of fragments, not including the top right
+fragment. These fragments can predict from the left, up-left and up
+fragments.
+
+The process of reversing prediction for interframes grows more complex.
+First, the decoder must evaluate which candidate fragments (l, ul, u, or
+ur) are available for as predictors. Then, it can only use fragments
+that are coded within the same frame (current, previous, or golden).
+Further, there are auxiliary predictors for each frame type that are
+initialized to 0 at the start of each video frame decode operation. The
+decoder falls back on these auxiliary predictors when it can not find
+any valid candidate predictors for the current fragment.
+
+To work through some examples, consider the following notation, e.g.:
+
+ ul-C = up-left fragment, coded in the current frame
+ u-P = up fragment, coded as a motion residual from the previous frame
+ ur-C = up-right fragment, coded in the current frame
+ l-G = left fragment, coded as a motion residual from the golden frame
+ x-P = current fragment where DC prediction is being performed, coded
+ as a motion residual from the previous frame
+
+This is a simple case:
+
+ ul-C u-C ur-C
+ l-C x-C
+
+The current fragment predicts from all four of the candidate fragments
+since they are coded in the same frame.
+
+ ul-P u-C ur-C
+ l-P x-P
+
+The current fragment predicts from the left and up-left fragments.
+
+ ul-C u-P ur-G
+ l-P x-G
+
+The current fragment predicts from the up-right fragment.
+
+ ul-C u-C ur-C
+ l-C x-G
+
+The current fragment does not predict from any of the candidate
+fragments since the current fragment is a motion residual from the
+golden frame. Rather, add the auxiliary golden frame predictor to the
+current fragment's DC coefficient. Save the new DC coefficient as the
+new golden frame auxiliary DC predictor.
+
+If the decoder only finds one valid candidate predictor, then it is used
+by itself. When the decoder finds multiple valid candidate fragments
+from which to predict DC, it applies a weighting function to the
+surrounding fragments' DC coefficients. The following table presents all
+16 possible combinations of available/not available predictors and what
+to do in each case:
+
+ ul u ur l
+ -- -- -- --
+ 0 0 0 0 no predictors available:
+ use the last predictor saved for the frame type
+ (either intra, inter, or golden)
+
+ 0 0 0 1 left predictor available:
+ pred = l.dc
+
+ 0 0 1 0 up-right predictor available:
+ pred = ur.dc
+
+ 0 0 1 1 up-right, left predictors available:
+ pred = (53 * ur.dc) + (75 * l.dc)
+ --------------------------
+ 128
+
+ 0 1 0 0 up predictor available:
+ pred = u.dc
+
+ 0 1 0 1 up, left predictors available:
+ pred = (u.dc + l.dc)
+ -------------
+ 2
+
+ 0 1 1 0 up, up-right predictors available:
+ discard up-right predictor
+ pred = u.dc
+
+ 0 1 1 1 up, up-right, left predictors available:
+ discard up predictor
+ pred = (53 * ur.dc) + (75 * l.dc)
+ --------------------------
+ 128
+
+ 1 0 0 0 up-left predictor available:
+ pred = ul.dc
+
+ 1 0 0 1 up-left, left predictors available:
+ discard up-left predictor
+ pred = l.dc
+
+ 1 0 1 0 up-left, up-right predictors available:
+ pred = (ul.dc + ur.dc)
+ ---------------
+ 2
+
+ 1 0 1 1 up-left, up-right, left predictors available:
+ discard up-left predictor
+ pred = (53 * ur.dc) + (75 * l.dc)
+ --------------------------
+ 128
+
+ 1 1 0 0 up-left, up predictors available:
+ discard up-left
+ pred = u.dc
+
+ 1 1 0 1 up-left, up, left predictors available:
+ pred = (-26 * ul.dc + 29 * u.dc + 29 * l.dc)
+ -------------------------------------
+ 32
+
+ 1 1 1 0 up-left, up, up-right predictors available:
+ pred = (3 * ul.dc + 10 * u.dc + 3 * ur.dc)
+ -----------------------------------
+ 16
+
+ 1 1 1 1 all 4 predictors available:
+ discard up-right predictor
+ pred = (-26 * ul.dc + 29 * u.dc + 29 * l.dc)
+ -------------------------------------
+ 32
+
+Note that this final prediction case ([ul u l]) risks outranging. The
+difference of the predicted DC is checked against u.dc, l.dc, and ul.dc,
+in that order, and if the difference is greater than 128 in any case,
+the predictor is assigned as that DC coefficient. In pseudocode:
+
+ if (ABSOLUTE_VALUE(pred - u.dc) > 128)
+ pref = u.dc
+ else if (ABSOLUTE_VALUE(pred - l.dc) > 128)
+ pref = l.dc
+ else if (ABSOLUTE_VALUE(pred - ul.dc) > 128)
+ pref = ul.dc
+
+The predicted value is, at long last, added to the fragment's decoded DC
+coefficient. Finally, the new DC coefficient is saved as the frame
+type's auxiliary predictor. For example, if this fragment is coded as a
+motion residual from the previous frame, save the fragment's DC
+coefficient as the previous frame auxiliary predictor.
+
+
+[still need to mention precise rounding considerations, a.k.a, the
+HIGHTBITDUPPED() macro]
+
+
+
+Reconstructing The Frame
+------------------------
+rough outline:
+ - foreach fragment:
+ - if motion vector
+ - copy motion fragment from appropriate frame into current frame
+ (don't forget to account for unrestricted motion vectors)
+ - dequantize fragment coefficients
+ - run coefficients through inverse DCT
+ - if INTRA coded fragment
+ - output transformed coefficients
+ - else
+ - apply transformed residual to motion fragment
+
+[not finished]
+
+
+Theora Specification
+--------------------
+The Theora project leverages the VP3 codec into a new video coding
+system. The algorithm and bitstream format are the same as VP3 with a
+few minor differences:
+
+1) The frame orientation is reversed-- VP3 is coded from bottom to top
+while Theora video is coded from top to bottom.
+[nope-- only true in the first few alpha releases; final Theora spec will
+be upside-down, the same as VP3]
+
+2) Variable histograms-- VP3 uses a hardcoded set of histograms for DCT
+coefficient coding (described in section "Unpacking The DCT
+Coefficients"). Theora packs the histogram information in the header of
+the transport format (which is meant to be Ogg, but can probably be
+coerced into a variety of other multimedia container formats).
+
+3) Variable quantization-- As with the histograms, Theora codes the
+quantization tables and quality thresholds (described in section
+"Initializing The Quantization Matrices") into the header.
+
+4) [special VLRLC case for encoding unusually large runs of blocks;
+necessary for HD resolutions]
+
+[still need coding format of histogram and quantizer information]
+
+
+Appendix A: VP31 Quantization Matrices And Scale Factors
+--------------------------------------------------------
+The following quantization matrices and scale factor tables are hardcoded
+into the VP31 coding standard. These tables can vary according to the
+setup information transported along with a Theora file.
+
+Base quantization matrix for golden frame Y fragments (note that this
+is the same as JPEG):
+
+ 16 11 10 16 24 40 51 61
+ 12 12 14 19 26 58 60 55
+ 14 13 16 24 40 57 69 56
+ 14 17 22 29 51 87 80 62
+ 18 22 37 58 68 109 103 77
+ 24 35 55 64 81 104 113 92
+ 49 64 78 87 103 121 120 101
+ 72 92 95 98 112 100 103 99
+
+
+Base quantization matrix for golden frame C fragments (note that this
+is the same as JPEG):
+
+ 17 18 24 47 99 99 99 99
+ 18 21 26 66 99 99 99 99
+ 24 26 56 99 99 99 99 99
+ 47 66 99 99 99 99 99 99
+ 99 99 99 99 99 99 99 99
+ 99 99 99 99 99 99 99 99
+ 99 99 99 99 99 99 99 99
+ 99 99 99 99 99 99 99 99
+
+
+Base quantization matrix for interframe Y and C fragments:
+
+ 16 16 16 20 24 28 32 40
+ 16 16 20 24 28 32 40 48
+ 16 20 24 28 32 40 48 64
+ 20 24 28 32 40 48 64 64
+ 24 28 32 40 48 64 64 64
+ 28 32 40 48 64 64 64 96
+ 32 40 48 64 64 64 96 128
+ 40 48 64 64 64 96 128 128
+
+
+DC coefficient scale factor table:
+
+ 220 200 190 180 170 170 160 160
+ 150 150 140 140 130 130 120 120
+ 110 110 100 100 90 90 90 80
+ 80 80 70 70 70 60 60 60
+ 60 50 50 50 50 40 40 40
+ 40 40 30 30 30 30 30 30
+ 30 20 20 20 20 20 20 20
+ 20 10 10 10 10 10 10 10
+
+
+AC coefficient scale factor table:
+
+ 500 450 400 370 340 310 285 265
+ 245 225 210 195 185 180 170 160
+ 150 145 135 130 125 115 110 107
+ 100 96 93 89 85 82 75 74
+ 70 68 64 60 57 56 52 50
+ 49 45 44 43 40 38 37 35
+ 33 32 30 29 28 25 24 22
+ 21 19 18 17 15 13 12 10
+
+
+Appendix B: Macroblock Coding Mode Alphabets
+--------------------------------------------
+These are the 6 pre-defined alphabets used to decode macroblock coding
+mode information:
+
+Alphabet 1:
+ index coding mode
+ ----- -----------
+ 0 MODE_INTER_LAST_MV
+ 1 MODE_INTER_PRIOR_LAST
+ 2 MODE_INTER_PLUS_MV
+ 3 MODE_INTER_NO_MV
+ 4 MODE_INTRA
+ 5 MODE_USING_GOLDEN,
+ 6 MODE_GOLDEN_MV
+ 7 MODE_INTER_FOURMV
+
+Alphabet 2:
+ index coding mode
+ ----- -----------
+ 0 MODE_INTER_LAST_MV
+ 1 MODE_INTER_PRIOR_LAST
+ 2 MODE_INTER_NO_MV
+ 3 MODE_INTER_PLUS_MV
+ 4 MODE_INTRA
+ 5 MODE_USING_GOLDEN
+ 6 MODE_GOLDEN_MV
+ 7 MODE_INTER_FOURMV
+
+Alphabet 3:
+ index coding mode
+ ----- -----------
+ 0 MODE_INTER_LAST_MV
+ 1 MODE_INTER_PLUS_MV
+ 2 MODE_INTER_PRIOR_LAST
+ 3 MODE_INTER_NO_MV
+ 4 MODE_INTRA
+ 5 MODE_USING_GOLDEN
+ 6 MODE_GOLDEN_MV
+ 7 MODE_INTER_FOURMV
+
+Alphabet 4:
+ index coding mode
+ ----- -----------
+ 0 MODE_INTER_LAST_MV
+ 1 MODE_INTER_PLUS_MV
+ 2 MODE_INTER_NO_MV
+ 3 MODE_INTER_PRIOR_LAST
+ 4 MODE_INTRA
+ 5 MODE_USING_GOLDEN
+ 6 MODE_GOLDEN_MV
+ 7 MODE_INTER_FOURMV
+
+Alphabet 5:
+ index coding mode
+ ----- -----------
+ 0 MODE_INTER_NO_MV
+ 1 MODE_INTER_LAST_MV
+ 2 MODE_INTER_PRIOR_LAST
+ 3 MODE_INTER_PLUS_MV
+ 4 MODE_INTRA
+ 5 MODE_USING_GOLDEN
+ 6 MODE_GOLDEN_MV
+ 7 MODE_INTER_FOURMV
+
+Alphabet 6:
+ index coding mode
+ ----- -----------
+ 0 MODE_INTER_NO_MV
+ 1 MODE_USING_GOLDEN
+ 2 MODE_INTER_LAST_MV
+ 3 MODE_INTER_PRIOR_LAST
+ 4 MODE_INTER_PLUS_MV
+ 5 MODE_INTRA
+ 6 MODE_GOLDEN_MV
+ 7 MODE_INTER_FOURMV
+
+
+Appendix C: DCT Coefficient VLC Tables
+--------------------------------------
+- VP31 tables are hardcoded
+- Theora tables are transported with video stream
+
+[not finished]
+
+
+Appendix D: The VP3 IDCT
+------------------------
+
+[not finished]
+
+
+Acknowledgements
+----------------
+Thanks to Michael Niedermayer (michaelni at gmx dot at) for peer review,
+corrections, and recommendations for improvement.
+
+Dan Miller (dan at on2 dot com) for clarifications on pieces of the
+format.
+
+Timothy B. Terriberry (tterribe at vt dot edu) for clarification about the
+differences between VP3 and Theora, detailed explanation of motion
+vector mechanics.
+
+
+References
+----------
+Tables necessary for decoding VP3:
+http://mplayerhq.hu/cgi-bin/cvsweb.cgi/~checkout~/ffmpeg/libavcodec/vp3data.h?content-type=text/x-cvsweb-markup&cvsroot=FFMpeg
+
+Official VP3 site:
+http://www.vp3.com/
+
+Theora, based on VP3:
+http://www.theora.org/
+
+On2, creators of the VP3 format:
+http://www.on2.com/
+
+
+ChangeLog
+---------
+v0.5: December 8, 2004
+- reworked section "Reversing The DC Prediction" to include a tabular
+representation of all 16 prediction modes
+
+v0.4: March 2, 2004
+- renamed and expanded section "Initializing The Quantization Matrices"
+- outlined section "Reconstructing The Frame"
+- moved Theora Differences Appendix to its own section entitled "Theora
+Specification"
+- added Appendix: Quantization Matrices And Scale Factors
+- added Appendix: DCT Coefficient VLC Tables
+
+v0.3: February 29, 2004
+- expanded section "Unpacking The Macroblock Coding Mode Information"
+- expanded section "Unpacking The Macroblock Motion Vectors"
+- added Appendix: Macroblock Coding Mode Alphabets
+
+v0.2: October 9, 2003
+- expanded section "Reversing the DC Prediction"
+- added Appendix: Theora Differences
+
+v0.1: June 17, 2003
+- initial release, nowhere near complete